UNPKG

5.55 MBJavaScriptView Raw
1window["GraphiQL"] =
2/******/ (function(modules) { // webpackBootstrap
3/******/ // The module cache
4/******/ var installedModules = {};
5/******/
6/******/ // The require function
7/******/ function __webpack_require__(moduleId) {
8/******/
9/******/ // Check if module is in cache
10/******/ if(installedModules[moduleId]) {
11/******/ return installedModules[moduleId].exports;
12/******/ }
13/******/ // Create a new module (and put it into the cache)
14/******/ var module = installedModules[moduleId] = {
15/******/ i: moduleId,
16/******/ l: false,
17/******/ exports: {}
18/******/ };
19/******/
20/******/ // Execute the module function
21/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
22/******/
23/******/ // Flag the module as loaded
24/******/ module.l = true;
25/******/
26/******/ // Return the exports of the module
27/******/ return module.exports;
28/******/ }
29/******/
30/******/
31/******/ // expose the modules object (__webpack_modules__)
32/******/ __webpack_require__.m = modules;
33/******/
34/******/ // expose the module cache
35/******/ __webpack_require__.c = installedModules;
36/******/
37/******/ // define getter function for harmony exports
38/******/ __webpack_require__.d = function(exports, name, getter) {
39/******/ if(!__webpack_require__.o(exports, name)) {
40/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
41/******/ }
42/******/ };
43/******/
44/******/ // define __esModule on exports
45/******/ __webpack_require__.r = function(exports) {
46/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
47/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
48/******/ }
49/******/ Object.defineProperty(exports, '__esModule', { value: true });
50/******/ };
51/******/
52/******/ // create a fake namespace object
53/******/ // mode & 1: value is a module id, require it
54/******/ // mode & 2: merge all properties of value into the ns
55/******/ // mode & 4: return value when already ns object
56/******/ // mode & 8|1: behave like require
57/******/ __webpack_require__.t = function(value, mode) {
58/******/ if(mode & 1) value = __webpack_require__(value);
59/******/ if(mode & 8) return value;
60/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
61/******/ var ns = Object.create(null);
62/******/ __webpack_require__.r(ns);
63/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
64/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
65/******/ return ns;
66/******/ };
67/******/
68/******/ // getDefaultExport function for compatibility with non-harmony modules
69/******/ __webpack_require__.n = function(module) {
70/******/ var getter = module && module.__esModule ?
71/******/ function getDefault() { return module['default']; } :
72/******/ function getModuleExports() { return module; };
73/******/ __webpack_require__.d(getter, 'a', getter);
74/******/ return getter;
75/******/ };
76/******/
77/******/ // Object.prototype.hasOwnProperty.call
78/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
79/******/
80/******/ // __webpack_public_path__
81/******/ __webpack_require__.p = "";
82/******/
83/******/
84/******/ // Load entry module and return exports
85/******/ return __webpack_require__(__webpack_require__.s = "./cdn.ts");
86/******/ })
87/************************************************************************/
88/******/ ({
89
90/***/ "../../../node_modules/@n1ru4l/push-pull-async-iterable-iterator/dist/push-pull-async-iterable-iterator.esm.mjs":
91/*!*************************************************************************************************************************************************!*\
92 !*** /home/runner/work/graphiql/graphiql/node_modules/@n1ru4l/push-pull-async-iterable-iterator/dist/push-pull-async-iterable-iterator.esm.mjs ***!
93 \*************************************************************************************************************************************************/
94/*! exports provided: applyAsyncIterableIteratorToSink, isAsyncIterable, makeAsyncIterableIteratorFromSink, makePushPullAsyncIterableIterator */
95/***/ (function(module, __webpack_exports__, __webpack_require__) {
96
97"use strict";
98eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"applyAsyncIterableIteratorToSink\", function() { return applyAsyncIterableIteratorToSink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAsyncIterable\", function() { return isAsyncIterable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makeAsyncIterableIteratorFromSink\", function() { return makeAsyncIterableIteratorFromSink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makePushPullAsyncIterableIterator\", function() { return makePushPullAsyncIterableIterator; });\nfunction createDeferred() {\n const d = {};\n d.promise = new Promise((resolve, reject) => {\n d.resolve = resolve;\n d.reject = reject;\n });\n return d;\n}\n\nconst SYMBOL_FINISHED = /*#__PURE__*/Symbol();\nconst SYMBOL_NEW_VALUE = /*#__PURE__*/Symbol();\n/**\r\n * makePushPullAsyncIterableIterator\r\n *\r\n * The iterable will publish values until return or throw is called.\r\n * Afterwards it is in the completed state and cannot be used for publishing any further values.\r\n * It will handle back-pressure and keep pushed values until they are consumed by a source.\r\n */\n\nfunction makePushPullAsyncIterableIterator() {\n let isRunning = true;\n const values = [];\n let newValueD = createDeferred();\n let finishedD = createDeferred();\n\n const asyncIterableIterator = async function* PushPullAsyncIterableIterator() {\n while (true) {\n if (values.length > 0) {\n yield values.shift();\n } else {\n const result = await Promise.race([newValueD.promise, finishedD.promise]);\n\n if (result === SYMBOL_FINISHED) {\n break;\n }\n\n if (result !== SYMBOL_NEW_VALUE) {\n throw result;\n }\n }\n }\n }();\n\n function pushValue(value) {\n if (isRunning === false) {\n // TODO: Should this throw?\n return;\n }\n\n values.push(value);\n newValueD.resolve(SYMBOL_NEW_VALUE);\n newValueD = createDeferred();\n } // We monkey patch the original generator for clean-up\n\n\n const originalReturn = asyncIterableIterator.return.bind(asyncIterableIterator);\n\n asyncIterableIterator.return = (...args) => {\n isRunning = false;\n finishedD.resolve(SYMBOL_FINISHED);\n return originalReturn(...args);\n };\n\n const originalThrow = asyncIterableIterator.throw.bind(asyncIterableIterator);\n\n asyncIterableIterator.throw = err => {\n isRunning = false;\n finishedD.resolve(err);\n return originalThrow(err);\n };\n\n return {\n pushValue,\n asyncIterableIterator\n };\n}\n\nconst makeAsyncIterableIteratorFromSink = make => {\n const {\n pushValue,\n asyncIterableIterator\n } = makePushPullAsyncIterableIterator();\n const dispose = make({\n next: value => {\n pushValue(value);\n },\n complete: () => {\n asyncIterableIterator.return();\n },\n error: err => {\n asyncIterableIterator.throw(err);\n }\n });\n const originalReturn = asyncIterableIterator.return;\n let returnValue = undefined;\n\n asyncIterableIterator.return = () => {\n if (returnValue === undefined) {\n dispose();\n returnValue = originalReturn();\n }\n\n return returnValue;\n };\n\n return asyncIterableIterator;\n};\n\nfunction applyAsyncIterableIteratorToSink(asyncIterableIterator, sink) {\n const run = async () => {\n try {\n for await (const value of asyncIterableIterator) {\n sink.next(value);\n }\n\n sink.complete();\n } catch (err) {\n sink.error(err);\n }\n };\n\n run();\n return () => {\n asyncIterableIterator.return == null ? void 0 : asyncIterableIterator.return();\n };\n}\n\nfunction isAsyncIterable(input) {\n return typeof input === \"object\" && input !== null && ( // The AsyncGenerator check is for Safari on iOS which currently does not have\n // Symbol.asyncIterator implemented\n // That means every custom AsyncIterable must be built using a AsyncGeneratorFunction (async function * () {})\n input[Symbol.toStringTag] === \"AsyncGenerator\" || Symbol.asyncIterator && Symbol.asyncIterator in input);\n}\n\n\n//# sourceMappingURL=push-pull-async-iterable-iterator.esm.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BuMXJ1NGwvcHVzaC1wdWxsLWFzeW5jLWl0ZXJhYmxlLWl0ZXJhdG9yL2Rpc3QvcHVzaC1wdWxsLWFzeW5jLWl0ZXJhYmxlLWl0ZXJhdG9yLmVzbS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvQG4xcnU0bC9wdXNoLXB1bGwtYXN5bmMtaXRlcmFibGUtaXRlcmF0b3IvZGlzdC9wdXNoLXB1bGwtYXN5bmMtaXRlcmFibGUtaXRlcmF0b3IuZXNtLm1qcz81ZWNlIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGNyZWF0ZURlZmVycmVkKCkge1xuICBjb25zdCBkID0ge307XG4gIGQucHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBkLnJlc29sdmUgPSByZXNvbHZlO1xuICAgIGQucmVqZWN0ID0gcmVqZWN0O1xuICB9KTtcbiAgcmV0dXJuIGQ7XG59XG5cbmNvbnN0IFNZTUJPTF9GSU5JU0hFRCA9IC8qI19fUFVSRV9fKi9TeW1ib2woKTtcbmNvbnN0IFNZTUJPTF9ORVdfVkFMVUUgPSAvKiNfX1BVUkVfXyovU3ltYm9sKCk7XG4vKipcclxuICogbWFrZVB1c2hQdWxsQXN5bmNJdGVyYWJsZUl0ZXJhdG9yXHJcbiAqXHJcbiAqIFRoZSBpdGVyYWJsZSB3aWxsIHB1Ymxpc2ggdmFsdWVzIHVudGlsIHJldHVybiBvciB0aHJvdyBpcyBjYWxsZWQuXHJcbiAqIEFmdGVyd2FyZHMgaXQgaXMgaW4gdGhlIGNvbXBsZXRlZCBzdGF0ZSBhbmQgY2Fubm90IGJlIHVzZWQgZm9yIHB1Ymxpc2hpbmcgYW55IGZ1cnRoZXIgdmFsdWVzLlxyXG4gKiBJdCB3aWxsIGhhbmRsZSBiYWNrLXByZXNzdXJlIGFuZCBrZWVwIHB1c2hlZCB2YWx1ZXMgdW50aWwgdGhleSBhcmUgY29uc3VtZWQgYnkgYSBzb3VyY2UuXHJcbiAqL1xuXG5mdW5jdGlvbiBtYWtlUHVzaFB1bGxBc3luY0l0ZXJhYmxlSXRlcmF0b3IoKSB7XG4gIGxldCBpc1J1bm5pbmcgPSB0cnVlO1xuICBjb25zdCB2YWx1ZXMgPSBbXTtcbiAgbGV0IG5ld1ZhbHVlRCA9IGNyZWF0ZURlZmVycmVkKCk7XG4gIGxldCBmaW5pc2hlZEQgPSBjcmVhdGVEZWZlcnJlZCgpO1xuXG4gIGNvbnN0IGFzeW5jSXRlcmFibGVJdGVyYXRvciA9IGFzeW5jIGZ1bmN0aW9uKiBQdXNoUHVsbEFzeW5jSXRlcmFibGVJdGVyYXRvcigpIHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHlpZWxkIHZhbHVlcy5zaGlmdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtuZXdWYWx1ZUQucHJvbWlzZSwgZmluaXNoZWRELnByb21pc2VdKTtcblxuICAgICAgICBpZiAocmVzdWx0ID09PSBTWU1CT0xfRklOSVNIRUQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQgIT09IFNZTUJPTF9ORVdfVkFMVUUpIHtcbiAgICAgICAgICB0aHJvdyByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0oKTtcblxuICBmdW5jdGlvbiBwdXNoVmFsdWUodmFsdWUpIHtcbiAgICBpZiAoaXNSdW5uaW5nID09PSBmYWxzZSkge1xuICAgICAgLy8gVE9ETzogU2hvdWxkIHRoaXMgdGhyb3c/XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFsdWVzLnB1c2godmFsdWUpO1xuICAgIG5ld1ZhbHVlRC5yZXNvbHZlKFNZTUJPTF9ORVdfVkFMVUUpO1xuICAgIG5ld1ZhbHVlRCA9IGNyZWF0ZURlZmVycmVkKCk7XG4gIH0gLy8gV2UgbW9ua2V5IHBhdGNoIHRoZSBvcmlnaW5hbCBnZW5lcmF0b3IgZm9yIGNsZWFuLXVwXG5cblxuICBjb25zdCBvcmlnaW5hbFJldHVybiA9IGFzeW5jSXRlcmFibGVJdGVyYXRvci5yZXR1cm4uYmluZChhc3luY0l0ZXJhYmxlSXRlcmF0b3IpO1xuXG4gIGFzeW5jSXRlcmFibGVJdGVyYXRvci5yZXR1cm4gPSAoLi4uYXJncykgPT4ge1xuICAgIGlzUnVubmluZyA9IGZhbHNlO1xuICAgIGZpbmlzaGVkRC5yZXNvbHZlKFNZTUJPTF9GSU5JU0hFRCk7XG4gICAgcmV0dXJuIG9yaWdpbmFsUmV0dXJuKC4uLmFyZ3MpO1xuICB9O1xuXG4gIGNvbnN0IG9yaWdpbmFsVGhyb3cgPSBhc3luY0l0ZXJhYmxlSXRlcmF0b3IudGhyb3cuYmluZChhc3luY0l0ZXJhYmxlSXRlcmF0b3IpO1xuXG4gIGFzeW5jSXRlcmFibGVJdGVyYXRvci50aHJvdyA9IGVyciA9PiB7XG4gICAgaXNSdW5uaW5nID0gZmFsc2U7XG4gICAgZmluaXNoZWRELnJlc29sdmUoZXJyKTtcbiAgICByZXR1cm4gb3JpZ2luYWxUaHJvdyhlcnIpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgcHVzaFZhbHVlLFxuICAgIGFzeW5jSXRlcmFibGVJdGVyYXRvclxuICB9O1xufVxuXG5jb25zdCBtYWtlQXN5bmNJdGVyYWJsZUl0ZXJhdG9yRnJvbVNpbmsgPSBtYWtlID0+IHtcbiAgY29uc3Qge1xuICAgIHB1c2hWYWx1ZSxcbiAgICBhc3luY0l0ZXJhYmxlSXRlcmF0b3JcbiAgfSA9IG1ha2VQdXNoUHVsbEFzeW5jSXRlcmFibGVJdGVyYXRvcigpO1xuICBjb25zdCBkaXNwb3NlID0gbWFrZSh7XG4gICAgbmV4dDogdmFsdWUgPT4ge1xuICAgICAgcHVzaFZhbHVlKHZhbHVlKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICBhc3luY0l0ZXJhYmxlSXRlcmF0b3IucmV0dXJuKCk7XG4gICAgfSxcbiAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgIGFzeW5jSXRlcmFibGVJdGVyYXRvci50aHJvdyhlcnIpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IG9yaWdpbmFsUmV0dXJuID0gYXN5bmNJdGVyYWJsZUl0ZXJhdG9yLnJldHVybjtcbiAgbGV0IHJldHVyblZhbHVlID0gdW5kZWZpbmVkO1xuXG4gIGFzeW5jSXRlcmFibGVJdGVyYXRvci5yZXR1cm4gPSAoKSA9PiB7XG4gICAgaWYgKHJldHVyblZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRpc3Bvc2UoKTtcbiAgICAgIHJldHVyblZhbHVlID0gb3JpZ2luYWxSZXR1cm4oKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XG4gIH07XG5cbiAgcmV0dXJuIGFzeW5jSXRlcmFibGVJdGVyYXRvcjtcbn07XG5cbmZ1bmN0aW9uIGFwcGx5QXN5bmNJdGVyYWJsZUl0ZXJhdG9yVG9TaW5rKGFzeW5jSXRlcmFibGVJdGVyYXRvciwgc2luaykge1xuICBjb25zdCBydW4gPSBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGZvciBhd2FpdCAoY29uc3QgdmFsdWUgb2YgYXN5bmNJdGVyYWJsZUl0ZXJhdG9yKSB7XG4gICAgICAgIHNpbmsubmV4dCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHNpbmsuY29tcGxldGUoKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNpbmsuZXJyb3IoZXJyKTtcbiAgICB9XG4gIH07XG5cbiAgcnVuKCk7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgYXN5bmNJdGVyYWJsZUl0ZXJhdG9yLnJldHVybiA9PSBudWxsID8gdm9pZCAwIDogYXN5bmNJdGVyYWJsZUl0ZXJhdG9yLnJldHVybigpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBpc0FzeW5jSXRlcmFibGUoaW5wdXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpbnB1dCA9PT0gXCJvYmplY3RcIiAmJiBpbnB1dCAhPT0gbnVsbCAmJiAoIC8vIFRoZSBBc3luY0dlbmVyYXRvciBjaGVjayBpcyBmb3IgU2FmYXJpIG9uIGlPUyB3aGljaCBjdXJyZW50bHkgZG9lcyBub3QgaGF2ZVxuICAvLyBTeW1ib2wuYXN5bmNJdGVyYXRvciBpbXBsZW1lbnRlZFxuICAvLyBUaGF0IG1lYW5zIGV2ZXJ5IGN1c3RvbSBBc3luY0l0ZXJhYmxlIG11c3QgYmUgYnVpbHQgdXNpbmcgYSBBc3luY0dlbmVyYXRvckZ1bmN0aW9uIChhc3luYyBmdW5jdGlvbiAqICgpIHt9KVxuICBpbnB1dFtTeW1ib2wudG9TdHJpbmdUYWddID09PSBcIkFzeW5jR2VuZXJhdG9yXCIgfHwgU3ltYm9sLmFzeW5jSXRlcmF0b3IgJiYgU3ltYm9sLmFzeW5jSXRlcmF0b3IgaW4gaW5wdXQpO1xufVxuXG5leHBvcnQgeyBhcHBseUFzeW5jSXRlcmFibGVJdGVyYXRvclRvU2luaywgaXNBc3luY0l0ZXJhYmxlLCBtYWtlQXN5bmNJdGVyYWJsZUl0ZXJhdG9yRnJvbVNpbmssIG1ha2VQdXNoUHVsbEFzeW5jSXRlcmFibGVJdGVyYXRvciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHVzaC1wdWxsLWFzeW5jLWl0ZXJhYmxlLWl0ZXJhdG9yLmVzbS5tanMubWFwXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@n1ru4l/push-pull-async-iterable-iterator/dist/push-pull-async-iterable-iterator.esm.mjs\n");
99
100/***/ }),
101
102/***/ "../../../node_modules/codemirror/addon/comment/comment.js":
103/*!********************************************************************************************!*\
104 !*** /home/runner/work/graphiql/graphiql/node_modules/codemirror/addon/comment/comment.js ***!
105 \********************************************************************************************/
106/*! no static exports found */
107/***/ (function(module, exports, __webpack_require__) {
108
109eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n // CodeMirror, copyright (c) by Marijn Haverbeke and others\n // Distributed under an MIT license: https://codemirror.net/LICENSE\n (function (mod) {\n if (true) // CommonJS\n mod(__webpack_require__(/*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));else {}\n })(function (CodeMirror) {\n \"use strict\";\n\n var noOptions = {};\n var nonWS = /[^\\s\\u00a0]/;\n var Pos = CodeMirror.Pos,\n cmp = CodeMirror.cmpPos;\n\n function firstNonWS(str) {\n var found = str.search(nonWS);\n return found == -1 ? 0 : found;\n }\n\n CodeMirror.commands.toggleComment = function (cm) {\n cm.toggleComment();\n };\n\n CodeMirror.defineExtension(\"toggleComment\", function (options) {\n if (!options) options = noOptions;\n var cm = this;\n var minLine = Infinity,\n ranges = this.listSelections(),\n mode = null;\n\n for (var i = ranges.length - 1; i >= 0; i--) {\n var from = ranges[i].from(),\n to = ranges[i].to();\n if (from.line >= minLine) continue;\n if (to.line >= minLine) to = Pos(minLine, 0);\n minLine = from.line;\n\n if (mode == null) {\n if (cm.uncomment(from, to, options)) mode = \"un\";else {\n cm.lineComment(from, to, options);\n mode = \"line\";\n }\n } else if (mode == \"un\") {\n cm.uncomment(from, to, options);\n } else {\n cm.lineComment(from, to, options);\n }\n }\n }); // Rough heuristic to try and detect lines that are part of multi-line string\n\n function probablyInsideString(cm, pos, line) {\n return /\\bstring\\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\\'\\\"\\`]/.test(line);\n }\n\n function getMode(cm, pos) {\n var mode = cm.getMode();\n return mode.useInnerComments === false || !mode.innerMode ? mode : cm.getModeAt(pos);\n }\n\n CodeMirror.defineExtension(\"lineComment\", function (from, to, options) {\n if (!options) options = noOptions;\n var self = this,\n mode = getMode(self, from);\n var firstLine = self.getLine(from.line);\n if (firstLine == null || probablyInsideString(self, from, firstLine)) return;\n var commentString = options.lineComment || mode.lineComment;\n\n if (!commentString) {\n if (options.blockCommentStart || mode.blockCommentStart) {\n options.fullLines = true;\n self.blockComment(from, to, options);\n }\n\n return;\n }\n\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n var pad = options.padding == null ? \" \" : options.padding;\n var blankLines = options.commentBlankLines || from.line == to.line;\n self.operation(function () {\n if (options.indent) {\n var baseString = null;\n\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i);\n var whitespace = line.slice(0, firstNonWS(line));\n\n if (baseString == null || baseString.length > whitespace.length) {\n baseString = whitespace;\n }\n }\n\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i),\n cut = baseString.length;\n if (!blankLines && !nonWS.test(line)) continue;\n if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n }\n } else {\n for (var i = from.line; i < end; ++i) {\n if (blankLines || nonWS.test(self.getLine(i))) self.replaceRange(commentString + pad, Pos(i, 0));\n }\n }\n });\n });\n CodeMirror.defineExtension(\"blockComment\", function (from, to, options) {\n if (!options) options = noOptions;\n var self = this,\n mode = getMode(self, from);\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n\n if (!startString || !endString) {\n if ((options.lineComment || mode.lineComment) && options.fullLines != false) self.lineComment(from, to, options);\n return;\n }\n\n if (/\\bcomment\\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return;\n var end = Math.min(to.line, self.lastLine());\n if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n var pad = options.padding == null ? \" \" : options.padding;\n if (from.line > end) return;\n self.operation(function () {\n if (options.fullLines != false) {\n var lastLineHasText = nonWS.test(self.getLine(end));\n self.replaceRange(pad + endString, Pos(end));\n self.replaceRange(startString + pad, Pos(from.line, 0));\n var lead = options.blockCommentLead || mode.blockCommentLead;\n if (lead != null) for (var i = from.line + 1; i <= end; ++i) if (i != end || lastLineHasText) self.replaceRange(lead + pad, Pos(i, 0));\n } else {\n var atCursor = cmp(self.getCursor(\"to\"), to) == 0,\n empty = !self.somethingSelected();\n self.replaceRange(endString, to);\n if (atCursor) self.setSelection(empty ? to : self.getCursor(\"from\"), to);\n self.replaceRange(startString, from);\n }\n });\n });\n CodeMirror.defineExtension(\"uncomment\", function (from, to, options) {\n if (!options) options = noOptions;\n var self = this,\n mode = getMode(self, from);\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()),\n start = Math.min(from.line, end); // Try finding line comments\n\n var lineString = options.lineComment || mode.lineComment,\n lines = [];\n var pad = options.padding == null ? \" \" : options.padding,\n didSomething;\n\n lineComment: {\n if (!lineString) break lineComment;\n\n for (var i = start; i <= end; ++i) {\n var line = self.getLine(i);\n var found = line.indexOf(lineString);\n if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n if (found == -1 && nonWS.test(line)) break lineComment;\n if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n lines.push(line);\n }\n\n self.operation(function () {\n for (var i = start; i <= end; ++i) {\n var line = lines[i - start];\n var pos = line.indexOf(lineString),\n endPos = pos + lineString.length;\n if (pos < 0) continue;\n if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n didSomething = true;\n self.replaceRange(\"\", Pos(i, pos), Pos(i, endPos));\n }\n });\n if (didSomething) return true;\n } // Try block comments\n\n\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) return false;\n var lead = options.blockCommentLead || mode.blockCommentLead;\n var startLine = self.getLine(start),\n open = startLine.indexOf(startString);\n if (open == -1) return false;\n var endLine = end == start ? startLine : self.getLine(end);\n var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);\n var insideStart = Pos(start, open + 1),\n insideEnd = Pos(end, close + 1);\n if (close == -1 || !/comment/.test(self.getTokenTypeAt(insideStart)) || !/comment/.test(self.getTokenTypeAt(insideEnd)) || self.getRange(insideStart, insideEnd, \"\\n\").indexOf(endString) > -1) return false; // Avoid killing block comments completely outside the selection.\n // Positions of the last startString before the start of the selection, and the first endString after it.\n\n var lastStart = startLine.lastIndexOf(startString, from.ch);\n var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false; // Positions of the first endString after the end of the selection, and the last startString before it.\n\n firstEnd = endLine.indexOf(endString, to.ch);\n var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n lastStart = firstEnd == -1 || almostLastStart == -1 ? -1 : to.ch + almostLastStart;\n if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n self.operation(function () {\n self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)), Pos(end, close + endString.length));\n var openEnd = open + startString.length;\n if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n if (lead) for (var i = start + 1; i <= end; ++i) {\n var line = self.getLine(i),\n found = line.indexOf(lead);\n if (found == -1 || nonWS.test(line.slice(0, found))) continue;\n var foundEnd = found + lead.length;\n if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n self.replaceRange(\"\", Pos(i, found), Pos(i, foundEnd));\n }\n });\n return true;\n });\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vY29tbWVudC9jb21tZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vY29tbWVudC9jb21tZW50LmpzP2I4Y2MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29kZU1pcnJvciwgY29weXJpZ2h0IChjKSBieSBNYXJpam4gSGF2ZXJiZWtlIGFuZCBvdGhlcnNcbi8vIERpc3RyaWJ1dGVkIHVuZGVyIGFuIE1JVCBsaWNlbnNlOiBodHRwczovL2NvZGVtaXJyb3IubmV0L0xJQ0VOU0VcblxuKGZ1bmN0aW9uKG1vZCkge1xuICBpZiAodHlwZW9mIGV4cG9ydHMgPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgbW9kdWxlID09IFwib2JqZWN0XCIpIC8vIENvbW1vbkpTXG4gICAgbW9kKHJlcXVpcmUoXCIuLi8uLi9saWIvY29kZW1pcnJvclwiKSk7XG4gIGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIC8vIEFNRFxuICAgIGRlZmluZShbXCIuLi8uLi9saWIvY29kZW1pcnJvclwiXSwgbW9kKTtcbiAgZWxzZSAvLyBQbGFpbiBicm93c2VyIGVudlxuICAgIG1vZChDb2RlTWlycm9yKTtcbn0pKGZ1bmN0aW9uKENvZGVNaXJyb3IpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgdmFyIG5vT3B0aW9ucyA9IHt9O1xuICB2YXIgbm9uV1MgPSAvW15cXHNcXHUwMGEwXS87XG4gIHZhciBQb3MgPSBDb2RlTWlycm9yLlBvcywgY21wID0gQ29kZU1pcnJvci5jbXBQb3M7XG5cbiAgZnVuY3Rpb24gZmlyc3ROb25XUyhzdHIpIHtcbiAgICB2YXIgZm91bmQgPSBzdHIuc2VhcmNoKG5vbldTKTtcbiAgICByZXR1cm4gZm91bmQgPT0gLTEgPyAwIDogZm91bmQ7XG4gIH1cblxuICBDb2RlTWlycm9yLmNvbW1hbmRzLnRvZ2dsZUNvbW1lbnQgPSBmdW5jdGlvbihjbSkge1xuICAgIGNtLnRvZ2dsZUNvbW1lbnQoKTtcbiAgfTtcblxuICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbihcInRvZ2dsZUNvbW1lbnRcIiwgZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IG5vT3B0aW9ucztcbiAgICB2YXIgY20gPSB0aGlzO1xuICAgIHZhciBtaW5MaW5lID0gSW5maW5pdHksIHJhbmdlcyA9IHRoaXMubGlzdFNlbGVjdGlvbnMoKSwgbW9kZSA9IG51bGw7XG4gICAgZm9yICh2YXIgaSA9IHJhbmdlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGZyb20gPSByYW5nZXNbaV0uZnJvbSgpLCB0byA9IHJhbmdlc1tpXS50bygpO1xuICAgICAgaWYgKGZyb20ubGluZSA+PSBtaW5MaW5lKSBjb250aW51ZTtcbiAgICAgIGlmICh0by5saW5lID49IG1pbkxpbmUpIHRvID0gUG9zKG1pbkxpbmUsIDApO1xuICAgICAgbWluTGluZSA9IGZyb20ubGluZTtcbiAgICAgIGlmIChtb2RlID09IG51bGwpIHtcbiAgICAgICAgaWYgKGNtLnVuY29tbWVudChmcm9tLCB0bywgb3B0aW9ucykpIG1vZGUgPSBcInVuXCI7XG4gICAgICAgIGVsc2UgeyBjbS5saW5lQ29tbWVudChmcm9tLCB0bywgb3B0aW9ucyk7IG1vZGUgPSBcImxpbmVcIjsgfVxuICAgICAgfSBlbHNlIGlmIChtb2RlID09IFwidW5cIikge1xuICAgICAgICBjbS51bmNvbW1lbnQoZnJvbSwgdG8sIG9wdGlvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY20ubGluZUNvbW1lbnQoZnJvbSwgdG8sIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gUm91Z2ggaGV1cmlzdGljIHRvIHRyeSBhbmQgZGV0ZWN0IGxpbmVzIHRoYXQgYXJlIHBhcnQgb2YgbXVsdGktbGluZSBzdHJpbmdcbiAgZnVuY3Rpb24gcHJvYmFibHlJbnNpZGVTdHJpbmcoY20sIHBvcywgbGluZSkge1xuICAgIHJldHVybiAvXFxic3RyaW5nXFxiLy50ZXN0KGNtLmdldFRva2VuVHlwZUF0KFBvcyhwb3MubGluZSwgMCkpKSAmJiAhL15bXFwnXFxcIlxcYF0vLnRlc3QobGluZSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE1vZGUoY20sIHBvcykge1xuICAgIHZhciBtb2RlID0gY20uZ2V0TW9kZSgpXG4gICAgcmV0dXJuIG1vZGUudXNlSW5uZXJDb21tZW50cyA9PT0gZmFsc2UgfHwgIW1vZGUuaW5uZXJNb2RlID8gbW9kZSA6IGNtLmdldE1vZGVBdChwb3MpXG4gIH1cblxuICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbihcImxpbmVDb21tZW50XCIsIGZ1bmN0aW9uKGZyb20sIHRvLCBvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0gbm9PcHRpb25zO1xuICAgIHZhciBzZWxmID0gdGhpcywgbW9kZSA9IGdldE1vZGUoc2VsZiwgZnJvbSk7XG4gICAgdmFyIGZpcnN0TGluZSA9IHNlbGYuZ2V0TGluZShmcm9tLmxpbmUpO1xuICAgIGlmIChmaXJzdExpbmUgPT0gbnVsbCB8fCBwcm9iYWJseUluc2lkZVN0cmluZyhzZWxmLCBmcm9tLCBmaXJzdExpbmUpKSByZXR1cm47XG5cbiAgICB2YXIgY29tbWVudFN0cmluZyA9IG9wdGlvbnMubGluZUNvbW1lbnQgfHwgbW9kZS5saW5lQ29tbWVudDtcbiAgICBpZiAoIWNvbW1lbnRTdHJpbmcpIHtcbiAgICAgIGlmIChvcHRpb25zLmJsb2NrQ29tbWVudFN0YXJ0IHx8IG1vZGUuYmxvY2tDb21tZW50U3RhcnQpIHtcbiAgICAgICAgb3B0aW9ucy5mdWxsTGluZXMgPSB0cnVlO1xuICAgICAgICBzZWxmLmJsb2NrQ29tbWVudChmcm9tLCB0bywgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvLmNoICE9IDAgfHwgdG8ubGluZSA9PSBmcm9tLmxpbmUgPyB0by5saW5lICsgMSA6IHRvLmxpbmUsIHNlbGYubGFzdExpbmUoKSArIDEpO1xuICAgIHZhciBwYWQgPSBvcHRpb25zLnBhZGRpbmcgPT0gbnVsbCA/IFwiIFwiIDogb3B0aW9ucy5wYWRkaW5nO1xuICAgIHZhciBibGFua0xpbmVzID0gb3B0aW9ucy5jb21tZW50QmxhbmtMaW5lcyB8fCBmcm9tLmxpbmUgPT0gdG8ubGluZTtcblxuICAgIHNlbGYub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKG9wdGlvbnMuaW5kZW50KSB7XG4gICAgICAgIHZhciBiYXNlU3RyaW5nID0gbnVsbDtcbiAgICAgICAgZm9yICh2YXIgaSA9IGZyb20ubGluZTsgaSA8IGVuZDsgKytpKSB7XG4gICAgICAgICAgdmFyIGxpbmUgPSBzZWxmLmdldExpbmUoaSk7XG4gICAgICAgICAgdmFyIHdoaXRlc3BhY2UgPSBsaW5lLnNsaWNlKDAsIGZpcnN0Tm9uV1MobGluZSkpO1xuICAgICAgICAgIGlmIChiYXNlU3RyaW5nID09IG51bGwgfHwgYmFzZVN0cmluZy5sZW5ndGggPiB3aGl0ZXNwYWNlLmxlbmd0aCkge1xuICAgICAgICAgICAgYmFzZVN0cmluZyA9IHdoaXRlc3BhY2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSBmcm9tLmxpbmU7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgICAgIHZhciBsaW5lID0gc2VsZi5nZXRMaW5lKGkpLCBjdXQgPSBiYXNlU3RyaW5nLmxlbmd0aDtcbiAgICAgICAgICBpZiAoIWJsYW5rTGluZXMgJiYgIW5vbldTLnRlc3QobGluZSkpIGNvbnRpbnVlO1xuICAgICAgICAgIGlmIChsaW5lLnNsaWNlKDAsIGN1dCkgIT0gYmFzZVN0cmluZykgY3V0ID0gZmlyc3ROb25XUyhsaW5lKTtcbiAgICAgICAgICBzZWxmLnJlcGxhY2VSYW5nZShiYXNlU3RyaW5nICsgY29tbWVudFN0cmluZyArIHBhZCwgUG9zKGksIDApLCBQb3MoaSwgY3V0KSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBmcm9tLmxpbmU7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgICAgIGlmIChibGFua0xpbmVzIHx8IG5vbldTLnRlc3Qoc2VsZi5nZXRMaW5lKGkpKSlcbiAgICAgICAgICAgIHNlbGYucmVwbGFjZVJhbmdlKGNvbW1lbnRTdHJpbmcgKyBwYWQsIFBvcyhpLCAwKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24oXCJibG9ja0NvbW1lbnRcIiwgZnVuY3Rpb24oZnJvbSwgdG8sIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSBub09wdGlvbnM7XG4gICAgdmFyIHNlbGYgPSB0aGlzLCBtb2RlID0gZ2V0TW9kZShzZWxmLCBmcm9tKTtcbiAgICB2YXIgc3RhcnRTdHJpbmcgPSBvcHRpb25zLmJsb2NrQ29tbWVudFN0YXJ0IHx8IG1vZGUuYmxvY2tDb21tZW50U3RhcnQ7XG4gICAgdmFyIGVuZFN0cmluZyA9IG9wdGlvbnMuYmxvY2tDb21tZW50RW5kIHx8IG1vZGUuYmxvY2tDb21tZW50RW5kO1xuICAgIGlmICghc3RhcnRTdHJpbmcgfHwgIWVuZFN0cmluZykge1xuICAgICAgaWYgKChvcHRpb25zLmxpbmVDb21tZW50IHx8IG1vZGUubGluZUNvbW1lbnQpICYmIG9wdGlvbnMuZnVsbExpbmVzICE9IGZhbHNlKVxuICAgICAgICBzZWxmLmxpbmVDb21tZW50KGZyb20sIHRvLCBvcHRpb25zKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKC9cXGJjb21tZW50XFxiLy50ZXN0KHNlbGYuZ2V0VG9rZW5UeXBlQXQoUG9zKGZyb20ubGluZSwgMCkpKSkgcmV0dXJuXG5cbiAgICB2YXIgZW5kID0gTWF0aC5taW4odG8ubGluZSwgc2VsZi5sYXN0TGluZSgpKTtcbiAgICBpZiAoZW5kICE9IGZyb20ubGluZSAmJiB0by5jaCA9PSAwICYmIG5vbldTLnRlc3Qoc2VsZi5nZXRMaW5lKGVuZCkpKSAtLWVuZDtcblxuICAgIHZhciBwYWQgPSBvcHRpb25zLnBhZGRpbmcgPT0gbnVsbCA/IFwiIFwiIDogb3B0aW9ucy5wYWRkaW5nO1xuICAgIGlmIChmcm9tLmxpbmUgPiBlbmQpIHJldHVybjtcblxuICAgIHNlbGYub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKG9wdGlvbnMuZnVsbExpbmVzICE9IGZhbHNlKSB7XG4gICAgICAgIHZhciBsYXN0TGluZUhhc1RleHQgPSBub25XUy50ZXN0KHNlbGYuZ2V0TGluZShlbmQpKTtcbiAgICAgICAgc2VsZi5yZXBsYWNlUmFuZ2UocGFkICsgZW5kU3RyaW5nLCBQb3MoZW5kKSk7XG4gICAgICAgIHNlbGYucmVwbGFjZVJhbmdlKHN0YXJ0U3RyaW5nICsgcGFkLCBQb3MoZnJvbS5saW5lLCAwKSk7XG4gICAgICAgIHZhciBsZWFkID0gb3B0aW9ucy5ibG9ja0NvbW1lbnRMZWFkIHx8IG1vZGUuYmxvY2tDb21tZW50TGVhZDtcbiAgICAgICAgaWYgKGxlYWQgIT0gbnVsbCkgZm9yICh2YXIgaSA9IGZyb20ubGluZSArIDE7IGkgPD0gZW5kOyArK2kpXG4gICAgICAgICAgaWYgKGkgIT0gZW5kIHx8IGxhc3RMaW5lSGFzVGV4dClcbiAgICAgICAgICAgIHNlbGYucmVwbGFjZVJhbmdlKGxlYWQgKyBwYWQsIFBvcyhpLCAwKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgYXRDdXJzb3IgPSBjbXAoc2VsZi5nZXRDdXJzb3IoXCJ0b1wiKSwgdG8pID09IDAsIGVtcHR5ID0gIXNlbGYuc29tZXRoaW5nU2VsZWN0ZWQoKVxuICAgICAgICBzZWxmLnJlcGxhY2VSYW5nZShlbmRTdHJpbmcsIHRvKTtcbiAgICAgICAgaWYgKGF0Q3Vyc29yKSBzZWxmLnNldFNlbGVjdGlvbihlbXB0eSA/IHRvIDogc2VsZi5nZXRDdXJzb3IoXCJmcm9tXCIpLCB0bylcbiAgICAgICAgc2VsZi5yZXBsYWNlUmFuZ2Uoc3RhcnRTdHJpbmcsIGZyb20pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbihcInVuY29tbWVudFwiLCBmdW5jdGlvbihmcm9tLCB0bywgb3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IG5vT3B0aW9ucztcbiAgICB2YXIgc2VsZiA9IHRoaXMsIG1vZGUgPSBnZXRNb2RlKHNlbGYsIGZyb20pO1xuICAgIHZhciBlbmQgPSBNYXRoLm1pbih0by5jaCAhPSAwIHx8IHRvLmxpbmUgPT0gZnJvbS5saW5lID8gdG8ubGluZSA6IHRvLmxpbmUgLSAxLCBzZWxmLmxhc3RMaW5lKCkpLCBzdGFydCA9IE1hdGgubWluKGZyb20ubGluZSwgZW5kKTtcblxuICAgIC8vIFRyeSBmaW5kaW5nIGxpbmUgY29tbWVudHNcbiAgICB2YXIgbGluZVN0cmluZyA9IG9wdGlvbnMubGluZUNvbW1lbnQgfHwgbW9kZS5saW5lQ29tbWVudCwgbGluZXMgPSBbXTtcbiAgICB2YXIgcGFkID0gb3B0aW9ucy5wYWRkaW5nID09IG51bGwgPyBcIiBcIiA6IG9wdGlvbnMucGFkZGluZywgZGlkU29tZXRoaW5nO1xuICAgIGxpbmVDb21tZW50OiB7XG4gICAgICBpZiAoIWxpbmVTdHJpbmcpIGJyZWFrIGxpbmVDb21tZW50O1xuICAgICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgKytpKSB7XG4gICAgICAgIHZhciBsaW5lID0gc2VsZi5nZXRMaW5lKGkpO1xuICAgICAgICB2YXIgZm91bmQgPSBsaW5lLmluZGV4T2YobGluZVN0cmluZyk7XG4gICAgICAgIGlmIChmb3VuZCA+IC0xICYmICEvY29tbWVudC8udGVzdChzZWxmLmdldFRva2VuVHlwZUF0KFBvcyhpLCBmb3VuZCArIDEpKSkpIGZvdW5kID0gLTE7XG4gICAgICAgIGlmIChmb3VuZCA9PSAtMSAmJiBub25XUy50ZXN0KGxpbmUpKSBicmVhayBsaW5lQ29tbWVudDtcbiAgICAgICAgaWYgKGZvdW5kID4gLTEgJiYgbm9uV1MudGVzdChsaW5lLnNsaWNlKDAsIGZvdW5kKSkpIGJyZWFrIGxpbmVDb21tZW50O1xuICAgICAgICBsaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgfVxuICAgICAgc2VsZi5vcGVyYXRpb24oZnVuY3Rpb24oKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8PSBlbmQ7ICsraSkge1xuICAgICAgICAgIHZhciBsaW5lID0gbGluZXNbaSAtIHN0YXJ0XTtcbiAgICAgICAgICB2YXIgcG9zID0gbGluZS5pbmRleE9mKGxpbmVTdHJpbmcpLCBlbmRQb3MgPSBwb3MgKyBsaW5lU3RyaW5nLmxlbmd0aDtcbiAgICAgICAgICBpZiAocG9zIDwgMCkgY29udGludWU7XG4gICAgICAgICAgaWYgKGxpbmUuc2xpY2UoZW5kUG9zLCBlbmRQb3MgKyBwYWQubGVuZ3RoKSA9PSBwYWQpIGVuZFBvcyArPSBwYWQubGVuZ3RoO1xuICAgICAgICAgIGRpZFNvbWV0aGluZyA9IHRydWU7XG4gICAgICAgICAgc2VsZi5yZXBsYWNlUmFuZ2UoXCJcIiwgUG9zKGksIHBvcyksIFBvcyhpLCBlbmRQb3MpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoZGlkU29tZXRoaW5nKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBUcnkgYmxvY2sgY29tbWVudHNcbiAgICB2YXIgc3RhcnRTdHJpbmcgPSBvcHRpb25zLmJsb2NrQ29tbWVudFN0YXJ0IHx8IG1vZGUuYmxvY2tDb21tZW50U3RhcnQ7XG4gICAgdmFyIGVuZFN0cmluZyA9IG9wdGlvbnMuYmxvY2tDb21tZW50RW5kIHx8IG1vZGUuYmxvY2tDb21tZW50RW5kO1xuICAgIGlmICghc3RhcnRTdHJpbmcgfHwgIWVuZFN0cmluZykgcmV0dXJuIGZhbHNlO1xuICAgIHZhciBsZWFkID0gb3B0aW9ucy5ibG9ja0NvbW1lbnRMZWFkIHx8IG1vZGUuYmxvY2tDb21tZW50TGVhZDtcbiAgICB2YXIgc3RhcnRMaW5lID0gc2VsZi5nZXRMaW5lKHN0YXJ0KSwgb3BlbiA9IHN0YXJ0TGluZS5pbmRleE9mKHN0YXJ0U3RyaW5nKVxuICAgIGlmIChvcGVuID09IC0xKSByZXR1cm4gZmFsc2VcbiAgICB2YXIgZW5kTGluZSA9IGVuZCA9PSBzdGFydCA/IHN0YXJ0TGluZSA6IHNlbGYuZ2V0TGluZShlbmQpXG4gICAgdmFyIGNsb3NlID0gZW5kTGluZS5pbmRleE9mKGVuZFN0cmluZywgZW5kID09IHN0YXJ0ID8gb3BlbiArIHN0YXJ0U3RyaW5nLmxlbmd0aCA6IDApO1xuICAgIHZhciBpbnNpZGVTdGFydCA9IFBvcyhzdGFydCwgb3BlbiArIDEpLCBpbnNpZGVFbmQgPSBQb3MoZW5kLCBjbG9zZSArIDEpXG4gICAgaWYgKGNsb3NlID09IC0xIHx8XG4gICAgICAgICEvY29tbWVudC8udGVzdChzZWxmLmdldFRva2VuVHlwZUF0KGluc2lkZVN0YXJ0KSkgfHxcbiAgICAgICAgIS9jb21tZW50Ly50ZXN0KHNlbGYuZ2V0VG9rZW5UeXBlQXQoaW5zaWRlRW5kKSkgfHxcbiAgICAgICAgc2VsZi5nZXRSYW5nZShpbnNpZGVTdGFydCwgaW5zaWRlRW5kLCBcIlxcblwiKS5pbmRleE9mKGVuZFN0cmluZykgPiAtMSlcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIC8vIEF2b2lkIGtpbGxpbmcgYmxvY2sgY29tbWVudHMgY29tcGxldGVseSBvdXRzaWRlIHRoZSBzZWxlY3Rpb24uXG4gICAgLy8gUG9zaXRpb25zIG9mIHRoZSBsYXN0IHN0YXJ0U3RyaW5nIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIHNlbGVjdGlvbiwgYW5kIHRoZSBmaXJzdCBlbmRTdHJpbmcgYWZ0ZXIgaXQuXG4gICAgdmFyIGxhc3RTdGFydCA9IHN0YXJ0TGluZS5sYXN0SW5kZXhPZihzdGFydFN0cmluZywgZnJvbS5jaCk7XG4gICAgdmFyIGZpcnN0RW5kID0gbGFzdFN0YXJ0ID09IC0xID8gLTEgOiBzdGFydExpbmUuc2xpY2UoMCwgZnJvbS5jaCkuaW5kZXhPZihlbmRTdHJpbmcsIGxhc3RTdGFydCArIHN0YXJ0U3RyaW5nLmxlbmd0aCk7XG4gICAgaWYgKGxhc3RTdGFydCAhPSAtMSAmJiBmaXJzdEVuZCAhPSAtMSAmJiBmaXJzdEVuZCArIGVuZFN0cmluZy5sZW5ndGggIT0gZnJvbS5jaCkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIFBvc2l0aW9ucyBvZiB0aGUgZmlyc3QgZW5kU3RyaW5nIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHNlbGVjdGlvbiwgYW5kIHRoZSBsYXN0IHN0YXJ0U3RyaW5nIGJlZm9yZSBpdC5cbiAgICBmaXJzdEVuZCA9IGVuZExpbmUuaW5kZXhPZihlbmRTdHJpbmcsIHRvLmNoKTtcbiAgICB2YXIgYWxtb3N0TGFzdFN0YXJ0ID0gZW5kTGluZS5zbGljZSh0by5jaCkubGFzdEluZGV4T2Yoc3RhcnRTdHJpbmcsIGZpcnN0RW5kIC0gdG8uY2gpO1xuICAgIGxhc3RTdGFydCA9IChmaXJzdEVuZCA9PSAtMSB8fCBhbG1vc3RMYXN0U3RhcnQgPT0gLTEpID8gLTEgOiB0by5jaCArIGFsbW9zdExhc3RTdGFydDtcbiAgICBpZiAoZmlyc3RFbmQgIT0gLTEgJiYgbGFzdFN0YXJ0ICE9IC0xICYmIGxhc3RTdGFydCAhPSB0by5jaCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgc2VsZi5vcGVyYXRpb24oZnVuY3Rpb24oKSB7XG4gICAgICBzZWxmLnJlcGxhY2VSYW5nZShcIlwiLCBQb3MoZW5kLCBjbG9zZSAtIChwYWQgJiYgZW5kTGluZS5zbGljZShjbG9zZSAtIHBhZC5sZW5ndGgsIGNsb3NlKSA9PSBwYWQgPyBwYWQubGVuZ3RoIDogMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgUG9zKGVuZCwgY2xvc2UgKyBlbmRTdHJpbmcubGVuZ3RoKSk7XG4gICAgICB2YXIgb3BlbkVuZCA9IG9wZW4gKyBzdGFydFN0cmluZy5sZW5ndGg7XG4gICAgICBpZiAocGFkICYmIHN0YXJ0TGluZS5zbGljZShvcGVuRW5kLCBvcGVuRW5kICsgcGFkLmxlbmd0aCkgPT0gcGFkKSBvcGVuRW5kICs9IHBhZC5sZW5ndGg7XG4gICAgICBzZWxmLnJlcGxhY2VSYW5nZShcIlwiLCBQb3Moc3RhcnQsIG9wZW4pLCBQb3Moc3RhcnQsIG9wZW5FbmQpKTtcbiAgICAgIGlmIChsZWFkKSBmb3IgKHZhciBpID0gc3RhcnQgKyAxOyBpIDw9IGVuZDsgKytpKSB7XG4gICAgICAgIHZhciBsaW5lID0gc2VsZi5nZXRMaW5lKGkpLCBmb3VuZCA9IGxpbmUuaW5kZXhPZihsZWFkKTtcbiAgICAgICAgaWYgKGZvdW5kID09IC0xIHx8IG5vbldTLnRlc3QobGluZS5zbGljZSgwLCBmb3VuZCkpKSBjb250aW51ZTtcbiAgICAgICAgdmFyIGZvdW5kRW5kID0gZm91bmQgKyBsZWFkLmxlbmd0aDtcbiAgICAgICAgaWYgKHBhZCAmJiBsaW5lLnNsaWNlKGZvdW5kRW5kLCBmb3VuZEVuZCArIHBhZC5sZW5ndGgpID09IHBhZCkgZm91bmRFbmQgKz0gcGFkLmxlbmd0aDtcbiAgICAgICAgc2VsZi5yZXBsYWNlUmFuZ2UoXCJcIiwgUG9zKGksIGZvdW5kKSwgUG9zKGksIGZvdW5kRW5kKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBLHdIQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFPQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/codemirror/addon/comment/comment.js\n");
110
111/***/ }),
112
113/***/ "../../../node_modules/codemirror/addon/dialog/dialog.js":
114/*!******************************************************************************************!*\
115 !*** /home/runner/work/graphiql/graphiql/node_modules/codemirror/addon/dialog/dialog.js ***!
116 \******************************************************************************************/
117/*! no static exports found */
118/***/ (function(module, exports, __webpack_require__) {
119
120eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n // CodeMirror, copyright (c) by Marijn Haverbeke and others\n // Distributed under an MIT license: https://codemirror.net/LICENSE\n // Open simple dialogs on top of an editor. Relies on dialog.css.\n (function (mod) {\n if (true) // CommonJS\n mod(__webpack_require__(/*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));else {}\n })(function (CodeMirror) {\n function dialogDiv(cm, template, bottom) {\n var wrap = cm.getWrapperElement();\n var dialog;\n dialog = wrap.appendChild(document.createElement(\"div\"));\n if (bottom) dialog.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";else dialog.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n\n if (typeof template == \"string\") {\n dialog.innerHTML = template;\n } else {\n // Assuming it's a detached DOM element.\n dialog.appendChild(template);\n }\n\n CodeMirror.addClass(wrap, 'dialog-opened');\n return dialog;\n }\n\n function closeNotification(cm, newVal) {\n if (cm.state.currentNotificationClose) cm.state.currentNotificationClose();\n cm.state.currentNotificationClose = newVal;\n }\n\n CodeMirror.defineExtension(\"openDialog\", function (template, callback, options) {\n if (!options) options = {};\n closeNotification(this, null);\n var dialog = dialogDiv(this, template, options.bottom);\n var closed = false,\n me = this;\n\n function close(newVal) {\n if (typeof newVal == 'string') {\n inp.value = newVal;\n } else {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n if (options.onClose) options.onClose(dialog);\n }\n }\n\n var inp = dialog.getElementsByTagName(\"input\")[0],\n button;\n\n if (inp) {\n inp.focus();\n\n if (options.value) {\n inp.value = options.value;\n\n if (options.selectValueOnOpen !== false) {\n inp.select();\n }\n }\n\n if (options.onInput) CodeMirror.on(inp, \"input\", function (e) {\n options.onInput(e, inp.value, close);\n });\n if (options.onKeyUp) CodeMirror.on(inp, \"keyup\", function (e) {\n options.onKeyUp(e, inp.value, close);\n });\n CodeMirror.on(inp, \"keydown\", function (e) {\n if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) {\n return;\n }\n\n if (e.keyCode == 27 || options.closeOnEnter !== false && e.keyCode == 13) {\n inp.blur();\n CodeMirror.e_stop(e);\n close();\n }\n\n if (e.keyCode == 13) callback(inp.value, e);\n });\n if (options.closeOnBlur !== false) CodeMirror.on(dialog, \"focusout\", function (evt) {\n if (evt.relatedTarget !== null) close();\n });\n } else if (button = dialog.getElementsByTagName(\"button\")[0]) {\n CodeMirror.on(button, \"click\", function () {\n close();\n me.focus();\n });\n if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n button.focus();\n }\n\n return close;\n });\n CodeMirror.defineExtension(\"openConfirm\", function (template, callbacks, options) {\n closeNotification(this, null);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var buttons = dialog.getElementsByTagName(\"button\");\n var closed = false,\n me = this,\n blurring = 1;\n\n function close() {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n }\n\n buttons[0].focus();\n\n for (var i = 0; i < buttons.length; ++i) {\n var b = buttons[i];\n\n (function (callback) {\n CodeMirror.on(b, \"click\", function (e) {\n CodeMirror.e_preventDefault(e);\n close();\n if (callback) callback(me);\n });\n })(callbacks[i]);\n\n CodeMirror.on(b, \"blur\", function () {\n --blurring;\n setTimeout(function () {\n if (blurring <= 0) close();\n }, 200);\n });\n CodeMirror.on(b, \"focus\", function () {\n ++blurring;\n });\n }\n });\n /*\n * openNotification\n * Opens a notification, that can be closed with an optional timer\n * (default 5000ms timer) and always closes on click.\n *\n * If a notification is opened while another is opened, it will close the\n * currently opened one and open the new one immediately.\n */\n\n CodeMirror.defineExtension(\"openNotification\", function (template, options) {\n closeNotification(this, close);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var closed = false,\n doneTimer;\n var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5000;\n\n function close() {\n if (closed) return;\n closed = true;\n clearTimeout(doneTimer);\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n }\n\n CodeMirror.on(dialog, 'click', function (e) {\n CodeMirror.e_preventDefault(e);\n close();\n });\n if (duration) doneTimer = setTimeout(close, duration);\n return close;\n });\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vZGlhbG9nL2RpYWxvZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9jb2RlbWlycm9yL2FkZG9uL2RpYWxvZy9kaWFsb2cuanM/NmE3NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb2RlTWlycm9yLCBjb3B5cmlnaHQgKGMpIGJ5IE1hcmlqbiBIYXZlcmJla2UgYW5kIG90aGVyc1xuLy8gRGlzdHJpYnV0ZWQgdW5kZXIgYW4gTUlUIGxpY2Vuc2U6IGh0dHBzOi8vY29kZW1pcnJvci5uZXQvTElDRU5TRVxuXG4vLyBPcGVuIHNpbXBsZSBkaWFsb2dzIG9uIHRvcCBvZiBhbiBlZGl0b3IuIFJlbGllcyBvbiBkaWFsb2cuY3NzLlxuXG4oZnVuY3Rpb24obW9kKSB7XG4gIGlmICh0eXBlb2YgZXhwb3J0cyA9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBtb2R1bGUgPT0gXCJvYmplY3RcIikgLy8gQ29tbW9uSlNcbiAgICBtb2QocmVxdWlyZShcIi4uLy4uL2xpYi9jb2RlbWlycm9yXCIpKTtcbiAgZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkgLy8gQU1EXG4gICAgZGVmaW5lKFtcIi4uLy4uL2xpYi9jb2RlbWlycm9yXCJdLCBtb2QpO1xuICBlbHNlIC8vIFBsYWluIGJyb3dzZXIgZW52XG4gICAgbW9kKENvZGVNaXJyb3IpO1xufSkoZnVuY3Rpb24oQ29kZU1pcnJvcikge1xuICBmdW5jdGlvbiBkaWFsb2dEaXYoY20sIHRlbXBsYXRlLCBib3R0b20pIHtcbiAgICB2YXIgd3JhcCA9IGNtLmdldFdyYXBwZXJFbGVtZW50KCk7XG4gICAgdmFyIGRpYWxvZztcbiAgICBkaWFsb2cgPSB3cmFwLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpO1xuICAgIGlmIChib3R0b20pXG4gICAgICBkaWFsb2cuY2xhc3NOYW1lID0gXCJDb2RlTWlycm9yLWRpYWxvZyBDb2RlTWlycm9yLWRpYWxvZy1ib3R0b21cIjtcbiAgICBlbHNlXG4gICAgICBkaWFsb2cuY2xhc3NOYW1lID0gXCJDb2RlTWlycm9yLWRpYWxvZyBDb2RlTWlycm9yLWRpYWxvZy10b3BcIjtcblxuICAgIGlmICh0eXBlb2YgdGVtcGxhdGUgPT0gXCJzdHJpbmdcIikge1xuICAgICAgZGlhbG9nLmlubmVySFRNTCA9IHRlbXBsYXRlO1xuICAgIH0gZWxzZSB7IC8vIEFzc3VtaW5nIGl0J3MgYSBkZXRhY2hlZCBET00gZWxlbWVudC5cbiAgICAgIGRpYWxvZy5hcHBlbmRDaGlsZCh0ZW1wbGF0ZSk7XG4gICAgfVxuICAgIENvZGVNaXJyb3IuYWRkQ2xhc3Mod3JhcCwgJ2RpYWxvZy1vcGVuZWQnKTtcbiAgICByZXR1cm4gZGlhbG9nO1xuICB9XG5cbiAgZnVuY3Rpb24gY2xvc2VOb3RpZmljYXRpb24oY20sIG5ld1ZhbCkge1xuICAgIGlmIChjbS5zdGF0ZS5jdXJyZW50Tm90aWZpY2F0aW9uQ2xvc2UpXG4gICAgICBjbS5zdGF0ZS5jdXJyZW50Tm90aWZpY2F0aW9uQ2xvc2UoKTtcbiAgICBjbS5zdGF0ZS5jdXJyZW50Tm90aWZpY2F0aW9uQ2xvc2UgPSBuZXdWYWw7XG4gIH1cblxuICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbihcIm9wZW5EaWFsb2dcIiwgZnVuY3Rpb24odGVtcGxhdGUsIGNhbGxiYWNrLCBvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307XG5cbiAgICBjbG9zZU5vdGlmaWNhdGlvbih0aGlzLCBudWxsKTtcblxuICAgIHZhciBkaWFsb2cgPSBkaWFsb2dEaXYodGhpcywgdGVtcGxhdGUsIG9wdGlvbnMuYm90dG9tKTtcbiAgICB2YXIgY2xvc2VkID0gZmFsc2UsIG1lID0gdGhpcztcbiAgICBmdW5jdGlvbiBjbG9zZShuZXdWYWwpIHtcbiAgICAgIGlmICh0eXBlb2YgbmV3VmFsID09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlucC52YWx1ZSA9IG5ld1ZhbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjbG9zZWQpIHJldHVybjtcbiAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgQ29kZU1pcnJvci5ybUNsYXNzKGRpYWxvZy5wYXJlbnROb2RlLCAnZGlhbG9nLW9wZW5lZCcpO1xuICAgICAgICBkaWFsb2cucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkaWFsb2cpO1xuICAgICAgICBtZS5mb2N1cygpO1xuXG4gICAgICAgIGlmIChvcHRpb25zLm9uQ2xvc2UpIG9wdGlvbnMub25DbG9zZShkaWFsb2cpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBpbnAgPSBkaWFsb2cuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpbnB1dFwiKVswXSwgYnV0dG9uO1xuICAgIGlmIChpbnApIHtcbiAgICAgIGlucC5mb2N1cygpO1xuXG4gICAgICBpZiAob3B0aW9ucy52YWx1ZSkge1xuICAgICAgICBpbnAudmFsdWUgPSBvcHRpb25zLnZhbHVlO1xuICAgICAgICBpZiAob3B0aW9ucy5zZWxlY3RWYWx1ZU9uT3BlbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBpbnAuc2VsZWN0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMub25JbnB1dClcbiAgICAgICAgQ29kZU1pcnJvci5vbihpbnAsIFwiaW5wdXRcIiwgZnVuY3Rpb24oZSkgeyBvcHRpb25zLm9uSW5wdXQoZSwgaW5wLnZhbHVlLCBjbG9zZSk7fSk7XG4gICAgICBpZiAob3B0aW9ucy5vbktleVVwKVxuICAgICAgICBDb2RlTWlycm9yLm9uKGlucCwgXCJrZXl1cFwiLCBmdW5jdGlvbihlKSB7b3B0aW9ucy5vbktleVVwKGUsIGlucC52YWx1ZSwgY2xvc2UpO30pO1xuXG4gICAgICBDb2RlTWlycm9yLm9uKGlucCwgXCJrZXlkb3duXCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5vbktleURvd24gJiYgb3B0aW9ucy5vbktleURvd24oZSwgaW5wLnZhbHVlLCBjbG9zZSkpIHsgcmV0dXJuOyB9XG4gICAgICAgIGlmIChlLmtleUNvZGUgPT0gMjcgfHwgKG9wdGlvbnMuY2xvc2VPbkVudGVyICE9PSBmYWxzZSAmJiBlLmtleUNvZGUgPT0gMTMpKSB7XG4gICAgICAgICAgaW5wLmJsdXIoKTtcbiAgICAgICAgICBDb2RlTWlycm9yLmVfc3RvcChlKTtcbiAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlLmtleUNvZGUgPT0gMTMpIGNhbGxiYWNrKGlucC52YWx1ZSwgZSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKG9wdGlvbnMuY2xvc2VPbkJsdXIgIT09IGZhbHNlKSBDb2RlTWlycm9yLm9uKGRpYWxvZywgXCJmb2N1c291dFwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIGlmIChldnQucmVsYXRlZFRhcmdldCAhPT0gbnVsbCkgY2xvc2UoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoYnV0dG9uID0gZGlhbG9nLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYnV0dG9uXCIpWzBdKSB7XG4gICAgICBDb2RlTWlycm9yLm9uKGJ1dHRvbiwgXCJjbGlja1wiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgbWUuZm9jdXMoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAob3B0aW9ucy5jbG9zZU9uQmx1ciAhPT0gZmFsc2UpIENvZGVNaXJyb3Iub24oYnV0dG9uLCBcImJsdXJcIiwgY2xvc2UpO1xuXG4gICAgICBidXR0b24uZm9jdXMoKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb3NlO1xuICB9KTtcblxuICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbihcIm9wZW5Db25maXJtXCIsIGZ1bmN0aW9uKHRlbXBsYXRlLCBjYWxsYmFja3MsIG9wdGlvbnMpIHtcbiAgICBjbG9zZU5vdGlmaWNhdGlvbih0aGlzLCBudWxsKTtcbiAgICB2YXIgZGlhbG9nID0gZGlhbG9nRGl2KHRoaXMsIHRlbXBsYXRlLCBvcHRpb25zICYmIG9wdGlvbnMuYm90dG9tKTtcbiAgICB2YXIgYnV0dG9ucyA9IGRpYWxvZy5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJ1dHRvblwiKTtcbiAgICB2YXIgY2xvc2VkID0gZmFsc2UsIG1lID0gdGhpcywgYmx1cnJpbmcgPSAxO1xuICAgIGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgICAgaWYgKGNsb3NlZCkgcmV0dXJuO1xuICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgIENvZGVNaXJyb3Iucm1DbGFzcyhkaWFsb2cucGFyZW50Tm9kZSwgJ2RpYWxvZy1vcGVuZWQnKTtcbiAgICAgIGRpYWxvZy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRpYWxvZyk7XG4gICAgICBtZS5mb2N1cygpO1xuICAgIH1cbiAgICBidXR0b25zWzBdLmZvY3VzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidXR0b25zLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgYiA9IGJ1dHRvbnNbaV07XG4gICAgICAoZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgICAgQ29kZU1pcnJvci5vbihiLCBcImNsaWNrXCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICBDb2RlTWlycm9yLmVfcHJldmVudERlZmF1bHQoZSk7XG4gICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKG1lKTtcbiAgICAgICAgfSk7XG4gICAgICB9KShjYWxsYmFja3NbaV0pO1xuICAgICAgQ29kZU1pcnJvci5vbihiLCBcImJsdXJcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgIC0tYmx1cnJpbmc7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGlmIChibHVycmluZyA8PSAwKSBjbG9zZSgpOyB9LCAyMDApO1xuICAgICAgfSk7XG4gICAgICBDb2RlTWlycm9yLm9uKGIsIFwiZm9jdXNcIiwgZnVuY3Rpb24oKSB7ICsrYmx1cnJpbmc7IH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgLypcbiAgICogb3Blbk5vdGlmaWNhdGlvblxuICAgKiBPcGVucyBhIG5vdGlmaWNhdGlvbiwgdGhhdCBjYW4gYmUgY2xvc2VkIHdpdGggYW4gb3B0aW9uYWwgdGltZXJcbiAgICogKGRlZmF1bHQgNTAwMG1zIHRpbWVyKSBhbmQgYWx3YXlzIGNsb3NlcyBvbiBjbGljay5cbiAgICpcbiAgICogSWYgYSBub3RpZmljYXRpb24gaXMgb3BlbmVkIHdoaWxlIGFub3RoZXIgaXMgb3BlbmVkLCBpdCB3aWxsIGNsb3NlIHRoZVxuICAgKiBjdXJyZW50bHkgb3BlbmVkIG9uZSBhbmQgb3BlbiB0aGUgbmV3IG9uZSBpbW1lZGlhdGVseS5cbiAgICovXG4gIENvZGVNaXJyb3IuZGVmaW5lRXh0ZW5zaW9uKFwib3Blbk5vdGlmaWNhdGlvblwiLCBmdW5jdGlvbih0ZW1wbGF0ZSwgb3B0aW9ucykge1xuICAgIGNsb3NlTm90aWZpY2F0aW9uKHRoaXMsIGNsb3NlKTtcbiAgICB2YXIgZGlhbG9nID0gZGlhbG9nRGl2KHRoaXMsIHRlbXBsYXRlLCBvcHRpb25zICYmIG9wdGlvbnMuYm90dG9tKTtcbiAgICB2YXIgY2xvc2VkID0gZmFsc2UsIGRvbmVUaW1lcjtcbiAgICB2YXIgZHVyYXRpb24gPSBvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLmR1cmF0aW9uICE9PSBcInVuZGVmaW5lZFwiID8gb3B0aW9ucy5kdXJhdGlvbiA6IDUwMDA7XG5cbiAgICBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgIGlmIChjbG9zZWQpIHJldHVybjtcbiAgICAgIGNsb3NlZCA9IHRydWU7XG4gICAgICBjbGVhclRpbWVvdXQoZG9uZVRpbWVyKTtcbiAgICAgIENvZGVNaXJyb3Iucm1DbGFzcyhkaWFsb2cucGFyZW50Tm9kZSwgJ2RpYWxvZy1vcGVuZWQnKTtcbiAgICAgIGRpYWxvZy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRpYWxvZyk7XG4gICAgfVxuXG4gICAgQ29kZU1pcnJvci5vbihkaWFsb2csICdjbGljaycsIGZ1bmN0aW9uKGUpIHtcbiAgICAgIENvZGVNaXJyb3IuZV9wcmV2ZW50RGVmYXVsdChlKTtcbiAgICAgIGNsb3NlKCk7XG4gICAgfSk7XG5cbiAgICBpZiAoZHVyYXRpb24pXG4gICAgICBkb25lVGltZXIgPSBzZXRUaW1lb3V0KGNsb3NlLCBkdXJhdGlvbik7XG5cbiAgICByZXR1cm4gY2xvc2U7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0Esd0hBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/codemirror/addon/dialog/dialog.js\n");
121
122/***/ }),
123
124/***/ "../../../node_modules/codemirror/addon/edit/closebrackets.js":
125/*!***********************************************************************************************!*\
126 !*** /home/runner/work/graphiql/graphiql/node_modules/codemirror/addon/edit/closebrackets.js ***!
127 \***********************************************************************************************/
128/*! no static exports found */
129/***/ (function(module, exports, __webpack_require__) {
130
131eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n // CodeMirror, copyright (c) by Marijn Haverbeke and others\n // Distributed under an MIT license: https://codemirror.net/LICENSE\n (function (mod) {\n if (true) // CommonJS\n mod(__webpack_require__(/*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));else {}\n })(function (CodeMirror) {\n var defaults = {\n pairs: \"()[]{}''\\\"\\\"\",\n closeBefore: \")]}'\\\":;>\",\n triples: \"\",\n explode: \"[]{}\"\n };\n var Pos = CodeMirror.Pos;\n CodeMirror.defineOption(\"autoCloseBrackets\", false, function (cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.removeKeyMap(keyMap);\n cm.state.closeBrackets = null;\n }\n\n if (val) {\n ensureBound(getOption(val, \"pairs\"));\n cm.state.closeBrackets = val;\n cm.addKeyMap(keyMap);\n }\n });\n\n function getOption(conf, name) {\n if (name == \"pairs\" && typeof conf == \"string\") return conf;\n if (typeof conf == \"object\" && conf[name] != null) return conf[name];\n return defaults[name];\n }\n\n var keyMap = {\n Backspace: handleBackspace,\n Enter: handleEnter\n };\n\n function ensureBound(chars) {\n for (var i = 0; i < chars.length; i++) {\n var ch = chars.charAt(i),\n key = \"'\" + ch + \"'\";\n if (!keyMap[key]) keyMap[key] = handler(ch);\n }\n }\n\n ensureBound(defaults.pairs + \"`\");\n\n function handler(ch) {\n return function (cm) {\n return handleChar(cm, ch);\n };\n }\n\n function getConfig(cm) {\n var deflt = cm.state.closeBrackets;\n if (!deflt || deflt.override) return deflt;\n var mode = cm.getModeAt(cm.getCursor());\n return mode.closeBrackets || deflt;\n }\n\n function handleBackspace(cm) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n var pairs = getOption(conf, \"pairs\");\n var ranges = cm.listSelections();\n\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n\n for (var i = ranges.length - 1; i >= 0; i--) {\n var cur = ranges[i].head;\n cm.replaceRange(\"\", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1), \"+delete\");\n }\n }\n\n function handleEnter(cm) {\n var conf = getConfig(cm);\n var explode = conf && getOption(conf, \"explode\");\n if (!explode || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n var ranges = cm.listSelections();\n\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || explode.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n\n cm.operation(function () {\n var linesep = cm.lineSeparator() || \"\\n\";\n cm.replaceSelection(linesep + linesep, null);\n cm.execCommand(\"goCharLeft\");\n ranges = cm.listSelections();\n\n for (var i = 0; i < ranges.length; i++) {\n var line = ranges[i].head.line;\n cm.indentLine(line, null, true);\n cm.indentLine(line + 1, null, true);\n }\n });\n }\n\n function contractSelection(sel) {\n var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;\n return {\n anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1 : 1)),\n head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 : -1))\n };\n }\n\n function handleChar(cm, ch) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n var pairs = getOption(conf, \"pairs\");\n var pos = pairs.indexOf(ch);\n if (pos == -1) return CodeMirror.Pass;\n var closeBefore = getOption(conf, \"closeBefore\");\n var triples = getOption(conf, \"triples\");\n var identical = pairs.charAt(pos + 1) == ch;\n var ranges = cm.listSelections();\n var opening = pos % 2 == 0;\n var type;\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i],\n cur = range.head,\n curType;\n var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));\n\n if (opening && !range.empty()) {\n curType = \"surround\";\n } else if ((identical || !opening) && next == ch) {\n if (identical && stringStartsAfter(cm, cur)) curType = \"both\";else if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch) curType = \"skipThree\";else curType = \"skip\";\n } else if (identical && cur.ch > 1 && triples.indexOf(ch) >= 0 && cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) {\n if (cur.ch > 2 && /\\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return CodeMirror.Pass;\n curType = \"addFour\";\n } else if (identical) {\n var prev = cur.ch == 0 ? \" \" : cm.getRange(Pos(cur.line, cur.ch - 1), cur);\n if (!CodeMirror.isWordChar(next) && prev != ch && !CodeMirror.isWordChar(prev)) curType = \"both\";else return CodeMirror.Pass;\n } else if (opening && (next.length === 0 || /\\s/.test(next) || closeBefore.indexOf(next) > -1)) {\n curType = \"both\";\n } else {\n return CodeMirror.Pass;\n }\n\n if (!type) type = curType;else if (type != curType) return CodeMirror.Pass;\n }\n\n var left = pos % 2 ? pairs.charAt(pos - 1) : ch;\n var right = pos % 2 ? ch : pairs.charAt(pos + 1);\n cm.operation(function () {\n if (type == \"skip\") {\n cm.execCommand(\"goCharRight\");\n } else if (type == \"skipThree\") {\n for (var i = 0; i < 3; i++) cm.execCommand(\"goCharRight\");\n } else if (type == \"surround\") {\n var sels = cm.getSelections();\n\n for (var i = 0; i < sels.length; i++) sels[i] = left + sels[i] + right;\n\n cm.replaceSelections(sels, \"around\");\n sels = cm.listSelections().slice();\n\n for (var i = 0; i < sels.length; i++) sels[i] = contractSelection(sels[i]);\n\n cm.setSelections(sels);\n } else if (type == \"both\") {\n cm.replaceSelection(left + right, null);\n cm.triggerElectric(left + right);\n cm.execCommand(\"goCharLeft\");\n } else if (type == \"addFour\") {\n cm.replaceSelection(left + left + left + left, \"before\");\n cm.execCommand(\"goCharRight\");\n }\n });\n }\n\n function charsAround(cm, pos) {\n var str = cm.getRange(Pos(pos.line, pos.ch - 1), Pos(pos.line, pos.ch + 1));\n return str.length == 2 ? str : null;\n }\n\n function stringStartsAfter(cm, pos) {\n var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1));\n return /\\bstring/.test(token.type) && token.start == pos.ch && (pos.ch == 0 || !/\\bstring/.test(cm.getTokenTypeAt(pos)));\n }\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vZWRpdC9jbG9zZWJyYWNrZXRzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vZWRpdC9jbG9zZWJyYWNrZXRzLmpzPzZkN2MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29kZU1pcnJvciwgY29weXJpZ2h0IChjKSBieSBNYXJpam4gSGF2ZXJiZWtlIGFuZCBvdGhlcnNcbi8vIERpc3RyaWJ1dGVkIHVuZGVyIGFuIE1JVCBsaWNlbnNlOiBodHRwczovL2NvZGVtaXJyb3IubmV0L0xJQ0VOU0VcblxuKGZ1bmN0aW9uKG1vZCkge1xuICBpZiAodHlwZW9mIGV4cG9ydHMgPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgbW9kdWxlID09IFwib2JqZWN0XCIpIC8vIENvbW1vbkpTXG4gICAgbW9kKHJlcXVpcmUoXCIuLi8uLi9saWIvY29kZW1pcnJvclwiKSk7XG4gIGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIC8vIEFNRFxuICAgIGRlZmluZShbXCIuLi8uLi9saWIvY29kZW1pcnJvclwiXSwgbW9kKTtcbiAgZWxzZSAvLyBQbGFpbiBicm93c2VyIGVudlxuICAgIG1vZChDb2RlTWlycm9yKTtcbn0pKGZ1bmN0aW9uKENvZGVNaXJyb3IpIHtcbiAgdmFyIGRlZmF1bHRzID0ge1xuICAgIHBhaXJzOiBcIigpW117fScnXFxcIlxcXCJcIixcbiAgICBjbG9zZUJlZm9yZTogXCIpXX0nXFxcIjo7PlwiLFxuICAgIHRyaXBsZXM6IFwiXCIsXG4gICAgZXhwbG9kZTogXCJbXXt9XCJcbiAgfTtcblxuICB2YXIgUG9zID0gQ29kZU1pcnJvci5Qb3M7XG5cbiAgQ29kZU1pcnJvci5kZWZpbmVPcHRpb24oXCJhdXRvQ2xvc2VCcmFja2V0c1wiLCBmYWxzZSwgZnVuY3Rpb24oY20sIHZhbCwgb2xkKSB7XG4gICAgaWYgKG9sZCAmJiBvbGQgIT0gQ29kZU1pcnJvci5Jbml0KSB7XG4gICAgICBjbS5yZW1vdmVLZXlNYXAoa2V5TWFwKTtcbiAgICAgIGNtLnN0YXRlLmNsb3NlQnJhY2tldHMgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodmFsKSB7XG4gICAgICBlbnN1cmVCb3VuZChnZXRPcHRpb24odmFsLCBcInBhaXJzXCIpKVxuICAgICAgY20uc3RhdGUuY2xvc2VCcmFja2V0cyA9IHZhbDtcbiAgICAgIGNtLmFkZEtleU1hcChrZXlNYXApO1xuICAgIH1cbiAgfSk7XG5cbiAgZnVuY3Rpb24gZ2V0T3B0aW9uKGNvbmYsIG5hbWUpIHtcbiAgICBpZiAobmFtZSA9PSBcInBhaXJzXCIgJiYgdHlwZW9mIGNvbmYgPT0gXCJzdHJpbmdcIikgcmV0dXJuIGNvbmY7XG4gICAgaWYgKHR5cGVvZiBjb25mID09IFwib2JqZWN0XCIgJiYgY29uZltuYW1lXSAhPSBudWxsKSByZXR1cm4gY29uZltuYW1lXTtcbiAgICByZXR1cm4gZGVmYXVsdHNbbmFtZV07XG4gIH1cblxuICB2YXIga2V5TWFwID0ge0JhY2tzcGFjZTogaGFuZGxlQmFja3NwYWNlLCBFbnRlcjogaGFuZGxlRW50ZXJ9O1xuICBmdW5jdGlvbiBlbnN1cmVCb3VuZChjaGFycykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjaCA9IGNoYXJzLmNoYXJBdChpKSwga2V5ID0gXCInXCIgKyBjaCArIFwiJ1wiXG4gICAgICBpZiAoIWtleU1hcFtrZXldKSBrZXlNYXBba2V5XSA9IGhhbmRsZXIoY2gpXG4gICAgfVxuICB9XG4gIGVuc3VyZUJvdW5kKGRlZmF1bHRzLnBhaXJzICsgXCJgXCIpXG5cbiAgZnVuY3Rpb24gaGFuZGxlcihjaCkge1xuICAgIHJldHVybiBmdW5jdGlvbihjbSkgeyByZXR1cm4gaGFuZGxlQ2hhcihjbSwgY2gpOyB9O1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Q29uZmlnKGNtKSB7XG4gICAgdmFyIGRlZmx0ID0gY20uc3RhdGUuY2xvc2VCcmFja2V0cztcbiAgICBpZiAoIWRlZmx0IHx8IGRlZmx0Lm92ZXJyaWRlKSByZXR1cm4gZGVmbHQ7XG4gICAgdmFyIG1vZGUgPSBjbS5nZXRNb2RlQXQoY20uZ2V0Q3Vyc29yKCkpO1xuICAgIHJldHVybiBtb2RlLmNsb3NlQnJhY2tldHMgfHwgZGVmbHQ7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVCYWNrc3BhY2UoY20pIHtcbiAgICB2YXIgY29uZiA9IGdldENvbmZpZyhjbSk7XG4gICAgaWYgKCFjb25mIHx8IGNtLmdldE9wdGlvbihcImRpc2FibGVJbnB1dFwiKSkgcmV0dXJuIENvZGVNaXJyb3IuUGFzcztcblxuICAgIHZhciBwYWlycyA9IGdldE9wdGlvbihjb25mLCBcInBhaXJzXCIpO1xuICAgIHZhciByYW5nZXMgPSBjbS5saXN0U2VsZWN0aW9ucygpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIXJhbmdlc1tpXS5lbXB0eSgpKSByZXR1cm4gQ29kZU1pcnJvci5QYXNzO1xuICAgICAgdmFyIGFyb3VuZCA9IGNoYXJzQXJvdW5kKGNtLCByYW5nZXNbaV0uaGVhZCk7XG4gICAgICBpZiAoIWFyb3VuZCB8fCBwYWlycy5pbmRleE9mKGFyb3VuZCkgJSAyICE9IDApIHJldHVybiBDb2RlTWlycm9yLlBhc3M7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSByYW5nZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBjdXIgPSByYW5nZXNbaV0uaGVhZDtcbiAgICAgIGNtLnJlcGxhY2VSYW5nZShcIlwiLCBQb3MoY3VyLmxpbmUsIGN1ci5jaCAtIDEpLCBQb3MoY3VyLmxpbmUsIGN1ci5jaCArIDEpLCBcIitkZWxldGVcIik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlRW50ZXIoY20pIHtcbiAgICB2YXIgY29uZiA9IGdldENvbmZpZyhjbSk7XG4gICAgdmFyIGV4cGxvZGUgPSBjb25mICYmIGdldE9wdGlvbihjb25mLCBcImV4cGxvZGVcIik7XG4gICAgaWYgKCFleHBsb2RlIHx8IGNtLmdldE9wdGlvbihcImRpc2FibGVJbnB1dFwiKSkgcmV0dXJuIENvZGVNaXJyb3IuUGFzcztcblxuICAgIHZhciByYW5nZXMgPSBjbS5saXN0U2VsZWN0aW9ucygpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIXJhbmdlc1tpXS5lbXB0eSgpKSByZXR1cm4gQ29kZU1pcnJvci5QYXNzO1xuICAgICAgdmFyIGFyb3VuZCA9IGNoYXJzQXJvdW5kKGNtLCByYW5nZXNbaV0uaGVhZCk7XG4gICAgICBpZiAoIWFyb3VuZCB8fCBleHBsb2RlLmluZGV4T2YoYXJvdW5kKSAlIDIgIT0gMCkgcmV0dXJuIENvZGVNaXJyb3IuUGFzcztcbiAgICB9XG4gICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGxpbmVzZXAgPSBjbS5saW5lU2VwYXJhdG9yKCkgfHwgXCJcXG5cIjtcbiAgICAgIGNtLnJlcGxhY2VTZWxlY3Rpb24obGluZXNlcCArIGxpbmVzZXAsIG51bGwpO1xuICAgICAgY20uZXhlY0NvbW1hbmQoXCJnb0NoYXJMZWZ0XCIpO1xuICAgICAgcmFuZ2VzID0gY20ubGlzdFNlbGVjdGlvbnMoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBsaW5lID0gcmFuZ2VzW2ldLmhlYWQubGluZTtcbiAgICAgICAgY20uaW5kZW50TGluZShsaW5lLCBudWxsLCB0cnVlKTtcbiAgICAgICAgY20uaW5kZW50TGluZShsaW5lICsgMSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBjb250cmFjdFNlbGVjdGlvbihzZWwpIHtcbiAgICB2YXIgaW52ZXJ0ZWQgPSBDb2RlTWlycm9yLmNtcFBvcyhzZWwuYW5jaG9yLCBzZWwuaGVhZCkgPiAwO1xuICAgIHJldHVybiB7YW5jaG9yOiBuZXcgUG9zKHNlbC5hbmNob3IubGluZSwgc2VsLmFuY2hvci5jaCArIChpbnZlcnRlZCA/IC0xIDogMSkpLFxuICAgICAgICAgICAgaGVhZDogbmV3IFBvcyhzZWwuaGVhZC5saW5lLCBzZWwuaGVhZC5jaCArIChpbnZlcnRlZCA/IDEgOiAtMSkpfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUNoYXIoY20sIGNoKSB7XG4gICAgdmFyIGNvbmYgPSBnZXRDb25maWcoY20pO1xuICAgIGlmICghY29uZiB8fCBjbS5nZXRPcHRpb24oXCJkaXNhYmxlSW5wdXRcIikpIHJldHVybiBDb2RlTWlycm9yLlBhc3M7XG5cbiAgICB2YXIgcGFpcnMgPSBnZXRPcHRpb24oY29uZiwgXCJwYWlyc1wiKTtcbiAgICB2YXIgcG9zID0gcGFpcnMuaW5kZXhPZihjaCk7XG4gICAgaWYgKHBvcyA9PSAtMSkgcmV0dXJuIENvZGVNaXJyb3IuUGFzcztcblxuICAgIHZhciBjbG9zZUJlZm9yZSA9IGdldE9wdGlvbihjb25mLFwiY2xvc2VCZWZvcmVcIik7XG5cbiAgICB2YXIgdHJpcGxlcyA9IGdldE9wdGlvbihjb25mLCBcInRyaXBsZXNcIik7XG5cbiAgICB2YXIgaWRlbnRpY2FsID0gcGFpcnMuY2hhckF0KHBvcyArIDEpID09IGNoO1xuICAgIHZhciByYW5nZXMgPSBjbS5saXN0U2VsZWN0aW9ucygpO1xuICAgIHZhciBvcGVuaW5nID0gcG9zICUgMiA9PSAwO1xuXG4gICAgdmFyIHR5cGU7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciByYW5nZSA9IHJhbmdlc1tpXSwgY3VyID0gcmFuZ2UuaGVhZCwgY3VyVHlwZTtcbiAgICAgIHZhciBuZXh0ID0gY20uZ2V0UmFuZ2UoY3VyLCBQb3MoY3VyLmxpbmUsIGN1ci5jaCArIDEpKTtcbiAgICAgIGlmIChvcGVuaW5nICYmICFyYW5nZS5lbXB0eSgpKSB7XG4gICAgICAgIGN1clR5cGUgPSBcInN1cnJvdW5kXCI7XG4gICAgICB9IGVsc2UgaWYgKChpZGVudGljYWwgfHwgIW9wZW5pbmcpICYmIG5leHQgPT0gY2gpIHtcbiAgICAgICAgaWYgKGlkZW50aWNhbCAmJiBzdHJpbmdTdGFydHNBZnRlcihjbSwgY3VyKSlcbiAgICAgICAgICBjdXJUeXBlID0gXCJib3RoXCI7XG4gICAgICAgIGVsc2UgaWYgKHRyaXBsZXMuaW5kZXhPZihjaCkgPj0gMCAmJiBjbS5nZXRSYW5nZShjdXIsIFBvcyhjdXIubGluZSwgY3VyLmNoICsgMykpID09IGNoICsgY2ggKyBjaClcbiAgICAgICAgICBjdXJUeXBlID0gXCJza2lwVGhyZWVcIjtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGN1clR5cGUgPSBcInNraXBcIjtcbiAgICAgIH0gZWxzZSBpZiAoaWRlbnRpY2FsICYmIGN1ci5jaCA+IDEgJiYgdHJpcGxlcy5pbmRleE9mKGNoKSA+PSAwICYmXG4gICAgICAgICAgICAgICAgIGNtLmdldFJhbmdlKFBvcyhjdXIubGluZSwgY3VyLmNoIC0gMiksIGN1cikgPT0gY2ggKyBjaCkge1xuICAgICAgICBpZiAoY3VyLmNoID4gMiAmJiAvXFxic3RyaW5nLy50ZXN0KGNtLmdldFRva2VuVHlwZUF0KFBvcyhjdXIubGluZSwgY3VyLmNoIC0gMikpKSkgcmV0dXJuIENvZGVNaXJyb3IuUGFzcztcbiAgICAgICAgY3VyVHlwZSA9IFwiYWRkRm91clwiO1xuICAgICAgfSBlbHNlIGlmIChpZGVudGljYWwpIHtcbiAgICAgICAgdmFyIHByZXYgPSBjdXIuY2ggPT0gMCA/IFwiIFwiIDogY20uZ2V0UmFuZ2UoUG9zKGN1ci5saW5lLCBjdXIuY2ggLSAxKSwgY3VyKVxuICAgICAgICBpZiAoIUNvZGVNaXJyb3IuaXNXb3JkQ2hhcihuZXh0KSAmJiBwcmV2ICE9IGNoICYmICFDb2RlTWlycm9yLmlzV29yZENoYXIocHJldikpIGN1clR5cGUgPSBcImJvdGhcIjtcbiAgICAgICAgZWxzZSByZXR1cm4gQ29kZU1pcnJvci5QYXNzO1xuICAgICAgfSBlbHNlIGlmIChvcGVuaW5nICYmIChuZXh0Lmxlbmd0aCA9PT0gMCB8fCAvXFxzLy50ZXN0KG5leHQpIHx8IGNsb3NlQmVmb3JlLmluZGV4T2YobmV4dCkgPiAtMSkpIHtcbiAgICAgICAgY3VyVHlwZSA9IFwiYm90aFwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIENvZGVNaXJyb3IuUGFzcztcbiAgICAgIH1cbiAgICAgIGlmICghdHlwZSkgdHlwZSA9IGN1clR5cGU7XG4gICAgICBlbHNlIGlmICh0eXBlICE9IGN1clR5cGUpIHJldHVybiBDb2RlTWlycm9yLlBhc3M7XG4gICAgfVxuXG4gICAgdmFyIGxlZnQgPSBwb3MgJSAyID8gcGFpcnMuY2hhckF0KHBvcyAtIDEpIDogY2g7XG4gICAgdmFyIHJpZ2h0ID0gcG9zICUgMiA/IGNoIDogcGFpcnMuY2hhckF0KHBvcyArIDEpO1xuICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0eXBlID09IFwic2tpcFwiKSB7XG4gICAgICAgIGNtLmV4ZWNDb21tYW5kKFwiZ29DaGFyUmlnaHRcIik7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJza2lwVGhyZWVcIikge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkrKylcbiAgICAgICAgICBjbS5leGVjQ29tbWFuZChcImdvQ2hhclJpZ2h0XCIpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09IFwic3Vycm91bmRcIikge1xuICAgICAgICB2YXIgc2VscyA9IGNtLmdldFNlbGVjdGlvbnMoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxzLmxlbmd0aDsgaSsrKVxuICAgICAgICAgIHNlbHNbaV0gPSBsZWZ0ICsgc2Vsc1tpXSArIHJpZ2h0O1xuICAgICAgICBjbS5yZXBsYWNlU2VsZWN0aW9ucyhzZWxzLCBcImFyb3VuZFwiKTtcbiAgICAgICAgc2VscyA9IGNtLmxpc3RTZWxlY3Rpb25zKCkuc2xpY2UoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxzLmxlbmd0aDsgaSsrKVxuICAgICAgICAgIHNlbHNbaV0gPSBjb250cmFjdFNlbGVjdGlvbihzZWxzW2ldKTtcbiAgICAgICAgY20uc2V0U2VsZWN0aW9ucyhzZWxzKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcImJvdGhcIikge1xuICAgICAgICBjbS5yZXBsYWNlU2VsZWN0aW9uKGxlZnQgKyByaWdodCwgbnVsbCk7XG4gICAgICAgIGNtLnRyaWdnZXJFbGVjdHJpYyhsZWZ0ICsgcmlnaHQpO1xuICAgICAgICBjbS5leGVjQ29tbWFuZChcImdvQ2hhckxlZnRcIik7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJhZGRGb3VyXCIpIHtcbiAgICAgICAgY20ucmVwbGFjZVNlbGVjdGlvbihsZWZ0ICsgbGVmdCArIGxlZnQgKyBsZWZ0LCBcImJlZm9yZVwiKTtcbiAgICAgICAgY20uZXhlY0NvbW1hbmQoXCJnb0NoYXJSaWdodFwiKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNoYXJzQXJvdW5kKGNtLCBwb3MpIHtcbiAgICB2YXIgc3RyID0gY20uZ2V0UmFuZ2UoUG9zKHBvcy5saW5lLCBwb3MuY2ggLSAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zKHBvcy5saW5lLCBwb3MuY2ggKyAxKSk7XG4gICAgcmV0dXJuIHN0ci5sZW5ndGggPT0gMiA/IHN0ciA6IG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBzdHJpbmdTdGFydHNBZnRlcihjbSwgcG9zKSB7XG4gICAgdmFyIHRva2VuID0gY20uZ2V0VG9rZW5BdChQb3MocG9zLmxpbmUsIHBvcy5jaCArIDEpKVxuICAgIHJldHVybiAvXFxic3RyaW5nLy50ZXN0KHRva2VuLnR5cGUpICYmIHRva2VuLnN0YXJ0ID09IHBvcy5jaCAmJlxuICAgICAgKHBvcy5jaCA9PSAwIHx8ICEvXFxic3RyaW5nLy50ZXN0KGNtLmdldFRva2VuVHlwZUF0KHBvcykpKVxuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0Esd0hBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU9BO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/codemirror/addon/edit/closebrackets.js\n");
132
133/***/ }),
134
135/***/ "../../../node_modules/codemirror/addon/edit/matchbrackets.js":
136/*!***********************************************************************************************!*\
137 !*** /home/runner/work/graphiql/graphiql/node_modules/codemirror/addon/edit/matchbrackets.js ***!
138 \***********************************************************************************************/
139/*! no static exports found */
140/***/ (function(module, exports, __webpack_require__) {
141
142eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n // CodeMirror, copyright (c) by Marijn Haverbeke and others\n // Distributed under an MIT license: https://codemirror.net/LICENSE\n (function (mod) {\n if (true) // CommonJS\n mod(__webpack_require__(/*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));else {}\n })(function (CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) && (document.documentMode == null || document.documentMode < 8);\n var Pos = CodeMirror.Pos;\n var matching = {\n \"(\": \")>\",\n \")\": \"(<\",\n \"[\": \"]>\",\n \"]\": \"[<\",\n \"{\": \"}>\",\n \"}\": \"{<\",\n \"<\": \">>\",\n \">\": \"<<\"\n };\n\n function bracketRegex(config) {\n return config && config.bracketRegex || /[(){}[\\]]/;\n }\n\n function findMatchingBracket(cm, where, config) {\n var line = cm.getLineHandle(where.line),\n pos = where.ch - 1;\n var afterCursor = config && config.afterCursor;\n if (afterCursor == null) afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className);\n var re = bracketRegex(config); // A cursor is defined as between two characters, but in in vim command mode\n // (i.e. not insert mode), the cursor is visually represented as a\n // highlighted box on top of the 2nd character. Otherwise, we allow matches\n // from before or after the cursor.\n\n var match = !afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)] || re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (config && config.strict && dir > 0 != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style || null, config);\n if (found == null) return null;\n return {\n from: Pos(where.line, pos),\n to: found && found.pos,\n match: found && found.ch == match.charAt(0),\n forward: dir > 0\n };\n } // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n\n\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = config && config.maxScanLineLength || 10000;\n var maxScanLines = config && config.maxScanLines || 1000;\n var stack = [];\n var re = bracketRegex(config);\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1) : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1,\n end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n\n if (re.test(ch) && (style === undefined || cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) {\n var match = matching[ch];\n if (match && match.charAt(1) == \">\" == dir > 0) stack.push(ch);else if (!stack.length) return {\n pos: Pos(lineNo, pos),\n ch: ch\n };else stack.pop();\n }\n }\n }\n\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000;\n var marks = [],\n ranges = cm.listSelections();\n\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n\n if (match && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {\n className: style\n }));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen) marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {\n className: style\n }));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textare whever this fires.\n if (ie_lt8 && cm.state.focused) cm.focus();\n\n var clear = function () {\n cm.operation(function () {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n\n if (autoclear) setTimeout(clear, 800);else return clear;\n }\n }\n\n function doMatchBrackets(cm) {\n cm.operation(function () {\n if (cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n\n cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function (cm, val, old) {\n function clear(cm) {\n if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n }\n\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n cm.off(\"focus\", doMatchBrackets);\n cm.off(\"blur\", clear);\n clear(cm);\n }\n\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n cm.on(\"focus\", doMatchBrackets);\n cm.on(\"blur\", clear);\n }\n });\n CodeMirror.defineExtension(\"matchBrackets\", function () {\n matchBrackets(this, true);\n });\n CodeMirror.defineExtension(\"findMatchingBracket\", function (pos, config, oldConfig) {\n // Backwards-compatibility kludge\n if (oldConfig || typeof config == \"boolean\") {\n if (!oldConfig) {\n config = config ? {\n strict: true\n } : null;\n } else {\n oldConfig.strict = config;\n config = oldConfig;\n }\n }\n\n return findMatchingBracket(this, pos, config);\n });\n CodeMirror.defineExtension(\"scanForBracket\", function (pos, dir, style, config) {\n return scanForBracket(this, pos, dir, style, config);\n });\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vZWRpdC9tYXRjaGJyYWNrZXRzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vZWRpdC9tYXRjaGJyYWNrZXRzLmpzP2E3ZWEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29kZU1pcnJvciwgY29weXJpZ2h0IChjKSBieSBNYXJpam4gSGF2ZXJiZWtlIGFuZCBvdGhlcnNcbi8vIERpc3RyaWJ1dGVkIHVuZGVyIGFuIE1JVCBsaWNlbnNlOiBodHRwczovL2NvZGVtaXJyb3IubmV0L0xJQ0VOU0VcblxuKGZ1bmN0aW9uKG1vZCkge1xuICBpZiAodHlwZW9mIGV4cG9ydHMgPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgbW9kdWxlID09IFwib2JqZWN0XCIpIC8vIENvbW1vbkpTXG4gICAgbW9kKHJlcXVpcmUoXCIuLi8uLi9saWIvY29kZW1pcnJvclwiKSk7XG4gIGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIC8vIEFNRFxuICAgIGRlZmluZShbXCIuLi8uLi9saWIvY29kZW1pcnJvclwiXSwgbW9kKTtcbiAgZWxzZSAvLyBQbGFpbiBicm93c2VyIGVudlxuICAgIG1vZChDb2RlTWlycm9yKTtcbn0pKGZ1bmN0aW9uKENvZGVNaXJyb3IpIHtcbiAgdmFyIGllX2x0OCA9IC9NU0lFIFxcZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJlxuICAgIChkb2N1bWVudC5kb2N1bWVudE1vZGUgPT0gbnVsbCB8fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPCA4KTtcblxuICB2YXIgUG9zID0gQ29kZU1pcnJvci5Qb3M7XG5cbiAgdmFyIG1hdGNoaW5nID0ge1wiKFwiOiBcIik+XCIsIFwiKVwiOiBcIig8XCIsIFwiW1wiOiBcIl0+XCIsIFwiXVwiOiBcIls8XCIsIFwie1wiOiBcIn0+XCIsIFwifVwiOiBcIns8XCIsIFwiPFwiOiBcIj4+XCIsIFwiPlwiOiBcIjw8XCJ9O1xuXG4gIGZ1bmN0aW9uIGJyYWNrZXRSZWdleChjb25maWcpIHtcbiAgICByZXR1cm4gY29uZmlnICYmIGNvbmZpZy5icmFja2V0UmVnZXggfHwgL1soKXt9W1xcXV0vXG4gIH1cblxuICBmdW5jdGlvbiBmaW5kTWF0Y2hpbmdCcmFja2V0KGNtLCB3aGVyZSwgY29uZmlnKSB7XG4gICAgdmFyIGxpbmUgPSBjbS5nZXRMaW5lSGFuZGxlKHdoZXJlLmxpbmUpLCBwb3MgPSB3aGVyZS5jaCAtIDE7XG4gICAgdmFyIGFmdGVyQ3Vyc29yID0gY29uZmlnICYmIGNvbmZpZy5hZnRlckN1cnNvclxuICAgIGlmIChhZnRlckN1cnNvciA9PSBudWxsKVxuICAgICAgYWZ0ZXJDdXJzb3IgPSAvKF58ICljbS1mYXQtY3Vyc29yKCR8ICkvLnRlc3QoY20uZ2V0V3JhcHBlckVsZW1lbnQoKS5jbGFzc05hbWUpXG4gICAgdmFyIHJlID0gYnJhY2tldFJlZ2V4KGNvbmZpZylcblxuICAgIC8vIEEgY3Vyc29yIGlzIGRlZmluZWQgYXMgYmV0d2VlbiB0d28gY2hhcmFjdGVycywgYnV0IGluIGluIHZpbSBjb21tYW5kIG1vZGVcbiAgICAvLyAoaS5lLiBub3QgaW5zZXJ0IG1vZGUpLCB0aGUgY3Vyc29yIGlzIHZpc3VhbGx5IHJlcHJlc2VudGVkIGFzIGFcbiAgICAvLyBoaWdobGlnaHRlZCBib3ggb24gdG9wIG9mIHRoZSAybmQgY2hhcmFjdGVyLiBPdGhlcndpc2UsIHdlIGFsbG93IG1hdGNoZXNcbiAgICAvLyBmcm9tIGJlZm9yZSBvciBhZnRlciB0aGUgY3Vyc29yLlxuICAgIHZhciBtYXRjaCA9ICghYWZ0ZXJDdXJzb3IgJiYgcG9zID49IDAgJiYgcmUudGVzdChsaW5lLnRleHQuY2hhckF0KHBvcykpICYmIG1hdGNoaW5nW2xpbmUudGV4dC5jaGFyQXQocG9zKV0pIHx8XG4gICAgICAgIHJlLnRlc3QobGluZS50ZXh0LmNoYXJBdChwb3MgKyAxKSkgJiYgbWF0Y2hpbmdbbGluZS50ZXh0LmNoYXJBdCgrK3BvcyldO1xuICAgIGlmICghbWF0Y2gpIHJldHVybiBudWxsO1xuICAgIHZhciBkaXIgPSBtYXRjaC5jaGFyQXQoMSkgPT0gXCI+XCIgPyAxIDogLTE7XG4gICAgaWYgKGNvbmZpZyAmJiBjb25maWcuc3RyaWN0ICYmIChkaXIgPiAwKSAhPSAocG9zID09IHdoZXJlLmNoKSkgcmV0dXJuIG51bGw7XG4gICAgdmFyIHN0eWxlID0gY20uZ2V0VG9rZW5UeXBlQXQoUG9zKHdoZXJlLmxpbmUsIHBvcyArIDEpKTtcblxuICAgIHZhciBmb3VuZCA9IHNjYW5Gb3JCcmFja2V0KGNtLCBQb3Mod2hlcmUubGluZSwgcG9zICsgKGRpciA+IDAgPyAxIDogMCkpLCBkaXIsIHN0eWxlIHx8IG51bGwsIGNvbmZpZyk7XG4gICAgaWYgKGZvdW5kID09IG51bGwpIHJldHVybiBudWxsO1xuICAgIHJldHVybiB7ZnJvbTogUG9zKHdoZXJlLmxpbmUsIHBvcyksIHRvOiBmb3VuZCAmJiBmb3VuZC5wb3MsXG4gICAgICAgICAgICBtYXRjaDogZm91bmQgJiYgZm91bmQuY2ggPT0gbWF0Y2guY2hhckF0KDApLCBmb3J3YXJkOiBkaXIgPiAwfTtcbiAgfVxuXG4gIC8vIGJyYWNrZXRSZWdleCBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggdHlwZSBvZiBicmFja2V0IHRvIHNjYW5cbiAgLy8gc2hvdWxkIGJlIGEgcmVnZXhwLCBlLmcuIC9bW1xcXV0vXG4gIC8vXG4gIC8vIE5vdGU6IElmIFwid2hlcmVcIiBpcyBvbiBhbiBvcGVuIGJyYWNrZXQsIHRoZW4gdGhpcyBicmFja2V0IGlzIGlnbm9yZWQuXG4gIC8vXG4gIC8vIFJldHVybnMgZmFsc2Ugd2hlbiBubyBicmFja2V0IHdhcyBmb3VuZCwgbnVsbCB3aGVuIGl0IHJlYWNoZWRcbiAgLy8gbWF4U2NhbkxpbmVzIGFuZCBnYXZlIHVwXG4gIGZ1bmN0aW9uIHNjYW5Gb3JCcmFja2V0KGNtLCB3aGVyZSwgZGlyLCBzdHlsZSwgY29uZmlnKSB7XG4gICAgdmFyIG1heFNjYW5MZW4gPSAoY29uZmlnICYmIGNvbmZpZy5tYXhTY2FuTGluZUxlbmd0aCkgfHwgMTAwMDA7XG4gICAgdmFyIG1heFNjYW5MaW5lcyA9IChjb25maWcgJiYgY29uZmlnLm1heFNjYW5MaW5lcykgfHwgMTAwMDtcblxuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciByZSA9IGJyYWNrZXRSZWdleChjb25maWcpXG4gICAgdmFyIGxpbmVFbmQgPSBkaXIgPiAwID8gTWF0aC5taW4od2hlcmUubGluZSArIG1heFNjYW5MaW5lcywgY20ubGFzdExpbmUoKSArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogTWF0aC5tYXgoY20uZmlyc3RMaW5lKCkgLSAxLCB3aGVyZS5saW5lIC0gbWF4U2NhbkxpbmVzKTtcbiAgICBmb3IgKHZhciBsaW5lTm8gPSB3aGVyZS5saW5lOyBsaW5lTm8gIT0gbGluZUVuZDsgbGluZU5vICs9IGRpcikge1xuICAgICAgdmFyIGxpbmUgPSBjbS5nZXRMaW5lKGxpbmVObyk7XG4gICAgICBpZiAoIWxpbmUpIGNvbnRpbnVlO1xuICAgICAgdmFyIHBvcyA9IGRpciA+IDAgPyAwIDogbGluZS5sZW5ndGggLSAxLCBlbmQgPSBkaXIgPiAwID8gbGluZS5sZW5ndGggOiAtMTtcbiAgICAgIGlmIChsaW5lLmxlbmd0aCA+IG1heFNjYW5MZW4pIGNvbnRpbnVlO1xuICAgICAgaWYgKGxpbmVObyA9PSB3aGVyZS5saW5lKSBwb3MgPSB3aGVyZS5jaCAtIChkaXIgPCAwID8gMSA6IDApO1xuICAgICAgZm9yICg7IHBvcyAhPSBlbmQ7IHBvcyArPSBkaXIpIHtcbiAgICAgICAgdmFyIGNoID0gbGluZS5jaGFyQXQocG9zKTtcbiAgICAgICAgaWYgKHJlLnRlc3QoY2gpICYmIChzdHlsZSA9PT0gdW5kZWZpbmVkIHx8IGNtLmdldFRva2VuVHlwZUF0KFBvcyhsaW5lTm8sIHBvcyArIDEpKSA9PSBzdHlsZSkpIHtcbiAgICAgICAgICB2YXIgbWF0Y2ggPSBtYXRjaGluZ1tjaF07XG4gICAgICAgICAgaWYgKG1hdGNoICYmIChtYXRjaC5jaGFyQXQoMSkgPT0gXCI+XCIpID09IChkaXIgPiAwKSkgc3RhY2sucHVzaChjaCk7XG4gICAgICAgICAgZWxzZSBpZiAoIXN0YWNrLmxlbmd0aCkgcmV0dXJuIHtwb3M6IFBvcyhsaW5lTm8sIHBvcyksIGNoOiBjaH07XG4gICAgICAgICAgZWxzZSBzdGFjay5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbGluZU5vIC0gZGlyID09IChkaXIgPiAwID8gY20ubGFzdExpbmUoKSA6IGNtLmZpcnN0TGluZSgpKSA/IGZhbHNlIDogbnVsbDtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1hdGNoQnJhY2tldHMoY20sIGF1dG9jbGVhciwgY29uZmlnKSB7XG4gICAgLy8gRGlzYWJsZSBicmFjZSBtYXRjaGluZyBpbiBsb25nIGxpbmVzLCBzaW5jZSBpdCdsbCBjYXVzZSBodWdlbHkgc2xvdyB1cGRhdGVzXG4gICAgdmFyIG1heEhpZ2hsaWdodExlbiA9IGNtLnN0YXRlLm1hdGNoQnJhY2tldHMubWF4SGlnaGxpZ2h0TGluZUxlbmd0aCB8fCAxMDAwO1xuICAgIHZhciBtYXJrcyA9IFtdLCByYW5nZXMgPSBjbS5saXN0U2VsZWN0aW9ucygpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbWF0Y2ggPSByYW5nZXNbaV0uZW1wdHkoKSAmJiBmaW5kTWF0Y2hpbmdCcmFja2V0KGNtLCByYW5nZXNbaV0uaGVhZCwgY29uZmlnKTtcbiAgICAgIGlmIChtYXRjaCAmJiBjbS5nZXRMaW5lKG1hdGNoLmZyb20ubGluZSkubGVuZ3RoIDw9IG1heEhpZ2hsaWdodExlbikge1xuICAgICAgICB2YXIgc3R5bGUgPSBtYXRjaC5tYXRjaCA/IFwiQ29kZU1pcnJvci1tYXRjaGluZ2JyYWNrZXRcIiA6IFwiQ29kZU1pcnJvci1ub25tYXRjaGluZ2JyYWNrZXRcIjtcbiAgICAgICAgbWFya3MucHVzaChjbS5tYXJrVGV4dChtYXRjaC5mcm9tLCBQb3MobWF0Y2guZnJvbS5saW5lLCBtYXRjaC5mcm9tLmNoICsgMSksIHtjbGFzc05hbWU6IHN0eWxlfSkpO1xuICAgICAgICBpZiAobWF0Y2gudG8gJiYgY20uZ2V0TGluZShtYXRjaC50by5saW5lKS5sZW5ndGggPD0gbWF4SGlnaGxpZ2h0TGVuKVxuICAgICAgICAgIG1hcmtzLnB1c2goY20ubWFya1RleHQobWF0Y2gudG8sIFBvcyhtYXRjaC50by5saW5lLCBtYXRjaC50by5jaCArIDEpLCB7Y2xhc3NOYW1lOiBzdHlsZX0pKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWFya3MubGVuZ3RoKSB7XG4gICAgICAvLyBLbHVkZ2UgdG8gd29yayBhcm91bmQgdGhlIElFIGJ1ZyBmcm9tIGlzc3VlICMxMTkzLCB3aGVyZSB0ZXh0XG4gICAgICAvLyBpbnB1dCBzdG9wcyBnb2luZyB0byB0aGUgdGV4dGFyZSB3aGV2ZXIgdGhpcyBmaXJlcy5cbiAgICAgIGlmIChpZV9sdDggJiYgY20uc3RhdGUuZm9jdXNlZCkgY20uZm9jdXMoKTtcblxuICAgICAgdmFyIGNsZWFyID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hcmtzLmxlbmd0aDsgaSsrKSBtYXJrc1tpXS5jbGVhcigpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICBpZiAoYXV0b2NsZWFyKSBzZXRUaW1lb3V0KGNsZWFyLCA4MDApO1xuICAgICAgZWxzZSByZXR1cm4gY2xlYXI7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZG9NYXRjaEJyYWNrZXRzKGNtKSB7XG4gICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKGNtLnN0YXRlLm1hdGNoQnJhY2tldHMuY3VycmVudGx5SGlnaGxpZ2h0ZWQpIHtcbiAgICAgICAgY20uc3RhdGUubWF0Y2hCcmFja2V0cy5jdXJyZW50bHlIaWdobGlnaHRlZCgpO1xuICAgICAgICBjbS5zdGF0ZS5tYXRjaEJyYWNrZXRzLmN1cnJlbnRseUhpZ2hsaWdodGVkID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNtLnN0YXRlLm1hdGNoQnJhY2tldHMuY3VycmVudGx5SGlnaGxpZ2h0ZWQgPSBtYXRjaEJyYWNrZXRzKGNtLCBmYWxzZSwgY20uc3RhdGUubWF0Y2hCcmFja2V0cyk7XG4gICAgfSk7XG4gIH1cblxuICBDb2RlTWlycm9yLmRlZmluZU9wdGlvbihcIm1hdGNoQnJhY2tldHNcIiwgZmFsc2UsIGZ1bmN0aW9uKGNtLCB2YWwsIG9sZCkge1xuICAgIGZ1bmN0aW9uIGNsZWFyKGNtKSB7XG4gICAgICBpZiAoY20uc3RhdGUubWF0Y2hCcmFja2V0cyAmJiBjbS5zdGF0ZS5tYXRjaEJyYWNrZXRzLmN1cnJlbnRseUhpZ2hsaWdodGVkKSB7XG4gICAgICAgIGNtLnN0YXRlLm1hdGNoQnJhY2tldHMuY3VycmVudGx5SGlnaGxpZ2h0ZWQoKTtcbiAgICAgICAgY20uc3RhdGUubWF0Y2hCcmFja2V0cy5jdXJyZW50bHlIaWdobGlnaHRlZCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9sZCAmJiBvbGQgIT0gQ29kZU1pcnJvci5Jbml0KSB7XG4gICAgICBjbS5vZmYoXCJjdXJzb3JBY3Rpdml0eVwiLCBkb01hdGNoQnJhY2tldHMpO1xuICAgICAgY20ub2ZmKFwiZm9jdXNcIiwgZG9NYXRjaEJyYWNrZXRzKVxuICAgICAgY20ub2ZmKFwiYmx1clwiLCBjbGVhcilcbiAgICAgIGNsZWFyKGNtKTtcbiAgICB9XG4gICAgaWYgKHZhbCkge1xuICAgICAgY20uc3RhdGUubWF0Y2hCcmFja2V0cyA9IHR5cGVvZiB2YWwgPT0gXCJvYmplY3RcIiA/IHZhbCA6IHt9O1xuICAgICAgY20ub24oXCJjdXJzb3JBY3Rpdml0eVwiLCBkb01hdGNoQnJhY2tldHMpO1xuICAgICAgY20ub24oXCJmb2N1c1wiLCBkb01hdGNoQnJhY2tldHMpXG4gICAgICBjbS5vbihcImJsdXJcIiwgY2xlYXIpXG4gICAgfVxuICB9KTtcblxuICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbihcIm1hdGNoQnJhY2tldHNcIiwgZnVuY3Rpb24oKSB7bWF0Y2hCcmFja2V0cyh0aGlzLCB0cnVlKTt9KTtcbiAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24oXCJmaW5kTWF0Y2hpbmdCcmFja2V0XCIsIGZ1bmN0aW9uKHBvcywgY29uZmlnLCBvbGRDb25maWcpe1xuICAgIC8vIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGtsdWRnZVxuICAgIGlmIChvbGRDb25maWcgfHwgdHlwZW9mIGNvbmZpZyA9PSBcImJvb2xlYW5cIikge1xuICAgICAgaWYgKCFvbGRDb25maWcpIHtcbiAgICAgICAgY29uZmlnID0gY29uZmlnID8ge3N0cmljdDogdHJ1ZX0gOiBudWxsXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbGRDb25maWcuc3RyaWN0ID0gY29uZmlnXG4gICAgICAgIGNvbmZpZyA9IG9sZENvbmZpZ1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmluZE1hdGNoaW5nQnJhY2tldCh0aGlzLCBwb3MsIGNvbmZpZylcbiAgfSk7XG4gIENvZGVNaXJyb3IuZGVmaW5lRXh0ZW5zaW9uKFwic2NhbkZvckJyYWNrZXRcIiwgZnVuY3Rpb24ocG9zLCBkaXIsIHN0eWxlLCBjb25maWcpe1xuICAgIHJldHVybiBzY2FuRm9yQnJhY2tldCh0aGlzLCBwb3MsIGRpciwgc3R5bGUsIGNvbmZpZyk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBLHdIQUlBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFEQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/codemirror/addon/edit/matchbrackets.js\n");
143
144/***/ }),
145
146/***/ "../../../node_modules/codemirror/addon/fold/brace-fold.js":
147/*!********************************************************************************************!*\
148 !*** /home/runner/work/graphiql/graphiql/node_modules/codemirror/addon/fold/brace-fold.js ***!
149 \********************************************************************************************/
150/*! no static exports found */
151/***/ (function(module, exports, __webpack_require__) {
152
153eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n // CodeMirror, copyright (c) by Marijn Haverbeke and others\n // Distributed under an MIT license: https://codemirror.net/LICENSE\n (function (mod) {\n if (true) // CommonJS\n mod(__webpack_require__(/*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));else {}\n })(function (CodeMirror) {\n \"use strict\";\n\n CodeMirror.registerHelper(\"fold\", \"brace\", function (cm, start) {\n var line = start.line,\n lineText = cm.getLine(line);\n var tokenType;\n\n function findOpening(openCh) {\n for (var at = start.ch, pass = 0;;) {\n var found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1);\n\n if (found == -1) {\n if (pass == 1) break;\n pass = 1;\n at = lineText.length;\n continue;\n }\n\n if (pass == 1 && found < start.ch) break;\n tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n if (!/^(comment|string)/.test(tokenType)) return found + 1;\n at = found - 1;\n }\n }\n\n var startToken = \"{\",\n endToken = \"}\",\n startCh = findOpening(\"{\");\n\n if (startCh == null) {\n startToken = \"[\", endToken = \"]\";\n startCh = findOpening(\"[\");\n }\n\n if (startCh == null) return;\n var count = 1,\n lastLine = cm.lastLine(),\n end,\n endCh;\n\n outer: for (var i = line; i <= lastLine; ++i) {\n var text = cm.getLine(i),\n pos = i == line ? startCh : 0;\n\n for (;;) {\n var nextOpen = text.indexOf(startToken, pos),\n nextClose = text.indexOf(endToken, pos);\n if (nextOpen < 0) nextOpen = text.length;\n if (nextClose < 0) nextClose = text.length;\n pos = Math.min(nextOpen, nextClose);\n if (pos == text.length) break;\n\n if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == tokenType) {\n if (pos == nextOpen) ++count;else if (! --count) {\n end = i;\n endCh = pos;\n break outer;\n }\n }\n\n ++pos;\n }\n }\n\n if (end == null || line == end) return;\n return {\n from: CodeMirror.Pos(line, startCh),\n to: CodeMirror.Pos(end, endCh)\n };\n });\n CodeMirror.registerHelper(\"fold\", \"import\", function (cm, start) {\n function hasImport(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type != \"keyword\" || start.string != \"import\") return null; // Now find closing semicolon, return its position\n\n for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) {\n var text = cm.getLine(i),\n semi = text.indexOf(\";\");\n if (semi != -1) return {\n startCh: start.end,\n end: CodeMirror.Pos(i, semi)\n };\n }\n }\n\n var startLine = start.line,\n has = hasImport(startLine),\n prev;\n if (!has || hasImport(startLine - 1) || (prev = hasImport(startLine - 2)) && prev.end.line == startLine - 1) return null;\n\n for (var end = has.end;;) {\n var next = hasImport(end.line + 1);\n if (next == null) break;\n end = next.end;\n }\n\n return {\n from: cm.clipPos(CodeMirror.Pos(startLine, has.startCh + 1)),\n to: end\n };\n });\n CodeMirror.registerHelper(\"fold\", \"include\", function (cm, start) {\n function hasInclude(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type == \"meta\" && start.string.slice(0, 8) == \"#include\") return start.start + 8;\n }\n\n var startLine = start.line,\n has = hasInclude(startLine);\n if (has == null || hasInclude(startLine - 1) != null) return null;\n\n for (var end = startLine;;) {\n var next = hasInclude(end + 1);\n if (next == null) break;\n ++end;\n }\n\n return {\n from: CodeMirror.Pos(startLine, has + 1),\n to: cm.clipPos(CodeMirror.Pos(end))\n };\n });\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vZm9sZC9icmFjZS1mb2xkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vZm9sZC9icmFjZS1mb2xkLmpzP2YzMTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29kZU1pcnJvciwgY29weXJpZ2h0IChjKSBieSBNYXJpam4gSGF2ZXJiZWtlIGFuZCBvdGhlcnNcbi8vIERpc3RyaWJ1dGVkIHVuZGVyIGFuIE1JVCBsaWNlbnNlOiBodHRwczovL2NvZGVtaXJyb3IubmV0L0xJQ0VOU0VcblxuKGZ1bmN0aW9uKG1vZCkge1xuICBpZiAodHlwZW9mIGV4cG9ydHMgPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgbW9kdWxlID09IFwib2JqZWN0XCIpIC8vIENvbW1vbkpTXG4gICAgbW9kKHJlcXVpcmUoXCIuLi8uLi9saWIvY29kZW1pcnJvclwiKSk7XG4gIGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIC8vIEFNRFxuICAgIGRlZmluZShbXCIuLi8uLi9saWIvY29kZW1pcnJvclwiXSwgbW9kKTtcbiAgZWxzZSAvLyBQbGFpbiBicm93c2VyIGVudlxuICAgIG1vZChDb2RlTWlycm9yKTtcbn0pKGZ1bmN0aW9uKENvZGVNaXJyb3IpIHtcblwidXNlIHN0cmljdFwiO1xuXG5Db2RlTWlycm9yLnJlZ2lzdGVySGVscGVyKFwiZm9sZFwiLCBcImJyYWNlXCIsIGZ1bmN0aW9uKGNtLCBzdGFydCkge1xuICB2YXIgbGluZSA9IHN0YXJ0LmxpbmUsIGxpbmVUZXh0ID0gY20uZ2V0TGluZShsaW5lKTtcbiAgdmFyIHRva2VuVHlwZTtcblxuICBmdW5jdGlvbiBmaW5kT3BlbmluZyhvcGVuQ2gpIHtcbiAgICBmb3IgKHZhciBhdCA9IHN0YXJ0LmNoLCBwYXNzID0gMDs7KSB7XG4gICAgICB2YXIgZm91bmQgPSBhdCA8PSAwID8gLTEgOiBsaW5lVGV4dC5sYXN0SW5kZXhPZihvcGVuQ2gsIGF0IC0gMSk7XG4gICAgICBpZiAoZm91bmQgPT0gLTEpIHtcbiAgICAgICAgaWYgKHBhc3MgPT0gMSkgYnJlYWs7XG4gICAgICAgIHBhc3MgPSAxO1xuICAgICAgICBhdCA9IGxpbmVUZXh0Lmxlbmd0aDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAocGFzcyA9PSAxICYmIGZvdW5kIDwgc3RhcnQuY2gpIGJyZWFrO1xuICAgICAgdG9rZW5UeXBlID0gY20uZ2V0VG9rZW5UeXBlQXQoQ29kZU1pcnJvci5Qb3MobGluZSwgZm91bmQgKyAxKSk7XG4gICAgICBpZiAoIS9eKGNvbW1lbnR8c3RyaW5nKS8udGVzdCh0b2tlblR5cGUpKSByZXR1cm4gZm91bmQgKyAxO1xuICAgICAgYXQgPSBmb3VuZCAtIDE7XG4gICAgfVxuICB9XG5cbiAgdmFyIHN0YXJ0VG9rZW4gPSBcIntcIiwgZW5kVG9rZW4gPSBcIn1cIiwgc3RhcnRDaCA9IGZpbmRPcGVuaW5nKFwie1wiKTtcbiAgaWYgKHN0YXJ0Q2ggPT0gbnVsbCkge1xuICAgIHN0YXJ0VG9rZW4gPSBcIltcIiwgZW5kVG9rZW4gPSBcIl1cIjtcbiAgICBzdGFydENoID0gZmluZE9wZW5pbmcoXCJbXCIpO1xuICB9XG5cbiAgaWYgKHN0YXJ0Q2ggPT0gbnVsbCkgcmV0dXJuO1xuICB2YXIgY291bnQgPSAxLCBsYXN0TGluZSA9IGNtLmxhc3RMaW5lKCksIGVuZCwgZW5kQ2g7XG4gIG91dGVyOiBmb3IgKHZhciBpID0gbGluZTsgaSA8PSBsYXN0TGluZTsgKytpKSB7XG4gICAgdmFyIHRleHQgPSBjbS5nZXRMaW5lKGkpLCBwb3MgPSBpID09IGxpbmUgPyBzdGFydENoIDogMDtcbiAgICBmb3IgKDs7KSB7XG4gICAgICB2YXIgbmV4dE9wZW4gPSB0ZXh0LmluZGV4T2Yoc3RhcnRUb2tlbiwgcG9zKSwgbmV4dENsb3NlID0gdGV4dC5pbmRleE9mKGVuZFRva2VuLCBwb3MpO1xuICAgICAgaWYgKG5leHRPcGVuIDwgMCkgbmV4dE9wZW4gPSB0ZXh0Lmxlbmd0aDtcbiAgICAgIGlmIChuZXh0Q2xvc2UgPCAwKSBuZXh0Q2xvc2UgPSB0ZXh0Lmxlbmd0aDtcbiAgICAgIHBvcyA9IE1hdGgubWluKG5leHRPcGVuLCBuZXh0Q2xvc2UpO1xuICAgICAgaWYgKHBvcyA9PSB0ZXh0Lmxlbmd0aCkgYnJlYWs7XG4gICAgICBpZiAoY20uZ2V0VG9rZW5UeXBlQXQoQ29kZU1pcnJvci5Qb3MoaSwgcG9zICsgMSkpID09IHRva2VuVHlwZSkge1xuICAgICAgICBpZiAocG9zID09IG5leHRPcGVuKSArK2NvdW50O1xuICAgICAgICBlbHNlIGlmICghLS1jb3VudCkgeyBlbmQgPSBpOyBlbmRDaCA9IHBvczsgYnJlYWsgb3V0ZXI7IH1cbiAgICAgIH1cbiAgICAgICsrcG9zO1xuICAgIH1cbiAgfVxuICBpZiAoZW5kID09IG51bGwgfHwgbGluZSA9PSBlbmQpIHJldHVybjtcbiAgcmV0dXJuIHtmcm9tOiBDb2RlTWlycm9yLlBvcyhsaW5lLCBzdGFydENoKSxcbiAgICAgICAgICB0bzogQ29kZU1pcnJvci5Qb3MoZW5kLCBlbmRDaCl9O1xufSk7XG5cbkNvZGVNaXJyb3IucmVnaXN0ZXJIZWxwZXIoXCJmb2xkXCIsIFwiaW1wb3J0XCIsIGZ1bmN0aW9uKGNtLCBzdGFydCkge1xuICBmdW5jdGlvbiBoYXNJbXBvcnQobGluZSkge1xuICAgIGlmIChsaW5lIDwgY20uZmlyc3RMaW5lKCkgfHwgbGluZSA+IGNtLmxhc3RMaW5lKCkpIHJldHVybiBudWxsO1xuICAgIHZhciBzdGFydCA9IGNtLmdldFRva2VuQXQoQ29kZU1pcnJvci5Qb3MobGluZSwgMSkpO1xuICAgIGlmICghL1xcUy8udGVzdChzdGFydC5zdHJpbmcpKSBzdGFydCA9IGNtLmdldFRva2VuQXQoQ29kZU1pcnJvci5Qb3MobGluZSwgc3RhcnQuZW5kICsgMSkpO1xuICAgIGlmIChzdGFydC50eXBlICE9IFwia2V5d29yZFwiIHx8IHN0YXJ0LnN0cmluZyAhPSBcImltcG9ydFwiKSByZXR1cm4gbnVsbDtcbiAgICAvLyBOb3cgZmluZCBjbG9zaW5nIHNlbWljb2xvbiwgcmV0dXJuIGl0cyBwb3NpdGlvblxuICAgIGZvciAodmFyIGkgPSBsaW5lLCBlID0gTWF0aC5taW4oY20ubGFzdExpbmUoKSwgbGluZSArIDEwKTsgaSA8PSBlOyArK2kpIHtcbiAgICAgIHZhciB0ZXh0ID0gY20uZ2V0TGluZShpKSwgc2VtaSA9IHRleHQuaW5kZXhPZihcIjtcIik7XG4gICAgICBpZiAoc2VtaSAhPSAtMSkgcmV0dXJuIHtzdGFydENoOiBzdGFydC5lbmQsIGVuZDogQ29kZU1pcnJvci5Qb3MoaSwgc2VtaSl9O1xuICAgIH1cbiAgfVxuXG4gIHZhciBzdGFydExpbmUgPSBzdGFydC5saW5lLCBoYXMgPSBoYXNJbXBvcnQoc3RhcnRMaW5lKSwgcHJldjtcbiAgaWYgKCFoYXMgfHwgaGFzSW1wb3J0KHN0YXJ0TGluZSAtIDEpIHx8ICgocHJldiA9IGhhc0ltcG9ydChzdGFydExpbmUgLSAyKSkgJiYgcHJldi5lbmQubGluZSA9PSBzdGFydExpbmUgLSAxKSlcbiAgICByZXR1cm4gbnVsbDtcbiAgZm9yICh2YXIgZW5kID0gaGFzLmVuZDs7KSB7XG4gICAgdmFyIG5leHQgPSBoYXNJbXBvcnQoZW5kLmxpbmUgKyAxKTtcbiAgICBpZiAobmV4dCA9PSBudWxsKSBicmVhaztcbiAgICBlbmQgPSBuZXh0LmVuZDtcbiAgfVxuICByZXR1cm4ge2Zyb206IGNtLmNsaXBQb3MoQ29kZU1pcnJvci5Qb3Moc3RhcnRMaW5lLCBoYXMuc3RhcnRDaCArIDEpKSwgdG86IGVuZH07XG59KTtcblxuQ29kZU1pcnJvci5yZWdpc3RlckhlbHBlcihcImZvbGRcIiwgXCJpbmNsdWRlXCIsIGZ1bmN0aW9uKGNtLCBzdGFydCkge1xuICBmdW5jdGlvbiBoYXNJbmNsdWRlKGxpbmUpIHtcbiAgICBpZiAobGluZSA8IGNtLmZpcnN0TGluZSgpIHx8IGxpbmUgPiBjbS5sYXN0TGluZSgpKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgc3RhcnQgPSBjbS5nZXRUb2tlbkF0KENvZGVNaXJyb3IuUG9zKGxpbmUsIDEpKTtcbiAgICBpZiAoIS9cXFMvLnRlc3Qoc3RhcnQuc3RyaW5nKSkgc3RhcnQgPSBjbS5nZXRUb2tlbkF0KENvZGVNaXJyb3IuUG9zKGxpbmUsIHN0YXJ0LmVuZCArIDEpKTtcbiAgICBpZiAoc3RhcnQudHlwZSA9PSBcIm1ldGFcIiAmJiBzdGFydC5zdHJpbmcuc2xpY2UoMCwgOCkgPT0gXCIjaW5jbHVkZVwiKSByZXR1cm4gc3RhcnQuc3RhcnQgKyA4O1xuICB9XG5cbiAgdmFyIHN0YXJ0TGluZSA9IHN0YXJ0LmxpbmUsIGhhcyA9IGhhc0luY2x1ZGUoc3RhcnRMaW5lKTtcbiAgaWYgKGhhcyA9PSBudWxsIHx8IGhhc0luY2x1ZGUoc3RhcnRMaW5lIC0gMSkgIT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gIGZvciAodmFyIGVuZCA9IHN0YXJ0TGluZTs7KSB7XG4gICAgdmFyIG5leHQgPSBoYXNJbmNsdWRlKGVuZCArIDEpO1xuICAgIGlmIChuZXh0ID09IG51bGwpIGJyZWFrO1xuICAgICsrZW5kO1xuICB9XG4gIHJldHVybiB7ZnJvbTogQ29kZU1pcnJvci5Qb3Moc3RhcnRMaW5lLCBoYXMgKyAxKSxcbiAgICAgICAgICB0bzogY20uY2xpcFBvcyhDb2RlTWlycm9yLlBvcyhlbmQpKX07XG59KTtcblxufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBLHdIQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFFQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/codemirror/addon/fold/brace-fold.js\n");
154
155/***/ }),
156
157/***/ "../../../node_modules/codemirror/addon/fold/foldcode.js":
158/*!******************************************************************************************!*\
159 !*** /home/runner/work/graphiql/graphiql/node_modules/codemirror/addon/fold/foldcode.js ***!
160 \******************************************************************************************/
161/*! no static exports found */
162/***/ (function(module, exports, __webpack_require__) {
163
164eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n // CodeMirror, copyright (c) by Marijn Haverbeke and others\n // Distributed under an MIT license: https://codemirror.net/LICENSE\n (function (mod) {\n if (true) // CommonJS\n mod(__webpack_require__(/*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));else {}\n })(function (CodeMirror) {\n \"use strict\";\n\n function doFold(cm, pos, options, force) {\n if (options && options.call) {\n var finder = options;\n options = null;\n } else {\n var finder = getOption(cm, options, \"rangeFinder\");\n }\n\n if (typeof pos == \"number\") pos = CodeMirror.Pos(pos, 0);\n var minSize = getOption(cm, options, \"minFoldSize\");\n\n function getRange(allowFolded) {\n var range = finder(cm, pos);\n if (!range || range.to.line - range.from.line < minSize) return null;\n var marks = cm.findMarksAt(range.from);\n\n for (var i = 0; i < marks.length; ++i) {\n if (marks[i].__isFold && force !== \"fold\") {\n if (!allowFolded) return null;\n range.cleared = true;\n marks[i].clear();\n }\n }\n\n return range;\n }\n\n var range = getRange(true);\n if (getOption(cm, options, \"scanUp\")) while (!range && pos.line > cm.firstLine()) {\n pos = CodeMirror.Pos(pos.line - 1, 0);\n range = getRange(false);\n }\n if (!range || range.cleared || force === \"unfold\") return;\n var myWidget = makeWidget(cm, options, range);\n CodeMirror.on(myWidget, \"mousedown\", function (e) {\n myRange.clear();\n CodeMirror.e_preventDefault(e);\n });\n var myRange = cm.markText(range.from, range.to, {\n replacedWith: myWidget,\n clearOnEnter: getOption(cm, options, \"clearOnEnter\"),\n __isFold: true\n });\n myRange.on(\"clear\", function (from, to) {\n CodeMirror.signal(cm, \"unfold\", cm, from, to);\n });\n CodeMirror.signal(cm, \"fold\", cm, range.from, range.to);\n }\n\n function makeWidget(cm, options, range) {\n var widget = getOption(cm, options, \"widget\");\n\n if (typeof widget == \"function\") {\n widget = widget(range.from, range.to);\n }\n\n if (typeof widget == \"string\") {\n var text = document.createTextNode(widget);\n widget = document.createElement(\"span\");\n widget.appendChild(text);\n widget.className = \"CodeMirror-foldmarker\";\n } else if (widget) {\n widget = widget.cloneNode(true);\n }\n\n return widget;\n } // Clumsy backwards-compatible interface\n\n\n CodeMirror.newFoldFunction = function (rangeFinder, widget) {\n return function (cm, pos) {\n doFold(cm, pos, {\n rangeFinder: rangeFinder,\n widget: widget\n });\n };\n }; // New-style interface\n\n\n CodeMirror.defineExtension(\"foldCode\", function (pos, options, force) {\n doFold(this, pos, options, force);\n });\n CodeMirror.defineExtension(\"isFolded\", function (pos) {\n var marks = this.findMarksAt(pos);\n\n for (var i = 0; i < marks.length; ++i) if (marks[i].__isFold) return true;\n });\n\n CodeMirror.commands.toggleFold = function (cm) {\n cm.foldCode(cm.getCursor());\n };\n\n CodeMirror.commands.fold = function (cm) {\n cm.foldCode(cm.getCursor(), null, \"fold\");\n };\n\n CodeMirror.commands.unfold = function (cm) {\n cm.foldCode(cm.getCursor(), null, \"unfold\");\n };\n\n CodeMirror.commands.foldAll = function (cm) {\n cm.operation(function () {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++) cm.foldCode(CodeMirror.Pos(i, 0), null, \"fold\");\n });\n };\n\n CodeMirror.commands.unfoldAll = function (cm) {\n cm.operation(function () {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++) cm.foldCode(CodeMirror.Pos(i, 0), null, \"unfold\");\n });\n };\n\n CodeMirror.registerHelper(\"fold\", \"combine\", function () {\n var funcs = Array.prototype.slice.call(arguments, 0);\n return function (cm, start) {\n for (var i = 0; i < funcs.length; ++i) {\n var found = funcs[i](cm, start);\n if (found) return found;\n }\n };\n });\n CodeMirror.registerHelper(\"fold\", \"auto\", function (cm, start) {\n var helpers = cm.getHelpers(start, \"fold\");\n\n for (var i = 0; i < helpers.length; i++) {\n var cur = helpers[i](cm, start);\n if (cur) return cur;\n }\n });\n var defaultOptions = {\n rangeFinder: CodeMirror.fold.auto,\n widget: \"\\u2194\",\n minFoldSize: 0,\n scanUp: false,\n clearOnEnter: true\n };\n CodeMirror.defineOption(\"foldOptions\", null);\n\n function getOption(cm, options, name) {\n if (options && options[name] !== undefined) return options[name];\n var editorOptions = cm.options.foldOptions;\n if (editorOptions && editorOptions[name] !== undefined) return editorOptions[name];\n return defaultOptions[name];\n }\n\n CodeMirror.defineExtension(\"foldOption\", function (options, name) {\n return getOption(this, options, name);\n });\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vZm9sZC9mb2xkY29kZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9jb2RlbWlycm9yL2FkZG9uL2ZvbGQvZm9sZGNvZGUuanM/ZDNlMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb2RlTWlycm9yLCBjb3B5cmlnaHQgKGMpIGJ5IE1hcmlqbiBIYXZlcmJla2UgYW5kIG90aGVyc1xuLy8gRGlzdHJpYnV0ZWQgdW5kZXIgYW4gTUlUIGxpY2Vuc2U6IGh0dHBzOi8vY29kZW1pcnJvci5uZXQvTElDRU5TRVxuXG4oZnVuY3Rpb24obW9kKSB7XG4gIGlmICh0eXBlb2YgZXhwb3J0cyA9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBtb2R1bGUgPT0gXCJvYmplY3RcIikgLy8gQ29tbW9uSlNcbiAgICBtb2QocmVxdWlyZShcIi4uLy4uL2xpYi9jb2RlbWlycm9yXCIpKTtcbiAgZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkgLy8gQU1EXG4gICAgZGVmaW5lKFtcIi4uLy4uL2xpYi9jb2RlbWlycm9yXCJdLCBtb2QpO1xuICBlbHNlIC8vIFBsYWluIGJyb3dzZXIgZW52XG4gICAgbW9kKENvZGVNaXJyb3IpO1xufSkoZnVuY3Rpb24oQ29kZU1pcnJvcikge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICBmdW5jdGlvbiBkb0ZvbGQoY20sIHBvcywgb3B0aW9ucywgZm9yY2UpIHtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmNhbGwpIHtcbiAgICAgIHZhciBmaW5kZXIgPSBvcHRpb25zO1xuICAgICAgb3B0aW9ucyA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBmaW5kZXIgPSBnZXRPcHRpb24oY20sIG9wdGlvbnMsIFwicmFuZ2VGaW5kZXJcIik7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcG9zID09IFwibnVtYmVyXCIpIHBvcyA9IENvZGVNaXJyb3IuUG9zKHBvcywgMCk7XG4gICAgdmFyIG1pblNpemUgPSBnZXRPcHRpb24oY20sIG9wdGlvbnMsIFwibWluRm9sZFNpemVcIik7XG5cbiAgICBmdW5jdGlvbiBnZXRSYW5nZShhbGxvd0ZvbGRlZCkge1xuICAgICAgdmFyIHJhbmdlID0gZmluZGVyKGNtLCBwb3MpO1xuICAgICAgaWYgKCFyYW5nZSB8fCByYW5nZS50by5saW5lIC0gcmFuZ2UuZnJvbS5saW5lIDwgbWluU2l6ZSkgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgbWFya3MgPSBjbS5maW5kTWFya3NBdChyYW5nZS5mcm9tKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFya3MubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKG1hcmtzW2ldLl9faXNGb2xkICYmIGZvcmNlICE9PSBcImZvbGRcIikge1xuICAgICAgICAgIGlmICghYWxsb3dGb2xkZWQpIHJldHVybiBudWxsO1xuICAgICAgICAgIHJhbmdlLmNsZWFyZWQgPSB0cnVlO1xuICAgICAgICAgIG1hcmtzW2ldLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByYW5nZTtcbiAgICB9XG5cbiAgICB2YXIgcmFuZ2UgPSBnZXRSYW5nZSh0cnVlKTtcbiAgICBpZiAoZ2V0T3B0aW9uKGNtLCBvcHRpb25zLCBcInNjYW5VcFwiKSkgd2hpbGUgKCFyYW5nZSAmJiBwb3MubGluZSA+IGNtLmZpcnN0TGluZSgpKSB7XG4gICAgICBwb3MgPSBDb2RlTWlycm9yLlBvcyhwb3MubGluZSAtIDEsIDApO1xuICAgICAgcmFuZ2UgPSBnZXRSYW5nZShmYWxzZSk7XG4gICAgfVxuICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UuY2xlYXJlZCB8fCBmb3JjZSA9PT0gXCJ1bmZvbGRcIikgcmV0dXJuO1xuXG4gICAgdmFyIG15V2lkZ2V0ID0gbWFrZVdpZGdldChjbSwgb3B0aW9ucywgcmFuZ2UpO1xuICAgIENvZGVNaXJyb3Iub24obXlXaWRnZXQsIFwibW91c2Vkb3duXCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgIG15UmFuZ2UuY2xlYXIoKTtcbiAgICAgIENvZGVNaXJyb3IuZV9wcmV2ZW50RGVmYXVsdChlKTtcbiAgICB9KTtcbiAgICB2YXIgbXlSYW5nZSA9IGNtLm1hcmtUZXh0KHJhbmdlLmZyb20sIHJhbmdlLnRvLCB7XG4gICAgICByZXBsYWNlZFdpdGg6IG15V2lkZ2V0LFxuICAgICAgY2xlYXJPbkVudGVyOiBnZXRPcHRpb24oY20sIG9wdGlvbnMsIFwiY2xlYXJPbkVudGVyXCIpLFxuICAgICAgX19pc0ZvbGQ6IHRydWVcbiAgICB9KTtcbiAgICBteVJhbmdlLm9uKFwiY2xlYXJcIiwgZnVuY3Rpb24oZnJvbSwgdG8pIHtcbiAgICAgIENvZGVNaXJyb3Iuc2lnbmFsKGNtLCBcInVuZm9sZFwiLCBjbSwgZnJvbSwgdG8pO1xuICAgIH0pO1xuICAgIENvZGVNaXJyb3Iuc2lnbmFsKGNtLCBcImZvbGRcIiwgY20sIHJhbmdlLmZyb20sIHJhbmdlLnRvKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1ha2VXaWRnZXQoY20sIG9wdGlvbnMsIHJhbmdlKSB7XG4gICAgdmFyIHdpZGdldCA9IGdldE9wdGlvbihjbSwgb3B0aW9ucywgXCJ3aWRnZXRcIik7XG5cbiAgICBpZiAodHlwZW9mIHdpZGdldCA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHdpZGdldCA9IHdpZGdldChyYW5nZS5mcm9tLCByYW5nZS50byk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB3aWRnZXQgPT0gXCJzdHJpbmdcIikge1xuICAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh3aWRnZXQpO1xuICAgICAgd2lkZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgICB3aWRnZXQuYXBwZW5kQ2hpbGQodGV4dCk7XG4gICAgICB3aWRnZXQuY2xhc3NOYW1lID0gXCJDb2RlTWlycm9yLWZvbGRtYXJrZXJcIjtcbiAgICB9IGVsc2UgaWYgKHdpZGdldCkge1xuICAgICAgd2lkZ2V0ID0gd2lkZ2V0LmNsb25lTm9kZSh0cnVlKVxuICAgIH1cbiAgICByZXR1cm4gd2lkZ2V0O1xuICB9XG5cbiAgLy8gQ2x1bXN5IGJhY2t3YXJkcy1jb21wYXRpYmxlIGludGVyZmFjZVxuICBDb2RlTWlycm9yLm5ld0ZvbGRGdW5jdGlvbiA9IGZ1bmN0aW9uKHJhbmdlRmluZGVyLCB3aWRnZXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oY20sIHBvcykgeyBkb0ZvbGQoY20sIHBvcywge3JhbmdlRmluZGVyOiByYW5nZUZpbmRlciwgd2lkZ2V0OiB3aWRnZXR9KTsgfTtcbiAgfTtcblxuICAvLyBOZXctc3R5bGUgaW50ZXJmYWNlXG4gIENvZGVNaXJyb3IuZGVmaW5lRXh0ZW5zaW9uKFwiZm9sZENvZGVcIiwgZnVuY3Rpb24ocG9zLCBvcHRpb25zLCBmb3JjZSkge1xuICAgIGRvRm9sZCh0aGlzLCBwb3MsIG9wdGlvbnMsIGZvcmNlKTtcbiAgfSk7XG5cbiAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24oXCJpc0ZvbGRlZFwiLCBmdW5jdGlvbihwb3MpIHtcbiAgICB2YXIgbWFya3MgPSB0aGlzLmZpbmRNYXJrc0F0KHBvcyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXJrcy5sZW5ndGg7ICsraSlcbiAgICAgIGlmIChtYXJrc1tpXS5fX2lzRm9sZCkgcmV0dXJuIHRydWU7XG4gIH0pO1xuXG4gIENvZGVNaXJyb3IuY29tbWFuZHMudG9nZ2xlRm9sZCA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgY20uZm9sZENvZGUoY20uZ2V0Q3Vyc29yKCkpO1xuICB9O1xuICBDb2RlTWlycm9yLmNvbW1hbmRzLmZvbGQgPSBmdW5jdGlvbihjbSkge1xuICAgIGNtLmZvbGRDb2RlKGNtLmdldEN1cnNvcigpLCBudWxsLCBcImZvbGRcIik7XG4gIH07XG4gIENvZGVNaXJyb3IuY29tbWFuZHMudW5mb2xkID0gZnVuY3Rpb24oY20pIHtcbiAgICBjbS5mb2xkQ29kZShjbS5nZXRDdXJzb3IoKSwgbnVsbCwgXCJ1bmZvbGRcIik7XG4gIH07XG4gIENvZGVNaXJyb3IuY29tbWFuZHMuZm9sZEFsbCA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgZm9yICh2YXIgaSA9IGNtLmZpcnN0TGluZSgpLCBlID0gY20ubGFzdExpbmUoKTsgaSA8PSBlOyBpKyspXG4gICAgICAgIGNtLmZvbGRDb2RlKENvZGVNaXJyb3IuUG9zKGksIDApLCBudWxsLCBcImZvbGRcIik7XG4gICAgfSk7XG4gIH07XG4gIENvZGVNaXJyb3IuY29tbWFuZHMudW5mb2xkQWxsID0gZnVuY3Rpb24oY20pIHtcbiAgICBjbS5vcGVyYXRpb24oZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciBpID0gY20uZmlyc3RMaW5lKCksIGUgPSBjbS5sYXN0TGluZSgpOyBpIDw9IGU7IGkrKylcbiAgICAgICAgY20uZm9sZENvZGUoQ29kZU1pcnJvci5Qb3MoaSwgMCksIG51bGwsIFwidW5mb2xkXCIpO1xuICAgIH0pO1xuICB9O1xuXG4gIENvZGVNaXJyb3IucmVnaXN0ZXJIZWxwZXIoXCJmb2xkXCIsIFwiY29tYmluZVwiLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgZnVuY3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICAgIHJldHVybiBmdW5jdGlvbihjbSwgc3RhcnQpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnVuY3MubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGZvdW5kID0gZnVuY3NbaV0oY20sIHN0YXJ0KTtcbiAgICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG5cbiAgQ29kZU1pcnJvci5yZWdpc3RlckhlbHBlcihcImZvbGRcIiwgXCJhdXRvXCIsIGZ1bmN0aW9uKGNtLCBzdGFydCkge1xuICAgIHZhciBoZWxwZXJzID0gY20uZ2V0SGVscGVycyhzdGFydCwgXCJmb2xkXCIpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGVscGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGN1ciA9IGhlbHBlcnNbaV0oY20sIHN0YXJ0KTtcbiAgICAgIGlmIChjdXIpIHJldHVybiBjdXI7XG4gICAgfVxuICB9KTtcblxuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgcmFuZ2VGaW5kZXI6IENvZGVNaXJyb3IuZm9sZC5hdXRvLFxuICAgIHdpZGdldDogXCJcXHUyMTk0XCIsXG4gICAgbWluRm9sZFNpemU6IDAsXG4gICAgc2NhblVwOiBmYWxzZSxcbiAgICBjbGVhck9uRW50ZXI6IHRydWVcbiAgfTtcblxuICBDb2RlTWlycm9yLmRlZmluZU9wdGlvbihcImZvbGRPcHRpb25zXCIsIG51bGwpO1xuXG4gIGZ1bmN0aW9uIGdldE9wdGlvbihjbSwgb3B0aW9ucywgbmFtZSkge1xuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnNbbmFtZV0gIT09IHVuZGVmaW5lZClcbiAgICAgIHJldHVybiBvcHRpb25zW25hbWVdO1xuICAgIHZhciBlZGl0b3JPcHRpb25zID0gY20ub3B0aW9ucy5mb2xkT3B0aW9ucztcbiAgICBpZiAoZWRpdG9yT3B0aW9ucyAmJiBlZGl0b3JPcHRpb25zW25hbWVdICE9PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gZWRpdG9yT3B0aW9uc1tuYW1lXTtcbiAgICByZXR1cm4gZGVmYXVsdE9wdGlvbnNbbmFtZV07XG4gIH1cblxuICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbihcImZvbGRPcHRpb25cIiwgZnVuY3Rpb24ob3B0aW9ucywgbmFtZSkge1xuICAgIHJldHVybiBnZXRPcHRpb24odGhpcywgb3B0aW9ucywgbmFtZSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBLHdIQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/codemirror/addon/fold/foldcode.js\n");
165
166/***/ }),
167
168/***/ "../../../node_modules/codemirror/addon/fold/foldgutter.js":
169/*!********************************************************************************************!*\
170 !*** /home/runner/work/graphiql/graphiql/node_modules/codemirror/addon/fold/foldgutter.js ***!
171 \********************************************************************************************/
172/*! no static exports found */
173/***/ (function(module, exports, __webpack_require__) {
174
175eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n // CodeMirror, copyright (c) by Marijn Haverbeke and others\n // Distributed under an MIT license: https://codemirror.net/LICENSE\n (function (mod) {\n if (true) // CommonJS\n mod(__webpack_require__(/*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"), __webpack_require__(/*! ./foldcode */ \"../../../node_modules/codemirror/addon/fold/foldcode.js\"));else {}\n })(function (CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"foldGutter\", false, function (cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.clearGutter(cm.state.foldGutter.options.gutter);\n cm.state.foldGutter = null;\n cm.off(\"gutterClick\", onGutterClick);\n cm.off(\"changes\", onChange);\n cm.off(\"viewportChange\", onViewportChange);\n cm.off(\"fold\", onFold);\n cm.off(\"unfold\", onFold);\n cm.off(\"swapDoc\", onChange);\n }\n\n if (val) {\n cm.state.foldGutter = new State(parseOptions(val));\n updateInViewport(cm);\n cm.on(\"gutterClick\", onGutterClick);\n cm.on(\"changes\", onChange);\n cm.on(\"viewportChange\", onViewportChange);\n cm.on(\"fold\", onFold);\n cm.on(\"unfold\", onFold);\n cm.on(\"swapDoc\", onChange);\n }\n });\n var Pos = CodeMirror.Pos;\n\n function State(options) {\n this.options = options;\n this.from = this.to = 0;\n }\n\n function parseOptions(opts) {\n if (opts === true) opts = {};\n if (opts.gutter == null) opts.gutter = \"CodeMirror-foldgutter\";\n if (opts.indicatorOpen == null) opts.indicatorOpen = \"CodeMirror-foldgutter-open\";\n if (opts.indicatorFolded == null) opts.indicatorFolded = \"CodeMirror-foldgutter-folded\";\n return opts;\n }\n\n function isFolded(cm, line) {\n var marks = cm.findMarks(Pos(line, 0), Pos(line + 1, 0));\n\n for (var i = 0; i < marks.length; ++i) {\n if (marks[i].__isFold) {\n var fromPos = marks[i].find(-1);\n if (fromPos && fromPos.line === line) return marks[i];\n }\n }\n }\n\n function marker(spec) {\n if (typeof spec == \"string\") {\n var elt = document.createElement(\"div\");\n elt.className = spec + \" CodeMirror-guttermarker-subtle\";\n return elt;\n } else {\n return spec.cloneNode(true);\n }\n }\n\n function updateFoldInfo(cm, from, to) {\n var opts = cm.state.foldGutter.options,\n cur = from - 1;\n var minSize = cm.foldOption(opts, \"minFoldSize\");\n var func = cm.foldOption(opts, \"rangeFinder\"); // we can reuse the built-in indicator element if its className matches the new state\n\n var clsFolded = typeof opts.indicatorFolded == \"string\" && classTest(opts.indicatorFolded);\n var clsOpen = typeof opts.indicatorOpen == \"string\" && classTest(opts.indicatorOpen);\n cm.eachLine(from, to, function (line) {\n ++cur;\n var mark = null;\n var old = line.gutterMarkers;\n if (old) old = old[opts.gutter];\n\n if (isFolded(cm, cur)) {\n if (clsFolded && old && clsFolded.test(old.className)) return;\n mark = marker(opts.indicatorFolded);\n } else {\n var pos = Pos(cur, 0);\n var range = func && func(cm, pos);\n\n if (range && range.to.line - range.from.line >= minSize) {\n if (clsOpen && old && clsOpen.test(old.className)) return;\n mark = marker(opts.indicatorOpen);\n }\n }\n\n if (!mark && !old) return;\n cm.setGutterMarker(line, opts.gutter, mark);\n });\n } // copied from CodeMirror/src/util/dom.js\n\n\n function classTest(cls) {\n return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\");\n }\n\n function updateInViewport(cm) {\n var vp = cm.getViewport(),\n state = cm.state.foldGutter;\n if (!state) return;\n cm.operation(function () {\n updateFoldInfo(cm, vp.from, vp.to);\n });\n state.from = vp.from;\n state.to = vp.to;\n }\n\n function onGutterClick(cm, line, gutter) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n if (gutter != opts.gutter) return;\n var folded = isFolded(cm, line);\n if (folded) folded.clear();else cm.foldCode(Pos(line, 0), opts);\n }\n\n function onChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n state.from = state.to = 0;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function () {\n updateInViewport(cm);\n }, opts.foldOnChangeTimeSpan || 600);\n }\n\n function onViewportChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function () {\n var vp = cm.getViewport();\n\n if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {\n updateInViewport(cm);\n } else {\n cm.operation(function () {\n if (vp.from < state.from) {\n updateFoldInfo(cm, vp.from, state.from);\n state.from = vp.from;\n }\n\n if (vp.to > state.to) {\n updateFoldInfo(cm, state.to, vp.to);\n state.to = vp.to;\n }\n });\n }\n }, opts.updateViewportTimeSpan || 400);\n }\n\n function onFold(cm, from) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var line = from.line;\n if (line >= state.from && line < state.to) updateFoldInfo(cm, line, line + 1);\n }\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vZm9sZC9mb2xkZ3V0dGVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vZm9sZC9mb2xkZ3V0dGVyLmpzP2JlMGIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29kZU1pcnJvciwgY29weXJpZ2h0IChjKSBieSBNYXJpam4gSGF2ZXJiZWtlIGFuZCBvdGhlcnNcbi8vIERpc3RyaWJ1dGVkIHVuZGVyIGFuIE1JVCBsaWNlbnNlOiBodHRwczovL2NvZGVtaXJyb3IubmV0L0xJQ0VOU0VcblxuKGZ1bmN0aW9uKG1vZCkge1xuICBpZiAodHlwZW9mIGV4cG9ydHMgPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgbW9kdWxlID09IFwib2JqZWN0XCIpIC8vIENvbW1vbkpTXG4gICAgbW9kKHJlcXVpcmUoXCIuLi8uLi9saWIvY29kZW1pcnJvclwiKSwgcmVxdWlyZShcIi4vZm9sZGNvZGVcIikpO1xuICBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSAvLyBBTURcbiAgICBkZWZpbmUoW1wiLi4vLi4vbGliL2NvZGVtaXJyb3JcIiwgXCIuL2ZvbGRjb2RlXCJdLCBtb2QpO1xuICBlbHNlIC8vIFBsYWluIGJyb3dzZXIgZW52XG4gICAgbW9kKENvZGVNaXJyb3IpO1xufSkoZnVuY3Rpb24oQ29kZU1pcnJvcikge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICBDb2RlTWlycm9yLmRlZmluZU9wdGlvbihcImZvbGRHdXR0ZXJcIiwgZmFsc2UsIGZ1bmN0aW9uKGNtLCB2YWwsIG9sZCkge1xuICAgIGlmIChvbGQgJiYgb2xkICE9IENvZGVNaXJyb3IuSW5pdCkge1xuICAgICAgY20uY2xlYXJHdXR0ZXIoY20uc3RhdGUuZm9sZEd1dHRlci5vcHRpb25zLmd1dHRlcik7XG4gICAgICBjbS5zdGF0ZS5mb2xkR3V0dGVyID0gbnVsbDtcbiAgICAgIGNtLm9mZihcImd1dHRlckNsaWNrXCIsIG9uR3V0dGVyQ2xpY2spO1xuICAgICAgY20ub2ZmKFwiY2hhbmdlc1wiLCBvbkNoYW5nZSk7XG4gICAgICBjbS5vZmYoXCJ2aWV3cG9ydENoYW5nZVwiLCBvblZpZXdwb3J0Q2hhbmdlKTtcbiAgICAgIGNtLm9mZihcImZvbGRcIiwgb25Gb2xkKTtcbiAgICAgIGNtLm9mZihcInVuZm9sZFwiLCBvbkZvbGQpO1xuICAgICAgY20ub2ZmKFwic3dhcERvY1wiLCBvbkNoYW5nZSk7XG4gICAgfVxuICAgIGlmICh2YWwpIHtcbiAgICAgIGNtLnN0YXRlLmZvbGRHdXR0ZXIgPSBuZXcgU3RhdGUocGFyc2VPcHRpb25zKHZhbCkpO1xuICAgICAgdXBkYXRlSW5WaWV3cG9ydChjbSk7XG4gICAgICBjbS5vbihcImd1dHRlckNsaWNrXCIsIG9uR3V0dGVyQ2xpY2spO1xuICAgICAgY20ub24oXCJjaGFuZ2VzXCIsIG9uQ2hhbmdlKTtcbiAgICAgIGNtLm9uKFwidmlld3BvcnRDaGFuZ2VcIiwgb25WaWV3cG9ydENoYW5nZSk7XG4gICAgICBjbS5vbihcImZvbGRcIiwgb25Gb2xkKTtcbiAgICAgIGNtLm9uKFwidW5mb2xkXCIsIG9uRm9sZCk7XG4gICAgICBjbS5vbihcInN3YXBEb2NcIiwgb25DaGFuZ2UpO1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIFBvcyA9IENvZGVNaXJyb3IuUG9zO1xuXG4gIGZ1bmN0aW9uIFN0YXRlKG9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuZnJvbSA9IHRoaXMudG8gPSAwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VPcHRpb25zKG9wdHMpIHtcbiAgICBpZiAob3B0cyA9PT0gdHJ1ZSkgb3B0cyA9IHt9O1xuICAgIGlmIChvcHRzLmd1dHRlciA9PSBudWxsKSBvcHRzLmd1dHRlciA9IFwiQ29kZU1pcnJvci1mb2xkZ3V0dGVyXCI7XG4gICAgaWYgKG9wdHMuaW5kaWNhdG9yT3BlbiA9PSBudWxsKSBvcHRzLmluZGljYXRvck9wZW4gPSBcIkNvZGVNaXJyb3ItZm9sZGd1dHRlci1vcGVuXCI7XG4gICAgaWYgKG9wdHMuaW5kaWNhdG9yRm9sZGVkID09IG51bGwpIG9wdHMuaW5kaWNhdG9yRm9sZGVkID0gXCJDb2RlTWlycm9yLWZvbGRndXR0ZXItZm9sZGVkXCI7XG4gICAgcmV0dXJuIG9wdHM7XG4gIH1cblxuICBmdW5jdGlvbiBpc0ZvbGRlZChjbSwgbGluZSkge1xuICAgIHZhciBtYXJrcyA9IGNtLmZpbmRNYXJrcyhQb3MobGluZSwgMCksIFBvcyhsaW5lICsgMSwgMCkpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFya3MubGVuZ3RoOyArK2kpIHtcbiAgICAgIGlmIChtYXJrc1tpXS5fX2lzRm9sZCkge1xuICAgICAgICB2YXIgZnJvbVBvcyA9IG1hcmtzW2ldLmZpbmQoLTEpO1xuICAgICAgICBpZiAoZnJvbVBvcyAmJiBmcm9tUG9zLmxpbmUgPT09IGxpbmUpXG4gICAgICAgICAgcmV0dXJuIG1hcmtzW2ldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG1hcmtlcihzcGVjKSB7XG4gICAgaWYgKHR5cGVvZiBzcGVjID09IFwic3RyaW5nXCIpIHtcbiAgICAgIHZhciBlbHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgZWx0LmNsYXNzTmFtZSA9IHNwZWMgKyBcIiBDb2RlTWlycm9yLWd1dHRlcm1hcmtlci1zdWJ0bGVcIjtcbiAgICAgIHJldHVybiBlbHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzcGVjLmNsb25lTm9kZSh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVGb2xkSW5mbyhjbSwgZnJvbSwgdG8pIHtcbiAgICB2YXIgb3B0cyA9IGNtLnN0YXRlLmZvbGRHdXR0ZXIub3B0aW9ucywgY3VyID0gZnJvbSAtIDE7XG4gICAgdmFyIG1pblNpemUgPSBjbS5mb2xkT3B0aW9uKG9wdHMsIFwibWluRm9sZFNpemVcIik7XG4gICAgdmFyIGZ1bmMgPSBjbS5mb2xkT3B0aW9uKG9wdHMsIFwicmFuZ2VGaW5kZXJcIik7XG4gICAgLy8gd2UgY2FuIHJldXNlIHRoZSBidWlsdC1pbiBpbmRpY2F0b3IgZWxlbWVudCBpZiBpdHMgY2xhc3NOYW1lIG1hdGNoZXMgdGhlIG5ldyBzdGF0ZVxuICAgIHZhciBjbHNGb2xkZWQgPSB0eXBlb2Ygb3B0cy5pbmRpY2F0b3JGb2xkZWQgPT0gXCJzdHJpbmdcIiAmJiBjbGFzc1Rlc3Qob3B0cy5pbmRpY2F0b3JGb2xkZWQpO1xuICAgIHZhciBjbHNPcGVuID0gdHlwZW9mIG9wdHMuaW5kaWNhdG9yT3BlbiA9PSBcInN0cmluZ1wiICYmIGNsYXNzVGVzdChvcHRzLmluZGljYXRvck9wZW4pO1xuICAgIGNtLmVhY2hMaW5lKGZyb20sIHRvLCBmdW5jdGlvbihsaW5lKSB7XG4gICAgICArK2N1cjtcbiAgICAgIHZhciBtYXJrID0gbnVsbDtcbiAgICAgIHZhciBvbGQgPSBsaW5lLmd1dHRlck1hcmtlcnM7XG4gICAgICBpZiAob2xkKSBvbGQgPSBvbGRbb3B0cy5ndXR0ZXJdO1xuICAgICAgaWYgKGlzRm9sZGVkKGNtLCBjdXIpKSB7XG4gICAgICAgIGlmIChjbHNGb2xkZWQgJiYgb2xkICYmIGNsc0ZvbGRlZC50ZXN0KG9sZC5jbGFzc05hbWUpKSByZXR1cm47XG4gICAgICAgIG1hcmsgPSBtYXJrZXIob3B0cy5pbmRpY2F0b3JGb2xkZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHBvcyA9IFBvcyhjdXIsIDApO1xuICAgICAgICB2YXIgcmFuZ2UgPSBmdW5jICYmIGZ1bmMoY20sIHBvcyk7XG4gICAgICAgIGlmIChyYW5nZSAmJiByYW5nZS50by5saW5lIC0gcmFuZ2UuZnJvbS5saW5lID49IG1pblNpemUpIHtcbiAgICAgICAgICBpZiAoY2xzT3BlbiAmJiBvbGQgJiYgY2xzT3Blbi50ZXN0KG9sZC5jbGFzc05hbWUpKSByZXR1cm47XG4gICAgICAgICAgbWFyayA9IG1hcmtlcihvcHRzLmluZGljYXRvck9wZW4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIW1hcmsgJiYgIW9sZCkgcmV0dXJuO1xuICAgICAgY20uc2V0R3V0dGVyTWFya2VyKGxpbmUsIG9wdHMuZ3V0dGVyLCBtYXJrKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGNvcGllZCBmcm9tIENvZGVNaXJyb3Ivc3JjL3V0aWwvZG9tLmpzXG4gIGZ1bmN0aW9uIGNsYXNzVGVzdChjbHMpIHsgcmV0dXJuIG5ldyBSZWdFeHAoXCIoXnxcXFxccylcIiArIGNscyArIFwiKD86JHxcXFxccylcXFxccypcIikgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZUluVmlld3BvcnQoY20pIHtcbiAgICB2YXIgdnAgPSBjbS5nZXRWaWV3cG9ydCgpLCBzdGF0ZSA9IGNtLnN0YXRlLmZvbGRHdXR0ZXI7XG4gICAgaWYgKCFzdGF0ZSkgcmV0dXJuO1xuICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgIHVwZGF0ZUZvbGRJbmZvKGNtLCB2cC5mcm9tLCB2cC50byk7XG4gICAgfSk7XG4gICAgc3RhdGUuZnJvbSA9IHZwLmZyb207IHN0YXRlLnRvID0gdnAudG87XG4gIH1cblxuICBmdW5jdGlvbiBvbkd1dHRlckNsaWNrKGNtLCBsaW5lLCBndXR0ZXIpIHtcbiAgICB2YXIgc3RhdGUgPSBjbS5zdGF0ZS5mb2xkR3V0dGVyO1xuICAgIGlmICghc3RhdGUpIHJldHVybjtcbiAgICB2YXIgb3B0cyA9IHN0YXRlLm9wdGlvbnM7XG4gICAgaWYgKGd1dHRlciAhPSBvcHRzLmd1dHRlcikgcmV0dXJuO1xuICAgIHZhciBmb2xkZWQgPSBpc0ZvbGRlZChjbSwgbGluZSk7XG4gICAgaWYgKGZvbGRlZCkgZm9sZGVkLmNsZWFyKCk7XG4gICAgZWxzZSBjbS5mb2xkQ29kZShQb3MobGluZSwgMCksIG9wdHMpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25DaGFuZ2UoY20pIHtcbiAgICB2YXIgc3RhdGUgPSBjbS5zdGF0ZS5mb2xkR3V0dGVyO1xuICAgIGlmICghc3RhdGUpIHJldHVybjtcbiAgICB2YXIgb3B0cyA9IHN0YXRlLm9wdGlvbnM7XG4gICAgc3RhdGUuZnJvbSA9IHN0YXRlLnRvID0gMDtcbiAgICBjbGVhclRpbWVvdXQoc3RhdGUuY2hhbmdlVXBkYXRlKTtcbiAgICBzdGF0ZS5jaGFuZ2VVcGRhdGUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB1cGRhdGVJblZpZXdwb3J0KGNtKTsgfSwgb3B0cy5mb2xkT25DaGFuZ2VUaW1lU3BhbiB8fCA2MDApO1xuICB9XG5cbiAgZnVuY3Rpb24gb25WaWV3cG9ydENoYW5nZShjbSkge1xuICAgIHZhciBzdGF0ZSA9IGNtLnN0YXRlLmZvbGRHdXR0ZXI7XG4gICAgaWYgKCFzdGF0ZSkgcmV0dXJuO1xuICAgIHZhciBvcHRzID0gc3RhdGUub3B0aW9ucztcbiAgICBjbGVhclRpbWVvdXQoc3RhdGUuY2hhbmdlVXBkYXRlKTtcbiAgICBzdGF0ZS5jaGFuZ2VVcGRhdGUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHZwID0gY20uZ2V0Vmlld3BvcnQoKTtcbiAgICAgIGlmIChzdGF0ZS5mcm9tID09IHN0YXRlLnRvIHx8IHZwLmZyb20gLSBzdGF0ZS50byA+IDIwIHx8IHN0YXRlLmZyb20gLSB2cC50byA+IDIwKSB7XG4gICAgICAgIHVwZGF0ZUluVmlld3BvcnQoY20pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmICh2cC5mcm9tIDwgc3RhdGUuZnJvbSkge1xuICAgICAgICAgICAgdXBkYXRlRm9sZEluZm8oY20sIHZwLmZyb20sIHN0YXRlLmZyb20pO1xuICAgICAgICAgICAgc3RhdGUuZnJvbSA9IHZwLmZyb207XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2cC50byA+IHN0YXRlLnRvKSB7XG4gICAgICAgICAgICB1cGRhdGVGb2xkSW5mbyhjbSwgc3RhdGUudG8sIHZwLnRvKTtcbiAgICAgICAgICAgIHN0YXRlLnRvID0gdnAudG87XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCBvcHRzLnVwZGF0ZVZpZXdwb3J0VGltZVNwYW4gfHwgNDAwKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRm9sZChjbSwgZnJvbSkge1xuICAgIHZhciBzdGF0ZSA9IGNtLnN0YXRlLmZvbGRHdXR0ZXI7XG4gICAgaWYgKCFzdGF0ZSkgcmV0dXJuO1xuICAgIHZhciBsaW5lID0gZnJvbS5saW5lO1xuICAgIGlmIChsaW5lID49IHN0YXRlLmZyb20gJiYgbGluZSA8IHN0YXRlLnRvKVxuICAgICAgdXBkYXRlRm9sZEluZm8oY20sIGxpbmUsIGxpbmUgKyAxKTtcbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBLDBOQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/codemirror/addon/fold/foldgutter.js\n");
176
177/***/ }),
178
179/***/ "../../../node_modules/codemirror/addon/hint/show-hint.js":
180/*!*******************************************************************************************!*\
181 !*** /home/runner/work/graphiql/graphiql/node_modules/codemirror/addon/hint/show-hint.js ***!
182 \*******************************************************************************************/
183/*! no static exports found */
184/***/ (function(module, exports, __webpack_require__) {
185
186eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n // CodeMirror, copyright (c) by Marijn Haverbeke and others\n // Distributed under an MIT license: https://codemirror.net/LICENSE\n (function (mod) {\n if (true) // CommonJS\n mod(__webpack_require__(/*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));else {}\n })(function (CodeMirror) {\n \"use strict\";\n\n var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\"; // This is the old interface, kept around for now to stay\n // backwards-compatible.\n\n CodeMirror.showHint = function (cm, getHints, options) {\n if (!getHints) return cm.showHint(options);\n if (options && options.async) getHints.async = true;\n var newOpts = {\n hint: getHints\n };\n if (options) for (var prop in options) newOpts[prop] = options[prop];\n return cm.showHint(newOpts);\n };\n\n CodeMirror.defineExtension(\"showHint\", function (options) {\n options = parseOptions(this, this.getCursor(\"start\"), options);\n var selections = this.listSelections();\n if (selections.length > 1) return; // By default, don't allow completion when something is selected.\n // A hint function can have a `supportsSelection` property to\n // indicate that it can handle selections.\n\n if (this.somethingSelected()) {\n if (!options.hint.supportsSelection) return; // Don't try with cross-line selections\n\n for (var i = 0; i < selections.length; i++) if (selections[i].head.line != selections[i].anchor.line) return;\n }\n\n if (this.state.completionActive) this.state.completionActive.close();\n var completion = this.state.completionActive = new Completion(this, options);\n if (!completion.options.hint) return;\n CodeMirror.signal(this, \"startCompletion\", this);\n completion.update(true);\n });\n CodeMirror.defineExtension(\"closeHint\", function () {\n if (this.state.completionActive) this.state.completionActive.close();\n });\n\n function Completion(cm, options) {\n this.cm = cm;\n this.options = options;\n this.widget = null;\n this.debounce = 0;\n this.tick = 0;\n this.startPos = this.cm.getCursor(\"start\");\n this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n var self = this;\n cm.on(\"cursorActivity\", this.activityFunc = function () {\n self.cursorActivity();\n });\n }\n\n var requestAnimationFrame = window.requestAnimationFrame || function (fn) {\n return setTimeout(fn, 1000 / 60);\n };\n\n var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n Completion.prototype = {\n close: function () {\n if (!this.active()) return;\n this.cm.state.completionActive = null;\n this.tick = null;\n this.cm.off(\"cursorActivity\", this.activityFunc);\n if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n if (this.widget) this.widget.close();\n CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n },\n active: function () {\n return this.cm.state.completionActive == this;\n },\n pick: function (data, i) {\n var completion = data.list[i],\n self = this;\n this.cm.operation(function () {\n if (completion.hint) completion.hint(self.cm, data, completion);else self.cm.replaceRange(getText(completion), completion.from || data.from, completion.to || data.to, \"complete\");\n CodeMirror.signal(data, \"pick\", completion);\n self.cm.scrollIntoView();\n });\n this.close();\n },\n cursorActivity: function () {\n if (this.debounce) {\n cancelAnimationFrame(this.debounce);\n this.debounce = 0;\n }\n\n var identStart = this.startPos;\n\n if (this.data) {\n identStart = this.data.from;\n }\n\n var pos = this.cm.getCursor(),\n line = this.cm.getLine(pos.line);\n\n if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch || pos.ch < identStart.ch || this.cm.somethingSelected() || !pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch - 1))) {\n this.close();\n } else {\n var self = this;\n this.debounce = requestAnimationFrame(function () {\n self.update();\n });\n if (this.widget) this.widget.disable();\n }\n },\n update: function (first) {\n if (this.tick == null) return;\n var self = this,\n myTick = ++this.tick;\n fetchHints(this.options.hint, this.cm, this.options, function (data) {\n if (self.tick == myTick) self.finishUpdate(data, first);\n });\n },\n finishUpdate: function (data, first) {\n if (this.data) CodeMirror.signal(this.data, \"update\");\n var picked = this.widget && this.widget.picked || first && this.options.completeSingle;\n if (this.widget) this.widget.close();\n this.data = data;\n\n if (data && data.list.length) {\n if (picked && data.list.length == 1) {\n this.pick(data, 0);\n } else {\n this.widget = new Widget(this, data);\n CodeMirror.signal(data, \"shown\");\n }\n }\n }\n };\n\n function parseOptions(cm, pos, options) {\n var editor = cm.options.hintOptions;\n var out = {};\n\n for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n\n if (editor) for (var prop in editor) if (editor[prop] !== undefined) out[prop] = editor[prop];\n if (options) for (var prop in options) if (options[prop] !== undefined) out[prop] = options[prop];\n if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos);\n return out;\n }\n\n function getText(completion) {\n if (typeof completion == \"string\") return completion;else return completion.text;\n }\n\n function buildKeyMap(completion, handle) {\n var baseMap = {\n Up: function () {\n handle.moveFocus(-1);\n },\n Down: function () {\n handle.moveFocus(1);\n },\n PageUp: function () {\n handle.moveFocus(-handle.menuSize() + 1, true);\n },\n PageDown: function () {\n handle.moveFocus(handle.menuSize() - 1, true);\n },\n Home: function () {\n handle.setFocus(0);\n },\n End: function () {\n handle.setFocus(handle.length - 1);\n },\n Enter: handle.pick,\n Tab: handle.pick,\n Esc: handle.close\n };\n var mac = /Mac/.test(navigator.platform);\n\n if (mac) {\n baseMap[\"Ctrl-P\"] = function () {\n handle.moveFocus(-1);\n };\n\n baseMap[\"Ctrl-N\"] = function () {\n handle.moveFocus(1);\n };\n }\n\n var custom = completion.options.customKeys;\n var ourMap = custom ? {} : baseMap;\n\n function addBinding(key, val) {\n var bound;\n if (typeof val != \"string\") bound = function (cm) {\n return val(cm, handle);\n }; // This mechanism is deprecated\n else if (baseMap.hasOwnProperty(val)) bound = baseMap[val];else bound = val;\n ourMap[key] = bound;\n }\n\n if (custom) for (var key in custom) if (custom.hasOwnProperty(key)) addBinding(key, custom[key]);\n var extra = completion.options.extraKeys;\n if (extra) for (var key in extra) if (extra.hasOwnProperty(key)) addBinding(key, extra[key]);\n return ourMap;\n }\n\n function getHintElement(hintsElement, el) {\n while (el && el != hintsElement) {\n if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n el = el.parentNode;\n }\n }\n\n function Widget(completion, data) {\n this.completion = completion;\n this.data = data;\n this.picked = false;\n var widget = this,\n cm = completion.cm;\n var ownerDocument = cm.getInputField().ownerDocument;\n var parentWindow = ownerDocument.defaultView || ownerDocument.parentWindow;\n var hints = this.hints = ownerDocument.createElement(\"ul\");\n var theme = completion.cm.options.theme;\n hints.className = \"CodeMirror-hints \" + theme;\n this.selectedHint = data.selectedHint || 0;\n var completions = data.list;\n\n for (var i = 0; i < completions.length; ++i) {\n var elt = hints.appendChild(ownerDocument.createElement(\"li\")),\n cur = completions[i];\n var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n if (cur.className != null) className = cur.className + \" \" + className;\n elt.className = className;\n if (cur.render) cur.render(elt, data, cur);else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur)));\n elt.hintId = i;\n }\n\n var container = completion.options.container || ownerDocument.body;\n var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n var left = pos.left,\n top = pos.bottom,\n below = true;\n var offsetLeft = 0,\n offsetTop = 0;\n\n if (container !== ownerDocument.body) {\n // We offset the cursor position because left and top are relative to the offsetParent's top left corner.\n var isContainerPositioned = ['absolute', 'relative', 'fixed'].indexOf(parentWindow.getComputedStyle(container).position) !== -1;\n var offsetParent = isContainerPositioned ? container : container.offsetParent;\n var offsetParentPosition = offsetParent.getBoundingClientRect();\n var bodyPosition = ownerDocument.body.getBoundingClientRect();\n offsetLeft = offsetParentPosition.left - bodyPosition.left - offsetParent.scrollLeft;\n offsetTop = offsetParentPosition.top - bodyPosition.top - offsetParent.scrollTop;\n }\n\n hints.style.left = left - offsetLeft + \"px\";\n hints.style.top = top - offsetTop + \"px\"; // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n\n var winW = parentWindow.innerWidth || Math.max(ownerDocument.body.offsetWidth, ownerDocument.documentElement.offsetWidth);\n var winH = parentWindow.innerHeight || Math.max(ownerDocument.body.offsetHeight, ownerDocument.documentElement.offsetHeight);\n container.appendChild(hints);\n var box = hints.getBoundingClientRect(),\n overlapY = box.bottom - winH;\n var scrolls = hints.scrollHeight > hints.clientHeight + 1;\n var startScroll = cm.getScrollInfo();\n\n if (overlapY > 0) {\n var height = box.bottom - box.top,\n curTop = pos.top - (pos.bottom - box.top);\n\n if (curTop - height > 0) {\n // Fits above cursor\n hints.style.top = (top = pos.top - height - offsetTop) + \"px\";\n below = false;\n } else if (height > winH) {\n hints.style.height = winH - 5 + \"px\";\n hints.style.top = (top = pos.bottom - box.top - offsetTop) + \"px\";\n var cursor = cm.getCursor();\n\n if (data.from.ch != cursor.ch) {\n pos = cm.cursorCoords(cursor);\n hints.style.left = (left = pos.left - offsetLeft) + \"px\";\n box = hints.getBoundingClientRect();\n }\n }\n }\n\n var overlapX = box.right - winW;\n\n if (overlapX > 0) {\n if (box.right - box.left > winW) {\n hints.style.width = winW - 5 + \"px\";\n overlapX -= box.right - box.left - winW;\n }\n\n hints.style.left = (left = pos.left - overlapX - offsetLeft) + \"px\";\n }\n\n if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling) node.style.paddingRight = cm.display.nativeBarWidth + \"px\";\n cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n moveFocus: function (n, avoidWrap) {\n widget.changeActive(widget.selectedHint + n, avoidWrap);\n },\n setFocus: function (n) {\n widget.changeActive(n);\n },\n menuSize: function () {\n return widget.screenAmount();\n },\n length: completions.length,\n close: function () {\n completion.close();\n },\n pick: function () {\n widget.pick();\n },\n data: data\n }));\n\n if (completion.options.closeOnUnfocus) {\n var closingOnBlur;\n cm.on(\"blur\", this.onBlur = function () {\n closingOnBlur = setTimeout(function () {\n completion.close();\n }, 100);\n });\n cm.on(\"focus\", this.onFocus = function () {\n clearTimeout(closingOnBlur);\n });\n }\n\n cm.on(\"scroll\", this.onScroll = function () {\n var curScroll = cm.getScrollInfo(),\n editor = cm.getWrapperElement().getBoundingClientRect();\n var newTop = top + startScroll.top - curScroll.top;\n var point = newTop - (parentWindow.pageYOffset || (ownerDocument.documentElement || ownerDocument.body).scrollTop);\n if (!below) point += hints.offsetHeight;\n if (point <= editor.top || point >= editor.bottom) return completion.close();\n hints.style.top = newTop + \"px\";\n hints.style.left = left + startScroll.left - curScroll.left + \"px\";\n });\n CodeMirror.on(hints, \"dblclick\", function (e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n widget.pick();\n }\n });\n CodeMirror.on(hints, \"click\", function (e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n if (completion.options.completeOnSingleClick) widget.pick();\n }\n });\n CodeMirror.on(hints, \"mousedown\", function () {\n setTimeout(function () {\n cm.focus();\n }, 20);\n });\n this.scrollToActive();\n CodeMirror.signal(data, \"select\", completions[this.selectedHint], hints.childNodes[this.selectedHint]);\n return true;\n }\n\n Widget.prototype = {\n close: function () {\n if (this.completion.widget != this) return;\n this.completion.widget = null;\n this.hints.parentNode.removeChild(this.hints);\n this.completion.cm.removeKeyMap(this.keyMap);\n var cm = this.completion.cm;\n\n if (this.completion.options.closeOnUnfocus) {\n cm.off(\"blur\", this.onBlur);\n cm.off(\"focus\", this.onFocus);\n }\n\n cm.off(\"scroll\", this.onScroll);\n },\n disable: function () {\n this.completion.cm.removeKeyMap(this.keyMap);\n var widget = this;\n this.keyMap = {\n Enter: function () {\n widget.picked = true;\n }\n };\n this.completion.cm.addKeyMap(this.keyMap);\n },\n pick: function () {\n this.completion.pick(this.data, this.selectedHint);\n },\n changeActive: function (i, avoidWrap) {\n if (i >= this.data.list.length) i = avoidWrap ? this.data.list.length - 1 : 0;else if (i < 0) i = avoidWrap ? 0 : this.data.list.length - 1;\n if (this.selectedHint == i) return;\n var node = this.hints.childNodes[this.selectedHint];\n if (node) node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n node = this.hints.childNodes[this.selectedHint = i];\n node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n this.scrollToActive();\n CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n },\n scrollToActive: function () {\n var margin = this.completion.options.scrollMargin || 0;\n var node1 = this.hints.childNodes[Math.max(0, this.selectedHint - margin)];\n var node2 = this.hints.childNodes[Math.min(this.data.list.length - 1, this.selectedHint + margin)];\n var firstNode = this.hints.firstChild;\n if (node1.offsetTop < this.hints.scrollTop) this.hints.scrollTop = node1.offsetTop - firstNode.offsetTop;else if (node2.offsetTop + node2.offsetHeight > this.hints.scrollTop + this.hints.clientHeight) this.hints.scrollTop = node2.offsetTop + node2.offsetHeight - this.hints.clientHeight + firstNode.offsetTop;\n },\n screenAmount: function () {\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n }\n };\n\n function applicableHelpers(cm, helpers) {\n if (!cm.somethingSelected()) return helpers;\n var result = [];\n\n for (var i = 0; i < helpers.length; i++) if (helpers[i].supportsSelection) result.push(helpers[i]);\n\n return result;\n }\n\n function fetchHints(hint, cm, options, callback) {\n if (hint.async) {\n hint(cm, callback, options);\n } else {\n var result = hint(cm, options);\n if (result && result.then) result.then(callback);else callback(result);\n }\n }\n\n function resolveAutoHints(cm, pos) {\n var helpers = cm.getHelpers(pos, \"hint\"),\n words;\n\n if (helpers.length) {\n var resolved = function (cm, callback, options) {\n var app = applicableHelpers(cm, helpers);\n\n function run(i) {\n if (i == app.length) return callback(null);\n fetchHints(app[i], cm, options, function (result) {\n if (result && result.list.length > 0) callback(result);else run(i + 1);\n });\n }\n\n run(0);\n };\n\n resolved.async = true;\n resolved.supportsSelection = true;\n return resolved;\n } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n return function (cm) {\n return CodeMirror.hint.fromList(cm, {\n words: words\n });\n };\n } else if (CodeMirror.hint.anyword) {\n return function (cm, options) {\n return CodeMirror.hint.anyword(cm, options);\n };\n } else {\n return function () {};\n }\n }\n\n CodeMirror.registerHelper(\"hint\", \"auto\", {\n resolve: resolveAutoHints\n });\n CodeMirror.registerHelper(\"hint\", \"fromList\", function (cm, options) {\n var cur = cm.getCursor(),\n token = cm.getTokenAt(cur);\n var term,\n from = CodeMirror.Pos(cur.line, token.start),\n to = cur;\n\n if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n term = token.string.substr(0, cur.ch - token.start);\n } else {\n term = \"\";\n from = cur;\n }\n\n var found = [];\n\n for (var i = 0; i < options.words.length; i++) {\n var word = options.words[i];\n if (word.slice(0, term.length) == term) found.push(word);\n }\n\n if (found.length) return {\n list: found,\n from: from,\n to: to\n };\n });\n CodeMirror.commands.autocomplete = CodeMirror.showHint;\n var defaultOptions = {\n hint: CodeMirror.hint.auto,\n completeSingle: true,\n alignWithWord: true,\n closeCharacters: /[\\s()\\[\\]{};:>,]/,\n closeOnUnfocus: true,\n completeOnSingleClick: true,\n container: null,\n customKeys: null,\n extraKeys: null\n };\n CodeMirror.defineOption(\"hintOptions\", null);\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vaGludC9zaG93LWhpbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvY29kZW1pcnJvci9hZGRvbi9oaW50L3Nob3ctaGludC5qcz8yMjE0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvZGVNaXJyb3IsIGNvcHlyaWdodCAoYykgYnkgTWFyaWpuIEhhdmVyYmVrZSBhbmQgb3RoZXJzXG4vLyBEaXN0cmlidXRlZCB1bmRlciBhbiBNSVQgbGljZW5zZTogaHR0cHM6Ly9jb2RlbWlycm9yLm5ldC9MSUNFTlNFXG5cbihmdW5jdGlvbihtb2QpIHtcbiAgaWYgKHR5cGVvZiBleHBvcnRzID09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG1vZHVsZSA9PSBcIm9iamVjdFwiKSAvLyBDb21tb25KU1xuICAgIG1vZChyZXF1aXJlKFwiLi4vLi4vbGliL2NvZGVtaXJyb3JcIikpO1xuICBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSAvLyBBTURcbiAgICBkZWZpbmUoW1wiLi4vLi4vbGliL2NvZGVtaXJyb3JcIl0sIG1vZCk7XG4gIGVsc2UgLy8gUGxhaW4gYnJvd3NlciBlbnZcbiAgICBtb2QoQ29kZU1pcnJvcik7XG59KShmdW5jdGlvbihDb2RlTWlycm9yKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIHZhciBISU5UX0VMRU1FTlRfQ0xBU1MgICAgICAgID0gXCJDb2RlTWlycm9yLWhpbnRcIjtcbiAgdmFyIEFDVElWRV9ISU5UX0VMRU1FTlRfQ0xBU1MgPSBcIkNvZGVNaXJyb3ItaGludC1hY3RpdmVcIjtcblxuICAvLyBUaGlzIGlzIHRoZSBvbGQgaW50ZXJmYWNlLCBrZXB0IGFyb3VuZCBmb3Igbm93IHRvIHN0YXlcbiAgLy8gYmFja3dhcmRzLWNvbXBhdGlibGUuXG4gIENvZGVNaXJyb3Iuc2hvd0hpbnQgPSBmdW5jdGlvbihjbSwgZ2V0SGludHMsIG9wdGlvbnMpIHtcbiAgICBpZiAoIWdldEhpbnRzKSByZXR1cm4gY20uc2hvd0hpbnQob3B0aW9ucyk7XG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5hc3luYykgZ2V0SGludHMuYXN5bmMgPSB0cnVlO1xuICAgIHZhciBuZXdPcHRzID0ge2hpbnQ6IGdldEhpbnRzfTtcbiAgICBpZiAob3B0aW9ucykgZm9yICh2YXIgcHJvcCBpbiBvcHRpb25zKSBuZXdPcHRzW3Byb3BdID0gb3B0aW9uc1twcm9wXTtcbiAgICByZXR1cm4gY20uc2hvd0hpbnQobmV3T3B0cyk7XG4gIH07XG5cbiAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24oXCJzaG93SGludFwiLCBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHBhcnNlT3B0aW9ucyh0aGlzLCB0aGlzLmdldEN1cnNvcihcInN0YXJ0XCIpLCBvcHRpb25zKTtcbiAgICB2YXIgc2VsZWN0aW9ucyA9IHRoaXMubGlzdFNlbGVjdGlvbnMoKVxuICAgIGlmIChzZWxlY3Rpb25zLmxlbmd0aCA+IDEpIHJldHVybjtcbiAgICAvLyBCeSBkZWZhdWx0LCBkb24ndCBhbGxvdyBjb21wbGV0aW9uIHdoZW4gc29tZXRoaW5nIGlzIHNlbGVjdGVkLlxuICAgIC8vIEEgaGludCBmdW5jdGlvbiBjYW4gaGF2ZSBhIGBzdXBwb3J0c1NlbGVjdGlvbmAgcHJvcGVydHkgdG9cbiAgICAvLyBpbmRpY2F0ZSB0aGF0IGl0IGNhbiBoYW5kbGUgc2VsZWN0aW9ucy5cbiAgICBpZiAodGhpcy5zb21ldGhpbmdTZWxlY3RlZCgpKSB7XG4gICAgICBpZiAoIW9wdGlvbnMuaGludC5zdXBwb3J0c1NlbGVjdGlvbikgcmV0dXJuO1xuICAgICAgLy8gRG9uJ3QgdHJ5IHdpdGggY3Jvc3MtbGluZSBzZWxlY3Rpb25zXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGVjdGlvbnMubGVuZ3RoOyBpKyspXG4gICAgICAgIGlmIChzZWxlY3Rpb25zW2ldLmhlYWQubGluZSAhPSBzZWxlY3Rpb25zW2ldLmFuY2hvci5saW5lKSByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhdGUuY29tcGxldGlvbkFjdGl2ZSkgdGhpcy5zdGF0ZS5jb21wbGV0aW9uQWN0aXZlLmNsb3NlKCk7XG4gICAgdmFyIGNvbXBsZXRpb24gPSB0aGlzLnN0YXRlLmNvbXBsZXRpb25BY3RpdmUgPSBuZXcgQ29tcGxldGlvbih0aGlzLCBvcHRpb25zKTtcbiAgICBpZiAoIWNvbXBsZXRpb24ub3B0aW9ucy5oaW50KSByZXR1cm47XG5cbiAgICBDb2RlTWlycm9yLnNpZ25hbCh0aGlzLCBcInN0YXJ0Q29tcGxldGlvblwiLCB0aGlzKTtcbiAgICBjb21wbGV0aW9uLnVwZGF0ZSh0cnVlKTtcbiAgfSk7XG5cbiAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24oXCJjbG9zZUhpbnRcIiwgZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuY29tcGxldGlvbkFjdGl2ZSkgdGhpcy5zdGF0ZS5jb21wbGV0aW9uQWN0aXZlLmNsb3NlKClcbiAgfSlcblxuICBmdW5jdGlvbiBDb21wbGV0aW9uKGNtLCBvcHRpb25zKSB7XG4gICAgdGhpcy5jbSA9IGNtO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy53aWRnZXQgPSBudWxsO1xuICAgIHRoaXMuZGVib3VuY2UgPSAwO1xuICAgIHRoaXMudGljayA9IDA7XG4gICAgdGhpcy5zdGFydFBvcyA9IHRoaXMuY20uZ2V0Q3Vyc29yKFwic3RhcnRcIik7XG4gICAgdGhpcy5zdGFydExlbiA9IHRoaXMuY20uZ2V0TGluZSh0aGlzLnN0YXJ0UG9zLmxpbmUpLmxlbmd0aCAtIHRoaXMuY20uZ2V0U2VsZWN0aW9uKCkubGVuZ3RoO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIGNtLm9uKFwiY3Vyc29yQWN0aXZpdHlcIiwgdGhpcy5hY3Rpdml0eUZ1bmMgPSBmdW5jdGlvbigpIHsgc2VsZi5jdXJzb3JBY3Rpdml0eSgpOyB9KTtcbiAgfVxuXG4gIHZhciByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IGZ1bmN0aW9uKGZuKSB7XG4gICAgcmV0dXJuIHNldFRpbWVvdXQoZm4sIDEwMDAvNjApO1xuICB9O1xuICB2YXIgY2FuY2VsQW5pbWF0aW9uRnJhbWUgPSB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUgfHwgY2xlYXJUaW1lb3V0O1xuXG4gIENvbXBsZXRpb24ucHJvdG90eXBlID0ge1xuICAgIGNsb3NlOiBmdW5jdGlvbigpIHtcbiAgICAgIGlmICghdGhpcy5hY3RpdmUoKSkgcmV0dXJuO1xuICAgICAgdGhpcy5jbS5zdGF0ZS5jb21wbGV0aW9uQWN0aXZlID0gbnVsbDtcbiAgICAgIHRoaXMudGljayA9IG51bGw7XG4gICAgICB0aGlzLmNtLm9mZihcImN1cnNvckFjdGl2aXR5XCIsIHRoaXMuYWN0aXZpdHlGdW5jKTtcblxuICAgICAgaWYgKHRoaXMud2lkZ2V0ICYmIHRoaXMuZGF0YSkgQ29kZU1pcnJvci5zaWduYWwodGhpcy5kYXRhLCBcImNsb3NlXCIpO1xuICAgICAgaWYgKHRoaXMud2lkZ2V0KSB0aGlzLndpZGdldC5jbG9zZSgpO1xuICAgICAgQ29kZU1pcnJvci5zaWduYWwodGhpcy5jbSwgXCJlbmRDb21wbGV0aW9uXCIsIHRoaXMuY20pO1xuICAgIH0sXG5cbiAgICBhY3RpdmU6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY20uc3RhdGUuY29tcGxldGlvbkFjdGl2ZSA9PSB0aGlzO1xuICAgIH0sXG5cbiAgICBwaWNrOiBmdW5jdGlvbihkYXRhLCBpKSB7XG4gICAgICB2YXIgY29tcGxldGlvbiA9IGRhdGEubGlzdFtpXSwgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLmNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKGNvbXBsZXRpb24uaGludClcbiAgICAgICAgICBjb21wbGV0aW9uLmhpbnQoc2VsZi5jbSwgZGF0YSwgY29tcGxldGlvbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzZWxmLmNtLnJlcGxhY2VSYW5nZShnZXRUZXh0KGNvbXBsZXRpb24pLCBjb21wbGV0aW9uLmZyb20gfHwgZGF0YS5mcm9tLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb24udG8gfHwgZGF0YS50bywgXCJjb21wbGV0ZVwiKTtcbiAgICAgICAgQ29kZU1pcnJvci5zaWduYWwoZGF0YSwgXCJwaWNrXCIsIGNvbXBsZXRpb24pO1xuICAgICAgICBzZWxmLmNtLnNjcm9sbEludG9WaWV3KCk7XG4gICAgICB9KVxuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0sXG5cbiAgICBjdXJzb3JBY3Rpdml0eTogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5kZWJvdW5jZSkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmRlYm91bmNlKTtcbiAgICAgICAgdGhpcy5kZWJvdW5jZSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHZhciBpZGVudFN0YXJ0ID0gdGhpcy5zdGFydFBvcztcbiAgICAgIGlmKHRoaXMuZGF0YSkge1xuICAgICAgICBpZGVudFN0YXJ0ID0gdGhpcy5kYXRhLmZyb207XG4gICAgICB9XG5cbiAgICAgIHZhciBwb3MgPSB0aGlzLmNtLmdldEN1cnNvcigpLCBsaW5lID0gdGhpcy5jbS5nZXRMaW5lKHBvcy5saW5lKTtcbiAgICAgIGlmIChwb3MubGluZSAhPSB0aGlzLnN0YXJ0UG9zLmxpbmUgfHwgbGluZS5sZW5ndGggLSBwb3MuY2ggIT0gdGhpcy5zdGFydExlbiAtIHRoaXMuc3RhcnRQb3MuY2ggfHxcbiAgICAgICAgICBwb3MuY2ggPCBpZGVudFN0YXJ0LmNoIHx8IHRoaXMuY20uc29tZXRoaW5nU2VsZWN0ZWQoKSB8fFxuICAgICAgICAgICghcG9zLmNoIHx8IHRoaXMub3B0aW9ucy5jbG9zZUNoYXJhY3RlcnMudGVzdChsaW5lLmNoYXJBdChwb3MuY2ggLSAxKSkpKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgdGhpcy5kZWJvdW5jZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHtzZWxmLnVwZGF0ZSgpO30pO1xuICAgICAgICBpZiAodGhpcy53aWRnZXQpIHRoaXMud2lkZ2V0LmRpc2FibGUoKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgdXBkYXRlOiBmdW5jdGlvbihmaXJzdCkge1xuICAgICAgaWYgKHRoaXMudGljayA9PSBudWxsKSByZXR1cm5cbiAgICAgIHZhciBzZWxmID0gdGhpcywgbXlUaWNrID0gKyt0aGlzLnRpY2tcbiAgICAgIGZldGNoSGludHModGhpcy5vcHRpb25zLmhpbnQsIHRoaXMuY20sIHRoaXMub3B0aW9ucywgZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICBpZiAoc2VsZi50aWNrID09IG15VGljaykgc2VsZi5maW5pc2hVcGRhdGUoZGF0YSwgZmlyc3QpXG4gICAgICB9KVxuICAgIH0sXG5cbiAgICBmaW5pc2hVcGRhdGU6IGZ1bmN0aW9uKGRhdGEsIGZpcnN0KSB7XG4gICAgICBpZiAodGhpcy5kYXRhKSBDb2RlTWlycm9yLnNpZ25hbCh0aGlzLmRhdGEsIFwidXBkYXRlXCIpO1xuXG4gICAgICB2YXIgcGlja2VkID0gKHRoaXMud2lkZ2V0ICYmIHRoaXMud2lkZ2V0LnBpY2tlZCkgfHwgKGZpcnN0ICYmIHRoaXMub3B0aW9ucy5jb21wbGV0ZVNpbmdsZSk7XG4gICAgICBpZiAodGhpcy53aWRnZXQpIHRoaXMud2lkZ2V0LmNsb3NlKCk7XG5cbiAgICAgIHRoaXMuZGF0YSA9IGRhdGE7XG5cbiAgICAgIGlmIChkYXRhICYmIGRhdGEubGlzdC5sZW5ndGgpIHtcbiAgICAgICAgaWYgKHBpY2tlZCAmJiBkYXRhLmxpc3QubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICB0aGlzLnBpY2soZGF0YSwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy53aWRnZXQgPSBuZXcgV2lkZ2V0KHRoaXMsIGRhdGEpO1xuICAgICAgICAgIENvZGVNaXJyb3Iuc2lnbmFsKGRhdGEsIFwic2hvd25cIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VPcHRpb25zKGNtLCBwb3MsIG9wdGlvbnMpIHtcbiAgICB2YXIgZWRpdG9yID0gY20ub3B0aW9ucy5oaW50T3B0aW9ucztcbiAgICB2YXIgb3V0ID0ge307XG4gICAgZm9yICh2YXIgcHJvcCBpbiBkZWZhdWx0T3B0aW9ucykgb3V0W3Byb3BdID0gZGVmYXVsdE9wdGlvbnNbcHJvcF07XG4gICAgaWYgKGVkaXRvcikgZm9yICh2YXIgcHJvcCBpbiBlZGl0b3IpXG4gICAgICBpZiAoZWRpdG9yW3Byb3BdICE9PSB1bmRlZmluZWQpIG91dFtwcm9wXSA9IGVkaXRvcltwcm9wXTtcbiAgICBpZiAob3B0aW9ucykgZm9yICh2YXIgcHJvcCBpbiBvcHRpb25zKVxuICAgICAgaWYgKG9wdGlvbnNbcHJvcF0gIT09IHVuZGVmaW5lZCkgb3V0W3Byb3BdID0gb3B0aW9uc1twcm9wXTtcbiAgICBpZiAob3V0LmhpbnQucmVzb2x2ZSkgb3V0LmhpbnQgPSBvdXQuaGludC5yZXNvbHZlKGNtLCBwb3MpXG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldFRleHQoY29tcGxldGlvbikge1xuICAgIGlmICh0eXBlb2YgY29tcGxldGlvbiA9PSBcInN0cmluZ1wiKSByZXR1cm4gY29tcGxldGlvbjtcbiAgICBlbHNlIHJldHVybiBjb21wbGV0aW9uLnRleHQ7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZEtleU1hcChjb21wbGV0aW9uLCBoYW5kbGUpIHtcbiAgICB2YXIgYmFzZU1hcCA9IHtcbiAgICAgIFVwOiBmdW5jdGlvbigpIHtoYW5kbGUubW92ZUZvY3VzKC0xKTt9LFxuICAgICAgRG93bjogZnVuY3Rpb24oKSB7aGFuZGxlLm1vdmVGb2N1cygxKTt9LFxuICAgICAgUGFnZVVwOiBmdW5jdGlvbigpIHtoYW5kbGUubW92ZUZvY3VzKC1oYW5kbGUubWVudVNpemUoKSArIDEsIHRydWUpO30sXG4gICAgICBQYWdlRG93bjogZnVuY3Rpb24oKSB7aGFuZGxlLm1vdmVGb2N1cyhoYW5kbGUubWVudVNpemUoKSAtIDEsIHRydWUpO30sXG4gICAgICBIb21lOiBmdW5jdGlvbigpIHtoYW5kbGUuc2V0Rm9jdXMoMCk7fSxcbiAgICAgIEVuZDogZnVuY3Rpb24oKSB7aGFuZGxlLnNldEZvY3VzKGhhbmRsZS5sZW5ndGggLSAxKTt9LFxuICAgICAgRW50ZXI6IGhhbmRsZS5waWNrLFxuICAgICAgVGFiOiBoYW5kbGUucGljayxcbiAgICAgIEVzYzogaGFuZGxlLmNsb3NlXG4gICAgfTtcblxuICAgIHZhciBtYWMgPSAvTWFjLy50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSk7XG5cbiAgICBpZiAobWFjKSB7XG4gICAgICBiYXNlTWFwW1wiQ3RybC1QXCJdID0gZnVuY3Rpb24oKSB7aGFuZGxlLm1vdmVGb2N1cygtMSk7fTtcbiAgICAgIGJhc2VNYXBbXCJDdHJsLU5cIl0gPSBmdW5jdGlvbigpIHtoYW5kbGUubW92ZUZvY3VzKDEpO307XG4gICAgfVxuXG4gICAgdmFyIGN1c3RvbSA9IGNvbXBsZXRpb24ub3B0aW9ucy5jdXN0b21LZXlzO1xuICAgIHZhciBvdXJNYXAgPSBjdXN0b20gPyB7fSA6IGJhc2VNYXA7XG4gICAgZnVuY3Rpb24gYWRkQmluZGluZyhrZXksIHZhbCkge1xuICAgICAgdmFyIGJvdW5kO1xuICAgICAgaWYgKHR5cGVvZiB2YWwgIT0gXCJzdHJpbmdcIilcbiAgICAgICAgYm91bmQgPSBmdW5jdGlvbihjbSkgeyByZXR1cm4gdmFsKGNtLCBoYW5kbGUpOyB9O1xuICAgICAgLy8gVGhpcyBtZWNoYW5pc20gaXMgZGVwcmVjYXRlZFxuICAgICAgZWxzZSBpZiAoYmFzZU1hcC5oYXNPd25Qcm9wZXJ0eSh2YWwpKVxuICAgICAgICBib3VuZCA9IGJhc2VNYXBbdmFsXTtcbiAgICAgIGVsc2VcbiAgICAgICAgYm91bmQgPSB2YWw7XG4gICAgICBvdXJNYXBba2V5XSA9IGJvdW5kO1xuICAgIH1cbiAgICBpZiAoY3VzdG9tKVxuICAgICAgZm9yICh2YXIga2V5IGluIGN1c3RvbSkgaWYgKGN1c3RvbS5oYXNPd25Qcm9wZXJ0eShrZXkpKVxuICAgICAgICBhZGRCaW5kaW5nKGtleSwgY3VzdG9tW2tleV0pO1xuICAgIHZhciBleHRyYSA9IGNvbXBsZXRpb24ub3B0aW9ucy5leHRyYUtleXM7XG4gICAgaWYgKGV4dHJhKVxuICAgICAgZm9yICh2YXIga2V5IGluIGV4dHJhKSBpZiAoZXh0cmEuaGFzT3duUHJvcGVydHkoa2V5KSlcbiAgICAgICAgYWRkQmluZGluZyhrZXksIGV4dHJhW2tleV0pO1xuICAgIHJldHVybiBvdXJNYXA7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRIaW50RWxlbWVudChoaW50c0VsZW1lbnQsIGVsKSB7XG4gICAgd2hpbGUgKGVsICYmIGVsICE9IGhpbnRzRWxlbWVudCkge1xuICAgICAgaWYgKGVsLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgPT09IFwiTElcIiAmJiBlbC5wYXJlbnROb2RlID09IGhpbnRzRWxlbWVudCkgcmV0dXJuIGVsO1xuICAgICAgZWwgPSBlbC5wYXJlbnROb2RlO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIFdpZGdldChjb21wbGV0aW9uLCBkYXRhKSB7XG4gICAgdGhpcy5jb21wbGV0aW9uID0gY29tcGxldGlvbjtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgIHRoaXMucGlja2VkID0gZmFsc2U7XG4gICAgdmFyIHdpZGdldCA9IHRoaXMsIGNtID0gY29tcGxldGlvbi5jbTtcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IGNtLmdldElucHV0RmllbGQoKS5vd25lckRvY3VtZW50O1xuICAgIHZhciBwYXJlbnRXaW5kb3cgPSBvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IG93bmVyRG9jdW1lbnQucGFyZW50V2luZG93O1xuXG4gICAgdmFyIGhpbnRzID0gdGhpcy5oaW50cyA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInVsXCIpO1xuICAgIHZhciB0aGVtZSA9IGNvbXBsZXRpb24uY20ub3B0aW9ucy50aGVtZTtcbiAgICBoaW50cy5jbGFzc05hbWUgPSBcIkNvZGVNaXJyb3ItaGludHMgXCIgKyB0aGVtZTtcbiAgICB0aGlzLnNlbGVjdGVkSGludCA9IGRhdGEuc2VsZWN0ZWRIaW50IHx8IDA7XG5cbiAgICB2YXIgY29tcGxldGlvbnMgPSBkYXRhLmxpc3Q7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wbGV0aW9ucy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGVsdCA9IGhpbnRzLmFwcGVuZENoaWxkKG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpXCIpKSwgY3VyID0gY29tcGxldGlvbnNbaV07XG4gICAgICB2YXIgY2xhc3NOYW1lID0gSElOVF9FTEVNRU5UX0NMQVNTICsgKGkgIT0gdGhpcy5zZWxlY3RlZEhpbnQgPyBcIlwiIDogXCIgXCIgKyBBQ1RJVkVfSElOVF9FTEVNRU5UX0NMQVNTKTtcbiAgICAgIGlmIChjdXIuY2xhc3NOYW1lICE9IG51bGwpIGNsYXNzTmFtZSA9IGN1ci5jbGFzc05hbWUgKyBcIiBcIiArIGNsYXNzTmFtZTtcbiAgICAgIGVsdC5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG4gICAgICBpZiAoY3VyLnJlbmRlcikgY3VyLnJlbmRlcihlbHQsIGRhdGEsIGN1cik7XG4gICAgICBlbHNlIGVsdC5hcHBlbmRDaGlsZChvd25lckRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGN1ci5kaXNwbGF5VGV4dCB8fCBnZXRUZXh0KGN1cikpKTtcbiAgICAgIGVsdC5oaW50SWQgPSBpO1xuICAgIH1cblxuICAgIHZhciBjb250YWluZXIgPSBjb21wbGV0aW9uLm9wdGlvbnMuY29udGFpbmVyIHx8IG93bmVyRG9jdW1lbnQuYm9keTtcbiAgICB2YXIgcG9zID0gY20uY3Vyc29yQ29vcmRzKGNvbXBsZXRpb24ub3B0aW9ucy5hbGlnbldpdGhXb3JkID8gZGF0YS5mcm9tIDogbnVsbCk7XG4gICAgdmFyIGxlZnQgPSBwb3MubGVmdCwgdG9wID0gcG9zLmJvdHRvbSwgYmVsb3cgPSB0cnVlO1xuICAgIHZhciBvZmZzZXRMZWZ0ID0gMCwgb2Zmc2V0VG9wID0gMDtcbiAgICBpZiAoY29udGFpbmVyICE9PSBvd25lckRvY3VtZW50LmJvZHkpIHtcbiAgICAgIC8vIFdlIG9mZnNldCB0aGUgY3Vyc29yIHBvc2l0aW9uIGJlY2F1c2UgbGVmdCBhbmQgdG9wIGFyZSByZWxhdGl2ZSB0byB0aGUgb2Zmc2V0UGFyZW50J3MgdG9wIGxlZnQgY29ybmVyLlxuICAgICAgdmFyIGlzQ29udGFpbmVyUG9zaXRpb25lZCA9IFsnYWJzb2x1dGUnLCAncmVsYXRpdmUnLCAnZml4ZWQnXS5pbmRleE9mKHBhcmVudFdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGNvbnRhaW5lcikucG9zaXRpb24pICE9PSAtMTtcbiAgICAgIHZhciBvZmZzZXRQYXJlbnQgPSBpc0NvbnRhaW5lclBvc2l0aW9uZWQgPyBjb250YWluZXIgOiBjb250YWluZXIub2Zmc2V0UGFyZW50O1xuICAgICAgdmFyIG9mZnNldFBhcmVudFBvc2l0aW9uID0gb2Zmc2V0UGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgdmFyIGJvZHlQb3NpdGlvbiA9IG93bmVyRG9jdW1lbnQuYm9keS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIG9mZnNldExlZnQgPSAob2Zmc2V0UGFyZW50UG9zaXRpb24ubGVmdCAtIGJvZHlQb3NpdGlvbi5sZWZ0IC0gb2Zmc2V0UGFyZW50LnNjcm9sbExlZnQpO1xuICAgICAgb2Zmc2V0VG9wID0gKG9mZnNldFBhcmVudFBvc2l0aW9uLnRvcCAtIGJvZHlQb3NpdGlvbi50b3AgLSBvZmZzZXRQYXJlbnQuc2Nyb2xsVG9wKTtcbiAgICB9XG4gICAgaGludHMuc3R5bGUubGVmdCA9IChsZWZ0IC0gb2Zmc2V0TGVmdCkgKyBcInB4XCI7XG4gICAgaGludHMuc3R5bGUudG9wID0gKHRvcCAtIG9mZnNldFRvcCkgKyBcInB4XCI7XG5cbiAgICAvLyBJZiB3ZSdyZSBhdCB0aGUgZWRnZSBvZiB0aGUgc2NyZWVuLCB0aGVuIHdlIHdhbnQgdGhlIG1lbnUgdG8gYXBwZWFyIG9uIHRoZSBsZWZ0IG9mIHRoZSBjdXJzb3IuXG4gICAgdmFyIHdpblcgPSBwYXJlbnRXaW5kb3cuaW5uZXJXaWR0aCB8fCBNYXRoLm1heChvd25lckRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgsIG93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFdpZHRoKTtcbiAgICB2YXIgd2luSCA9IHBhcmVudFdpbmRvdy5pbm5lckhlaWdodCB8fCBNYXRoLm1heChvd25lckRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0LCBvd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRIZWlnaHQpO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChoaW50cyk7XG4gICAgdmFyIGJveCA9IGhpbnRzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCBvdmVybGFwWSA9IGJveC5ib3R0b20gLSB3aW5IO1xuICAgIHZhciBzY3JvbGxzID0gaGludHMuc2Nyb2xsSGVpZ2h0ID4gaGludHMuY2xpZW50SGVpZ2h0ICsgMVxuICAgIHZhciBzdGFydFNjcm9sbCA9IGNtLmdldFNjcm9sbEluZm8oKTtcblxuICAgIGlmIChvdmVybGFwWSA+IDApIHtcbiAgICAgIHZhciBoZWlnaHQgPSBib3guYm90dG9tIC0gYm94LnRvcCwgY3VyVG9wID0gcG9zLnRvcCAtIChwb3MuYm90dG9tIC0gYm94LnRvcCk7XG4gICAgICBpZiAoY3VyVG9wIC0gaGVpZ2h0ID4gMCkgeyAvLyBGaXRzIGFib3ZlIGN1cnNvclxuICAgICAgICBoaW50cy5zdHlsZS50b3AgPSAodG9wID0gcG9zLnRvcCAtIGhlaWdodCAtIG9mZnNldFRvcCkgKyBcInB4XCI7XG4gICAgICAgIGJlbG93ID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKGhlaWdodCA+IHdpbkgpIHtcbiAgICAgICAgaGludHMuc3R5bGUuaGVpZ2h0ID0gKHdpbkggLSA1KSArIFwicHhcIjtcbiAgICAgICAgaGludHMuc3R5bGUudG9wID0gKHRvcCA9IHBvcy5ib3R0b20gLSBib3gudG9wIC0gb2Zmc2V0VG9wKSArIFwicHhcIjtcbiAgICAgICAgdmFyIGN1cnNvciA9IGNtLmdldEN1cnNvcigpO1xuICAgICAgICBpZiAoZGF0YS5mcm9tLmNoICE9IGN1cnNvci5jaCkge1xuICAgICAgICAgIHBvcyA9IGNtLmN1cnNvckNvb3JkcyhjdXJzb3IpO1xuICAgICAgICAgIGhpbnRzLnN0eWxlLmxlZnQgPSAobGVmdCA9IHBvcy5sZWZ0IC0gb2Zmc2V0TGVmdCkgKyBcInB4XCI7XG4gICAgICAgICAgYm94ID0gaGludHMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG92ZXJsYXBYID0gYm94LnJpZ2h0IC0gd2luVztcbiAgICBpZiAob3ZlcmxhcFggPiAwKSB7XG4gICAgICBpZiAoYm94LnJpZ2h0IC0gYm94LmxlZnQgPiB3aW5XKSB7XG4gICAgICAgIGhpbnRzLnN0eWxlLndpZHRoID0gKHdpblcgLSA1KSArIFwicHhcIjtcbiAgICAgICAgb3ZlcmxhcFggLT0gKGJveC5yaWdodCAtIGJveC5sZWZ0KSAtIHdpblc7XG4gICAgICB9XG4gICAgICBoaW50cy5zdHlsZS5sZWZ0ID0gKGxlZnQgPSBwb3MubGVmdCAtIG92ZXJsYXBYIC0gb2Zmc2V0TGVmdCkgKyBcInB4XCI7XG4gICAgfVxuICAgIGlmIChzY3JvbGxzKSBmb3IgKHZhciBub2RlID0gaGludHMuZmlyc3RDaGlsZDsgbm9kZTsgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmcpXG4gICAgICBub2RlLnN0eWxlLnBhZGRpbmdSaWdodCA9IGNtLmRpc3BsYXkubmF0aXZlQmFyV2lkdGggKyBcInB4XCJcblxuICAgIGNtLmFkZEtleU1hcCh0aGlzLmtleU1hcCA9IGJ1aWxkS2V5TWFwKGNvbXBsZXRpb24sIHtcbiAgICAgIG1vdmVGb2N1czogZnVuY3Rpb24obiwgYXZvaWRXcmFwKSB7IHdpZGdldC5jaGFuZ2VBY3RpdmUod2lkZ2V0LnNlbGVjdGVkSGludCArIG4sIGF2b2lkV3JhcCk7IH0sXG4gICAgICBzZXRGb2N1czogZnVuY3Rpb24obikgeyB3aWRnZXQuY2hhbmdlQWN0aXZlKG4pOyB9LFxuICAgICAgbWVudVNpemU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gd2lkZ2V0LnNjcmVlbkFtb3VudCgpOyB9LFxuICAgICAgbGVuZ3RoOiBjb21wbGV0aW9ucy5sZW5ndGgsXG4gICAgICBjbG9zZTogZnVuY3Rpb24oKSB7IGNvbXBsZXRpb24uY2xvc2UoKTsgfSxcbiAgICAgIHBpY2s6IGZ1bmN0aW9uKCkgeyB3aWRnZXQucGljaygpOyB9LFxuICAgICAgZGF0YTogZGF0YVxuICAgIH0pKTtcblxuICAgIGlmIChjb21wbGV0aW9uLm9wdGlvbnMuY2xvc2VPblVuZm9jdXMpIHtcbiAgICAgIHZhciBjbG9zaW5nT25CbHVyO1xuICAgICAgY20ub24oXCJibHVyXCIsIHRoaXMub25CbHVyID0gZnVuY3Rpb24oKSB7IGNsb3NpbmdPbkJsdXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjb21wbGV0aW9uLmNsb3NlKCk7IH0sIDEwMCk7IH0pO1xuICAgICAgY20ub24oXCJmb2N1c1wiLCB0aGlzLm9uRm9jdXMgPSBmdW5jdGlvbigpIHsgY2xlYXJUaW1lb3V0KGNsb3NpbmdPbkJsdXIpOyB9KTtcbiAgICB9XG5cbiAgICBjbS5vbihcInNjcm9sbFwiLCB0aGlzLm9uU2Nyb2xsID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY3VyU2Nyb2xsID0gY20uZ2V0U2Nyb2xsSW5mbygpLCBlZGl0b3IgPSBjbS5nZXRXcmFwcGVyRWxlbWVudCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgdmFyIG5ld1RvcCA9IHRvcCArIHN0YXJ0U2Nyb2xsLnRvcCAtIGN1clNjcm9sbC50b3A7XG4gICAgICB2YXIgcG9pbnQgPSBuZXdUb3AgLSAocGFyZW50V2luZG93LnBhZ2VZT2Zmc2V0IHx8IChvd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCB8fCBvd25lckRvY3VtZW50LmJvZHkpLnNjcm9sbFRvcCk7XG4gICAgICBpZiAoIWJlbG93KSBwb2ludCArPSBoaW50cy5vZmZzZXRIZWlnaHQ7XG4gICAgICBpZiAocG9pbnQgPD0gZWRpdG9yLnRvcCB8fCBwb2ludCA+PSBlZGl0b3IuYm90dG9tKSByZXR1cm4gY29tcGxldGlvbi5jbG9zZSgpO1xuICAgICAgaGludHMuc3R5bGUudG9wID0gbmV3VG9wICsgXCJweFwiO1xuICAgICAgaGludHMuc3R5bGUubGVmdCA9IChsZWZ0ICsgc3RhcnRTY3JvbGwubGVmdCAtIGN1clNjcm9sbC5sZWZ0KSArIFwicHhcIjtcbiAgICB9KTtcblxuICAgIENvZGVNaXJyb3Iub24oaGludHMsIFwiZGJsY2xpY2tcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgdmFyIHQgPSBnZXRIaW50RWxlbWVudChoaW50cywgZS50YXJnZXQgfHwgZS5zcmNFbGVtZW50KTtcbiAgICAgIGlmICh0ICYmIHQuaGludElkICE9IG51bGwpIHt3aWRnZXQuY2hhbmdlQWN0aXZlKHQuaGludElkKTsgd2lkZ2V0LnBpY2soKTt9XG4gICAgfSk7XG5cbiAgICBDb2RlTWlycm9yLm9uKGhpbnRzLCBcImNsaWNrXCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHZhciB0ID0gZ2V0SGludEVsZW1lbnQoaGludHMsIGUudGFyZ2V0IHx8IGUuc3JjRWxlbWVudCk7XG4gICAgICBpZiAodCAmJiB0LmhpbnRJZCAhPSBudWxsKSB7XG4gICAgICAgIHdpZGdldC5jaGFuZ2VBY3RpdmUodC5oaW50SWQpO1xuICAgICAgICBpZiAoY29tcGxldGlvbi5vcHRpb25zLmNvbXBsZXRlT25TaW5nbGVDbGljaykgd2lkZ2V0LnBpY2soKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIENvZGVNaXJyb3Iub24oaGludHMsIFwibW91c2Vkb3duXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe2NtLmZvY3VzKCk7fSwgMjApO1xuICAgIH0pO1xuICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmUoKVxuXG4gICAgQ29kZU1pcnJvci5zaWduYWwoZGF0YSwgXCJzZWxlY3RcIiwgY29tcGxldGlvbnNbdGhpcy5zZWxlY3RlZEhpbnRdLCBoaW50cy5jaGlsZE5vZGVzW3RoaXMuc2VsZWN0ZWRIaW50XSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBXaWRnZXQucHJvdG90eXBlID0ge1xuICAgIGNsb3NlOiBmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLmNvbXBsZXRpb24ud2lkZ2V0ICE9IHRoaXMpIHJldHVybjtcbiAgICAgIHRoaXMuY29tcGxldGlvbi53aWRnZXQgPSBudWxsO1xuICAgICAgdGhpcy5oaW50cy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuaGludHMpO1xuICAgICAgdGhpcy5jb21wbGV0aW9uLmNtLnJlbW92ZUtleU1hcCh0aGlzLmtleU1hcCk7XG5cbiAgICAgIHZhciBjbSA9IHRoaXMuY29tcGxldGlvbi5jbTtcbiAgICAgIGlmICh0aGlzLmNvbXBsZXRpb24ub3B0aW9ucy5jbG9zZU9uVW5mb2N1cykge1xuICAgICAgICBjbS5vZmYoXCJibHVyXCIsIHRoaXMub25CbHVyKTtcbiAgICAgICAgY20ub2ZmKFwiZm9jdXNcIiwgdGhpcy5vbkZvY3VzKTtcbiAgICAgIH1cbiAgICAgIGNtLm9mZihcInNjcm9sbFwiLCB0aGlzLm9uU2Nyb2xsKTtcbiAgICB9LFxuXG4gICAgZGlzYWJsZTogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmNvbXBsZXRpb24uY20ucmVtb3ZlS2V5TWFwKHRoaXMua2V5TWFwKTtcbiAgICAgIHZhciB3aWRnZXQgPSB0aGlzO1xuICAgICAgdGhpcy5rZXlNYXAgPSB7RW50ZXI6IGZ1bmN0aW9uKCkgeyB3aWRnZXQucGlja2VkID0gdHJ1ZTsgfX07XG4gICAgICB0aGlzLmNvbXBsZXRpb24uY20uYWRkS2V5TWFwKHRoaXMua2V5TWFwKTtcbiAgICB9LFxuXG4gICAgcGljazogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmNvbXBsZXRpb24ucGljayh0aGlzLmRhdGEsIHRoaXMuc2VsZWN0ZWRIaW50KTtcbiAgICB9LFxuXG4gICAgY2hhbmdlQWN0aXZlOiBmdW5jdGlvbihpLCBhdm9pZFdyYXApIHtcbiAgICAgIGlmIChpID49IHRoaXMuZGF0YS5saXN0Lmxlbmd0aClcbiAgICAgICAgaSA9IGF2b2lkV3JhcCA/IHRoaXMuZGF0YS5saXN0Lmxlbmd0aCAtIDEgOiAwO1xuICAgICAgZWxzZSBpZiAoaSA8IDApXG4gICAgICAgIGkgPSBhdm9pZFdyYXAgPyAwICA6IHRoaXMuZGF0YS5saXN0Lmxlbmd0aCAtIDE7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEhpbnQgPT0gaSkgcmV0dXJuO1xuICAgICAgdmFyIG5vZGUgPSB0aGlzLmhpbnRzLmNoaWxkTm9kZXNbdGhpcy5zZWxlY3RlZEhpbnRdO1xuICAgICAgaWYgKG5vZGUpIG5vZGUuY2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWUucmVwbGFjZShcIiBcIiArIEFDVElWRV9ISU5UX0VMRU1FTlRfQ0xBU1MsIFwiXCIpO1xuICAgICAgbm9kZSA9IHRoaXMuaGludHMuY2hpbGROb2Rlc1t0aGlzLnNlbGVjdGVkSGludCA9IGldO1xuICAgICAgbm9kZS5jbGFzc05hbWUgKz0gXCIgXCIgKyBBQ1RJVkVfSElOVF9FTEVNRU5UX0NMQVNTO1xuICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZSgpXG4gICAgICBDb2RlTWlycm9yLnNpZ25hbCh0aGlzLmRhdGEsIFwic2VsZWN0XCIsIHRoaXMuZGF0YS5saXN0W3RoaXMuc2VsZWN0ZWRIaW50XSwgbm9kZSk7XG4gICAgfSxcblxuICAgIHNjcm9sbFRvQWN0aXZlOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBtYXJnaW4gPSB0aGlzLmNvbXBsZXRpb24ub3B0aW9ucy5zY3JvbGxNYXJnaW4gfHwgMDtcbiAgICAgIHZhciBub2RlMSA9IHRoaXMuaGludHMuY2hpbGROb2Rlc1tNYXRoLm1heCgwLCB0aGlzLnNlbGVjdGVkSGludCAtIG1hcmdpbildO1xuICAgICAgdmFyIG5vZGUyID0gdGhpcy5oaW50cy5jaGlsZE5vZGVzW01hdGgubWluKHRoaXMuZGF0YS5saXN0Lmxlbmd0aCAtIDEsIHRoaXMuc2VsZWN0ZWRIaW50ICsgbWFyZ2luKV07XG4gICAgICB2YXIgZmlyc3ROb2RlID0gdGhpcy5oaW50cy5maXJzdENoaWxkO1xuICAgICAgaWYgKG5vZGUxLm9mZnNldFRvcCA8IHRoaXMuaGludHMuc2Nyb2xsVG9wKVxuICAgICAgICB0aGlzLmhpbnRzLnNjcm9sbFRvcCA9IG5vZGUxLm9mZnNldFRvcCAtIGZpcnN0Tm9kZS5vZmZzZXRUb3A7XG4gICAgICBlbHNlIGlmIChub2RlMi5vZmZzZXRUb3AgKyBub2RlMi5vZmZzZXRIZWlnaHQgPiB0aGlzLmhpbnRzLnNjcm9sbFRvcCArIHRoaXMuaGludHMuY2xpZW50SGVpZ2h0KVxuICAgICAgICB0aGlzLmhpbnRzLnNjcm9sbFRvcCA9IG5vZGUyLm9mZnNldFRvcCArIG5vZGUyLm9mZnNldEhlaWdodCAtIHRoaXMuaGludHMuY2xpZW50SGVpZ2h0ICsgZmlyc3ROb2RlLm9mZnNldFRvcDtcbiAgICB9LFxuXG4gICAgc2NyZWVuQW1vdW50OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMuaGludHMuY2xpZW50SGVpZ2h0IC8gdGhpcy5oaW50cy5maXJzdENoaWxkLm9mZnNldEhlaWdodCkgfHwgMTtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gYXBwbGljYWJsZUhlbHBlcnMoY20sIGhlbHBlcnMpIHtcbiAgICBpZiAoIWNtLnNvbWV0aGluZ1NlbGVjdGVkKCkpIHJldHVybiBoZWxwZXJzXG4gICAgdmFyIHJlc3VsdCA9IFtdXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoZWxwZXJzLmxlbmd0aDsgaSsrKVxuICAgICAgaWYgKGhlbHBlcnNbaV0uc3VwcG9ydHNTZWxlY3Rpb24pIHJlc3VsdC5wdXNoKGhlbHBlcnNbaV0pXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgZnVuY3Rpb24gZmV0Y2hIaW50cyhoaW50LCBjbSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgICBpZiAoaGludC5hc3luYykge1xuICAgICAgaGludChjbSwgY2FsbGJhY2ssIG9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciByZXN1bHQgPSBoaW50KGNtLCBvcHRpb25zKVxuICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQudGhlbikgcmVzdWx0LnRoZW4oY2FsbGJhY2spXG4gICAgICBlbHNlIGNhbGxiYWNrKHJlc3VsdClcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZXNvbHZlQXV0b0hpbnRzKGNtLCBwb3MpIHtcbiAgICB2YXIgaGVscGVycyA9IGNtLmdldEhlbHBlcnMocG9zLCBcImhpbnRcIiksIHdvcmRzXG4gICAgaWYgKGhlbHBlcnMubGVuZ3RoKSB7XG4gICAgICB2YXIgcmVzb2x2ZWQgPSBmdW5jdGlvbihjbSwgY2FsbGJhY2ssIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIGFwcCA9IGFwcGxpY2FibGVIZWxwZXJzKGNtLCBoZWxwZXJzKTtcbiAgICAgICAgZnVuY3Rpb24gcnVuKGkpIHtcbiAgICAgICAgICBpZiAoaSA9PSBhcHAubGVuZ3RoKSByZXR1cm4gY2FsbGJhY2sobnVsbClcbiAgICAgICAgICBmZXRjaEhpbnRzKGFwcFtpXSwgY20sIG9wdGlvbnMsIGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQubGlzdC5sZW5ndGggPiAwKSBjYWxsYmFjayhyZXN1bHQpXG4gICAgICAgICAgICBlbHNlIHJ1bihpICsgMSlcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHJ1bigwKVxuICAgICAgfVxuICAgICAgcmVzb2x2ZWQuYXN5bmMgPSB0cnVlXG4gICAgICByZXNvbHZlZC5zdXBwb3J0c1NlbGVjdGlvbiA9IHRydWVcbiAgICAgIHJldHVybiByZXNvbHZlZFxuICAgIH0gZWxzZSBpZiAod29yZHMgPSBjbS5nZXRIZWxwZXIoY20uZ2V0Q3Vyc29yKCksIFwiaGludFdvcmRzXCIpKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY20pIHsgcmV0dXJuIENvZGVNaXJyb3IuaGludC5mcm9tTGlzdChjbSwge3dvcmRzOiB3b3Jkc30pIH1cbiAgICB9IGVsc2UgaWYgKENvZGVNaXJyb3IuaGludC5hbnl3b3JkKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY20sIG9wdGlvbnMpIHsgcmV0dXJuIENvZGVNaXJyb3IuaGludC5hbnl3b3JkKGNtLCBvcHRpb25zKSB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHt9XG4gICAgfVxuICB9XG5cbiAgQ29kZU1pcnJvci5yZWdpc3RlckhlbHBlcihcImhpbnRcIiwgXCJhdXRvXCIsIHtcbiAgICByZXNvbHZlOiByZXNvbHZlQXV0b0hpbnRzXG4gIH0pO1xuXG4gIENvZGVNaXJyb3IucmVnaXN0ZXJIZWxwZXIoXCJoaW50XCIsIFwiZnJvbUxpc3RcIiwgZnVuY3Rpb24oY20sIG9wdGlvbnMpIHtcbiAgICB2YXIgY3VyID0gY20uZ2V0Q3Vyc29yKCksIHRva2VuID0gY20uZ2V0VG9rZW5BdChjdXIpXG4gICAgdmFyIHRlcm0sIGZyb20gPSBDb2RlTWlycm9yLlBvcyhjdXIubGluZSwgdG9rZW4uc3RhcnQpLCB0byA9IGN1clxuICAgIGlmICh0b2tlbi5zdGFydCA8IGN1ci5jaCAmJiAvXFx3Ly50ZXN0KHRva2VuLnN0cmluZy5jaGFyQXQoY3VyLmNoIC0gdG9rZW4uc3RhcnQgLSAxKSkpIHtcbiAgICAgIHRlcm0gPSB0b2tlbi5zdHJpbmcuc3Vic3RyKDAsIGN1ci5jaCAtIHRva2VuLnN0YXJ0KVxuICAgIH0gZWxzZSB7XG4gICAgICB0ZXJtID0gXCJcIlxuICAgICAgZnJvbSA9IGN1clxuICAgIH1cbiAgICB2YXIgZm91bmQgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9wdGlvbnMud29yZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3b3JkID0gb3B0aW9ucy53b3Jkc1tpXTtcbiAgICAgIGlmICh3b3JkLnNsaWNlKDAsIHRlcm0ubGVuZ3RoKSA9PSB0ZXJtKVxuICAgICAgICBmb3VuZC5wdXNoKHdvcmQpO1xuICAgIH1cblxuICAgIGlmIChmb3VuZC5sZW5ndGgpIHJldHVybiB7bGlzdDogZm91bmQsIGZyb206IGZyb20sIHRvOiB0b307XG4gIH0pO1xuXG4gIENvZGVNaXJyb3IuY29tbWFuZHMuYXV0b2NvbXBsZXRlID0gQ29kZU1pcnJvci5zaG93SGludDtcblxuICB2YXIgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgaGludDogQ29kZU1pcnJvci5oaW50LmF1dG8sXG4gICAgY29tcGxldGVTaW5nbGU6IHRydWUsXG4gICAgYWxpZ25XaXRoV29yZDogdHJ1ZSxcbiAgICBjbG9zZUNoYXJhY3RlcnM6IC9bXFxzKClcXFtcXF17fTs6PixdLyxcbiAgICBjbG9zZU9uVW5mb2N1czogdHJ1ZSxcbiAgICBjb21wbGV0ZU9uU2luZ2xlQ2xpY2s6IHRydWUsXG4gICAgY29udGFpbmVyOiBudWxsLFxuICAgIGN1c3RvbUtleXM6IG51bGwsXG4gICAgZXh0cmFLZXlzOiBudWxsXG4gIH07XG5cbiAgQ29kZU1pcnJvci5kZWZpbmVPcHRpb24oXCJoaW50T3B0aW9uc1wiLCBudWxsKTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQSx3SEFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBN0VBO0FBQ0E7QUErRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBVEE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBREE7QUFPQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFQQTtBQUNBO0FBU0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBRUE7QUFDQTtBQUNBO0FBckRBO0FBQ0E7QUF1REE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBWUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/codemirror/addon/hint/show-hint.js\n");
187
188/***/ }),
189
190/***/ "../../../node_modules/codemirror/addon/lint/lint.js":
191/*!**************************************************************************************!*\
192 !*** /home/runner/work/graphiql/graphiql/node_modules/codemirror/addon/lint/lint.js ***!
193 \**************************************************************************************/
194/*! no static exports found */
195/***/ (function(module, exports, __webpack_require__) {
196
197eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n // CodeMirror, copyright (c) by Marijn Haverbeke and others\n // Distributed under an MIT license: https://codemirror.net/LICENSE\n (function (mod) {\n if (true) // CommonJS\n mod(__webpack_require__(/*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));else {}\n })(function (CodeMirror) {\n \"use strict\";\n\n var GUTTER_ID = \"CodeMirror-lint-markers\";\n\n function showTooltip(cm, e, content) {\n var tt = document.createElement(\"div\");\n tt.className = \"CodeMirror-lint-tooltip cm-s-\" + cm.options.theme;\n tt.appendChild(content.cloneNode(true));\n if (cm.state.lint.options.selfContain) cm.getWrapperElement().appendChild(tt);else document.body.appendChild(tt);\n\n function position(e) {\n if (!tt.parentNode) return CodeMirror.off(document, \"mousemove\", position);\n tt.style.top = Math.max(0, e.clientY - tt.offsetHeight - 5) + \"px\";\n tt.style.left = e.clientX + 5 + \"px\";\n }\n\n CodeMirror.on(document, \"mousemove\", position);\n position(e);\n if (tt.style.opacity != null) tt.style.opacity = 1;\n return tt;\n }\n\n function rm(elt) {\n if (elt.parentNode) elt.parentNode.removeChild(elt);\n }\n\n function hideTooltip(tt) {\n if (!tt.parentNode) return;\n if (tt.style.opacity == null) rm(tt);\n tt.style.opacity = 0;\n setTimeout(function () {\n rm(tt);\n }, 600);\n }\n\n function showTooltipFor(cm, e, content, node) {\n var tooltip = showTooltip(cm, e, content);\n\n function hide() {\n CodeMirror.off(node, \"mouseout\", hide);\n\n if (tooltip) {\n hideTooltip(tooltip);\n tooltip = null;\n }\n }\n\n var poll = setInterval(function () {\n if (tooltip) for (var n = node;; n = n.parentNode) {\n if (n && n.nodeType == 11) n = n.host;\n if (n == document.body) return;\n\n if (!n) {\n hide();\n break;\n }\n }\n if (!tooltip) return clearInterval(poll);\n }, 400);\n CodeMirror.on(node, \"mouseout\", hide);\n }\n\n function LintState(cm, options, hasGutter) {\n this.marked = [];\n this.options = options;\n this.timeout = null;\n this.hasGutter = hasGutter;\n\n this.onMouseOver = function (e) {\n onMouseOver(cm, e);\n };\n\n this.waitingFor = 0;\n }\n\n function parseOptions(_cm, options) {\n if (options instanceof Function) return {\n getAnnotations: options\n };\n if (!options || options === true) options = {};\n return options;\n }\n\n function clearMarks(cm) {\n var state = cm.state.lint;\n if (state.hasGutter) cm.clearGutter(GUTTER_ID);\n\n for (var i = 0; i < state.marked.length; ++i) state.marked[i].clear();\n\n state.marked.length = 0;\n }\n\n function makeMarker(cm, labels, severity, multiple, tooltips) {\n var marker = document.createElement(\"div\"),\n inner = marker;\n marker.className = \"CodeMirror-lint-marker-\" + severity;\n\n if (multiple) {\n inner = marker.appendChild(document.createElement(\"div\"));\n inner.className = \"CodeMirror-lint-marker-multiple\";\n }\n\n if (tooltips != false) CodeMirror.on(inner, \"mouseover\", function (e) {\n showTooltipFor(cm, e, labels, inner);\n });\n return marker;\n }\n\n function getMaxSeverity(a, b) {\n if (a == \"error\") return a;else return b;\n }\n\n function groupByLine(annotations) {\n var lines = [];\n\n for (var i = 0; i < annotations.length; ++i) {\n var ann = annotations[i],\n line = ann.from.line;\n (lines[line] || (lines[line] = [])).push(ann);\n }\n\n return lines;\n }\n\n function annotationTooltip(ann) {\n var severity = ann.severity;\n if (!severity) severity = \"error\";\n var tip = document.createElement(\"div\");\n tip.className = \"CodeMirror-lint-message-\" + severity;\n\n if (typeof ann.messageHTML != 'undefined') {\n tip.innerHTML = ann.messageHTML;\n } else {\n tip.appendChild(document.createTextNode(ann.message));\n }\n\n return tip;\n }\n\n function lintAsync(cm, getAnnotations, passOptions) {\n var state = cm.state.lint;\n var id = ++state.waitingFor;\n\n function abort() {\n id = -1;\n cm.off(\"change\", abort);\n }\n\n cm.on(\"change\", abort);\n getAnnotations(cm.getValue(), function (annotations, arg2) {\n cm.off(\"change\", abort);\n if (state.waitingFor != id) return;\n if (arg2 && annotations instanceof CodeMirror) annotations = arg2;\n cm.operation(function () {\n updateLinting(cm, annotations);\n });\n }, passOptions, cm);\n }\n\n function startLinting(cm) {\n var state = cm.state.lint,\n options = state.options;\n /*\n * Passing rules in `options` property prevents JSHint (and other linters) from complaining\n * about unrecognized rules like `onUpdateLinting`, `delay`, `lintOnChange`, etc.\n */\n\n var passOptions = options.options || options;\n var getAnnotations = options.getAnnotations || cm.getHelper(CodeMirror.Pos(0, 0), \"lint\");\n if (!getAnnotations) return;\n\n if (options.async || getAnnotations.async) {\n lintAsync(cm, getAnnotations, passOptions);\n } else {\n var annotations = getAnnotations(cm.getValue(), passOptions, cm);\n if (!annotations) return;\n if (annotations.then) annotations.then(function (issues) {\n cm.operation(function () {\n updateLinting(cm, issues);\n });\n });else cm.operation(function () {\n updateLinting(cm, annotations);\n });\n }\n }\n\n function updateLinting(cm, annotationsNotSorted) {\n clearMarks(cm);\n var state = cm.state.lint,\n options = state.options;\n var annotations = groupByLine(annotationsNotSorted);\n\n for (var line = 0; line < annotations.length; ++line) {\n var anns = annotations[line];\n if (!anns) continue;\n var maxSeverity = null;\n var tipLabel = state.hasGutter && document.createDocumentFragment();\n\n for (var i = 0; i < anns.length; ++i) {\n var ann = anns[i];\n var severity = ann.severity;\n if (!severity) severity = \"error\";\n maxSeverity = getMaxSeverity(maxSeverity, severity);\n if (options.formatAnnotation) ann = options.formatAnnotation(ann);\n if (state.hasGutter) tipLabel.appendChild(annotationTooltip(ann));\n if (ann.to) state.marked.push(cm.markText(ann.from, ann.to, {\n className: \"CodeMirror-lint-mark-\" + severity,\n __annotation: ann\n }));\n }\n\n if (state.hasGutter) cm.setGutterMarker(line, GUTTER_ID, makeMarker(cm, tipLabel, maxSeverity, anns.length > 1, state.options.tooltips));\n }\n\n if (options.onUpdateLinting) options.onUpdateLinting(annotationsNotSorted, annotations, cm);\n }\n\n function onChange(cm) {\n var state = cm.state.lint;\n if (!state) return;\n clearTimeout(state.timeout);\n state.timeout = setTimeout(function () {\n startLinting(cm);\n }, state.options.delay || 500);\n }\n\n function popupTooltips(cm, annotations, e) {\n var target = e.target || e.srcElement;\n var tooltip = document.createDocumentFragment();\n\n for (var i = 0; i < annotations.length; i++) {\n var ann = annotations[i];\n tooltip.appendChild(annotationTooltip(ann));\n }\n\n showTooltipFor(cm, e, tooltip, target);\n }\n\n function onMouseOver(cm, e) {\n var target = e.target || e.srcElement;\n if (!/\\bCodeMirror-lint-mark-/.test(target.className)) return;\n var box = target.getBoundingClientRect(),\n x = (box.left + box.right) / 2,\n y = (box.top + box.bottom) / 2;\n var spans = cm.findMarksAt(cm.coordsChar({\n left: x,\n top: y\n }, \"client\"));\n var annotations = [];\n\n for (var i = 0; i < spans.length; ++i) {\n var ann = spans[i].__annotation;\n if (ann) annotations.push(ann);\n }\n\n if (annotations.length) popupTooltips(cm, annotations, e);\n }\n\n CodeMirror.defineOption(\"lint\", false, function (cm, val, old) {\n if (old && old != CodeMirror.Init) {\n clearMarks(cm);\n if (cm.state.lint.options.lintOnChange !== false) cm.off(\"change\", onChange);\n CodeMirror.off(cm.getWrapperElement(), \"mouseover\", cm.state.lint.onMouseOver);\n clearTimeout(cm.state.lint.timeout);\n delete cm.state.lint;\n }\n\n if (val) {\n var gutters = cm.getOption(\"gutters\"),\n hasLintGutter = false;\n\n for (var i = 0; i < gutters.length; ++i) if (gutters[i] == GUTTER_ID) hasLintGutter = true;\n\n var state = cm.state.lint = new LintState(cm, parseOptions(cm, val), hasLintGutter);\n if (state.options.lintOnChange !== false) cm.on(\"change\", onChange);\n if (state.options.tooltips != false && state.options.tooltips != \"gutter\") CodeMirror.on(cm.getWrapperElement(), \"mouseover\", state.onMouseOver);\n startLinting(cm);\n }\n });\n CodeMirror.defineExtension(\"performLint\", function () {\n if (this.state.lint) startLinting(this);\n });\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vbGludC9saW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vbGludC9saW50LmpzPzYyNTkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29kZU1pcnJvciwgY29weXJpZ2h0IChjKSBieSBNYXJpam4gSGF2ZXJiZWtlIGFuZCBvdGhlcnNcbi8vIERpc3RyaWJ1dGVkIHVuZGVyIGFuIE1JVCBsaWNlbnNlOiBodHRwczovL2NvZGVtaXJyb3IubmV0L0xJQ0VOU0VcblxuKGZ1bmN0aW9uKG1vZCkge1xuICBpZiAodHlwZW9mIGV4cG9ydHMgPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgbW9kdWxlID09IFwib2JqZWN0XCIpIC8vIENvbW1vbkpTXG4gICAgbW9kKHJlcXVpcmUoXCIuLi8uLi9saWIvY29kZW1pcnJvclwiKSk7XG4gIGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIC8vIEFNRFxuICAgIGRlZmluZShbXCIuLi8uLi9saWIvY29kZW1pcnJvclwiXSwgbW9kKTtcbiAgZWxzZSAvLyBQbGFpbiBicm93c2VyIGVudlxuICAgIG1vZChDb2RlTWlycm9yKTtcbn0pKGZ1bmN0aW9uKENvZGVNaXJyb3IpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG4gIHZhciBHVVRURVJfSUQgPSBcIkNvZGVNaXJyb3ItbGludC1tYXJrZXJzXCI7XG5cbiAgZnVuY3Rpb24gc2hvd1Rvb2x0aXAoY20sIGUsIGNvbnRlbnQpIHtcbiAgICB2YXIgdHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIHR0LmNsYXNzTmFtZSA9IFwiQ29kZU1pcnJvci1saW50LXRvb2x0aXAgY20tcy1cIiArIGNtLm9wdGlvbnMudGhlbWU7XG4gICAgdHQuYXBwZW5kQ2hpbGQoY29udGVudC5jbG9uZU5vZGUodHJ1ZSkpO1xuICAgIGlmIChjbS5zdGF0ZS5saW50Lm9wdGlvbnMuc2VsZkNvbnRhaW4pXG4gICAgICBjbS5nZXRXcmFwcGVyRWxlbWVudCgpLmFwcGVuZENoaWxkKHR0KTtcbiAgICBlbHNlXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHR0KTtcblxuICAgIGZ1bmN0aW9uIHBvc2l0aW9uKGUpIHtcbiAgICAgIGlmICghdHQucGFyZW50Tm9kZSkgcmV0dXJuIENvZGVNaXJyb3Iub2ZmKGRvY3VtZW50LCBcIm1vdXNlbW92ZVwiLCBwb3NpdGlvbik7XG4gICAgICB0dC5zdHlsZS50b3AgPSBNYXRoLm1heCgwLCBlLmNsaWVudFkgLSB0dC5vZmZzZXRIZWlnaHQgLSA1KSArIFwicHhcIjtcbiAgICAgIHR0LnN0eWxlLmxlZnQgPSAoZS5jbGllbnRYICsgNSkgKyBcInB4XCI7XG4gICAgfVxuICAgIENvZGVNaXJyb3Iub24oZG9jdW1lbnQsIFwibW91c2Vtb3ZlXCIsIHBvc2l0aW9uKTtcbiAgICBwb3NpdGlvbihlKTtcbiAgICBpZiAodHQuc3R5bGUub3BhY2l0eSAhPSBudWxsKSB0dC5zdHlsZS5vcGFjaXR5ID0gMTtcbiAgICByZXR1cm4gdHQ7XG4gIH1cbiAgZnVuY3Rpb24gcm0oZWx0KSB7XG4gICAgaWYgKGVsdC5wYXJlbnROb2RlKSBlbHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbHQpO1xuICB9XG4gIGZ1bmN0aW9uIGhpZGVUb29sdGlwKHR0KSB7XG4gICAgaWYgKCF0dC5wYXJlbnROb2RlKSByZXR1cm47XG4gICAgaWYgKHR0LnN0eWxlLm9wYWNpdHkgPT0gbnVsbCkgcm0odHQpO1xuICAgIHR0LnN0eWxlLm9wYWNpdHkgPSAwO1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHJtKHR0KTsgfSwgNjAwKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3dUb29sdGlwRm9yKGNtLCBlLCBjb250ZW50LCBub2RlKSB7XG4gICAgdmFyIHRvb2x0aXAgPSBzaG93VG9vbHRpcChjbSwgZSwgY29udGVudCk7XG4gICAgZnVuY3Rpb24gaGlkZSgpIHtcbiAgICAgIENvZGVNaXJyb3Iub2ZmKG5vZGUsIFwibW91c2VvdXRcIiwgaGlkZSk7XG4gICAgICBpZiAodG9vbHRpcCkgeyBoaWRlVG9vbHRpcCh0b29sdGlwKTsgdG9vbHRpcCA9IG51bGw7IH1cbiAgICB9XG4gICAgdmFyIHBvbGwgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0b29sdGlwKSBmb3IgKHZhciBuID0gbm9kZTs7IG4gPSBuLnBhcmVudE5vZGUpIHtcbiAgICAgICAgaWYgKG4gJiYgbi5ub2RlVHlwZSA9PSAxMSkgbiA9IG4uaG9zdDtcbiAgICAgICAgaWYgKG4gPT0gZG9jdW1lbnQuYm9keSkgcmV0dXJuO1xuICAgICAgICBpZiAoIW4pIHsgaGlkZSgpOyBicmVhazsgfVxuICAgICAgfVxuICAgICAgaWYgKCF0b29sdGlwKSByZXR1cm4gY2xlYXJJbnRlcnZhbChwb2xsKTtcbiAgICB9LCA0MDApO1xuICAgIENvZGVNaXJyb3Iub24obm9kZSwgXCJtb3VzZW91dFwiLCBoaWRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIExpbnRTdGF0ZShjbSwgb3B0aW9ucywgaGFzR3V0dGVyKSB7XG4gICAgdGhpcy5tYXJrZWQgPSBbXTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMudGltZW91dCA9IG51bGw7XG4gICAgdGhpcy5oYXNHdXR0ZXIgPSBoYXNHdXR0ZXI7XG4gICAgdGhpcy5vbk1vdXNlT3ZlciA9IGZ1bmN0aW9uKGUpIHsgb25Nb3VzZU92ZXIoY20sIGUpOyB9O1xuICAgIHRoaXMud2FpdGluZ0ZvciA9IDBcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlT3B0aW9ucyhfY20sIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIEZ1bmN0aW9uKSByZXR1cm4ge2dldEFubm90YXRpb25zOiBvcHRpb25zfTtcbiAgICBpZiAoIW9wdGlvbnMgfHwgb3B0aW9ucyA9PT0gdHJ1ZSkgb3B0aW9ucyA9IHt9O1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgZnVuY3Rpb24gY2xlYXJNYXJrcyhjbSkge1xuICAgIHZhciBzdGF0ZSA9IGNtLnN0YXRlLmxpbnQ7XG4gICAgaWYgKHN0YXRlLmhhc0d1dHRlcikgY20uY2xlYXJHdXR0ZXIoR1VUVEVSX0lEKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLm1hcmtlZC5sZW5ndGg7ICsraSlcbiAgICAgIHN0YXRlLm1hcmtlZFtpXS5jbGVhcigpO1xuICAgIHN0YXRlLm1hcmtlZC5sZW5ndGggPSAwO1xuICB9XG5cbiAgZnVuY3Rpb24gbWFrZU1hcmtlcihjbSwgbGFiZWxzLCBzZXZlcml0eSwgbXVsdGlwbGUsIHRvb2x0aXBzKSB7XG4gICAgdmFyIG1hcmtlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksIGlubmVyID0gbWFya2VyO1xuICAgIG1hcmtlci5jbGFzc05hbWUgPSBcIkNvZGVNaXJyb3ItbGludC1tYXJrZXItXCIgKyBzZXZlcml0eTtcbiAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgIGlubmVyID0gbWFya2VyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpO1xuICAgICAgaW5uZXIuY2xhc3NOYW1lID0gXCJDb2RlTWlycm9yLWxpbnQtbWFya2VyLW11bHRpcGxlXCI7XG4gICAgfVxuXG4gICAgaWYgKHRvb2x0aXBzICE9IGZhbHNlKSBDb2RlTWlycm9yLm9uKGlubmVyLCBcIm1vdXNlb3ZlclwiLCBmdW5jdGlvbihlKSB7XG4gICAgICBzaG93VG9vbHRpcEZvcihjbSwgZSwgbGFiZWxzLCBpbm5lcik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWFya2VyO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TWF4U2V2ZXJpdHkoYSwgYikge1xuICAgIGlmIChhID09IFwiZXJyb3JcIikgcmV0dXJuIGE7XG4gICAgZWxzZSByZXR1cm4gYjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdyb3VwQnlMaW5lKGFubm90YXRpb25zKSB7XG4gICAgdmFyIGxpbmVzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbm5vdGF0aW9ucy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGFubiA9IGFubm90YXRpb25zW2ldLCBsaW5lID0gYW5uLmZyb20ubGluZTtcbiAgICAgIChsaW5lc1tsaW5lXSB8fCAobGluZXNbbGluZV0gPSBbXSkpLnB1c2goYW5uKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVzO1xuICB9XG5cbiAgZnVuY3Rpb24gYW5ub3RhdGlvblRvb2x0aXAoYW5uKSB7XG4gICAgdmFyIHNldmVyaXR5ID0gYW5uLnNldmVyaXR5O1xuICAgIGlmICghc2V2ZXJpdHkpIHNldmVyaXR5ID0gXCJlcnJvclwiO1xuICAgIHZhciB0aXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIHRpcC5jbGFzc05hbWUgPSBcIkNvZGVNaXJyb3ItbGludC1tZXNzYWdlLVwiICsgc2V2ZXJpdHk7XG4gICAgaWYgKHR5cGVvZiBhbm4ubWVzc2FnZUhUTUwgIT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRpcC5pbm5lckhUTUwgPSBhbm4ubWVzc2FnZUhUTUw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRpcC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShhbm4ubWVzc2FnZSkpO1xuICAgIH1cbiAgICByZXR1cm4gdGlwO1xuICB9XG5cbiAgZnVuY3Rpb24gbGludEFzeW5jKGNtLCBnZXRBbm5vdGF0aW9ucywgcGFzc09wdGlvbnMpIHtcbiAgICB2YXIgc3RhdGUgPSBjbS5zdGF0ZS5saW50XG4gICAgdmFyIGlkID0gKytzdGF0ZS53YWl0aW5nRm9yXG4gICAgZnVuY3Rpb24gYWJvcnQoKSB7XG4gICAgICBpZCA9IC0xXG4gICAgICBjbS5vZmYoXCJjaGFuZ2VcIiwgYWJvcnQpXG4gICAgfVxuICAgIGNtLm9uKFwiY2hhbmdlXCIsIGFib3J0KVxuICAgIGdldEFubm90YXRpb25zKGNtLmdldFZhbHVlKCksIGZ1bmN0aW9uKGFubm90YXRpb25zLCBhcmcyKSB7XG4gICAgICBjbS5vZmYoXCJjaGFuZ2VcIiwgYWJvcnQpXG4gICAgICBpZiAoc3RhdGUud2FpdGluZ0ZvciAhPSBpZCkgcmV0dXJuXG4gICAgICBpZiAoYXJnMiAmJiBhbm5vdGF0aW9ucyBpbnN0YW5jZW9mIENvZGVNaXJyb3IpIGFubm90YXRpb25zID0gYXJnMlxuICAgICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge3VwZGF0ZUxpbnRpbmcoY20sIGFubm90YXRpb25zKX0pXG4gICAgfSwgcGFzc09wdGlvbnMsIGNtKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHN0YXJ0TGludGluZyhjbSkge1xuICAgIHZhciBzdGF0ZSA9IGNtLnN0YXRlLmxpbnQsIG9wdGlvbnMgPSBzdGF0ZS5vcHRpb25zO1xuICAgIC8qXG4gICAgICogUGFzc2luZyBydWxlcyBpbiBgb3B0aW9uc2AgcHJvcGVydHkgcHJldmVudHMgSlNIaW50IChhbmQgb3RoZXIgbGludGVycykgZnJvbSBjb21wbGFpbmluZ1xuICAgICAqIGFib3V0IHVucmVjb2duaXplZCBydWxlcyBsaWtlIGBvblVwZGF0ZUxpbnRpbmdgLCBgZGVsYXlgLCBgbGludE9uQ2hhbmdlYCwgZXRjLlxuICAgICAqL1xuICAgIHZhciBwYXNzT3B0aW9ucyA9IG9wdGlvbnMub3B0aW9ucyB8fCBvcHRpb25zO1xuICAgIHZhciBnZXRBbm5vdGF0aW9ucyA9IG9wdGlvbnMuZ2V0QW5ub3RhdGlvbnMgfHwgY20uZ2V0SGVscGVyKENvZGVNaXJyb3IuUG9zKDAsIDApLCBcImxpbnRcIik7XG4gICAgaWYgKCFnZXRBbm5vdGF0aW9ucykgcmV0dXJuO1xuICAgIGlmIChvcHRpb25zLmFzeW5jIHx8IGdldEFubm90YXRpb25zLmFzeW5jKSB7XG4gICAgICBsaW50QXN5bmMoY20sIGdldEFubm90YXRpb25zLCBwYXNzT3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGFubm90YXRpb25zID0gZ2V0QW5ub3RhdGlvbnMoY20uZ2V0VmFsdWUoKSwgcGFzc09wdGlvbnMsIGNtKTtcbiAgICAgIGlmICghYW5ub3RhdGlvbnMpIHJldHVybjtcbiAgICAgIGlmIChhbm5vdGF0aW9ucy50aGVuKSBhbm5vdGF0aW9ucy50aGVuKGZ1bmN0aW9uKGlzc3Vlcykge1xuICAgICAgICBjbS5vcGVyYXRpb24oZnVuY3Rpb24oKSB7dXBkYXRlTGludGluZyhjbSwgaXNzdWVzKX0pXG4gICAgICB9KTtcbiAgICAgIGVsc2UgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge3VwZGF0ZUxpbnRpbmcoY20sIGFubm90YXRpb25zKX0pXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlTGludGluZyhjbSwgYW5ub3RhdGlvbnNOb3RTb3J0ZWQpIHtcbiAgICBjbGVhck1hcmtzKGNtKTtcbiAgICB2YXIgc3RhdGUgPSBjbS5zdGF0ZS5saW50LCBvcHRpb25zID0gc3RhdGUub3B0aW9ucztcblxuICAgIHZhciBhbm5vdGF0aW9ucyA9IGdyb3VwQnlMaW5lKGFubm90YXRpb25zTm90U29ydGVkKTtcblxuICAgIGZvciAodmFyIGxpbmUgPSAwOyBsaW5lIDwgYW5ub3RhdGlvbnMubGVuZ3RoOyArK2xpbmUpIHtcbiAgICAgIHZhciBhbm5zID0gYW5ub3RhdGlvbnNbbGluZV07XG4gICAgICBpZiAoIWFubnMpIGNvbnRpbnVlO1xuXG4gICAgICB2YXIgbWF4U2V2ZXJpdHkgPSBudWxsO1xuICAgICAgdmFyIHRpcExhYmVsID0gc3RhdGUuaGFzR3V0dGVyICYmIGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbm5zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBhbm4gPSBhbm5zW2ldO1xuICAgICAgICB2YXIgc2V2ZXJpdHkgPSBhbm4uc2V2ZXJpdHk7XG4gICAgICAgIGlmICghc2V2ZXJpdHkpIHNldmVyaXR5ID0gXCJlcnJvclwiO1xuICAgICAgICBtYXhTZXZlcml0eSA9IGdldE1heFNldmVyaXR5KG1heFNldmVyaXR5LCBzZXZlcml0eSk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuZm9ybWF0QW5ub3RhdGlvbikgYW5uID0gb3B0aW9ucy5mb3JtYXRBbm5vdGF0aW9uKGFubik7XG4gICAgICAgIGlmIChzdGF0ZS5oYXNHdXR0ZXIpIHRpcExhYmVsLmFwcGVuZENoaWxkKGFubm90YXRpb25Ub29sdGlwKGFubikpO1xuXG4gICAgICAgIGlmIChhbm4udG8pIHN0YXRlLm1hcmtlZC5wdXNoKGNtLm1hcmtUZXh0KGFubi5mcm9tLCBhbm4udG8sIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiQ29kZU1pcnJvci1saW50LW1hcmstXCIgKyBzZXZlcml0eSxcbiAgICAgICAgICBfX2Fubm90YXRpb246IGFublxuICAgICAgICB9KSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZS5oYXNHdXR0ZXIpXG4gICAgICAgIGNtLnNldEd1dHRlck1hcmtlcihsaW5lLCBHVVRURVJfSUQsIG1ha2VNYXJrZXIoY20sIHRpcExhYmVsLCBtYXhTZXZlcml0eSwgYW5ucy5sZW5ndGggPiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLm9wdGlvbnMudG9vbHRpcHMpKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMub25VcGRhdGVMaW50aW5nKSBvcHRpb25zLm9uVXBkYXRlTGludGluZyhhbm5vdGF0aW9uc05vdFNvcnRlZCwgYW5ub3RhdGlvbnMsIGNtKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKGNtKSB7XG4gICAgdmFyIHN0YXRlID0gY20uc3RhdGUubGludDtcbiAgICBpZiAoIXN0YXRlKSByZXR1cm47XG4gICAgY2xlYXJUaW1lb3V0KHN0YXRlLnRpbWVvdXQpO1xuICAgIHN0YXRlLnRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c3RhcnRMaW50aW5nKGNtKTt9LCBzdGF0ZS5vcHRpb25zLmRlbGF5IHx8IDUwMCk7XG4gIH1cblxuICBmdW5jdGlvbiBwb3B1cFRvb2x0aXBzKGNtLCBhbm5vdGF0aW9ucywgZSkge1xuICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQ7XG4gICAgdmFyIHRvb2x0aXAgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbm5vdGF0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGFubiA9IGFubm90YXRpb25zW2ldO1xuICAgICAgdG9vbHRpcC5hcHBlbmRDaGlsZChhbm5vdGF0aW9uVG9vbHRpcChhbm4pKTtcbiAgICB9XG4gICAgc2hvd1Rvb2x0aXBGb3IoY20sIGUsIHRvb2x0aXAsIHRhcmdldCk7XG4gIH1cblxuICBmdW5jdGlvbiBvbk1vdXNlT3ZlcihjbSwgZSkge1xuICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQ7XG4gICAgaWYgKCEvXFxiQ29kZU1pcnJvci1saW50LW1hcmstLy50ZXN0KHRhcmdldC5jbGFzc05hbWUpKSByZXR1cm47XG4gICAgdmFyIGJveCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgeCA9IChib3gubGVmdCArIGJveC5yaWdodCkgLyAyLCB5ID0gKGJveC50b3AgKyBib3guYm90dG9tKSAvIDI7XG4gICAgdmFyIHNwYW5zID0gY20uZmluZE1hcmtzQXQoY20uY29vcmRzQ2hhcih7bGVmdDogeCwgdG9wOiB5fSwgXCJjbGllbnRcIikpO1xuXG4gICAgdmFyIGFubm90YXRpb25zID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzcGFucy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGFubiA9IHNwYW5zW2ldLl9fYW5ub3RhdGlvbjtcbiAgICAgIGlmIChhbm4pIGFubm90YXRpb25zLnB1c2goYW5uKTtcbiAgICB9XG4gICAgaWYgKGFubm90YXRpb25zLmxlbmd0aCkgcG9wdXBUb29sdGlwcyhjbSwgYW5ub3RhdGlvbnMsIGUpO1xuICB9XG5cbiAgQ29kZU1pcnJvci5kZWZpbmVPcHRpb24oXCJsaW50XCIsIGZhbHNlLCBmdW5jdGlvbihjbSwgdmFsLCBvbGQpIHtcbiAgICBpZiAob2xkICYmIG9sZCAhPSBDb2RlTWlycm9yLkluaXQpIHtcbiAgICAgIGNsZWFyTWFya3MoY20pO1xuICAgICAgaWYgKGNtLnN0YXRlLmxpbnQub3B0aW9ucy5saW50T25DaGFuZ2UgIT09IGZhbHNlKVxuICAgICAgICBjbS5vZmYoXCJjaGFuZ2VcIiwgb25DaGFuZ2UpO1xuICAgICAgQ29kZU1pcnJvci5vZmYoY20uZ2V0V3JhcHBlckVsZW1lbnQoKSwgXCJtb3VzZW92ZXJcIiwgY20uc3RhdGUubGludC5vbk1vdXNlT3Zlcik7XG4gICAgICBjbGVhclRpbWVvdXQoY20uc3RhdGUubGludC50aW1lb3V0KTtcbiAgICAgIGRlbGV0ZSBjbS5zdGF0ZS5saW50O1xuICAgIH1cblxuICAgIGlmICh2YWwpIHtcbiAgICAgIHZhciBndXR0ZXJzID0gY20uZ2V0T3B0aW9uKFwiZ3V0dGVyc1wiKSwgaGFzTGludEd1dHRlciA9IGZhbHNlO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBndXR0ZXJzLmxlbmd0aDsgKytpKSBpZiAoZ3V0dGVyc1tpXSA9PSBHVVRURVJfSUQpIGhhc0xpbnRHdXR0ZXIgPSB0cnVlO1xuICAgICAgdmFyIHN0YXRlID0gY20uc3RhdGUubGludCA9IG5ldyBMaW50U3RhdGUoY20sIHBhcnNlT3B0aW9ucyhjbSwgdmFsKSwgaGFzTGludEd1dHRlcik7XG4gICAgICBpZiAoc3RhdGUub3B0aW9ucy5saW50T25DaGFuZ2UgIT09IGZhbHNlKVxuICAgICAgICBjbS5vbihcImNoYW5nZVwiLCBvbkNoYW5nZSk7XG4gICAgICBpZiAoc3RhdGUub3B0aW9ucy50b29sdGlwcyAhPSBmYWxzZSAmJiBzdGF0ZS5vcHRpb25zLnRvb2x0aXBzICE9IFwiZ3V0dGVyXCIpXG4gICAgICAgIENvZGVNaXJyb3Iub24oY20uZ2V0V3JhcHBlckVsZW1lbnQoKSwgXCJtb3VzZW92ZXJcIiwgc3RhdGUub25Nb3VzZU92ZXIpO1xuXG4gICAgICBzdGFydExpbnRpbmcoY20pO1xuICAgIH1cbiAgfSk7XG5cbiAgQ29kZU1pcnJvci5kZWZpbmVFeHRlbnNpb24oXCJwZXJmb3JtTGludFwiLCBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5saW50KSBzdGFydExpbnRpbmcodGhpcyk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBLHdIQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/codemirror/addon/lint/lint.js\n");
198
199/***/ }),
200
201/***/ "../../../node_modules/codemirror/addon/search/jump-to-line.js":
202/*!************************************************************************************************!*\
203 !*** /home/runner/work/graphiql/graphiql/node_modules/codemirror/addon/search/jump-to-line.js ***!
204 \************************************************************************************************/
205/*! no static exports found */
206/***/ (function(module, exports, __webpack_require__) {
207
208eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n // CodeMirror, copyright (c) by Marijn Haverbeke and others\n // Distributed under an MIT license: https://codemirror.net/LICENSE\n // Defines jumpToLine command. Uses dialog.js if present.\n (function (mod) {\n if (true) // CommonJS\n mod(__webpack_require__(/*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"), __webpack_require__(/*! ../dialog/dialog */ \"../../../node_modules/codemirror/addon/dialog/dialog.js\"));else {}\n })(function (CodeMirror) {\n \"use strict\";\n\n function dialog(cm, text, shortText, deflt, f) {\n if (cm.openDialog) cm.openDialog(text, f, {\n value: deflt,\n selectValueOnOpen: true\n });else f(prompt(shortText, deflt));\n }\n\n function getJumpDialog(cm) {\n return cm.phrase(\"Jump to line:\") + ' <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">' + cm.phrase(\"(Use line:column or scroll% syntax)\") + '</span>';\n }\n\n function interpretLine(cm, string) {\n var num = Number(string);\n if (/^[-+]/.test(string)) return cm.getCursor().line + num;else return num - 1;\n }\n\n CodeMirror.commands.jumpToLine = function (cm) {\n var cur = cm.getCursor();\n dialog(cm, getJumpDialog(cm), cm.phrase(\"Jump to line:\"), cur.line + 1 + \":\" + cur.ch, function (posStr) {\n if (!posStr) return;\n var match;\n\n if (match = /^\\s*([\\+\\-]?\\d+)\\s*\\:\\s*(\\d+)\\s*$/.exec(posStr)) {\n cm.setCursor(interpretLine(cm, match[1]), Number(match[2]));\n } else if (match = /^\\s*([\\+\\-]?\\d+(\\.\\d+)?)\\%\\s*/.exec(posStr)) {\n var line = Math.round(cm.lineCount() * Number(match[1]) / 100);\n if (/^[-+]/.test(match[1])) line = cur.line + line + 1;\n cm.setCursor(line - 1, cur.ch);\n } else if (match = /^\\s*\\:?\\s*([\\+\\-]?\\d+)\\s*/.exec(posStr)) {\n cm.setCursor(interpretLine(cm, match[1]), cur.ch);\n }\n });\n };\n\n CodeMirror.keyMap[\"default\"][\"Alt-G\"] = \"jumpToLine\";\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vc2VhcmNoL2p1bXAtdG8tbGluZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9jb2RlbWlycm9yL2FkZG9uL3NlYXJjaC9qdW1wLXRvLWxpbmUuanM/NjVjZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb2RlTWlycm9yLCBjb3B5cmlnaHQgKGMpIGJ5IE1hcmlqbiBIYXZlcmJla2UgYW5kIG90aGVyc1xuLy8gRGlzdHJpYnV0ZWQgdW5kZXIgYW4gTUlUIGxpY2Vuc2U6IGh0dHBzOi8vY29kZW1pcnJvci5uZXQvTElDRU5TRVxuXG4vLyBEZWZpbmVzIGp1bXBUb0xpbmUgY29tbWFuZC4gVXNlcyBkaWFsb2cuanMgaWYgcHJlc2VudC5cblxuKGZ1bmN0aW9uKG1vZCkge1xuICBpZiAodHlwZW9mIGV4cG9ydHMgPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgbW9kdWxlID09IFwib2JqZWN0XCIpIC8vIENvbW1vbkpTXG4gICAgbW9kKHJlcXVpcmUoXCIuLi8uLi9saWIvY29kZW1pcnJvclwiKSwgcmVxdWlyZShcIi4uL2RpYWxvZy9kaWFsb2dcIikpO1xuICBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSAvLyBBTURcbiAgICBkZWZpbmUoW1wiLi4vLi4vbGliL2NvZGVtaXJyb3JcIiwgXCIuLi9kaWFsb2cvZGlhbG9nXCJdLCBtb2QpO1xuICBlbHNlIC8vIFBsYWluIGJyb3dzZXIgZW52XG4gICAgbW9kKENvZGVNaXJyb3IpO1xufSkoZnVuY3Rpb24oQ29kZU1pcnJvcikge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICBmdW5jdGlvbiBkaWFsb2coY20sIHRleHQsIHNob3J0VGV4dCwgZGVmbHQsIGYpIHtcbiAgICBpZiAoY20ub3BlbkRpYWxvZykgY20ub3BlbkRpYWxvZyh0ZXh0LCBmLCB7dmFsdWU6IGRlZmx0LCBzZWxlY3RWYWx1ZU9uT3BlbjogdHJ1ZX0pO1xuICAgIGVsc2UgZihwcm9tcHQoc2hvcnRUZXh0LCBkZWZsdCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0SnVtcERpYWxvZyhjbSkge1xuICAgIHJldHVybiBjbS5waHJhc2UoXCJKdW1wIHRvIGxpbmU6XCIpICsgJyA8aW5wdXQgdHlwZT1cInRleHRcIiBzdHlsZT1cIndpZHRoOiAxMGVtXCIgY2xhc3M9XCJDb2RlTWlycm9yLXNlYXJjaC1maWVsZFwiLz4gPHNwYW4gc3R5bGU9XCJjb2xvcjogIzg4OFwiIGNsYXNzPVwiQ29kZU1pcnJvci1zZWFyY2gtaGludFwiPicgKyBjbS5waHJhc2UoXCIoVXNlIGxpbmU6Y29sdW1uIG9yIHNjcm9sbCUgc3ludGF4KVwiKSArICc8L3NwYW4+JztcbiAgfVxuXG4gIGZ1bmN0aW9uIGludGVycHJldExpbmUoY20sIHN0cmluZykge1xuICAgIHZhciBudW0gPSBOdW1iZXIoc3RyaW5nKVxuICAgIGlmICgvXlstK10vLnRlc3Qoc3RyaW5nKSkgcmV0dXJuIGNtLmdldEN1cnNvcigpLmxpbmUgKyBudW1cbiAgICBlbHNlIHJldHVybiBudW0gLSAxXG4gIH1cblxuICBDb2RlTWlycm9yLmNvbW1hbmRzLmp1bXBUb0xpbmUgPSBmdW5jdGlvbihjbSkge1xuICAgIHZhciBjdXIgPSBjbS5nZXRDdXJzb3IoKTtcbiAgICBkaWFsb2coY20sIGdldEp1bXBEaWFsb2coY20pLCBjbS5waHJhc2UoXCJKdW1wIHRvIGxpbmU6XCIpLCAoY3VyLmxpbmUgKyAxKSArIFwiOlwiICsgY3VyLmNoLCBmdW5jdGlvbihwb3NTdHIpIHtcbiAgICAgIGlmICghcG9zU3RyKSByZXR1cm47XG5cbiAgICAgIHZhciBtYXRjaDtcbiAgICAgIGlmIChtYXRjaCA9IC9eXFxzKihbXFwrXFwtXT9cXGQrKVxccypcXDpcXHMqKFxcZCspXFxzKiQvLmV4ZWMocG9zU3RyKSkge1xuICAgICAgICBjbS5zZXRDdXJzb3IoaW50ZXJwcmV0TGluZShjbSwgbWF0Y2hbMV0pLCBOdW1iZXIobWF0Y2hbMl0pKVxuICAgICAgfSBlbHNlIGlmIChtYXRjaCA9IC9eXFxzKihbXFwrXFwtXT9cXGQrKFxcLlxcZCspPylcXCVcXHMqLy5leGVjKHBvc1N0cikpIHtcbiAgICAgICAgdmFyIGxpbmUgPSBNYXRoLnJvdW5kKGNtLmxpbmVDb3VudCgpICogTnVtYmVyKG1hdGNoWzFdKSAvIDEwMCk7XG4gICAgICAgIGlmICgvXlstK10vLnRlc3QobWF0Y2hbMV0pKSBsaW5lID0gY3VyLmxpbmUgKyBsaW5lICsgMTtcbiAgICAgICAgY20uc2V0Q3Vyc29yKGxpbmUgLSAxLCBjdXIuY2gpO1xuICAgICAgfSBlbHNlIGlmIChtYXRjaCA9IC9eXFxzKlxcOj9cXHMqKFtcXCtcXC1dP1xcZCspXFxzKi8uZXhlYyhwb3NTdHIpKSB7XG4gICAgICAgIGNtLnNldEN1cnNvcihpbnRlcnByZXRMaW5lKGNtLCBtYXRjaFsxXSksIGN1ci5jaCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgQ29kZU1pcnJvci5rZXlNYXBbXCJkZWZhdWx0XCJdW1wiQWx0LUdcIl0gPSBcImp1bXBUb0xpbmVcIjtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBLGdPQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/codemirror/addon/search/jump-to-line.js\n");
209
210/***/ }),
211
212/***/ "../../../node_modules/codemirror/addon/search/search.js":
213/*!******************************************************************************************!*\
214 !*** /home/runner/work/graphiql/graphiql/node_modules/codemirror/addon/search/search.js ***!
215 \******************************************************************************************/
216/*! no static exports found */
217/***/ (function(module, exports, __webpack_require__) {
218
219eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n // CodeMirror, copyright (c) by Marijn Haverbeke and others\n // Distributed under an MIT license: https://codemirror.net/LICENSE\n // Define search commands. Depends on dialog.js or another\n // implementation of the openDialog method.\n // Replace works a little oddly -- it will do the replace on the next\n // Ctrl-G (or whatever is bound to findNext) press. You prevent a\n // replace by making sure the match is no longer selected when hitting\n // Ctrl-G.\n (function (mod) {\n if (true) // CommonJS\n mod(__webpack_require__(/*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"), __webpack_require__(/*! ./searchcursor */ \"../../../node_modules/codemirror/addon/search/searchcursor.js\"), __webpack_require__(/*! ../dialog/dialog */ \"../../../node_modules/codemirror/addon/dialog/dialog.js\"));else {}\n })(function (CodeMirror) {\n \"use strict\";\n\n function searchOverlay(query, caseInsensitive) {\n if (typeof query == \"string\") query = new RegExp(query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\"), caseInsensitive ? \"gi\" : \"g\");else if (!query.global) query = new RegExp(query.source, query.ignoreCase ? \"gi\" : \"g\");\n return {\n token: function (stream) {\n query.lastIndex = stream.pos;\n var match = query.exec(stream.string);\n\n if (match && match.index == stream.pos) {\n stream.pos += match[0].length || 1;\n return \"searching\";\n } else if (match) {\n stream.pos = match.index;\n } else {\n stream.skipToEnd();\n }\n }\n };\n }\n\n function SearchState() {\n this.posFrom = this.posTo = this.lastQuery = this.query = null;\n this.overlay = null;\n }\n\n function getSearchState(cm) {\n return cm.state.search || (cm.state.search = new SearchState());\n }\n\n function queryCaseInsensitive(query) {\n return typeof query == \"string\" && query == query.toLowerCase();\n }\n\n function getSearchCursor(cm, query, pos) {\n // Heuristic: if the query string is all lowercase, do a case insensitive search.\n return cm.getSearchCursor(query, pos, {\n caseFold: queryCaseInsensitive(query),\n multiline: true\n });\n }\n\n function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {\n cm.openDialog(text, onEnter, {\n value: deflt,\n selectValueOnOpen: true,\n closeOnEnter: false,\n onClose: function () {\n clearSearch(cm);\n },\n onKeyDown: onKeyDown\n });\n }\n\n function dialog(cm, text, shortText, deflt, f) {\n if (cm.openDialog) cm.openDialog(text, f, {\n value: deflt,\n selectValueOnOpen: true\n });else f(prompt(shortText, deflt));\n }\n\n function confirmDialog(cm, text, shortText, fs) {\n if (cm.openConfirm) cm.openConfirm(text, fs);else if (confirm(shortText)) fs[0]();\n }\n\n function parseString(string) {\n return string.replace(/\\\\([nrt\\\\])/g, function (match, ch) {\n if (ch == \"n\") return \"\\n\";\n if (ch == \"r\") return \"\\r\";\n if (ch == \"t\") return \"\\t\";\n if (ch == \"\\\\\") return \"\\\\\";\n return match;\n });\n }\n\n function parseQuery(query) {\n var isRE = query.match(/^\\/(.*)\\/([a-z]*)$/);\n\n if (isRE) {\n try {\n query = new RegExp(isRE[1], isRE[2].indexOf(\"i\") == -1 ? \"\" : \"i\");\n } catch (e) {} // Not a regular expression after all, do a string search\n\n } else {\n query = parseString(query);\n }\n\n if (typeof query == \"string\" ? query == \"\" : query.test(\"\")) query = /x^/;\n return query;\n }\n\n function startSearch(cm, state, query) {\n state.queryText = query;\n state.query = parseQuery(query);\n cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));\n state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query));\n cm.addOverlay(state.overlay);\n\n if (cm.showMatchesOnScrollbar) {\n if (state.annotate) {\n state.annotate.clear();\n state.annotate = null;\n }\n\n state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query));\n }\n }\n\n function doSearch(cm, rev, persistent, immediate) {\n var state = getSearchState(cm);\n if (state.query) return findNext(cm, rev);\n var q = cm.getSelection() || state.lastQuery;\n if (q instanceof RegExp && q.source == \"x^\") q = null;\n\n if (persistent && cm.openDialog) {\n var hiding = null;\n\n var searchNext = function (query, event) {\n CodeMirror.e_stop(event);\n if (!query) return;\n\n if (query != state.queryText) {\n startSearch(cm, state, query);\n state.posFrom = state.posTo = cm.getCursor();\n }\n\n if (hiding) hiding.style.opacity = 1;\n findNext(cm, event.shiftKey, function (_, to) {\n var dialog;\n if (to.line < 3 && document.querySelector && (dialog = cm.display.wrapper.querySelector(\".CodeMirror-dialog\")) && dialog.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, \"window\").top) (hiding = dialog).style.opacity = .4;\n });\n };\n\n persistentDialog(cm, getQueryDialog(cm), q, searchNext, function (event, query) {\n var keyName = CodeMirror.keyName(event);\n var extra = cm.getOption('extraKeys'),\n cmd = extra && extra[keyName] || CodeMirror.keyMap[cm.getOption(\"keyMap\")][keyName];\n\n if (cmd == \"findNext\" || cmd == \"findPrev\" || cmd == \"findPersistentNext\" || cmd == \"findPersistentPrev\") {\n CodeMirror.e_stop(event);\n startSearch(cm, getSearchState(cm), query);\n cm.execCommand(cmd);\n } else if (cmd == \"find\" || cmd == \"findPersistent\") {\n CodeMirror.e_stop(event);\n searchNext(query, event);\n }\n });\n\n if (immediate && q) {\n startSearch(cm, state, q);\n findNext(cm, rev);\n }\n } else {\n dialog(cm, getQueryDialog(cm), \"Search for:\", q, function (query) {\n if (query && !state.query) cm.operation(function () {\n startSearch(cm, state, query);\n state.posFrom = state.posTo = cm.getCursor();\n findNext(cm, rev);\n });\n });\n }\n }\n\n function findNext(cm, rev, callback) {\n cm.operation(function () {\n var state = getSearchState(cm);\n var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo);\n\n if (!cursor.find(rev)) {\n cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));\n if (!cursor.find(rev)) return;\n }\n\n cm.setSelection(cursor.from(), cursor.to());\n cm.scrollIntoView({\n from: cursor.from(),\n to: cursor.to()\n }, 20);\n state.posFrom = cursor.from();\n state.posTo = cursor.to();\n if (callback) callback(cursor.from(), cursor.to());\n });\n }\n\n function clearSearch(cm) {\n cm.operation(function () {\n var state = getSearchState(cm);\n state.lastQuery = state.query;\n if (!state.query) return;\n state.query = state.queryText = null;\n cm.removeOverlay(state.overlay);\n\n if (state.annotate) {\n state.annotate.clear();\n state.annotate = null;\n }\n });\n }\n\n function getQueryDialog(cm) {\n return '<span class=\"CodeMirror-search-label\">' + cm.phrase(\"Search:\") + '</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">' + cm.phrase(\"(Use /re/ syntax for regexp search)\") + '</span>';\n }\n\n function getReplaceQueryDialog(cm) {\n return ' <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">' + cm.phrase(\"(Use /re/ syntax for regexp search)\") + '</span>';\n }\n\n function getReplacementQueryDialog(cm) {\n return '<span class=\"CodeMirror-search-label\">' + cm.phrase(\"With:\") + '</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/>';\n }\n\n function getDoReplaceConfirm(cm) {\n return '<span class=\"CodeMirror-search-label\">' + cm.phrase(\"Replace?\") + '</span> <button>' + cm.phrase(\"Yes\") + '</button> <button>' + cm.phrase(\"No\") + '</button> <button>' + cm.phrase(\"All\") + '</button> <button>' + cm.phrase(\"Stop\") + '</button> ';\n }\n\n function replaceAll(cm, query, text) {\n cm.operation(function () {\n for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {\n if (typeof query != \"string\") {\n var match = cm.getRange(cursor.from(), cursor.to()).match(query);\n cursor.replace(text.replace(/\\$(\\d)/g, function (_, i) {\n return match[i];\n }));\n } else cursor.replace(text);\n }\n });\n }\n\n function replace(cm, all) {\n if (cm.getOption(\"readOnly\")) return;\n var query = cm.getSelection() || getSearchState(cm).lastQuery;\n var dialogText = '<span class=\"CodeMirror-search-label\">' + (all ? cm.phrase(\"Replace all:\") : cm.phrase(\"Replace:\")) + '</span>';\n dialog(cm, dialogText + getReplaceQueryDialog(cm), dialogText, query, function (query) {\n if (!query) return;\n query = parseQuery(query);\n dialog(cm, getReplacementQueryDialog(cm), cm.phrase(\"Replace with:\"), \"\", function (text) {\n text = parseString(text);\n\n if (all) {\n replaceAll(cm, query, text);\n } else {\n clearSearch(cm);\n var cursor = getSearchCursor(cm, query, cm.getCursor(\"from\"));\n\n var advance = function () {\n var start = cursor.from(),\n match;\n\n if (!(match = cursor.findNext())) {\n cursor = getSearchCursor(cm, query);\n if (!(match = cursor.findNext()) || start && cursor.from().line == start.line && cursor.from().ch == start.ch) return;\n }\n\n cm.setSelection(cursor.from(), cursor.to());\n cm.scrollIntoView({\n from: cursor.from(),\n to: cursor.to()\n });\n confirmDialog(cm, getDoReplaceConfirm(cm), cm.phrase(\"Replace?\"), [function () {\n doReplace(match);\n }, advance, function () {\n replaceAll(cm, query, text);\n }]);\n };\n\n var doReplace = function (match) {\n cursor.replace(typeof query == \"string\" ? text : text.replace(/\\$(\\d)/g, function (_, i) {\n return match[i];\n }));\n advance();\n };\n\n advance();\n }\n });\n });\n }\n\n CodeMirror.commands.find = function (cm) {\n clearSearch(cm);\n doSearch(cm);\n };\n\n CodeMirror.commands.findPersistent = function (cm) {\n clearSearch(cm);\n doSearch(cm, false, true);\n };\n\n CodeMirror.commands.findPersistentNext = function (cm) {\n doSearch(cm, false, true, true);\n };\n\n CodeMirror.commands.findPersistentPrev = function (cm) {\n doSearch(cm, true, true, true);\n };\n\n CodeMirror.commands.findNext = doSearch;\n\n CodeMirror.commands.findPrev = function (cm) {\n doSearch(cm, true);\n };\n\n CodeMirror.commands.clearSearch = clearSearch;\n CodeMirror.commands.replace = replace;\n\n CodeMirror.commands.replaceAll = function (cm) {\n replace(cm, true);\n };\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vc2VhcmNoL3NlYXJjaC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9jb2RlbWlycm9yL2FkZG9uL3NlYXJjaC9zZWFyY2guanM/YTlkMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb2RlTWlycm9yLCBjb3B5cmlnaHQgKGMpIGJ5IE1hcmlqbiBIYXZlcmJla2UgYW5kIG90aGVyc1xuLy8gRGlzdHJpYnV0ZWQgdW5kZXIgYW4gTUlUIGxpY2Vuc2U6IGh0dHBzOi8vY29kZW1pcnJvci5uZXQvTElDRU5TRVxuXG4vLyBEZWZpbmUgc2VhcmNoIGNvbW1hbmRzLiBEZXBlbmRzIG9uIGRpYWxvZy5qcyBvciBhbm90aGVyXG4vLyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgb3BlbkRpYWxvZyBtZXRob2QuXG5cbi8vIFJlcGxhY2Ugd29ya3MgYSBsaXR0bGUgb2RkbHkgLS0gaXQgd2lsbCBkbyB0aGUgcmVwbGFjZSBvbiB0aGUgbmV4dFxuLy8gQ3RybC1HIChvciB3aGF0ZXZlciBpcyBib3VuZCB0byBmaW5kTmV4dCkgcHJlc3MuIFlvdSBwcmV2ZW50IGFcbi8vIHJlcGxhY2UgYnkgbWFraW5nIHN1cmUgdGhlIG1hdGNoIGlzIG5vIGxvbmdlciBzZWxlY3RlZCB3aGVuIGhpdHRpbmdcbi8vIEN0cmwtRy5cblxuKGZ1bmN0aW9uKG1vZCkge1xuICBpZiAodHlwZW9mIGV4cG9ydHMgPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgbW9kdWxlID09IFwib2JqZWN0XCIpIC8vIENvbW1vbkpTXG4gICAgbW9kKHJlcXVpcmUoXCIuLi8uLi9saWIvY29kZW1pcnJvclwiKSwgcmVxdWlyZShcIi4vc2VhcmNoY3Vyc29yXCIpLCByZXF1aXJlKFwiLi4vZGlhbG9nL2RpYWxvZ1wiKSk7XG4gIGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIC8vIEFNRFxuICAgIGRlZmluZShbXCIuLi8uLi9saWIvY29kZW1pcnJvclwiLCBcIi4vc2VhcmNoY3Vyc29yXCIsIFwiLi4vZGlhbG9nL2RpYWxvZ1wiXSwgbW9kKTtcbiAgZWxzZSAvLyBQbGFpbiBicm93c2VyIGVudlxuICAgIG1vZChDb2RlTWlycm9yKTtcbn0pKGZ1bmN0aW9uKENvZGVNaXJyb3IpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgZnVuY3Rpb24gc2VhcmNoT3ZlcmxheShxdWVyeSwgY2FzZUluc2Vuc2l0aXZlKSB7XG4gICAgaWYgKHR5cGVvZiBxdWVyeSA9PSBcInN0cmluZ1wiKVxuICAgICAgcXVlcnkgPSBuZXcgUmVnRXhwKHF1ZXJ5LnJlcGxhY2UoL1tcXC1cXFtcXF1cXC9cXHtcXH1cXChcXClcXCpcXCtcXD9cXC5cXFxcXFxeXFwkXFx8XS9nLCBcIlxcXFwkJlwiKSwgY2FzZUluc2Vuc2l0aXZlID8gXCJnaVwiIDogXCJnXCIpO1xuICAgIGVsc2UgaWYgKCFxdWVyeS5nbG9iYWwpXG4gICAgICBxdWVyeSA9IG5ldyBSZWdFeHAocXVlcnkuc291cmNlLCBxdWVyeS5pZ25vcmVDYXNlID8gXCJnaVwiIDogXCJnXCIpO1xuXG4gICAgcmV0dXJuIHt0b2tlbjogZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgICBxdWVyeS5sYXN0SW5kZXggPSBzdHJlYW0ucG9zO1xuICAgICAgdmFyIG1hdGNoID0gcXVlcnkuZXhlYyhzdHJlYW0uc3RyaW5nKTtcbiAgICAgIGlmIChtYXRjaCAmJiBtYXRjaC5pbmRleCA9PSBzdHJlYW0ucG9zKSB7XG4gICAgICAgIHN0cmVhbS5wb3MgKz0gbWF0Y2hbMF0ubGVuZ3RoIHx8IDE7XG4gICAgICAgIHJldHVybiBcInNlYXJjaGluZ1wiO1xuICAgICAgfSBlbHNlIGlmIChtYXRjaCkge1xuICAgICAgICBzdHJlYW0ucG9zID0gbWF0Y2guaW5kZXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHJlYW0uc2tpcFRvRW5kKCk7XG4gICAgICB9XG4gICAgfX07XG4gIH1cblxuICBmdW5jdGlvbiBTZWFyY2hTdGF0ZSgpIHtcbiAgICB0aGlzLnBvc0Zyb20gPSB0aGlzLnBvc1RvID0gdGhpcy5sYXN0UXVlcnkgPSB0aGlzLnF1ZXJ5ID0gbnVsbDtcbiAgICB0aGlzLm92ZXJsYXkgPSBudWxsO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0U2VhcmNoU3RhdGUoY20pIHtcbiAgICByZXR1cm4gY20uc3RhdGUuc2VhcmNoIHx8IChjbS5zdGF0ZS5zZWFyY2ggPSBuZXcgU2VhcmNoU3RhdGUoKSk7XG4gIH1cblxuICBmdW5jdGlvbiBxdWVyeUNhc2VJbnNlbnNpdGl2ZShxdWVyeSkge1xuICAgIHJldHVybiB0eXBlb2YgcXVlcnkgPT0gXCJzdHJpbmdcIiAmJiBxdWVyeSA9PSBxdWVyeS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0U2VhcmNoQ3Vyc29yKGNtLCBxdWVyeSwgcG9zKSB7XG4gICAgLy8gSGV1cmlzdGljOiBpZiB0aGUgcXVlcnkgc3RyaW5nIGlzIGFsbCBsb3dlcmNhc2UsIGRvIGEgY2FzZSBpbnNlbnNpdGl2ZSBzZWFyY2guXG4gICAgcmV0dXJuIGNtLmdldFNlYXJjaEN1cnNvcihxdWVyeSwgcG9zLCB7Y2FzZUZvbGQ6IHF1ZXJ5Q2FzZUluc2Vuc2l0aXZlKHF1ZXJ5KSwgbXVsdGlsaW5lOiB0cnVlfSk7XG4gIH1cblxuICBmdW5jdGlvbiBwZXJzaXN0ZW50RGlhbG9nKGNtLCB0ZXh0LCBkZWZsdCwgb25FbnRlciwgb25LZXlEb3duKSB7XG4gICAgY20ub3BlbkRpYWxvZyh0ZXh0LCBvbkVudGVyLCB7XG4gICAgICB2YWx1ZTogZGVmbHQsXG4gICAgICBzZWxlY3RWYWx1ZU9uT3BlbjogdHJ1ZSxcbiAgICAgIGNsb3NlT25FbnRlcjogZmFsc2UsXG4gICAgICBvbkNsb3NlOiBmdW5jdGlvbigpIHsgY2xlYXJTZWFyY2goY20pOyB9LFxuICAgICAgb25LZXlEb3duOiBvbktleURvd25cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpYWxvZyhjbSwgdGV4dCwgc2hvcnRUZXh0LCBkZWZsdCwgZikge1xuICAgIGlmIChjbS5vcGVuRGlhbG9nKSBjbS5vcGVuRGlhbG9nKHRleHQsIGYsIHt2YWx1ZTogZGVmbHQsIHNlbGVjdFZhbHVlT25PcGVuOiB0cnVlfSk7XG4gICAgZWxzZSBmKHByb21wdChzaG9ydFRleHQsIGRlZmx0KSk7XG4gIH1cblxuICBmdW5jdGlvbiBjb25maXJtRGlhbG9nKGNtLCB0ZXh0LCBzaG9ydFRleHQsIGZzKSB7XG4gICAgaWYgKGNtLm9wZW5Db25maXJtKSBjbS5vcGVuQ29uZmlybSh0ZXh0LCBmcyk7XG4gICAgZWxzZSBpZiAoY29uZmlybShzaG9ydFRleHQpKSBmc1swXSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VTdHJpbmcoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXFxcKFtucnRcXFxcXSkvZywgZnVuY3Rpb24obWF0Y2gsIGNoKSB7XG4gICAgICBpZiAoY2ggPT0gXCJuXCIpIHJldHVybiBcIlxcblwiXG4gICAgICBpZiAoY2ggPT0gXCJyXCIpIHJldHVybiBcIlxcclwiXG4gICAgICBpZiAoY2ggPT0gXCJ0XCIpIHJldHVybiBcIlxcdFwiXG4gICAgICBpZiAoY2ggPT0gXCJcXFxcXCIpIHJldHVybiBcIlxcXFxcIlxuICAgICAgcmV0dXJuIG1hdGNoXG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlUXVlcnkocXVlcnkpIHtcbiAgICB2YXIgaXNSRSA9IHF1ZXJ5Lm1hdGNoKC9eXFwvKC4qKVxcLyhbYS16XSopJC8pO1xuICAgIGlmIChpc1JFKSB7XG4gICAgICB0cnkgeyBxdWVyeSA9IG5ldyBSZWdFeHAoaXNSRVsxXSwgaXNSRVsyXS5pbmRleE9mKFwiaVwiKSA9PSAtMSA/IFwiXCIgOiBcImlcIik7IH1cbiAgICAgIGNhdGNoKGUpIHt9IC8vIE5vdCBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBhZnRlciBhbGwsIGRvIGEgc3RyaW5nIHNlYXJjaFxuICAgIH0gZWxzZSB7XG4gICAgICBxdWVyeSA9IHBhcnNlU3RyaW5nKHF1ZXJ5KVxuICAgIH1cbiAgICBpZiAodHlwZW9mIHF1ZXJ5ID09IFwic3RyaW5nXCIgPyBxdWVyeSA9PSBcIlwiIDogcXVlcnkudGVzdChcIlwiKSlcbiAgICAgIHF1ZXJ5ID0gL3heLztcbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cblxuICBmdW5jdGlvbiBzdGFydFNlYXJjaChjbSwgc3RhdGUsIHF1ZXJ5KSB7XG4gICAgc3RhdGUucXVlcnlUZXh0ID0gcXVlcnk7XG4gICAgc3RhdGUucXVlcnkgPSBwYXJzZVF1ZXJ5KHF1ZXJ5KTtcbiAgICBjbS5yZW1vdmVPdmVybGF5KHN0YXRlLm92ZXJsYXksIHF1ZXJ5Q2FzZUluc2Vuc2l0aXZlKHN0YXRlLnF1ZXJ5KSk7XG4gICAgc3RhdGUub3ZlcmxheSA9IHNlYXJjaE92ZXJsYXkoc3RhdGUucXVlcnksIHF1ZXJ5Q2FzZUluc2Vuc2l0aXZlKHN0YXRlLnF1ZXJ5KSk7XG4gICAgY20uYWRkT3ZlcmxheShzdGF0ZS5vdmVybGF5KTtcbiAgICBpZiAoY20uc2hvd01hdGNoZXNPblNjcm9sbGJhcikge1xuICAgICAgaWYgKHN0YXRlLmFubm90YXRlKSB7IHN0YXRlLmFubm90YXRlLmNsZWFyKCk7IHN0YXRlLmFubm90YXRlID0gbnVsbDsgfVxuICAgICAgc3RhdGUuYW5ub3RhdGUgPSBjbS5zaG93TWF0Y2hlc09uU2Nyb2xsYmFyKHN0YXRlLnF1ZXJ5LCBxdWVyeUNhc2VJbnNlbnNpdGl2ZShzdGF0ZS5xdWVyeSkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGRvU2VhcmNoKGNtLCByZXYsIHBlcnNpc3RlbnQsIGltbWVkaWF0ZSkge1xuICAgIHZhciBzdGF0ZSA9IGdldFNlYXJjaFN0YXRlKGNtKTtcbiAgICBpZiAoc3RhdGUucXVlcnkpIHJldHVybiBmaW5kTmV4dChjbSwgcmV2KTtcbiAgICB2YXIgcSA9IGNtLmdldFNlbGVjdGlvbigpIHx8IHN0YXRlLmxhc3RRdWVyeTtcbiAgICBpZiAocSBpbnN0YW5jZW9mIFJlZ0V4cCAmJiBxLnNvdXJjZSA9PSBcInheXCIpIHEgPSBudWxsXG4gICAgaWYgKHBlcnNpc3RlbnQgJiYgY20ub3BlbkRpYWxvZykge1xuICAgICAgdmFyIGhpZGluZyA9IG51bGxcbiAgICAgIHZhciBzZWFyY2hOZXh0ID0gZnVuY3Rpb24ocXVlcnksIGV2ZW50KSB7XG4gICAgICAgIENvZGVNaXJyb3IuZV9zdG9wKGV2ZW50KTtcbiAgICAgICAgaWYgKCFxdWVyeSkgcmV0dXJuO1xuICAgICAgICBpZiAocXVlcnkgIT0gc3RhdGUucXVlcnlUZXh0KSB7XG4gICAgICAgICAgc3RhcnRTZWFyY2goY20sIHN0YXRlLCBxdWVyeSk7XG4gICAgICAgICAgc3RhdGUucG9zRnJvbSA9IHN0YXRlLnBvc1RvID0gY20uZ2V0Q3Vyc29yKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhpZGluZykgaGlkaW5nLnN0eWxlLm9wYWNpdHkgPSAxXG4gICAgICAgIGZpbmROZXh0KGNtLCBldmVudC5zaGlmdEtleSwgZnVuY3Rpb24oXywgdG8pIHtcbiAgICAgICAgICB2YXIgZGlhbG9nXG4gICAgICAgICAgaWYgKHRvLmxpbmUgPCAzICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IgJiZcbiAgICAgICAgICAgICAgKGRpYWxvZyA9IGNtLmRpc3BsYXkud3JhcHBlci5xdWVyeVNlbGVjdG9yKFwiLkNvZGVNaXJyb3ItZGlhbG9nXCIpKSAmJlxuICAgICAgICAgICAgICBkaWFsb2cuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tIC0gNCA+IGNtLmN1cnNvckNvb3Jkcyh0bywgXCJ3aW5kb3dcIikudG9wKVxuICAgICAgICAgICAgKGhpZGluZyA9IGRpYWxvZykuc3R5bGUub3BhY2l0eSA9IC40XG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgICAgcGVyc2lzdGVudERpYWxvZyhjbSwgZ2V0UXVlcnlEaWFsb2coY20pLCBxLCBzZWFyY2hOZXh0LCBmdW5jdGlvbihldmVudCwgcXVlcnkpIHtcbiAgICAgICAgdmFyIGtleU5hbWUgPSBDb2RlTWlycm9yLmtleU5hbWUoZXZlbnQpXG4gICAgICAgIHZhciBleHRyYSA9IGNtLmdldE9wdGlvbignZXh0cmFLZXlzJyksIGNtZCA9IChleHRyYSAmJiBleHRyYVtrZXlOYW1lXSkgfHwgQ29kZU1pcnJvci5rZXlNYXBbY20uZ2V0T3B0aW9uKFwia2V5TWFwXCIpXVtrZXlOYW1lXVxuICAgICAgICBpZiAoY21kID09IFwiZmluZE5leHRcIiB8fCBjbWQgPT0gXCJmaW5kUHJldlwiIHx8XG4gICAgICAgICAgY21kID09IFwiZmluZFBlcnNpc3RlbnROZXh0XCIgfHwgY21kID09IFwiZmluZFBlcnNpc3RlbnRQcmV2XCIpIHtcbiAgICAgICAgICBDb2RlTWlycm9yLmVfc3RvcChldmVudCk7XG4gICAgICAgICAgc3RhcnRTZWFyY2goY20sIGdldFNlYXJjaFN0YXRlKGNtKSwgcXVlcnkpO1xuICAgICAgICAgIGNtLmV4ZWNDb21tYW5kKGNtZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY21kID09IFwiZmluZFwiIHx8IGNtZCA9PSBcImZpbmRQZXJzaXN0ZW50XCIpIHtcbiAgICAgICAgICBDb2RlTWlycm9yLmVfc3RvcChldmVudCk7XG4gICAgICAgICAgc2VhcmNoTmV4dChxdWVyeSwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmIChpbW1lZGlhdGUgJiYgcSkge1xuICAgICAgICBzdGFydFNlYXJjaChjbSwgc3RhdGUsIHEpO1xuICAgICAgICBmaW5kTmV4dChjbSwgcmV2KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGlhbG9nKGNtLCBnZXRRdWVyeURpYWxvZyhjbSksIFwiU2VhcmNoIGZvcjpcIiwgcSwgZnVuY3Rpb24ocXVlcnkpIHtcbiAgICAgICAgaWYgKHF1ZXJ5ICYmICFzdGF0ZS5xdWVyeSkgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHN0YXJ0U2VhcmNoKGNtLCBzdGF0ZSwgcXVlcnkpO1xuICAgICAgICAgIHN0YXRlLnBvc0Zyb20gPSBzdGF0ZS5wb3NUbyA9IGNtLmdldEN1cnNvcigpO1xuICAgICAgICAgIGZpbmROZXh0KGNtLCByZXYpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGZpbmROZXh0KGNtLCByZXYsIGNhbGxiYWNrKSB7Y20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdGF0ZSA9IGdldFNlYXJjaFN0YXRlKGNtKTtcbiAgICB2YXIgY3Vyc29yID0gZ2V0U2VhcmNoQ3Vyc29yKGNtLCBzdGF0ZS5xdWVyeSwgcmV2ID8gc3RhdGUucG9zRnJvbSA6IHN0YXRlLnBvc1RvKTtcbiAgICBpZiAoIWN1cnNvci5maW5kKHJldikpIHtcbiAgICAgIGN1cnNvciA9IGdldFNlYXJjaEN1cnNvcihjbSwgc3RhdGUucXVlcnksIHJldiA/IENvZGVNaXJyb3IuUG9zKGNtLmxhc3RMaW5lKCkpIDogQ29kZU1pcnJvci5Qb3MoY20uZmlyc3RMaW5lKCksIDApKTtcbiAgICAgIGlmICghY3Vyc29yLmZpbmQocmV2KSkgcmV0dXJuO1xuICAgIH1cbiAgICBjbS5zZXRTZWxlY3Rpb24oY3Vyc29yLmZyb20oKSwgY3Vyc29yLnRvKCkpO1xuICAgIGNtLnNjcm9sbEludG9WaWV3KHtmcm9tOiBjdXJzb3IuZnJvbSgpLCB0bzogY3Vyc29yLnRvKCl9LCAyMCk7XG4gICAgc3RhdGUucG9zRnJvbSA9IGN1cnNvci5mcm9tKCk7IHN0YXRlLnBvc1RvID0gY3Vyc29yLnRvKCk7XG4gICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjayhjdXJzb3IuZnJvbSgpLCBjdXJzb3IudG8oKSlcbiAgfSk7fVxuXG4gIGZ1bmN0aW9uIGNsZWFyU2VhcmNoKGNtKSB7Y20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdGF0ZSA9IGdldFNlYXJjaFN0YXRlKGNtKTtcbiAgICBzdGF0ZS5sYXN0UXVlcnkgPSBzdGF0ZS5xdWVyeTtcbiAgICBpZiAoIXN0YXRlLnF1ZXJ5KSByZXR1cm47XG4gICAgc3RhdGUucXVlcnkgPSBzdGF0ZS5xdWVyeVRleHQgPSBudWxsO1xuICAgIGNtLnJlbW92ZU92ZXJsYXkoc3RhdGUub3ZlcmxheSk7XG4gICAgaWYgKHN0YXRlLmFubm90YXRlKSB7IHN0YXRlLmFubm90YXRlLmNsZWFyKCk7IHN0YXRlLmFubm90YXRlID0gbnVsbDsgfVxuICB9KTt9XG5cblxuICBmdW5jdGlvbiBnZXRRdWVyeURpYWxvZyhjbSkgIHtcbiAgICByZXR1cm4gJzxzcGFuIGNsYXNzPVwiQ29kZU1pcnJvci1zZWFyY2gtbGFiZWxcIj4nICsgY20ucGhyYXNlKFwiU2VhcmNoOlwiKSArICc8L3NwYW4+IDxpbnB1dCB0eXBlPVwidGV4dFwiIHN0eWxlPVwid2lkdGg6IDEwZW1cIiBjbGFzcz1cIkNvZGVNaXJyb3Itc2VhcmNoLWZpZWxkXCIvPiA8c3BhbiBzdHlsZT1cImNvbG9yOiAjODg4XCIgY2xhc3M9XCJDb2RlTWlycm9yLXNlYXJjaC1oaW50XCI+JyArIGNtLnBocmFzZShcIihVc2UgL3JlLyBzeW50YXggZm9yIHJlZ2V4cCBzZWFyY2gpXCIpICsgJzwvc3Bhbj4nO1xuICB9XG4gIGZ1bmN0aW9uIGdldFJlcGxhY2VRdWVyeURpYWxvZyhjbSkge1xuICAgIHJldHVybiAnIDxpbnB1dCB0eXBlPVwidGV4dFwiIHN0eWxlPVwid2lkdGg6IDEwZW1cIiBjbGFzcz1cIkNvZGVNaXJyb3Itc2VhcmNoLWZpZWxkXCIvPiA8c3BhbiBzdHlsZT1cImNvbG9yOiAjODg4XCIgY2xhc3M9XCJDb2RlTWlycm9yLXNlYXJjaC1oaW50XCI+JyArIGNtLnBocmFzZShcIihVc2UgL3JlLyBzeW50YXggZm9yIHJlZ2V4cCBzZWFyY2gpXCIpICsgJzwvc3Bhbj4nO1xuICB9XG4gIGZ1bmN0aW9uIGdldFJlcGxhY2VtZW50UXVlcnlEaWFsb2coY20pIHtcbiAgICByZXR1cm4gJzxzcGFuIGNsYXNzPVwiQ29kZU1pcnJvci1zZWFyY2gtbGFiZWxcIj4nICsgY20ucGhyYXNlKFwiV2l0aDpcIikgKyAnPC9zcGFuPiA8aW5wdXQgdHlwZT1cInRleHRcIiBzdHlsZT1cIndpZHRoOiAxMGVtXCIgY2xhc3M9XCJDb2RlTWlycm9yLXNlYXJjaC1maWVsZFwiLz4nO1xuICB9XG4gIGZ1bmN0aW9uIGdldERvUmVwbGFjZUNvbmZpcm0oY20pIHtcbiAgICByZXR1cm4gJzxzcGFuIGNsYXNzPVwiQ29kZU1pcnJvci1zZWFyY2gtbGFiZWxcIj4nICsgY20ucGhyYXNlKFwiUmVwbGFjZT9cIikgKyAnPC9zcGFuPiA8YnV0dG9uPicgKyBjbS5waHJhc2UoXCJZZXNcIikgKyAnPC9idXR0b24+IDxidXR0b24+JyArIGNtLnBocmFzZShcIk5vXCIpICsgJzwvYnV0dG9uPiA8YnV0dG9uPicgKyBjbS5waHJhc2UoXCJBbGxcIikgKyAnPC9idXR0b24+IDxidXR0b24+JyArIGNtLnBocmFzZShcIlN0b3BcIikgKyAnPC9idXR0b24+ICc7XG4gIH1cblxuICBmdW5jdGlvbiByZXBsYWNlQWxsKGNtLCBxdWVyeSwgdGV4dCkge1xuICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgIGZvciAodmFyIGN1cnNvciA9IGdldFNlYXJjaEN1cnNvcihjbSwgcXVlcnkpOyBjdXJzb3IuZmluZE5leHQoKTspIHtcbiAgICAgICAgaWYgKHR5cGVvZiBxdWVyeSAhPSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgdmFyIG1hdGNoID0gY20uZ2V0UmFuZ2UoY3Vyc29yLmZyb20oKSwgY3Vyc29yLnRvKCkpLm1hdGNoKHF1ZXJ5KTtcbiAgICAgICAgICBjdXJzb3IucmVwbGFjZSh0ZXh0LnJlcGxhY2UoL1xcJChcXGQpL2csIGZ1bmN0aW9uKF8sIGkpIHtyZXR1cm4gbWF0Y2hbaV07fSkpO1xuICAgICAgICB9IGVsc2UgY3Vyc29yLnJlcGxhY2UodGV4dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXBsYWNlKGNtLCBhbGwpIHtcbiAgICBpZiAoY20uZ2V0T3B0aW9uKFwicmVhZE9ubHlcIikpIHJldHVybjtcbiAgICB2YXIgcXVlcnkgPSBjbS5nZXRTZWxlY3Rpb24oKSB8fCBnZXRTZWFyY2hTdGF0ZShjbSkubGFzdFF1ZXJ5O1xuICAgIHZhciBkaWFsb2dUZXh0ID0gJzxzcGFuIGNsYXNzPVwiQ29kZU1pcnJvci1zZWFyY2gtbGFiZWxcIj4nICsgKGFsbCA/IGNtLnBocmFzZShcIlJlcGxhY2UgYWxsOlwiKSA6IGNtLnBocmFzZShcIlJlcGxhY2U6XCIpKSArICc8L3NwYW4+JztcbiAgICBkaWFsb2coY20sIGRpYWxvZ1RleHQgKyBnZXRSZXBsYWNlUXVlcnlEaWFsb2coY20pLCBkaWFsb2dUZXh0LCBxdWVyeSwgZnVuY3Rpb24ocXVlcnkpIHtcbiAgICAgIGlmICghcXVlcnkpIHJldHVybjtcbiAgICAgIHF1ZXJ5ID0gcGFyc2VRdWVyeShxdWVyeSk7XG4gICAgICBkaWFsb2coY20sIGdldFJlcGxhY2VtZW50UXVlcnlEaWFsb2coY20pLCBjbS5waHJhc2UoXCJSZXBsYWNlIHdpdGg6XCIpLCBcIlwiLCBmdW5jdGlvbih0ZXh0KSB7XG4gICAgICAgIHRleHQgPSBwYXJzZVN0cmluZyh0ZXh0KVxuICAgICAgICBpZiAoYWxsKSB7XG4gICAgICAgICAgcmVwbGFjZUFsbChjbSwgcXVlcnksIHRleHQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2xlYXJTZWFyY2goY20pO1xuICAgICAgICAgIHZhciBjdXJzb3IgPSBnZXRTZWFyY2hDdXJzb3IoY20sIHF1ZXJ5LCBjbS5nZXRDdXJzb3IoXCJmcm9tXCIpKTtcbiAgICAgICAgICB2YXIgYWR2YW5jZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHN0YXJ0ID0gY3Vyc29yLmZyb20oKSwgbWF0Y2g7XG4gICAgICAgICAgICBpZiAoIShtYXRjaCA9IGN1cnNvci5maW5kTmV4dCgpKSkge1xuICAgICAgICAgICAgICBjdXJzb3IgPSBnZXRTZWFyY2hDdXJzb3IoY20sIHF1ZXJ5KTtcbiAgICAgICAgICAgICAgaWYgKCEobWF0Y2ggPSBjdXJzb3IuZmluZE5leHQoKSkgfHxcbiAgICAgICAgICAgICAgICAgIChzdGFydCAmJiBjdXJzb3IuZnJvbSgpLmxpbmUgPT0gc3RhcnQubGluZSAmJiBjdXJzb3IuZnJvbSgpLmNoID09IHN0YXJ0LmNoKSkgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY20uc2V0U2VsZWN0aW9uKGN1cnNvci5mcm9tKCksIGN1cnNvci50bygpKTtcbiAgICAgICAgICAgIGNtLnNjcm9sbEludG9WaWV3KHtmcm9tOiBjdXJzb3IuZnJvbSgpLCB0bzogY3Vyc29yLnRvKCl9KTtcbiAgICAgICAgICAgIGNvbmZpcm1EaWFsb2coY20sIGdldERvUmVwbGFjZUNvbmZpcm0oY20pLCBjbS5waHJhc2UoXCJSZXBsYWNlP1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Z1bmN0aW9uKCkge2RvUmVwbGFjZShtYXRjaCk7fSwgYWR2YW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkge3JlcGxhY2VBbGwoY20sIHF1ZXJ5LCB0ZXh0KX1dKTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIHZhciBkb1JlcGxhY2UgPSBmdW5jdGlvbihtYXRjaCkge1xuICAgICAgICAgICAgY3Vyc29yLnJlcGxhY2UodHlwZW9mIHF1ZXJ5ID09IFwic3RyaW5nXCIgPyB0ZXh0IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQucmVwbGFjZSgvXFwkKFxcZCkvZywgZnVuY3Rpb24oXywgaSkge3JldHVybiBtYXRjaFtpXTt9KSk7XG4gICAgICAgICAgICBhZHZhbmNlKCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBhZHZhbmNlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgQ29kZU1pcnJvci5jb21tYW5kcy5maW5kID0gZnVuY3Rpb24oY20pIHtjbGVhclNlYXJjaChjbSk7IGRvU2VhcmNoKGNtKTt9O1xuICBDb2RlTWlycm9yLmNvbW1hbmRzLmZpbmRQZXJzaXN0ZW50ID0gZnVuY3Rpb24oY20pIHtjbGVhclNlYXJjaChjbSk7IGRvU2VhcmNoKGNtLCBmYWxzZSwgdHJ1ZSk7fTtcbiAgQ29kZU1pcnJvci5jb21tYW5kcy5maW5kUGVyc2lzdGVudE5leHQgPSBmdW5jdGlvbihjbSkge2RvU2VhcmNoKGNtLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7fTtcbiAgQ29kZU1pcnJvci5jb21tYW5kcy5maW5kUGVyc2lzdGVudFByZXYgPSBmdW5jdGlvbihjbSkge2RvU2VhcmNoKGNtLCB0cnVlLCB0cnVlLCB0cnVlKTt9O1xuICBDb2RlTWlycm9yLmNvbW1hbmRzLmZpbmROZXh0ID0gZG9TZWFyY2g7XG4gIENvZGVNaXJyb3IuY29tbWFuZHMuZmluZFByZXYgPSBmdW5jdGlvbihjbSkge2RvU2VhcmNoKGNtLCB0cnVlKTt9O1xuICBDb2RlTWlycm9yLmNvbW1hbmRzLmNsZWFyU2VhcmNoID0gY2xlYXJTZWFyY2g7XG4gIENvZGVNaXJyb3IuY29tbWFuZHMucmVwbGFjZSA9IHJlcGxhY2U7XG4gIENvZGVNaXJyb3IuY29tbWFuZHMucmVwbGFjZUFsbCA9IGZ1bmN0aW9uKGNtKSB7cmVwbGFjZShjbSwgdHJ1ZSk7fTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQSw0VUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWEE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/codemirror/addon/search/search.js\n");
220
221/***/ }),
222
223/***/ "../../../node_modules/codemirror/addon/search/searchcursor.js":
224/*!************************************************************************************************!*\
225 !*** /home/runner/work/graphiql/graphiql/node_modules/codemirror/addon/search/searchcursor.js ***!
226 \************************************************************************************************/
227/*! no static exports found */
228/***/ (function(module, exports, __webpack_require__) {
229
230eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n // CodeMirror, copyright (c) by Marijn Haverbeke and others\n // Distributed under an MIT license: https://codemirror.net/LICENSE\n (function (mod) {\n if (true) // CommonJS\n mod(__webpack_require__(/*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));else {}\n })(function (CodeMirror) {\n \"use strict\";\n\n var Pos = CodeMirror.Pos;\n\n function regexpFlags(regexp) {\n var flags = regexp.flags;\n return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\") + (regexp.global ? \"g\" : \"\") + (regexp.multiline ? \"m\" : \"\");\n }\n\n function ensureFlags(regexp, flags) {\n var current = regexpFlags(regexp),\n target = current;\n\n for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1) target += flags.charAt(i);\n\n return current == target ? regexp : new RegExp(regexp.source, target);\n }\n\n function maybeMultiline(regexp) {\n return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source);\n }\n\n function searchRegexpForward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\");\n\n for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n regexp.lastIndex = ch;\n var string = doc.getLine(line),\n match = regexp.exec(string);\n if (match) return {\n from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match\n };\n }\n }\n\n function searchRegexpForwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start);\n regexp = ensureFlags(regexp, \"gm\");\n var string,\n chunk = 1;\n\n for (var line = start.line, last = doc.lastLine(); line <= last;) {\n // This grows the search buffer in exponentially-sized chunks\n // between matches, so that nearby matches are fast and don't\n // require concatenating the whole document (in case we're\n // searching for something that has tons of matches), but at the\n // same time, the amount of retries is limited.\n for (var i = 0; i < chunk; i++) {\n if (line > last) break;\n var curLine = doc.getLine(line++);\n string = string == null ? curLine : string + \"\\n\" + curLine;\n }\n\n chunk = chunk * 2;\n regexp.lastIndex = start.ch;\n var match = regexp.exec(string);\n\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"),\n inside = match[0].split(\"\\n\");\n var startLine = start.line + before.length - 1,\n startCh = before[before.length - 1].length;\n return {\n from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1, inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match\n };\n }\n }\n }\n\n function lastMatchIn(string, regexp, endMargin) {\n var match,\n from = 0;\n\n while (from <= string.length) {\n regexp.lastIndex = from;\n var newMatch = regexp.exec(string);\n if (!newMatch) break;\n var end = newMatch.index + newMatch[0].length;\n if (end > string.length - endMargin) break;\n if (!match || end > match.index + match[0].length) match = newMatch;\n from = newMatch.index + 1;\n }\n\n return match;\n }\n\n function searchRegexpBackward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\");\n\n for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n var string = doc.getLine(line);\n var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch);\n if (match) return {\n from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match\n };\n }\n }\n\n function searchRegexpBackwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start);\n regexp = ensureFlags(regexp, \"gm\");\n var string,\n chunkSize = 1,\n endMargin = doc.getLine(start.line).length - start.ch;\n\n for (var line = start.line, first = doc.firstLine(); line >= first;) {\n for (var i = 0; i < chunkSize && line >= first; i++) {\n var curLine = doc.getLine(line--);\n string = string == null ? curLine : curLine + \"\\n\" + string;\n }\n\n chunkSize *= 2;\n var match = lastMatchIn(string, regexp, endMargin);\n\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"),\n inside = match[0].split(\"\\n\");\n var startLine = line + before.length,\n startCh = before[before.length - 1].length;\n return {\n from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1, inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match\n };\n }\n }\n }\n\n var doFold, noFold;\n\n if (String.prototype.normalize) {\n doFold = function (str) {\n return str.normalize(\"NFD\").toLowerCase();\n };\n\n noFold = function (str) {\n return str.normalize(\"NFD\");\n };\n } else {\n doFold = function (str) {\n return str.toLowerCase();\n };\n\n noFold = function (str) {\n return str;\n };\n } // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n\n\n function adjustPos(orig, folded, pos, foldFunc) {\n if (orig.length == folded.length) return pos;\n\n for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n if (min == max) return min;\n var mid = min + max >> 1;\n var len = foldFunc(orig.slice(0, mid)).length;\n if (len == pos) return mid;else if (len > pos) max = mid;else min = mid + 1;\n }\n }\n\n function searchStringForward(doc, query, start, caseFold) {\n // Empty string would match anything and never progress, so we\n // define it to match nothing instead.\n if (!query.length) return null;\n var fold = caseFold ? doFold : noFold;\n var lines = fold(query).split(/\\r|\\n\\r?/);\n\n search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n var orig = doc.getLine(line).slice(ch),\n string = fold(orig);\n\n if (lines.length == 1) {\n var found = string.indexOf(lines[0]);\n if (found == -1) continue search;\n var start = adjustPos(orig, string, found, fold) + ch;\n return {\n from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)\n };\n } else {\n var cutFrom = string.length - lines[0].length;\n if (string.slice(cutFrom) != lines[0]) continue search;\n\n for (var i = 1; i < lines.length - 1; i++) if (fold(doc.getLine(line + i)) != lines[i]) continue search;\n\n var end = doc.getLine(line + lines.length - 1),\n endString = fold(end),\n lastLine = lines[lines.length - 1];\n if (endString.slice(0, lastLine.length) != lastLine) continue search;\n return {\n from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))\n };\n }\n }\n }\n\n function searchStringBackward(doc, query, start, caseFold) {\n if (!query.length) return null;\n var fold = caseFold ? doFold : noFold;\n var lines = fold(query).split(/\\r|\\n\\r?/);\n\n search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n var orig = doc.getLine(line);\n if (ch > -1) orig = orig.slice(0, ch);\n var string = fold(orig);\n\n if (lines.length == 1) {\n var found = string.lastIndexOf(lines[0]);\n if (found == -1) continue search;\n return {\n from: Pos(line, adjustPos(orig, string, found, fold)),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))\n };\n } else {\n var lastLine = lines[lines.length - 1];\n if (string.slice(0, lastLine.length) != lastLine) continue search;\n\n for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++) if (fold(doc.getLine(start + i)) != lines[i]) continue search;\n\n var top = doc.getLine(line + 1 - lines.length),\n topString = fold(top);\n if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search;\n return {\n from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n to: Pos(line, adjustPos(orig, string, lastLine.length, fold))\n };\n }\n }\n }\n\n function SearchCursor(doc, query, pos, options) {\n this.atOccurrence = false;\n this.doc = doc;\n pos = pos ? doc.clipPos(pos) : Pos(0, 0);\n this.pos = {\n from: pos,\n to: pos\n };\n var caseFold;\n\n if (typeof options == \"object\") {\n caseFold = options.caseFold;\n } else {\n // Backwards compat for when caseFold was the 4th argument\n caseFold = options;\n options = null;\n }\n\n if (typeof query == \"string\") {\n if (caseFold == null) caseFold = false;\n\n this.matches = function (reverse, pos) {\n return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold);\n };\n } else {\n query = ensureFlags(query, \"gm\");\n if (!options || options.multiline !== false) this.matches = function (reverse, pos) {\n return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos);\n };else this.matches = function (reverse, pos) {\n return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos);\n };\n }\n }\n\n SearchCursor.prototype = {\n findNext: function () {\n return this.find(false);\n },\n findPrevious: function () {\n return this.find(true);\n },\n find: function (reverse) {\n var result = this.matches(reverse, this.doc.clipPos(reverse ? this.pos.from : this.pos.to)); // Implements weird auto-growing behavior on null-matches for\n // backwards-compatibility with the vim code (unfortunately)\n\n while (result && CodeMirror.cmpPos(result.from, result.to) == 0) {\n if (reverse) {\n if (result.from.ch) result.from = Pos(result.from.line, result.from.ch - 1);else if (result.from.line == this.doc.firstLine()) result = null;else result = this.matches(reverse, this.doc.clipPos(Pos(result.from.line - 1)));\n } else {\n if (result.to.ch < this.doc.getLine(result.to.line).length) result.to = Pos(result.to.line, result.to.ch + 1);else if (result.to.line == this.doc.lastLine()) result = null;else result = this.matches(reverse, Pos(result.to.line + 1, 0));\n }\n }\n\n if (result) {\n this.pos = result;\n this.atOccurrence = true;\n return this.pos.match || true;\n } else {\n var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0);\n this.pos = {\n from: end,\n to: end\n };\n return this.atOccurrence = false;\n }\n },\n from: function () {\n if (this.atOccurrence) return this.pos.from;\n },\n to: function () {\n if (this.atOccurrence) return this.pos.to;\n },\n replace: function (newText, origin) {\n if (!this.atOccurrence) return;\n var lines = CodeMirror.splitLines(newText);\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin);\n this.pos.to = Pos(this.pos.from.line + lines.length - 1, lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0));\n }\n };\n CodeMirror.defineExtension(\"getSearchCursor\", function (query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold);\n });\n CodeMirror.defineDocExtension(\"getSearchCursor\", function (query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold);\n });\n CodeMirror.defineExtension(\"selectMatches\", function (query, caseFold) {\n var ranges = [];\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold);\n\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break;\n ranges.push({\n anchor: cur.from(),\n head: cur.to()\n });\n }\n\n if (ranges.length) this.setSelections(ranges, 0);\n });\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvYWRkb24vc2VhcmNoL3NlYXJjaGN1cnNvci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9jb2RlbWlycm9yL2FkZG9uL3NlYXJjaC9zZWFyY2hjdXJzb3IuanM/NjA5MiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb2RlTWlycm9yLCBjb3B5cmlnaHQgKGMpIGJ5IE1hcmlqbiBIYXZlcmJla2UgYW5kIG90aGVyc1xuLy8gRGlzdHJpYnV0ZWQgdW5kZXIgYW4gTUlUIGxpY2Vuc2U6IGh0dHBzOi8vY29kZW1pcnJvci5uZXQvTElDRU5TRVxuXG4oZnVuY3Rpb24obW9kKSB7XG4gIGlmICh0eXBlb2YgZXhwb3J0cyA9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBtb2R1bGUgPT0gXCJvYmplY3RcIikgLy8gQ29tbW9uSlNcbiAgICBtb2QocmVxdWlyZShcIi4uLy4uL2xpYi9jb2RlbWlycm9yXCIpKVxuICBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSAvLyBBTURcbiAgICBkZWZpbmUoW1wiLi4vLi4vbGliL2NvZGVtaXJyb3JcIl0sIG1vZClcbiAgZWxzZSAvLyBQbGFpbiBicm93c2VyIGVudlxuICAgIG1vZChDb2RlTWlycm9yKVxufSkoZnVuY3Rpb24oQ29kZU1pcnJvcikge1xuICBcInVzZSBzdHJpY3RcIlxuICB2YXIgUG9zID0gQ29kZU1pcnJvci5Qb3NcblxuICBmdW5jdGlvbiByZWdleHBGbGFncyhyZWdleHApIHtcbiAgICB2YXIgZmxhZ3MgPSByZWdleHAuZmxhZ3NcbiAgICByZXR1cm4gZmxhZ3MgIT0gbnVsbCA/IGZsYWdzIDogKHJlZ2V4cC5pZ25vcmVDYXNlID8gXCJpXCIgOiBcIlwiKVxuICAgICAgKyAocmVnZXhwLmdsb2JhbCA/IFwiZ1wiIDogXCJcIilcbiAgICAgICsgKHJlZ2V4cC5tdWx0aWxpbmUgPyBcIm1cIiA6IFwiXCIpXG4gIH1cblxuICBmdW5jdGlvbiBlbnN1cmVGbGFncyhyZWdleHAsIGZsYWdzKSB7XG4gICAgdmFyIGN1cnJlbnQgPSByZWdleHBGbGFncyhyZWdleHApLCB0YXJnZXQgPSBjdXJyZW50XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmbGFncy5sZW5ndGg7IGkrKykgaWYgKHRhcmdldC5pbmRleE9mKGZsYWdzLmNoYXJBdChpKSkgPT0gLTEpXG4gICAgICB0YXJnZXQgKz0gZmxhZ3MuY2hhckF0KGkpXG4gICAgcmV0dXJuIGN1cnJlbnQgPT0gdGFyZ2V0ID8gcmVnZXhwIDogbmV3IFJlZ0V4cChyZWdleHAuc291cmNlLCB0YXJnZXQpXG4gIH1cblxuICBmdW5jdGlvbiBtYXliZU11bHRpbGluZShyZWdleHApIHtcbiAgICByZXR1cm4gL1xcXFxzfFxcXFxufFxcbnxcXFxcV3xcXFxcRHxcXFtcXF4vLnRlc3QocmVnZXhwLnNvdXJjZSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHNlYXJjaFJlZ2V4cEZvcndhcmQoZG9jLCByZWdleHAsIHN0YXJ0KSB7XG4gICAgcmVnZXhwID0gZW5zdXJlRmxhZ3MocmVnZXhwLCBcImdcIilcbiAgICBmb3IgKHZhciBsaW5lID0gc3RhcnQubGluZSwgY2ggPSBzdGFydC5jaCwgbGFzdCA9IGRvYy5sYXN0TGluZSgpOyBsaW5lIDw9IGxhc3Q7IGxpbmUrKywgY2ggPSAwKSB7XG4gICAgICByZWdleHAubGFzdEluZGV4ID0gY2hcbiAgICAgIHZhciBzdHJpbmcgPSBkb2MuZ2V0TGluZShsaW5lKSwgbWF0Y2ggPSByZWdleHAuZXhlYyhzdHJpbmcpXG4gICAgICBpZiAobWF0Y2gpXG4gICAgICAgIHJldHVybiB7ZnJvbTogUG9zKGxpbmUsIG1hdGNoLmluZGV4KSxcbiAgICAgICAgICAgICAgICB0bzogUG9zKGxpbmUsIG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICBtYXRjaDogbWF0Y2h9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2VhcmNoUmVnZXhwRm9yd2FyZE11bHRpbGluZShkb2MsIHJlZ2V4cCwgc3RhcnQpIHtcbiAgICBpZiAoIW1heWJlTXVsdGlsaW5lKHJlZ2V4cCkpIHJldHVybiBzZWFyY2hSZWdleHBGb3J3YXJkKGRvYywgcmVnZXhwLCBzdGFydClcblxuICAgIHJlZ2V4cCA9IGVuc3VyZUZsYWdzKHJlZ2V4cCwgXCJnbVwiKVxuICAgIHZhciBzdHJpbmcsIGNodW5rID0gMVxuICAgIGZvciAodmFyIGxpbmUgPSBzdGFydC5saW5lLCBsYXN0ID0gZG9jLmxhc3RMaW5lKCk7IGxpbmUgPD0gbGFzdDspIHtcbiAgICAgIC8vIFRoaXMgZ3Jvd3MgdGhlIHNlYXJjaCBidWZmZXIgaW4gZXhwb25lbnRpYWxseS1zaXplZCBjaHVua3NcbiAgICAgIC8vIGJldHdlZW4gbWF0Y2hlcywgc28gdGhhdCBuZWFyYnkgbWF0Y2hlcyBhcmUgZmFzdCBhbmQgZG9uJ3RcbiAgICAgIC8vIHJlcXVpcmUgY29uY2F0ZW5hdGluZyB0aGUgd2hvbGUgZG9jdW1lbnQgKGluIGNhc2Ugd2UncmVcbiAgICAgIC8vIHNlYXJjaGluZyBmb3Igc29tZXRoaW5nIHRoYXQgaGFzIHRvbnMgb2YgbWF0Y2hlcyksIGJ1dCBhdCB0aGVcbiAgICAgIC8vIHNhbWUgdGltZSwgdGhlIGFtb3VudCBvZiByZXRyaWVzIGlzIGxpbWl0ZWQuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNodW5rOyBpKyspIHtcbiAgICAgICAgaWYgKGxpbmUgPiBsYXN0KSBicmVha1xuICAgICAgICB2YXIgY3VyTGluZSA9IGRvYy5nZXRMaW5lKGxpbmUrKylcbiAgICAgICAgc3RyaW5nID0gc3RyaW5nID09IG51bGwgPyBjdXJMaW5lIDogc3RyaW5nICsgXCJcXG5cIiArIGN1ckxpbmVcbiAgICAgIH1cbiAgICAgIGNodW5rID0gY2h1bmsgKiAyXG4gICAgICByZWdleHAubGFzdEluZGV4ID0gc3RhcnQuY2hcbiAgICAgIHZhciBtYXRjaCA9IHJlZ2V4cC5leGVjKHN0cmluZylcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICB2YXIgYmVmb3JlID0gc3RyaW5nLnNsaWNlKDAsIG1hdGNoLmluZGV4KS5zcGxpdChcIlxcblwiKSwgaW5zaWRlID0gbWF0Y2hbMF0uc3BsaXQoXCJcXG5cIilcbiAgICAgICAgdmFyIHN0YXJ0TGluZSA9IHN0YXJ0LmxpbmUgKyBiZWZvcmUubGVuZ3RoIC0gMSwgc3RhcnRDaCA9IGJlZm9yZVtiZWZvcmUubGVuZ3RoIC0gMV0ubGVuZ3RoXG4gICAgICAgIHJldHVybiB7ZnJvbTogUG9zKHN0YXJ0TGluZSwgc3RhcnRDaCksXG4gICAgICAgICAgICAgICAgdG86IFBvcyhzdGFydExpbmUgKyBpbnNpZGUubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZS5sZW5ndGggPT0gMSA/IHN0YXJ0Q2ggKyBpbnNpZGVbMF0ubGVuZ3RoIDogaW5zaWRlW2luc2lkZS5sZW5ndGggLSAxXS5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIG1hdGNoOiBtYXRjaH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBsYXN0TWF0Y2hJbihzdHJpbmcsIHJlZ2V4cCwgZW5kTWFyZ2luKSB7XG4gICAgdmFyIG1hdGNoLCBmcm9tID0gMFxuICAgIHdoaWxlIChmcm9tIDw9IHN0cmluZy5sZW5ndGgpIHtcbiAgICAgIHJlZ2V4cC5sYXN0SW5kZXggPSBmcm9tXG4gICAgICB2YXIgbmV3TWF0Y2ggPSByZWdleHAuZXhlYyhzdHJpbmcpXG4gICAgICBpZiAoIW5ld01hdGNoKSBicmVha1xuICAgICAgdmFyIGVuZCA9IG5ld01hdGNoLmluZGV4ICsgbmV3TWF0Y2hbMF0ubGVuZ3RoXG4gICAgICBpZiAoZW5kID4gc3RyaW5nLmxlbmd0aCAtIGVuZE1hcmdpbikgYnJlYWtcbiAgICAgIGlmICghbWF0Y2ggfHwgZW5kID4gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgpXG4gICAgICAgIG1hdGNoID0gbmV3TWF0Y2hcbiAgICAgIGZyb20gPSBuZXdNYXRjaC5pbmRleCArIDFcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoXG4gIH1cblxuICBmdW5jdGlvbiBzZWFyY2hSZWdleHBCYWNrd2FyZChkb2MsIHJlZ2V4cCwgc3RhcnQpIHtcbiAgICByZWdleHAgPSBlbnN1cmVGbGFncyhyZWdleHAsIFwiZ1wiKVxuICAgIGZvciAodmFyIGxpbmUgPSBzdGFydC5saW5lLCBjaCA9IHN0YXJ0LmNoLCBmaXJzdCA9IGRvYy5maXJzdExpbmUoKTsgbGluZSA+PSBmaXJzdDsgbGluZS0tLCBjaCA9IC0xKSB7XG4gICAgICB2YXIgc3RyaW5nID0gZG9jLmdldExpbmUobGluZSlcbiAgICAgIHZhciBtYXRjaCA9IGxhc3RNYXRjaEluKHN0cmluZywgcmVnZXhwLCBjaCA8IDAgPyAwIDogc3RyaW5nLmxlbmd0aCAtIGNoKVxuICAgICAgaWYgKG1hdGNoKVxuICAgICAgICByZXR1cm4ge2Zyb206IFBvcyhsaW5lLCBtYXRjaC5pbmRleCksXG4gICAgICAgICAgICAgICAgdG86IFBvcyhsaW5lLCBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCksXG4gICAgICAgICAgICAgICAgbWF0Y2g6IG1hdGNofVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNlYXJjaFJlZ2V4cEJhY2t3YXJkTXVsdGlsaW5lKGRvYywgcmVnZXhwLCBzdGFydCkge1xuICAgIGlmICghbWF5YmVNdWx0aWxpbmUocmVnZXhwKSkgcmV0dXJuIHNlYXJjaFJlZ2V4cEJhY2t3YXJkKGRvYywgcmVnZXhwLCBzdGFydClcbiAgICByZWdleHAgPSBlbnN1cmVGbGFncyhyZWdleHAsIFwiZ21cIilcbiAgICB2YXIgc3RyaW5nLCBjaHVua1NpemUgPSAxLCBlbmRNYXJnaW4gPSBkb2MuZ2V0TGluZShzdGFydC5saW5lKS5sZW5ndGggLSBzdGFydC5jaFxuICAgIGZvciAodmFyIGxpbmUgPSBzdGFydC5saW5lLCBmaXJzdCA9IGRvYy5maXJzdExpbmUoKTsgbGluZSA+PSBmaXJzdDspIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2h1bmtTaXplICYmIGxpbmUgPj0gZmlyc3Q7IGkrKykge1xuICAgICAgICB2YXIgY3VyTGluZSA9IGRvYy5nZXRMaW5lKGxpbmUtLSlcbiAgICAgICAgc3RyaW5nID0gc3RyaW5nID09IG51bGwgPyBjdXJMaW5lIDogY3VyTGluZSArIFwiXFxuXCIgKyBzdHJpbmdcbiAgICAgIH1cbiAgICAgIGNodW5rU2l6ZSAqPSAyXG5cbiAgICAgIHZhciBtYXRjaCA9IGxhc3RNYXRjaEluKHN0cmluZywgcmVnZXhwLCBlbmRNYXJnaW4pXG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgdmFyIGJlZm9yZSA9IHN0cmluZy5zbGljZSgwLCBtYXRjaC5pbmRleCkuc3BsaXQoXCJcXG5cIiksIGluc2lkZSA9IG1hdGNoWzBdLnNwbGl0KFwiXFxuXCIpXG4gICAgICAgIHZhciBzdGFydExpbmUgPSBsaW5lICsgYmVmb3JlLmxlbmd0aCwgc3RhcnRDaCA9IGJlZm9yZVtiZWZvcmUubGVuZ3RoIC0gMV0ubGVuZ3RoXG4gICAgICAgIHJldHVybiB7ZnJvbTogUG9zKHN0YXJ0TGluZSwgc3RhcnRDaCksXG4gICAgICAgICAgICAgICAgdG86IFBvcyhzdGFydExpbmUgKyBpbnNpZGUubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZS5sZW5ndGggPT0gMSA/IHN0YXJ0Q2ggKyBpbnNpZGVbMF0ubGVuZ3RoIDogaW5zaWRlW2luc2lkZS5sZW5ndGggLSAxXS5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIG1hdGNoOiBtYXRjaH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgZG9Gb2xkLCBub0ZvbGRcbiAgaWYgKFN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplKSB7XG4gICAgZG9Gb2xkID0gZnVuY3Rpb24oc3RyKSB7IHJldHVybiBzdHIubm9ybWFsaXplKFwiTkZEXCIpLnRvTG93ZXJDYXNlKCkgfVxuICAgIG5vRm9sZCA9IGZ1bmN0aW9uKHN0cikgeyByZXR1cm4gc3RyLm5vcm1hbGl6ZShcIk5GRFwiKSB9XG4gIH0gZWxzZSB7XG4gICAgZG9Gb2xkID0gZnVuY3Rpb24oc3RyKSB7IHJldHVybiBzdHIudG9Mb3dlckNhc2UoKSB9XG4gICAgbm9Gb2xkID0gZnVuY3Rpb24oc3RyKSB7IHJldHVybiBzdHIgfVxuICB9XG5cbiAgLy8gTWFwcyBhIHBvc2l0aW9uIGluIGEgY2FzZS1mb2xkZWQgbGluZSBiYWNrIHRvIGEgcG9zaXRpb24gaW4gdGhlIG9yaWdpbmFsIGxpbmVcbiAgLy8gKGNvbXBlbnNhdGluZyBmb3IgY29kZXBvaW50cyBpbmNyZWFzaW5nIGluIG51bWJlciBkdXJpbmcgZm9sZGluZylcbiAgZnVuY3Rpb24gYWRqdXN0UG9zKG9yaWcsIGZvbGRlZCwgcG9zLCBmb2xkRnVuYykge1xuICAgIGlmIChvcmlnLmxlbmd0aCA9PSBmb2xkZWQubGVuZ3RoKSByZXR1cm4gcG9zXG4gICAgZm9yICh2YXIgbWluID0gMCwgbWF4ID0gcG9zICsgTWF0aC5tYXgoMCwgb3JpZy5sZW5ndGggLSBmb2xkZWQubGVuZ3RoKTs7KSB7XG4gICAgICBpZiAobWluID09IG1heCkgcmV0dXJuIG1pblxuICAgICAgdmFyIG1pZCA9IChtaW4gKyBtYXgpID4+IDFcbiAgICAgIHZhciBsZW4gPSBmb2xkRnVuYyhvcmlnLnNsaWNlKDAsIG1pZCkpLmxlbmd0aFxuICAgICAgaWYgKGxlbiA9PSBwb3MpIHJldHVybiBtaWRcbiAgICAgIGVsc2UgaWYgKGxlbiA+IHBvcykgbWF4ID0gbWlkXG4gICAgICBlbHNlIG1pbiA9IG1pZCArIDFcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzZWFyY2hTdHJpbmdGb3J3YXJkKGRvYywgcXVlcnksIHN0YXJ0LCBjYXNlRm9sZCkge1xuICAgIC8vIEVtcHR5IHN0cmluZyB3b3VsZCBtYXRjaCBhbnl0aGluZyBhbmQgbmV2ZXIgcHJvZ3Jlc3MsIHNvIHdlXG4gICAgLy8gZGVmaW5lIGl0IHRvIG1hdGNoIG5vdGhpbmcgaW5zdGVhZC5cbiAgICBpZiAoIXF1ZXJ5Lmxlbmd0aCkgcmV0dXJuIG51bGxcbiAgICB2YXIgZm9sZCA9IGNhc2VGb2xkID8gZG9Gb2xkIDogbm9Gb2xkXG4gICAgdmFyIGxpbmVzID0gZm9sZChxdWVyeSkuc3BsaXQoL1xccnxcXG5cXHI/LylcblxuICAgIHNlYXJjaDogZm9yICh2YXIgbGluZSA9IHN0YXJ0LmxpbmUsIGNoID0gc3RhcnQuY2gsIGxhc3QgPSBkb2MubGFzdExpbmUoKSArIDEgLSBsaW5lcy5sZW5ndGg7IGxpbmUgPD0gbGFzdDsgbGluZSsrLCBjaCA9IDApIHtcbiAgICAgIHZhciBvcmlnID0gZG9jLmdldExpbmUobGluZSkuc2xpY2UoY2gpLCBzdHJpbmcgPSBmb2xkKG9yaWcpXG4gICAgICBpZiAobGluZXMubGVuZ3RoID09IDEpIHtcbiAgICAgICAgdmFyIGZvdW5kID0gc3RyaW5nLmluZGV4T2YobGluZXNbMF0pXG4gICAgICAgIGlmIChmb3VuZCA9PSAtMSkgY29udGludWUgc2VhcmNoXG4gICAgICAgIHZhciBzdGFydCA9IGFkanVzdFBvcyhvcmlnLCBzdHJpbmcsIGZvdW5kLCBmb2xkKSArIGNoXG4gICAgICAgIHJldHVybiB7ZnJvbTogUG9zKGxpbmUsIGFkanVzdFBvcyhvcmlnLCBzdHJpbmcsIGZvdW5kLCBmb2xkKSArIGNoKSxcbiAgICAgICAgICAgICAgICB0bzogUG9zKGxpbmUsIGFkanVzdFBvcyhvcmlnLCBzdHJpbmcsIGZvdW5kICsgbGluZXNbMF0ubGVuZ3RoLCBmb2xkKSArIGNoKX1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBjdXRGcm9tID0gc3RyaW5nLmxlbmd0aCAtIGxpbmVzWzBdLmxlbmd0aFxuICAgICAgICBpZiAoc3RyaW5nLnNsaWNlKGN1dEZyb20pICE9IGxpbmVzWzBdKSBjb250aW51ZSBzZWFyY2hcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBsaW5lcy5sZW5ndGggLSAxOyBpKyspXG4gICAgICAgICAgaWYgKGZvbGQoZG9jLmdldExpbmUobGluZSArIGkpKSAhPSBsaW5lc1tpXSkgY29udGludWUgc2VhcmNoXG4gICAgICAgIHZhciBlbmQgPSBkb2MuZ2V0TGluZShsaW5lICsgbGluZXMubGVuZ3RoIC0gMSksIGVuZFN0cmluZyA9IGZvbGQoZW5kKSwgbGFzdExpbmUgPSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoZW5kU3RyaW5nLnNsaWNlKDAsIGxhc3RMaW5lLmxlbmd0aCkgIT0gbGFzdExpbmUpIGNvbnRpbnVlIHNlYXJjaFxuICAgICAgICByZXR1cm4ge2Zyb206IFBvcyhsaW5lLCBhZGp1c3RQb3Mob3JpZywgc3RyaW5nLCBjdXRGcm9tLCBmb2xkKSArIGNoKSxcbiAgICAgICAgICAgICAgICB0bzogUG9zKGxpbmUgKyBsaW5lcy5sZW5ndGggLSAxLCBhZGp1c3RQb3MoZW5kLCBlbmRTdHJpbmcsIGxhc3RMaW5lLmxlbmd0aCwgZm9sZCkpfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNlYXJjaFN0cmluZ0JhY2t3YXJkKGRvYywgcXVlcnksIHN0YXJ0LCBjYXNlRm9sZCkge1xuICAgIGlmICghcXVlcnkubGVuZ3RoKSByZXR1cm4gbnVsbFxuICAgIHZhciBmb2xkID0gY2FzZUZvbGQgPyBkb0ZvbGQgOiBub0ZvbGRcbiAgICB2YXIgbGluZXMgPSBmb2xkKHF1ZXJ5KS5zcGxpdCgvXFxyfFxcblxccj8vKVxuXG4gICAgc2VhcmNoOiBmb3IgKHZhciBsaW5lID0gc3RhcnQubGluZSwgY2ggPSBzdGFydC5jaCwgZmlyc3QgPSBkb2MuZmlyc3RMaW5lKCkgLSAxICsgbGluZXMubGVuZ3RoOyBsaW5lID49IGZpcnN0OyBsaW5lLS0sIGNoID0gLTEpIHtcbiAgICAgIHZhciBvcmlnID0gZG9jLmdldExpbmUobGluZSlcbiAgICAgIGlmIChjaCA+IC0xKSBvcmlnID0gb3JpZy5zbGljZSgwLCBjaClcbiAgICAgIHZhciBzdHJpbmcgPSBmb2xkKG9yaWcpXG4gICAgICBpZiAobGluZXMubGVuZ3RoID09IDEpIHtcbiAgICAgICAgdmFyIGZvdW5kID0gc3RyaW5nLmxhc3RJbmRleE9mKGxpbmVzWzBdKVxuICAgICAgICBpZiAoZm91bmQgPT0gLTEpIGNvbnRpbnVlIHNlYXJjaFxuICAgICAgICByZXR1cm4ge2Zyb206IFBvcyhsaW5lLCBhZGp1c3RQb3Mob3JpZywgc3RyaW5nLCBmb3VuZCwgZm9sZCkpLFxuICAgICAgICAgICAgICAgIHRvOiBQb3MobGluZSwgYWRqdXN0UG9zKG9yaWcsIHN0cmluZywgZm91bmQgKyBsaW5lc1swXS5sZW5ndGgsIGZvbGQpKX1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBsYXN0TGluZSA9IGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmIChzdHJpbmcuc2xpY2UoMCwgbGFzdExpbmUubGVuZ3RoKSAhPSBsYXN0TGluZSkgY29udGludWUgc2VhcmNoXG4gICAgICAgIGZvciAodmFyIGkgPSAxLCBzdGFydCA9IGxpbmUgLSBsaW5lcy5sZW5ndGggKyAxOyBpIDwgbGluZXMubGVuZ3RoIC0gMTsgaSsrKVxuICAgICAgICAgIGlmIChmb2xkKGRvYy5nZXRMaW5lKHN0YXJ0ICsgaSkpICE9IGxpbmVzW2ldKSBjb250aW51ZSBzZWFyY2hcbiAgICAgICAgdmFyIHRvcCA9IGRvYy5nZXRMaW5lKGxpbmUgKyAxIC0gbGluZXMubGVuZ3RoKSwgdG9wU3RyaW5nID0gZm9sZCh0b3ApXG4gICAgICAgIGlmICh0b3BTdHJpbmcuc2xpY2UodG9wU3RyaW5nLmxlbmd0aCAtIGxpbmVzWzBdLmxlbmd0aCkgIT0gbGluZXNbMF0pIGNvbnRpbnVlIHNlYXJjaFxuICAgICAgICByZXR1cm4ge2Zyb206IFBvcyhsaW5lICsgMSAtIGxpbmVzLmxlbmd0aCwgYWRqdXN0UG9zKHRvcCwgdG9wU3RyaW5nLCB0b3AubGVuZ3RoIC0gbGluZXNbMF0ubGVuZ3RoLCBmb2xkKSksXG4gICAgICAgICAgICAgICAgdG86IFBvcyhsaW5lLCBhZGp1c3RQb3Mob3JpZywgc3RyaW5nLCBsYXN0TGluZS5sZW5ndGgsIGZvbGQpKX1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBTZWFyY2hDdXJzb3IoZG9jLCBxdWVyeSwgcG9zLCBvcHRpb25zKSB7XG4gICAgdGhpcy5hdE9jY3VycmVuY2UgPSBmYWxzZVxuICAgIHRoaXMuZG9jID0gZG9jXG4gICAgcG9zID0gcG9zID8gZG9jLmNsaXBQb3MocG9zKSA6IFBvcygwLCAwKVxuICAgIHRoaXMucG9zID0ge2Zyb206IHBvcywgdG86IHBvc31cblxuICAgIHZhciBjYXNlRm9sZFxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICBjYXNlRm9sZCA9IG9wdGlvbnMuY2FzZUZvbGRcbiAgICB9IGVsc2UgeyAvLyBCYWNrd2FyZHMgY29tcGF0IGZvciB3aGVuIGNhc2VGb2xkIHdhcyB0aGUgNHRoIGFyZ3VtZW50XG4gICAgICBjYXNlRm9sZCA9IG9wdGlvbnNcbiAgICAgIG9wdGlvbnMgPSBudWxsXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBxdWVyeSA9PSBcInN0cmluZ1wiKSB7XG4gICAgICBpZiAoY2FzZUZvbGQgPT0gbnVsbCkgY2FzZUZvbGQgPSBmYWxzZVxuICAgICAgdGhpcy5tYXRjaGVzID0gZnVuY3Rpb24ocmV2ZXJzZSwgcG9zKSB7XG4gICAgICAgIHJldHVybiAocmV2ZXJzZSA/IHNlYXJjaFN0cmluZ0JhY2t3YXJkIDogc2VhcmNoU3RyaW5nRm9yd2FyZCkoZG9jLCBxdWVyeSwgcG9zLCBjYXNlRm9sZClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcXVlcnkgPSBlbnN1cmVGbGFncyhxdWVyeSwgXCJnbVwiKVxuICAgICAgaWYgKCFvcHRpb25zIHx8IG9wdGlvbnMubXVsdGlsaW5lICE9PSBmYWxzZSlcbiAgICAgICAgdGhpcy5tYXRjaGVzID0gZnVuY3Rpb24ocmV2ZXJzZSwgcG9zKSB7XG4gICAgICAgICAgcmV0dXJuIChyZXZlcnNlID8gc2VhcmNoUmVnZXhwQmFja3dhcmRNdWx0aWxpbmUgOiBzZWFyY2hSZWdleHBGb3J3YXJkTXVsdGlsaW5lKShkb2MsIHF1ZXJ5LCBwb3MpXG4gICAgICAgIH1cbiAgICAgIGVsc2VcbiAgICAgICAgdGhpcy5tYXRjaGVzID0gZnVuY3Rpb24ocmV2ZXJzZSwgcG9zKSB7XG4gICAgICAgICAgcmV0dXJuIChyZXZlcnNlID8gc2VhcmNoUmVnZXhwQmFja3dhcmQgOiBzZWFyY2hSZWdleHBGb3J3YXJkKShkb2MsIHF1ZXJ5LCBwb3MpXG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICBTZWFyY2hDdXJzb3IucHJvdG90eXBlID0ge1xuICAgIGZpbmROZXh0OiBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5maW5kKGZhbHNlKX0sXG4gICAgZmluZFByZXZpb3VzOiBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5maW5kKHRydWUpfSxcblxuICAgIGZpbmQ6IGZ1bmN0aW9uKHJldmVyc2UpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0aGlzLm1hdGNoZXMocmV2ZXJzZSwgdGhpcy5kb2MuY2xpcFBvcyhyZXZlcnNlID8gdGhpcy5wb3MuZnJvbSA6IHRoaXMucG9zLnRvKSlcblxuICAgICAgLy8gSW1wbGVtZW50cyB3ZWlyZCBhdXRvLWdyb3dpbmcgYmVoYXZpb3Igb24gbnVsbC1tYXRjaGVzIGZvclxuICAgICAgLy8gYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgd2l0aCB0aGUgdmltIGNvZGUgKHVuZm9ydHVuYXRlbHkpXG4gICAgICB3aGlsZSAocmVzdWx0ICYmIENvZGVNaXJyb3IuY21wUG9zKHJlc3VsdC5mcm9tLCByZXN1bHQudG8pID09IDApIHtcbiAgICAgICAgaWYgKHJldmVyc2UpIHtcbiAgICAgICAgICBpZiAocmVzdWx0LmZyb20uY2gpIHJlc3VsdC5mcm9tID0gUG9zKHJlc3VsdC5mcm9tLmxpbmUsIHJlc3VsdC5mcm9tLmNoIC0gMSlcbiAgICAgICAgICBlbHNlIGlmIChyZXN1bHQuZnJvbS5saW5lID09IHRoaXMuZG9jLmZpcnN0TGluZSgpKSByZXN1bHQgPSBudWxsXG4gICAgICAgICAgZWxzZSByZXN1bHQgPSB0aGlzLm1hdGNoZXMocmV2ZXJzZSwgdGhpcy5kb2MuY2xpcFBvcyhQb3MocmVzdWx0LmZyb20ubGluZSAtIDEpKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAocmVzdWx0LnRvLmNoIDwgdGhpcy5kb2MuZ2V0TGluZShyZXN1bHQudG8ubGluZSkubGVuZ3RoKSByZXN1bHQudG8gPSBQb3MocmVzdWx0LnRvLmxpbmUsIHJlc3VsdC50by5jaCArIDEpXG4gICAgICAgICAgZWxzZSBpZiAocmVzdWx0LnRvLmxpbmUgPT0gdGhpcy5kb2MubGFzdExpbmUoKSkgcmVzdWx0ID0gbnVsbFxuICAgICAgICAgIGVsc2UgcmVzdWx0ID0gdGhpcy5tYXRjaGVzKHJldmVyc2UsIFBvcyhyZXN1bHQudG8ubGluZSArIDEsIDApKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy5wb3MgPSByZXN1bHRcbiAgICAgICAgdGhpcy5hdE9jY3VycmVuY2UgPSB0cnVlXG4gICAgICAgIHJldHVybiB0aGlzLnBvcy5tYXRjaCB8fCB0cnVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZW5kID0gUG9zKHJldmVyc2UgPyB0aGlzLmRvYy5maXJzdExpbmUoKSA6IHRoaXMuZG9jLmxhc3RMaW5lKCkgKyAxLCAwKVxuICAgICAgICB0aGlzLnBvcyA9IHtmcm9tOiBlbmQsIHRvOiBlbmR9XG4gICAgICAgIHJldHVybiB0aGlzLmF0T2NjdXJyZW5jZSA9IGZhbHNlXG4gICAgICB9XG4gICAgfSxcblxuICAgIGZyb206IGZ1bmN0aW9uKCkge2lmICh0aGlzLmF0T2NjdXJyZW5jZSkgcmV0dXJuIHRoaXMucG9zLmZyb219LFxuICAgIHRvOiBmdW5jdGlvbigpIHtpZiAodGhpcy5hdE9jY3VycmVuY2UpIHJldHVybiB0aGlzLnBvcy50b30sXG5cbiAgICByZXBsYWNlOiBmdW5jdGlvbihuZXdUZXh0LCBvcmlnaW4pIHtcbiAgICAgIGlmICghdGhpcy5hdE9jY3VycmVuY2UpIHJldHVyblxuICAgICAgdmFyIGxpbmVzID0gQ29kZU1pcnJvci5zcGxpdExpbmVzKG5ld1RleHQpXG4gICAgICB0aGlzLmRvYy5yZXBsYWNlUmFuZ2UobGluZXMsIHRoaXMucG9zLmZyb20sIHRoaXMucG9zLnRvLCBvcmlnaW4pXG4gICAgICB0aGlzLnBvcy50byA9IFBvcyh0aGlzLnBvcy5mcm9tLmxpbmUgKyBsaW5lcy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoICsgKGxpbmVzLmxlbmd0aCA9PSAxID8gdGhpcy5wb3MuZnJvbS5jaCA6IDApKVxuICAgIH1cbiAgfVxuXG4gIENvZGVNaXJyb3IuZGVmaW5lRXh0ZW5zaW9uKFwiZ2V0U2VhcmNoQ3Vyc29yXCIsIGZ1bmN0aW9uKHF1ZXJ5LCBwb3MsIGNhc2VGb2xkKSB7XG4gICAgcmV0dXJuIG5ldyBTZWFyY2hDdXJzb3IodGhpcy5kb2MsIHF1ZXJ5LCBwb3MsIGNhc2VGb2xkKVxuICB9KVxuICBDb2RlTWlycm9yLmRlZmluZURvY0V4dGVuc2lvbihcImdldFNlYXJjaEN1cnNvclwiLCBmdW5jdGlvbihxdWVyeSwgcG9zLCBjYXNlRm9sZCkge1xuICAgIHJldHVybiBuZXcgU2VhcmNoQ3Vyc29yKHRoaXMsIHF1ZXJ5LCBwb3MsIGNhc2VGb2xkKVxuICB9KVxuXG4gIENvZGVNaXJyb3IuZGVmaW5lRXh0ZW5zaW9uKFwic2VsZWN0TWF0Y2hlc1wiLCBmdW5jdGlvbihxdWVyeSwgY2FzZUZvbGQpIHtcbiAgICB2YXIgcmFuZ2VzID0gW11cbiAgICB2YXIgY3VyID0gdGhpcy5nZXRTZWFyY2hDdXJzb3IocXVlcnksIHRoaXMuZ2V0Q3Vyc29yKFwiZnJvbVwiKSwgY2FzZUZvbGQpXG4gICAgd2hpbGUgKGN1ci5maW5kTmV4dCgpKSB7XG4gICAgICBpZiAoQ29kZU1pcnJvci5jbXBQb3MoY3VyLnRvKCksIHRoaXMuZ2V0Q3Vyc29yKFwidG9cIikpID4gMCkgYnJlYWtcbiAgICAgIHJhbmdlcy5wdXNoKHthbmNob3I6IGN1ci5mcm9tKCksIGhlYWQ6IGN1ci50bygpfSlcbiAgICB9XG4gICAgaWYgKHJhbmdlcy5sZW5ndGgpXG4gICAgICB0aGlzLnNldFNlbGVjdGlvbnMocmFuZ2VzLCAwKVxuICB9KVxufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBLHdIQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBSEE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFIQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQXpDQTtBQTRDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/codemirror/addon/search/searchcursor.js\n");
231
232/***/ }),
233
234/***/ "../../../node_modules/codemirror/keymap/sublime.js":
235/*!*************************************************************************************!*\
236 !*** /home/runner/work/graphiql/graphiql/node_modules/codemirror/keymap/sublime.js ***!
237 \*************************************************************************************/
238/*! no static exports found */
239/***/ (function(module, exports, __webpack_require__) {
240
241eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n // CodeMirror, copyright (c) by Marijn Haverbeke and others\n // Distributed under an MIT license: https://codemirror.net/LICENSE\n // A rough approximation of Sublime Text's keybindings\n // Depends on addon/search/searchcursor.js and optionally addon/dialog/dialogs.js\n (function (mod) {\n if (true) // CommonJS\n mod(__webpack_require__(/*! ../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"), __webpack_require__(/*! ../addon/search/searchcursor */ \"../../../node_modules/codemirror/addon/search/searchcursor.js\"), __webpack_require__(/*! ../addon/edit/matchbrackets */ \"../../../node_modules/codemirror/addon/edit/matchbrackets.js\"));else {}\n })(function (CodeMirror) {\n \"use strict\";\n\n var cmds = CodeMirror.commands;\n var Pos = CodeMirror.Pos; // This is not exactly Sublime's algorithm. I couldn't make heads or tails of that.\n\n function findPosSubword(doc, start, dir) {\n if (dir < 0 && start.ch == 0) return doc.clipPos(Pos(start.line - 1));\n var line = doc.getLine(start.line);\n if (dir > 0 && start.ch >= line.length) return doc.clipPos(Pos(start.line + 1, 0));\n var state = \"start\",\n type,\n startPos = start.ch;\n\n for (var pos = startPos, e = dir < 0 ? 0 : line.length, i = 0; pos != e; pos += dir, i++) {\n var next = line.charAt(dir < 0 ? pos - 1 : pos);\n var cat = next != \"_\" && CodeMirror.isWordChar(next) ? \"w\" : \"o\";\n if (cat == \"w\" && next.toUpperCase() == next) cat = \"W\";\n\n if (state == \"start\") {\n if (cat != \"o\") {\n state = \"in\";\n type = cat;\n } else startPos = pos + dir;\n } else if (state == \"in\") {\n if (type != cat) {\n if (type == \"w\" && cat == \"W\" && dir < 0) pos--;\n\n if (type == \"W\" && cat == \"w\" && dir > 0) {\n // From uppercase to lowercase\n if (pos == startPos + 1) {\n type = \"w\";\n continue;\n } else pos--;\n }\n\n break;\n }\n }\n }\n\n return Pos(start.line, pos);\n }\n\n function moveSubword(cm, dir) {\n cm.extendSelectionsBy(function (range) {\n if (cm.display.shift || cm.doc.extend || range.empty()) return findPosSubword(cm.doc, range.head, dir);else return dir < 0 ? range.from() : range.to();\n });\n }\n\n cmds.goSubwordLeft = function (cm) {\n moveSubword(cm, -1);\n };\n\n cmds.goSubwordRight = function (cm) {\n moveSubword(cm, 1);\n };\n\n cmds.scrollLineUp = function (cm) {\n var info = cm.getScrollInfo();\n\n if (!cm.somethingSelected()) {\n var visibleBottomLine = cm.lineAtHeight(info.top + info.clientHeight, \"local\");\n if (cm.getCursor().line >= visibleBottomLine) cm.execCommand(\"goLineUp\");\n }\n\n cm.scrollTo(null, info.top - cm.defaultTextHeight());\n };\n\n cmds.scrollLineDown = function (cm) {\n var info = cm.getScrollInfo();\n\n if (!cm.somethingSelected()) {\n var visibleTopLine = cm.lineAtHeight(info.top, \"local\") + 1;\n if (cm.getCursor().line <= visibleTopLine) cm.execCommand(\"goLineDown\");\n }\n\n cm.scrollTo(null, info.top + cm.defaultTextHeight());\n };\n\n cmds.splitSelectionByLine = function (cm) {\n var ranges = cm.listSelections(),\n lineRanges = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var from = ranges[i].from(),\n to = ranges[i].to();\n\n for (var line = from.line; line <= to.line; ++line) if (!(to.line > from.line && line == to.line && to.ch == 0)) lineRanges.push({\n anchor: line == from.line ? from : Pos(line, 0),\n head: line == to.line ? to : Pos(line)\n });\n }\n\n cm.setSelections(lineRanges, 0);\n };\n\n cmds.singleSelectionTop = function (cm) {\n var range = cm.listSelections()[0];\n cm.setSelection(range.anchor, range.head, {\n scroll: false\n });\n };\n\n cmds.selectLine = function (cm) {\n var ranges = cm.listSelections(),\n extended = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n extended.push({\n anchor: Pos(range.from().line, 0),\n head: Pos(range.to().line + 1, 0)\n });\n }\n\n cm.setSelections(extended);\n };\n\n function insertLine(cm, above) {\n if (cm.isReadOnly()) return CodeMirror.Pass;\n cm.operation(function () {\n var len = cm.listSelections().length,\n newSelection = [],\n last = -1;\n\n for (var i = 0; i < len; i++) {\n var head = cm.listSelections()[i].head;\n if (head.line <= last) continue;\n var at = Pos(head.line + (above ? 0 : 1), 0);\n cm.replaceRange(\"\\n\", at, null, \"+insertLine\");\n cm.indentLine(at.line, null, true);\n newSelection.push({\n head: at,\n anchor: at\n });\n last = head.line + 1;\n }\n\n cm.setSelections(newSelection);\n });\n cm.execCommand(\"indentAuto\");\n }\n\n cmds.insertLineAfter = function (cm) {\n return insertLine(cm, false);\n };\n\n cmds.insertLineBefore = function (cm) {\n return insertLine(cm, true);\n };\n\n function wordAt(cm, pos) {\n var start = pos.ch,\n end = start,\n line = cm.getLine(pos.line);\n\n while (start && CodeMirror.isWordChar(line.charAt(start - 1))) --start;\n\n while (end < line.length && CodeMirror.isWordChar(line.charAt(end))) ++end;\n\n return {\n from: Pos(pos.line, start),\n to: Pos(pos.line, end),\n word: line.slice(start, end)\n };\n }\n\n cmds.selectNextOccurrence = function (cm) {\n var from = cm.getCursor(\"from\"),\n to = cm.getCursor(\"to\");\n var fullWord = cm.state.sublimeFindFullWord == cm.doc.sel;\n\n if (CodeMirror.cmpPos(from, to) == 0) {\n var word = wordAt(cm, from);\n if (!word.word) return;\n cm.setSelection(word.from, word.to);\n fullWord = true;\n } else {\n var text = cm.getRange(from, to);\n var query = fullWord ? new RegExp(\"\\\\b\" + text + \"\\\\b\") : text;\n var cur = cm.getSearchCursor(query, to);\n var found = cur.findNext();\n\n if (!found) {\n cur = cm.getSearchCursor(query, Pos(cm.firstLine(), 0));\n found = cur.findNext();\n }\n\n if (!found || isSelectedRange(cm.listSelections(), cur.from(), cur.to())) return;\n cm.addSelection(cur.from(), cur.to());\n }\n\n if (fullWord) cm.state.sublimeFindFullWord = cm.doc.sel;\n };\n\n cmds.skipAndSelectNextOccurrence = function (cm) {\n var prevAnchor = cm.getCursor(\"anchor\"),\n prevHead = cm.getCursor(\"head\");\n cmds.selectNextOccurrence(cm);\n\n if (CodeMirror.cmpPos(prevAnchor, prevHead) != 0) {\n cm.doc.setSelections(cm.doc.listSelections().filter(function (sel) {\n return sel.anchor != prevAnchor || sel.head != prevHead;\n }));\n }\n };\n\n function addCursorToSelection(cm, dir) {\n var ranges = cm.listSelections(),\n newRanges = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var newAnchor = cm.findPosV(range.anchor, dir, \"line\", range.anchor.goalColumn);\n var newHead = cm.findPosV(range.head, dir, \"line\", range.head.goalColumn);\n newAnchor.goalColumn = range.anchor.goalColumn != null ? range.anchor.goalColumn : cm.cursorCoords(range.anchor, \"div\").left;\n newHead.goalColumn = range.head.goalColumn != null ? range.head.goalColumn : cm.cursorCoords(range.head, \"div\").left;\n var newRange = {\n anchor: newAnchor,\n head: newHead\n };\n newRanges.push(range);\n newRanges.push(newRange);\n }\n\n cm.setSelections(newRanges);\n }\n\n cmds.addCursorToPrevLine = function (cm) {\n addCursorToSelection(cm, -1);\n };\n\n cmds.addCursorToNextLine = function (cm) {\n addCursorToSelection(cm, 1);\n };\n\n function isSelectedRange(ranges, from, to) {\n for (var i = 0; i < ranges.length; i++) if (CodeMirror.cmpPos(ranges[i].from(), from) == 0 && CodeMirror.cmpPos(ranges[i].to(), to) == 0) return true;\n\n return false;\n }\n\n var mirror = \"(){}[]\";\n\n function selectBetweenBrackets(cm) {\n var ranges = cm.listSelections(),\n newRanges = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i],\n pos = range.head,\n opening = cm.scanForBracket(pos, -1);\n if (!opening) return false;\n\n for (;;) {\n var closing = cm.scanForBracket(pos, 1);\n if (!closing) return false;\n\n if (closing.ch == mirror.charAt(mirror.indexOf(opening.ch) + 1)) {\n var startPos = Pos(opening.pos.line, opening.pos.ch + 1);\n\n if (CodeMirror.cmpPos(startPos, range.from()) == 0 && CodeMirror.cmpPos(closing.pos, range.to()) == 0) {\n opening = cm.scanForBracket(opening.pos, -1);\n if (!opening) return false;\n } else {\n newRanges.push({\n anchor: startPos,\n head: closing.pos\n });\n break;\n }\n }\n\n pos = Pos(closing.pos.line, closing.pos.ch + 1);\n }\n }\n\n cm.setSelections(newRanges);\n return true;\n }\n\n cmds.selectScope = function (cm) {\n selectBetweenBrackets(cm) || cm.execCommand(\"selectAll\");\n };\n\n cmds.selectBetweenBrackets = function (cm) {\n if (!selectBetweenBrackets(cm)) return CodeMirror.Pass;\n };\n\n function puncType(type) {\n return !type ? null : /\\bpunctuation\\b/.test(type) ? type : undefined;\n }\n\n cmds.goToBracket = function (cm) {\n cm.extendSelectionsBy(function (range) {\n var next = cm.scanForBracket(range.head, 1, puncType(cm.getTokenTypeAt(range.head)));\n if (next && CodeMirror.cmpPos(next.pos, range.head) != 0) return next.pos;\n var prev = cm.scanForBracket(range.head, -1, puncType(cm.getTokenTypeAt(Pos(range.head.line, range.head.ch + 1))));\n return prev && Pos(prev.pos.line, prev.pos.ch + 1) || range.head;\n });\n };\n\n cmds.swapLineUp = function (cm) {\n if (cm.isReadOnly()) return CodeMirror.Pass;\n var ranges = cm.listSelections(),\n linesToMove = [],\n at = cm.firstLine() - 1,\n newSels = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i],\n from = range.from().line - 1,\n to = range.to().line;\n newSels.push({\n anchor: Pos(range.anchor.line - 1, range.anchor.ch),\n head: Pos(range.head.line - 1, range.head.ch)\n });\n if (range.to().ch == 0 && !range.empty()) --to;\n if (from > at) linesToMove.push(from, to);else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n at = to;\n }\n\n cm.operation(function () {\n for (var i = 0; i < linesToMove.length; i += 2) {\n var from = linesToMove[i],\n to = linesToMove[i + 1];\n var line = cm.getLine(from);\n cm.replaceRange(\"\", Pos(from, 0), Pos(from + 1, 0), \"+swapLine\");\n if (to > cm.lastLine()) cm.replaceRange(\"\\n\" + line, Pos(cm.lastLine()), null, \"+swapLine\");else cm.replaceRange(line + \"\\n\", Pos(to, 0), null, \"+swapLine\");\n }\n\n cm.setSelections(newSels);\n cm.scrollIntoView();\n });\n };\n\n cmds.swapLineDown = function (cm) {\n if (cm.isReadOnly()) return CodeMirror.Pass;\n var ranges = cm.listSelections(),\n linesToMove = [],\n at = cm.lastLine() + 1;\n\n for (var i = ranges.length - 1; i >= 0; i--) {\n var range = ranges[i],\n from = range.to().line + 1,\n to = range.from().line;\n if (range.to().ch == 0 && !range.empty()) from--;\n if (from < at) linesToMove.push(from, to);else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n at = to;\n }\n\n cm.operation(function () {\n for (var i = linesToMove.length - 2; i >= 0; i -= 2) {\n var from = linesToMove[i],\n to = linesToMove[i + 1];\n var line = cm.getLine(from);\n if (from == cm.lastLine()) cm.replaceRange(\"\", Pos(from - 1), Pos(from), \"+swapLine\");else cm.replaceRange(\"\", Pos(from, 0), Pos(from + 1, 0), \"+swapLine\");\n cm.replaceRange(line + \"\\n\", Pos(to, 0), null, \"+swapLine\");\n }\n\n cm.scrollIntoView();\n });\n };\n\n cmds.toggleCommentIndented = function (cm) {\n cm.toggleComment({\n indent: true\n });\n };\n\n cmds.joinLines = function (cm) {\n var ranges = cm.listSelections(),\n joined = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i],\n from = range.from();\n var start = from.line,\n end = range.to().line;\n\n while (i < ranges.length - 1 && ranges[i + 1].from().line == end) end = ranges[++i].to().line;\n\n joined.push({\n start: start,\n end: end,\n anchor: !range.empty() && from\n });\n }\n\n cm.operation(function () {\n var offset = 0,\n ranges = [];\n\n for (var i = 0; i < joined.length; i++) {\n var obj = joined[i];\n var anchor = obj.anchor && Pos(obj.anchor.line - offset, obj.anchor.ch),\n head;\n\n for (var line = obj.start; line <= obj.end; line++) {\n var actual = line - offset;\n if (line == obj.end) head = Pos(actual, cm.getLine(actual).length + 1);\n\n if (actual < cm.lastLine()) {\n cm.replaceRange(\" \", Pos(actual), Pos(actual + 1, /^\\s*/.exec(cm.getLine(actual + 1))[0].length));\n ++offset;\n }\n }\n\n ranges.push({\n anchor: anchor || head,\n head: head\n });\n }\n\n cm.setSelections(ranges, 0);\n });\n };\n\n cmds.duplicateLine = function (cm) {\n cm.operation(function () {\n var rangeCount = cm.listSelections().length;\n\n for (var i = 0; i < rangeCount; i++) {\n var range = cm.listSelections()[i];\n if (range.empty()) cm.replaceRange(cm.getLine(range.head.line) + \"\\n\", Pos(range.head.line, 0));else cm.replaceRange(cm.getRange(range.from(), range.to()), range.from());\n }\n\n cm.scrollIntoView();\n });\n };\n\n function sortLines(cm, caseSensitive) {\n if (cm.isReadOnly()) return CodeMirror.Pass;\n var ranges = cm.listSelections(),\n toSort = [],\n selected;\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (range.empty()) continue;\n var from = range.from().line,\n to = range.to().line;\n\n while (i < ranges.length - 1 && ranges[i + 1].from().line == to) to = ranges[++i].to().line;\n\n if (!ranges[i].to().ch) to--;\n toSort.push(from, to);\n }\n\n if (toSort.length) selected = true;else toSort.push(cm.firstLine(), cm.lastLine());\n cm.operation(function () {\n var ranges = [];\n\n for (var i = 0; i < toSort.length; i += 2) {\n var from = toSort[i],\n to = toSort[i + 1];\n var start = Pos(from, 0),\n end = Pos(to);\n var lines = cm.getRange(start, end, false);\n if (caseSensitive) lines.sort();else lines.sort(function (a, b) {\n var au = a.toUpperCase(),\n bu = b.toUpperCase();\n\n if (au != bu) {\n a = au;\n b = bu;\n }\n\n return a < b ? -1 : a == b ? 0 : 1;\n });\n cm.replaceRange(lines, start, end);\n if (selected) ranges.push({\n anchor: start,\n head: Pos(to + 1, 0)\n });\n }\n\n if (selected) cm.setSelections(ranges, 0);\n });\n }\n\n cmds.sortLines = function (cm) {\n sortLines(cm, true);\n };\n\n cmds.sortLinesInsensitive = function (cm) {\n sortLines(cm, false);\n };\n\n cmds.nextBookmark = function (cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) while (marks.length) {\n var current = marks.shift();\n var found = current.find();\n\n if (found) {\n marks.push(current);\n return cm.setSelection(found.from, found.to);\n }\n }\n };\n\n cmds.prevBookmark = function (cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) while (marks.length) {\n marks.unshift(marks.pop());\n var found = marks[marks.length - 1].find();\n if (!found) marks.pop();else return cm.setSelection(found.from, found.to);\n }\n };\n\n cmds.toggleBookmark = function (cm) {\n var ranges = cm.listSelections();\n var marks = cm.state.sublimeBookmarks || (cm.state.sublimeBookmarks = []);\n\n for (var i = 0; i < ranges.length; i++) {\n var from = ranges[i].from(),\n to = ranges[i].to();\n var found = ranges[i].empty() ? cm.findMarksAt(from) : cm.findMarks(from, to);\n\n for (var j = 0; j < found.length; j++) {\n if (found[j].sublimeBookmark) {\n found[j].clear();\n\n for (var k = 0; k < marks.length; k++) if (marks[k] == found[j]) marks.splice(k--, 1);\n\n break;\n }\n }\n\n if (j == found.length) marks.push(cm.markText(from, to, {\n sublimeBookmark: true,\n clearWhenEmpty: false\n }));\n }\n };\n\n cmds.clearBookmarks = function (cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) for (var i = 0; i < marks.length; i++) marks[i].clear();\n marks.length = 0;\n };\n\n cmds.selectBookmarks = function (cm) {\n var marks = cm.state.sublimeBookmarks,\n ranges = [];\n if (marks) for (var i = 0; i < marks.length; i++) {\n var found = marks[i].find();\n if (!found) marks.splice(i--, 0);else ranges.push({\n anchor: found.from,\n head: found.to\n });\n }\n if (ranges.length) cm.setSelections(ranges, 0);\n };\n\n function modifyWordOrSelection(cm, mod) {\n cm.operation(function () {\n var ranges = cm.listSelections(),\n indices = [],\n replacements = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n\n if (range.empty()) {\n indices.push(i);\n replacements.push(\"\");\n } else replacements.push(mod(cm.getRange(range.from(), range.to())));\n }\n\n cm.replaceSelections(replacements, \"around\", \"case\");\n\n for (var i = indices.length - 1, at; i >= 0; i--) {\n var range = ranges[indices[i]];\n if (at && CodeMirror.cmpPos(range.head, at) > 0) continue;\n var word = wordAt(cm, range.head);\n at = word.from;\n cm.replaceRange(mod(word.word), word.from, word.to);\n }\n });\n }\n\n cmds.smartBackspace = function (cm) {\n if (cm.somethingSelected()) return CodeMirror.Pass;\n cm.operation(function () {\n var cursors = cm.listSelections();\n var indentUnit = cm.getOption(\"indentUnit\");\n\n for (var i = cursors.length - 1; i >= 0; i--) {\n var cursor = cursors[i].head;\n var toStartOfLine = cm.getRange({\n line: cursor.line,\n ch: 0\n }, cursor);\n var column = CodeMirror.countColumn(toStartOfLine, null, cm.getOption(\"tabSize\")); // Delete by one character by default\n\n var deletePos = cm.findPosH(cursor, -1, \"char\", false);\n\n if (toStartOfLine && !/\\S/.test(toStartOfLine) && column % indentUnit == 0) {\n var prevIndent = new Pos(cursor.line, CodeMirror.findColumn(toStartOfLine, column - indentUnit, indentUnit)); // Smart delete only if we found a valid prevIndent location\n\n if (prevIndent.ch != cursor.ch) deletePos = prevIndent;\n }\n\n cm.replaceRange(\"\", deletePos, cursor, \"+delete\");\n }\n });\n };\n\n cmds.delLineRight = function (cm) {\n cm.operation(function () {\n var ranges = cm.listSelections();\n\n for (var i = ranges.length - 1; i >= 0; i--) cm.replaceRange(\"\", ranges[i].anchor, Pos(ranges[i].to().line), \"+delete\");\n\n cm.scrollIntoView();\n });\n };\n\n cmds.upcaseAtCursor = function (cm) {\n modifyWordOrSelection(cm, function (str) {\n return str.toUpperCase();\n });\n };\n\n cmds.downcaseAtCursor = function (cm) {\n modifyWordOrSelection(cm, function (str) {\n return str.toLowerCase();\n });\n };\n\n cmds.setSublimeMark = function (cm) {\n if (cm.state.sublimeMark) cm.state.sublimeMark.clear();\n cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n };\n\n cmds.selectToSublimeMark = function (cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) cm.setSelection(cm.getCursor(), found);\n };\n\n cmds.deleteToSublimeMark = function (cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n\n if (found) {\n var from = cm.getCursor(),\n to = found;\n\n if (CodeMirror.cmpPos(from, to) > 0) {\n var tmp = to;\n to = from;\n from = tmp;\n }\n\n cm.state.sublimeKilled = cm.getRange(from, to);\n cm.replaceRange(\"\", from, to);\n }\n };\n\n cmds.swapWithSublimeMark = function (cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n\n if (found) {\n cm.state.sublimeMark.clear();\n cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n cm.setCursor(found);\n }\n };\n\n cmds.sublimeYank = function (cm) {\n if (cm.state.sublimeKilled != null) cm.replaceSelection(cm.state.sublimeKilled, null, \"paste\");\n };\n\n cmds.showInCenter = function (cm) {\n var pos = cm.cursorCoords(null, \"local\");\n cm.scrollTo(null, (pos.top + pos.bottom) / 2 - cm.getScrollInfo().clientHeight / 2);\n };\n\n function getTarget(cm) {\n var from = cm.getCursor(\"from\"),\n to = cm.getCursor(\"to\");\n\n if (CodeMirror.cmpPos(from, to) == 0) {\n var word = wordAt(cm, from);\n if (!word.word) return;\n from = word.from;\n to = word.to;\n }\n\n return {\n from: from,\n to: to,\n query: cm.getRange(from, to),\n word: word\n };\n }\n\n function findAndGoTo(cm, forward) {\n var target = getTarget(cm);\n if (!target) return;\n var query = target.query;\n var cur = cm.getSearchCursor(query, forward ? target.to : target.from);\n\n if (forward ? cur.findNext() : cur.findPrevious()) {\n cm.setSelection(cur.from(), cur.to());\n } else {\n cur = cm.getSearchCursor(query, forward ? Pos(cm.firstLine(), 0) : cm.clipPos(Pos(cm.lastLine())));\n if (forward ? cur.findNext() : cur.findPrevious()) cm.setSelection(cur.from(), cur.to());else if (target.word) cm.setSelection(target.from, target.to);\n }\n }\n\n ;\n\n cmds.findUnder = function (cm) {\n findAndGoTo(cm, true);\n };\n\n cmds.findUnderPrevious = function (cm) {\n findAndGoTo(cm, false);\n };\n\n cmds.findAllUnder = function (cm) {\n var target = getTarget(cm);\n if (!target) return;\n var cur = cm.getSearchCursor(target.query);\n var matches = [];\n var primaryIndex = -1;\n\n while (cur.findNext()) {\n matches.push({\n anchor: cur.from(),\n head: cur.to()\n });\n if (cur.from().line <= target.from.line && cur.from().ch <= target.from.ch) primaryIndex++;\n }\n\n cm.setSelections(matches, primaryIndex);\n };\n\n var keyMap = CodeMirror.keyMap;\n keyMap.macSublime = {\n \"Cmd-Left\": \"goLineStartSmart\",\n \"Shift-Tab\": \"indentLess\",\n \"Shift-Ctrl-K\": \"deleteLine\",\n \"Alt-Q\": \"wrapLines\",\n \"Ctrl-Left\": \"goSubwordLeft\",\n \"Ctrl-Right\": \"goSubwordRight\",\n \"Ctrl-Alt-Up\": \"scrollLineUp\",\n \"Ctrl-Alt-Down\": \"scrollLineDown\",\n \"Cmd-L\": \"selectLine\",\n \"Shift-Cmd-L\": \"splitSelectionByLine\",\n \"Esc\": \"singleSelectionTop\",\n \"Cmd-Enter\": \"insertLineAfter\",\n \"Shift-Cmd-Enter\": \"insertLineBefore\",\n \"Cmd-D\": \"selectNextOccurrence\",\n \"Shift-Cmd-Space\": \"selectScope\",\n \"Shift-Cmd-M\": \"selectBetweenBrackets\",\n \"Cmd-M\": \"goToBracket\",\n \"Cmd-Ctrl-Up\": \"swapLineUp\",\n \"Cmd-Ctrl-Down\": \"swapLineDown\",\n \"Cmd-/\": \"toggleCommentIndented\",\n \"Cmd-J\": \"joinLines\",\n \"Shift-Cmd-D\": \"duplicateLine\",\n \"F5\": \"sortLines\",\n \"Cmd-F5\": \"sortLinesInsensitive\",\n \"F2\": \"nextBookmark\",\n \"Shift-F2\": \"prevBookmark\",\n \"Cmd-F2\": \"toggleBookmark\",\n \"Shift-Cmd-F2\": \"clearBookmarks\",\n \"Alt-F2\": \"selectBookmarks\",\n \"Backspace\": \"smartBackspace\",\n \"Cmd-K Cmd-D\": \"skipAndSelectNextOccurrence\",\n \"Cmd-K Cmd-K\": \"delLineRight\",\n \"Cmd-K Cmd-U\": \"upcaseAtCursor\",\n \"Cmd-K Cmd-L\": \"downcaseAtCursor\",\n \"Cmd-K Cmd-Space\": \"setSublimeMark\",\n \"Cmd-K Cmd-A\": \"selectToSublimeMark\",\n \"Cmd-K Cmd-W\": \"deleteToSublimeMark\",\n \"Cmd-K Cmd-X\": \"swapWithSublimeMark\",\n \"Cmd-K Cmd-Y\": \"sublimeYank\",\n \"Cmd-K Cmd-C\": \"showInCenter\",\n \"Cmd-K Cmd-G\": \"clearBookmarks\",\n \"Cmd-K Cmd-Backspace\": \"delLineLeft\",\n \"Cmd-K Cmd-1\": \"foldAll\",\n \"Cmd-K Cmd-0\": \"unfoldAll\",\n \"Cmd-K Cmd-J\": \"unfoldAll\",\n \"Ctrl-Shift-Up\": \"addCursorToPrevLine\",\n \"Ctrl-Shift-Down\": \"addCursorToNextLine\",\n \"Cmd-F3\": \"findUnder\",\n \"Shift-Cmd-F3\": \"findUnderPrevious\",\n \"Alt-F3\": \"findAllUnder\",\n \"Shift-Cmd-[\": \"fold\",\n \"Shift-Cmd-]\": \"unfold\",\n \"Cmd-I\": \"findIncremental\",\n \"Shift-Cmd-I\": \"findIncrementalReverse\",\n \"Cmd-H\": \"replace\",\n \"F3\": \"findNext\",\n \"Shift-F3\": \"findPrev\",\n \"fallthrough\": \"macDefault\"\n };\n CodeMirror.normalizeKeyMap(keyMap.macSublime);\n keyMap.pcSublime = {\n \"Shift-Tab\": \"indentLess\",\n \"Shift-Ctrl-K\": \"deleteLine\",\n \"Alt-Q\": \"wrapLines\",\n \"Ctrl-T\": \"transposeChars\",\n \"Alt-Left\": \"goSubwordLeft\",\n \"Alt-Right\": \"goSubwordRight\",\n \"Ctrl-Up\": \"scrollLineUp\",\n \"Ctrl-Down\": \"scrollLineDown\",\n \"Ctrl-L\": \"selectLine\",\n \"Shift-Ctrl-L\": \"splitSelectionByLine\",\n \"Esc\": \"singleSelectionTop\",\n \"Ctrl-Enter\": \"insertLineAfter\",\n \"Shift-Ctrl-Enter\": \"insertLineBefore\",\n \"Ctrl-D\": \"selectNextOccurrence\",\n \"Shift-Ctrl-Space\": \"selectScope\",\n \"Shift-Ctrl-M\": \"selectBetweenBrackets\",\n \"Ctrl-M\": \"goToBracket\",\n \"Shift-Ctrl-Up\": \"swapLineUp\",\n \"Shift-Ctrl-Down\": \"swapLineDown\",\n \"Ctrl-/\": \"toggleCommentIndented\",\n \"Ctrl-J\": \"joinLines\",\n \"Shift-Ctrl-D\": \"duplicateLine\",\n \"F9\": \"sortLines\",\n \"Ctrl-F9\": \"sortLinesInsensitive\",\n \"F2\": \"nextBookmark\",\n \"Shift-F2\": \"prevBookmark\",\n \"Ctrl-F2\": \"toggleBookmark\",\n \"Shift-Ctrl-F2\": \"clearBookmarks\",\n \"Alt-F2\": \"selectBookmarks\",\n \"Backspace\": \"smartBackspace\",\n \"Ctrl-K Ctrl-D\": \"skipAndSelectNextOccurrence\",\n \"Ctrl-K Ctrl-K\": \"delLineRight\",\n \"Ctrl-K Ctrl-U\": \"upcaseAtCursor\",\n \"Ctrl-K Ctrl-L\": \"downcaseAtCursor\",\n \"Ctrl-K Ctrl-Space\": \"setSublimeMark\",\n \"Ctrl-K Ctrl-A\": \"selectToSublimeMark\",\n \"Ctrl-K Ctrl-W\": \"deleteToSublimeMark\",\n \"Ctrl-K Ctrl-X\": \"swapWithSublimeMark\",\n \"Ctrl-K Ctrl-Y\": \"sublimeYank\",\n \"Ctrl-K Ctrl-C\": \"showInCenter\",\n \"Ctrl-K Ctrl-G\": \"clearBookmarks\",\n \"Ctrl-K Ctrl-Backspace\": \"delLineLeft\",\n \"Ctrl-K Ctrl-1\": \"foldAll\",\n \"Ctrl-K Ctrl-0\": \"unfoldAll\",\n \"Ctrl-K Ctrl-J\": \"unfoldAll\",\n \"Ctrl-Alt-Up\": \"addCursorToPrevLine\",\n \"Ctrl-Alt-Down\": \"addCursorToNextLine\",\n \"Ctrl-F3\": \"findUnder\",\n \"Shift-Ctrl-F3\": \"findUnderPrevious\",\n \"Alt-F3\": \"findAllUnder\",\n \"Shift-Ctrl-[\": \"fold\",\n \"Shift-Ctrl-]\": \"unfold\",\n \"Ctrl-I\": \"findIncremental\",\n \"Shift-Ctrl-I\": \"findIncrementalReverse\",\n \"Ctrl-H\": \"replace\",\n \"F3\": \"findNext\",\n \"Shift-F3\": \"findPrev\",\n \"fallthrough\": \"pcDefault\"\n };\n CodeMirror.normalizeKeyMap(keyMap.pcSublime);\n var mac = keyMap.default == keyMap.macDefault;\n keyMap.sublime = mac ? keyMap.macSublime : keyMap.pcSublime;\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3Iva2V5bWFwL3N1YmxpbWUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvY29kZW1pcnJvci9rZXltYXAvc3VibGltZS5qcz84YTI2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvZGVNaXJyb3IsIGNvcHlyaWdodCAoYykgYnkgTWFyaWpuIEhhdmVyYmVrZSBhbmQgb3RoZXJzXG4vLyBEaXN0cmlidXRlZCB1bmRlciBhbiBNSVQgbGljZW5zZTogaHR0cHM6Ly9jb2RlbWlycm9yLm5ldC9MSUNFTlNFXG5cbi8vIEEgcm91Z2ggYXBwcm94aW1hdGlvbiBvZiBTdWJsaW1lIFRleHQncyBrZXliaW5kaW5nc1xuLy8gRGVwZW5kcyBvbiBhZGRvbi9zZWFyY2gvc2VhcmNoY3Vyc29yLmpzIGFuZCBvcHRpb25hbGx5IGFkZG9uL2RpYWxvZy9kaWFsb2dzLmpzXG5cbihmdW5jdGlvbihtb2QpIHtcbiAgaWYgKHR5cGVvZiBleHBvcnRzID09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG1vZHVsZSA9PSBcIm9iamVjdFwiKSAvLyBDb21tb25KU1xuICAgIG1vZChyZXF1aXJlKFwiLi4vbGliL2NvZGVtaXJyb3JcIiksIHJlcXVpcmUoXCIuLi9hZGRvbi9zZWFyY2gvc2VhcmNoY3Vyc29yXCIpLCByZXF1aXJlKFwiLi4vYWRkb24vZWRpdC9tYXRjaGJyYWNrZXRzXCIpKTtcbiAgZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkgLy8gQU1EXG4gICAgZGVmaW5lKFtcIi4uL2xpYi9jb2RlbWlycm9yXCIsIFwiLi4vYWRkb24vc2VhcmNoL3NlYXJjaGN1cnNvclwiLCBcIi4uL2FkZG9uL2VkaXQvbWF0Y2hicmFja2V0c1wiXSwgbW9kKTtcbiAgZWxzZSAvLyBQbGFpbiBicm93c2VyIGVudlxuICAgIG1vZChDb2RlTWlycm9yKTtcbn0pKGZ1bmN0aW9uKENvZGVNaXJyb3IpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgdmFyIGNtZHMgPSBDb2RlTWlycm9yLmNvbW1hbmRzO1xuICB2YXIgUG9zID0gQ29kZU1pcnJvci5Qb3M7XG5cbiAgLy8gVGhpcyBpcyBub3QgZXhhY3RseSBTdWJsaW1lJ3MgYWxnb3JpdGhtLiBJIGNvdWxkbid0IG1ha2UgaGVhZHMgb3IgdGFpbHMgb2YgdGhhdC5cbiAgZnVuY3Rpb24gZmluZFBvc1N1YndvcmQoZG9jLCBzdGFydCwgZGlyKSB7XG4gICAgaWYgKGRpciA8IDAgJiYgc3RhcnQuY2ggPT0gMCkgcmV0dXJuIGRvYy5jbGlwUG9zKFBvcyhzdGFydC5saW5lIC0gMSkpO1xuICAgIHZhciBsaW5lID0gZG9jLmdldExpbmUoc3RhcnQubGluZSk7XG4gICAgaWYgKGRpciA+IDAgJiYgc3RhcnQuY2ggPj0gbGluZS5sZW5ndGgpIHJldHVybiBkb2MuY2xpcFBvcyhQb3Moc3RhcnQubGluZSArIDEsIDApKTtcbiAgICB2YXIgc3RhdGUgPSBcInN0YXJ0XCIsIHR5cGUsIHN0YXJ0UG9zID0gc3RhcnQuY2g7XG4gICAgZm9yICh2YXIgcG9zID0gc3RhcnRQb3MsIGUgPSBkaXIgPCAwID8gMCA6IGxpbmUubGVuZ3RoLCBpID0gMDsgcG9zICE9IGU7IHBvcyArPSBkaXIsIGkrKykge1xuICAgICAgdmFyIG5leHQgPSBsaW5lLmNoYXJBdChkaXIgPCAwID8gcG9zIC0gMSA6IHBvcyk7XG4gICAgICB2YXIgY2F0ID0gbmV4dCAhPSBcIl9cIiAmJiBDb2RlTWlycm9yLmlzV29yZENoYXIobmV4dCkgPyBcIndcIiA6IFwib1wiO1xuICAgICAgaWYgKGNhdCA9PSBcIndcIiAmJiBuZXh0LnRvVXBwZXJDYXNlKCkgPT0gbmV4dCkgY2F0ID0gXCJXXCI7XG4gICAgICBpZiAoc3RhdGUgPT0gXCJzdGFydFwiKSB7XG4gICAgICAgIGlmIChjYXQgIT0gXCJvXCIpIHsgc3RhdGUgPSBcImluXCI7IHR5cGUgPSBjYXQ7IH1cbiAgICAgICAgZWxzZSBzdGFydFBvcyA9IHBvcyArIGRpclxuICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PSBcImluXCIpIHtcbiAgICAgICAgaWYgKHR5cGUgIT0gY2F0KSB7XG4gICAgICAgICAgaWYgKHR5cGUgPT0gXCJ3XCIgJiYgY2F0ID09IFwiV1wiICYmIGRpciA8IDApIHBvcy0tO1xuICAgICAgICAgIGlmICh0eXBlID09IFwiV1wiICYmIGNhdCA9PSBcIndcIiAmJiBkaXIgPiAwKSB7IC8vIEZyb20gdXBwZXJjYXNlIHRvIGxvd2VyY2FzZVxuICAgICAgICAgICAgaWYgKHBvcyA9PSBzdGFydFBvcyArIDEpIHsgdHlwZSA9IFwid1wiOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgZWxzZSBwb3MtLTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFBvcyhzdGFydC5saW5lLCBwb3MpO1xuICB9XG5cbiAgZnVuY3Rpb24gbW92ZVN1YndvcmQoY20sIGRpcikge1xuICAgIGNtLmV4dGVuZFNlbGVjdGlvbnNCeShmdW5jdGlvbihyYW5nZSkge1xuICAgICAgaWYgKGNtLmRpc3BsYXkuc2hpZnQgfHwgY20uZG9jLmV4dGVuZCB8fCByYW5nZS5lbXB0eSgpKVxuICAgICAgICByZXR1cm4gZmluZFBvc1N1YndvcmQoY20uZG9jLCByYW5nZS5oZWFkLCBkaXIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gZGlyIDwgMCA/IHJhbmdlLmZyb20oKSA6IHJhbmdlLnRvKCk7XG4gICAgfSk7XG4gIH1cblxuICBjbWRzLmdvU3Vid29yZExlZnQgPSBmdW5jdGlvbihjbSkgeyBtb3ZlU3Vid29yZChjbSwgLTEpOyB9O1xuICBjbWRzLmdvU3Vid29yZFJpZ2h0ID0gZnVuY3Rpb24oY20pIHsgbW92ZVN1YndvcmQoY20sIDEpOyB9O1xuXG4gIGNtZHMuc2Nyb2xsTGluZVVwID0gZnVuY3Rpb24oY20pIHtcbiAgICB2YXIgaW5mbyA9IGNtLmdldFNjcm9sbEluZm8oKTtcbiAgICBpZiAoIWNtLnNvbWV0aGluZ1NlbGVjdGVkKCkpIHtcbiAgICAgIHZhciB2aXNpYmxlQm90dG9tTGluZSA9IGNtLmxpbmVBdEhlaWdodChpbmZvLnRvcCArIGluZm8uY2xpZW50SGVpZ2h0LCBcImxvY2FsXCIpO1xuICAgICAgaWYgKGNtLmdldEN1cnNvcigpLmxpbmUgPj0gdmlzaWJsZUJvdHRvbUxpbmUpXG4gICAgICAgIGNtLmV4ZWNDb21tYW5kKFwiZ29MaW5lVXBcIik7XG4gICAgfVxuICAgIGNtLnNjcm9sbFRvKG51bGwsIGluZm8udG9wIC0gY20uZGVmYXVsdFRleHRIZWlnaHQoKSk7XG4gIH07XG4gIGNtZHMuc2Nyb2xsTGluZURvd24gPSBmdW5jdGlvbihjbSkge1xuICAgIHZhciBpbmZvID0gY20uZ2V0U2Nyb2xsSW5mbygpO1xuICAgIGlmICghY20uc29tZXRoaW5nU2VsZWN0ZWQoKSkge1xuICAgICAgdmFyIHZpc2libGVUb3BMaW5lID0gY20ubGluZUF0SGVpZ2h0KGluZm8udG9wLCBcImxvY2FsXCIpKzE7XG4gICAgICBpZiAoY20uZ2V0Q3Vyc29yKCkubGluZSA8PSB2aXNpYmxlVG9wTGluZSlcbiAgICAgICAgY20uZXhlY0NvbW1hbmQoXCJnb0xpbmVEb3duXCIpO1xuICAgIH1cbiAgICBjbS5zY3JvbGxUbyhudWxsLCBpbmZvLnRvcCArIGNtLmRlZmF1bHRUZXh0SGVpZ2h0KCkpO1xuICB9O1xuXG4gIGNtZHMuc3BsaXRTZWxlY3Rpb25CeUxpbmUgPSBmdW5jdGlvbihjbSkge1xuICAgIHZhciByYW5nZXMgPSBjbS5saXN0U2VsZWN0aW9ucygpLCBsaW5lUmFuZ2VzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBmcm9tID0gcmFuZ2VzW2ldLmZyb20oKSwgdG8gPSByYW5nZXNbaV0udG8oKTtcbiAgICAgIGZvciAodmFyIGxpbmUgPSBmcm9tLmxpbmU7IGxpbmUgPD0gdG8ubGluZTsgKytsaW5lKVxuICAgICAgICBpZiAoISh0by5saW5lID4gZnJvbS5saW5lICYmIGxpbmUgPT0gdG8ubGluZSAmJiB0by5jaCA9PSAwKSlcbiAgICAgICAgICBsaW5lUmFuZ2VzLnB1c2goe2FuY2hvcjogbGluZSA9PSBmcm9tLmxpbmUgPyBmcm9tIDogUG9zKGxpbmUsIDApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZDogbGluZSA9PSB0by5saW5lID8gdG8gOiBQb3MobGluZSl9KTtcbiAgICB9XG4gICAgY20uc2V0U2VsZWN0aW9ucyhsaW5lUmFuZ2VzLCAwKTtcbiAgfTtcblxuICBjbWRzLnNpbmdsZVNlbGVjdGlvblRvcCA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgdmFyIHJhbmdlID0gY20ubGlzdFNlbGVjdGlvbnMoKVswXTtcbiAgICBjbS5zZXRTZWxlY3Rpb24ocmFuZ2UuYW5jaG9yLCByYW5nZS5oZWFkLCB7c2Nyb2xsOiBmYWxzZX0pO1xuICB9O1xuXG4gIGNtZHMuc2VsZWN0TGluZSA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgdmFyIHJhbmdlcyA9IGNtLmxpc3RTZWxlY3Rpb25zKCksIGV4dGVuZGVkID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciByYW5nZSA9IHJhbmdlc1tpXTtcbiAgICAgIGV4dGVuZGVkLnB1c2goe2FuY2hvcjogUG9zKHJhbmdlLmZyb20oKS5saW5lLCAwKSxcbiAgICAgICAgICAgICAgICAgICAgIGhlYWQ6IFBvcyhyYW5nZS50bygpLmxpbmUgKyAxLCAwKX0pO1xuICAgIH1cbiAgICBjbS5zZXRTZWxlY3Rpb25zKGV4dGVuZGVkKTtcbiAgfTtcblxuICBmdW5jdGlvbiBpbnNlcnRMaW5lKGNtLCBhYm92ZSkge1xuICAgIGlmIChjbS5pc1JlYWRPbmx5KCkpIHJldHVybiBDb2RlTWlycm9yLlBhc3NcbiAgICBjbS5vcGVyYXRpb24oZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbGVuID0gY20ubGlzdFNlbGVjdGlvbnMoKS5sZW5ndGgsIG5ld1NlbGVjdGlvbiA9IFtdLCBsYXN0ID0gLTE7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIHZhciBoZWFkID0gY20ubGlzdFNlbGVjdGlvbnMoKVtpXS5oZWFkO1xuICAgICAgICBpZiAoaGVhZC5saW5lIDw9IGxhc3QpIGNvbnRpbnVlO1xuICAgICAgICB2YXIgYXQgPSBQb3MoaGVhZC5saW5lICsgKGFib3ZlID8gMCA6IDEpLCAwKTtcbiAgICAgICAgY20ucmVwbGFjZVJhbmdlKFwiXFxuXCIsIGF0LCBudWxsLCBcIitpbnNlcnRMaW5lXCIpO1xuICAgICAgICBjbS5pbmRlbnRMaW5lKGF0LmxpbmUsIG51bGwsIHRydWUpO1xuICAgICAgICBuZXdTZWxlY3Rpb24ucHVzaCh7aGVhZDogYXQsIGFuY2hvcjogYXR9KTtcbiAgICAgICAgbGFzdCA9IGhlYWQubGluZSArIDE7XG4gICAgICB9XG4gICAgICBjbS5zZXRTZWxlY3Rpb25zKG5ld1NlbGVjdGlvbik7XG4gICAgfSk7XG4gICAgY20uZXhlY0NvbW1hbmQoXCJpbmRlbnRBdXRvXCIpO1xuICB9XG5cbiAgY21kcy5pbnNlcnRMaW5lQWZ0ZXIgPSBmdW5jdGlvbihjbSkgeyByZXR1cm4gaW5zZXJ0TGluZShjbSwgZmFsc2UpOyB9O1xuXG4gIGNtZHMuaW5zZXJ0TGluZUJlZm9yZSA9IGZ1bmN0aW9uKGNtKSB7IHJldHVybiBpbnNlcnRMaW5lKGNtLCB0cnVlKTsgfTtcblxuICBmdW5jdGlvbiB3b3JkQXQoY20sIHBvcykge1xuICAgIHZhciBzdGFydCA9IHBvcy5jaCwgZW5kID0gc3RhcnQsIGxpbmUgPSBjbS5nZXRMaW5lKHBvcy5saW5lKTtcbiAgICB3aGlsZSAoc3RhcnQgJiYgQ29kZU1pcnJvci5pc1dvcmRDaGFyKGxpbmUuY2hhckF0KHN0YXJ0IC0gMSkpKSAtLXN0YXJ0O1xuICAgIHdoaWxlIChlbmQgPCBsaW5lLmxlbmd0aCAmJiBDb2RlTWlycm9yLmlzV29yZENoYXIobGluZS5jaGFyQXQoZW5kKSkpICsrZW5kO1xuICAgIHJldHVybiB7ZnJvbTogUG9zKHBvcy5saW5lLCBzdGFydCksIHRvOiBQb3MocG9zLmxpbmUsIGVuZCksIHdvcmQ6IGxpbmUuc2xpY2Uoc3RhcnQsIGVuZCl9O1xuICB9XG5cbiAgY21kcy5zZWxlY3ROZXh0T2NjdXJyZW5jZSA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgdmFyIGZyb20gPSBjbS5nZXRDdXJzb3IoXCJmcm9tXCIpLCB0byA9IGNtLmdldEN1cnNvcihcInRvXCIpO1xuICAgIHZhciBmdWxsV29yZCA9IGNtLnN0YXRlLnN1YmxpbWVGaW5kRnVsbFdvcmQgPT0gY20uZG9jLnNlbDtcbiAgICBpZiAoQ29kZU1pcnJvci5jbXBQb3MoZnJvbSwgdG8pID09IDApIHtcbiAgICAgIHZhciB3b3JkID0gd29yZEF0KGNtLCBmcm9tKTtcbiAgICAgIGlmICghd29yZC53b3JkKSByZXR1cm47XG4gICAgICBjbS5zZXRTZWxlY3Rpb24od29yZC5mcm9tLCB3b3JkLnRvKTtcbiAgICAgIGZ1bGxXb3JkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHRleHQgPSBjbS5nZXRSYW5nZShmcm9tLCB0byk7XG4gICAgICB2YXIgcXVlcnkgPSBmdWxsV29yZCA/IG5ldyBSZWdFeHAoXCJcXFxcYlwiICsgdGV4dCArIFwiXFxcXGJcIikgOiB0ZXh0O1xuICAgICAgdmFyIGN1ciA9IGNtLmdldFNlYXJjaEN1cnNvcihxdWVyeSwgdG8pO1xuICAgICAgdmFyIGZvdW5kID0gY3VyLmZpbmROZXh0KCk7XG4gICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgIGN1ciA9IGNtLmdldFNlYXJjaEN1cnNvcihxdWVyeSwgUG9zKGNtLmZpcnN0TGluZSgpLCAwKSk7XG4gICAgICAgIGZvdW5kID0gY3VyLmZpbmROZXh0KCk7XG4gICAgICB9XG4gICAgICBpZiAoIWZvdW5kIHx8IGlzU2VsZWN0ZWRSYW5nZShjbS5saXN0U2VsZWN0aW9ucygpLCBjdXIuZnJvbSgpLCBjdXIudG8oKSkpIHJldHVyblxuICAgICAgY20uYWRkU2VsZWN0aW9uKGN1ci5mcm9tKCksIGN1ci50bygpKTtcbiAgICB9XG4gICAgaWYgKGZ1bGxXb3JkKVxuICAgICAgY20uc3RhdGUuc3VibGltZUZpbmRGdWxsV29yZCA9IGNtLmRvYy5zZWw7XG4gIH07XG5cbiAgY21kcy5za2lwQW5kU2VsZWN0TmV4dE9jY3VycmVuY2UgPSBmdW5jdGlvbihjbSkge1xuICAgIHZhciBwcmV2QW5jaG9yID0gY20uZ2V0Q3Vyc29yKFwiYW5jaG9yXCIpLCBwcmV2SGVhZCA9IGNtLmdldEN1cnNvcihcImhlYWRcIik7XG4gICAgY21kcy5zZWxlY3ROZXh0T2NjdXJyZW5jZShjbSk7XG4gICAgaWYgKENvZGVNaXJyb3IuY21wUG9zKHByZXZBbmNob3IsIHByZXZIZWFkKSAhPSAwKSB7XG4gICAgICBjbS5kb2Muc2V0U2VsZWN0aW9ucyhjbS5kb2MubGlzdFNlbGVjdGlvbnMoKVxuICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHNlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHNlbC5hbmNob3IgIT0gcHJldkFuY2hvciB8fCBzZWwuaGVhZCAhPSBwcmV2SGVhZDtcbiAgICAgICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gYWRkQ3Vyc29yVG9TZWxlY3Rpb24oY20sIGRpcikge1xuICAgIHZhciByYW5nZXMgPSBjbS5saXN0U2VsZWN0aW9ucygpLCBuZXdSYW5nZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHJhbmdlID0gcmFuZ2VzW2ldO1xuICAgICAgdmFyIG5ld0FuY2hvciA9IGNtLmZpbmRQb3NWKFxuICAgICAgICAgIHJhbmdlLmFuY2hvciwgZGlyLCBcImxpbmVcIiwgcmFuZ2UuYW5jaG9yLmdvYWxDb2x1bW4pO1xuICAgICAgdmFyIG5ld0hlYWQgPSBjbS5maW5kUG9zVihcbiAgICAgICAgICByYW5nZS5oZWFkLCBkaXIsIFwibGluZVwiLCByYW5nZS5oZWFkLmdvYWxDb2x1bW4pO1xuICAgICAgbmV3QW5jaG9yLmdvYWxDb2x1bW4gPSByYW5nZS5hbmNob3IuZ29hbENvbHVtbiAhPSBudWxsID9cbiAgICAgICAgICByYW5nZS5hbmNob3IuZ29hbENvbHVtbiA6IGNtLmN1cnNvckNvb3JkcyhyYW5nZS5hbmNob3IsIFwiZGl2XCIpLmxlZnQ7XG4gICAgICBuZXdIZWFkLmdvYWxDb2x1bW4gPSByYW5nZS5oZWFkLmdvYWxDb2x1bW4gIT0gbnVsbCA/XG4gICAgICAgICAgcmFuZ2UuaGVhZC5nb2FsQ29sdW1uIDogY20uY3Vyc29yQ29vcmRzKHJhbmdlLmhlYWQsIFwiZGl2XCIpLmxlZnQ7XG4gICAgICB2YXIgbmV3UmFuZ2UgPSB7YW5jaG9yOiBuZXdBbmNob3IsIGhlYWQ6IG5ld0hlYWR9O1xuICAgICAgbmV3UmFuZ2VzLnB1c2gocmFuZ2UpO1xuICAgICAgbmV3UmFuZ2VzLnB1c2gobmV3UmFuZ2UpO1xuICAgIH1cbiAgICBjbS5zZXRTZWxlY3Rpb25zKG5ld1Jhbmdlcyk7XG4gIH1cbiAgY21kcy5hZGRDdXJzb3JUb1ByZXZMaW5lID0gZnVuY3Rpb24oY20pIHsgYWRkQ3Vyc29yVG9TZWxlY3Rpb24oY20sIC0xKTsgfTtcbiAgY21kcy5hZGRDdXJzb3JUb05leHRMaW5lID0gZnVuY3Rpb24oY20pIHsgYWRkQ3Vyc29yVG9TZWxlY3Rpb24oY20sIDEpOyB9O1xuXG4gIGZ1bmN0aW9uIGlzU2VsZWN0ZWRSYW5nZShyYW5nZXMsIGZyb20sIHRvKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspXG4gICAgICBpZiAoQ29kZU1pcnJvci5jbXBQb3MocmFuZ2VzW2ldLmZyb20oKSwgZnJvbSkgPT0gMCAmJlxuICAgICAgICAgIENvZGVNaXJyb3IuY21wUG9zKHJhbmdlc1tpXS50bygpLCB0bykgPT0gMCkgcmV0dXJuIHRydWVcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHZhciBtaXJyb3IgPSBcIigpe31bXVwiO1xuICBmdW5jdGlvbiBzZWxlY3RCZXR3ZWVuQnJhY2tldHMoY20pIHtcbiAgICB2YXIgcmFuZ2VzID0gY20ubGlzdFNlbGVjdGlvbnMoKSwgbmV3UmFuZ2VzID0gW11cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHJhbmdlID0gcmFuZ2VzW2ldLCBwb3MgPSByYW5nZS5oZWFkLCBvcGVuaW5nID0gY20uc2NhbkZvckJyYWNrZXQocG9zLCAtMSk7XG4gICAgICBpZiAoIW9wZW5pbmcpIHJldHVybiBmYWxzZTtcbiAgICAgIGZvciAoOzspIHtcbiAgICAgICAgdmFyIGNsb3NpbmcgPSBjbS5zY2FuRm9yQnJhY2tldChwb3MsIDEpO1xuICAgICAgICBpZiAoIWNsb3NpbmcpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGNsb3NpbmcuY2ggPT0gbWlycm9yLmNoYXJBdChtaXJyb3IuaW5kZXhPZihvcGVuaW5nLmNoKSArIDEpKSB7XG4gICAgICAgICAgdmFyIHN0YXJ0UG9zID0gUG9zKG9wZW5pbmcucG9zLmxpbmUsIG9wZW5pbmcucG9zLmNoICsgMSk7XG4gICAgICAgICAgaWYgKENvZGVNaXJyb3IuY21wUG9zKHN0YXJ0UG9zLCByYW5nZS5mcm9tKCkpID09IDAgJiZcbiAgICAgICAgICAgICAgQ29kZU1pcnJvci5jbXBQb3MoY2xvc2luZy5wb3MsIHJhbmdlLnRvKCkpID09IDApIHtcbiAgICAgICAgICAgIG9wZW5pbmcgPSBjbS5zY2FuRm9yQnJhY2tldChvcGVuaW5nLnBvcywgLTEpO1xuICAgICAgICAgICAgaWYgKCFvcGVuaW5nKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld1Jhbmdlcy5wdXNoKHthbmNob3I6IHN0YXJ0UG9zLCBoZWFkOiBjbG9zaW5nLnBvc30pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBvcyA9IFBvcyhjbG9zaW5nLnBvcy5saW5lLCBjbG9zaW5nLnBvcy5jaCArIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICBjbS5zZXRTZWxlY3Rpb25zKG5ld1Jhbmdlcyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjbWRzLnNlbGVjdFNjb3BlID0gZnVuY3Rpb24oY20pIHtcbiAgICBzZWxlY3RCZXR3ZWVuQnJhY2tldHMoY20pIHx8IGNtLmV4ZWNDb21tYW5kKFwic2VsZWN0QWxsXCIpO1xuICB9O1xuICBjbWRzLnNlbGVjdEJldHdlZW5CcmFja2V0cyA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgaWYgKCFzZWxlY3RCZXR3ZWVuQnJhY2tldHMoY20pKSByZXR1cm4gQ29kZU1pcnJvci5QYXNzO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHB1bmNUeXBlKHR5cGUpIHtcbiAgICByZXR1cm4gIXR5cGUgPyBudWxsIDogL1xcYnB1bmN0dWF0aW9uXFxiLy50ZXN0KHR5cGUpID8gdHlwZSA6IHVuZGVmaW5lZFxuICB9XG5cbiAgY21kcy5nb1RvQnJhY2tldCA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgY20uZXh0ZW5kU2VsZWN0aW9uc0J5KGZ1bmN0aW9uKHJhbmdlKSB7XG4gICAgICB2YXIgbmV4dCA9IGNtLnNjYW5Gb3JCcmFja2V0KHJhbmdlLmhlYWQsIDEsIHB1bmNUeXBlKGNtLmdldFRva2VuVHlwZUF0KHJhbmdlLmhlYWQpKSk7XG4gICAgICBpZiAobmV4dCAmJiBDb2RlTWlycm9yLmNtcFBvcyhuZXh0LnBvcywgcmFuZ2UuaGVhZCkgIT0gMCkgcmV0dXJuIG5leHQucG9zO1xuICAgICAgdmFyIHByZXYgPSBjbS5zY2FuRm9yQnJhY2tldChyYW5nZS5oZWFkLCAtMSwgcHVuY1R5cGUoY20uZ2V0VG9rZW5UeXBlQXQoUG9zKHJhbmdlLmhlYWQubGluZSwgcmFuZ2UuaGVhZC5jaCArIDEpKSkpO1xuICAgICAgcmV0dXJuIHByZXYgJiYgUG9zKHByZXYucG9zLmxpbmUsIHByZXYucG9zLmNoICsgMSkgfHwgcmFuZ2UuaGVhZDtcbiAgICB9KTtcbiAgfTtcblxuICBjbWRzLnN3YXBMaW5lVXAgPSBmdW5jdGlvbihjbSkge1xuICAgIGlmIChjbS5pc1JlYWRPbmx5KCkpIHJldHVybiBDb2RlTWlycm9yLlBhc3NcbiAgICB2YXIgcmFuZ2VzID0gY20ubGlzdFNlbGVjdGlvbnMoKSwgbGluZXNUb01vdmUgPSBbXSwgYXQgPSBjbS5maXJzdExpbmUoKSAtIDEsIG5ld1NlbHMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHJhbmdlID0gcmFuZ2VzW2ldLCBmcm9tID0gcmFuZ2UuZnJvbSgpLmxpbmUgLSAxLCB0byA9IHJhbmdlLnRvKCkubGluZTtcbiAgICAgIG5ld1NlbHMucHVzaCh7YW5jaG9yOiBQb3MocmFuZ2UuYW5jaG9yLmxpbmUgLSAxLCByYW5nZS5hbmNob3IuY2gpLFxuICAgICAgICAgICAgICAgICAgICBoZWFkOiBQb3MocmFuZ2UuaGVhZC5saW5lIC0gMSwgcmFuZ2UuaGVhZC5jaCl9KTtcbiAgICAgIGlmIChyYW5nZS50bygpLmNoID09IDAgJiYgIXJhbmdlLmVtcHR5KCkpIC0tdG87XG4gICAgICBpZiAoZnJvbSA+IGF0KSBsaW5lc1RvTW92ZS5wdXNoKGZyb20sIHRvKTtcbiAgICAgIGVsc2UgaWYgKGxpbmVzVG9Nb3ZlLmxlbmd0aCkgbGluZXNUb01vdmVbbGluZXNUb01vdmUubGVuZ3RoIC0gMV0gPSB0bztcbiAgICAgIGF0ID0gdG87XG4gICAgfVxuICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZXNUb01vdmUubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgdmFyIGZyb20gPSBsaW5lc1RvTW92ZVtpXSwgdG8gPSBsaW5lc1RvTW92ZVtpICsgMV07XG4gICAgICAgIHZhciBsaW5lID0gY20uZ2V0TGluZShmcm9tKTtcbiAgICAgICAgY20ucmVwbGFjZVJhbmdlKFwiXCIsIFBvcyhmcm9tLCAwKSwgUG9zKGZyb20gKyAxLCAwKSwgXCIrc3dhcExpbmVcIik7XG4gICAgICAgIGlmICh0byA+IGNtLmxhc3RMaW5lKCkpXG4gICAgICAgICAgY20ucmVwbGFjZVJhbmdlKFwiXFxuXCIgKyBsaW5lLCBQb3MoY20ubGFzdExpbmUoKSksIG51bGwsIFwiK3N3YXBMaW5lXCIpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgY20ucmVwbGFjZVJhbmdlKGxpbmUgKyBcIlxcblwiLCBQb3ModG8sIDApLCBudWxsLCBcIitzd2FwTGluZVwiKTtcbiAgICAgIH1cbiAgICAgIGNtLnNldFNlbGVjdGlvbnMobmV3U2Vscyk7XG4gICAgICBjbS5zY3JvbGxJbnRvVmlldygpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNtZHMuc3dhcExpbmVEb3duID0gZnVuY3Rpb24oY20pIHtcbiAgICBpZiAoY20uaXNSZWFkT25seSgpKSByZXR1cm4gQ29kZU1pcnJvci5QYXNzXG4gICAgdmFyIHJhbmdlcyA9IGNtLmxpc3RTZWxlY3Rpb25zKCksIGxpbmVzVG9Nb3ZlID0gW10sIGF0ID0gY20ubGFzdExpbmUoKSArIDE7XG4gICAgZm9yICh2YXIgaSA9IHJhbmdlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHJhbmdlID0gcmFuZ2VzW2ldLCBmcm9tID0gcmFuZ2UudG8oKS5saW5lICsgMSwgdG8gPSByYW5nZS5mcm9tKCkubGluZTtcbiAgICAgIGlmIChyYW5nZS50bygpLmNoID09IDAgJiYgIXJhbmdlLmVtcHR5KCkpIGZyb20tLTtcbiAgICAgIGlmIChmcm9tIDwgYXQpIGxpbmVzVG9Nb3ZlLnB1c2goZnJvbSwgdG8pO1xuICAgICAgZWxzZSBpZiAobGluZXNUb01vdmUubGVuZ3RoKSBsaW5lc1RvTW92ZVtsaW5lc1RvTW92ZS5sZW5ndGggLSAxXSA9IHRvO1xuICAgICAgYXQgPSB0bztcbiAgICB9XG4gICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgZm9yICh2YXIgaSA9IGxpbmVzVG9Nb3ZlLmxlbmd0aCAtIDI7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgICAgIHZhciBmcm9tID0gbGluZXNUb01vdmVbaV0sIHRvID0gbGluZXNUb01vdmVbaSArIDFdO1xuICAgICAgICB2YXIgbGluZSA9IGNtLmdldExpbmUoZnJvbSk7XG4gICAgICAgIGlmIChmcm9tID09IGNtLmxhc3RMaW5lKCkpXG4gICAgICAgICAgY20ucmVwbGFjZVJhbmdlKFwiXCIsIFBvcyhmcm9tIC0gMSksIFBvcyhmcm9tKSwgXCIrc3dhcExpbmVcIik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjbS5yZXBsYWNlUmFuZ2UoXCJcIiwgUG9zKGZyb20sIDApLCBQb3MoZnJvbSArIDEsIDApLCBcIitzd2FwTGluZVwiKTtcbiAgICAgICAgY20ucmVwbGFjZVJhbmdlKGxpbmUgKyBcIlxcblwiLCBQb3ModG8sIDApLCBudWxsLCBcIitzd2FwTGluZVwiKTtcbiAgICAgIH1cbiAgICAgIGNtLnNjcm9sbEludG9WaWV3KCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY21kcy50b2dnbGVDb21tZW50SW5kZW50ZWQgPSBmdW5jdGlvbihjbSkge1xuICAgIGNtLnRvZ2dsZUNvbW1lbnQoeyBpbmRlbnQ6IHRydWUgfSk7XG4gIH1cblxuICBjbWRzLmpvaW5MaW5lcyA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgdmFyIHJhbmdlcyA9IGNtLmxpc3RTZWxlY3Rpb25zKCksIGpvaW5lZCA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcmFuZ2UgPSByYW5nZXNbaV0sIGZyb20gPSByYW5nZS5mcm9tKCk7XG4gICAgICB2YXIgc3RhcnQgPSBmcm9tLmxpbmUsIGVuZCA9IHJhbmdlLnRvKCkubGluZTtcbiAgICAgIHdoaWxlIChpIDwgcmFuZ2VzLmxlbmd0aCAtIDEgJiYgcmFuZ2VzW2kgKyAxXS5mcm9tKCkubGluZSA9PSBlbmQpXG4gICAgICAgIGVuZCA9IHJhbmdlc1srK2ldLnRvKCkubGluZTtcbiAgICAgIGpvaW5lZC5wdXNoKHtzdGFydDogc3RhcnQsIGVuZDogZW5kLCBhbmNob3I6ICFyYW5nZS5lbXB0eSgpICYmIGZyb219KTtcbiAgICB9XG4gICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG9mZnNldCA9IDAsIHJhbmdlcyA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBqb2luZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG9iaiA9IGpvaW5lZFtpXTtcbiAgICAgICAgdmFyIGFuY2hvciA9IG9iai5hbmNob3IgJiYgUG9zKG9iai5hbmNob3IubGluZSAtIG9mZnNldCwgb2JqLmFuY2hvci5jaCksIGhlYWQ7XG4gICAgICAgIGZvciAodmFyIGxpbmUgPSBvYmouc3RhcnQ7IGxpbmUgPD0gb2JqLmVuZDsgbGluZSsrKSB7XG4gICAgICAgICAgdmFyIGFjdHVhbCA9IGxpbmUgLSBvZmZzZXQ7XG4gICAgICAgICAgaWYgKGxpbmUgPT0gb2JqLmVuZCkgaGVhZCA9IFBvcyhhY3R1YWwsIGNtLmdldExpbmUoYWN0dWFsKS5sZW5ndGggKyAxKTtcbiAgICAgICAgICBpZiAoYWN0dWFsIDwgY20ubGFzdExpbmUoKSkge1xuICAgICAgICAgICAgY20ucmVwbGFjZVJhbmdlKFwiIFwiLCBQb3MoYWN0dWFsKSwgUG9zKGFjdHVhbCArIDEsIC9eXFxzKi8uZXhlYyhjbS5nZXRMaW5lKGFjdHVhbCArIDEpKVswXS5sZW5ndGgpKTtcbiAgICAgICAgICAgICsrb2Zmc2V0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByYW5nZXMucHVzaCh7YW5jaG9yOiBhbmNob3IgfHwgaGVhZCwgaGVhZDogaGVhZH0pO1xuICAgICAgfVxuICAgICAgY20uc2V0U2VsZWN0aW9ucyhyYW5nZXMsIDApO1xuICAgIH0pO1xuICB9O1xuXG4gIGNtZHMuZHVwbGljYXRlTGluZSA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHJhbmdlQ291bnQgPSBjbS5saXN0U2VsZWN0aW9ucygpLmxlbmd0aDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VDb3VudDsgaSsrKSB7XG4gICAgICAgIHZhciByYW5nZSA9IGNtLmxpc3RTZWxlY3Rpb25zKClbaV07XG4gICAgICAgIGlmIChyYW5nZS5lbXB0eSgpKVxuICAgICAgICAgIGNtLnJlcGxhY2VSYW5nZShjbS5nZXRMaW5lKHJhbmdlLmhlYWQubGluZSkgKyBcIlxcblwiLCBQb3MocmFuZ2UuaGVhZC5saW5lLCAwKSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjbS5yZXBsYWNlUmFuZ2UoY20uZ2V0UmFuZ2UocmFuZ2UuZnJvbSgpLCByYW5nZS50bygpKSwgcmFuZ2UuZnJvbSgpKTtcbiAgICAgIH1cbiAgICAgIGNtLnNjcm9sbEludG9WaWV3KCk7XG4gICAgfSk7XG4gIH07XG5cblxuICBmdW5jdGlvbiBzb3J0TGluZXMoY20sIGNhc2VTZW5zaXRpdmUpIHtcbiAgICBpZiAoY20uaXNSZWFkT25seSgpKSByZXR1cm4gQ29kZU1pcnJvci5QYXNzXG4gICAgdmFyIHJhbmdlcyA9IGNtLmxpc3RTZWxlY3Rpb25zKCksIHRvU29ydCA9IFtdLCBzZWxlY3RlZDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHJhbmdlID0gcmFuZ2VzW2ldO1xuICAgICAgaWYgKHJhbmdlLmVtcHR5KCkpIGNvbnRpbnVlO1xuICAgICAgdmFyIGZyb20gPSByYW5nZS5mcm9tKCkubGluZSwgdG8gPSByYW5nZS50bygpLmxpbmU7XG4gICAgICB3aGlsZSAoaSA8IHJhbmdlcy5sZW5ndGggLSAxICYmIHJhbmdlc1tpICsgMV0uZnJvbSgpLmxpbmUgPT0gdG8pXG4gICAgICAgIHRvID0gcmFuZ2VzWysraV0udG8oKS5saW5lO1xuICAgICAgaWYgKCFyYW5nZXNbaV0udG8oKS5jaCkgdG8tLTtcbiAgICAgIHRvU29ydC5wdXNoKGZyb20sIHRvKTtcbiAgICB9XG4gICAgaWYgKHRvU29ydC5sZW5ndGgpIHNlbGVjdGVkID0gdHJ1ZTtcbiAgICBlbHNlIHRvU29ydC5wdXNoKGNtLmZpcnN0TGluZSgpLCBjbS5sYXN0TGluZSgpKTtcblxuICAgIGNtLm9wZXJhdGlvbihmdW5jdGlvbigpIHtcbiAgICAgIHZhciByYW5nZXMgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9Tb3J0Lmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgIHZhciBmcm9tID0gdG9Tb3J0W2ldLCB0byA9IHRvU29ydFtpICsgMV07XG4gICAgICAgIHZhciBzdGFydCA9IFBvcyhmcm9tLCAwKSwgZW5kID0gUG9zKHRvKTtcbiAgICAgICAgdmFyIGxpbmVzID0gY20uZ2V0UmFuZ2Uoc3RhcnQsIGVuZCwgZmFsc2UpO1xuICAgICAgICBpZiAoY2FzZVNlbnNpdGl2ZSlcbiAgICAgICAgICBsaW5lcy5zb3J0KCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsaW5lcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcbiAgICAgICAgICAgIHZhciBhdSA9IGEudG9VcHBlckNhc2UoKSwgYnUgPSBiLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAoYXUgIT0gYnUpIHsgYSA9IGF1OyBiID0gYnU7IH1cbiAgICAgICAgICAgIHJldHVybiBhIDwgYiA/IC0xIDogYSA9PSBiID8gMCA6IDE7XG4gICAgICAgICAgfSk7XG4gICAgICAgIGNtLnJlcGxhY2VSYW5nZShsaW5lcywgc3RhcnQsIGVuZCk7XG4gICAgICAgIGlmIChzZWxlY3RlZCkgcmFuZ2VzLnB1c2goe2FuY2hvcjogc3RhcnQsIGhlYWQ6IFBvcyh0byArIDEsIDApfSk7XG4gICAgICB9XG4gICAgICBpZiAoc2VsZWN0ZWQpIGNtLnNldFNlbGVjdGlvbnMocmFuZ2VzLCAwKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNtZHMuc29ydExpbmVzID0gZnVuY3Rpb24oY20pIHsgc29ydExpbmVzKGNtLCB0cnVlKTsgfTtcbiAgY21kcy5zb3J0TGluZXNJbnNlbnNpdGl2ZSA9IGZ1bmN0aW9uKGNtKSB7IHNvcnRMaW5lcyhjbSwgZmFsc2UpOyB9O1xuXG4gIGNtZHMubmV4dEJvb2ttYXJrID0gZnVuY3Rpb24oY20pIHtcbiAgICB2YXIgbWFya3MgPSBjbS5zdGF0ZS5zdWJsaW1lQm9va21hcmtzO1xuICAgIGlmIChtYXJrcykgd2hpbGUgKG1hcmtzLmxlbmd0aCkge1xuICAgICAgdmFyIGN1cnJlbnQgPSBtYXJrcy5zaGlmdCgpO1xuICAgICAgdmFyIGZvdW5kID0gY3VycmVudC5maW5kKCk7XG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgbWFya3MucHVzaChjdXJyZW50KTtcbiAgICAgICAgcmV0dXJuIGNtLnNldFNlbGVjdGlvbihmb3VuZC5mcm9tLCBmb3VuZC50byk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNtZHMucHJldkJvb2ttYXJrID0gZnVuY3Rpb24oY20pIHtcbiAgICB2YXIgbWFya3MgPSBjbS5zdGF0ZS5zdWJsaW1lQm9va21hcmtzO1xuICAgIGlmIChtYXJrcykgd2hpbGUgKG1hcmtzLmxlbmd0aCkge1xuICAgICAgbWFya3MudW5zaGlmdChtYXJrcy5wb3AoKSk7XG4gICAgICB2YXIgZm91bmQgPSBtYXJrc1ttYXJrcy5sZW5ndGggLSAxXS5maW5kKCk7XG4gICAgICBpZiAoIWZvdW5kKVxuICAgICAgICBtYXJrcy5wb3AoKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGNtLnNldFNlbGVjdGlvbihmb3VuZC5mcm9tLCBmb3VuZC50byk7XG4gICAgfVxuICB9O1xuXG4gIGNtZHMudG9nZ2xlQm9va21hcmsgPSBmdW5jdGlvbihjbSkge1xuICAgIHZhciByYW5nZXMgPSBjbS5saXN0U2VsZWN0aW9ucygpO1xuICAgIHZhciBtYXJrcyA9IGNtLnN0YXRlLnN1YmxpbWVCb29rbWFya3MgfHwgKGNtLnN0YXRlLnN1YmxpbWVCb29rbWFya3MgPSBbXSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBmcm9tID0gcmFuZ2VzW2ldLmZyb20oKSwgdG8gPSByYW5nZXNbaV0udG8oKTtcbiAgICAgIHZhciBmb3VuZCA9IHJhbmdlc1tpXS5lbXB0eSgpID8gY20uZmluZE1hcmtzQXQoZnJvbSkgOiBjbS5maW5kTWFya3MoZnJvbSwgdG8pO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBmb3VuZC5sZW5ndGg7IGorKykge1xuICAgICAgICBpZiAoZm91bmRbal0uc3VibGltZUJvb2ttYXJrKSB7XG4gICAgICAgICAgZm91bmRbal0uY2xlYXIoKTtcbiAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IG1hcmtzLmxlbmd0aDsgaysrKVxuICAgICAgICAgICAgaWYgKG1hcmtzW2tdID09IGZvdW5kW2pdKVxuICAgICAgICAgICAgICBtYXJrcy5zcGxpY2Uoay0tLCAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGogPT0gZm91bmQubGVuZ3RoKVxuICAgICAgICBtYXJrcy5wdXNoKGNtLm1hcmtUZXh0KGZyb20sIHRvLCB7c3VibGltZUJvb2ttYXJrOiB0cnVlLCBjbGVhcldoZW5FbXB0eTogZmFsc2V9KSk7XG4gICAgfVxuICB9O1xuXG4gIGNtZHMuY2xlYXJCb29rbWFya3MgPSBmdW5jdGlvbihjbSkge1xuICAgIHZhciBtYXJrcyA9IGNtLnN0YXRlLnN1YmxpbWVCb29rbWFya3M7XG4gICAgaWYgKG1hcmtzKSBmb3IgKHZhciBpID0gMDsgaSA8IG1hcmtzLmxlbmd0aDsgaSsrKSBtYXJrc1tpXS5jbGVhcigpO1xuICAgIG1hcmtzLmxlbmd0aCA9IDA7XG4gIH07XG5cbiAgY21kcy5zZWxlY3RCb29rbWFya3MgPSBmdW5jdGlvbihjbSkge1xuICAgIHZhciBtYXJrcyA9IGNtLnN0YXRlLnN1YmxpbWVCb29rbWFya3MsIHJhbmdlcyA9IFtdO1xuICAgIGlmIChtYXJrcykgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXJrcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGZvdW5kID0gbWFya3NbaV0uZmluZCgpO1xuICAgICAgaWYgKCFmb3VuZClcbiAgICAgICAgbWFya3Muc3BsaWNlKGktLSwgMCk7XG4gICAgICBlbHNlXG4gICAgICAgIHJhbmdlcy5wdXNoKHthbmNob3I6IGZvdW5kLmZyb20sIGhlYWQ6IGZvdW5kLnRvfSk7XG4gICAgfVxuICAgIGlmIChyYW5nZXMubGVuZ3RoKVxuICAgICAgY20uc2V0U2VsZWN0aW9ucyhyYW5nZXMsIDApO1xuICB9O1xuXG4gIGZ1bmN0aW9uIG1vZGlmeVdvcmRPclNlbGVjdGlvbihjbSwgbW9kKSB7XG4gICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHJhbmdlcyA9IGNtLmxpc3RTZWxlY3Rpb25zKCksIGluZGljZXMgPSBbXSwgcmVwbGFjZW1lbnRzID0gW107XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcmFuZ2UgPSByYW5nZXNbaV07XG4gICAgICAgIGlmIChyYW5nZS5lbXB0eSgpKSB7IGluZGljZXMucHVzaChpKTsgcmVwbGFjZW1lbnRzLnB1c2goXCJcIik7IH1cbiAgICAgICAgZWxzZSByZXBsYWNlbWVudHMucHVzaChtb2QoY20uZ2V0UmFuZ2UocmFuZ2UuZnJvbSgpLCByYW5nZS50bygpKSkpO1xuICAgICAgfVxuICAgICAgY20ucmVwbGFjZVNlbGVjdGlvbnMocmVwbGFjZW1lbnRzLCBcImFyb3VuZFwiLCBcImNhc2VcIik7XG4gICAgICBmb3IgKHZhciBpID0gaW5kaWNlcy5sZW5ndGggLSAxLCBhdDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdmFyIHJhbmdlID0gcmFuZ2VzW2luZGljZXNbaV1dO1xuICAgICAgICBpZiAoYXQgJiYgQ29kZU1pcnJvci5jbXBQb3MocmFuZ2UuaGVhZCwgYXQpID4gMCkgY29udGludWU7XG4gICAgICAgIHZhciB3b3JkID0gd29yZEF0KGNtLCByYW5nZS5oZWFkKTtcbiAgICAgICAgYXQgPSB3b3JkLmZyb207XG4gICAgICAgIGNtLnJlcGxhY2VSYW5nZShtb2Qod29yZC53b3JkKSwgd29yZC5mcm9tLCB3b3JkLnRvKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNtZHMuc21hcnRCYWNrc3BhY2UgPSBmdW5jdGlvbihjbSkge1xuICAgIGlmIChjbS5zb21ldGhpbmdTZWxlY3RlZCgpKSByZXR1cm4gQ29kZU1pcnJvci5QYXNzO1xuXG4gICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGN1cnNvcnMgPSBjbS5saXN0U2VsZWN0aW9ucygpO1xuICAgICAgdmFyIGluZGVudFVuaXQgPSBjbS5nZXRPcHRpb24oXCJpbmRlbnRVbml0XCIpO1xuXG4gICAgICBmb3IgKHZhciBpID0gY3Vyc29ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB2YXIgY3Vyc29yID0gY3Vyc29yc1tpXS5oZWFkO1xuICAgICAgICB2YXIgdG9TdGFydE9mTGluZSA9IGNtLmdldFJhbmdlKHtsaW5lOiBjdXJzb3IubGluZSwgY2g6IDB9LCBjdXJzb3IpO1xuICAgICAgICB2YXIgY29sdW1uID0gQ29kZU1pcnJvci5jb3VudENvbHVtbih0b1N0YXJ0T2ZMaW5lLCBudWxsLCBjbS5nZXRPcHRpb24oXCJ0YWJTaXplXCIpKTtcblxuICAgICAgICAvLyBEZWxldGUgYnkgb25lIGNoYXJhY3RlciBieSBkZWZhdWx0XG4gICAgICAgIHZhciBkZWxldGVQb3MgPSBjbS5maW5kUG9zSChjdXJzb3IsIC0xLCBcImNoYXJcIiwgZmFsc2UpO1xuXG4gICAgICAgIGlmICh0b1N0YXJ0T2ZMaW5lICYmICEvXFxTLy50ZXN0KHRvU3RhcnRPZkxpbmUpICYmIGNvbHVtbiAlIGluZGVudFVuaXQgPT0gMCkge1xuICAgICAgICAgIHZhciBwcmV2SW5kZW50ID0gbmV3IFBvcyhjdXJzb3IubGluZSxcbiAgICAgICAgICAgIENvZGVNaXJyb3IuZmluZENvbHVtbih0b1N0YXJ0T2ZMaW5lLCBjb2x1bW4gLSBpbmRlbnRVbml0LCBpbmRlbnRVbml0KSk7XG5cbiAgICAgICAgICAvLyBTbWFydCBkZWxldGUgb25seSBpZiB3ZSBmb3VuZCBhIHZhbGlkIHByZXZJbmRlbnQgbG9jYXRpb25cbiAgICAgICAgICBpZiAocHJldkluZGVudC5jaCAhPSBjdXJzb3IuY2gpIGRlbGV0ZVBvcyA9IHByZXZJbmRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBjbS5yZXBsYWNlUmFuZ2UoXCJcIiwgZGVsZXRlUG9zLCBjdXJzb3IsIFwiK2RlbGV0ZVwiKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBjbWRzLmRlbExpbmVSaWdodCA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHJhbmdlcyA9IGNtLmxpc3RTZWxlY3Rpb25zKCk7XG4gICAgICBmb3IgKHZhciBpID0gcmFuZ2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKVxuICAgICAgICBjbS5yZXBsYWNlUmFuZ2UoXCJcIiwgcmFuZ2VzW2ldLmFuY2hvciwgUG9zKHJhbmdlc1tpXS50bygpLmxpbmUpLCBcIitkZWxldGVcIik7XG4gICAgICBjbS5zY3JvbGxJbnRvVmlldygpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNtZHMudXBjYXNlQXRDdXJzb3IgPSBmdW5jdGlvbihjbSkge1xuICAgIG1vZGlmeVdvcmRPclNlbGVjdGlvbihjbSwgZnVuY3Rpb24oc3RyKSB7IHJldHVybiBzdHIudG9VcHBlckNhc2UoKTsgfSk7XG4gIH07XG4gIGNtZHMuZG93bmNhc2VBdEN1cnNvciA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgbW9kaWZ5V29yZE9yU2VsZWN0aW9uKGNtLCBmdW5jdGlvbihzdHIpIHsgcmV0dXJuIHN0ci50b0xvd2VyQ2FzZSgpOyB9KTtcbiAgfTtcblxuICBjbWRzLnNldFN1YmxpbWVNYXJrID0gZnVuY3Rpb24oY20pIHtcbiAgICBpZiAoY20uc3RhdGUuc3VibGltZU1hcmspIGNtLnN0YXRlLnN1YmxpbWVNYXJrLmNsZWFyKCk7XG4gICAgY20uc3RhdGUuc3VibGltZU1hcmsgPSBjbS5zZXRCb29rbWFyayhjbS5nZXRDdXJzb3IoKSk7XG4gIH07XG4gIGNtZHMuc2VsZWN0VG9TdWJsaW1lTWFyayA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgdmFyIGZvdW5kID0gY20uc3RhdGUuc3VibGltZU1hcmsgJiYgY20uc3RhdGUuc3VibGltZU1hcmsuZmluZCgpO1xuICAgIGlmIChmb3VuZCkgY20uc2V0U2VsZWN0aW9uKGNtLmdldEN1cnNvcigpLCBmb3VuZCk7XG4gIH07XG4gIGNtZHMuZGVsZXRlVG9TdWJsaW1lTWFyayA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgdmFyIGZvdW5kID0gY20uc3RhdGUuc3VibGltZU1hcmsgJiYgY20uc3RhdGUuc3VibGltZU1hcmsuZmluZCgpO1xuICAgIGlmIChmb3VuZCkge1xuICAgICAgdmFyIGZyb20gPSBjbS5nZXRDdXJzb3IoKSwgdG8gPSBmb3VuZDtcbiAgICAgIGlmIChDb2RlTWlycm9yLmNtcFBvcyhmcm9tLCB0bykgPiAwKSB7IHZhciB0bXAgPSB0bzsgdG8gPSBmcm9tOyBmcm9tID0gdG1wOyB9XG4gICAgICBjbS5zdGF0ZS5zdWJsaW1lS2lsbGVkID0gY20uZ2V0UmFuZ2UoZnJvbSwgdG8pO1xuICAgICAgY20ucmVwbGFjZVJhbmdlKFwiXCIsIGZyb20sIHRvKTtcbiAgICB9XG4gIH07XG4gIGNtZHMuc3dhcFdpdGhTdWJsaW1lTWFyayA9IGZ1bmN0aW9uKGNtKSB7XG4gICAgdmFyIGZvdW5kID0gY20uc3RhdGUuc3VibGltZU1hcmsgJiYgY20uc3RhdGUuc3VibGltZU1hcmsuZmluZCgpO1xuICAgIGlmIChmb3VuZCkge1xuICAgICAgY20uc3RhdGUuc3VibGltZU1hcmsuY2xlYXIoKTtcbiAgICAgIGNtLnN0YXRlLnN1YmxpbWVNYXJrID0gY20uc2V0Qm9va21hcmsoY20uZ2V0Q3Vyc29yKCkpO1xuICAgICAgY20uc2V0Q3Vyc29yKGZvdW5kKTtcbiAgICB9XG4gIH07XG4gIGNtZHMuc3VibGltZVlhbmsgPSBmdW5jdGlvbihjbSkge1xuICAgIGlmIChjbS5zdGF0ZS5zdWJsaW1lS2lsbGVkICE9IG51bGwpXG4gICAgICBjbS5yZXBsYWNlU2VsZWN0aW9uKGNtLnN0YXRlLnN1YmxpbWVLaWxsZWQsIG51bGwsIFwicGFzdGVcIik7XG4gIH07XG5cbiAgY21kcy5zaG93SW5DZW50ZXIgPSBmdW5jdGlvbihjbSkge1xuICAgIHZhciBwb3MgPSBjbS5jdXJzb3JDb29yZHMobnVsbCwgXCJsb2NhbFwiKTtcbiAgICBjbS5zY3JvbGxUbyhudWxsLCAocG9zLnRvcCArIHBvcy5ib3R0b20pIC8gMiAtIGNtLmdldFNjcm9sbEluZm8oKS5jbGllbnRIZWlnaHQgLyAyKTtcbiAgfTtcblxuICBmdW5jdGlvbiBnZXRUYXJnZXQoY20pIHtcbiAgICB2YXIgZnJvbSA9IGNtLmdldEN1cnNvcihcImZyb21cIiksIHRvID0gY20uZ2V0Q3Vyc29yKFwidG9cIik7XG4gICAgaWYgKENvZGVNaXJyb3IuY21wUG9zKGZyb20sIHRvKSA9PSAwKSB7XG4gICAgICB2YXIgd29yZCA9IHdvcmRBdChjbSwgZnJvbSk7XG4gICAgICBpZiAoIXdvcmQud29yZCkgcmV0dXJuO1xuICAgICAgZnJvbSA9IHdvcmQuZnJvbTtcbiAgICAgIHRvID0gd29yZC50bztcbiAgICB9XG4gICAgcmV0dXJuIHtmcm9tOiBmcm9tLCB0bzogdG8sIHF1ZXJ5OiBjbS5nZXRSYW5nZShmcm9tLCB0byksIHdvcmQ6IHdvcmR9O1xuICB9XG5cbiAgZnVuY3Rpb24gZmluZEFuZEdvVG8oY20sIGZvcndhcmQpIHtcbiAgICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGNtKTtcbiAgICBpZiAoIXRhcmdldCkgcmV0dXJuO1xuICAgIHZhciBxdWVyeSA9IHRhcmdldC5xdWVyeTtcbiAgICB2YXIgY3VyID0gY20uZ2V0U2VhcmNoQ3Vyc29yKHF1ZXJ5LCBmb3J3YXJkID8gdGFyZ2V0LnRvIDogdGFyZ2V0LmZyb20pO1xuXG4gICAgaWYgKGZvcndhcmQgPyBjdXIuZmluZE5leHQoKSA6IGN1ci5maW5kUHJldmlvdXMoKSkge1xuICAgICAgY20uc2V0U2VsZWN0aW9uKGN1ci5mcm9tKCksIGN1ci50bygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyID0gY20uZ2V0U2VhcmNoQ3Vyc29yKHF1ZXJ5LCBmb3J3YXJkID8gUG9zKGNtLmZpcnN0TGluZSgpLCAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY20uY2xpcFBvcyhQb3MoY20ubGFzdExpbmUoKSkpKTtcbiAgICAgIGlmIChmb3J3YXJkID8gY3VyLmZpbmROZXh0KCkgOiBjdXIuZmluZFByZXZpb3VzKCkpXG4gICAgICAgIGNtLnNldFNlbGVjdGlvbihjdXIuZnJvbSgpLCBjdXIudG8oKSk7XG4gICAgICBlbHNlIGlmICh0YXJnZXQud29yZClcbiAgICAgICAgY20uc2V0U2VsZWN0aW9uKHRhcmdldC5mcm9tLCB0YXJnZXQudG8pO1xuICAgIH1cbiAgfTtcbiAgY21kcy5maW5kVW5kZXIgPSBmdW5jdGlvbihjbSkgeyBmaW5kQW5kR29UbyhjbSwgdHJ1ZSk7IH07XG4gIGNtZHMuZmluZFVuZGVyUHJldmlvdXMgPSBmdW5jdGlvbihjbSkgeyBmaW5kQW5kR29UbyhjbSxmYWxzZSk7IH07XG4gIGNtZHMuZmluZEFsbFVuZGVyID0gZnVuY3Rpb24oY20pIHtcbiAgICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGNtKTtcbiAgICBpZiAoIXRhcmdldCkgcmV0dXJuO1xuICAgIHZhciBjdXIgPSBjbS5nZXRTZWFyY2hDdXJzb3IodGFyZ2V0LnF1ZXJ5KTtcbiAgICB2YXIgbWF0Y2hlcyA9IFtdO1xuICAgIHZhciBwcmltYXJ5SW5kZXggPSAtMTtcbiAgICB3aGlsZSAoY3VyLmZpbmROZXh0KCkpIHtcbiAgICAgIG1hdGNoZXMucHVzaCh7YW5jaG9yOiBjdXIuZnJvbSgpLCBoZWFkOiBjdXIudG8oKX0pO1xuICAgICAgaWYgKGN1ci5mcm9tKCkubGluZSA8PSB0YXJnZXQuZnJvbS5saW5lICYmIGN1ci5mcm9tKCkuY2ggPD0gdGFyZ2V0LmZyb20uY2gpXG4gICAgICAgIHByaW1hcnlJbmRleCsrO1xuICAgIH1cbiAgICBjbS5zZXRTZWxlY3Rpb25zKG1hdGNoZXMsIHByaW1hcnlJbmRleCk7XG4gIH07XG5cblxuICB2YXIga2V5TWFwID0gQ29kZU1pcnJvci5rZXlNYXA7XG4gIGtleU1hcC5tYWNTdWJsaW1lID0ge1xuICAgIFwiQ21kLUxlZnRcIjogXCJnb0xpbmVTdGFydFNtYXJ0XCIsXG4gICAgXCJTaGlmdC1UYWJcIjogXCJpbmRlbnRMZXNzXCIsXG4gICAgXCJTaGlmdC1DdHJsLUtcIjogXCJkZWxldGVMaW5lXCIsXG4gICAgXCJBbHQtUVwiOiBcIndyYXBMaW5lc1wiLFxuICAgIFwiQ3RybC1MZWZ0XCI6IFwiZ29TdWJ3b3JkTGVmdFwiLFxuICAgIFwiQ3RybC1SaWdodFwiOiBcImdvU3Vid29yZFJpZ2h0XCIsXG4gICAgXCJDdHJsLUFsdC1VcFwiOiBcInNjcm9sbExpbmVVcFwiLFxuICAgIFwiQ3RybC1BbHQtRG93blwiOiBcInNjcm9sbExpbmVEb3duXCIsXG4gICAgXCJDbWQtTFwiOiBcInNlbGVjdExpbmVcIixcbiAgICBcIlNoaWZ0LUNtZC1MXCI6IFwic3BsaXRTZWxlY3Rpb25CeUxpbmVcIixcbiAgICBcIkVzY1wiOiBcInNpbmdsZVNlbGVjdGlvblRvcFwiLFxuICAgIFwiQ21kLUVudGVyXCI6IFwiaW5zZXJ0TGluZUFmdGVyXCIsXG4gICAgXCJTaGlmdC1DbWQtRW50ZXJcIjogXCJpbnNlcnRMaW5lQmVmb3JlXCIsXG4gICAgXCJDbWQtRFwiOiBcInNlbGVjdE5leHRPY2N1cnJlbmNlXCIsXG4gICAgXCJTaGlmdC1DbWQtU3BhY2VcIjogXCJzZWxlY3RTY29wZVwiLFxuICAgIFwiU2hpZnQtQ21kLU1cIjogXCJzZWxlY3RCZXR3ZWVuQnJhY2tldHNcIixcbiAgICBcIkNtZC1NXCI6IFwiZ29Ub0JyYWNrZXRcIixcbiAgICBcIkNtZC1DdHJsLVVwXCI6IFwic3dhcExpbmVVcFwiLFxuICAgIFwiQ21kLUN0cmwtRG93blwiOiBcInN3YXBMaW5lRG93blwiLFxuICAgIFwiQ21kLS9cIjogXCJ0b2dnbGVDb21tZW50SW5kZW50ZWRcIixcbiAgICBcIkNtZC1KXCI6IFwiam9pbkxpbmVzXCIsXG4gICAgXCJTaGlmdC1DbWQtRFwiOiBcImR1cGxpY2F0ZUxpbmVcIixcbiAgICBcIkY1XCI6IFwic29ydExpbmVzXCIsXG4gICAgXCJDbWQtRjVcIjogXCJzb3J0TGluZXNJbnNlbnNpdGl2ZVwiLFxuICAgIFwiRjJcIjogXCJuZXh0Qm9va21hcmtcIixcbiAgICBcIlNoaWZ0LUYyXCI6IFwicHJldkJvb2ttYXJrXCIsXG4gICAgXCJDbWQtRjJcIjogXCJ0b2dnbGVCb29rbWFya1wiLFxuICAgIFwiU2hpZnQtQ21kLUYyXCI6IFwiY2xlYXJCb29rbWFya3NcIixcbiAgICBcIkFsdC1GMlwiOiBcInNlbGVjdEJvb2ttYXJrc1wiLFxuICAgIFwiQmFja3NwYWNlXCI6IFwic21hcnRCYWNrc3BhY2VcIixcbiAgICBcIkNtZC1LIENtZC1EXCI6IFwic2tpcEFuZFNlbGVjdE5leHRPY2N1cnJlbmNlXCIsXG4gICAgXCJDbWQtSyBDbWQtS1wiOiBcImRlbExpbmVSaWdodFwiLFxuICAgIFwiQ21kLUsgQ21kLVVcIjogXCJ1cGNhc2VBdEN1cnNvclwiLFxuICAgIFwiQ21kLUsgQ21kLUxcIjogXCJkb3duY2FzZUF0Q3Vyc29yXCIsXG4gICAgXCJDbWQtSyBDbWQtU3BhY2VcIjogXCJzZXRTdWJsaW1lTWFya1wiLFxuICAgIFwiQ21kLUsgQ21kLUFcIjogXCJzZWxlY3RUb1N1YmxpbWVNYXJrXCIsXG4gICAgXCJDbWQtSyBDbWQtV1wiOiBcImRlbGV0ZVRvU3VibGltZU1hcmtcIixcbiAgICBcIkNtZC1LIENtZC1YXCI6IFwic3dhcFdpdGhTdWJsaW1lTWFya1wiLFxuICAgIFwiQ21kLUsgQ21kLVlcIjogXCJzdWJsaW1lWWFua1wiLFxuICAgIFwiQ21kLUsgQ21kLUNcIjogXCJzaG93SW5DZW50ZXJcIixcbiAgICBcIkNtZC1LIENtZC1HXCI6IFwiY2xlYXJCb29rbWFya3NcIixcbiAgICBcIkNtZC1LIENtZC1CYWNrc3BhY2VcIjogXCJkZWxMaW5lTGVmdFwiLFxuICAgIFwiQ21kLUsgQ21kLTFcIjogXCJmb2xkQWxsXCIsXG4gICAgXCJDbWQtSyBDbWQtMFwiOiBcInVuZm9sZEFsbFwiLFxuICAgIFwiQ21kLUsgQ21kLUpcIjogXCJ1bmZvbGRBbGxcIixcbiAgICBcIkN0cmwtU2hpZnQtVXBcIjogXCJhZGRDdXJzb3JUb1ByZXZMaW5lXCIsXG4gICAgXCJDdHJsLVNoaWZ0LURvd25cIjogXCJhZGRDdXJzb3JUb05leHRMaW5lXCIsXG4gICAgXCJDbWQtRjNcIjogXCJmaW5kVW5kZXJcIixcbiAgICBcIlNoaWZ0LUNtZC1GM1wiOiBcImZpbmRVbmRlclByZXZpb3VzXCIsXG4gICAgXCJBbHQtRjNcIjogXCJmaW5kQWxsVW5kZXJcIixcbiAgICBcIlNoaWZ0LUNtZC1bXCI6IFwiZm9sZFwiLFxuICAgIFwiU2hpZnQtQ21kLV1cIjogXCJ1bmZvbGRcIixcbiAgICBcIkNtZC1JXCI6IFwiZmluZEluY3JlbWVudGFsXCIsXG4gICAgXCJTaGlmdC1DbWQtSVwiOiBcImZpbmRJbmNyZW1lbnRhbFJldmVyc2VcIixcbiAgICBcIkNtZC1IXCI6IFwicmVwbGFjZVwiLFxuICAgIFwiRjNcIjogXCJmaW5kTmV4dFwiLFxuICAgIFwiU2hpZnQtRjNcIjogXCJmaW5kUHJldlwiLFxuICAgIFwiZmFsbHRocm91Z2hcIjogXCJtYWNEZWZhdWx0XCJcbiAgfTtcbiAgQ29kZU1pcnJvci5ub3JtYWxpemVLZXlNYXAoa2V5TWFwLm1hY1N1YmxpbWUpO1xuXG4gIGtleU1hcC5wY1N1YmxpbWUgPSB7XG4gICAgXCJTaGlmdC1UYWJcIjogXCJpbmRlbnRMZXNzXCIsXG4gICAgXCJTaGlmdC1DdHJsLUtcIjogXCJkZWxldGVMaW5lXCIsXG4gICAgXCJBbHQtUVwiOiBcIndyYXBMaW5lc1wiLFxuICAgIFwiQ3RybC1UXCI6IFwidHJhbnNwb3NlQ2hhcnNcIixcbiAgICBcIkFsdC1MZWZ0XCI6IFwiZ29TdWJ3b3JkTGVmdFwiLFxuICAgIFwiQWx0LVJpZ2h0XCI6IFwiZ29TdWJ3b3JkUmlnaHRcIixcbiAgICBcIkN0cmwtVXBcIjogXCJzY3JvbGxMaW5lVXBcIixcbiAgICBcIkN0cmwtRG93blwiOiBcInNjcm9sbExpbmVEb3duXCIsXG4gICAgXCJDdHJsLUxcIjogXCJzZWxlY3RMaW5lXCIsXG4gICAgXCJTaGlmdC1DdHJsLUxcIjogXCJzcGxpdFNlbGVjdGlvbkJ5TGluZVwiLFxuICAgIFwiRXNjXCI6IFwic2luZ2xlU2VsZWN0aW9uVG9wXCIsXG4gICAgXCJDdHJsLUVudGVyXCI6IFwiaW5zZXJ0TGluZUFmdGVyXCIsXG4gICAgXCJTaGlmdC1DdHJsLUVudGVyXCI6IFwiaW5zZXJ0TGluZUJlZm9yZVwiLFxuICAgIFwiQ3RybC1EXCI6IFwic2VsZWN0TmV4dE9jY3VycmVuY2VcIixcbiAgICBcIlNoaWZ0LUN0cmwtU3BhY2VcIjogXCJzZWxlY3RTY29wZVwiLFxuICAgIFwiU2hpZnQtQ3RybC1NXCI6IFwic2VsZWN0QmV0d2VlbkJyYWNrZXRzXCIsXG4gICAgXCJDdHJsLU1cIjogXCJnb1RvQnJhY2tldFwiLFxuICAgIFwiU2hpZnQtQ3RybC1VcFwiOiBcInN3YXBMaW5lVXBcIixcbiAgICBcIlNoaWZ0LUN0cmwtRG93blwiOiBcInN3YXBMaW5lRG93blwiLFxuICAgIFwiQ3RybC0vXCI6IFwidG9nZ2xlQ29tbWVudEluZGVudGVkXCIsXG4gICAgXCJDdHJsLUpcIjogXCJqb2luTGluZXNcIixcbiAgICBcIlNoaWZ0LUN0cmwtRFwiOiBcImR1cGxpY2F0ZUxpbmVcIixcbiAgICBcIkY5XCI6IFwic29ydExpbmVzXCIsXG4gICAgXCJDdHJsLUY5XCI6IFwic29ydExpbmVzSW5zZW5zaXRpdmVcIixcbiAgICBcIkYyXCI6IFwibmV4dEJvb2ttYXJrXCIsXG4gICAgXCJTaGlmdC1GMlwiOiBcInByZXZCb29rbWFya1wiLFxuICAgIFwiQ3RybC1GMlwiOiBcInRvZ2dsZUJvb2ttYXJrXCIsXG4gICAgXCJTaGlmdC1DdHJsLUYyXCI6IFwiY2xlYXJCb29rbWFya3NcIixcbiAgICBcIkFsdC1GMlwiOiBcInNlbGVjdEJvb2ttYXJrc1wiLFxuICAgIFwiQmFja3NwYWNlXCI6IFwic21hcnRCYWNrc3BhY2VcIixcbiAgICBcIkN0cmwtSyBDdHJsLURcIjogXCJza2lwQW5kU2VsZWN0TmV4dE9jY3VycmVuY2VcIixcbiAgICBcIkN0cmwtSyBDdHJsLUtcIjogXCJkZWxMaW5lUmlnaHRcIixcbiAgICBcIkN0cmwtSyBDdHJsLVVcIjogXCJ1cGNhc2VBdEN1cnNvclwiLFxuICAgIFwiQ3RybC1LIEN0cmwtTFwiOiBcImRvd25jYXNlQXRDdXJzb3JcIixcbiAgICBcIkN0cmwtSyBDdHJsLVNwYWNlXCI6IFwic2V0U3VibGltZU1hcmtcIixcbiAgICBcIkN0cmwtSyBDdHJsLUFcIjogXCJzZWxlY3RUb1N1YmxpbWVNYXJrXCIsXG4gICAgXCJDdHJsLUsgQ3RybC1XXCI6IFwiZGVsZXRlVG9TdWJsaW1lTWFya1wiLFxuICAgIFwiQ3RybC1LIEN0cmwtWFwiOiBcInN3YXBXaXRoU3VibGltZU1hcmtcIixcbiAgICBcIkN0cmwtSyBDdHJsLVlcIjogXCJzdWJsaW1lWWFua1wiLFxuICAgIFwiQ3RybC1LIEN0cmwtQ1wiOiBcInNob3dJbkNlbnRlclwiLFxuICAgIFwiQ3RybC1LIEN0cmwtR1wiOiBcImNsZWFyQm9va21hcmtzXCIsXG4gICAgXCJDdHJsLUsgQ3RybC1CYWNrc3BhY2VcIjogXCJkZWxMaW5lTGVmdFwiLFxuICAgIFwiQ3RybC1LIEN0cmwtMVwiOiBcImZvbGRBbGxcIixcbiAgICBcIkN0cmwtSyBDdHJsLTBcIjogXCJ1bmZvbGRBbGxcIixcbiAgICBcIkN0cmwtSyBDdHJsLUpcIjogXCJ1bmZvbGRBbGxcIixcbiAgICBcIkN0cmwtQWx0LVVwXCI6IFwiYWRkQ3Vyc29yVG9QcmV2TGluZVwiLFxuICAgIFwiQ3RybC1BbHQtRG93blwiOiBcImFkZEN1cnNvclRvTmV4dExpbmVcIixcbiAgICBcIkN0cmwtRjNcIjogXCJmaW5kVW5kZXJcIixcbiAgICBcIlNoaWZ0LUN0cmwtRjNcIjogXCJmaW5kVW5kZXJQcmV2aW91c1wiLFxuICAgIFwiQWx0LUYzXCI6IFwiZmluZEFsbFVuZGVyXCIsXG4gICAgXCJTaGlmdC1DdHJsLVtcIjogXCJmb2xkXCIsXG4gICAgXCJTaGlmdC1DdHJsLV1cIjogXCJ1bmZvbGRcIixcbiAgICBcIkN0cmwtSVwiOiBcImZpbmRJbmNyZW1lbnRhbFwiLFxuICAgIFwiU2hpZnQtQ3RybC1JXCI6IFwiZmluZEluY3JlbWVudGFsUmV2ZXJzZVwiLFxuICAgIFwiQ3RybC1IXCI6IFwicmVwbGFjZVwiLFxuICAgIFwiRjNcIjogXCJmaW5kTmV4dFwiLFxuICAgIFwiU2hpZnQtRjNcIjogXCJmaW5kUHJldlwiLFxuICAgIFwiZmFsbHRocm91Z2hcIjogXCJwY0RlZmF1bHRcIlxuICB9O1xuICBDb2RlTWlycm9yLm5vcm1hbGl6ZUtleU1hcChrZXlNYXAucGNTdWJsaW1lKTtcblxuICB2YXIgbWFjID0ga2V5TWFwLmRlZmF1bHQgPT0ga2V5TWFwLm1hY0RlZmF1bHQ7XG4gIGtleU1hcC5zdWJsaW1lID0gbWFjID8ga2V5TWFwLm1hY1N1YmxpbWUgOiBrZXlNYXAucGNTdWJsaW1lO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQSx1V0FJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFEQTtBQTREQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUExREE7QUE0REE7QUFFQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/codemirror/keymap/sublime.js\n");
242
243/***/ }),
244
245/***/ "../../../node_modules/codemirror/lib/codemirror.js":
246/*!*************************************************************************************!*\
247 !*** /home/runner/work/graphiql/graphiql/node_modules/codemirror/lib/codemirror.js ***!
248 \*************************************************************************************/
249/*! no static exports found */
250/***/ (function(module, exports, __webpack_require__) {
251
252eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n // CodeMirror, copyright (c) by Marijn Haverbeke and others\n // Distributed under an MIT license: https://codemirror.net/LICENSE\n // This is CodeMirror (https://codemirror.net), a code editor\n // implemented in JavaScript on top of the browser's DOM.\n //\n // You can find some technical background for some of the code below\n // at http://marijnhaverbeke.nl/blog/#cm-internals .\n (function (global, factory) {\n true ? module.exports = factory() : undefined;\n })(void 0, function () {\n 'use strict'; // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n var ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\\/\\w+/.test(userAgent);\n var android = /Android/.test(userAgent); // This is woefully incomplete. Suggestions for alternative methods welcome.\n\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n\n if (presto_version) {\n presto_version = Number(presto_version[1]);\n }\n\n if (presto_version && presto_version >= 15) {\n presto = false;\n webkit = true;\n } // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n\n\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || ie && ie_version >= 9;\n\n function classTest(cls) {\n return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\");\n }\n\n var rmClass = function (node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count) {\n e.removeChild(e.firstChild);\n }\n\n return e;\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e);\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n\n if (className) {\n e.className = className;\n }\n\n if (style) {\n e.style.cssText = style;\n }\n\n if (typeof content == \"string\") {\n e.appendChild(document.createTextNode(content));\n } else if (content) {\n for (var i = 0; i < content.length; ++i) {\n e.appendChild(content[i]);\n }\n }\n\n return e;\n } // wrapper for elt, which removes the elt from the accessibility tree\n\n\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e;\n }\n\n var range;\n\n if (document.createRange) {\n range = function (node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r;\n };\n } else {\n range = function (node, start, end) {\n var r = document.body.createTextRange();\n\n try {\n r.moveToElementText(node.parentNode);\n } catch (e) {\n return r;\n }\n\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r;\n };\n }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n {\n child = child.parentNode;\n }\n\n if (parent.contains) {\n return parent.contains(child);\n }\n\n do {\n if (child.nodeType == 11) {\n child = child.host;\n }\n\n if (child == parent) {\n return true;\n }\n } while (child = child.parentNode);\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n\n try {\n activeElement = document.activeElement;\n } catch (e) {\n activeElement = document.body || null;\n }\n\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n\n return activeElement;\n }\n\n function addClass(node, cls) {\n var current = node.className;\n\n if (!classTest(cls).test(current)) {\n node.className += (current ? \" \" : \"\") + cls;\n }\n }\n\n function joinClasses(a, b) {\n var as = a.split(\" \");\n\n for (var i = 0; i < as.length; i++) {\n if (as[i] && !classTest(as[i]).test(b)) {\n b += \" \" + as[i];\n }\n }\n\n return b;\n }\n\n var selectInput = function (node) {\n node.select();\n };\n\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n {\n selectInput = function (node) {\n node.selectionStart = 0;\n node.selectionEnd = node.value.length;\n };\n } else if (ie) // Suppress mysterious IE10 errors\n {\n selectInput = function (node) {\n try {\n node.select();\n } catch (_e) {}\n };\n }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function () {\n return f.apply(null, args);\n };\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) {\n target = {};\n }\n\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) {\n target[prop] = obj[prop];\n }\n }\n\n return target;\n } // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n\n\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n\n if (end == -1) {\n end = string.length;\n }\n }\n\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n\n if (nextTab < 0 || nextTab >= end) {\n return n + (end - i);\n }\n\n n += nextTab - i;\n n += tabSize - n % tabSize;\n i = nextTab + 1;\n }\n }\n\n var Delayed = function () {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n\n if (self.time <= +new Date()) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date());\n }\n };\n\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date() + ms;\n\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i) {\n if (array[i] == elt) {\n return i;\n }\n }\n\n return -1;\n } // Number of pixels added to scroller and sizer to hide scrollbar\n\n\n var scrollerGap = 50; // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n\n var Pass = {\n toString: function () {\n return \"CodeMirror.Pass\";\n }\n }; // Reused option objects for setSelection & friends\n\n var sel_dontScroll = {\n scroll: false\n },\n sel_mouse = {\n origin: \"*mouse\"\n },\n sel_move = {\n origin: \"+move\"\n }; // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n\n if (nextTab == -1) {\n nextTab = string.length;\n }\n\n var skipped = nextTab - pos;\n\n if (nextTab == string.length || col + skipped >= goal) {\n return pos + Math.min(skipped, goal - col);\n }\n\n col += nextTab - pos;\n col += tabSize - col % tabSize;\n pos = nextTab + 1;\n\n if (col >= goal) {\n return pos;\n }\n }\n }\n\n var spaceStrs = [\"\"];\n\n function spaceStr(n) {\n while (spaceStrs.length <= n) {\n spaceStrs.push(lst(spaceStrs) + \" \");\n }\n\n return spaceStrs[n];\n }\n\n function lst(arr) {\n return arr[arr.length - 1];\n }\n\n function map(array, f) {\n var out = [];\n\n for (var i = 0; i < array.length; i++) {\n out[i] = f(array[i], i);\n }\n\n return out;\n }\n\n function insertSorted(array, value, score) {\n var pos = 0,\n priority = score(value);\n\n while (pos < array.length && score(array[pos]) <= priority) {\n pos++;\n }\n\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n\n if (props) {\n copyObj(props, inst);\n }\n\n return inst;\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch));\n }\n\n function isWordChar(ch, helper) {\n if (!helper) {\n return isWordCharBasic(ch);\n }\n\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) {\n return true;\n }\n\n return helper.test(ch);\n }\n\n function isEmpty(obj) {\n for (var n in obj) {\n if (obj.hasOwnProperty(n) && obj[n]) {\n return false;\n }\n }\n\n return true;\n } // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n\n\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n\n function isExtendingChar(ch) {\n return ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\n } // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n\n\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) {\n pos += dir;\n }\n\n return pos;\n } // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n\n\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n\n for (;;) {\n if (from == to) {\n return from;\n }\n\n var midF = (from + to) / 2,\n mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n\n if (mid == from) {\n return pred(mid) ? from : to;\n }\n\n if (pred(mid)) {\n to = mid;\n } else {\n from = mid + dir;\n }\n }\n } // BIDI HELPERS\n\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) {\n return f(from, to, \"ltr\", 0);\n }\n\n var found = false;\n\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n\n if (!found) {\n f(from, to, \"ltr\");\n }\n }\n\n var bidiOther = null;\n\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n\n if (cur.from < ch && cur.to > ch) {\n return i;\n }\n\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") {\n found = i;\n } else {\n bidiOther = i;\n }\n }\n\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") {\n found = i;\n } else {\n bidiOther = i;\n }\n }\n }\n\n return found != null ? found : bidiOther;\n } // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n\n\n var bidiOrdering = function () {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\"; // Character types for codepoints 0x600 to 0x6f9\n\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n\n function charType(code) {\n if (code <= 0xf7) {\n return lowTypes.charAt(code);\n } else if (0x590 <= code && code <= 0x5f4) {\n return \"R\";\n } else if (0x600 <= code && code <= 0x6f9) {\n return arabicTypes.charAt(code - 0x600);\n } else if (0x6ee <= code && code <= 0x8ac) {\n return \"r\";\n } else if (0x2000 <= code && code <= 0x200b) {\n return \"w\";\n } else if (code == 0x200c) {\n return \"b\";\n } else {\n return \"L\";\n }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/,\n isStrong = /[LRr]/,\n countsAsLeft = /[Lb1n]/,\n countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from;\n this.to = to;\n }\n\n return function (str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) {\n return false;\n }\n\n var len = str.length,\n types = [];\n\n for (var i = 0; i < len; ++i) {\n types.push(charType(str.charCodeAt(i)));\n } // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n\n\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n\n if (type == \"m\") {\n types[i$1] = prev;\n } else {\n prev = type;\n }\n } // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n\n\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n\n if (type$1 == \"1\" && cur == \"r\") {\n types[i$2] = \"n\";\n } else if (isStrong.test(type$1)) {\n cur = type$1;\n\n if (type$1 == \"r\") {\n types[i$2] = \"R\";\n }\n }\n } // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n\n\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3 + 1] == \"1\") {\n types[i$3] = \"1\";\n } else if (type$2 == \",\" && prev$1 == types[i$3 + 1] && (prev$1 == \"1\" || prev$1 == \"n\")) {\n types[i$3] = prev$1;\n }\n\n prev$1 = type$2;\n } // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n\n\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n\n if (type$3 == \",\") {\n types[i$4] = \"N\";\n } else if (type$3 == \"%\") {\n var end = void 0;\n\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n\n var replace = i$4 && types[i$4 - 1] == \"!\" || end < len && types[end] == \"1\" ? \"1\" : \"N\";\n\n for (var j = i$4; j < end; ++j) {\n types[j] = replace;\n }\n\n i$4 = end - 1;\n }\n } // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n\n\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n\n if (cur$1 == \"L\" && type$4 == \"1\") {\n types[i$5] = \"L\";\n } else if (isStrong.test(type$4)) {\n cur$1 = type$4;\n }\n } // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n\n\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = void 0;\n\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n\n var before = (i$6 ? types[i$6 - 1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? before ? \"L\" : \"R\" : outerType;\n\n for (var j$1 = i$6; j$1 < end$1; ++j$1) {\n types[j$1] = replace$1;\n }\n\n i$6 = end$1 - 1;\n }\n } // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n\n\n var order = [],\n m;\n\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7,\n at = order.length,\n isRTL = direction == \"rtl\" ? 1 : 0;\n\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) {\n order.splice(at, 0, new BidiSpan(1, pos, j$2));\n at += isRTL;\n }\n\n var nstart = j$2;\n\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else {\n ++j$2;\n }\n }\n\n if (pos < i$7) {\n order.splice(at, 0, new BidiSpan(1, pos, i$7));\n }\n }\n }\n\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order;\n };\n }(); // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n\n\n function getOrder(line, direction) {\n var order = line.order;\n\n if (order == null) {\n order = line.order = bidiOrdering(line.text, direction);\n }\n\n return order;\n } // EVENT HANDLING\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n\n var noHandlers = [];\n\n var on = function (emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers;\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers,\n arr = map && map[type];\n\n if (arr) {\n var index = indexOf(arr, f);\n\n if (index > -1) {\n map[type] = arr.slice(0, index).concat(arr.slice(index + 1));\n }\n }\n }\n }\n\n function signal(emitter, type\n /*, values...*/\n ) {\n var handlers = getHandlers(emitter, type);\n\n if (!handlers.length) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments, 2);\n\n for (var i = 0; i < handlers.length; ++i) {\n handlers[i].apply(null, args);\n }\n } // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n\n\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\") {\n e = {\n type: e,\n preventDefault: function () {\n this.defaultPrevented = true;\n }\n };\n }\n\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore;\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n\n if (!arr) {\n return;\n }\n\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n\n for (var i = 0; i < arr.length; ++i) {\n if (indexOf(set, arr[i]) == -1) {\n set.push(arr[i]);\n }\n }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0;\n } // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n\n\n function eventMixin(ctor) {\n ctor.prototype.on = function (type, f) {\n on(this, type, f);\n };\n\n ctor.prototype.off = function (type, f) {\n off(this, type, f);\n };\n } // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n\n function e_preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n }\n\n function e_stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n }\n\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false;\n }\n\n function e_stop(e) {\n e_preventDefault(e);\n e_stopPropagation(e);\n }\n\n function e_target(e) {\n return e.target || e.srcElement;\n }\n\n function e_button(e) {\n var b = e.which;\n\n if (b == null) {\n if (e.button & 1) {\n b = 1;\n } else if (e.button & 2) {\n b = 3;\n } else if (e.button & 4) {\n b = 2;\n }\n }\n\n if (mac && e.ctrlKey && b == 1) {\n b = 3;\n }\n\n return b;\n } // Detect drag-and-drop\n\n\n var dragAndDrop = function () {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) {\n return false;\n }\n\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div;\n }();\n\n var zwspSupported;\n\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n\n if (measure.firstChild.offsetHeight != 0) {\n zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8);\n }\n }\n\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") : elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node;\n } // Feature-detect IE's crummy client rect reporting for bidi text\n\n\n var badBidiRects;\n\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) {\n return badBidiRects;\n }\n\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n\n if (!r0 || r0.left == r0.right) {\n return false;\n } // Safari returns null in some cases (#2780)\n\n\n return badBidiRects = r1.right - r0.right < 3;\n } // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n\n\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0,\n result = [],\n l = string.length;\n\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n\n if (nl == -1) {\n nl = string.length;\n }\n\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n\n return result;\n } : function (string) {\n return string.split(/\\r\\n?|\\n/);\n };\n var hasSelection = window.getSelection ? function (te) {\n try {\n return te.selectionStart != te.selectionEnd;\n } catch (e) {\n return false;\n }\n } : function (te) {\n var range;\n\n try {\n range = te.ownerDocument.selection.createRange();\n } catch (e) {}\n\n if (!range || range.parentElement() != te) {\n return false;\n }\n\n return range.compareEndPoints(\"StartToEnd\", range) != 0;\n };\n\n var hasCopyEvent = function () {\n var e = elt(\"div\");\n\n if (\"oncopy\" in e) {\n return true;\n }\n\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\";\n }();\n\n var badZoomedRects = null;\n\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) {\n return badZoomedRects;\n }\n\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1;\n } // Known modes, by name and by MIME\n\n\n var modes = {},\n mimeModes = {}; // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n\n function defineMode(name, mode) {\n if (arguments.length > 2) {\n mode.dependencies = Array.prototype.slice.call(arguments, 2);\n }\n\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n } // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n\n\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n\n if (typeof found == \"string\") {\n found = {\n name: found\n };\n }\n\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\");\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\");\n }\n\n if (typeof spec == \"string\") {\n return {\n name: spec\n };\n } else {\n return spec || {\n name: \"null\"\n };\n }\n } // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n\n\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n\n if (!mfactory) {\n return getMode(options, \"text/plain\");\n }\n\n var modeObj = mfactory(options, spec);\n\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) {\n continue;\n }\n\n if (modeObj.hasOwnProperty(prop)) {\n modeObj[\"_\" + prop] = modeObj[prop];\n }\n\n modeObj[prop] = exts[prop];\n }\n }\n\n modeObj.name = spec.name;\n\n if (spec.helperType) {\n modeObj.helperType = spec.helperType;\n }\n\n if (spec.modeProps) {\n for (var prop$1 in spec.modeProps) {\n modeObj[prop$1] = spec.modeProps[prop$1];\n }\n }\n\n return modeObj;\n } // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n\n\n var modeExtensions = {};\n\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : modeExtensions[mode] = {};\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) {\n return state;\n }\n\n if (mode.copyState) {\n return mode.copyState(state);\n }\n\n var nstate = {};\n\n for (var n in state) {\n var val = state[n];\n\n if (val instanceof Array) {\n val = val.concat([]);\n }\n\n nstate[n] = val;\n }\n\n return nstate;\n } // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n\n\n function innerMode(mode, state) {\n var info;\n\n while (mode.innerMode) {\n info = mode.innerMode(state);\n\n if (!info || info.mode == mode) {\n break;\n }\n\n state = info.state;\n mode = info.mode;\n }\n\n return info || {\n mode: mode,\n state: state\n };\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true;\n } // STRING STREAM\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n\n var StringStream = function (string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {\n return this.pos >= this.string.length;\n };\n\n StringStream.prototype.sol = function () {\n return this.pos == this.lineStart;\n };\n\n StringStream.prototype.peek = function () {\n return this.string.charAt(this.pos) || undefined;\n };\n\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length) {\n return this.string.charAt(this.pos++);\n }\n };\n\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n\n if (typeof match == \"string\") {\n ok = ch == match;\n } else {\n ok = ch && (match.test ? match.test(ch) : match(ch));\n }\n\n if (ok) {\n ++this.pos;\n return ch;\n }\n };\n\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n\n while (this.eat(match)) {}\n\n return this.pos > start;\n };\n\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) {\n ++this.pos;\n }\n\n return this.pos > start;\n };\n\n StringStream.prototype.skipToEnd = function () {\n this.pos = this.string.length;\n };\n\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n\n if (found > -1) {\n this.pos = found;\n return true;\n }\n };\n\n StringStream.prototype.backUp = function (n) {\n this.pos -= n;\n };\n\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n };\n\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n };\n\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) {\n return caseInsensitive ? str.toLowerCase() : str;\n };\n\n var substr = this.string.substr(this.pos, pattern.length);\n\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) {\n this.pos += pattern.length;\n }\n\n return true;\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n\n if (match && match.index > 0) {\n return null;\n }\n\n if (match && consume !== false) {\n this.pos += match[0].length;\n }\n\n return match;\n }\n };\n\n StringStream.prototype.current = function () {\n return this.string.slice(this.start, this.pos);\n };\n\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n\n try {\n return inner();\n } finally {\n this.lineStart -= n;\n }\n };\n\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n);\n };\n\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos);\n }; // Find the line object corresponding to the given line number.\n\n\n function getLine(doc, n) {\n n -= doc.first;\n\n if (n < 0 || n >= doc.size) {\n throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\");\n }\n\n var chunk = doc;\n\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i],\n sz = child.chunkSize();\n\n if (n < sz) {\n chunk = child;\n break;\n }\n\n n -= sz;\n }\n }\n\n return chunk.lines[n];\n } // Get the part of a document between two positions, as an array of\n // strings.\n\n\n function getBetween(doc, start, end) {\n var out = [],\n n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n\n if (n == end.line) {\n text = text.slice(0, end.ch);\n }\n\n if (n == start.line) {\n text = text.slice(start.ch);\n }\n\n out.push(text);\n ++n;\n });\n return out;\n } // Get the lines between from and to, as array of strings.\n\n\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) {\n out.push(line.text);\n }); // iter aborts when callback returns truthy value\n\n return out;\n } // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n\n\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n\n if (diff) {\n for (var n = line; n; n = n.parent) {\n n.height += diff;\n }\n }\n } // Given a line object, find its line number by walking up through\n // its parent links.\n\n\n function lineNo(line) {\n if (line.parent == null) {\n return null;\n }\n\n var cur = line.parent,\n no = indexOf(cur.lines, line);\n\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) {\n break;\n }\n\n no += chunk.children[i].chunkSize();\n }\n }\n\n return no + cur.first;\n } // Find the line at the given vertical position, using the height\n // information in the document tree.\n\n\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1],\n ch = child.height;\n\n if (h < ch) {\n chunk = child;\n continue outer;\n }\n\n h -= ch;\n n += child.chunkSize();\n }\n\n return n;\n } while (!chunk.lines);\n\n var i = 0;\n\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i],\n lh = line.height;\n\n if (h < lh) {\n break;\n }\n\n h -= lh;\n }\n\n return n + i;\n }\n\n function isLine(doc, l) {\n return l >= doc.first && l < doc.first + doc.size;\n }\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber));\n } // A Pos instance represents a position within the text.\n\n\n function Pos(line, ch, sticky) {\n if (sticky === void 0) sticky = null;\n\n if (!(this instanceof Pos)) {\n return new Pos(line, ch, sticky);\n }\n\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n } // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n\n\n function cmp(a, b) {\n return a.line - b.line || a.ch - b.ch;\n }\n\n function equalCursorPos(a, b) {\n return a.sticky == b.sticky && cmp(a, b) == 0;\n }\n\n function copyPos(x) {\n return Pos(x.line, x.ch);\n }\n\n function maxPos(a, b) {\n return cmp(a, b) < 0 ? b : a;\n }\n\n function minPos(a, b) {\n return cmp(a, b) < 0 ? a : b;\n } // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n\n\n function clipLine(doc, n) {\n return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));\n }\n\n function clipPos(doc, pos) {\n if (pos.line < doc.first) {\n return Pos(doc.first, 0);\n }\n\n var last = doc.first + doc.size - 1;\n\n if (pos.line > last) {\n return Pos(last, getLine(doc, last).text.length);\n }\n\n return clipToLen(pos, getLine(doc, pos.line).text.length);\n }\n\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n\n if (ch == null || ch > linelen) {\n return Pos(pos.line, linelen);\n } else if (ch < 0) {\n return Pos(pos.line, 0);\n } else {\n return pos;\n }\n }\n\n function clipPosArray(doc, array) {\n var out = [];\n\n for (var i = 0; i < array.length; i++) {\n out[i] = clipPos(doc, array[i]);\n }\n\n return out;\n }\n\n var SavedContext = function (state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function (doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n\n if (line != null && n > this.maxLookAhead) {\n this.maxLookAhead = n;\n }\n\n return line;\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) {\n return null;\n }\n\n while (this.baseTokens[this.baseTokenPos] <= n) {\n this.baseTokenPos += 2;\n }\n\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {\n type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n\n };\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n\n if (this.maxLookAhead > 0) {\n this.maxLookAhead--;\n }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext) {\n return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead);\n } else {\n return new Context(doc, copyState(doc.mode, saved), line);\n }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state;\n }; // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n\n\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen],\n lineClasses = {}; // Compute the base array of styles\n\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) {\n return st.push(end, style);\n }, lineClasses, forceToEnd);\n var state = context.state; // Run overlays, adjust style array.\n\n var loop = function (o) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o],\n i = 1,\n at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i; // Ensure there's a token end at the current position, and that i points at it\n\n while (at < end) {\n var i_end = st[i];\n\n if (i_end > end) {\n st.splice(i, 1, end, st[i + 1], i_end);\n }\n\n i += 2;\n at = Math.min(end, i_end);\n }\n\n if (!style) {\n return;\n }\n\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start + 1];\n st[start + 1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop(o);\n\n return {\n styles: st,\n classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null\n };\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n\n if (resetState) {\n context.state = resetState;\n }\n\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n\n if (result.classes) {\n line.styleClasses = result.classes;\n } else if (line.styleClasses) {\n line.styleClasses = null;\n }\n\n if (updateFrontier === cm.doc.highlightFrontier) {\n cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier);\n }\n }\n\n return line.styles;\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc,\n display = cm.display;\n\n if (!doc.mode.startState) {\n return new Context(doc, true, n);\n }\n\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n\n if (precise) {\n doc.modeFrontier = context.line;\n }\n\n return context;\n } // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n\n\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n\n if (text == \"\") {\n callBlankLine(mode, context.state);\n }\n\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) {\n return mode.blankLine(state);\n }\n\n if (!mode.innerMode) {\n return;\n }\n\n var inner = innerMode(mode, state);\n\n if (inner.mode.blankLine) {\n return inner.mode.blankLine(inner.state);\n }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) {\n inner[0] = innerMode(mode, state).mode;\n }\n\n var style = mode.token(stream, state);\n\n if (stream.pos > stream.start) {\n return style;\n }\n }\n\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\");\n }\n\n var Token = function (stream, type, state) {\n this.start = stream.start;\n this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n }; // Utility for getTokenAt and getLineTokens\n\n\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc,\n mode = doc.mode,\n style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line),\n context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context),\n tokens;\n\n if (asArray) {\n tokens = [];\n }\n\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n\n if (asArray) {\n tokens.push(new Token(stream, style, copyState(doc.mode, context.state)));\n }\n }\n\n return asArray ? tokens : new Token(stream, style, context.state);\n }\n\n function extractLineClasses(type, output) {\n if (type) {\n for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n\n if (!lineClass) {\n break;\n }\n\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n\n if (output[prop] == null) {\n output[prop] = lineClass[2];\n } else if (!new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\").test(output[prop])) {\n output[prop] += \" \" + lineClass[2];\n }\n }\n }\n\n return type;\n } // Run the given mode's parser over a line, calling f for each token.\n\n\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n\n if (flattenSpans == null) {\n flattenSpans = cm.options.flattenSpans;\n }\n\n var curStart = 0,\n curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context),\n style;\n var inner = cm.options.addModeClass && [null];\n\n if (text == \"\") {\n extractLineClasses(callBlankLine(mode, context.state), lineClasses);\n }\n\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n\n if (forceToEnd) {\n processLine(cm, text, context, stream.pos);\n }\n\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n\n if (inner) {\n var mName = inner[0].name;\n\n if (mName) {\n style = \"m-\" + (style ? mName + \" \" + style : mName);\n }\n }\n\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n\n curStyle = style;\n }\n\n stream.start = stream.pos;\n }\n\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n } // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n\n\n function findStartLine(cm, n, precise) {\n var minindent,\n minline,\n doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) {\n return doc.first;\n }\n\n var line = getLine(doc, search - 1),\n after = line.stateAfter;\n\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) {\n return search;\n }\n\n var indented = countColumn(line.text, null, cm.options.tabSize);\n\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n\n return minline;\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n\n if (doc.highlightFrontier < n - 10) {\n return;\n }\n\n var start = doc.first;\n\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter; // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break;\n }\n }\n\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n } // Optimize some code when these features are not used.\n\n\n var sawReadOnlySpans = false,\n sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n } // TEXTMARKER SPANS\n\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from;\n this.to = to;\n } // Search an array of spans for a span matching the given marker.\n\n\n function getMarkedSpanFor(spans, marker) {\n if (spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if (span.marker == marker) {\n return span;\n }\n }\n }\n } // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n\n\n function removeMarkedSpan(spans, span) {\n var r;\n\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i] != span) {\n (r || (r = [])).push(spans[i]);\n }\n }\n\n return r;\n } // Add a span to a line.\n\n\n function addMarkedSpan(line, span) {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n span.marker.attachLine(line);\n } // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n\n\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n\n if (old) {\n for (var i = 0; i < old.length; ++i) {\n var span = old[i],\n marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);\n (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n }\n }\n\n return nw;\n }\n\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n\n if (old) {\n for (var i = 0; i < old.length; ++i) {\n var span = old[i],\n marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);\n (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, span.to == null ? null : span.to - endCh));\n }\n }\n }\n\n return nw;\n } // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n\n\n function stretchSpansOverChange(doc, change) {\n if (change.full) {\n return null;\n }\n\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n\n if (!oldFirst && !oldLast) {\n return null;\n }\n\n var startCh = change.from.ch,\n endCh = change.to.ch,\n isInsert = cmp(change.from, change.to) == 0; // Get the spans that 'stick out' on both sides\n\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert); // Next, merge those two ends\n\n var sameLine = change.text.length == 1,\n offset = lst(change.text).length + (sameLine ? startCh : 0);\n\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n\n if (!found) {\n span.to = startCh;\n } else if (sameLine) {\n span.to = found.to == null ? null : found.to + offset;\n }\n }\n }\n }\n\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n\n if (span$1.to != null) {\n span$1.to += offset;\n }\n\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n\n if (!found$1) {\n span$1.from = offset;\n\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n } else {\n span$1.from += offset;\n\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n }\n } // Make sure we didn't create any zero-length spans\n\n\n if (first) {\n first = clearEmptySpans(first);\n }\n\n if (last && last != first) {\n last = clearEmptySpans(last);\n }\n\n var newMarkers = [first];\n\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2,\n gapMarkers;\n\n if (gap > 0 && first) {\n for (var i$2 = 0; i$2 < first.length; ++i$2) {\n if (first[i$2].to == null) {\n (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null));\n }\n }\n }\n\n for (var i$3 = 0; i$3 < gap; ++i$3) {\n newMarkers.push(gapMarkers);\n }\n\n newMarkers.push(last);\n }\n\n return newMarkers;\n } // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n\n\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) {\n spans.splice(i--, 1);\n }\n }\n\n if (!spans.length) {\n return null;\n }\n\n return spans;\n } // Used to 'clip' out readOnly ranges when making a change.\n\n\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) {\n for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) {\n (markers || (markers = [])).push(mark);\n }\n }\n }\n });\n\n if (!markers) {\n return null;\n }\n\n var parts = [{\n from: from,\n to: to\n }];\n\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i],\n m = mk.find(0);\n\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) {\n continue;\n }\n\n var newParts = [j, 1],\n dfrom = cmp(p.from, m.from),\n dto = cmp(p.to, m.to);\n\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) {\n newParts.push({\n from: p.from,\n to: m.from\n });\n }\n\n if (dto > 0 || !mk.inclusiveRight && !dto) {\n newParts.push({\n from: m.to,\n to: p.to\n });\n }\n\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n\n return parts;\n } // Connect or disconnect spans from a line.\n\n\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n\n if (!spans) {\n return;\n }\n\n for (var i = 0; i < spans.length; ++i) {\n spans[i].marker.detachLine(line);\n }\n\n line.markedSpans = null;\n }\n\n function attachMarkedSpans(line, spans) {\n if (!spans) {\n return;\n }\n\n for (var i = 0; i < spans.length; ++i) {\n spans[i].marker.attachLine(line);\n }\n\n line.markedSpans = spans;\n } // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n\n\n function extraLeft(marker) {\n return marker.inclusiveLeft ? -1 : 0;\n }\n\n function extraRight(marker) {\n return marker.inclusiveRight ? 1 : 0;\n } // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n\n\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n\n if (lenDiff != 0) {\n return lenDiff;\n }\n\n var aPos = a.find(),\n bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n\n if (fromCmp) {\n return -fromCmp;\n }\n\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n\n if (toCmp) {\n return toCmp;\n }\n\n return b.id - a.id;\n } // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n\n\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans,\n found;\n\n if (sps) {\n for (var sp = void 0, i = 0; i < sps.length; ++i) {\n sp = sps[i];\n\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n found = sp.marker;\n }\n }\n }\n\n return found;\n }\n\n function collapsedSpanAtStart(line) {\n return collapsedSpanAtSide(line, true);\n }\n\n function collapsedSpanAtEnd(line) {\n return collapsedSpanAtSide(line, false);\n }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans,\n found;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n found = sp.marker;\n }\n }\n }\n\n return found;\n } // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n\n\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n\n if (!sp.marker.collapsed) {\n continue;\n }\n\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) {\n continue;\n }\n\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) {\n return true;\n }\n }\n }\n } // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n\n\n function visualLine(line) {\n var merged;\n\n while (merged = collapsedSpanAtStart(line)) {\n line = merged.find(-1, true).line;\n }\n\n return line;\n }\n\n function visualLineEnd(line) {\n var merged;\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n\n return line;\n } // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n\n\n function visualLineContinued(line) {\n var merged, lines;\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n (lines || (lines = [])).push(line);\n }\n\n return lines;\n } // Get the line number of the start of the visual line that the\n // given line number is part of.\n\n\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN),\n vis = visualLine(line);\n\n if (line == vis) {\n return lineN;\n }\n\n return lineNo(vis);\n } // Get the line number of the start of the next visual line after\n // the given line.\n\n\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) {\n return lineN;\n }\n\n var line = getLine(doc, lineN),\n merged;\n\n if (!lineIsHidden(doc, line)) {\n return lineN;\n }\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n\n return lineNo(line) + 1;\n } // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n\n\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n\n if (sps) {\n for (var sp = void 0, i = 0; i < sps.length; ++i) {\n sp = sps[i];\n\n if (!sp.marker.collapsed) {\n continue;\n }\n\n if (sp.from == null) {\n return true;\n }\n\n if (sp.marker.widgetNode) {\n continue;\n }\n\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n }\n }\n\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker));\n }\n\n if (span.marker.inclusiveRight && span.to == line.text.length) {\n return true;\n }\n\n for (var sp = void 0, i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && (sp.to == null || sp.to != span.from) && (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n } // Find the height above the given line.\n\n\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n var h = 0,\n chunk = lineObj.parent;\n\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n\n if (line == lineObj) {\n break;\n } else {\n h += line.height;\n }\n }\n\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n\n if (cur == chunk) {\n break;\n } else {\n h += cur.height;\n }\n }\n }\n\n return h;\n } // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n\n\n function lineLength(line) {\n if (line.height == 0) {\n return 0;\n }\n\n var len = line.text.length,\n merged,\n cur = line;\n\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n\n cur = line;\n\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n\n return len;\n } // Find the longest line in the document.\n\n\n function findMaxLine(cm) {\n var d = cm.display,\n doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n } // LINE DATA STRUCTURE\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n\n\n var Line = function (text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () {\n return lineNo(this);\n };\n\n eventMixin(Line); // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n if (line.styles) {\n line.styles = null;\n }\n\n if (line.order != null) {\n line.order = null;\n }\n\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n } // Detach a line from the document tree and its markers.\n\n\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n } // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n\n\n var styleToClassCache = {},\n styleToClassCacheWithMode = {};\n\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) {\n return null;\n }\n\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] || (cache[style] = style.replace(/\\S+/g, \"cm-$&\"));\n } // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n\n\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {\n pre: eltP(\"pre\", [content], \"CodeMirror-line\"),\n content: content,\n col: 0,\n pos: 0,\n cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")\n };\n lineView.measure = {}; // Iterate over the logical lines that make up this visual line.\n\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line,\n order = void 0;\n builder.pos = 0;\n builder.addToken = buildToken; // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) {\n builder.addToken = buildTokenBadBidi(builder.addToken, order);\n }\n\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n\n if (line.styleClasses) {\n if (line.styleClasses.bgClass) {\n builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\");\n }\n\n if (line.styleClasses.textClass) {\n builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\");\n }\n } // Ensure at least a single node is present, for measuring.\n\n\n if (builder.map.length == 0) {\n builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)));\n } // Store the map and a cache object for the current logical line\n\n\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map);\n (lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n } // See issue #2901\n\n\n if (webkit) {\n var last = builder.content.lastChild;\n\n if (/\\bcm-tab\\b/.test(last.className) || last.querySelector && last.querySelector(\".cm-tab\")) {\n builder.content.className = \"cm-tab-wrap-hack\";\n }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n\n if (builder.pre.className) {\n builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\");\n }\n\n return builder;\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token;\n } // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n\n\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) {\n return;\n }\n\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars,\n mustWrap = false;\n var content;\n\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n\n if (ie && ie_version < 9) {\n mustWrap = true;\n }\n\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n\n if (ie && ie_version < 9) {\n content.appendChild(elt(\"span\", [txt]));\n } else {\n content.appendChild(txt);\n }\n\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n\n if (!m) {\n break;\n }\n\n pos += skipped + 1;\n var txt$1 = void 0;\n\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize,\n tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n\n if (ie && ie_version < 9) {\n content.appendChild(elt(\"span\", [txt$1]));\n } else {\n content.appendChild(txt$1);\n }\n\n builder.col += 1;\n }\n\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n\n if (style || startStyle || endStyle || mustWrap || css) {\n var fullStyle = style || \"\";\n\n if (startStyle) {\n fullStyle += startStyle;\n }\n\n if (endStyle) {\n fullStyle += endStyle;\n }\n\n var token = elt(\"span\", [content], fullStyle, css);\n\n if (attributes) {\n for (var attr in attributes) {\n if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\") {\n token.setAttribute(attr, attributes[attr]);\n }\n }\n }\n\n return builder.content.appendChild(token);\n }\n\n builder.content.appendChild(content);\n } // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n\n\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) {\n return text;\n }\n\n var spaceBefore = trailingBefore,\n result = \"\";\n\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) {\n ch = \"\\u00a0\";\n }\n\n result += ch;\n spaceBefore = ch == \" \";\n }\n\n return result;\n } // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n\n\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos,\n end = start + text.length;\n\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = void 0;\n\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n\n if (part.to > start && part.from <= start) {\n break;\n }\n }\n\n if (part.to >= end) {\n return inner(builder, text, style, startStyle, endStyle, css, attributes);\n }\n\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n };\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n\n if (widget) {\n builder.map.push(builder.pos, builder.pos + size, widget);\n }\n\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget) {\n widget = builder.content.appendChild(document.createElement(\"span\"));\n }\n\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n\n builder.pos += size;\n builder.trailingSpace = false;\n } // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n\n\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans,\n allText = line.text,\n at = 0;\n\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1 += 2) {\n builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1 + 1], builder.cm.options));\n }\n\n return;\n }\n\n var len = allText.length,\n pos = 0,\n i = 1,\n text = \"\",\n style,\n css;\n var nextChange = 0,\n spanStyle,\n spanEndStyle,\n spanStartStyle,\n collapsed,\n attributes;\n\n for (;;) {\n if (nextChange == pos) {\n // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null;\n nextChange = Infinity;\n var foundBookmarks = [],\n endStyles = void 0;\n\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j],\n m = sp.marker;\n\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n\n if (m.className) {\n spanStyle += \" \" + m.className;\n }\n\n if (m.css) {\n css = (css ? css + \";\" : \"\") + m.css;\n }\n\n if (m.startStyle && sp.from == pos) {\n spanStartStyle += \" \" + m.startStyle;\n }\n\n if (m.endStyle && sp.to == nextChange) {\n (endStyles || (endStyles = [])).push(m.endStyle, sp.to);\n } // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n\n\n if (m.title) {\n (attributes || (attributes = {})).title = m.title;\n }\n\n if (m.attributes) {\n for (var attr in m.attributes) {\n (attributes || (attributes = {}))[attr] = m.attributes[attr];\n }\n }\n\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) {\n collapsed = sp;\n }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n\n if (endStyles) {\n for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) {\n if (endStyles[j$1 + 1] == nextChange) {\n spanEndStyle += \" \" + endStyles[j$1];\n }\n }\n }\n\n if (!collapsed || collapsed.from == pos) {\n for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) {\n buildCollapsedSpan(builder, 0, foundBookmarks[j$2]);\n }\n }\n\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, collapsed.marker, collapsed.from == null);\n\n if (collapsed.to == null) {\n return;\n }\n\n if (collapsed.to == pos) {\n collapsed = false;\n }\n }\n }\n\n if (pos >= len) {\n break;\n }\n\n var upto = Math.min(len, nextChange);\n\n while (true) {\n if (text) {\n var end = pos + text.length;\n\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n\n if (end >= upto) {\n text = text.slice(upto - pos);\n pos = upto;\n break;\n }\n\n pos = end;\n spanStartStyle = \"\";\n }\n\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n } // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n\n\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line; // Continuing lines, if any\n\n this.rest = visualLineContinued(line); // Number of logical lines in this visual line\n\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n } // Create a range of LineView objects for the given lines.\n\n\n function buildViewArray(cm, from, to) {\n var array = [],\n nextPos;\n\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n\n return array;\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks,\n i = 0;\n\n do {\n for (; i < callbacks.length; i++) {\n callbacks[i].call(null);\n }\n\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n\n if (op.cursorActivityHandlers) {\n while (op.cursorActivityCalled < op.cursorActivityHandlers.length) {\n op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm);\n }\n }\n }\n } while (i < callbacks.length);\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n\n if (!group) {\n return;\n }\n\n try {\n fireCallbacksForOps(group);\n } finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null; // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n\n function signalLater(emitter, type\n /*, values...*/\n ) {\n var arr = getHandlers(emitter, type);\n\n if (!arr.length) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments, 2),\n list;\n\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n\n var loop = function (i) {\n list.push(function () {\n return arr[i].apply(null, args);\n });\n };\n\n for (var i = 0; i < arr.length; ++i) loop(i);\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n\n for (var i = 0; i < delayed.length; ++i) {\n delayed[i]();\n }\n } // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n\n\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n\n if (type == \"text\") {\n updateLineText(cm, lineView);\n } else if (type == \"gutter\") {\n updateLineGutter(cm, lineView, lineN, dims);\n } else if (type == \"class\") {\n updateLineClasses(cm, lineView);\n } else if (type == \"widget\") {\n updateLineWidgets(cm, lineView, dims);\n }\n }\n\n lineView.changes = null;\n } // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n\n\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n\n if (lineView.text.parentNode) {\n lineView.text.parentNode.replaceChild(lineView.node, lineView.text);\n }\n\n lineView.node.appendChild(lineView.text);\n\n if (ie && ie_version < 8) {\n lineView.node.style.zIndex = 2;\n }\n }\n\n return lineView.node;\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n\n if (cls) {\n cls += \" CodeMirror-linebackground\";\n }\n\n if (lineView.background) {\n if (cls) {\n lineView.background.className = cls;\n } else {\n lineView.background.parentNode.removeChild(lineView.background);\n lineView.background = null;\n }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n } // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n\n\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built;\n }\n\n return buildLineContent(cm, lineView);\n } // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n\n\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n\n if (lineView.text == lineView.node) {\n lineView.node = built.pre;\n }\n\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n\n if (lineView.line.wrapClass) {\n ensureLineWrapped(lineView).className = lineView.line.wrapClass;\n } else if (lineView.node != lineView.text) {\n lineView.node.className = \"\";\n }\n\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass, \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + dims.gutterTotalWidth + \"px\");\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n\n var markers = lineView.line.gutterMarkers;\n\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n\n if (lineView.line.gutterClass) {\n gutterWrap.className += \" \" + lineView.line.gutterClass;\n }\n\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"])) {\n lineView.lineNumber = gutterWrap.appendChild(elt(\"div\", lineNumberFor(cm.options, lineN), \"CodeMirror-linenumber CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[\"CodeMirror-linenumbers\"] + \"px; width: \" + cm.display.lineNumInnerWidth + \"px\"));\n }\n\n if (markers) {\n for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className,\n found = markers.hasOwnProperty(id) && markers[id];\n\n if (found) {\n gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[id] + \"px; width: \" + dims.gutterWidth[id] + \"px\"));\n }\n }\n }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) {\n lineView.alignable = null;\n }\n\n var isWidget = classTest(\"CodeMirror-linewidget\");\n\n for (var node = lineView.node.firstChild, next = void 0; node; node = next) {\n next = node.nextSibling;\n\n if (isWidget.test(node.className)) {\n lineView.node.removeChild(node);\n }\n }\n\n insertLineWidgets(cm, lineView, dims);\n } // Build a line's DOM representation from scratch\n\n\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n\n if (built.bgClass) {\n lineView.bgClass = built.bgClass;\n }\n\n if (built.textClass) {\n lineView.textClass = built.textClass;\n }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node;\n } // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n\n\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++) {\n insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false);\n }\n }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) {\n return;\n }\n\n var wrap = ensureLineWrapped(lineView);\n\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i],\n node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n\n if (!widget.handleMouseEvents) {\n node.setAttribute(\"cm-ignore-events\", \"true\");\n }\n\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n\n if (allowAbove && widget.above) {\n wrap.insertBefore(node, lineView.gutter || lineView.text);\n } else {\n wrap.appendChild(node);\n }\n\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n\n node.style.width = width + \"px\";\n }\n\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n\n if (!widget.noHScroll) {\n node.style.marginLeft = -dims.gutterTotalWidth + \"px\";\n }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) {\n return widget.height;\n }\n\n var cm = widget.doc.cm;\n\n if (!cm) {\n return 0;\n }\n\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n\n if (widget.coverGutter) {\n parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\";\n }\n\n if (widget.noHScroll) {\n parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\";\n }\n\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n\n return widget.height = widget.node.parentNode.offsetHeight;\n } // Return true when the given mouse event happened in a widget\n\n\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\" || n.parentNode == display.sizer && n != display.mover) {\n return true;\n }\n }\n } // POSITION MEASUREMENT\n\n\n function paddingTop(display) {\n return display.lineSpace.offsetTop;\n }\n\n function paddingVert(display) {\n return display.mover.offsetHeight - display.lineSpace.offsetHeight;\n }\n\n function paddingH(display) {\n if (display.cachedPaddingH) {\n return display.cachedPaddingH;\n }\n\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {\n left: parseInt(style.paddingLeft),\n right: parseInt(style.paddingRight)\n };\n\n if (!isNaN(data.left) && !isNaN(data.right)) {\n display.cachedPaddingH = data;\n }\n\n return data;\n }\n\n function scrollGap(cm) {\n return scrollerGap - cm.display.nativeBarWidth;\n }\n\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth;\n }\n\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight;\n } // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n\n\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i],\n next = rects[i + 1];\n\n if (Math.abs(cur.bottom - next.bottom) > 2) {\n heights.push((cur.bottom + next.top) / 2 - rect.top);\n }\n }\n }\n\n heights.push(rect.bottom - rect.top);\n }\n } // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n\n\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line) {\n return {\n map: lineView.measure.map,\n cache: lineView.measure.cache\n };\n }\n\n for (var i = 0; i < lineView.rest.length; i++) {\n if (lineView.rest[i] == line) {\n return {\n map: lineView.measure.maps[i],\n cache: lineView.measure.caches[i]\n };\n }\n }\n\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) {\n if (lineNo(lineView.rest[i$1]) > lineN) {\n return {\n map: lineView.measure.maps[i$1],\n cache: lineView.measure.caches[i$1],\n before: true\n };\n }\n }\n } // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n\n\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view;\n } // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n\n\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias);\n } // Find a line view that corresponds to the given line number.\n\n\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) {\n return cm.display.view[findViewIndex(cm, lineN)];\n }\n\n var ext = cm.display.externalMeasured;\n\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) {\n return ext;\n }\n } // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n\n\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n\n if (!view) {\n view = updateExternalMeasurement(cm, line);\n }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line,\n view: view,\n rect: null,\n map: info.map,\n cache: info.cache,\n before: info.before,\n hasHeights: false\n };\n } // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n\n\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) {\n ch = -1;\n }\n\n var key = ch + (bias || \"\"),\n found;\n\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect) {\n prepared.rect = prepared.view.text.getBoundingClientRect();\n }\n\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n\n found = measureCharInner(cm, prepared, ch, bias);\n\n if (!found.bogus) {\n prepared.cache[key] = found;\n }\n }\n\n return {\n left: found.left,\n right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom\n };\n }\n\n var nullRect = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd; // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n\n if (ch < mStart) {\n start = 0;\n end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n\n if (ch >= mEnd) {\n collapse = \"right\";\n }\n }\n\n if (start != null) {\n node = map[i + 2];\n\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\")) {\n collapse = bias;\n }\n\n if (bias == \"left\" && start == 0) {\n while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n }\n }\n\n if (bias == \"right\" && start == mEnd - mStart) {\n while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n }\n }\n\n break;\n }\n }\n\n return {\n node: node,\n start: start,\n end: end,\n collapse: collapse,\n coverStart: mStart,\n coverEnd: mEnd\n };\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n\n if (bias == \"left\") {\n for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) {\n break;\n }\n }\n } else {\n for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) {\n break;\n }\n }\n }\n\n return rect;\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node,\n start = place.start,\n end = place.end,\n collapse = place.collapse;\n var rect;\n\n if (node.nodeType == 3) {\n // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) {\n // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) {\n --start;\n }\n\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) {\n ++end;\n }\n\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) {\n rect = node.parentNode.getBoundingClientRect();\n } else {\n rect = getUsefulRect(range(node, start, end).getClientRects(), bias);\n }\n\n if (rect.left || rect.right || start == 0) {\n break;\n }\n\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n\n if (ie && ie_version < 11) {\n rect = maybeUpdateRectForZooming(cm.display.measure, rect);\n }\n } else {\n // If it is a widget, simply get the box for the whole widget.\n if (start > 0) {\n collapse = bias = \"right\";\n }\n\n var rects;\n\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) {\n rect = rects[bias == \"right\" ? rects.length - 1 : 0];\n } else {\n rect = node.getBoundingClientRect();\n }\n }\n\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n\n if (rSpan) {\n rect = {\n left: rSpan.left,\n right: rSpan.left + charWidth(cm.display),\n top: rSpan.top,\n bottom: rSpan.bottom\n };\n } else {\n rect = nullRect;\n }\n }\n\n var rtop = rect.top - prepared.rect.top,\n rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n\n for (; i < heights.length - 1; i++) {\n if (mid < heights[i]) {\n break;\n }\n }\n\n var top = i ? heights[i - 1] : 0,\n bot = heights[i];\n var result = {\n left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top,\n bottom: bot\n };\n\n if (!rect.left && !rect.right) {\n result.bogus = true;\n }\n\n if (!cm.options.singleCursorHeightPerLine) {\n result.rtop = rtop;\n result.rbottom = rbot;\n }\n\n return result;\n } // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n\n\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null || screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) {\n return rect;\n }\n\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {\n left: rect.left * scaleX,\n right: rect.right * scaleX,\n top: rect.top * scaleY,\n bottom: rect.bottom * scaleY\n };\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++) {\n lineView.measure.caches[i] = {};\n }\n }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n\n for (var i = 0; i < cm.display.view.length; i++) {\n clearLineMeasurementCacheFor(cm.display.view[i]);\n }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n\n if (!cm.options.lineWrapping) {\n cm.display.maxLineChanged = true;\n }\n\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft));\n }\n\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft;\n }\n\n function pageScrollY() {\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop));\n }\n\n return window.pageYOffset || (document.documentElement || document.body).scrollTop;\n }\n\n function widgetTopHeight(lineObj) {\n var height = 0;\n\n if (lineObj.widgets) {\n for (var i = 0; i < lineObj.widgets.length; ++i) {\n if (lineObj.widgets[i].above) {\n height += widgetHeight(lineObj.widgets[i]);\n }\n }\n }\n\n return height;\n } // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n\n\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height;\n rect.bottom += height;\n }\n\n if (context == \"line\") {\n return rect;\n }\n\n if (!context) {\n context = \"local\";\n }\n\n var yOff = heightAtLine(lineObj);\n\n if (context == \"local\") {\n yOff += paddingTop(cm.display);\n } else {\n yOff -= cm.display.viewOffset;\n }\n\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff;\n rect.right += xOff;\n }\n\n rect.top += yOff;\n rect.bottom += yOff;\n return rect;\n } // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n\n\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") {\n return coords;\n }\n\n var left = coords.left,\n top = coords.top; // First move into \"page\" coordinate system\n\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {\n left: left - lineSpaceBox.left,\n top: top - lineSpaceBox.top\n };\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) {\n lineObj = getLine(cm.doc, pos.line);\n }\n\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context);\n } // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n\n\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n\n if (right) {\n m.left = m.right;\n } else {\n m.right = m.left;\n }\n\n return intoCoordSystem(cm, lineObj, m, context);\n }\n\n var order = getOrder(lineObj, cm.doc.direction),\n ch = pos.ch,\n sticky = pos.sticky;\n\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n\n if (!order) {\n return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\");\n }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos],\n right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert);\n }\n\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n\n if (other != null) {\n val.other = getBidi(ch, other, sticky != \"before\");\n }\n\n return val;\n } // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n\n\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n\n if (!cm.options.lineWrapping) {\n left = charWidth(cm.display) * pos.ch;\n }\n\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {\n left: left,\n right: left,\n top: top,\n bottom: top + lineObj.height\n };\n } // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n\n\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n\n if (outside) {\n pos.outside = outside;\n }\n\n return pos;\n } // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n\n\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n\n if (y < 0) {\n return PosWithInfo(doc.first, 0, null, -1, -1);\n }\n\n var lineN = lineAtHeight(doc, y),\n last = doc.first + doc.size - 1;\n\n if (lineN > last) {\n return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1);\n }\n\n if (x < 0) {\n x = 0;\n }\n\n var lineObj = getLine(doc, lineN);\n\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n\n if (!collapsed) {\n return found;\n }\n\n var rangeEnd = collapsed.find(1);\n\n if (rangeEnd.line == lineN) {\n return rangeEnd;\n }\n\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) {\n return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y;\n }, end, 0);\n end = findFirst(function (ch) {\n return measureCharPrepared(cm, preparedMeasure, ch).top > y;\n }, begin, end);\n return {\n begin: begin,\n end: end\n };\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop);\n } // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n\n\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x;\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj); // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0,\n end = lineObj.text.length,\n ltr = true;\n var order = getOrder(lineObj, cm.doc.direction); // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)(cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1; // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n } // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n\n\n var chAround = null,\n boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight;\n box.bottom += widgetHeight;\n\n if (!boxIsAfter(box, x, y, false)) {\n return false;\n }\n\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n\n return true;\n }, begin, end);\n var baseX,\n sticky,\n outside = false; // If a box around the coordinates was found, use that\n\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x,\n atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) {\n ch++;\n } // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n\n\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" : measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y == ltr ? \"after\" : \"before\"; // Now get accurate coordinates for this place, in order to get a\n // base X position\n\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX);\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i],\n ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"), \"line\", lineObj, preparedMeasure), x, y, true);\n }, 0, order.length - 1);\n var part = order[index]; // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"), \"line\", lineObj, preparedMeasure);\n\n if (boxIsAfter(start, x, y, true) && start.top > y) {\n part = order[index - 1];\n }\n }\n\n return part;\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n\n if (/\\s/.test(lineObj.text.charAt(end - 1))) {\n end--;\n }\n\n var part = null,\n closestDist = null;\n\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n\n if (p.from >= end || p.to <= begin) {\n continue;\n }\n\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right; // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n\n if (!part) {\n part = order[order.length - 1];\n } // Clip the part to the wrapped line.\n\n\n if (part.from < begin) {\n part = {\n from: begin,\n to: part.to,\n level: part.level\n };\n }\n\n if (part.to > end) {\n part = {\n from: part.from,\n to: end,\n level: part.level\n };\n }\n\n return part;\n }\n\n var measureText; // Compute the default text height.\n\n function textHeight(display) {\n if (display.cachedTextHeight != null) {\n return display.cachedTextHeight;\n }\n\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\"); // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n\n if (height > 3) {\n display.cachedTextHeight = height;\n }\n\n removeChildren(display.measure);\n return height || 1;\n } // Compute the default character width.\n\n\n function charWidth(display) {\n if (display.cachedCharWidth != null) {\n return display.cachedCharWidth;\n }\n\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(),\n width = (rect.right - rect.left) / 10;\n\n if (width > 2) {\n display.cachedCharWidth = width;\n }\n\n return width || 10;\n } // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n\n\n function getDimensions(cm) {\n var d = cm.display,\n left = {},\n width = {};\n var gutterLeft = d.gutters.clientLeft;\n\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n\n return {\n fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth\n };\n } // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n\n\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left;\n } // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n\n\n function estimateHeight(cm) {\n var th = textHeight(cm.display),\n wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) {\n return 0;\n }\n\n var widgetsHeight = 0;\n\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) {\n widgetsHeight += line.widgets[i].height;\n }\n }\n }\n\n if (wrapping) {\n return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th;\n } else {\n return widgetsHeight + th;\n }\n };\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc,\n est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n });\n } // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n\n\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") {\n return null;\n }\n\n var x,\n y,\n space = display.lineSpace.getBoundingClientRect(); // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n\n try {\n x = e.clientX - space.left;\n y = e.clientY - space.top;\n } catch (e$1) {\n return null;\n }\n\n var coords = coordsChar(cm, x, y),\n line;\n\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n\n return coords;\n } // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n\n\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) {\n return null;\n }\n\n n -= cm.display.viewFrom;\n\n if (n < 0) {\n return null;\n }\n\n var view = cm.display.view;\n\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n\n if (n < 0) {\n return i;\n }\n }\n } // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n\n\n function regChange(cm, from, to, lendiff) {\n if (from == null) {\n from = cm.doc.first;\n }\n\n if (to == null) {\n to = cm.doc.first + cm.doc.size;\n }\n\n if (!lendiff) {\n lendiff = 0;\n }\n\n var display = cm.display;\n\n if (lendiff && to < display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers > from)) {\n display.updateLineNumbers = from;\n }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) {\n // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) {\n resetView(cm);\n }\n } else if (to <= display.viewFrom) {\n // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) {\n // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) {\n // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) {\n // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else {\n // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index).concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)).concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n\n if (ext) {\n if (to < ext.lineN) {\n ext.lineN += lendiff;\n } else if (from < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n }\n } // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n\n\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display,\n ext = cm.display.externalMeasured;\n\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n\n if (line < display.viewFrom || line >= display.viewTo) {\n return;\n }\n\n var lineView = display.view[findViewIndex(cm, line)];\n\n if (lineView.node == null) {\n return;\n }\n\n var arr = lineView.changes || (lineView.changes = []);\n\n if (indexOf(arr, type) == -1) {\n arr.push(type);\n }\n } // Clear the view.\n\n\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN),\n diff,\n view = cm.display.view;\n\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) {\n return {\n index: index,\n lineN: newN\n };\n }\n\n var n = cm.display.viewFrom;\n\n for (var i = 0; i < index; i++) {\n n += view[i].size;\n }\n\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) {\n return null;\n }\n\n diff = n + view[index].size - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n\n oldN += diff;\n newN += diff;\n }\n\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) {\n return null;\n }\n\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n\n return {\n index: index,\n lineN: newN\n };\n } // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n\n\n function adjustView(cm, from, to) {\n var display = cm.display,\n view = display.view;\n\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from) {\n display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view);\n } else if (display.viewFrom < from) {\n display.view = display.view.slice(findViewIndex(cm, from));\n }\n\n display.viewFrom = from;\n\n if (display.viewTo < to) {\n display.view = display.view.concat(buildViewArray(cm, display.viewTo, to));\n } else if (display.viewTo > to) {\n display.view = display.view.slice(0, findViewIndex(cm, to));\n }\n }\n\n display.viewTo = to;\n } // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n\n\n function countDirtyView(cm) {\n var view = cm.display.view,\n dirty = 0;\n\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n\n if (!lineView.hidden && (!lineView.node || lineView.changes)) {\n ++dirty;\n }\n }\n\n return dirty;\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if (primary === void 0) primary = true;\n var doc = cm.doc,\n result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) {\n continue;\n }\n\n var range = doc.sel.ranges[i];\n\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) {\n continue;\n }\n\n var collapsed = range.empty();\n\n if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n\n if (!collapsed) {\n drawSelectionRange(cm, range, selFragment);\n }\n }\n\n return result;\n } // Draws a cursor for the given range\n\n\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) {\n return a.top - b.top || a.left - b.left;\n } // Draws the given range as a highlighted selection\n\n\n function drawSelectionRange(cm, range, output) {\n var display = cm.display,\n doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display),\n leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) {\n top = 0;\n }\n\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", \"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\"));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias);\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = dir == \"ltr\" == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop];\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n var openStart = fromArg == null && from == 0,\n openEnd = toArg == null && to == lineLen;\n var first = i == 0,\n last = !order || i == order.length - 1;\n\n if (toPos.top - fromPos.top <= 3) {\n // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else {\n // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n\n if (fromPos.bottom < toPos.top) {\n add(leftSide, fromPos.bottom, null, toPos.top);\n }\n\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) {\n start = fromPos;\n }\n\n if (cmpCoords(toPos, start) < 0) {\n start = toPos;\n }\n\n if (!end || cmpCoords(fromPos, end) < 0) {\n end = fromPos;\n }\n\n if (cmpCoords(toPos, end) < 0) {\n end = toPos;\n }\n });\n return {\n start: start,\n end: end\n };\n }\n\n var sFrom = range.from(),\n sTo = range.to();\n\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line),\n toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n\n if (leftEnd.bottom < rightStart.top) {\n add(leftSide, leftEnd.bottom, null, rightStart.top);\n }\n }\n\n output.appendChild(fragment);\n } // Cursor-blinking\n\n\n function restartBlink(cm) {\n if (!cm.state.focused) {\n return;\n }\n\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n\n if (cm.options.cursorBlinkRate > 0) {\n display.blinker = setInterval(function () {\n return display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate);\n } else if (cm.options.cursorBlinkRate < 0) {\n display.cursorDiv.style.visibility = \"hidden\";\n }\n }\n\n function ensureFocus(cm) {\n if (!cm.state.focused) {\n cm.display.input.focus();\n onFocus(cm);\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () {\n if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n onBlur(cm);\n }\n }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n }\n\n if (cm.options.readOnly == \"nocursor\") {\n return;\n }\n\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\"); // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n\n if (webkit) {\n setTimeout(function () {\n return cm.display.input.reset(true);\n }, 20);\n } // Issue #1730\n\n }\n\n cm.display.input.receivedFocus();\n }\n\n restartBlink(cm);\n }\n\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) {\n return;\n }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n\n clearInterval(cm.display.blinker);\n setTimeout(function () {\n if (!cm.state.focused) {\n cm.display.shift = false;\n }\n }, 150);\n } // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n\n\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i],\n wrapping = cm.options.lineWrapping;\n var height = void 0,\n width = 0;\n\n if (cur.hidden) {\n continue;\n }\n\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top; // Check that lines don't extend past the right of the current\n // editor width\n\n if (!wrapping && cur.text.firstChild) {\n width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1;\n }\n }\n\n var diff = cur.line.height - height;\n\n if (diff > .005 || diff < -.005) {\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n\n if (cur.rest) {\n for (var j = 0; j < cur.rest.length; j++) {\n updateWidgetHeight(cur.rest[j]);\n }\n }\n }\n\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n } // Read and store the height of line widgets associated with the\n // given line.\n\n\n function updateWidgetHeight(line) {\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i],\n parent = w.node.parentNode;\n\n if (parent) {\n w.height = parent.offsetHeight;\n }\n }\n }\n } // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n\n\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n var from = lineAtHeight(doc, top),\n to = lineAtHeight(doc, bottom); // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line,\n ensureTo = viewport.ensure.to.line;\n\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n\n return {\n from: from,\n to: Math.max(to, from + 1)\n };\n } // SCROLLING THINGS INTO VIEW\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n\n\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) {\n return;\n }\n\n var display = cm.display,\n box = display.sizer.getBoundingClientRect(),\n doScroll = null;\n\n if (rect.top + box.top < 0) {\n doScroll = true;\n } else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) {\n doScroll = false;\n }\n\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, \"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + rect.left + \"px; width: \" + Math.max(2, rect.right - rect.left) + \"px;\");\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n } // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n\n\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) {\n margin = 0;\n }\n\n var rect;\n\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n }\n\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {\n left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin\n };\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop,\n startLeft = cm.doc.scrollLeft;\n\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) {\n changed = true;\n }\n }\n\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) {\n changed = true;\n }\n }\n\n if (!changed) {\n break;\n }\n }\n\n return rect;\n } // Scroll a given set of coordinates into view (immediately).\n\n\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n }\n\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n }\n } // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n\n\n function calculateScrollPos(cm, rect) {\n var display = cm.display,\n snapMargin = textHeight(cm.display);\n\n if (rect.top < 0) {\n rect.top = 0;\n }\n\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm),\n result = {};\n\n if (rect.bottom - rect.top > screen) {\n rect.bottom = rect.top + screen;\n }\n\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin,\n atBottom = rect.bottom > docBottom - snapMargin;\n\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n\n if (newTop != screentop) {\n result.scrollTop = newTop;\n }\n }\n\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;\n var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0);\n var tooWide = rect.right - rect.left > screenw;\n\n if (tooWide) {\n rect.right = rect.left + screenw;\n }\n\n if (rect.left < 10) {\n result.scrollLeft = 0;\n } else if (rect.left < screenleft) {\n result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10));\n } else if (rect.right > screenw + screenleft - 3) {\n result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw;\n }\n\n return result;\n } // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n\n\n function addToScrollTop(cm, top) {\n if (top == null) {\n return;\n }\n\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n } // Make sure that at the end of the operation the current cursor is\n // shown.\n\n\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {\n from: cur,\n to: cur,\n margin: cm.options.cursorScrollMargin\n };\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) {\n resolveScrollToPos(cm);\n }\n\n if (x != null) {\n cm.curOp.scrollLeft = x;\n }\n\n if (y != null) {\n cm.curOp.scrollTop = y;\n }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n } // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n\n\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from),\n to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n } // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n\n\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) {\n return;\n }\n\n if (!gecko) {\n updateDisplaySimple(cm, {\n top: val\n });\n }\n\n setScrollTop(cm, val, true);\n\n if (gecko) {\n updateDisplaySimple(cm);\n }\n\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n\n if (cm.display.scroller.scrollTop == val && !forceScroll) {\n return;\n }\n\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n\n if (cm.display.scroller.scrollTop != val) {\n cm.display.scroller.scrollTop = val;\n }\n } // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n\n\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) {\n return;\n }\n\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n\n if (cm.display.scroller.scrollLeft != val) {\n cm.display.scroller.scrollLeft = val;\n }\n\n cm.display.scrollbars.setScrollLeft(val);\n } // SCROLLBARS\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n\n\n function measureForScrollbars(cm) {\n var d = cm.display,\n gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth,\n clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n };\n }\n\n var NativeScrollbars = function (place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert);\n place(horiz);\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) {\n scroll(vert.scrollTop, \"vertical\");\n }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) {\n scroll(horiz.scrollLeft, \"horizontal\");\n }\n });\n this.checkedZeroWidth = false; // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n\n if (ie && ie_version < 8) {\n this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\";\n }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0); // A bug in IE8 can cause this value to be negative, so guard it.\n\n this.vert.firstChild.style.height = Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width = Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) {\n this.zeroWidthHack();\n }\n\n this.checkedZeroWidth = true;\n }\n\n return {\n right: needsV ? sWidth : 0,\n bottom: needsH ? sWidth : 0\n };\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) {\n this.horiz.scrollLeft = pos;\n }\n\n if (this.disableHoriz) {\n this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\");\n }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) {\n this.vert.scrollTop = pos;\n }\n\n if (this.disableVert) {\n this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\");\n }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed();\n this.disableVert = new Delayed();\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n\n if (elt != bar) {\n bar.style.pointerEvents = \"none\";\n } else {\n delay.set(1000, maybeDisable);\n }\n }\n\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () {\n return {\n bottom: 0,\n right: 0\n };\n };\n\n NullScrollbars.prototype.setScrollLeft = function () {};\n\n NullScrollbars.prototype.setScrollTop = function () {};\n\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) {\n measure = measureForScrollbars(cm);\n }\n\n var startWidth = cm.display.barWidth,\n startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping) {\n updateHeightsInViewport(cm);\n }\n\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth;\n startHeight = cm.display.barHeight;\n }\n } // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n\n\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else {\n d.scrollbarFiller.style.display = \"\";\n }\n\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else {\n d.gutterFiller.style.display = \"\";\n }\n }\n\n var scrollbarModel = {\n \"native\": NativeScrollbars,\n \"null\": NullScrollbars\n };\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n\n if (cm.display.scrollbars.addClass) {\n rmClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); // Prevent clicks in the scrollbars from killing focus\n\n on(node, \"mousedown\", function () {\n if (cm.state.focused) {\n setTimeout(function () {\n return cm.display.input.focus();\n }, 0);\n }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") {\n setScrollLeft(cm, pos);\n } else {\n updateScrollTop(cm, pos);\n }\n }, cm);\n\n if (cm.display.scrollbars.addClass) {\n addClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n } // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n\n var nextOpId = 0; // Start a new operation.\n\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false,\n // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height,\n // Used to detect need to update scrollbar\n forceUpdate: false,\n // Used to force a redraw\n updateInput: 0,\n // Whether to reset the input textarea\n typing: false,\n // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null,\n // Accumulated changes, for firing change events\n cursorActivityHandlers: null,\n // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0,\n // Tracks which cursorActivity handlers have been called already\n selectionChanged: false,\n // Whether the selection needs to be redrawn\n updateMaxLine: false,\n // Set when the widest line needs to be determined anew\n scrollLeft: null,\n scrollTop: null,\n // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null,\n // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId // Unique ID\n\n };\n pushOperation(cm.curOp);\n } // Finish an operation, updating the display and signalling delayed events\n\n\n function endOperation(cm) {\n var op = cm.curOp;\n\n if (op) {\n finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++) {\n group.ops[i].cm.curOp = null;\n }\n\n endOperations(group);\n });\n }\n } // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n\n\n function endOperations(group) {\n var ops = group.ops;\n\n for (var i = 0; i < ops.length; i++) // Read DOM\n {\n endOperation_R1(ops[i]);\n }\n\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n {\n endOperation_W1(ops[i$1]);\n }\n\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n {\n endOperation_R2(ops[i$2]);\n }\n\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n {\n endOperation_W2(ops[i$3]);\n }\n\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n {\n endOperation_finish(ops[i$4]);\n }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm,\n display = cm.display;\n maybeClipScrollbars(cm);\n\n if (op.updateMaxLine) {\n findMaxLine(cm);\n }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || op.scrollToPos.to.line >= display.viewTo) || display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate && new DisplayUpdate(cm, op.mustUpdate && {\n top: op.scrollTop,\n ensure: op.scrollToPos\n }, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm,\n display = cm.display;\n\n if (op.updatedDisplay) {\n updateHeightsInViewport(cm);\n }\n\n op.barMeasure = measureForScrollbars(cm); // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth = Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged) {\n op.preparedSelection = display.input.prepareSelection();\n }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n\n if (op.maxScrollLeft < cm.doc.scrollLeft) {\n setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true);\n }\n\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n\n if (op.preparedSelection) {\n cm.display.input.showSelection(op.preparedSelection, takeFocus);\n }\n\n if (op.updatedDisplay || op.startHeight != cm.doc.height) {\n updateScrollbars(cm, op.barMeasure);\n }\n\n if (op.updatedDisplay) {\n setDocumentHeight(cm, op.barMeasure);\n }\n\n if (op.selectionChanged) {\n restartBlink(cm);\n }\n\n if (cm.state.focused && op.updateInput) {\n cm.display.input.reset(op.typing);\n }\n\n if (takeFocus) {\n ensureFocus(op.cm);\n }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm,\n display = cm.display,\n doc = cm.doc;\n\n if (op.updatedDisplay) {\n postUpdateDisplay(cm, op.update);\n } // Abort mouse wheel delta measurement, when scrolling explicitly\n\n\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) {\n display.wheelStartX = display.wheelStartY = null;\n } // Propagate the scroll position to the actual DOM scroller\n\n\n if (op.scrollTop != null) {\n setScrollTop(cm, op.scrollTop, op.forceScroll);\n }\n\n if (op.scrollLeft != null) {\n setScrollLeft(cm, op.scrollLeft, true, true);\n } // If we need to scroll a specific position into view, do so.\n\n\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n } // Fire events for markers that are hidden/unidden by editing or\n // undoing\n\n\n var hidden = op.maybeHiddenMarkers,\n unhidden = op.maybeUnhiddenMarkers;\n\n if (hidden) {\n for (var i = 0; i < hidden.length; ++i) {\n if (!hidden[i].lines.length) {\n signal(hidden[i], \"hide\");\n }\n }\n }\n\n if (unhidden) {\n for (var i$1 = 0; i$1 < unhidden.length; ++i$1) {\n if (unhidden[i$1].lines.length) {\n signal(unhidden[i$1], \"unhide\");\n }\n }\n }\n\n if (display.wrapper.offsetHeight) {\n doc.scrollTop = cm.display.scroller.scrollTop;\n } // Fire change events, and delayed event handlers\n\n\n if (op.changeObjs) {\n signal(cm, \"changes\", cm, op.changeObjs);\n }\n\n if (op.update) {\n op.update.finish();\n }\n } // Run the given function in an operation\n\n\n function runInOp(cm, f) {\n if (cm.curOp) {\n return f();\n }\n\n startOperation(cm);\n\n try {\n return f();\n } finally {\n endOperation(cm);\n }\n } // Wraps a function in an operation. Returns the wrapped function.\n\n\n function operation(cm, f) {\n return function () {\n if (cm.curOp) {\n return f.apply(cm, arguments);\n }\n\n startOperation(cm);\n\n try {\n return f.apply(cm, arguments);\n } finally {\n endOperation(cm);\n }\n };\n } // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n\n\n function methodOp(f) {\n return function () {\n if (this.curOp) {\n return f.apply(this, arguments);\n }\n\n startOperation(this);\n\n try {\n return f.apply(this, arguments);\n } finally {\n endOperation(this);\n }\n };\n }\n\n function docMethodOp(f) {\n return function () {\n var cm = this.cm;\n\n if (!cm || cm.curOp) {\n return f.apply(this, arguments);\n }\n\n startOperation(cm);\n\n try {\n return f.apply(this, arguments);\n } finally {\n endOperation(cm);\n }\n };\n } // HIGHLIGHT WORKER\n\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo) {\n cm.state.highlight.set(time, bind(highlightWorker, cm));\n }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n\n if (doc.highlightFrontier >= cm.display.viewTo) {\n return;\n }\n\n var end = +new Date() + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) {\n // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n\n if (resetState) {\n context.state = resetState;\n }\n\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses,\n newCls = highlighted.classes;\n\n if (newCls) {\n line.styleClasses = newCls;\n } else if (oldCls) {\n line.styleClasses = null;\n }\n\n var ischange = !oldStyles || oldStyles.length != line.styles.length || oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n\n for (var i = 0; !ischange && i < oldStyles.length; ++i) {\n ischange = oldStyles[i] != line.styles[i];\n }\n\n if (ischange) {\n changedLines.push(context.line);\n }\n\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength) {\n processLine(cm, line.text, context);\n }\n\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n\n if (+new Date() > end) {\n startWorker(cm, cm.options.workDelay);\n return true;\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n\n if (changedLines.length) {\n runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++) {\n regLineChange(cm, changedLines[i], \"text\");\n }\n });\n }\n } // DISPLAY DRAWING\n\n\n var DisplayUpdate = function (cm, viewport, force) {\n var display = cm.display;\n this.viewport = viewport; // Store some values that we'll need later (but don't want to force a relayout for)\n\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type)) {\n this.events.push(arguments);\n }\n };\n\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++) {\n signal.apply(null, this.events[i]);\n }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) {\n return null;\n }\n\n var active = activeElt();\n\n if (!active || !contains(cm.display.lineDiv, active)) {\n return null;\n }\n\n var result = {\n activeElt: active\n };\n\n if (window.getSelection) {\n var sel = window.getSelection();\n\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n\n return result;\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) {\n return;\n }\n\n snapshot.activeElt.focus();\n\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) && snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(),\n range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n } // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n\n\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display,\n doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false;\n } // Bail out if the visible area is already rendered and nothing changed.\n\n\n if (!update.force && update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && display.renderedView == display.view && countDirtyView(cm) == 0) {\n return false;\n }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n } // Compute a suitable new viewport (from & to)\n\n\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n\n if (display.viewFrom < from && from - display.viewFrom < 20) {\n from = Math.max(doc.first, display.viewFrom);\n }\n\n if (display.viewTo > to && display.viewTo - to < 20) {\n to = Math.min(end, display.viewTo);\n }\n\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo || display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)); // Position the mover div to align with the current scroll position\n\n cm.display.mover.style.top = display.viewOffset + \"px\";\n var toUpdate = countDirtyView(cm);\n\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) {\n return false;\n } // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n\n\n var selSnapshot = selectionSnapshot(cm);\n\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"none\";\n }\n\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"\";\n }\n\n display.renderedView = display.view; // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n\n restoreSelection(selSnapshot); // Prevent selection and cursors from interfering with the scroll\n // width and height.\n\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n return true;\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null) {\n viewport = {\n top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)\n };\n } // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n\n\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) {\n break;\n }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n\n if (!updateDisplayIfNeeded(cm, update)) {\n break;\n }\n\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom;\n cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n } // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n\n\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display,\n lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv,\n cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling; // Works around a throw-scroll bug in OS X Webkit\n\n if (webkit && mac && cm.display.currentWheelTarget == node) {\n node.style.display = \"none\";\n } else {\n node.parentNode.removeChild(node);\n }\n\n return next;\n }\n\n var view = display.view,\n lineN = display.viewFrom; // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ;else if (!lineView.node || lineView.node.parentNode != container) {\n // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else {\n // Already drawn\n while (cur != lineView.node) {\n cur = rm(cur);\n }\n\n var updateNumber = lineNumbers && updateNumbersFrom != null && updateNumbersFrom <= lineN && lineView.lineNumber;\n\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) {\n updateNumber = false;\n }\n\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n\n while (cur) {\n cur = rm(cur);\n }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = measure.docHeight + cm.display.barHeight + scrollGap(cm) + \"px\";\n } // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n\n\n function alignHorizontally(cm) {\n var display = cm.display,\n view = display.view;\n\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) {\n return;\n }\n\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth,\n left = comp + \"px\";\n\n for (var i = 0; i < view.length; i++) {\n if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter) {\n view[i].gutter.style.left = left;\n }\n\n if (view[i].gutterBackground) {\n view[i].gutterBackground.style.left = left;\n }\n }\n\n var align = view[i].alignable;\n\n if (align) {\n for (var j = 0; j < align.length; j++) {\n align[j].style.left = left;\n }\n }\n }\n }\n\n if (cm.options.fixedGutter) {\n display.gutters.style.left = comp + gutterW + \"px\";\n }\n } // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n\n\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) {\n return false;\n }\n\n var doc = cm.doc,\n last = lineNumberFor(cm.options, doc.first + doc.size - 1),\n display = cm.display;\n\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)], \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth,\n padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true;\n }\n\n return false;\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [],\n sawLineNumbers = false;\n\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i],\n style = null;\n\n if (typeof name != \"string\") {\n style = name.style;\n name = name.className;\n }\n\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) {\n continue;\n } else {\n sawLineNumbers = true;\n }\n }\n\n result.push({\n className: name,\n style: style\n });\n }\n\n if (lineNumbers && !sawLineNumbers) {\n result.push({\n className: \"CodeMirror-linenumbers\",\n style: null\n });\n }\n\n return result;\n } // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n\n\n function renderGutters(display) {\n var gutters = display.gutters,\n specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n\n if (style) {\n gElt.style.cssText = style;\n }\n\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n } // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input; // Covers bottom-right square when both scrollbars are present.\n\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\"); // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\"); // Will contain the actual code, positioned to cover the viewport.\n\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\"); // Elements are added to these to represent selection and cursors.\n\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\"); // A visibility: hidden element used to find the size of things.\n\n d.measure = elt(\"div\", null, \"CodeMirror-measure\"); // When lines outside of the viewport are measured, they are drawn in this.\n\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\"); // Wraps everything that needs to exist inside the vertically-padded coordinate system\n\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\"); // Moved around its parent to cover visible view.\n\n d.mover = elt(\"div\", [lines], null, \"position: relative\"); // Set to the height of the document, allowing scrolling.\n\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null; // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\"); // Will contain the gutters, if any.\n\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null; // Actual scrollable element.\n\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\"); // The element in which the editor lives.\n\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\"); // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n\n if (ie && ie_version < 8) {\n d.gutters.style.zIndex = -1;\n d.scroller.style.paddingRight = 0;\n }\n\n if (!webkit && !(gecko && mobile)) {\n d.scroller.draggable = true;\n }\n\n if (place) {\n if (place.appendChild) {\n place.appendChild(d.wrapper);\n } else {\n place(d.wrapper);\n }\n } // Current rendered range (may be bigger than the view window).\n\n\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first; // Information about the rendered lines.\n\n d.view = [];\n d.renderedView = null; // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n\n d.externalMeasured = null; // Empty space (in pixels) above the view\n\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false; // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n\n d.alignWidgets = false;\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false; // Used for measuring wheel scrolling granularity\n\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; // True when shift is held down.\n\n d.shift = false; // Used to track whether anything happened since the context menu\n // was opened.\n\n d.selForContextMenu = null;\n d.activeTouch = null;\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n input.init(d);\n } // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n\n var wheelSamples = 0,\n wheelPixelsPerUnit = null; // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n\n if (ie) {\n wheelPixelsPerUnit = -.53;\n } else if (gecko) {\n wheelPixelsPerUnit = 15;\n } else if (chrome) {\n wheelPixelsPerUnit = -.7;\n } else if (safari) {\n wheelPixelsPerUnit = -1 / 3;\n }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX,\n dy = e.wheelDeltaY;\n\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) {\n dx = e.detail;\n }\n\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) {\n dy = e.detail;\n } else if (dy == null) {\n dy = e.wheelDelta;\n }\n\n return {\n x: dx,\n y: dy\n };\n }\n\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta;\n }\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e),\n dx = delta.x,\n dy = delta.y;\n var display = cm.display,\n scroll = display.scroller; // Quit if there's nothing to scroll here\n\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n\n if (!(dx && canScrollX || dy && canScrollY)) {\n return;\n } // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n\n\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer;\n }\n }\n }\n } // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n\n\n if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n if (dy && canScrollY) {\n updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit));\n }\n\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit)); // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n\n if (!dy || dy && canScrollY) {\n e_preventDefault(e);\n }\n\n display.wheelStartX = null; // Abort measurement, if in progress\n\n return;\n } // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n\n\n if (dy && wheelPixelsPerUnit != null) {\n var pixels = dy * wheelPixelsPerUnit;\n var top = cm.doc.scrollTop,\n bot = top + display.wrapper.clientHeight;\n\n if (pixels < 0) {\n top = Math.max(0, top + pixels - 50);\n } else {\n bot = Math.min(cm.doc.height, bot + pixels + 50);\n }\n\n updateDisplaySimple(cm, {\n top: top,\n bottom: bot\n });\n }\n\n if (wheelSamples < 20) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft;\n display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx;\n display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) {\n return;\n }\n\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = movedY && display.wheelDY && movedY / display.wheelDY || movedX && display.wheelDX && movedX / display.wheelDX;\n display.wheelStartX = display.wheelStartY = null;\n\n if (!sample) {\n return;\n }\n\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx;\n display.wheelDY += dy;\n }\n }\n } // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n\n\n var Selection = function (ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () {\n return this.ranges[this.primIndex];\n };\n\n Selection.prototype.equals = function (other) {\n if (other == this) {\n return true;\n }\n\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) {\n return false;\n }\n\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i],\n there = other.ranges[i];\n\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) {\n return false;\n }\n }\n\n return true;\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n\n for (var i = 0; i < this.ranges.length; i++) {\n out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head));\n }\n\n return new Selection(out, this.primIndex);\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++) {\n if (!this.ranges[i].empty()) {\n return true;\n }\n }\n\n return false;\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) {\n end = pos;\n }\n\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) {\n return i;\n }\n }\n\n return -1;\n };\n\n var Range = function (anchor, head) {\n this.anchor = anchor;\n this.head = head;\n };\n\n Range.prototype.from = function () {\n return minPos(this.anchor, this.head);\n };\n\n Range.prototype.to = function () {\n return maxPos(this.anchor, this.head);\n };\n\n Range.prototype.empty = function () {\n return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch;\n }; // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n\n\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) {\n return cmp(a.from(), b.from());\n });\n primIndex = indexOf(ranges, prim);\n\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i],\n prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()),\n to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n\n if (i <= primIndex) {\n --primIndex;\n }\n\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n\n return new Selection(ranges, primIndex);\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0);\n } // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n\n\n function changeEnd(change) {\n if (!change.text) {\n return change.to;\n }\n\n return Pos(change.from.line + change.text.length - 1, lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0));\n } // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n\n\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) {\n return pos;\n }\n\n if (cmp(pos, change.to) <= 0) {\n return changeEnd(change);\n }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1,\n ch = pos.ch;\n\n if (pos.line == change.to.line) {\n ch += changeEnd(change).ch - change.to.ch;\n }\n\n return Pos(line, ch);\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change), adjustForChange(range.head, change)));\n }\n\n return normalizeSelection(doc.cm, out, doc.sel.primIndex);\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line) {\n return Pos(nw.line, pos.ch - old.ch + nw.ch);\n } else {\n return Pos(nw.line + (pos.line - old.line), pos.ch);\n }\n } // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n\n\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0),\n newPrev = oldPrev;\n\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n\n if (hint == \"around\") {\n var range = doc.sel.ranges[i],\n inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n\n return new Selection(out, doc.sel.primIndex);\n } // Used to get the editor into a consistent state again when options change.\n\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n if (line.styles) {\n line.styles = null;\n }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n\n if (cm.curOp) {\n regChange(cm);\n }\n } // DOCUMENT DATA STRUCTURE\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n\n\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" && (!doc.cm || doc.cm.options.wholeLineUpdateBefore);\n } // Perform a change on the document data structure.\n\n\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {\n return markedSpans ? markedSpans[n] : null;\n }\n\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n\n function linesFor(start, end) {\n var result = [];\n\n for (var i = start; i < end; ++i) {\n result.push(new Line(text[i], spansFor(i), estimateHeight));\n }\n\n return result;\n }\n\n var from = change.from,\n to = change.to,\n text = change.text;\n var firstLine = getLine(doc, from.line),\n lastLine = getLine(doc, to.line);\n var lastText = lst(text),\n lastSpans = spansFor(text.length - 1),\n nlines = to.line - from.line; // Adjust the line structure\n\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n\n if (nlines) {\n doc.remove(from.line, nlines);\n }\n\n if (added.length) {\n doc.insert(from.line, added);\n }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n\n if (nlines > 1) {\n doc.remove(from.line + 1, nlines - 1);\n }\n\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n } // Call f for all linked documents.\n\n\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) {\n for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n\n if (rel.doc == skip) {\n continue;\n }\n\n var shared = sharedHist && rel.sharedHist;\n\n if (sharedHistOnly && !shared) {\n continue;\n }\n\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n }\n }\n }\n\n propagate(doc, null, true);\n } // Attach a document to an editor.\n\n\n function attachDoc(cm, doc) {\n if (doc.cm) {\n throw new Error(\"This document is already in use.\");\n }\n\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n\n if (!cm.options.lineWrapping) {\n findMaxLine(cm);\n }\n\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(startGen) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = [];\n this.undone = [];\n this.undoDepth = Infinity; // Used to track when changes can be merged into a single undo\n // event\n\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null; // Used by the isClean() method\n\n this.generation = this.maxGeneration = startGen || 1;\n } // Create a history change event from an updateDoc-style change\n // object.\n\n\n function historyChangeFromChange(doc, change) {\n var histChange = {\n from: copyPos(change.from),\n to: changeEnd(change),\n text: getBetween(doc, change.from, change.to)\n };\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) {\n return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n }, true);\n return histChange;\n } // Pop all selection events off the end of a history array. Stop at\n // a change event.\n\n\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n\n if (last.ranges) {\n array.pop();\n } else {\n break;\n }\n }\n } // Find the top change event in the history. Pop off selection\n // events that are in the way.\n\n\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done);\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done);\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done);\n }\n } // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n\n\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date(),\n cur;\n var last;\n\n if ((hist.lastOp == opId || hist.lastOrigin == change.origin && change.origin && (change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500) || change.origin.charAt(0) == \"*\")) && (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n\n if (!before || !before.ranges) {\n pushSelectionToHistory(doc.sel, hist.done);\n }\n\n cur = {\n changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation\n };\n hist.done.push(cur);\n\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n\n if (!hist.done[0].ranges) {\n hist.done.shift();\n }\n }\n }\n\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) {\n signal(doc, \"historyAdded\");\n }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" || ch == \"+\" && prev.ranges.length == sel.ranges.length && prev.somethingSelected() == sel.somethingSelected() && new Date() - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500);\n } // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n\n\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history,\n origin = options && options.origin; // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n\n if (opId == hist.lastSelOp || origin && hist.lastSelOrigin == origin && (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))) {\n hist.done[hist.done.length - 1] = sel;\n } else {\n pushSelectionToHistory(sel, hist.done);\n }\n\n hist.lastSelTime = +new Date();\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n\n if (options && options.clearRedo !== false) {\n clearSelectionEvents(hist.undone);\n }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n\n if (!(top && top.ranges && top.equals(sel))) {\n dest.push(sel);\n }\n } // Used to store marked span information in the history.\n\n\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id],\n n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans) {\n (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans;\n }\n\n ++n;\n });\n } // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n\n\n function removeClearedSpans(spans) {\n if (!spans) {\n return null;\n }\n\n var out;\n\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) {\n if (!out) {\n out = spans.slice(0, i);\n }\n } else if (out) {\n out.push(spans[i]);\n }\n }\n\n return !out ? spans : out.length ? out : null;\n } // Retrieve and filter the old marked spans stored in a change event.\n\n\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n\n if (!found) {\n return null;\n }\n\n var nw = [];\n\n for (var i = 0; i < change.text.length; ++i) {\n nw.push(removeClearedSpans(found[i]));\n }\n\n return nw;\n } // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n\n\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n\n if (!old) {\n return stretched;\n }\n\n if (!stretched) {\n return old;\n }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i],\n stretchCur = stretched[i];\n\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n\n for (var k = 0; k < oldCur.length; ++k) {\n if (oldCur[k].marker == span.marker) {\n continue spans;\n }\n }\n\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n\n return old;\n } // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n\n\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue;\n }\n\n var changes = event.changes,\n newChanges = [];\n copy.push({\n changes: newChanges\n });\n\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j],\n m = void 0;\n newChanges.push({\n from: change.from,\n to: change.to,\n text: change.text\n });\n\n if (newGroup) {\n for (var prop in change) {\n if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n }\n }\n }\n }\n }\n\n return copy;\n } // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n\n\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n\n if (posBefore != cmp(other, anchor) < 0) {\n anchor = head;\n head = other;\n } else if (posBefore != cmp(head, other) < 0) {\n head = other;\n }\n }\n\n return new Range(anchor, head);\n } else {\n return new Range(other || head, head);\n }\n } // Extend the primary selection range, discard the rest.\n\n\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) {\n extend = doc.cm && (doc.cm.display.shift || doc.extend);\n }\n\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n } // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n\n\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend);\n }\n\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n } // Updates a single range in the selection.\n\n\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n } // Reset the selection to a single range.\n\n\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n } // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n\n\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function (ranges) {\n this.ranges = [];\n\n for (var i = 0; i < ranges.length; i++) {\n this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), clipPos(doc, ranges[i].head));\n }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n\n if (doc.cm) {\n signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj);\n }\n\n if (obj.ranges != sel.ranges) {\n return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1);\n } else {\n return sel;\n }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done,\n last = lst(done);\n\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n } // Set a new selection.\n\n\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\")) {\n sel = filterSelectionChange(doc, sel, options);\n }\n\n var bias = options && options.bias || (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm) {\n ensureCursorVisible(doc.cm);\n }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) {\n return;\n }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n\n signalLater(doc, \"cursorActivity\", doc);\n } // Verify that the selection does not partially select any atomic\n // marked ranges.\n\n\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n } // Return a selection that does not partially select any atomic\n // ranges.\n\n\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) {\n out = sel.ranges.slice(0, i);\n }\n\n out[i] = new Range(newAnchor, newHead);\n }\n }\n\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel;\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n\n if (line.markedSpans) {\n for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i],\n m = sp.marker; // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n\n var preventCursorLeft = \"selectLeft\" in m ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = \"selectRight\" in m ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n\n if (m.explicitlyCleared) {\n if (!line.markedSpans) {\n break;\n } else {\n --i;\n continue;\n }\n }\n }\n\n if (!m.atomic) {\n continue;\n }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1),\n diff = void 0;\n\n if (dir < 0 ? preventCursorRight : preventCursorLeft) {\n near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null);\n }\n\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) {\n return skipAtomicInner(doc, near, pos, dir, mayClear);\n }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n\n if (dir < 0 ? preventCursorLeft : preventCursorRight) {\n far = movePos(doc, far, dir, far.line == pos.line ? line : null);\n }\n\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null;\n }\n }\n }\n\n return pos;\n } // Ensure a given position is not inside an atomic range.\n\n\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, dir, true) || skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true);\n\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0);\n }\n\n return found;\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) {\n return clipPos(doc, Pos(pos.line - 1));\n } else {\n return null;\n }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) {\n return Pos(pos.line + 1, 0);\n } else {\n return null;\n }\n } else {\n return new Pos(pos.line, pos.ch + dir);\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n } // UPDATING\n // Allow \"beforeChange\" event handlers to influence a change\n\n\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () {\n return obj.canceled = true;\n }\n };\n\n if (update) {\n obj.update = function (from, to, text, origin) {\n if (from) {\n obj.from = clipPos(doc, from);\n }\n\n if (to) {\n obj.to = clipPos(doc, to);\n }\n\n if (text) {\n obj.text = text;\n }\n\n if (origin !== undefined) {\n obj.origin = origin;\n }\n };\n }\n\n signal(doc, \"beforeChange\", doc, obj);\n\n if (doc.cm) {\n signal(doc.cm, \"beforeChange\", doc.cm, obj);\n }\n\n if (obj.canceled) {\n if (doc.cm) {\n doc.cm.curOp.updateInput = 2;\n }\n\n return null;\n }\n\n return {\n from: obj.from,\n to: obj.to,\n text: obj.text,\n origin: obj.origin\n };\n } // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n\n\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) {\n return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly);\n }\n\n if (doc.cm.state.suppressEdits) {\n return;\n }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n\n if (!change) {\n return;\n }\n } // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n\n\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n\n if (split) {\n for (var i = split.length - 1; i >= 0; --i) {\n makeChangeInner(doc, {\n from: split[i].from,\n to: split[i].to,\n text: i ? [\"\"] : change.text,\n origin: change.origin\n });\n }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) {\n return;\n }\n\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n } // Revert a change stored in a document's history.\n\n\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n\n if (suppress && !allowSelectionOnly) {\n return;\n }\n\n var hist = doc.history,\n event,\n selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone,\n dest = type == \"undo\" ? hist.undone : hist.done; // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n\n var i = 0;\n\n for (; i < source.length; i++) {\n event = source[i];\n\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) {\n break;\n }\n }\n\n if (i == source.length) {\n return;\n }\n\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {\n clearRedo: false\n });\n return;\n }\n\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return;\n } else {\n break;\n }\n } // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n\n\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({\n changes: antiChanges,\n generation: hist.generation\n });\n hist.generation = event.generation || ++hist.maxGeneration;\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function (i) {\n var change = event.changes[i];\n change.origin = type;\n\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {};\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n\n if (!i && doc.cm) {\n doc.cm.scrollIntoView({\n from: change.from,\n to: changeEnd(change)\n });\n }\n\n var rebased = []; // Propagate to the linked documents\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop(i$1);\n if (returned) return returned.v;\n }\n } // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n\n\n function shiftDoc(doc, distance) {\n if (distance == 0) {\n return;\n }\n\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) {\n return new Range(Pos(range.anchor.line + distance, range.anchor.ch), Pos(range.head.line + distance, range.head.ch));\n }), doc.sel.primIndex);\n\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) {\n regLineChange(doc.cm, l, \"gutter\");\n }\n }\n } // More lower-level change function, handling only a single document\n // (not linked ones).\n\n\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans);\n }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return;\n }\n\n if (change.from.line > doc.lastLine()) {\n return;\n } // Clip the change to the size of this doc\n\n\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {\n from: Pos(doc.first, 0),\n to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)],\n origin: change.origin\n };\n }\n\n var last = doc.lastLine();\n\n if (change.to.line > last) {\n change = {\n from: change.from,\n to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]],\n origin: change.origin\n };\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) {\n selAfter = computeSelAfterChange(doc, change);\n }\n\n if (doc.cm) {\n makeChangeSingleDocInEditor(doc.cm, change, spans);\n } else {\n updateDoc(doc, change, spans);\n }\n\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) {\n doc.cantEdit = false;\n }\n } // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n\n\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc,\n display = cm.display,\n from = change.from,\n to = change.to;\n var recomputeMaxLength = false,\n checkWidthStart = from.line;\n\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true;\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1) {\n signalCursorActivity(cm);\n }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n\n if (recomputeMaxLength) {\n cm.curOp.updateMaxLine = true;\n }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n var lendiff = change.text.length - (to.line - from.line) - 1; // Remember that these lines changed, for updating the display\n\n if (change.full) {\n regChange(cm);\n } else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) {\n regLineChange(cm, from.line, \"text\");\n } else {\n regChange(cm, from.line, to.line + 1, lendiff);\n }\n\n var changesHandler = hasHandler(cm, \"changes\"),\n changeHandler = hasHandler(cm, \"change\");\n\n if (changeHandler || changesHandler) {\n var obj = {\n from: from,\n to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n\n if (changeHandler) {\n signalLater(cm, \"change\", cm, obj);\n }\n\n if (changesHandler) {\n (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj);\n }\n }\n\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) {\n to = from;\n }\n\n if (cmp(to, from) < 0) {\n assign = [to, from], from = assign[0], to = assign[1];\n }\n\n if (typeof code == \"string\") {\n code = doc.splitLines(code);\n }\n\n makeChange(doc, {\n from: from,\n to: to,\n text: code,\n origin: origin\n });\n } // Rebasing/resetting history to deal with externally-sourced changes\n\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n } // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n\n\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i],\n ok = true;\n\n if (sub.ranges) {\n if (!sub.copied) {\n sub = array[i] = sub.deepCopy();\n sub.copied = true;\n }\n\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n\n continue;\n }\n\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break;\n }\n }\n\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line,\n to = change.to.line,\n diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n } // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n\n\n function changeLine(doc, handle, changeType, op) {\n var no = handle,\n line = handle;\n\n if (typeof handle == \"number\") {\n line = getLine(doc, clipLine(doc, handle));\n } else {\n no = lineNo(handle);\n }\n\n if (no == null) {\n return null;\n }\n\n if (op(line, no) && doc.cm) {\n regLineChange(doc.cm, no, changeType);\n }\n\n return line;\n } // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function () {\n return this.lines.length;\n },\n // Remove the n lines at offset 'at'.\n removeInner: function (at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n\n this.lines.splice(at, n);\n },\n // Helper used to collapse a small branch into a single leaf.\n collapse: function (lines) {\n lines.push.apply(lines, this.lines);\n },\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function (at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n }\n },\n // Used to iterate over a part of the tree.\n iterN: function (at, n, op) {\n for (var e = at + n; at < e; ++at) {\n if (op(this.lines[at])) {\n return true;\n }\n }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0,\n height = 0;\n\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize();\n height += ch.height;\n ch.parent = this;\n }\n\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function () {\n return this.size;\n },\n removeInner: function (at, n) {\n this.size -= n;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n sz = child.chunkSize();\n\n if (at < sz) {\n var rm = Math.min(n, sz - at),\n oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n\n if (sz == rm) {\n this.children.splice(i--, 1);\n child.parent = null;\n }\n\n if ((n -= rm) == 0) {\n break;\n }\n\n at = 0;\n } else {\n at -= sz;\n }\n } // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n\n\n if (this.size - n < 25 && (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n collapse: function (lines) {\n for (var i = 0; i < this.children.length; ++i) {\n this.children[i].collapse(lines);\n }\n },\n insertInner: function (at, lines, height) {\n this.size += lines.length;\n this.height += height;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n sz = child.chunkSize();\n\n if (at <= sz) {\n child.insertInner(at, lines, height);\n\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n\n break;\n }\n\n at -= sz;\n }\n },\n // When a node has grown, check whether it should be split.\n maybeSpill: function () {\n if (this.children.length <= 10) {\n return;\n }\n\n var me = this;\n\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n\n if (!me.parent) {\n // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n\n sibling.parent = me.parent;\n } while (me.children.length > 10);\n\n me.parent.maybeSpill();\n },\n iterN: function (at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n sz = child.chunkSize();\n\n if (at < sz) {\n var used = Math.min(n, sz - at);\n\n if (child.iterN(at, used, op)) {\n return true;\n }\n\n if ((n -= used) == 0) {\n break;\n }\n\n at = 0;\n } else {\n at -= sz;\n }\n }\n }\n }; // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function (doc, node, options) {\n if (options) {\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n this[opt] = options[opt];\n }\n }\n }\n\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm,\n ws = this.line.widgets,\n line = this.line,\n no = lineNo(line);\n\n if (no == null || !ws) {\n return;\n }\n\n for (var i = 0; i < ws.length; ++i) {\n if (ws[i] == this) {\n ws.splice(i--, 1);\n }\n }\n\n if (!ws.length) {\n line.widgets = null;\n }\n\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n var oldH = this.height,\n cm = this.doc.cm,\n line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n\n if (!diff) {\n return;\n }\n\n if (!lineIsHidden(this.doc, line)) {\n updateLineHeight(line, line.height + diff);\n }\n\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < (cm.curOp && cm.curOp.scrollTop || cm.doc.scrollTop)) {\n addToScrollTop(cm, diff);\n }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n\n if (cm && widget.noHScroll) {\n cm.display.alignWidgets = true;\n }\n\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n\n if (widget.insertAt == null) {\n widgets.push(widget);\n } else {\n widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget);\n }\n\n widget.line = line;\n\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n\n if (aboveVisible) {\n addToScrollTop(cm, widget.height);\n }\n\n cm.curOp.forceUpdate = true;\n }\n\n return true;\n });\n\n if (cm) {\n signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle));\n }\n\n return widget;\n } // TEXTMARKERS\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n\n\n var nextMarkerId = 0;\n\n var TextMarker = function (doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n }; // Clear the marker.\n\n\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) {\n return;\n }\n\n var cm = this.doc.cm,\n withOp = cm && !cm.curOp;\n\n if (withOp) {\n startOperation(cm);\n }\n\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n\n if (found) {\n signalLater(this, \"clear\", found.from, found.to);\n }\n }\n\n var min = null,\n max = null;\n\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n\n if (cm && !this.collapsed) {\n regLineChange(cm, lineNo(line), \"text\");\n } else if (cm) {\n if (span.to != null) {\n max = lineNo(line);\n }\n\n if (span.from != null) {\n min = lineNo(line);\n }\n }\n\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) {\n updateLineHeight(line, textHeight(cm.display));\n }\n }\n\n if (cm && this.collapsed && !cm.options.lineWrapping) {\n for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]),\n len = lineLength(visual);\n\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n }\n }\n\n if (min != null && cm && this.collapsed) {\n regChange(cm, min, max + 1);\n }\n\n this.lines.length = 0;\n this.explicitlyCleared = true;\n\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n\n if (cm) {\n reCheckSelection(cm.doc);\n }\n }\n\n if (cm) {\n signalLater(cm, \"markerCleared\", cm, this, min, max);\n }\n\n if (withOp) {\n endOperation(cm);\n }\n\n if (this.parent) {\n this.parent.clear();\n }\n }; // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n\n\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") {\n side = 1;\n }\n\n var from, to;\n\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n\n if (side == -1) {\n return from;\n }\n }\n\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n\n if (side == 1) {\n return to;\n }\n }\n }\n\n return from && {\n from: from,\n to: to\n };\n }; // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n\n\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n var pos = this.find(-1, true),\n widget = this,\n cm = this.doc.cm;\n\n if (!pos || !cm) {\n return;\n }\n\n runInOp(cm, function () {\n var line = pos.line,\n lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n\n cm.curOp.updateMaxLine = true;\n\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n\n if (dHeight) {\n updateLineHeight(line, line.height + dHeight);\n }\n }\n\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) {\n (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this);\n }\n }\n\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n\n eventMixin(TextMarker); // Create a marker, wire it up to the right lines, and\n\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) {\n return markTextShared(doc, from, to, options, type);\n } // Ensure we are in an operation.\n\n\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, markText)(doc, from, to, options, type);\n }\n\n var marker = new TextMarker(doc, type),\n diff = cmp(from, to);\n\n if (options) {\n copyObj(options, marker, false);\n } // Don't connect empty markers unless clearWhenEmpty is false\n\n\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) {\n return marker;\n }\n\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n\n if (!options.handleMouseEvents) {\n marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\");\n }\n\n if (options.insertLeft) {\n marker.widgetNode.insertLeft = true;\n }\n }\n\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) || from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) {\n throw new Error(\"Inserting collapsed marker partially overlapping an existing one\");\n }\n\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory) {\n addChangeToHistory(doc, {\n from: from,\n to: to,\n origin: \"markText\"\n }, doc.sel, NaN);\n }\n\n var curLine = from.line,\n cm = doc.cm,\n updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) {\n updateMaxLine = true;\n }\n\n if (marker.collapsed && curLine != from.line) {\n updateLineHeight(line, 0);\n }\n\n addMarkedSpan(line, new MarkedSpan(marker, curLine == from.line ? from.ch : null, curLine == to.line ? to.ch : null));\n ++curLine;\n }); // lineIsHidden depends on the presence of the spans, so needs a second pass\n\n if (marker.collapsed) {\n doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) {\n updateLineHeight(line, 0);\n }\n });\n }\n\n if (marker.clearOnEnter) {\n on(marker, \"beforeCursorEnter\", function () {\n return marker.clear();\n });\n }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n\n if (doc.history.done.length || doc.history.undone.length) {\n doc.clearHistory();\n }\n }\n\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n\n if (cm) {\n // Sync editor state\n if (updateMaxLine) {\n cm.curOp.updateMaxLine = true;\n }\n\n if (marker.collapsed) {\n regChange(cm, from.line, to.line + 1);\n } else if (marker.className || marker.startStyle || marker.endStyle || marker.css || marker.attributes || marker.title) {\n for (var i = from.line; i <= to.line; i++) {\n regLineChange(cm, i, \"text\");\n }\n }\n\n if (marker.atomic) {\n reCheckSelection(cm.doc);\n }\n\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n\n return marker;\n } // SHARED TEXTMARKERS\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n\n\n var SharedTextMarker = function (markers, primary) {\n this.markers = markers;\n this.primary = primary;\n\n for (var i = 0; i < markers.length; ++i) {\n markers[i].parent = this;\n }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) {\n return;\n }\n\n this.explicitlyCleared = true;\n\n for (var i = 0; i < this.markers.length; ++i) {\n this.markers[i].clear();\n }\n\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj);\n };\n\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)],\n primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) {\n options.widgetNode = widget.cloneNode(true);\n }\n\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n\n for (var i = 0; i < doc.linked.length; ++i) {\n if (doc.linked[i].isParent) {\n return;\n }\n }\n\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary);\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) {\n return m.parent;\n });\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i],\n pos = marker.find();\n var mFrom = doc.clipPos(pos.from),\n mTo = doc.clipPos(pos.to);\n\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function (i) {\n var marker = markers[i],\n linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) {\n return linked.push(d);\n });\n\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop(i);\n }\n\n var nextDocId = 0;\n\n var Doc = function (text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) {\n return new Doc(text, mode, firstLine, lineSep, direction);\n }\n\n if (firstLine == null) {\n firstLine = 0;\n }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = direction == \"rtl\" ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") {\n text = this.splitLines(text);\n }\n\n updateDoc(this, {\n from: start,\n to: start,\n text: text\n });\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function (from, to, op) {\n if (op) {\n this.iterN(from - this.first, to - from, op);\n } else {\n this.iterN(this.first, this.first + this.size, from);\n }\n },\n // Non-public interface for adding and removing lines.\n insert: function (at, lines) {\n var height = 0;\n\n for (var i = 0; i < lines.length; ++i) {\n height += lines[i].height;\n }\n\n this.insertInner(at - this.first, lines, height);\n },\n remove: function (at, n) {\n this.removeInner(at - this.first, n);\n },\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n getValue: function (lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n\n if (lineSep === false) {\n return lines;\n }\n\n return lines.join(lineSep || this.lineSeparator());\n },\n setValue: docMethodOp(function (code) {\n var top = Pos(this.first, 0),\n last = this.first + this.size - 1;\n makeChange(this, {\n from: top,\n to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code),\n origin: \"setValue\",\n full: true\n }, true);\n\n if (this.cm) {\n scrollToCoords(this.cm, 0, 0);\n }\n\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function (code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function (from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n\n if (lineSep === false) {\n return lines;\n }\n\n return lines.join(lineSep || this.lineSeparator());\n },\n getLine: function (line) {\n var l = this.getLineHandle(line);\n return l && l.text;\n },\n getLineHandle: function (line) {\n if (isLine(this, line)) {\n return getLine(this, line);\n }\n },\n getLineNumber: function (line) {\n return lineNo(line);\n },\n getLineHandleVisualStart: function (line) {\n if (typeof line == \"number\") {\n line = getLine(this, line);\n }\n\n return visualLine(line);\n },\n lineCount: function () {\n return this.size;\n },\n firstLine: function () {\n return this.first;\n },\n lastLine: function () {\n return this.first + this.size - 1;\n },\n clipPos: function (pos) {\n return clipPos(this, pos);\n },\n getCursor: function (start) {\n var range = this.sel.primary(),\n pos;\n\n if (start == null || start == \"head\") {\n pos = range.head;\n } else if (start == \"anchor\") {\n pos = range.anchor;\n } else if (start == \"end\" || start == \"to\" || start === false) {\n pos = range.to();\n } else {\n pos = range.from();\n }\n\n return pos;\n },\n listSelections: function () {\n return this.sel.ranges;\n },\n somethingSelected: function () {\n return this.sel.somethingSelected();\n },\n setCursor: docMethodOp(function (line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function (anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function (head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function (heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function (f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function (ranges, primary, options) {\n if (!ranges.length) {\n return;\n }\n\n var out = [];\n\n for (var i = 0; i < ranges.length; i++) {\n out[i] = new Range(clipPos(this, ranges[i].anchor), clipPos(this, ranges[i].head));\n }\n\n if (primary == null) {\n primary = Math.min(ranges.length - 1, this.sel.primIndex);\n }\n\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function (anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n getSelection: function (lineSep) {\n var ranges = this.sel.ranges,\n lines;\n\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n\n if (lineSep === false) {\n return lines;\n } else {\n return lines.join(lineSep || this.lineSeparator());\n }\n },\n getSelections: function (lineSep) {\n var parts = [],\n ranges = this.sel.ranges;\n\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n\n if (lineSep !== false) {\n sel = sel.join(lineSep || this.lineSeparator());\n }\n\n parts[i] = sel;\n }\n\n return parts;\n },\n replaceSelection: function (code, collapse, origin) {\n var dup = [];\n\n for (var i = 0; i < this.sel.ranges.length; i++) {\n dup[i] = code;\n }\n\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function (code, collapse, origin) {\n var changes = [],\n sel = this.sel;\n\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {\n from: range.from(),\n to: range.to(),\n text: this.splitLines(code[i]),\n origin: origin\n };\n }\n\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--) {\n makeChange(this, changes[i$1]);\n }\n\n if (newSel) {\n setSelectionReplaceHistory(this, newSel);\n } else if (this.cm) {\n ensureCursorVisible(this.cm);\n }\n }),\n undo: docMethodOp(function () {\n makeChangeFromHistory(this, \"undo\");\n }),\n redo: docMethodOp(function () {\n makeChangeFromHistory(this, \"redo\");\n }),\n undoSelection: docMethodOp(function () {\n makeChangeFromHistory(this, \"undo\", true);\n }),\n redoSelection: docMethodOp(function () {\n makeChangeFromHistory(this, \"redo\", true);\n }),\n setExtending: function (val) {\n this.extend = val;\n },\n getExtending: function () {\n return this.extend;\n },\n historySize: function () {\n var hist = this.history,\n done = 0,\n undone = 0;\n\n for (var i = 0; i < hist.done.length; i++) {\n if (!hist.done[i].ranges) {\n ++done;\n }\n }\n\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) {\n if (!hist.undone[i$1].ranges) {\n ++undone;\n }\n }\n\n return {\n undo: done,\n redo: undone\n };\n },\n clearHistory: function () {\n var this$1 = this;\n this.history = new History(this.history.maxGeneration);\n linkedDocs(this, function (doc) {\n return doc.history = this$1.history;\n }, true);\n },\n markClean: function () {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function (forceSplit) {\n if (forceSplit) {\n this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null;\n }\n\n return this.history.generation;\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration);\n },\n getHistory: function () {\n return {\n done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)\n };\n },\n setHistory: function (histData) {\n var hist = this.history = new History(this.history.maxGeneration);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n setGutterMarker: docMethodOp(function (line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n\n if (!value && isEmpty(markers)) {\n line.gutterMarkers = null;\n }\n\n return true;\n });\n }),\n clearGutter: docMethodOp(function (gutterID) {\n var this$1 = this;\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n\n if (isEmpty(line.gutterMarkers)) {\n line.gutterMarkers = null;\n }\n\n return true;\n });\n }\n });\n }),\n lineInfo: function (line) {\n var n;\n\n if (typeof line == \"number\") {\n if (!isLine(this, line)) {\n return null;\n }\n\n n = line;\n line = getLine(this, line);\n\n if (!line) {\n return null;\n }\n } else {\n n = lineNo(line);\n\n if (n == null) {\n return null;\n }\n }\n\n return {\n line: n,\n handle: line,\n text: line.text,\n gutterMarkers: line.gutterMarkers,\n textClass: line.textClass,\n bgClass: line.bgClass,\n wrapClass: line.wrapClass,\n widgets: line.widgets\n };\n },\n addLineClass: docMethodOp(function (handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n\n if (!line[prop]) {\n line[prop] = cls;\n } else if (classTest(cls).test(line[prop])) {\n return false;\n } else {\n line[prop] += \" \" + cls;\n }\n\n return true;\n });\n }),\n removeLineClass: docMethodOp(function (handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n\n if (!cur) {\n return false;\n } else if (cls == null) {\n line[prop] = null;\n } else {\n var found = cur.match(classTest(cls));\n\n if (!found) {\n return false;\n }\n\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n\n return true;\n });\n }),\n addLineWidget: docMethodOp(function (handle, node, options) {\n return addLineWidget(this, handle, node, options);\n }),\n removeLineWidget: function (widget) {\n widget.clear();\n },\n markText: function (from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\");\n },\n setBookmark: function (pos, options) {\n var realOpts = {\n replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false,\n shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents\n };\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\");\n },\n findMarksAt: function (pos) {\n pos = clipPos(this, pos);\n var markers = [],\n spans = getLine(this, pos.line).markedSpans;\n\n if (spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if ((span.from == null || span.from <= pos.ch) && (span.to == null || span.to >= pos.ch)) {\n markers.push(span.marker.parent || span.marker);\n }\n }\n }\n\n return markers;\n },\n findMarks: function (from, to, filter) {\n from = clipPos(this, from);\n to = clipPos(this, to);\n var found = [],\n lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n\n if (spans) {\n for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to || span.from == null && lineNo != from.line || span.from != null && lineNo == to.line && span.from >= to.ch) && (!filter || filter(span.marker))) {\n found.push(span.marker.parent || span.marker);\n }\n }\n }\n\n ++lineNo;\n });\n return found;\n },\n getAllMarks: function () {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n if (sps[i].from != null) {\n markers.push(sps[i].marker);\n }\n }\n }\n });\n return markers;\n },\n posFromIndex: function (off) {\n var ch,\n lineNo = this.first,\n sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n\n if (sz > off) {\n ch = off;\n return true;\n }\n\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch));\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n\n if (coords.line < this.first || coords.ch < 0) {\n return 0;\n }\n\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) {\n // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index;\n },\n copy: function (copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop;\n doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n\n return doc;\n },\n linkedDoc: function (options) {\n if (!options) {\n options = {};\n }\n\n var from = this.first,\n to = this.first + this.size;\n\n if (options.from != null && options.from > from) {\n from = options.from;\n }\n\n if (options.to != null && options.to < to) {\n to = options.to;\n }\n\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n\n if (options.sharedHist) {\n copy.history = this.history;\n }\n\n (this.linked || (this.linked = [])).push({\n doc: copy,\n sharedHist: options.sharedHist\n });\n copy.linked = [{\n doc: this,\n isParent: true,\n sharedHist: options.sharedHist\n }];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy;\n },\n unlinkDoc: function (other) {\n if (other instanceof CodeMirror) {\n other = other.doc;\n }\n\n if (this.linked) {\n for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n\n if (link.doc != other) {\n continue;\n }\n\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break;\n }\n } // If the histories were shared, split them again\n\n\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) {\n return splitIds.push(doc.id);\n }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function (f) {\n linkedDocs(this, f);\n },\n getMode: function () {\n return this.mode;\n },\n getEditor: function () {\n return this.cm;\n },\n splitLines: function (str) {\n if (this.lineSep) {\n return str.split(this.lineSep);\n }\n\n return splitLinesAuto(str);\n },\n lineSeparator: function () {\n return this.lineSep || \"\\n\";\n },\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") {\n dir = \"ltr\";\n }\n\n if (dir == this.direction) {\n return;\n }\n\n this.direction = dir;\n this.iter(function (line) {\n return line.order = null;\n });\n\n if (this.cm) {\n directionChanged(this.cm);\n }\n })\n }); // Public alias.\n\n Doc.prototype.eachLine = Doc.prototype.iter; // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e_preventDefault(e);\n\n if (ie) {\n lastDrop = +new Date();\n }\n\n var pos = posFromMouse(cm, e, true),\n files = e.dataTransfer.files;\n\n if (!pos || cm.isReadOnly()) {\n return;\n } // Might be a file drop, in which case we simply extract the text\n // and insert it.\n\n\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length,\n text = Array(n),\n read = 0;\n\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {\n from: pos,\n to: pos,\n text: cm.doc.splitLines(text.filter(function (t) {\n return t != null;\n }).join(cm.doc.lineSeparator())),\n origin: \"paste\"\n };\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes && indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return;\n }\n\n var reader = new FileReader();\n\n reader.onerror = function () {\n return markAsReadAndPasteIfAllFilesAreRead();\n };\n\n reader.onload = function () {\n var content = reader.result;\n\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return;\n }\n\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n\n reader.readAsText(file);\n };\n\n for (var i = 0; i < files.length; i++) {\n readTextFromFile(files[i], i);\n }\n } else {\n // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e); // Ensure the editor is re-focused\n\n setTimeout(function () {\n return cm.display.input.focus();\n }, 20);\n return;\n }\n\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n\n if (text$1) {\n var selected;\n\n if (cm.state.draggingText && !cm.state.draggingText.copy) {\n selected = cm.listSelections();\n }\n\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n\n if (selected) {\n for (var i$1 = 0; i$1 < selected.length; ++i$1) {\n replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\");\n }\n }\n\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n } catch (e$1) {}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date() - lastDrop < 100)) {\n e_stop(e);\n return;\n }\n\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\"; // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img); // Force a relayout, or Opera won't use our image for some obscure reason\n\n img._top = img.offsetTop;\n }\n\n e.dataTransfer.setDragImage(img, 0, 0);\n\n if (presto) {\n img.parentNode.removeChild(img);\n }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n\n if (!pos) {\n return;\n }\n\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n } // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) {\n return;\n }\n\n var byClass = document.getElementsByClassName(\"CodeMirror\"),\n editors = [];\n\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n\n if (cm) {\n editors.push(cm);\n }\n }\n\n if (editors.length) {\n editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) {\n f(editors[i]);\n }\n });\n }\n }\n\n var globalsRegistered = false;\n\n function ensureGlobalHandlers() {\n if (globalsRegistered) {\n return;\n }\n\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) {\n resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100);\n }\n }); // When the window loses focus, we want to show the editor as blurred\n\n on(window, \"blur\", function () {\n return forEachCodeMirror(onBlur);\n });\n } // Called when the window resizes\n\n\n function onResize(cm) {\n var d = cm.display; // Might be a text scaling operation, clear size caches.\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\",\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Ctrl\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"PrintScrn\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Mod\",\n 92: \"Mod\",\n 93: \"Mod\",\n 106: \"*\",\n 107: \"=\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 145: \"ScrollLock\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\",\n 224: \"Mod\",\n 63232: \"Up\",\n 63233: \"Down\",\n 63234: \"Left\",\n 63235: \"Right\",\n 63272: \"Delete\",\n 63273: \"Home\",\n 63275: \"End\",\n 63276: \"PageUp\",\n 63277: \"PageDown\",\n 63302: \"Insert\"\n }; // Number keys\n\n for (var i = 0; i < 10; i++) {\n keyNames[i + 48] = keyNames[i + 96] = String(i);\n } // Alphabetic keys\n\n\n for (var i$1 = 65; i$1 <= 90; i$1++) {\n keyNames[i$1] = String.fromCharCode(i$1);\n } // Function keys\n\n\n for (var i$2 = 1; i$2 <= 12; i$2++) {\n keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2;\n }\n\n var keyMap = {};\n keyMap.basic = {\n \"Left\": \"goCharLeft\",\n \"Right\": \"goCharRight\",\n \"Up\": \"goLineUp\",\n \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\",\n \"Home\": \"goLineStartSmart\",\n \"PageUp\": \"goPageUp\",\n \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\",\n \"Backspace\": \"delCharBefore\",\n \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\",\n \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\",\n \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n }; // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\",\n \"Ctrl-D\": \"deleteLine\",\n \"Ctrl-Z\": \"undo\",\n \"Shift-Ctrl-Z\": \"redo\",\n \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\",\n \"Ctrl-End\": \"goDocEnd\",\n \"Ctrl-Up\": \"goLineUp\",\n \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\",\n \"Ctrl-Right\": \"goGroupRight\",\n \"Alt-Left\": \"goLineStart\",\n \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\",\n \"Ctrl-Delete\": \"delGroupAfter\",\n \"Ctrl-S\": \"save\",\n \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\",\n \"Shift-Ctrl-G\": \"findPrev\",\n \"Shift-Ctrl-F\": \"replace\",\n \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\",\n \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\",\n \"Shift-Ctrl-U\": \"redoSelection\",\n \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n }; // Very basic readline/emacs-style bindings, which are standard on Mac.\n\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\",\n \"Ctrl-B\": \"goCharLeft\",\n \"Ctrl-P\": \"goLineUp\",\n \"Ctrl-N\": \"goLineDown\",\n \"Alt-F\": \"goWordRight\",\n \"Alt-B\": \"goWordLeft\",\n \"Ctrl-A\": \"goLineStart\",\n \"Ctrl-E\": \"goLineEnd\",\n \"Ctrl-V\": \"goPageDown\",\n \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\",\n \"Ctrl-H\": \"delCharBefore\",\n \"Alt-D\": \"delWordAfter\",\n \"Alt-Backspace\": \"delWordBefore\",\n \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\",\n \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\",\n \"Cmd-D\": \"deleteLine\",\n \"Cmd-Z\": \"undo\",\n \"Shift-Cmd-Z\": \"redo\",\n \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\",\n \"Cmd-Up\": \"goDocStart\",\n \"Cmd-End\": \"goDocEnd\",\n \"Cmd-Down\": \"goDocEnd\",\n \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\",\n \"Cmd-Left\": \"goLineLeft\",\n \"Cmd-Right\": \"goLineRight\",\n \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\",\n \"Alt-Delete\": \"delGroupAfter\",\n \"Cmd-S\": \"save\",\n \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\",\n \"Shift-Cmd-G\": \"findPrev\",\n \"Cmd-Alt-F\": \"replace\",\n \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\",\n \"Cmd-]\": \"indentMore\",\n \"Cmd-Backspace\": \"delWrappedLineLeft\",\n \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\",\n \"Shift-Cmd-U\": \"redoSelection\",\n \"Ctrl-Up\": \"goDocStart\",\n \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault; // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n\n if (/^(cmd|meta|m)$/i.test(mod)) {\n cmd = true;\n } else if (/^a(lt)?$/i.test(mod)) {\n alt = true;\n } else if (/^(c|ctrl|control)$/i.test(mod)) {\n ctrl = true;\n } else if (/^s(hift)?$/i.test(mod)) {\n shift = true;\n } else {\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n }\n\n if (alt) {\n name = \"Alt-\" + name;\n }\n\n if (ctrl) {\n name = \"Ctrl-\" + name;\n }\n\n if (cmd) {\n name = \"Cmd-\" + name;\n }\n\n if (shift) {\n name = \"Shift-\" + name;\n }\n\n return name;\n } // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n\n\n function normalizeKeyMap(keymap) {\n var copy = {};\n\n for (var keyname in keymap) {\n if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) {\n continue;\n }\n\n if (value == \"...\") {\n delete keymap[keyname];\n continue;\n }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n\n for (var i = 0; i < keys.length; i++) {\n var val = void 0,\n name = void 0;\n\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n\n var prev = copy[name];\n\n if (!prev) {\n copy[name] = val;\n } else if (prev != val) {\n throw new Error(\"Inconsistent bindings for \" + name);\n }\n }\n\n delete keymap[keyname];\n }\n }\n\n for (var prop in copy) {\n keymap[prop] = copy[prop];\n }\n\n return keymap;\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n\n if (found === false) {\n return \"nothing\";\n }\n\n if (found === \"...\") {\n return \"multi\";\n }\n\n if (found != null && handle(found)) {\n return \"handled\";\n }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\") {\n return lookupKey(key, map.fallthrough, handle, context);\n }\n\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n\n if (result) {\n return result;\n }\n }\n }\n } // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n\n\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\";\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n\n if (event.altKey && base != \"Alt\") {\n name = \"Alt-\" + name;\n }\n\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") {\n name = \"Ctrl-\" + name;\n }\n\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") {\n name = \"Cmd-\" + name;\n }\n\n if (!noShift && event.shiftKey && base != \"Shift\") {\n name = \"Shift-\" + name;\n }\n\n return name;\n } // Look up the name of a key as indicated by an event object.\n\n\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) {\n return false;\n }\n\n var name = keyNames[event.keyCode];\n\n if (name == null || event.altGraphKey) {\n return false;\n } // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n\n\n if (event.keyCode == 3 && event.code) {\n name = event.code;\n }\n\n return addModifierNames(name, event, noShift);\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val;\n } // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n\n\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges,\n kill = []; // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break;\n }\n }\n\n kill.push(toKill);\n } // Next, remove those actual ranges.\n\n\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--) {\n replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\");\n }\n\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target;\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\");\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") {\n dir = -dir;\n }\n\n var order = getOrder(lineObj, cm.doc.direction);\n\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = dir < 0 == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch; // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) {\n return measureCharPrepared(cm, prep, ch).top == targetTop;\n }, dir < 0 == (part.level == 1) ? part.from : part.to - 1, ch);\n\n if (sticky == \"before\") {\n ch = moveCharLogically(lineObj, ch, 1);\n }\n } else {\n ch = dir < 0 ? part.to : part.from;\n }\n\n return new Pos(lineNo, ch, sticky);\n }\n }\n\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\");\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n\n if (!bidi) {\n return moveLogically(line, start, dir);\n }\n\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky),\n part = bidi[partPos];\n\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir);\n }\n\n var mv = function (pos, dir) {\n return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir);\n };\n\n var prep;\n\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) {\n return {\n begin: 0,\n end: line.text.length\n };\n }\n\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch);\n };\n\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = part.level == 1 == dir < 0;\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky);\n }\n } // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) {\n return moveInStorageOrder ? new Pos(start.line, mv(ch, 1), \"before\") : new Pos(start.line, ch, \"after\");\n };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = dir > 0 == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n\n if (part.from <= ch && ch < part.to) {\n return getRes(ch, moveInStorageOrder);\n }\n\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) {\n return getRes(ch, moveInStorageOrder);\n }\n }\n }; // Case 3a: Look for other bidi parts on the same visual line\n\n\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n\n if (res) {\n return res;\n } // Case 3b: Look for other bidi parts on the next visual line\n\n\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n\n if (res) {\n return res;\n }\n } // Case 4: Nowhere to move\n\n\n return null;\n } // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n\n\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) {\n return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll);\n },\n killLine: function (cm) {\n return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n\n if (range.head.ch == len && range.head.line < cm.lastLine()) {\n return {\n from: range.head,\n to: Pos(range.head.line + 1, 0)\n };\n } else {\n return {\n from: range.head,\n to: Pos(range.head.line, len)\n };\n }\n } else {\n return {\n from: range.from(),\n to: range.to()\n };\n }\n });\n },\n deleteLine: function (cm) {\n return deleteNearSelection(cm, function (range) {\n return {\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n };\n });\n },\n delLineLeft: function (cm) {\n return deleteNearSelection(cm, function (range) {\n return {\n from: Pos(range.from().line, 0),\n to: range.from()\n };\n });\n },\n delWrappedLineLeft: function (cm) {\n return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n return {\n from: leftPos,\n to: range.from()\n };\n });\n },\n delWrappedLineRight: function (cm) {\n return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({\n left: cm.display.lineDiv.offsetWidth + 100,\n top: top\n }, \"div\");\n return {\n from: range.from(),\n to: rightPos\n };\n });\n },\n undo: function (cm) {\n return cm.undo();\n },\n redo: function (cm) {\n return cm.redo();\n },\n undoSelection: function (cm) {\n return cm.undoSelection();\n },\n redoSelection: function (cm) {\n return cm.redoSelection();\n },\n goDocStart: function (cm) {\n return cm.extendSelection(Pos(cm.firstLine(), 0));\n },\n goDocEnd: function (cm) {\n return cm.extendSelection(Pos(cm.lastLine()));\n },\n goLineStart: function (cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineStart(cm, range.head.line);\n }, {\n origin: \"+move\",\n bias: 1\n });\n },\n goLineStartSmart: function (cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineStartSmart(cm, range.head);\n }, {\n origin: \"+move\",\n bias: 1\n });\n },\n goLineEnd: function (cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineEnd(cm, range.head.line);\n }, {\n origin: \"+move\",\n bias: -1\n });\n },\n goLineRight: function (cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({\n left: cm.display.lineDiv.offsetWidth + 100,\n top: top\n }, \"div\");\n }, sel_move);\n },\n goLineLeft: function (cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n }, sel_move);\n },\n goLineLeftSmart: function (cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) {\n return lineStartSmart(cm, range.head);\n }\n\n return pos;\n }, sel_move);\n },\n goLineUp: function (cm) {\n return cm.moveV(-1, \"line\");\n },\n goLineDown: function (cm) {\n return cm.moveV(1, \"line\");\n },\n goPageUp: function (cm) {\n return cm.moveV(-1, \"page\");\n },\n goPageDown: function (cm) {\n return cm.moveV(1, \"page\");\n },\n goCharLeft: function (cm) {\n return cm.moveH(-1, \"char\");\n },\n goCharRight: function (cm) {\n return cm.moveH(1, \"char\");\n },\n goColumnLeft: function (cm) {\n return cm.moveH(-1, \"column\");\n },\n goColumnRight: function (cm) {\n return cm.moveH(1, \"column\");\n },\n goWordLeft: function (cm) {\n return cm.moveH(-1, \"word\");\n },\n goGroupRight: function (cm) {\n return cm.moveH(1, \"group\");\n },\n goGroupLeft: function (cm) {\n return cm.moveH(-1, \"group\");\n },\n goWordRight: function (cm) {\n return cm.moveH(1, \"word\");\n },\n delCharBefore: function (cm) {\n return cm.deleteH(-1, \"char\");\n },\n delCharAfter: function (cm) {\n return cm.deleteH(1, \"char\");\n },\n delWordBefore: function (cm) {\n return cm.deleteH(-1, \"word\");\n },\n delWordAfter: function (cm) {\n return cm.deleteH(1, \"word\");\n },\n delGroupBefore: function (cm) {\n return cm.deleteH(-1, \"group\");\n },\n delGroupAfter: function (cm) {\n return cm.deleteH(1, \"group\");\n },\n indentAuto: function (cm) {\n return cm.indentSelection(\"smart\");\n },\n indentMore: function (cm) {\n return cm.indentSelection(\"add\");\n },\n indentLess: function (cm) {\n return cm.indentSelection(\"subtract\");\n },\n insertTab: function (cm) {\n return cm.replaceSelection(\"\\t\");\n },\n insertSoftTab: function (cm) {\n var spaces = [],\n ranges = cm.listSelections(),\n tabSize = cm.options.tabSize;\n\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) {\n cm.indentSelection(\"add\");\n } else {\n cm.execCommand(\"insertTab\");\n }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) {\n return runInOp(cm, function () {\n var ranges = cm.listSelections(),\n newSel = [];\n\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) {\n continue;\n }\n\n var cur = ranges[i].head,\n line = getLine(cm.doc, cur.line).text;\n\n if (line) {\n if (cur.ch == line.length) {\n cur = new Pos(cur.line, cur.ch - 1);\n }\n\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + prev.charAt(prev.length - 1), Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n\n newSel.push(new Range(cur, cur));\n }\n\n cm.setSelections(newSel);\n });\n },\n newlineAndIndent: function (cm) {\n return runInOp(cm, function () {\n var sels = cm.listSelections();\n\n for (var i = sels.length - 1; i >= 0; i--) {\n cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\");\n }\n\n sels = cm.listSelections();\n\n for (var i$1 = 0; i$1 < sels.length; i$1++) {\n cm.indentLine(sels[i$1].from().line, null, true);\n }\n\n ensureCursorVisible(cm);\n });\n },\n openLine: function (cm) {\n return cm.replaceSelection(\"\\n\", \"start\");\n },\n toggleOverwrite: function (cm) {\n return cm.toggleOverwrite();\n }\n };\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n\n if (visual != line) {\n lineN = lineNo(visual);\n }\n\n return endOfLine(true, cm, visual, lineN, 1);\n }\n\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n\n if (visual != line) {\n lineN = lineNo(visual);\n }\n\n return endOfLine(true, cm, line, lineN, -1);\n }\n\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky);\n }\n\n return start;\n } // Run a handler that was bound to a key.\n\n\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n\n if (!bound) {\n return false;\n }\n } // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n\n\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift,\n done = false;\n\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n\n if (dropShift) {\n cm.display.shift = false;\n }\n\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n\n return done;\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n\n if (result) {\n return result;\n }\n }\n\n return cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm) || lookupKey(name, cm.options.keyMap, handle, cm);\n } // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n\n var stopSeq = new Delayed();\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n\n if (seq) {\n if (isModifierKey(name)) {\n return \"handled\";\n }\n\n if (/\\'$/.test(name)) {\n cm.state.keySeq = null;\n } else {\n stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n });\n }\n\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) {\n return true;\n }\n }\n\n return dispatchKeyInner(cm, name, e, handle);\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\") {\n cm.state.keySeq = name;\n }\n\n if (result == \"handled\") {\n signalLater(cm, \"keyHandled\", cm, name, e);\n }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result;\n } // Handle a key from the keydown event.\n\n\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n\n if (!name) {\n return false;\n }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) {\n return doHandleBinding(cm, b, true);\n }) || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion) {\n return doHandleBinding(cm, b);\n }\n });\n } else {\n return dispatchKey(cm, name, e, function (b) {\n return doHandleBinding(cm, b);\n });\n }\n } // Handle a key from the keypress event\n\n\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) {\n return doHandleBinding(cm, b, true);\n });\n }\n\n var lastStoppedKey = null;\n\n function onKeyDown(e) {\n var cm = this;\n\n if (e.target && e.target != cm.display.input.getField()) {\n return;\n }\n\n cm.curOp.focus = activeElt();\n\n if (signalDOMEvent(cm, e)) {\n return;\n } // IE does strange things with escape.\n\n\n if (ie && ie_version < 11 && e.keyCode == 27) {\n e.returnValue = false;\n }\n\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n\n if (presto) {\n lastStoppedKey = handled ? code : null; // Opera has no cut event... we try to at least catch the key combo\n\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n }\n\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand) {\n document.execCommand(\"cut\");\n } // Turn mouse into crosshair when Alt is held on Mac.\n\n\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className)) {\n showCrossHair(cm);\n }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) {\n this.doc.sel.shift = false;\n }\n\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n\n if (e.target && e.target != cm.display.input.getField()) {\n return;\n }\n\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) {\n return;\n }\n\n var keyCode = e.keyCode,\n charCode = e.charCode;\n\n if (presto && keyCode == lastStoppedKey) {\n lastStoppedKey = null;\n e_preventDefault(e);\n return;\n }\n\n if (presto && (!e.which || e.which < 10) && handleKeyBinding(cm, e)) {\n return;\n }\n\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode); // Some browsers fire keypress events for backspace\n\n if (ch == \"\\x08\") {\n return;\n }\n\n if (handleCharBinding(cm, e, ch)) {\n return;\n }\n\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function (time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time && cmp(pos, this.pos) == 0 && button == this.button;\n };\n\n var lastClick, lastDoubleClick;\n\n function clickRepeat(pos, button) {\n var now = +new Date();\n\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\";\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\";\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\";\n }\n } // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n\n\n function onMouseDown(e) {\n var cm = this,\n display = cm.display;\n\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) {\n return;\n }\n\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () {\n return display.scroller.draggable = true;\n }, 100);\n }\n\n return;\n }\n\n if (clickInGutter(cm, e)) {\n return;\n }\n\n var pos = posFromMouse(cm, e),\n button = e_button(e),\n repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus(); // #3261: make sure, that we're not starting a second selection\n\n if (button == 1 && cm.state.selectingText) {\n cm.state.selectingText(e);\n }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) {\n return;\n }\n\n if (button == 1) {\n if (pos) {\n leftButtonDown(cm, pos, repeat, e);\n } else if (e_target(e) == display.scroller) {\n e_preventDefault(e);\n }\n } else if (button == 2) {\n if (pos) {\n extendSelection(cm.doc, pos);\n }\n\n setTimeout(function () {\n return display.input.focus();\n }, 20);\n } else if (button == 3) {\n if (captureRightClick) {\n cm.display.input.onContextMenu(e);\n } else {\n delayBlurEvent(cm);\n }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n\n if (repeat == \"double\") {\n name = \"Double\" + name;\n } else if (repeat == \"triple\") {\n name = \"Triple\" + name;\n }\n\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n }\n\n if (!bound) {\n return false;\n }\n\n var done = false;\n\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n\n return done;\n });\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n\n if (value.extend == null || cm.doc.extend) {\n value.extend = cm.doc.extend || event.shiftKey;\n }\n\n if (value.addNew == null) {\n value.addNew = mac ? event.metaKey : event.ctrlKey;\n }\n\n if (value.moveOnDrag == null) {\n value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey);\n }\n\n return value;\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) {\n setTimeout(bind(ensureFocus, cm), 0);\n } else {\n cm.curOp.focus = activeElt();\n }\n\n var behavior = configureMouse(cm, repeat, event);\n var sel = cm.doc.sel,\n contained;\n\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && repeat == \"single\" && (contained = sel.contains(pos)) > -1 && (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) {\n leftButtonStartDrag(cm, event, pos, behavior);\n } else {\n leftButtonSelect(cm, event, pos, behavior);\n }\n } // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n\n\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display,\n moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) {\n display.scroller.draggable = false;\n }\n\n cm.state.draggingText = false;\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n\n if (!moved) {\n e_preventDefault(e);\n\n if (!behavior.addNew) {\n extendSelection(cm.doc, pos, null, null, behavior.extend);\n } // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n\n\n if (webkit && !safari || ie && ie_version == 9) {\n setTimeout(function () {\n display.wrapper.ownerDocument.body.focus({\n preventScroll: true\n });\n display.input.focus();\n }, 20);\n } else {\n display.input.focus();\n }\n }\n });\n\n var mouseMove = function (e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n\n var dragStart = function () {\n return moved = true;\n }; // Let the drag handler handle this.\n\n\n if (webkit) {\n display.scroller.draggable = true;\n }\n\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag; // IE's approach to draggable\n\n if (display.scroller.dragDrop) {\n display.scroller.dragDrop();\n }\n\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n delayBlurEvent(cm);\n setTimeout(function () {\n return display.input.focus();\n }, 20);\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") {\n return new Range(pos, pos);\n }\n\n if (unit == \"word\") {\n return cm.findWordAt(pos);\n }\n\n if (unit == \"line\") {\n return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n\n var result = unit(cm, pos);\n return new Range(result.from, result.to);\n } // Normal selection, as opposed to text dragging.\n\n\n function leftButtonSelect(cm, event, start, behavior) {\n var display = cm.display,\n doc = cm.doc;\n e_preventDefault(event);\n var ourRange,\n ourIndex,\n startSel = doc.sel,\n ranges = startSel.ranges;\n\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n\n if (ourIndex > -1) {\n ourRange = ranges[ourIndex];\n } else {\n ourRange = new Range(start, start);\n }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) {\n ourRange = new Range(start, start);\n }\n\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n\n if (behavior.extend) {\n ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend);\n } else {\n ourRange = range;\n }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex), {\n scroll: false,\n origin: \"*mouse\"\n });\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), {\n scroll: false,\n origin: \"*mouse\"\n });\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) {\n return;\n }\n\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [],\n tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol),\n right = Math.max(startCol, posCol);\n\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); line <= end; line++) {\n var text = getLine(doc, line).text,\n leftPos = findColumn(text, left, tabSize);\n\n if (left == right) {\n ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos)));\n } else if (text.length > leftPos) {\n ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize))));\n }\n }\n\n if (!ranges.length) {\n ranges.push(new Range(start, start));\n }\n\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), {\n origin: \"*mouse\",\n scroll: false\n });\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor,\n head;\n\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect(); // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n\n if (!cur) {\n return;\n }\n\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n\n if (cur.line >= visible.to || cur.line < visible.from) {\n setTimeout(operation(cm, function () {\n if (counter == curCount) {\n extend(e);\n }\n }), 150);\n }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n\n if (outside) {\n setTimeout(operation(cm, function () {\n if (counter != curCount) {\n return;\n }\n\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50);\n }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity; // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) {\n done(e);\n } else {\n extend(e);\n }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n } // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n\n\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) {\n return range;\n }\n\n var order = getOrder(anchorLine);\n\n if (!order) {\n return range;\n }\n\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky),\n part = order[index];\n\n if (part.from != anchor.ch && part.to != anchor.ch) {\n return range;\n }\n\n var boundary = index + (part.from == anchor.ch == (part.level != 1) ? 0 : 1);\n\n if (boundary == 0 || boundary == order.length) {\n return range;\n } // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n\n\n var leftSide;\n\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n\n if (headIndex == boundary - 1 || headIndex == boundary) {\n leftSide = dir < 0;\n } else {\n leftSide = dir > 0;\n }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to,\n sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head);\n } // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n\n\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try {\n mX = e.clientX;\n mY = e.clientY;\n } catch (e$1) {\n return false;\n }\n }\n\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) {\n return false;\n }\n\n if (prevent) {\n e_preventDefault(e);\n }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) {\n return e_defaultPrevented(e);\n }\n\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e);\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true);\n } // CONTEXT MENU HANDLING\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n\n\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) {\n return;\n }\n\n if (signalDOMEvent(cm, e, \"contextmenu\")) {\n return;\n }\n\n if (!captureRightClick) {\n cm.display.input.onContextMenu(e);\n }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) {\n return false;\n }\n\n return gutterEvent(cm, e, \"gutterContextMenu\", false);\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") + cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {\n toString: function () {\n return \"CodeMirror.Init\";\n }\n };\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n\n if (handle) {\n optionHandlers[name] = notOnInit ? function (cm, val, old) {\n if (old != Init) {\n handle(cm, val, old);\n }\n } : handle;\n }\n }\n\n CodeMirror.defineOption = option; // Passed to option handlers when there is no old value.\n\n CodeMirror.Init = Init; // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n\n option(\"value\", \"\", function (cm, val) {\n return cm.setValue(val);\n }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n\n if (!val) {\n return;\n }\n\n var newBreaks = [],\n lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n\n if (found == -1) {\n break;\n }\n\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n\n lineNo++;\n });\n\n for (var i = newBreaks.length - 1; i >= 0; i--) {\n replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length));\n }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b-\\u200c\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n\n if (old != Init) {\n cm.refresh();\n }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) {\n return cm.refresh();\n }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\"); // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) {\n return cm.getInputField().spellcheck = val;\n }, true);\n option(\"autocorrect\", false, function (cm, val) {\n return cm.getInputField().autocorrect = val;\n }, true);\n option(\"autocapitalize\", false, function (cm, val) {\n return cm.getInputField().autocapitalize = val;\n }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n\n if (prev && prev.detach) {\n prev.detach(cm, next);\n }\n\n if (next.attach) {\n next.attach(cm, prev || null);\n }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) {\n return updateScrollbars(cm);\n }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) {\n return integer;\n }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n\n cm.display.input.readOnlyChanged(val);\n });\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = val === '' ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n option(\"disableInput\", false, function (cm, val) {\n if (!val) {\n cm.display.input.reset();\n }\n }, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) {\n return cm.doc.history.undoDepth = val;\n });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) {\n return cm.refresh();\n }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) {\n cm.display.input.resetPosition();\n }\n });\n option(\"tabindex\", null, function (cm, val) {\n return cm.display.input.getField().tabIndex = val || \"\";\n });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) {\n return cm.doc.setDirection(val);\n }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () {\n return updateScrollbars(cm);\n }, 100);\n } // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) {\n return new CodeMirror(place, options);\n }\n\n this.options = options = options ? copyObj(options) : {}; // Determine effective options based on given values and defaults.\n\n copyObj(defaults, options, false);\n var doc = options.value;\n\n if (typeof doc == \"string\") {\n doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction);\n } else if (options.mode) {\n doc.modeOption = options.mode;\n }\n\n this.doc = doc;\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n\n if (options.lineWrapping) {\n this.display.wrapper.className += \" CodeMirror-wrap\";\n }\n\n initScrollbars(this);\n this.state = {\n keyMaps: [],\n // stores maps added by addKeyMap\n overlays: [],\n // highlighting overlays, as added by addOverlay\n modeGen: 0,\n // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false,\n // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1,\n cutIncoming: -1,\n // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(),\n // stores highlight worker timeout\n keySeq: null,\n // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) {\n display.input.focus();\n } // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n\n\n if (ie && ie_version < 11) {\n setTimeout(function () {\n return this$1.display.input.reset(true);\n }, 20);\n }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if (options.autofocus && !mobile || this.hasFocus()) {\n setTimeout(bind(onFocus, this), 20);\n } else {\n onBlur(this);\n }\n\n for (var opt in optionHandlers) {\n if (optionHandlers.hasOwnProperty(opt)) {\n optionHandlers[opt](this, options[opt], Init);\n }\n }\n\n maybeUpdateLineNumberWidth(this);\n\n if (options.finishInit) {\n options.finishInit(this);\n }\n\n for (var i = 0; i < initHooks.length; ++i) {\n initHooks[i](this);\n }\n\n endOperation(this); // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n\n if (webkit && options.lineWrapping && getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\") {\n display.lineDiv.style.textRendering = \"auto\";\n }\n } // The default configuration options.\n\n\n CodeMirror.defaults = defaults; // Functions to run when options are changed.\n\n CodeMirror.optionHandlers = optionHandlers; // Attach the necessary event handlers when initializing the editor\n\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown)); // Older IE's will not fire a second mousedown for a double click\n\n if (ie && ie_version < 11) {\n on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n var pos = posFromMouse(cm, e);\n\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n }));\n } else {\n on(d.scroller, \"dblclick\", function (e) {\n return signalDOMEvent(cm, e) || e_preventDefault(e);\n });\n } // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n\n\n on(d.scroller, \"contextmenu\", function (e) {\n return onContextMenu(cm, e);\n });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) {\n onContextMenu(cm, e);\n }\n }); // Used to suppress mouse event handling when a touch happens\n\n var touchFinished,\n prevTouch = {\n end: 0\n };\n\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () {\n return d.activeTouch = null;\n }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date();\n }\n }\n\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) {\n return false;\n }\n\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1;\n }\n\n function farAway(touch, other) {\n if (other.left == null) {\n return true;\n }\n\n var dx = other.left - touch.left,\n dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20;\n }\n\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date();\n d.activeTouch = {\n start: now,\n moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null\n };\n\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) {\n d.activeTouch.moved = true;\n }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n\n if (touch && !eventInWidget(d, e) && touch.left != null && !touch.moved && new Date() - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"),\n range;\n\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n {\n range = new Range(pos, pos);\n } else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n {\n range = cm.findWordAt(pos);\n } else // Triple tap\n {\n range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch); // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n }); // Listen to wheel events in order to try and update the viewport on time.\n\n on(d.scroller, \"mousewheel\", function (e) {\n return onScrollWheel(cm, e);\n });\n on(d.scroller, \"DOMMouseScroll\", function (e) {\n return onScrollWheel(cm, e);\n }); // Prevent wrapper from ever scrolling\n\n on(d.wrapper, \"scroll\", function () {\n return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0;\n });\n d.dragFunctions = {\n enter: function (e) {\n if (!signalDOMEvent(cm, e)) {\n e_stop(e);\n }\n },\n over: function (e) {\n if (!signalDOMEvent(cm, e)) {\n onDragOver(cm, e);\n e_stop(e);\n }\n },\n start: function (e) {\n return onDragStart(cm, e);\n },\n drop: operation(cm, onDrop),\n leave: function (e) {\n if (!signalDOMEvent(cm, e)) {\n clearDragCursor(cm);\n }\n }\n };\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) {\n return onKeyUp.call(cm, e);\n });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) {\n return onFocus(cm, e);\n });\n on(inp, \"blur\", function (e) {\n return onBlur(cm, e);\n });\n }\n\n var initHooks = [];\n\n CodeMirror.defineInitHook = function (f) {\n return initHooks.push(f);\n }; // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n\n\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc,\n state;\n\n if (how == null) {\n how = \"add\";\n }\n\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) {\n how = \"prev\";\n } else {\n state = getContextBefore(cm, n).state;\n }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n),\n curSpace = countColumn(line.text, null, tabSize);\n\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n var curSpaceString = line.text.match(/^\\s*/)[0],\n indentation;\n\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) {\n return;\n }\n\n how = \"prev\";\n }\n }\n\n if (how == \"prev\") {\n if (n > doc.first) {\n indentation = countColumn(getLine(doc, n - 1).text, null, tabSize);\n } else {\n indentation = 0;\n }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n\n indentation = Math.max(0, indentation);\n var indentString = \"\",\n pos = 0;\n\n if (cm.options.indentWithTabs) {\n for (var i = Math.floor(indentation / tabSize); i; --i) {\n pos += tabSize;\n indentString += \"\\t\";\n }\n }\n\n if (pos < indentation) {\n indentString += spaceStr(indentation - pos);\n }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true;\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break;\n }\n }\n }\n } // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n\n\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n\n if (!sel) {\n sel = doc.sel;\n }\n\n var recent = +new Date() - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted),\n multiPaste = null; // When pasting N lines into N selections, insert one line per selection\n\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n\n for (var i = 0; i < lastCopied.text.length; i++) {\n multiPaste.push(doc.splitLines(lastCopied.text[i]));\n }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) {\n return [l];\n });\n }\n }\n\n var updateInput = cm.curOp.updateInput; // Normal behavior is to insert the new text into every selection\n\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(),\n to = range.to();\n\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n {\n from = Pos(from.line, from.ch - deleted);\n } else if (cm.state.overwrite && !paste) // Handle overwrite\n {\n to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length));\n } else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\")) {\n from = to = Pos(from.line, 0);\n }\n }\n\n var changeEvent = {\n from: from,\n to: to,\n text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")\n };\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n\n if (inserted && !paste) {\n triggerElectric(cm, inserted);\n }\n\n ensureCursorVisible(cm);\n\n if (cm.curOp.updateInput < 2) {\n cm.curOp.updateInput = updateInput;\n }\n\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n\n if (pasted) {\n e.preventDefault();\n\n if (!cm.isReadOnly() && !cm.options.disableInput) {\n runInOp(cm, function () {\n return applyTextInput(cm, pasted, 0, null, \"paste\");\n });\n }\n\n return true;\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) {\n return;\n }\n\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n\n if (range.head.ch > 100 || i && sel.ranges[i - 1].head.line == range.head.line) {\n continue;\n }\n\n var mode = cm.getModeAt(range.head);\n var indented = false;\n\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++) {\n if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break;\n }\n }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) {\n indented = indentLine(cm, range.head.line, \"smart\");\n }\n }\n\n if (indented) {\n signalLater(cm, \"electricInput\", cm, range.head.line);\n }\n }\n }\n\n function copyableRanges(cm) {\n var text = [],\n ranges = [];\n\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {\n anchor: Pos(line, 0),\n head: Pos(line + 1, 0)\n };\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n\n return {\n text: text,\n ranges: ranges\n };\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\"); // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n\n if (webkit) {\n te.style.width = \"1000px\";\n } else {\n te.setAttribute(\"wrap\", \"off\");\n } // If border: 0; -- iOS fails to open keyboard (issue #1287)\n\n\n if (ios) {\n te.style.border = \"1px solid black\";\n }\n\n disableBrowserMagic(te);\n return div;\n } // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n var helpers = CodeMirror.helpers = {};\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function () {\n window.focus();\n this.display.input.focus();\n },\n setOption: function (option, value) {\n var options = this.options,\n old = options[option];\n\n if (options[option] == value && option != \"mode\") {\n return;\n }\n\n options[option] = value;\n\n if (optionHandlers.hasOwnProperty(option)) {\n operation(this, optionHandlers[option])(this, value, old);\n }\n\n signal(this, \"optionChange\", this, option);\n },\n getOption: function (option) {\n return this.options[option];\n },\n getDoc: function () {\n return this.doc;\n },\n addKeyMap: function (map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function (map) {\n var maps = this.state.keyMaps;\n\n for (var i = 0; i < maps.length; ++i) {\n if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true;\n }\n }\n },\n addOverlay: methodOp(function (spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n\n if (mode.startState) {\n throw new Error(\"Overlays may not be stateful.\");\n }\n\n insertSorted(this.state.overlays, {\n mode: mode,\n modeSpec: spec,\n opaque: options && options.opaque,\n priority: options && options.priority || 0\n }, function (overlay) {\n return overlay.priority;\n });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function (spec) {\n var overlays = this.state.overlays;\n\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return;\n }\n }\n }),\n indentLine: methodOp(function (n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) {\n dir = this.options.smartIndent ? \"smart\" : \"prev\";\n } else {\n dir = dir ? \"add\" : \"subtract\";\n }\n }\n\n if (isLine(this.doc, n)) {\n indentLine(this, n, dir, aggressive);\n }\n }),\n indentSelection: methodOp(function (how) {\n var ranges = this.doc.sel.ranges,\n end = -1;\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n\n if (!range.empty()) {\n var from = range.from(),\n to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n\n for (var j = start; j < end; ++j) {\n indentLine(this, j, how);\n }\n\n var newRanges = this.doc.sel.ranges;\n\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) {\n replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll);\n }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n\n if (i == this.doc.sel.primIndex) {\n ensureCursorVisible(this);\n }\n }\n }\n }),\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function (pos, precise) {\n return takeToken(this, pos, precise);\n },\n getLineTokens: function (line, precise) {\n return takeToken(this, Pos(line), precise, true);\n },\n getTokenTypeAt: function (pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0,\n after = (styles.length - 1) / 2,\n ch = pos.ch;\n var type;\n\n if (ch == 0) {\n type = styles[2];\n } else {\n for (;;) {\n var mid = before + after >> 1;\n\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) {\n after = mid;\n } else if (styles[mid * 2 + 1] < ch) {\n before = mid + 1;\n } else {\n type = styles[mid * 2 + 2];\n break;\n }\n }\n }\n\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1);\n },\n getModeAt: function (pos) {\n var mode = this.doc.mode;\n\n if (!mode.innerMode) {\n return mode;\n }\n\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode;\n },\n getHelper: function (pos, type) {\n return this.getHelpers(pos, type)[0];\n },\n getHelpers: function (pos, type) {\n var found = [];\n\n if (!helpers.hasOwnProperty(type)) {\n return found;\n }\n\n var help = helpers[type],\n mode = this.getModeAt(pos);\n\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) {\n found.push(help[mode[type]]);\n }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n\n if (val) {\n found.push(val);\n }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) {\n found.push(cur.val);\n }\n }\n\n return found;\n },\n getStateAfter: function (line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1 : line);\n return getContextBefore(this, line + 1, precise).state;\n },\n cursorCoords: function (start, mode) {\n var pos,\n range = this.doc.sel.primary();\n\n if (start == null) {\n pos = range.head;\n } else if (typeof start == \"object\") {\n pos = clipPos(this.doc, start);\n } else {\n pos = start ? range.from() : range.to();\n }\n\n return cursorCoords(this, pos, mode || \"page\");\n },\n charCoords: function (pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\");\n },\n coordsChar: function (coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top);\n },\n lineAtHeight: function (height, mode) {\n height = fromCoordSystem(this, {\n top: height,\n left: 0\n }, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset);\n },\n heightAtLine: function (line, mode, includeWidgets) {\n var end = false,\n lineObj;\n\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n\n if (line < this.doc.first) {\n line = this.doc.first;\n } else if (line > last) {\n line = last;\n end = true;\n }\n\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n\n return intoCoordSystem(this, lineObj, {\n top: 0,\n left: 0\n }, mode || \"page\", includeWidgets || end).top + (end ? this.doc.height - heightAtLine(lineObj) : 0);\n },\n defaultTextHeight: function () {\n return textHeight(this.display);\n },\n defaultCharWidth: function () {\n return charWidth(this.display);\n },\n getViewport: function () {\n return {\n from: this.display.viewFrom,\n to: this.display.viewTo\n };\n },\n addWidget: function (pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom,\n left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); // Default to positioning above (if specified and possible); otherwise default to positioning below\n\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) {\n top = pos.top - node.offsetHeight;\n } else if (pos.bottom + node.offsetHeight <= vspace) {\n top = pos.bottom;\n }\n\n if (left + node.offsetWidth > hspace) {\n left = hspace - node.offsetWidth;\n }\n }\n\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") {\n left = 0;\n } else if (horiz == \"middle\") {\n left = (display.sizer.clientWidth - node.offsetWidth) / 2;\n }\n\n node.style.left = left + \"px\";\n }\n\n if (scroll) {\n scrollIntoView(this, {\n left: left,\n top: top,\n right: left + node.offsetWidth,\n bottom: top + node.offsetHeight\n });\n }\n },\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n execCommand: function (cmd) {\n if (commands.hasOwnProperty(cmd)) {\n return commands[cmd].call(null, this);\n }\n },\n triggerElectric: methodOp(function (text) {\n triggerElectric(this, text);\n }),\n findPosH: function (from, amount, unit, visually) {\n var dir = 1;\n\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\n\n var cur = clipPos(this.doc, from);\n\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n\n if (cur.hitSide) {\n break;\n }\n }\n\n return cur;\n },\n moveH: methodOp(function (dir, unit) {\n var this$1 = this;\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty()) {\n return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually);\n } else {\n return dir < 0 ? range.from() : range.to();\n }\n }, sel_move);\n }),\n deleteH: methodOp(function (dir, unit) {\n var sel = this.doc.sel,\n doc = this.doc;\n\n if (sel.somethingSelected()) {\n doc.replaceSelection(\"\", null, \"+delete\");\n } else {\n deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {\n from: other,\n to: range.head\n } : {\n from: range.head,\n to: other\n };\n });\n }\n }),\n findPosV: function (from, amount, unit, goalColumn) {\n var dir = 1,\n x = goalColumn;\n\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\n\n var cur = clipPos(this.doc, from);\n\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n\n if (x == null) {\n x = coords.left;\n } else {\n coords.left = x;\n }\n\n cur = findPosV(this, coords, dir, unit);\n\n if (cur.hitSide) {\n break;\n }\n }\n\n return cur;\n },\n moveV: methodOp(function (dir, unit) {\n var this$1 = this;\n var doc = this.doc,\n goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse) {\n return dir < 0 ? range.from() : range.to();\n }\n\n var headPos = cursorCoords(this$1, range.head, \"div\");\n\n if (range.goalColumn != null) {\n headPos.left = range.goalColumn;\n }\n\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n\n if (unit == \"page\" && range == doc.sel.primary()) {\n addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top);\n }\n\n return pos;\n }, sel_move);\n\n if (goals.length) {\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n doc.sel.ranges[i].goalColumn = goals[i];\n }\n }\n }),\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function (pos) {\n var doc = this.doc,\n line = getLine(doc, pos.line).text;\n var start = pos.ch,\n end = pos.ch;\n\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n\n if ((pos.sticky == \"before\" || end == line.length) && start) {\n --start;\n } else {\n ++end;\n }\n\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper) ? function (ch) {\n return isWordChar(ch, helper);\n } : /\\s/.test(startChar) ? function (ch) {\n return /\\s/.test(ch);\n } : function (ch) {\n return !/\\s/.test(ch) && !isWordChar(ch);\n };\n\n while (start > 0 && check(line.charAt(start - 1))) {\n --start;\n }\n\n while (end < line.length && check(line.charAt(end))) {\n ++end;\n }\n }\n\n return new Range(Pos(pos.line, start), Pos(pos.line, end));\n },\n toggleOverwrite: function (value) {\n if (value != null && value == this.state.overwrite) {\n return;\n }\n\n if (this.state.overwrite = !this.state.overwrite) {\n addClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n } else {\n rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function () {\n return this.display.input.getField() == activeElt();\n },\n isReadOnly: function () {\n return !!(this.options.readOnly || this.doc.cantEdit);\n },\n scrollTo: methodOp(function (x, y) {\n scrollToCoords(this, x, y);\n }),\n getScrollInfo: function () {\n var scroller = this.display.scroller;\n return {\n left: scroller.scrollLeft,\n top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this),\n clientWidth: displayWidth(this)\n };\n },\n scrollIntoView: methodOp(function (range, margin) {\n if (range == null) {\n range = {\n from: this.doc.sel.primary().head,\n to: null\n };\n\n if (margin == null) {\n margin = this.options.cursorScrollMargin;\n }\n } else if (typeof range == \"number\") {\n range = {\n from: Pos(range, 0),\n to: null\n };\n } else if (range.from == null) {\n range = {\n from: range,\n to: null\n };\n }\n\n if (!range.to) {\n range.to = range.from;\n }\n\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n setSize: methodOp(function (width, height) {\n var this$1 = this;\n\n var interpret = function (val) {\n return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val;\n };\n\n if (width != null) {\n this.display.wrapper.style.width = interpret(width);\n }\n\n if (height != null) {\n this.display.wrapper.style.height = interpret(height);\n }\n\n if (this.options.lineWrapping) {\n clearLineMeasurementCache(this);\n }\n\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].noHScroll) {\n regLineChange(this$1, lineNo, \"widget\");\n break;\n }\n }\n }\n\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n operation: function (f) {\n return runInOp(this, f);\n },\n startOperation: function () {\n return startOperation(this);\n },\n endOperation: function () {\n return endOperation(this);\n },\n refresh: methodOp(function () {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping) {\n estimateLineHeights(this);\n }\n\n signal(this, \"refresh\", this);\n }),\n swapDoc: methodOp(function (doc) {\n var old = this.doc;\n old.cm = null; // Cancel the current text selection if any (#5821)\n\n if (this.state.selectingText) {\n this.state.selectingText();\n }\n\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old;\n }),\n phrase: function (phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText;\n },\n getInputField: function () {\n return this.display.input.getField();\n },\n getWrapperElement: function () {\n return this.display.wrapper;\n },\n getScrollerElement: function () {\n return this.display.scroller;\n },\n getGutterElement: function () {\n return this.display.gutters;\n }\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function (type, name, value) {\n if (!helpers.hasOwnProperty(type)) {\n helpers[type] = CodeMirror[type] = {\n _global: []\n };\n }\n\n helpers[type][name] = value;\n };\n\n CodeMirror.registerGlobalHelper = function (type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n\n helpers[type]._global.push({\n pred: predicate,\n val: value\n });\n };\n } // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"char\", \"column\" (like char, but doesn't\n // cross line boundaries), \"word\" (across next word), or \"group\" (to\n // the start of next group of word or non-word-non-whitespace\n // chars). The visually param controls whether, in right-to-left\n // text, direction 1 means to move towards the next index in the\n // string, or towards the character to the right of the current\n // position. The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n\n\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n\n function findNextLine() {\n var l = pos.line + lineDir;\n\n if (l < doc.first || l >= doc.first + doc.size) {\n return false;\n }\n\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l);\n }\n\n function moveOnce(boundToLine) {\n var next;\n\n if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n\n if (next == null) {\n if (!boundToLine && findNextLine()) {\n pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir);\n } else {\n return false;\n }\n } else {\n pos = next;\n }\n\n return true;\n }\n\n if (unit == \"char\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null,\n group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) {\n break;\n }\n\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\" : group && cur == \"\\n\" ? \"n\" : !group || /\\s/.test(cur) ? null : \"p\";\n\n if (group && !first && !type) {\n type = \"s\";\n }\n\n if (sawType && sawType != type) {\n if (dir < 0) {\n dir = 1;\n moveOnce();\n pos.sticky = \"after\";\n }\n\n break;\n }\n\n if (type) {\n sawType = type;\n }\n\n if (dir > 0 && !moveOnce(!first)) {\n break;\n }\n }\n }\n\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n\n if (equalCursorPos(oldPos, result)) {\n result.hitSide = true;\n }\n\n return result;\n } // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n\n\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc,\n x = pos.left,\n y;\n\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n\n var target;\n\n for (;;) {\n target = coordsChar(cm, x, y);\n\n if (!target.outside) {\n break;\n }\n\n if (dir < 0 ? y <= 0 : y >= doc.height) {\n target.hitSide = true;\n break;\n }\n\n y += dir * 5;\n }\n\n return target;\n } // CONTENTEDITABLE INPUT STYLE\n\n\n var ContentEditableInput = function (cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n var input = this,\n cm = input.cm;\n var div = input.div = display.lineDiv;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) {\n return true;\n }\n\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) {\n break;\n }\n }\n\n return false;\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n } // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n\n\n if (ie_version <= 11) {\n setTimeout(operation(cm, function () {\n return this$1.updateFromDOM();\n }), 20);\n }\n });\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {\n data: e.data,\n done: false\n };\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) {\n this$1.composing = {\n data: e.data,\n done: false\n };\n }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) {\n this$1.readFromDOMSoon();\n }\n\n this$1.composing.done = true;\n }\n });\n on(div, \"touchstart\", function () {\n return input.forceCompositionEnd();\n });\n on(div, \"input\", function () {\n if (!this$1.composing) {\n this$1.readFromDOMSoon();\n }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) {\n return;\n }\n\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n\n if (e.type == \"cut\") {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\"); // iOS exposes the clipboard API, but seems to discard content inserted into it\n\n e.clipboardData.setData(\"Text\", content);\n\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return;\n }\n } // Old-fashioned briefly-focus-a-textarea hack\n\n\n var kludge = hiddenTextarea(),\n te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = document.activeElement;\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n\n if (hadFocus == div) {\n input.showPrimarySelection();\n }\n }, 50);\n }\n\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if (label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = document.activeElement == this.div;\n return result;\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) {\n return;\n }\n\n if (info.focus || takeFocus) {\n this.showPrimarySelection();\n }\n\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection();\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(),\n cm = this.cm,\n prim = cm.doc.sel.primary();\n var from = prim.from(),\n to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return;\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && cmp(minPos(curAnchor, curFocus), from) == 0 && cmp(maxPos(curAnchor, curFocus), to) == 0) {\n return;\n }\n\n var view = cm.display.view;\n var start = from.line >= cm.display.viewFrom && posToDOM(cm, from) || {\n node: view[0].measure.map[2],\n offset: 0\n };\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {\n node: map[map.length - 1],\n offset: map[map.length - 2] - map[map.length - 3]\n };\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return;\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0),\n rng;\n\n try {\n rng = range(start.node, start.offset, end.offset, end.node);\n } catch (e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n\n\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n\n if (old && sel.anchorNode == null) {\n sel.addRange(old);\n } else if (gecko) {\n this.startGracePeriod();\n }\n }\n\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n\n if (this$1.selectionChanged()) {\n this$1.cm.operation(function () {\n return this$1.cm.curOp.selectionChanged = true;\n });\n }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode;\n this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode;\n this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n\n if (!sel.rangeCount) {\n return false;\n }\n\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node);\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || document.activeElement != this.div) {\n this.showSelection(this.prepareSelection(), true);\n }\n\n this.div.focus();\n }\n };\n\n ContentEditableInput.prototype.blur = function () {\n this.div.blur();\n };\n\n ContentEditableInput.prototype.getField = function () {\n return this.div;\n };\n\n ContentEditableInput.prototype.supportsTouch = function () {\n return true;\n };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var input = this;\n\n if (this.selectionInEditor()) {\n this.pollSelection();\n } else {\n runInOp(this.cm, function () {\n return input.cm.curOp.selectionChanged = true;\n });\n }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset;\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) {\n return;\n }\n\n var sel = this.getSelection(),\n cm = this.cm; // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({\n type: \"keydown\",\n keyCode: 8,\n preventDefault: Math.abs\n });\n this.blur();\n this.focus();\n return;\n }\n\n if (this.composing) {\n return;\n }\n\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n\n if (anchor && head) {\n runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n\n if (anchor.bad || head.bad) {\n cm.curOp.selectionChanged = true;\n }\n });\n }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm,\n display = cm.display,\n sel = cm.doc.sel.primary();\n var from = sel.from(),\n to = sel.to();\n\n if (from.ch == 0 && from.line > cm.firstLine()) {\n from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length);\n }\n\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) {\n to = Pos(to.line + 1, 0);\n }\n\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) {\n return false;\n }\n\n var fromIndex, fromLine, fromNode;\n\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) {\n return false;\n }\n\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) {\n newText.pop();\n oldText.pop();\n toLine--;\n } else if (newText[0] == oldText[0]) {\n newText.shift();\n oldText.shift();\n fromLine++;\n } else {\n break;\n }\n }\n\n var cutFront = 0,\n cutEnd = 0;\n var newTop = newText[0],\n oldTop = oldText[0],\n maxCutFront = Math.min(newTop.length, oldTop.length);\n\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) {\n ++cutFront;\n }\n\n var newBot = lst(newText),\n oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), oldBot.length - (oldText.length == 1 ? cutFront : 0));\n\n while (cutEnd < maxCutEnd && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n ++cutEnd;\n } // Try to move start of change to start of selection if ambiguous\n\n\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true;\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) {\n return;\n }\n\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) {\n return;\n }\n\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n\n if (this$1.composing) {\n if (this$1.composing.done) {\n this$1.composing = null;\n } else {\n return;\n }\n }\n\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent()) {\n runInOp(this.cm, function () {\n return regChange(this$1.cm);\n });\n }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) {\n return;\n }\n\n e.preventDefault();\n\n if (!this.cm.isReadOnly()) {\n operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0);\n }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n\n if (!view || view.hidden) {\n return null;\n }\n\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n var order = getOrder(line, cm.doc.direction),\n side = \"left\";\n\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result;\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode) {\n if (/CodeMirror-gutter-wrapper/.test(scan.className)) {\n return true;\n }\n }\n\n return false;\n }\n\n function badPos(pos, bad) {\n if (bad) {\n pos.bad = true;\n }\n\n return pos;\n }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\",\n closing = false,\n lineSep = cm.doc.lineSeparator(),\n extraLinebreak = false;\n\n function recognizeMarker(id) {\n return function (marker) {\n return marker.id == id;\n };\n }\n\n function close() {\n if (closing) {\n text += lineSep;\n\n if (extraLinebreak) {\n text += lineSep;\n }\n\n closing = extraLinebreak = false;\n }\n }\n\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n\n if (cmText) {\n addText(cmText);\n return;\n }\n\n var markerID = node.getAttribute(\"cm-marker\"),\n range;\n\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n\n if (found.length && (range = found[0].find(0))) {\n addText(getBetween(cm.doc, range.from, range.to).join(lineSep));\n }\n\n return;\n }\n\n if (node.getAttribute(\"contenteditable\") == \"false\") {\n return;\n }\n\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) {\n return;\n }\n\n if (isBlock) {\n close();\n }\n\n for (var i = 0; i < node.childNodes.length; i++) {\n walk(node.childNodes[i]);\n }\n\n if (/^(pre|p)$/i.test(node.nodeName)) {\n extraLinebreak = true;\n }\n\n if (isBlock) {\n closing = true;\n }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n\n for (;;) {\n walk(from);\n\n if (from == to) {\n break;\n }\n\n from = from.nextSibling;\n extraLinebreak = false;\n }\n\n return text;\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n\n if (!lineNode) {\n return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true);\n }\n\n node = null;\n offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) {\n return null;\n }\n\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) {\n break;\n }\n }\n }\n\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n\n if (lineView.node == lineNode) {\n return locateNodeInLineView(lineView, node, offset);\n }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild,\n bad = false;\n\n if (!node || !contains(wrapper, node)) {\n return badPos(Pos(lineNo(lineView.line), 0), true);\n }\n\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad);\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null,\n topNode = node;\n\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n\n if (offset) {\n offset = textNode.nodeValue.length;\n }\n }\n\n while (topNode.parentNode != wrapper) {\n topNode = topNode.parentNode;\n }\n\n var measure = lineView.measure,\n maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n\n if (offset < 0 || curNode != textNode) {\n ch = map[j + (offset ? 1 : 0)];\n }\n\n return Pos(line, ch);\n }\n }\n }\n }\n\n var found = find(textNode, topNode, offset);\n\n if (found) {\n return badPos(found, bad);\n } // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n\n\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n\n if (found) {\n return badPos(Pos(found.line, found.ch - dist), bad);\n } else {\n dist += after.textContent.length;\n }\n }\n\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n\n if (found) {\n return badPos(Pos(found.line, found.ch + dist$1), bad);\n } else {\n dist$1 += before.textContent.length;\n }\n }\n } // TEXTAREA INPUT STYLE\n\n\n var TextareaInput = function (cm) {\n this.cm = cm; // See input.poll and input.reset\n\n this.prevInput = \"\"; // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n\n this.pollingFast = false; // Self-resetting timeout for the poller\n\n this.polling = new Delayed(); // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n var input = this,\n cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild); // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n\n if (ios) {\n te.style.width = \"0px\";\n }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) {\n this$1.hasSelection = null;\n }\n\n input.poll();\n });\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n }\n\n cm.state.pasteIncoming = +new Date();\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n\n if (e.type == \"cut\") {\n cm.state.cutIncoming = +new Date();\n }\n }\n\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) {\n return;\n }\n\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date();\n input.focus();\n return;\n } // Pass the `paste` event to the textarea so it's handled by its event listener.\n\n\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n }); // Prevent normal selection in the editor (we handle our own)\n\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) {\n e_preventDefault(e);\n }\n });\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n\n if (input.composing) {\n input.composing.range.clear();\n }\n\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {\n className: \"CodeMirror-composing\"\n })\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea(); // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if (label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm,\n display = cm.display,\n doc = cm.doc;\n var result = prepareSelection(cm); // Move the hidden textarea near the cursor to prevent scrolling artifacts\n\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(),\n lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result;\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm,\n display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n }; // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n\n\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) {\n return;\n }\n\n var cm = this.cm;\n\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n\n if (cm.state.focused) {\n selectInput(this.textarea);\n }\n\n if (ie && ie_version >= 9) {\n this.hasSelection = content;\n }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n }\n };\n\n TextareaInput.prototype.getField = function () {\n return this.textarea;\n };\n\n TextareaInput.prototype.supportsTouch = function () {\n return false;\n };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try {\n this.textarea.focus();\n } catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n\n }\n };\n\n TextareaInput.prototype.blur = function () {\n this.textarea.blur();\n };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () {\n this.slowPoll();\n }; // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n\n\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) {\n return;\n }\n\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n\n if (this$1.cm.state.focused) {\n this$1.slowPoll();\n }\n });\n }; // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n\n\n TextareaInput.prototype.fastPoll = function () {\n var missed = false,\n input = this;\n input.pollingFast = true;\n\n function p() {\n var changed = input.poll();\n\n if (!changed && !missed) {\n missed = true;\n input.polling.set(60, p);\n } else {\n input.pollingFast = false;\n input.slowPoll();\n }\n }\n\n input.polling.set(20, p);\n }; // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n\n\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n var cm = this.cm,\n input = this.textarea,\n prevInput = this.prevInput; // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n\n if (this.contextMenuPending || !cm.state.focused || hasSelection(input) && !prevInput && !this.composing || cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) {\n return false;\n }\n\n var text = input.value; // If nothing changed, bail.\n\n if (text == prevInput && !cm.somethingSelected()) {\n return false;\n } // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n\n\n if (ie && ie_version >= 9 && this.hasSelection === text || mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false;\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n\n if (first == 0x200b && !prevInput) {\n prevInput = \"\\u200b\";\n }\n\n if (first == 0x21da) {\n this.reset();\n return this.cm.execCommand(\"undo\");\n }\n } // Find the part of the input that is actually new\n\n\n var same = 0,\n l = Math.min(prevInput.length, text.length);\n\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) {\n ++same;\n }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same, null, this$1.composing ? \"*compose\" : null); // Don't leave long text in the textarea, since it makes further polling slow\n\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) {\n input.value = this$1.prevInput = \"\";\n } else {\n this$1.prevInput = text;\n }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"), {\n className: \"CodeMirror-composing\"\n });\n }\n });\n return true;\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) {\n this.pollingFast = false;\n }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this,\n cm = input.cm,\n display = cm.display,\n te = input.textarea;\n\n if (input.contextMenuPending) {\n input.contextMenuPending();\n }\n\n var pos = posFromMouse(cm, e),\n scrollPos = display.scroller.scrollTop;\n\n if (!pos || presto) {\n return;\n } // Opera is difficult.\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n\n\n var reset = cm.options.resetSelectionOnContextMenu;\n\n if (reset && cm.doc.sel.contains(pos) == -1) {\n operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll);\n }\n\n var oldCSS = te.style.cssText,\n oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n\n if (webkit) {\n oldScrollY = window.scrollY;\n } // Work around Chrome issue (#2712)\n\n\n display.input.focus();\n\n if (webkit) {\n window.scrollTo(null, oldScrollY);\n }\n\n display.input.reset(); // Adds \"Select all\" to context menu in FF\n\n if (!cm.somethingSelected()) {\n te.value = input.prevInput = \" \";\n }\n\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll); // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1;\n te.selectionEnd = extval.length; // Re-set this, in case some other handler touched the\n // selection in the meantime.\n\n display.selForContextMenu = cm.doc.sel;\n }\n }\n\n function rehide() {\n if (input.contextMenuPending != rehide) {\n return;\n }\n\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n\n if (ie && ie_version < 9) {\n display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos);\n } // Try to detect the user choosing select-all\n\n\n if (te.selectionStart != null) {\n if (!ie || ie && ie_version < 9) {\n prepareSelectAllHack();\n }\n\n var i = 0,\n poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) {\n prepareSelectAllHack();\n }\n\n if (captureRightClick) {\n e_stop(e);\n\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) {\n this.reset();\n }\n\n this.textarea.disabled = val == \"nocursor\";\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n\n if (!options.tabindex && textarea.tabIndex) {\n options.tabindex = textarea.tabIndex;\n }\n\n if (!options.placeholder && textarea.placeholder) {\n options.placeholder = textarea.placeholder;\n } // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n\n\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea || textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {\n textarea.value = cm.getValue();\n }\n\n var realSubmit;\n\n if (textarea.form) {\n on(textarea.form, \"submit\", save); // Deplorable hack to make the submit method do the right thing.\n\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch (e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n\n cm.getTextArea = function () {\n return textarea;\n };\n\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\") {\n textarea.form.submit = realSubmit;\n }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) {\n return textarea.parentNode.insertBefore(node, textarea.nextSibling);\n }, options);\n return cm;\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n } // EDITOR CONSTRUCTOR\n\n\n defineOptions(CodeMirror);\n addEditorMethods(CodeMirror); // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n\n for (var prop in Doc.prototype) {\n if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) {\n CodeMirror.prototype[prop] = function (method) {\n return function () {\n return method.apply(this.doc, arguments);\n };\n }(Doc.prototype[prop]);\n }\n }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\n \"textarea\": TextareaInput,\n \"contenteditable\": ContentEditableInput\n }; // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n\n CodeMirror.defineMode = function (name\n /*, mode, …*/\n ) {\n if (!CodeMirror.defaults.mode && name != \"null\") {\n CodeMirror.defaults.mode = name;\n }\n\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME; // Minimal default mode.\n\n CodeMirror.defineMode(\"null\", function () {\n return {\n token: function (stream) {\n return stream.skipToEnd();\n }\n };\n });\n CodeMirror.defineMIME(\"text/plain\", \"null\"); // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n addLegacyProps(CodeMirror);\n CodeMirror.version = \"5.57.0\";\n return CodeMirror;\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvbGliL2NvZGVtaXJyb3IuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvY29kZW1pcnJvci9saWIvY29kZW1pcnJvci5qcz8wZDI0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvZGVNaXJyb3IsIGNvcHlyaWdodCAoYykgYnkgTWFyaWpuIEhhdmVyYmVrZSBhbmQgb3RoZXJzXG4vLyBEaXN0cmlidXRlZCB1bmRlciBhbiBNSVQgbGljZW5zZTogaHR0cHM6Ly9jb2RlbWlycm9yLm5ldC9MSUNFTlNFXG5cbi8vIFRoaXMgaXMgQ29kZU1pcnJvciAoaHR0cHM6Ly9jb2RlbWlycm9yLm5ldCksIGEgY29kZSBlZGl0b3Jcbi8vIGltcGxlbWVudGVkIGluIEphdmFTY3JpcHQgb24gdG9wIG9mIHRoZSBicm93c2VyJ3MgRE9NLlxuLy9cbi8vIFlvdSBjYW4gZmluZCBzb21lIHRlY2huaWNhbCBiYWNrZ3JvdW5kIGZvciBzb21lIG9mIHRoZSBjb2RlIGJlbG93XG4vLyBhdCBodHRwOi8vbWFyaWpuaGF2ZXJiZWtlLm5sL2Jsb2cvI2NtLWludGVybmFscyAuXG5cbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbiAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGZhY3RvcnkpIDpcbiAgKGdsb2JhbCA9IGdsb2JhbCB8fCBzZWxmLCBnbG9iYWwuQ29kZU1pcnJvciA9IGZhY3RvcnkoKSk7XG59KHRoaXMsIChmdW5jdGlvbiAoKSB7ICd1c2Ugc3RyaWN0JztcblxuICAvLyBLbHVkZ2VzIGZvciBidWdzIGFuZCBiZWhhdmlvciBkaWZmZXJlbmNlcyB0aGF0IGNhbid0IGJlIGZlYXR1cmVcbiAgLy8gZGV0ZWN0ZWQgYXJlIGVuYWJsZWQgYmFzZWQgb24gdXNlckFnZW50IGV0YyBzbmlmZmluZy5cbiAgdmFyIHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XG4gIHZhciBwbGF0Zm9ybSA9IG5hdmlnYXRvci5wbGF0Zm9ybTtcblxuICB2YXIgZ2Vja28gPSAvZ2Vja29cXC9cXGQvaS50ZXN0KHVzZXJBZ2VudCk7XG4gIHZhciBpZV91cHRvMTAgPSAvTVNJRSBcXGQvLnRlc3QodXNlckFnZW50KTtcbiAgdmFyIGllXzExdXAgPSAvVHJpZGVudFxcLyg/Ols3LTldfFxcZHsyLH0pXFwuLipydjooXFxkKykvLmV4ZWModXNlckFnZW50KTtcbiAgdmFyIGVkZ2UgPSAvRWRnZVxcLyhcXGQrKS8uZXhlYyh1c2VyQWdlbnQpO1xuICB2YXIgaWUgPSBpZV91cHRvMTAgfHwgaWVfMTF1cCB8fCBlZGdlO1xuICB2YXIgaWVfdmVyc2lvbiA9IGllICYmIChpZV91cHRvMTAgPyBkb2N1bWVudC5kb2N1bWVudE1vZGUgfHwgNiA6ICsoZWRnZSB8fCBpZV8xMXVwKVsxXSk7XG4gIHZhciB3ZWJraXQgPSAhZWRnZSAmJiAvV2ViS2l0XFwvLy50ZXN0KHVzZXJBZ2VudCk7XG4gIHZhciBxdHdlYmtpdCA9IHdlYmtpdCAmJiAvUXRcXC9cXGQrXFwuXFxkKy8udGVzdCh1c2VyQWdlbnQpO1xuICB2YXIgY2hyb21lID0gIWVkZ2UgJiYgL0Nocm9tZVxcLy8udGVzdCh1c2VyQWdlbnQpO1xuICB2YXIgcHJlc3RvID0gL09wZXJhXFwvLy50ZXN0KHVzZXJBZ2VudCk7XG4gIHZhciBzYWZhcmkgPSAvQXBwbGUgQ29tcHV0ZXIvLnRlc3QobmF2aWdhdG9yLnZlbmRvcik7XG4gIHZhciBtYWNfZ2VNb3VudGFpbkxpb24gPSAvTWFjIE9TIFggMVxcZFxcRChbOC05XXxcXGRcXGQpXFxELy50ZXN0KHVzZXJBZ2VudCk7XG4gIHZhciBwaGFudG9tID0gL1BoYW50b21KUy8udGVzdCh1c2VyQWdlbnQpO1xuXG4gIHZhciBpb3MgPSAhZWRnZSAmJiAvQXBwbGVXZWJLaXQvLnRlc3QodXNlckFnZW50KSAmJiAvTW9iaWxlXFwvXFx3Ky8udGVzdCh1c2VyQWdlbnQpO1xuICB2YXIgYW5kcm9pZCA9IC9BbmRyb2lkLy50ZXN0KHVzZXJBZ2VudCk7XG4gIC8vIFRoaXMgaXMgd29lZnVsbHkgaW5jb21wbGV0ZS4gU3VnZ2VzdGlvbnMgZm9yIGFsdGVybmF0aXZlIG1ldGhvZHMgd2VsY29tZS5cbiAgdmFyIG1vYmlsZSA9IGlvcyB8fCBhbmRyb2lkIHx8IC93ZWJPU3xCbGFja0JlcnJ5fE9wZXJhIE1pbml8T3BlcmEgTW9iaXxJRU1vYmlsZS9pLnRlc3QodXNlckFnZW50KTtcbiAgdmFyIG1hYyA9IGlvcyB8fCAvTWFjLy50ZXN0KHBsYXRmb3JtKTtcbiAgdmFyIGNocm9tZU9TID0gL1xcYkNyT1NcXGIvLnRlc3QodXNlckFnZW50KTtcbiAgdmFyIHdpbmRvd3MgPSAvd2luL2kudGVzdChwbGF0Zm9ybSk7XG5cbiAgdmFyIHByZXN0b192ZXJzaW9uID0gcHJlc3RvICYmIHVzZXJBZ2VudC5tYXRjaCgvVmVyc2lvblxcLyhcXGQqXFwuXFxkKikvKTtcbiAgaWYgKHByZXN0b192ZXJzaW9uKSB7IHByZXN0b192ZXJzaW9uID0gTnVtYmVyKHByZXN0b192ZXJzaW9uWzFdKTsgfVxuICBpZiAocHJlc3RvX3ZlcnNpb24gJiYgcHJlc3RvX3ZlcnNpb24gPj0gMTUpIHsgcHJlc3RvID0gZmFsc2U7IHdlYmtpdCA9IHRydWU7IH1cbiAgLy8gU29tZSBicm93c2VycyB1c2UgdGhlIHdyb25nIGV2ZW50IHByb3BlcnRpZXMgdG8gc2lnbmFsIGNtZC9jdHJsIG9uIE9TIFhcbiAgdmFyIGZsaXBDdHJsQ21kID0gbWFjICYmIChxdHdlYmtpdCB8fCBwcmVzdG8gJiYgKHByZXN0b192ZXJzaW9uID09IG51bGwgfHwgcHJlc3RvX3ZlcnNpb24gPCAxMi4xMSkpO1xuICB2YXIgY2FwdHVyZVJpZ2h0Q2xpY2sgPSBnZWNrbyB8fCAoaWUgJiYgaWVfdmVyc2lvbiA+PSA5KTtcblxuICBmdW5jdGlvbiBjbGFzc1Rlc3QoY2xzKSB7IHJldHVybiBuZXcgUmVnRXhwKFwiKF58XFxcXHMpXCIgKyBjbHMgKyBcIig/OiR8XFxcXHMpXFxcXHMqXCIpIH1cblxuICB2YXIgcm1DbGFzcyA9IGZ1bmN0aW9uKG5vZGUsIGNscykge1xuICAgIHZhciBjdXJyZW50ID0gbm9kZS5jbGFzc05hbWU7XG4gICAgdmFyIG1hdGNoID0gY2xhc3NUZXN0KGNscykuZXhlYyhjdXJyZW50KTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHZhciBhZnRlciA9IGN1cnJlbnQuc2xpY2UobWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgpO1xuICAgICAgbm9kZS5jbGFzc05hbWUgPSBjdXJyZW50LnNsaWNlKDAsIG1hdGNoLmluZGV4KSArIChhZnRlciA/IG1hdGNoWzFdICsgYWZ0ZXIgOiBcIlwiKTtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gcmVtb3ZlQ2hpbGRyZW4oZSkge1xuICAgIGZvciAodmFyIGNvdW50ID0gZS5jaGlsZE5vZGVzLmxlbmd0aDsgY291bnQgPiAwOyAtLWNvdW50KVxuICAgICAgeyBlLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCk7IH1cbiAgICByZXR1cm4gZVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlQ2hpbGRyZW5BbmRBZGQocGFyZW50LCBlKSB7XG4gICAgcmV0dXJuIHJlbW92ZUNoaWxkcmVuKHBhcmVudCkuYXBwZW5kQ2hpbGQoZSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGVsdCh0YWcsIGNvbnRlbnQsIGNsYXNzTmFtZSwgc3R5bGUpIHtcbiAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgICBpZiAoY2xhc3NOYW1lKSB7IGUuY2xhc3NOYW1lID0gY2xhc3NOYW1lOyB9XG4gICAgaWYgKHN0eWxlKSB7IGUuc3R5bGUuY3NzVGV4dCA9IHN0eWxlOyB9XG4gICAgaWYgKHR5cGVvZiBjb250ZW50ID09IFwic3RyaW5nXCIpIHsgZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KSk7IH1cbiAgICBlbHNlIGlmIChjb250ZW50KSB7IGZvciAodmFyIGkgPSAwOyBpIDwgY29udGVudC5sZW5ndGg7ICsraSkgeyBlLmFwcGVuZENoaWxkKGNvbnRlbnRbaV0pOyB9IH1cbiAgICByZXR1cm4gZVxuICB9XG4gIC8vIHdyYXBwZXIgZm9yIGVsdCwgd2hpY2ggcmVtb3ZlcyB0aGUgZWx0IGZyb20gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZVxuICBmdW5jdGlvbiBlbHRQKHRhZywgY29udGVudCwgY2xhc3NOYW1lLCBzdHlsZSkge1xuICAgIHZhciBlID0gZWx0KHRhZywgY29udGVudCwgY2xhc3NOYW1lLCBzdHlsZSk7XG4gICAgZS5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsIFwicHJlc2VudGF0aW9uXCIpO1xuICAgIHJldHVybiBlXG4gIH1cblxuICB2YXIgcmFuZ2U7XG4gIGlmIChkb2N1bWVudC5jcmVhdGVSYW5nZSkgeyByYW5nZSA9IGZ1bmN0aW9uKG5vZGUsIHN0YXJ0LCBlbmQsIGVuZE5vZGUpIHtcbiAgICB2YXIgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgci5zZXRFbmQoZW5kTm9kZSB8fCBub2RlLCBlbmQpO1xuICAgIHIuc2V0U3RhcnQobm9kZSwgc3RhcnQpO1xuICAgIHJldHVybiByXG4gIH07IH1cbiAgZWxzZSB7IHJhbmdlID0gZnVuY3Rpb24obm9kZSwgc3RhcnQsIGVuZCkge1xuICAgIHZhciByID0gZG9jdW1lbnQuYm9keS5jcmVhdGVUZXh0UmFuZ2UoKTtcbiAgICB0cnkgeyByLm1vdmVUb0VsZW1lbnRUZXh0KG5vZGUucGFyZW50Tm9kZSk7IH1cbiAgICBjYXRjaChlKSB7IHJldHVybiByIH1cbiAgICByLmNvbGxhcHNlKHRydWUpO1xuICAgIHIubW92ZUVuZChcImNoYXJhY3RlclwiLCBlbmQpO1xuICAgIHIubW92ZVN0YXJ0KFwiY2hhcmFjdGVyXCIsIHN0YXJ0KTtcbiAgICByZXR1cm4gclxuICB9OyB9XG5cbiAgZnVuY3Rpb24gY29udGFpbnMocGFyZW50LCBjaGlsZCkge1xuICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PSAzKSAvLyBBbmRyb2lkIGJyb3dzZXIgYWx3YXlzIHJldHVybnMgZmFsc2Ugd2hlbiBjaGlsZCBpcyBhIHRleHRub2RlXG4gICAgICB7IGNoaWxkID0gY2hpbGQucGFyZW50Tm9kZTsgfVxuICAgIGlmIChwYXJlbnQuY29udGFpbnMpXG4gICAgICB7IHJldHVybiBwYXJlbnQuY29udGFpbnMoY2hpbGQpIH1cbiAgICBkbyB7XG4gICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT0gMTEpIHsgY2hpbGQgPSBjaGlsZC5ob3N0OyB9XG4gICAgICBpZiAoY2hpbGQgPT0gcGFyZW50KSB7IHJldHVybiB0cnVlIH1cbiAgICB9IHdoaWxlIChjaGlsZCA9IGNoaWxkLnBhcmVudE5vZGUpXG4gIH1cblxuICBmdW5jdGlvbiBhY3RpdmVFbHQoKSB7XG4gICAgLy8gSUUgYW5kIEVkZ2UgbWF5IHRocm93IGFuIFwiVW5zcGVjaWZpZWQgRXJyb3JcIiB3aGVuIGFjY2Vzc2luZyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LlxuICAgIC8vIElFIDwgMTAgd2lsbCB0aHJvdyB3aGVuIGFjY2Vzc2VkIHdoaWxlIHRoZSBwYWdlIGlzIGxvYWRpbmcgb3IgaW4gYW4gaWZyYW1lLlxuICAgIC8vIElFID4gOSBhbmQgRWRnZSB3aWxsIHRocm93IHdoZW4gYWNjZXNzZWQgaW4gYW4gaWZyYW1lIGlmIGRvY3VtZW50LmJvZHkgaXMgdW5hdmFpbGFibGUuXG4gICAgdmFyIGFjdGl2ZUVsZW1lbnQ7XG4gICAgdHJ5IHtcbiAgICAgIGFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIH0gY2F0Y2goZSkge1xuICAgICAgYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmJvZHkgfHwgbnVsbDtcbiAgICB9XG4gICAgd2hpbGUgKGFjdGl2ZUVsZW1lbnQgJiYgYWN0aXZlRWxlbWVudC5zaGFkb3dSb290ICYmIGFjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50KVxuICAgICAgeyBhY3RpdmVFbGVtZW50ID0gYWN0aXZlRWxlbWVudC5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7IH1cbiAgICByZXR1cm4gYWN0aXZlRWxlbWVudFxuICB9XG5cbiAgZnVuY3Rpb24gYWRkQ2xhc3Mobm9kZSwgY2xzKSB7XG4gICAgdmFyIGN1cnJlbnQgPSBub2RlLmNsYXNzTmFtZTtcbiAgICBpZiAoIWNsYXNzVGVzdChjbHMpLnRlc3QoY3VycmVudCkpIHsgbm9kZS5jbGFzc05hbWUgKz0gKGN1cnJlbnQgPyBcIiBcIiA6IFwiXCIpICsgY2xzOyB9XG4gIH1cbiAgZnVuY3Rpb24gam9pbkNsYXNzZXMoYSwgYikge1xuICAgIHZhciBhcyA9IGEuc3BsaXQoXCIgXCIpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXMubGVuZ3RoOyBpKyspXG4gICAgICB7IGlmIChhc1tpXSAmJiAhY2xhc3NUZXN0KGFzW2ldKS50ZXN0KGIpKSB7IGIgKz0gXCIgXCIgKyBhc1tpXTsgfSB9XG4gICAgcmV0dXJuIGJcbiAgfVxuXG4gIHZhciBzZWxlY3RJbnB1dCA9IGZ1bmN0aW9uKG5vZGUpIHsgbm9kZS5zZWxlY3QoKTsgfTtcbiAgaWYgKGlvcykgLy8gTW9iaWxlIFNhZmFyaSBhcHBhcmVudGx5IGhhcyBhIGJ1ZyB3aGVyZSBzZWxlY3QoKSBpcyBicm9rZW4uXG4gICAgeyBzZWxlY3RJbnB1dCA9IGZ1bmN0aW9uKG5vZGUpIHsgbm9kZS5zZWxlY3Rpb25TdGFydCA9IDA7IG5vZGUuc2VsZWN0aW9uRW5kID0gbm9kZS52YWx1ZS5sZW5ndGg7IH07IH1cbiAgZWxzZSBpZiAoaWUpIC8vIFN1cHByZXNzIG15c3RlcmlvdXMgSUUxMCBlcnJvcnNcbiAgICB7IHNlbGVjdElucHV0ID0gZnVuY3Rpb24obm9kZSkgeyB0cnkgeyBub2RlLnNlbGVjdCgpOyB9IGNhdGNoKF9lKSB7fSB9OyB9XG5cbiAgZnVuY3Rpb24gYmluZChmKSB7XG4gICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgIHJldHVybiBmdW5jdGlvbigpe3JldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpfVxuICB9XG5cbiAgZnVuY3Rpb24gY29weU9iaihvYmosIHRhcmdldCwgb3ZlcndyaXRlKSB7XG4gICAgaWYgKCF0YXJnZXQpIHsgdGFyZ2V0ID0ge307IH1cbiAgICBmb3IgKHZhciBwcm9wIGluIG9iailcbiAgICAgIHsgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSAmJiAob3ZlcndyaXRlICE9PSBmYWxzZSB8fCAhdGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3ApKSlcbiAgICAgICAgeyB0YXJnZXRbcHJvcF0gPSBvYmpbcHJvcF07IH0gfVxuICAgIHJldHVybiB0YXJnZXRcbiAgfVxuXG4gIC8vIENvdW50cyB0aGUgY29sdW1uIG9mZnNldCBpbiBhIHN0cmluZywgdGFraW5nIHRhYnMgaW50byBhY2NvdW50LlxuICAvLyBVc2VkIG1vc3RseSB0byBmaW5kIGluZGVudGF0aW9uLlxuICBmdW5jdGlvbiBjb3VudENvbHVtbihzdHJpbmcsIGVuZCwgdGFiU2l6ZSwgc3RhcnRJbmRleCwgc3RhcnRWYWx1ZSkge1xuICAgIGlmIChlbmQgPT0gbnVsbCkge1xuICAgICAgZW5kID0gc3RyaW5nLnNlYXJjaCgvW15cXHNcXHUwMGEwXS8pO1xuICAgICAgaWYgKGVuZCA9PSAtMSkgeyBlbmQgPSBzdHJpbmcubGVuZ3RoOyB9XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSBzdGFydEluZGV4IHx8IDAsIG4gPSBzdGFydFZhbHVlIHx8IDA7Oykge1xuICAgICAgdmFyIG5leHRUYWIgPSBzdHJpbmcuaW5kZXhPZihcIlxcdFwiLCBpKTtcbiAgICAgIGlmIChuZXh0VGFiIDwgMCB8fCBuZXh0VGFiID49IGVuZClcbiAgICAgICAgeyByZXR1cm4gbiArIChlbmQgLSBpKSB9XG4gICAgICBuICs9IG5leHRUYWIgLSBpO1xuICAgICAgbiArPSB0YWJTaXplIC0gKG4gJSB0YWJTaXplKTtcbiAgICAgIGkgPSBuZXh0VGFiICsgMTtcbiAgICB9XG4gIH1cblxuICB2YXIgRGVsYXllZCA9IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuaWQgPSBudWxsO1xuICAgIHRoaXMuZiA9IG51bGw7XG4gICAgdGhpcy50aW1lID0gMDtcbiAgICB0aGlzLmhhbmRsZXIgPSBiaW5kKHRoaXMub25UaW1lb3V0LCB0aGlzKTtcbiAgfTtcbiAgRGVsYXllZC5wcm90b3R5cGUub25UaW1lb3V0ID0gZnVuY3Rpb24gKHNlbGYpIHtcbiAgICBzZWxmLmlkID0gMDtcbiAgICBpZiAoc2VsZi50aW1lIDw9ICtuZXcgRGF0ZSkge1xuICAgICAgc2VsZi5mKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQoc2VsZi5oYW5kbGVyLCBzZWxmLnRpbWUgLSArbmV3IERhdGUpO1xuICAgIH1cbiAgfTtcbiAgRGVsYXllZC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG1zLCBmKSB7XG4gICAgdGhpcy5mID0gZjtcbiAgICB2YXIgdGltZSA9ICtuZXcgRGF0ZSArIG1zO1xuICAgIGlmICghdGhpcy5pZCB8fCB0aW1lIDwgdGhpcy50aW1lKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5pZCk7XG4gICAgICB0aGlzLmlkID0gc2V0VGltZW91dCh0aGlzLmhhbmRsZXIsIG1zKTtcbiAgICAgIHRoaXMudGltZSA9IHRpbWU7XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIGluZGV4T2YoYXJyYXksIGVsdCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpXG4gICAgICB7IGlmIChhcnJheVtpXSA9PSBlbHQpIHsgcmV0dXJuIGkgfSB9XG4gICAgcmV0dXJuIC0xXG4gIH1cblxuICAvLyBOdW1iZXIgb2YgcGl4ZWxzIGFkZGVkIHRvIHNjcm9sbGVyIGFuZCBzaXplciB0byBoaWRlIHNjcm9sbGJhclxuICB2YXIgc2Nyb2xsZXJHYXAgPSA1MDtcblxuICAvLyBSZXR1cm5lZCBvciB0aHJvd24gYnkgdmFyaW91cyBwcm90b2NvbHMgdG8gc2lnbmFsICdJJ20gbm90XG4gIC8vIGhhbmRsaW5nIHRoaXMnLlxuICB2YXIgUGFzcyA9IHt0b1N0cmluZzogZnVuY3Rpb24oKXtyZXR1cm4gXCJDb2RlTWlycm9yLlBhc3NcIn19O1xuXG4gIC8vIFJldXNlZCBvcHRpb24gb2JqZWN0cyBmb3Igc2V0U2VsZWN0aW9uICYgZnJpZW5kc1xuICB2YXIgc2VsX2RvbnRTY3JvbGwgPSB7c2Nyb2xsOiBmYWxzZX0sIHNlbF9tb3VzZSA9IHtvcmlnaW46IFwiKm1vdXNlXCJ9LCBzZWxfbW92ZSA9IHtvcmlnaW46IFwiK21vdmVcIn07XG5cbiAgLy8gVGhlIGludmVyc2Ugb2YgY291bnRDb2x1bW4gLS0gZmluZCB0aGUgb2Zmc2V0IHRoYXQgY29ycmVzcG9uZHMgdG9cbiAgLy8gYSBwYXJ0aWN1bGFyIGNvbHVtbi5cbiAgZnVuY3Rpb24gZmluZENvbHVtbihzdHJpbmcsIGdvYWwsIHRhYlNpemUpIHtcbiAgICBmb3IgKHZhciBwb3MgPSAwLCBjb2wgPSAwOzspIHtcbiAgICAgIHZhciBuZXh0VGFiID0gc3RyaW5nLmluZGV4T2YoXCJcXHRcIiwgcG9zKTtcbiAgICAgIGlmIChuZXh0VGFiID09IC0xKSB7IG5leHRUYWIgPSBzdHJpbmcubGVuZ3RoOyB9XG4gICAgICB2YXIgc2tpcHBlZCA9IG5leHRUYWIgLSBwb3M7XG4gICAgICBpZiAobmV4dFRhYiA9PSBzdHJpbmcubGVuZ3RoIHx8IGNvbCArIHNraXBwZWQgPj0gZ29hbClcbiAgICAgICAgeyByZXR1cm4gcG9zICsgTWF0aC5taW4oc2tpcHBlZCwgZ29hbCAtIGNvbCkgfVxuICAgICAgY29sICs9IG5leHRUYWIgLSBwb3M7XG4gICAgICBjb2wgKz0gdGFiU2l6ZSAtIChjb2wgJSB0YWJTaXplKTtcbiAgICAgIHBvcyA9IG5leHRUYWIgKyAxO1xuICAgICAgaWYgKGNvbCA+PSBnb2FsKSB7IHJldHVybiBwb3MgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBzcGFjZVN0cnMgPSBbXCJcIl07XG4gIGZ1bmN0aW9uIHNwYWNlU3RyKG4pIHtcbiAgICB3aGlsZSAoc3BhY2VTdHJzLmxlbmd0aCA8PSBuKVxuICAgICAgeyBzcGFjZVN0cnMucHVzaChsc3Qoc3BhY2VTdHJzKSArIFwiIFwiKTsgfVxuICAgIHJldHVybiBzcGFjZVN0cnNbbl1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxzdChhcnIpIHsgcmV0dXJuIGFyclthcnIubGVuZ3RoLTFdIH1cblxuICBmdW5jdGlvbiBtYXAoYXJyYXksIGYpIHtcbiAgICB2YXIgb3V0ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgeyBvdXRbaV0gPSBmKGFycmF5W2ldLCBpKTsgfVxuICAgIHJldHVybiBvdXRcbiAgfVxuXG4gIGZ1bmN0aW9uIGluc2VydFNvcnRlZChhcnJheSwgdmFsdWUsIHNjb3JlKSB7XG4gICAgdmFyIHBvcyA9IDAsIHByaW9yaXR5ID0gc2NvcmUodmFsdWUpO1xuICAgIHdoaWxlIChwb3MgPCBhcnJheS5sZW5ndGggJiYgc2NvcmUoYXJyYXlbcG9zXSkgPD0gcHJpb3JpdHkpIHsgcG9zKys7IH1cbiAgICBhcnJheS5zcGxpY2UocG9zLCAwLCB2YWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBub3RoaW5nKCkge31cblxuICBmdW5jdGlvbiBjcmVhdGVPYmooYmFzZSwgcHJvcHMpIHtcbiAgICB2YXIgaW5zdDtcbiAgICBpZiAoT2JqZWN0LmNyZWF0ZSkge1xuICAgICAgaW5zdCA9IE9iamVjdC5jcmVhdGUoYmFzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vdGhpbmcucHJvdG90eXBlID0gYmFzZTtcbiAgICAgIGluc3QgPSBuZXcgbm90aGluZygpO1xuICAgIH1cbiAgICBpZiAocHJvcHMpIHsgY29weU9iaihwcm9wcywgaW5zdCk7IH1cbiAgICByZXR1cm4gaW5zdFxuICB9XG5cbiAgdmFyIG5vbkFTQ0lJU2luZ2xlQ2FzZVdvcmRDaGFyID0gL1tcXHUwMGRmXFx1MDU4N1xcdTA1OTAtXFx1MDVmNFxcdTA2MDAtXFx1MDZmZlxcdTMwNDAtXFx1MzA5ZlxcdTMwYTAtXFx1MzBmZlxcdTM0MDAtXFx1NGRiNVxcdTRlMDAtXFx1OWZjY1xcdWFjMDAtXFx1ZDdhZl0vO1xuICBmdW5jdGlvbiBpc1dvcmRDaGFyQmFzaWMoY2gpIHtcbiAgICByZXR1cm4gL1xcdy8udGVzdChjaCkgfHwgY2ggPiBcIlxceDgwXCIgJiZcbiAgICAgIChjaC50b1VwcGVyQ2FzZSgpICE9IGNoLnRvTG93ZXJDYXNlKCkgfHwgbm9uQVNDSUlTaW5nbGVDYXNlV29yZENoYXIudGVzdChjaCkpXG4gIH1cbiAgZnVuY3Rpb24gaXNXb3JkQ2hhcihjaCwgaGVscGVyKSB7XG4gICAgaWYgKCFoZWxwZXIpIHsgcmV0dXJuIGlzV29yZENoYXJCYXNpYyhjaCkgfVxuICAgIGlmIChoZWxwZXIuc291cmNlLmluZGV4T2YoXCJcXFxcd1wiKSA+IC0xICYmIGlzV29yZENoYXJCYXNpYyhjaCkpIHsgcmV0dXJuIHRydWUgfVxuICAgIHJldHVybiBoZWxwZXIudGVzdChjaClcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzRW1wdHkob2JqKSB7XG4gICAgZm9yICh2YXIgbiBpbiBvYmopIHsgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShuKSAmJiBvYmpbbl0pIHsgcmV0dXJuIGZhbHNlIH0gfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyBFeHRlbmRpbmcgdW5pY29kZSBjaGFyYWN0ZXJzLiBBIHNlcmllcyBvZiBhIG5vbi1leHRlbmRpbmcgY2hhciArXG4gIC8vIGFueSBudW1iZXIgb2YgZXh0ZW5kaW5nIGNoYXJzIGlzIHRyZWF0ZWQgYXMgYSBzaW5nbGUgdW5pdCBhcyBmYXJcbiAgLy8gYXMgZWRpdGluZyBhbmQgbWVhc3VyaW5nIGlzIGNvbmNlcm5lZC4gVGhpcyBpcyBub3QgZnVsbHkgY29ycmVjdCxcbiAgLy8gc2luY2Ugc29tZSBzY3JpcHRzL2ZvbnRzL2Jyb3dzZXJzIGFsc28gdHJlYXQgb3RoZXIgY29uZmlndXJhdGlvbnNcbiAgLy8gb2YgY29kZSBwb2ludHMgYXMgYSBncm91cC5cbiAgdmFyIGV4dGVuZGluZ0NoYXJzID0gL1tcXHUwMzAwLVxcdTAzNmZcXHUwNDgzLVxcdTA0ODlcXHUwNTkxLVxcdTA1YmRcXHUwNWJmXFx1MDVjMVxcdTA1YzJcXHUwNWM0XFx1MDVjNVxcdTA1YzdcXHUwNjEwLVxcdTA2MWFcXHUwNjRiLVxcdTA2NWVcXHUwNjcwXFx1MDZkNi1cXHUwNmRjXFx1MDZkZS1cXHUwNmU0XFx1MDZlN1xcdTA2ZThcXHUwNmVhLVxcdTA2ZWRcXHUwNzExXFx1MDczMC1cXHUwNzRhXFx1MDdhNi1cXHUwN2IwXFx1MDdlYi1cXHUwN2YzXFx1MDgxNi1cXHUwODE5XFx1MDgxYi1cXHUwODIzXFx1MDgyNS1cXHUwODI3XFx1MDgyOS1cXHUwODJkXFx1MDkwMC1cXHUwOTAyXFx1MDkzY1xcdTA5NDEtXFx1MDk0OFxcdTA5NGRcXHUwOTUxLVxcdTA5NTVcXHUwOTYyXFx1MDk2M1xcdTA5ODFcXHUwOWJjXFx1MDliZVxcdTA5YzEtXFx1MDljNFxcdTA5Y2RcXHUwOWQ3XFx1MDllMlxcdTA5ZTNcXHUwYTAxXFx1MGEwMlxcdTBhM2NcXHUwYTQxXFx1MGE0MlxcdTBhNDdcXHUwYTQ4XFx1MGE0Yi1cXHUwYTRkXFx1MGE1MVxcdTBhNzBcXHUwYTcxXFx1MGE3NVxcdTBhODFcXHUwYTgyXFx1MGFiY1xcdTBhYzEtXFx1MGFjNVxcdTBhYzdcXHUwYWM4XFx1MGFjZFxcdTBhZTJcXHUwYWUzXFx1MGIwMVxcdTBiM2NcXHUwYjNlXFx1MGIzZlxcdTBiNDEtXFx1MGI0NFxcdTBiNGRcXHUwYjU2XFx1MGI1N1xcdTBiNjJcXHUwYjYzXFx1MGI4MlxcdTBiYmVcXHUwYmMwXFx1MGJjZFxcdTBiZDdcXHUwYzNlLVxcdTBjNDBcXHUwYzQ2LVxcdTBjNDhcXHUwYzRhLVxcdTBjNGRcXHUwYzU1XFx1MGM1NlxcdTBjNjJcXHUwYzYzXFx1MGNiY1xcdTBjYmZcXHUwY2MyXFx1MGNjNlxcdTBjY2NcXHUwY2NkXFx1MGNkNVxcdTBjZDZcXHUwY2UyXFx1MGNlM1xcdTBkM2VcXHUwZDQxLVxcdTBkNDRcXHUwZDRkXFx1MGQ1N1xcdTBkNjJcXHUwZDYzXFx1MGRjYVxcdTBkY2ZcXHUwZGQyLVxcdTBkZDRcXHUwZGQ2XFx1MGRkZlxcdTBlMzFcXHUwZTM0LVxcdTBlM2FcXHUwZTQ3LVxcdTBlNGVcXHUwZWIxXFx1MGViNC1cXHUwZWI5XFx1MGViYlxcdTBlYmNcXHUwZWM4LVxcdTBlY2RcXHUwZjE4XFx1MGYxOVxcdTBmMzVcXHUwZjM3XFx1MGYzOVxcdTBmNzEtXFx1MGY3ZVxcdTBmODAtXFx1MGY4NFxcdTBmODZcXHUwZjg3XFx1MGY5MC1cXHUwZjk3XFx1MGY5OS1cXHUwZmJjXFx1MGZjNlxcdTEwMmQtXFx1MTAzMFxcdTEwMzItXFx1MTAzN1xcdTEwMzlcXHUxMDNhXFx1MTAzZFxcdTEwM2VcXHUxMDU4XFx1MTA1OVxcdTEwNWUtXFx1MTA2MFxcdTEwNzEtXFx1MTA3NFxcdTEwODJcXHUxMDg1XFx1MTA4NlxcdTEwOGRcXHUxMDlkXFx1MTM1ZlxcdTE3MTItXFx1MTcxNFxcdTE3MzItXFx1MTczNFxcdTE3NTJcXHUxNzUzXFx1MTc3MlxcdTE3NzNcXHUxN2I3LVxcdTE3YmRcXHUxN2M2XFx1MTdjOS1cXHUxN2QzXFx1MTdkZFxcdTE4MGItXFx1MTgwZFxcdTE4YTlcXHUxOTIwLVxcdTE5MjJcXHUxOTI3XFx1MTkyOFxcdTE5MzJcXHUxOTM5LVxcdTE5M2JcXHUxYTE3XFx1MWExOFxcdTFhNTZcXHUxYTU4LVxcdTFhNWVcXHUxYTYwXFx1MWE2MlxcdTFhNjUtXFx1MWE2Y1xcdTFhNzMtXFx1MWE3Y1xcdTFhN2ZcXHUxYjAwLVxcdTFiMDNcXHUxYjM0XFx1MWIzNi1cXHUxYjNhXFx1MWIzY1xcdTFiNDJcXHUxYjZiLVxcdTFiNzNcXHUxYjgwXFx1MWI4MVxcdTFiYTItXFx1MWJhNVxcdTFiYThcXHUxYmE5XFx1MWMyYy1cXHUxYzMzXFx1MWMzNlxcdTFjMzdcXHUxY2QwLVxcdTFjZDJcXHUxY2Q0LVxcdTFjZTBcXHUxY2UyLVxcdTFjZThcXHUxY2VkXFx1MWRjMC1cXHUxZGU2XFx1MWRmZC1cXHUxZGZmXFx1MjAwY1xcdTIwMGRcXHUyMGQwLVxcdTIwZjBcXHUyY2VmLVxcdTJjZjFcXHUyZGUwLVxcdTJkZmZcXHUzMDJhLVxcdTMwMmZcXHUzMDk5XFx1MzA5YVxcdWE2NmYtXFx1YTY3MlxcdWE2N2NcXHVhNjdkXFx1YTZmMFxcdWE2ZjFcXHVhODAyXFx1YTgwNlxcdWE4MGJcXHVhODI1XFx1YTgyNlxcdWE4YzRcXHVhOGUwLVxcdWE4ZjFcXHVhOTI2LVxcdWE5MmRcXHVhOTQ3LVxcdWE5NTFcXHVhOTgwLVxcdWE5ODJcXHVhOWIzXFx1YTliNi1cXHVhOWI5XFx1YTliY1xcdWFhMjktXFx1YWEyZVxcdWFhMzFcXHVhYTMyXFx1YWEzNVxcdWFhMzZcXHVhYTQzXFx1YWE0Y1xcdWFhYjBcXHVhYWIyLVxcdWFhYjRcXHVhYWI3XFx1YWFiOFxcdWFhYmVcXHVhYWJmXFx1YWFjMVxcdWFiZTVcXHVhYmU4XFx1YWJlZFxcdWRjMDAtXFx1ZGZmZlxcdWZiMWVcXHVmZTAwLVxcdWZlMGZcXHVmZTIwLVxcdWZlMjZcXHVmZjllXFx1ZmY5Zl0vO1xuICBmdW5jdGlvbiBpc0V4dGVuZGluZ0NoYXIoY2gpIHsgcmV0dXJuIGNoLmNoYXJDb2RlQXQoMCkgPj0gNzY4ICYmIGV4dGVuZGluZ0NoYXJzLnRlc3QoY2gpIH1cblxuICAvLyBSZXR1cm5zIGEgbnVtYmVyIGZyb20gdGhlIHJhbmdlIFtgMGA7IGBzdHIubGVuZ3RoYF0gdW5sZXNzIGBwb3NgIGlzIG91dHNpZGUgdGhhdCByYW5nZS5cbiAgZnVuY3Rpb24gc2tpcEV4dGVuZGluZ0NoYXJzKHN0ciwgcG9zLCBkaXIpIHtcbiAgICB3aGlsZSAoKGRpciA8IDAgPyBwb3MgPiAwIDogcG9zIDwgc3RyLmxlbmd0aCkgJiYgaXNFeHRlbmRpbmdDaGFyKHN0ci5jaGFyQXQocG9zKSkpIHsgcG9zICs9IGRpcjsgfVxuICAgIHJldHVybiBwb3NcbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIHZhbHVlIGZyb20gdGhlIHJhbmdlIFtgZnJvbWA7IGB0b2BdIHRoYXQgc2F0aXNmaWVzXG4gIC8vIGBwcmVkYCBhbmQgaXMgY2xvc2VzdCB0byBgZnJvbWAuIEFzc3VtZXMgdGhhdCBhdCBsZWFzdCBgdG9gXG4gIC8vIHNhdGlzZmllcyBgcHJlZGAuIFN1cHBvcnRzIGBmcm9tYCBiZWluZyBncmVhdGVyIHRoYW4gYHRvYC5cbiAgZnVuY3Rpb24gZmluZEZpcnN0KHByZWQsIGZyb20sIHRvKSB7XG4gICAgLy8gQXQgYW55IHBvaW50IHdlIGFyZSBjZXJ0YWluIGB0b2Agc2F0aXNmaWVzIGBwcmVkYCwgZG9uJ3Qga25vd1xuICAgIC8vIHdoZXRoZXIgYGZyb21gIGRvZXMuXG4gICAgdmFyIGRpciA9IGZyb20gPiB0byA/IC0xIDogMTtcbiAgICBmb3IgKDs7KSB7XG4gICAgICBpZiAoZnJvbSA9PSB0bykgeyByZXR1cm4gZnJvbSB9XG4gICAgICB2YXIgbWlkRiA9IChmcm9tICsgdG8pIC8gMiwgbWlkID0gZGlyIDwgMCA/IE1hdGguY2VpbChtaWRGKSA6IE1hdGguZmxvb3IobWlkRik7XG4gICAgICBpZiAobWlkID09IGZyb20pIHsgcmV0dXJuIHByZWQobWlkKSA/IGZyb20gOiB0byB9XG4gICAgICBpZiAocHJlZChtaWQpKSB7IHRvID0gbWlkOyB9XG4gICAgICBlbHNlIHsgZnJvbSA9IG1pZCArIGRpcjsgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEJJREkgSEVMUEVSU1xuXG4gIGZ1bmN0aW9uIGl0ZXJhdGVCaWRpU2VjdGlvbnMob3JkZXIsIGZyb20sIHRvLCBmKSB7XG4gICAgaWYgKCFvcmRlcikgeyByZXR1cm4gZihmcm9tLCB0bywgXCJsdHJcIiwgMCkgfVxuICAgIHZhciBmb3VuZCA9IGZhbHNlO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3JkZXIubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBwYXJ0ID0gb3JkZXJbaV07XG4gICAgICBpZiAocGFydC5mcm9tIDwgdG8gJiYgcGFydC50byA+IGZyb20gfHwgZnJvbSA9PSB0byAmJiBwYXJ0LnRvID09IGZyb20pIHtcbiAgICAgICAgZihNYXRoLm1heChwYXJ0LmZyb20sIGZyb20pLCBNYXRoLm1pbihwYXJ0LnRvLCB0byksIHBhcnQubGV2ZWwgPT0gMSA/IFwicnRsXCIgOiBcImx0clwiLCBpKTtcbiAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWZvdW5kKSB7IGYoZnJvbSwgdG8sIFwibHRyXCIpOyB9XG4gIH1cblxuICB2YXIgYmlkaU90aGVyID0gbnVsbDtcbiAgZnVuY3Rpb24gZ2V0QmlkaVBhcnRBdChvcmRlciwgY2gsIHN0aWNreSkge1xuICAgIHZhciBmb3VuZDtcbiAgICBiaWRpT3RoZXIgPSBudWxsO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3JkZXIubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBjdXIgPSBvcmRlcltpXTtcbiAgICAgIGlmIChjdXIuZnJvbSA8IGNoICYmIGN1ci50byA+IGNoKSB7IHJldHVybiBpIH1cbiAgICAgIGlmIChjdXIudG8gPT0gY2gpIHtcbiAgICAgICAgaWYgKGN1ci5mcm9tICE9IGN1ci50byAmJiBzdGlja3kgPT0gXCJiZWZvcmVcIikgeyBmb3VuZCA9IGk7IH1cbiAgICAgICAgZWxzZSB7IGJpZGlPdGhlciA9IGk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChjdXIuZnJvbSA9PSBjaCkge1xuICAgICAgICBpZiAoY3VyLmZyb20gIT0gY3VyLnRvICYmIHN0aWNreSAhPSBcImJlZm9yZVwiKSB7IGZvdW5kID0gaTsgfVxuICAgICAgICBlbHNlIHsgYmlkaU90aGVyID0gaTsgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm91bmQgIT0gbnVsbCA/IGZvdW5kIDogYmlkaU90aGVyXG4gIH1cblxuICAvLyBCaWRpcmVjdGlvbmFsIG9yZGVyaW5nIGFsZ29yaXRobVxuICAvLyBTZWUgaHR0cDovL3VuaWNvZGUub3JnL3JlcG9ydHMvdHI5L3RyOS0xMy5odG1sIGZvciB0aGUgYWxnb3JpdGhtXG4gIC8vIHRoYXQgdGhpcyAocGFydGlhbGx5KSBpbXBsZW1lbnRzLlxuXG4gIC8vIE9uZS1jaGFyIGNvZGVzIHVzZWQgZm9yIGNoYXJhY3RlciB0eXBlczpcbiAgLy8gTCAoTCk6ICAgTGVmdC10by1SaWdodFxuICAvLyBSIChSKTogICBSaWdodC10by1MZWZ0XG4gIC8vIHIgKEFMKTogIFJpZ2h0LXRvLUxlZnQgQXJhYmljXG4gIC8vIDEgKEVOKTogIEV1cm9wZWFuIE51bWJlclxuICAvLyArIChFUyk6ICBFdXJvcGVhbiBOdW1iZXIgU2VwYXJhdG9yXG4gIC8vICUgKEVUKTogIEV1cm9wZWFuIE51bWJlciBUZXJtaW5hdG9yXG4gIC8vIG4gKEFOKTogIEFyYWJpYyBOdW1iZXJcbiAgLy8gLCAoQ1MpOiAgQ29tbW9uIE51bWJlciBTZXBhcmF0b3JcbiAgLy8gbSAoTlNNKTogTm9uLVNwYWNpbmcgTWFya1xuICAvLyBiIChCTik6ICBCb3VuZGFyeSBOZXV0cmFsXG4gIC8vIHMgKEIpOiAgIFBhcmFncmFwaCBTZXBhcmF0b3JcbiAgLy8gdCAoUyk6ICAgU2VnbWVudCBTZXBhcmF0b3JcbiAgLy8gdyAoV1MpOiAgV2hpdGVzcGFjZVxuICAvLyBOIChPTik6ICBPdGhlciBOZXV0cmFsc1xuXG4gIC8vIFJldHVybnMgbnVsbCBpZiBjaGFyYWN0ZXJzIGFyZSBvcmRlcmVkIGFzIHRoZXkgYXBwZWFyXG4gIC8vIChsZWZ0LXRvLXJpZ2h0KSwgb3IgYW4gYXJyYXkgb2Ygc2VjdGlvbnMgKHtmcm9tLCB0bywgbGV2ZWx9XG4gIC8vIG9iamVjdHMpIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IG9jY3VyIHZpc3VhbGx5LlxuICB2YXIgYmlkaU9yZGVyaW5nID0gKGZ1bmN0aW9uKCkge1xuICAgIC8vIENoYXJhY3RlciB0eXBlcyBmb3IgY29kZXBvaW50cyAwIHRvIDB4ZmZcbiAgICB2YXIgbG93VHlwZXMgPSBcImJiYmJiYmJiYnRzdHdzYmJiYmJiYmJiYmJiYmJzc3N0d05OJSUlTk5OTk5OLE4sTjExMTExMTExMTFOTk5OTk5OTExMTExMTExMTExMTExMTExMTExMTExMTExOTk5OTk5MTExMTExMTExMTExMTExMTExMTExMTExMTE5OTk5iYmJiYmJzYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIsTiUlJSVOTk5OTE5OTk5OJSUxMU5MTk5OMUxOTk5OTkxMTExMTExMTExMTExMTExMTExMTExMTkxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExOXCI7XG4gICAgLy8gQ2hhcmFjdGVyIHR5cGVzIGZvciBjb2RlcG9pbnRzIDB4NjAwIHRvIDB4NmY5XG4gICAgdmFyIGFyYWJpY1R5cGVzID0gXCJubm5ubm5OTnIlJXIsck5ObW1tbW1tbW1tbW1ycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJtbW1tbW1tbW1tbW1tbW1tbW1tbW1ubm5ubm5ubm5uJW5ucnJybXJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJybW1tbW1tbW5ObW1tbW1tcnJtbU5tbW1tcnIxMTExMTExMTExXCI7XG4gICAgZnVuY3Rpb24gY2hhclR5cGUoY29kZSkge1xuICAgICAgaWYgKGNvZGUgPD0gMHhmNykgeyByZXR1cm4gbG93VHlwZXMuY2hhckF0KGNvZGUpIH1cbiAgICAgIGVsc2UgaWYgKDB4NTkwIDw9IGNvZGUgJiYgY29kZSA8PSAweDVmNCkgeyByZXR1cm4gXCJSXCIgfVxuICAgICAgZWxzZSBpZiAoMHg2MDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4NmY5KSB7IHJldHVybiBhcmFiaWNUeXBlcy5jaGFyQXQoY29kZSAtIDB4NjAwKSB9XG4gICAgICBlbHNlIGlmICgweDZlZSA8PSBjb2RlICYmIGNvZGUgPD0gMHg4YWMpIHsgcmV0dXJuIFwiclwiIH1cbiAgICAgIGVsc2UgaWYgKDB4MjAwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHgyMDBiKSB7IHJldHVybiBcIndcIiB9XG4gICAgICBlbHNlIGlmIChjb2RlID09IDB4MjAwYykgeyByZXR1cm4gXCJiXCIgfVxuICAgICAgZWxzZSB7IHJldHVybiBcIkxcIiB9XG4gICAgfVxuXG4gICAgdmFyIGJpZGlSRSA9IC9bXFx1MDU5MC1cXHUwNWY0XFx1MDYwMC1cXHUwNmZmXFx1MDcwMC1cXHUwOGFjXS87XG4gICAgdmFyIGlzTmV1dHJhbCA9IC9bc3R3Tl0vLCBpc1N0cm9uZyA9IC9bTFJyXS8sIGNvdW50c0FzTGVmdCA9IC9bTGIxbl0vLCBjb3VudHNBc051bSA9IC9bMW5dLztcblxuICAgIGZ1bmN0aW9uIEJpZGlTcGFuKGxldmVsLCBmcm9tLCB0bykge1xuICAgICAgdGhpcy5sZXZlbCA9IGxldmVsO1xuICAgICAgdGhpcy5mcm9tID0gZnJvbTsgdGhpcy50byA9IHRvO1xuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbihzdHIsIGRpcmVjdGlvbikge1xuICAgICAgdmFyIG91dGVyVHlwZSA9IGRpcmVjdGlvbiA9PSBcImx0clwiID8gXCJMXCIgOiBcIlJcIjtcblxuICAgICAgaWYgKHN0ci5sZW5ndGggPT0gMCB8fCBkaXJlY3Rpb24gPT0gXCJsdHJcIiAmJiAhYmlkaVJFLnRlc3Qoc3RyKSkgeyByZXR1cm4gZmFsc2UgfVxuICAgICAgdmFyIGxlbiA9IHN0ci5sZW5ndGgsIHR5cGVzID0gW107XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKVxuICAgICAgICB7IHR5cGVzLnB1c2goY2hhclR5cGUoc3RyLmNoYXJDb2RlQXQoaSkpKTsgfVxuXG4gICAgICAvLyBXMS4gRXhhbWluZSBlYWNoIG5vbi1zcGFjaW5nIG1hcmsgKE5TTSkgaW4gdGhlIGxldmVsIHJ1biwgYW5kXG4gICAgICAvLyBjaGFuZ2UgdGhlIHR5cGUgb2YgdGhlIE5TTSB0byB0aGUgdHlwZSBvZiB0aGUgcHJldmlvdXNcbiAgICAgIC8vIGNoYXJhY3Rlci4gSWYgdGhlIE5TTSBpcyBhdCB0aGUgc3RhcnQgb2YgdGhlIGxldmVsIHJ1biwgaXQgd2lsbFxuICAgICAgLy8gZ2V0IHRoZSB0eXBlIG9mIHNvci5cbiAgICAgIGZvciAodmFyIGkkMSA9IDAsIHByZXYgPSBvdXRlclR5cGU7IGkkMSA8IGxlbjsgKytpJDEpIHtcbiAgICAgICAgdmFyIHR5cGUgPSB0eXBlc1tpJDFdO1xuICAgICAgICBpZiAodHlwZSA9PSBcIm1cIikgeyB0eXBlc1tpJDFdID0gcHJldjsgfVxuICAgICAgICBlbHNlIHsgcHJldiA9IHR5cGU7IH1cbiAgICAgIH1cblxuICAgICAgLy8gVzIuIFNlYXJjaCBiYWNrd2FyZHMgZnJvbSBlYWNoIGluc3RhbmNlIG9mIGEgRXVyb3BlYW4gbnVtYmVyXG4gICAgICAvLyB1bnRpbCB0aGUgZmlyc3Qgc3Ryb25nIHR5cGUgKFIsIEwsIEFMLCBvciBzb3IpIGlzIGZvdW5kLiBJZiBhblxuICAgICAgLy8gQUwgaXMgZm91bmQsIGNoYW5nZSB0aGUgdHlwZSBvZiB0aGUgRXVyb3BlYW4gbnVtYmVyIHRvIEFyYWJpY1xuICAgICAgLy8gbnVtYmVyLlxuICAgICAgLy8gVzMuIENoYW5nZSBhbGwgQUxzIHRvIFIuXG4gICAgICBmb3IgKHZhciBpJDIgPSAwLCBjdXIgPSBvdXRlclR5cGU7IGkkMiA8IGxlbjsgKytpJDIpIHtcbiAgICAgICAgdmFyIHR5cGUkMSA9IHR5cGVzW2kkMl07XG4gICAgICAgIGlmICh0eXBlJDEgPT0gXCIxXCIgJiYgY3VyID09IFwiclwiKSB7IHR5cGVzW2kkMl0gPSBcIm5cIjsgfVxuICAgICAgICBlbHNlIGlmIChpc1N0cm9uZy50ZXN0KHR5cGUkMSkpIHsgY3VyID0gdHlwZSQxOyBpZiAodHlwZSQxID09IFwiclwiKSB7IHR5cGVzW2kkMl0gPSBcIlJcIjsgfSB9XG4gICAgICB9XG5cbiAgICAgIC8vIFc0LiBBIHNpbmdsZSBFdXJvcGVhbiBzZXBhcmF0b3IgYmV0d2VlbiB0d28gRXVyb3BlYW4gbnVtYmVyc1xuICAgICAgLy8gY2hhbmdlcyB0byBhIEV1cm9wZWFuIG51bWJlci4gQSBzaW5nbGUgY29tbW9uIHNlcGFyYXRvciBiZXR3ZWVuXG4gICAgICAvLyB0d28gbnVtYmVycyBvZiB0aGUgc2FtZSB0eXBlIGNoYW5nZXMgdG8gdGhhdCB0eXBlLlxuICAgICAgZm9yICh2YXIgaSQzID0gMSwgcHJldiQxID0gdHlwZXNbMF07IGkkMyA8IGxlbiAtIDE7ICsraSQzKSB7XG4gICAgICAgIHZhciB0eXBlJDIgPSB0eXBlc1tpJDNdO1xuICAgICAgICBpZiAodHlwZSQyID09IFwiK1wiICYmIHByZXYkMSA9PSBcIjFcIiAmJiB0eXBlc1tpJDMrMV0gPT0gXCIxXCIpIHsgdHlwZXNbaSQzXSA9IFwiMVwiOyB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGUkMiA9PSBcIixcIiAmJiBwcmV2JDEgPT0gdHlwZXNbaSQzKzFdICYmXG4gICAgICAgICAgICAgICAgIChwcmV2JDEgPT0gXCIxXCIgfHwgcHJldiQxID09IFwiblwiKSkgeyB0eXBlc1tpJDNdID0gcHJldiQxOyB9XG4gICAgICAgIHByZXYkMSA9IHR5cGUkMjtcbiAgICAgIH1cblxuICAgICAgLy8gVzUuIEEgc2VxdWVuY2Ugb2YgRXVyb3BlYW4gdGVybWluYXRvcnMgYWRqYWNlbnQgdG8gRXVyb3BlYW5cbiAgICAgIC8vIG51bWJlcnMgY2hhbmdlcyB0byBhbGwgRXVyb3BlYW4gbnVtYmVycy5cbiAgICAgIC8vIFc2LiBPdGhlcndpc2UsIHNlcGFyYXRvcnMgYW5kIHRlcm1pbmF0b3JzIGNoYW5nZSB0byBPdGhlclxuICAgICAgLy8gTmV1dHJhbC5cbiAgICAgIGZvciAodmFyIGkkNCA9IDA7IGkkNCA8IGxlbjsgKytpJDQpIHtcbiAgICAgICAgdmFyIHR5cGUkMyA9IHR5cGVzW2kkNF07XG4gICAgICAgIGlmICh0eXBlJDMgPT0gXCIsXCIpIHsgdHlwZXNbaSQ0XSA9IFwiTlwiOyB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGUkMyA9PSBcIiVcIikge1xuICAgICAgICAgIHZhciBlbmQgPSAodm9pZCAwKTtcbiAgICAgICAgICBmb3IgKGVuZCA9IGkkNCArIDE7IGVuZCA8IGxlbiAmJiB0eXBlc1tlbmRdID09IFwiJVwiOyArK2VuZCkge31cbiAgICAgICAgICB2YXIgcmVwbGFjZSA9IChpJDQgJiYgdHlwZXNbaSQ0LTFdID09IFwiIVwiKSB8fCAoZW5kIDwgbGVuICYmIHR5cGVzW2VuZF0gPT0gXCIxXCIpID8gXCIxXCIgOiBcIk5cIjtcbiAgICAgICAgICBmb3IgKHZhciBqID0gaSQ0OyBqIDwgZW5kOyArK2opIHsgdHlwZXNbal0gPSByZXBsYWNlOyB9XG4gICAgICAgICAgaSQ0ID0gZW5kIC0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBXNy4gU2VhcmNoIGJhY2t3YXJkcyBmcm9tIGVhY2ggaW5zdGFuY2Ugb2YgYSBFdXJvcGVhbiBudW1iZXJcbiAgICAgIC8vIHVudGlsIHRoZSBmaXJzdCBzdHJvbmcgdHlwZSAoUiwgTCwgb3Igc29yKSBpcyBmb3VuZC4gSWYgYW4gTCBpc1xuICAgICAgLy8gZm91bmQsIHRoZW4gY2hhbmdlIHRoZSB0eXBlIG9mIHRoZSBFdXJvcGVhbiBudW1iZXIgdG8gTC5cbiAgICAgIGZvciAodmFyIGkkNSA9IDAsIGN1ciQxID0gb3V0ZXJUeXBlOyBpJDUgPCBsZW47ICsraSQ1KSB7XG4gICAgICAgIHZhciB0eXBlJDQgPSB0eXBlc1tpJDVdO1xuICAgICAgICBpZiAoY3VyJDEgPT0gXCJMXCIgJiYgdHlwZSQ0ID09IFwiMVwiKSB7IHR5cGVzW2kkNV0gPSBcIkxcIjsgfVxuICAgICAgICBlbHNlIGlmIChpc1N0cm9uZy50ZXN0KHR5cGUkNCkpIHsgY3VyJDEgPSB0eXBlJDQ7IH1cbiAgICAgIH1cblxuICAgICAgLy8gTjEuIEEgc2VxdWVuY2Ugb2YgbmV1dHJhbHMgdGFrZXMgdGhlIGRpcmVjdGlvbiBvZiB0aGVcbiAgICAgIC8vIHN1cnJvdW5kaW5nIHN0cm9uZyB0ZXh0IGlmIHRoZSB0ZXh0IG9uIGJvdGggc2lkZXMgaGFzIHRoZSBzYW1lXG4gICAgICAvLyBkaXJlY3Rpb24uIEV1cm9wZWFuIGFuZCBBcmFiaWMgbnVtYmVycyBhY3QgYXMgaWYgdGhleSB3ZXJlIFIgaW5cbiAgICAgIC8vIHRlcm1zIG9mIHRoZWlyIGluZmx1ZW5jZSBvbiBuZXV0cmFscy4gU3RhcnQtb2YtbGV2ZWwtcnVuIChzb3IpXG4gICAgICAvLyBhbmQgZW5kLW9mLWxldmVsLXJ1biAoZW9yKSBhcmUgdXNlZCBhdCBsZXZlbCBydW4gYm91bmRhcmllcy5cbiAgICAgIC8vIE4yLiBBbnkgcmVtYWluaW5nIG5ldXRyYWxzIHRha2UgdGhlIGVtYmVkZGluZyBkaXJlY3Rpb24uXG4gICAgICBmb3IgKHZhciBpJDYgPSAwOyBpJDYgPCBsZW47ICsraSQ2KSB7XG4gICAgICAgIGlmIChpc05ldXRyYWwudGVzdCh0eXBlc1tpJDZdKSkge1xuICAgICAgICAgIHZhciBlbmQkMSA9ICh2b2lkIDApO1xuICAgICAgICAgIGZvciAoZW5kJDEgPSBpJDYgKyAxOyBlbmQkMSA8IGxlbiAmJiBpc05ldXRyYWwudGVzdCh0eXBlc1tlbmQkMV0pOyArK2VuZCQxKSB7fVxuICAgICAgICAgIHZhciBiZWZvcmUgPSAoaSQ2ID8gdHlwZXNbaSQ2LTFdIDogb3V0ZXJUeXBlKSA9PSBcIkxcIjtcbiAgICAgICAgICB2YXIgYWZ0ZXIgPSAoZW5kJDEgPCBsZW4gPyB0eXBlc1tlbmQkMV0gOiBvdXRlclR5cGUpID09IFwiTFwiO1xuICAgICAgICAgIHZhciByZXBsYWNlJDEgPSBiZWZvcmUgPT0gYWZ0ZXIgPyAoYmVmb3JlID8gXCJMXCIgOiBcIlJcIikgOiBvdXRlclR5cGU7XG4gICAgICAgICAgZm9yICh2YXIgaiQxID0gaSQ2OyBqJDEgPCBlbmQkMTsgKytqJDEpIHsgdHlwZXNbaiQxXSA9IHJlcGxhY2UkMTsgfVxuICAgICAgICAgIGkkNiA9IGVuZCQxIC0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBIZXJlIHdlIGRlcGFydCBmcm9tIHRoZSBkb2N1bWVudGVkIGFsZ29yaXRobSwgaW4gb3JkZXIgdG8gYXZvaWRcbiAgICAgIC8vIGJ1aWxkaW5nIHVwIGFuIGFjdHVhbCBsZXZlbHMgYXJyYXkuIFNpbmNlIHRoZXJlIGFyZSBvbmx5IHRocmVlXG4gICAgICAvLyBsZXZlbHMgKDAsIDEsIDIpIGluIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgZG9lc24ndCB0YWtlXG4gICAgICAvLyBleHBsaWNpdCBlbWJlZGRpbmcgaW50byBhY2NvdW50LCB3ZSBjYW4gYnVpbGQgdXAgdGhlIG9yZGVyIG9uXG4gICAgICAvLyB0aGUgZmx5LCB3aXRob3V0IGZvbGxvd2luZyB0aGUgbGV2ZWwtYmFzZWQgYWxnb3JpdGhtLlxuICAgICAgdmFyIG9yZGVyID0gW10sIG07XG4gICAgICBmb3IgKHZhciBpJDcgPSAwOyBpJDcgPCBsZW47KSB7XG4gICAgICAgIGlmIChjb3VudHNBc0xlZnQudGVzdCh0eXBlc1tpJDddKSkge1xuICAgICAgICAgIHZhciBzdGFydCA9IGkkNztcbiAgICAgICAgICBmb3IgKCsraSQ3OyBpJDcgPCBsZW4gJiYgY291bnRzQXNMZWZ0LnRlc3QodHlwZXNbaSQ3XSk7ICsraSQ3KSB7fVxuICAgICAgICAgIG9yZGVyLnB1c2gobmV3IEJpZGlTcGFuKDAsIHN0YXJ0LCBpJDcpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgcG9zID0gaSQ3LCBhdCA9IG9yZGVyLmxlbmd0aCwgaXNSVEwgPSBkaXJlY3Rpb24gPT0gXCJydGxcIiA/IDEgOiAwO1xuICAgICAgICAgIGZvciAoKytpJDc7IGkkNyA8IGxlbiAmJiB0eXBlc1tpJDddICE9IFwiTFwiOyArK2kkNykge31cbiAgICAgICAgICBmb3IgKHZhciBqJDIgPSBwb3M7IGokMiA8IGkkNzspIHtcbiAgICAgICAgICAgIGlmIChjb3VudHNBc051bS50ZXN0KHR5cGVzW2okMl0pKSB7XG4gICAgICAgICAgICAgIGlmIChwb3MgPCBqJDIpIHsgb3JkZXIuc3BsaWNlKGF0LCAwLCBuZXcgQmlkaVNwYW4oMSwgcG9zLCBqJDIpKTsgYXQgKz0gaXNSVEw7IH1cbiAgICAgICAgICAgICAgdmFyIG5zdGFydCA9IGokMjtcbiAgICAgICAgICAgICAgZm9yICgrK2okMjsgaiQyIDwgaSQ3ICYmIGNvdW50c0FzTnVtLnRlc3QodHlwZXNbaiQyXSk7ICsraiQyKSB7fVxuICAgICAgICAgICAgICBvcmRlci5zcGxpY2UoYXQsIDAsIG5ldyBCaWRpU3BhbigyLCBuc3RhcnQsIGokMikpO1xuICAgICAgICAgICAgICBhdCArPSBpc1JUTDtcbiAgICAgICAgICAgICAgcG9zID0gaiQyO1xuICAgICAgICAgICAgfSBlbHNlIHsgKytqJDI7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBvcyA8IGkkNykgeyBvcmRlci5zcGxpY2UoYXQsIDAsIG5ldyBCaWRpU3BhbigxLCBwb3MsIGkkNykpOyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChkaXJlY3Rpb24gPT0gXCJsdHJcIikge1xuICAgICAgICBpZiAob3JkZXJbMF0ubGV2ZWwgPT0gMSAmJiAobSA9IHN0ci5tYXRjaCgvXlxccysvKSkpIHtcbiAgICAgICAgICBvcmRlclswXS5mcm9tID0gbVswXS5sZW5ndGg7XG4gICAgICAgICAgb3JkZXIudW5zaGlmdChuZXcgQmlkaVNwYW4oMCwgMCwgbVswXS5sZW5ndGgpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobHN0KG9yZGVyKS5sZXZlbCA9PSAxICYmIChtID0gc3RyLm1hdGNoKC9cXHMrJC8pKSkge1xuICAgICAgICAgIGxzdChvcmRlcikudG8gLT0gbVswXS5sZW5ndGg7XG4gICAgICAgICAgb3JkZXIucHVzaChuZXcgQmlkaVNwYW4oMCwgbGVuIC0gbVswXS5sZW5ndGgsIGxlbikpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkaXJlY3Rpb24gPT0gXCJydGxcIiA/IG9yZGVyLnJldmVyc2UoKSA6IG9yZGVyXG4gICAgfVxuICB9KSgpO1xuXG4gIC8vIEdldCB0aGUgYmlkaSBvcmRlcmluZyBmb3IgdGhlIGdpdmVuIGxpbmUgKGFuZCBjYWNoZSBpdCkuIFJldHVybnNcbiAgLy8gZmFsc2UgZm9yIGxpbmVzIHRoYXQgYXJlIGZ1bGx5IGxlZnQtdG8tcmlnaHQsIGFuZCBhbiBhcnJheSBvZlxuICAvLyBCaWRpU3BhbiBvYmplY3RzIG90aGVyd2lzZS5cbiAgZnVuY3Rpb24gZ2V0T3JkZXIobGluZSwgZGlyZWN0aW9uKSB7XG4gICAgdmFyIG9yZGVyID0gbGluZS5vcmRlcjtcbiAgICBpZiAob3JkZXIgPT0gbnVsbCkgeyBvcmRlciA9IGxpbmUub3JkZXIgPSBiaWRpT3JkZXJpbmcobGluZS50ZXh0LCBkaXJlY3Rpb24pOyB9XG4gICAgcmV0dXJuIG9yZGVyXG4gIH1cblxuICAvLyBFVkVOVCBIQU5ETElOR1xuXG4gIC8vIExpZ2h0d2VpZ2h0IGV2ZW50IGZyYW1ld29yay4gb24vb2ZmIGFsc28gd29yayBvbiBET00gbm9kZXMsXG4gIC8vIHJlZ2lzdGVyaW5nIG5hdGl2ZSBET00gaGFuZGxlcnMuXG5cbiAgdmFyIG5vSGFuZGxlcnMgPSBbXTtcblxuICB2YXIgb24gPSBmdW5jdGlvbihlbWl0dGVyLCB0eXBlLCBmKSB7XG4gICAgaWYgKGVtaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgZW1pdHRlci5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGYsIGZhbHNlKTtcbiAgICB9IGVsc2UgaWYgKGVtaXR0ZXIuYXR0YWNoRXZlbnQpIHtcbiAgICAgIGVtaXR0ZXIuYXR0YWNoRXZlbnQoXCJvblwiICsgdHlwZSwgZik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBtYXAgPSBlbWl0dGVyLl9oYW5kbGVycyB8fCAoZW1pdHRlci5faGFuZGxlcnMgPSB7fSk7XG4gICAgICBtYXBbdHlwZV0gPSAobWFwW3R5cGVdIHx8IG5vSGFuZGxlcnMpLmNvbmNhdChmKTtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gZ2V0SGFuZGxlcnMoZW1pdHRlciwgdHlwZSkge1xuICAgIHJldHVybiBlbWl0dGVyLl9oYW5kbGVycyAmJiBlbWl0dGVyLl9oYW5kbGVyc1t0eXBlXSB8fCBub0hhbmRsZXJzXG4gIH1cblxuICBmdW5jdGlvbiBvZmYoZW1pdHRlciwgdHlwZSwgZikge1xuICAgIGlmIChlbWl0dGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgICAgIGVtaXR0ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBmLCBmYWxzZSk7XG4gICAgfSBlbHNlIGlmIChlbWl0dGVyLmRldGFjaEV2ZW50KSB7XG4gICAgICBlbWl0dGVyLmRldGFjaEV2ZW50KFwib25cIiArIHR5cGUsIGYpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbWFwID0gZW1pdHRlci5faGFuZGxlcnMsIGFyciA9IG1hcCAmJiBtYXBbdHlwZV07XG4gICAgICBpZiAoYXJyKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGluZGV4T2YoYXJyLCBmKTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpXG4gICAgICAgICAgeyBtYXBbdHlwZV0gPSBhcnIuc2xpY2UoMCwgaW5kZXgpLmNvbmNhdChhcnIuc2xpY2UoaW5kZXggKyAxKSk7IH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzaWduYWwoZW1pdHRlciwgdHlwZSAvKiwgdmFsdWVzLi4uKi8pIHtcbiAgICB2YXIgaGFuZGxlcnMgPSBnZXRIYW5kbGVycyhlbWl0dGVyLCB0eXBlKTtcbiAgICBpZiAoIWhhbmRsZXJzLmxlbmd0aCkgeyByZXR1cm4gfVxuICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhhbmRsZXJzLmxlbmd0aDsgKytpKSB7IGhhbmRsZXJzW2ldLmFwcGx5KG51bGwsIGFyZ3MpOyB9XG4gIH1cblxuICAvLyBUaGUgRE9NIGV2ZW50cyB0aGF0IENvZGVNaXJyb3IgaGFuZGxlcyBjYW4gYmUgb3ZlcnJpZGRlbiBieVxuICAvLyByZWdpc3RlcmluZyBhIChub24tRE9NKSBoYW5kbGVyIG9uIHRoZSBlZGl0b3IgZm9yIHRoZSBldmVudCBuYW1lLFxuICAvLyBhbmQgcHJldmVudERlZmF1bHQtaW5nIHRoZSBldmVudCBpbiB0aGF0IGhhbmRsZXIuXG4gIGZ1bmN0aW9uIHNpZ25hbERPTUV2ZW50KGNtLCBlLCBvdmVycmlkZSkge1xuICAgIGlmICh0eXBlb2YgZSA9PSBcInN0cmluZ1wiKVxuICAgICAgeyBlID0ge3R5cGU6IGUsIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHsgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTsgfX07IH1cbiAgICBzaWduYWwoY20sIG92ZXJyaWRlIHx8IGUudHlwZSwgY20sIGUpO1xuICAgIHJldHVybiBlX2RlZmF1bHRQcmV2ZW50ZWQoZSkgfHwgZS5jb2RlbWlycm9ySWdub3JlXG4gIH1cblxuICBmdW5jdGlvbiBzaWduYWxDdXJzb3JBY3Rpdml0eShjbSkge1xuICAgIHZhciBhcnIgPSBjbS5faGFuZGxlcnMgJiYgY20uX2hhbmRsZXJzLmN1cnNvckFjdGl2aXR5O1xuICAgIGlmICghYXJyKSB7IHJldHVybiB9XG4gICAgdmFyIHNldCA9IGNtLmN1ck9wLmN1cnNvckFjdGl2aXR5SGFuZGxlcnMgfHwgKGNtLmN1ck9wLmN1cnNvckFjdGl2aXR5SGFuZGxlcnMgPSBbXSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyArK2kpIHsgaWYgKGluZGV4T2Yoc2V0LCBhcnJbaV0pID09IC0xKVxuICAgICAgeyBzZXQucHVzaChhcnJbaV0pOyB9IH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhc0hhbmRsZXIoZW1pdHRlciwgdHlwZSkge1xuICAgIHJldHVybiBnZXRIYW5kbGVycyhlbWl0dGVyLCB0eXBlKS5sZW5ndGggPiAwXG4gIH1cblxuICAvLyBBZGQgb24gYW5kIG9mZiBtZXRob2RzIHRvIGEgY29uc3RydWN0b3IncyBwcm90b3R5cGUsIHRvIG1ha2VcbiAgLy8gcmVnaXN0ZXJpbmcgZXZlbnRzIG9uIHN1Y2ggb2JqZWN0cyBtb3JlIGNvbnZlbmllbnQuXG4gIGZ1bmN0aW9uIGV2ZW50TWl4aW4oY3Rvcikge1xuICAgIGN0b3IucHJvdG90eXBlLm9uID0gZnVuY3Rpb24odHlwZSwgZikge29uKHRoaXMsIHR5cGUsIGYpO307XG4gICAgY3Rvci5wcm90b3R5cGUub2ZmID0gZnVuY3Rpb24odHlwZSwgZikge29mZih0aGlzLCB0eXBlLCBmKTt9O1xuICB9XG5cbiAgLy8gRHVlIHRvIHRoZSBmYWN0IHRoYXQgd2Ugc3RpbGwgc3VwcG9ydCBqdXJhc3NpYyBJRSB2ZXJzaW9ucywgc29tZVxuICAvLyBjb21wYXRpYmlsaXR5IHdyYXBwZXJzIGFyZSBuZWVkZWQuXG5cbiAgZnVuY3Rpb24gZV9wcmV2ZW50RGVmYXVsdChlKSB7XG4gICAgaWYgKGUucHJldmVudERlZmF1bHQpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyB9XG4gICAgZWxzZSB7IGUucmV0dXJuVmFsdWUgPSBmYWxzZTsgfVxuICB9XG4gIGZ1bmN0aW9uIGVfc3RvcFByb3BhZ2F0aW9uKGUpIHtcbiAgICBpZiAoZS5zdG9wUHJvcGFnYXRpb24pIHsgZS5zdG9wUHJvcGFnYXRpb24oKTsgfVxuICAgIGVsc2UgeyBlLmNhbmNlbEJ1YmJsZSA9IHRydWU7IH1cbiAgfVxuICBmdW5jdGlvbiBlX2RlZmF1bHRQcmV2ZW50ZWQoZSkge1xuICAgIHJldHVybiBlLmRlZmF1bHRQcmV2ZW50ZWQgIT0gbnVsbCA/IGUuZGVmYXVsdFByZXZlbnRlZCA6IGUucmV0dXJuVmFsdWUgPT0gZmFsc2VcbiAgfVxuICBmdW5jdGlvbiBlX3N0b3AoZSkge2VfcHJldmVudERlZmF1bHQoZSk7IGVfc3RvcFByb3BhZ2F0aW9uKGUpO31cblxuICBmdW5jdGlvbiBlX3RhcmdldChlKSB7cmV0dXJuIGUudGFyZ2V0IHx8IGUuc3JjRWxlbWVudH1cbiAgZnVuY3Rpb24gZV9idXR0b24oZSkge1xuICAgIHZhciBiID0gZS53aGljaDtcbiAgICBpZiAoYiA9PSBudWxsKSB7XG4gICAgICBpZiAoZS5idXR0b24gJiAxKSB7IGIgPSAxOyB9XG4gICAgICBlbHNlIGlmIChlLmJ1dHRvbiAmIDIpIHsgYiA9IDM7IH1cbiAgICAgIGVsc2UgaWYgKGUuYnV0dG9uICYgNCkgeyBiID0gMjsgfVxuICAgIH1cbiAgICBpZiAobWFjICYmIGUuY3RybEtleSAmJiBiID09IDEpIHsgYiA9IDM7IH1cbiAgICByZXR1cm4gYlxuICB9XG5cbiAgLy8gRGV0ZWN0IGRyYWctYW5kLWRyb3BcbiAgdmFyIGRyYWdBbmREcm9wID0gZnVuY3Rpb24oKSB7XG4gICAgLy8gVGhlcmUgaXMgKnNvbWUqIGtpbmQgb2YgZHJhZy1hbmQtZHJvcCBzdXBwb3J0IGluIElFNi04LCBidXQgSVxuICAgIC8vIGNvdWxkbid0IGdldCBpdCB0byB3b3JrIHlldC5cbiAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA8IDkpIHsgcmV0dXJuIGZhbHNlIH1cbiAgICB2YXIgZGl2ID0gZWx0KCdkaXYnKTtcbiAgICByZXR1cm4gXCJkcmFnZ2FibGVcIiBpbiBkaXYgfHwgXCJkcmFnRHJvcFwiIGluIGRpdlxuICB9KCk7XG5cbiAgdmFyIHp3c3BTdXBwb3J0ZWQ7XG4gIGZ1bmN0aW9uIHplcm9XaWR0aEVsZW1lbnQobWVhc3VyZSkge1xuICAgIGlmICh6d3NwU3VwcG9ydGVkID09IG51bGwpIHtcbiAgICAgIHZhciB0ZXN0ID0gZWx0KFwic3BhblwiLCBcIlxcdTIwMGJcIik7XG4gICAgICByZW1vdmVDaGlsZHJlbkFuZEFkZChtZWFzdXJlLCBlbHQoXCJzcGFuXCIsIFt0ZXN0LCBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcInhcIildKSk7XG4gICAgICBpZiAobWVhc3VyZS5maXJzdENoaWxkLm9mZnNldEhlaWdodCAhPSAwKVxuICAgICAgICB7IHp3c3BTdXBwb3J0ZWQgPSB0ZXN0Lm9mZnNldFdpZHRoIDw9IDEgJiYgdGVzdC5vZmZzZXRIZWlnaHQgPiAyICYmICEoaWUgJiYgaWVfdmVyc2lvbiA8IDgpOyB9XG4gICAgfVxuICAgIHZhciBub2RlID0gendzcFN1cHBvcnRlZCA/IGVsdChcInNwYW5cIiwgXCJcXHUyMDBiXCIpIDpcbiAgICAgIGVsdChcInNwYW5cIiwgXCJcXHUwMGEwXCIsIG51bGwsIFwiZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMXB4OyBtYXJnaW4tcmlnaHQ6IC0xcHhcIik7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJjbS10ZXh0XCIsIFwiXCIpO1xuICAgIHJldHVybiBub2RlXG4gIH1cblxuICAvLyBGZWF0dXJlLWRldGVjdCBJRSdzIGNydW1teSBjbGllbnQgcmVjdCByZXBvcnRpbmcgZm9yIGJpZGkgdGV4dFxuICB2YXIgYmFkQmlkaVJlY3RzO1xuICBmdW5jdGlvbiBoYXNCYWRCaWRpUmVjdHMobWVhc3VyZSkge1xuICAgIGlmIChiYWRCaWRpUmVjdHMgIT0gbnVsbCkgeyByZXR1cm4gYmFkQmlkaVJlY3RzIH1cbiAgICB2YXIgdHh0ID0gcmVtb3ZlQ2hpbGRyZW5BbmRBZGQobWVhc3VyZSwgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJBXFx1MDYyZUFcIikpO1xuICAgIHZhciByMCA9IHJhbmdlKHR4dCwgMCwgMSkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdmFyIHIxID0gcmFuZ2UodHh0LCAxLCAyKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICByZW1vdmVDaGlsZHJlbihtZWFzdXJlKTtcbiAgICBpZiAoIXIwIHx8IHIwLmxlZnQgPT0gcjAucmlnaHQpIHsgcmV0dXJuIGZhbHNlIH0gLy8gU2FmYXJpIHJldHVybnMgbnVsbCBpbiBzb21lIGNhc2VzICgjMjc4MClcbiAgICByZXR1cm4gYmFkQmlkaVJlY3RzID0gKHIxLnJpZ2h0IC0gcjAucmlnaHQgPCAzKVxuICB9XG5cbiAgLy8gU2VlIGlmIFwiXCIuc3BsaXQgaXMgdGhlIGJyb2tlbiBJRSB2ZXJzaW9uLCBpZiBzbywgcHJvdmlkZSBhblxuICAvLyBhbHRlcm5hdGl2ZSB3YXkgdG8gc3BsaXQgbGluZXMuXG4gIHZhciBzcGxpdExpbmVzQXV0byA9IFwiXFxuXFxuYlwiLnNwbGl0KC9cXG4vKS5sZW5ndGggIT0gMyA/IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICB2YXIgcG9zID0gMCwgcmVzdWx0ID0gW10sIGwgPSBzdHJpbmcubGVuZ3RoO1xuICAgIHdoaWxlIChwb3MgPD0gbCkge1xuICAgICAgdmFyIG5sID0gc3RyaW5nLmluZGV4T2YoXCJcXG5cIiwgcG9zKTtcbiAgICAgIGlmIChubCA9PSAtMSkgeyBubCA9IHN0cmluZy5sZW5ndGg7IH1cbiAgICAgIHZhciBsaW5lID0gc3RyaW5nLnNsaWNlKHBvcywgc3RyaW5nLmNoYXJBdChubCAtIDEpID09IFwiXFxyXCIgPyBubCAtIDEgOiBubCk7XG4gICAgICB2YXIgcnQgPSBsaW5lLmluZGV4T2YoXCJcXHJcIik7XG4gICAgICBpZiAocnQgIT0gLTEpIHtcbiAgICAgICAgcmVzdWx0LnB1c2gobGluZS5zbGljZSgwLCBydCkpO1xuICAgICAgICBwb3MgKz0gcnQgKyAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0LnB1c2gobGluZSk7XG4gICAgICAgIHBvcyA9IG5sICsgMTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9IDogZnVuY3Rpb24gKHN0cmluZykgeyByZXR1cm4gc3RyaW5nLnNwbGl0KC9cXHJcXG4/fFxcbi8pOyB9O1xuXG4gIHZhciBoYXNTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uID8gZnVuY3Rpb24gKHRlKSB7XG4gICAgdHJ5IHsgcmV0dXJuIHRlLnNlbGVjdGlvblN0YXJ0ICE9IHRlLnNlbGVjdGlvbkVuZCB9XG4gICAgY2F0Y2goZSkgeyByZXR1cm4gZmFsc2UgfVxuICB9IDogZnVuY3Rpb24gKHRlKSB7XG4gICAgdmFyIHJhbmdlO1xuICAgIHRyeSB7cmFuZ2UgPSB0ZS5vd25lckRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO31cbiAgICBjYXRjaChlKSB7fVxuICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UucGFyZW50RWxlbWVudCgpICE9IHRlKSB7IHJldHVybiBmYWxzZSB9XG4gICAgcmV0dXJuIHJhbmdlLmNvbXBhcmVFbmRQb2ludHMoXCJTdGFydFRvRW5kXCIsIHJhbmdlKSAhPSAwXG4gIH07XG5cbiAgdmFyIGhhc0NvcHlFdmVudCA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGUgPSBlbHQoXCJkaXZcIik7XG4gICAgaWYgKFwib25jb3B5XCIgaW4gZSkgeyByZXR1cm4gdHJ1ZSB9XG4gICAgZS5zZXRBdHRyaWJ1dGUoXCJvbmNvcHlcIiwgXCJyZXR1cm47XCIpO1xuICAgIHJldHVybiB0eXBlb2YgZS5vbmNvcHkgPT0gXCJmdW5jdGlvblwiXG4gIH0pKCk7XG5cbiAgdmFyIGJhZFpvb21lZFJlY3RzID0gbnVsbDtcbiAgZnVuY3Rpb24gaGFzQmFkWm9vbWVkUmVjdHMobWVhc3VyZSkge1xuICAgIGlmIChiYWRab29tZWRSZWN0cyAhPSBudWxsKSB7IHJldHVybiBiYWRab29tZWRSZWN0cyB9XG4gICAgdmFyIG5vZGUgPSByZW1vdmVDaGlsZHJlbkFuZEFkZChtZWFzdXJlLCBlbHQoXCJzcGFuXCIsIFwieFwiKSk7XG4gICAgdmFyIG5vcm1hbCA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdmFyIGZyb21SYW5nZSA9IHJhbmdlKG5vZGUsIDAsIDEpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiBiYWRab29tZWRSZWN0cyA9IE1hdGguYWJzKG5vcm1hbC5sZWZ0IC0gZnJvbVJhbmdlLmxlZnQpID4gMVxuICB9XG5cbiAgLy8gS25vd24gbW9kZXMsIGJ5IG5hbWUgYW5kIGJ5IE1JTUVcbiAgdmFyIG1vZGVzID0ge30sIG1pbWVNb2RlcyA9IHt9O1xuXG4gIC8vIEV4dHJhIGFyZ3VtZW50cyBhcmUgc3RvcmVkIGFzIHRoZSBtb2RlJ3MgZGVwZW5kZW5jaWVzLCB3aGljaCBpc1xuICAvLyB1c2VkIGJ5IChsZWdhY3kpIG1lY2hhbmlzbXMgbGlrZSBsb2FkbW9kZS5qcyB0byBhdXRvbWF0aWNhbGx5XG4gIC8vIGxvYWQgYSBtb2RlLiAoUHJlZmVycmVkIG1lY2hhbmlzbSBpcyB0aGUgcmVxdWlyZS9kZWZpbmUgY2FsbHMuKVxuICBmdW5jdGlvbiBkZWZpbmVNb2RlKG5hbWUsIG1vZGUpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpXG4gICAgICB7IG1vZGUuZGVwZW5kZW5jaWVzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTsgfVxuICAgIG1vZGVzW25hbWVdID0gbW9kZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlZmluZU1JTUUobWltZSwgc3BlYykge1xuICAgIG1pbWVNb2Rlc1ttaW1lXSA9IHNwZWM7XG4gIH1cblxuICAvLyBHaXZlbiBhIE1JTUUgdHlwZSwgYSB7bmFtZSwgLi4ub3B0aW9uc30gY29uZmlnIG9iamVjdCwgb3IgYSBuYW1lXG4gIC8vIHN0cmluZywgcmV0dXJuIGEgbW9kZSBjb25maWcgb2JqZWN0LlxuICBmdW5jdGlvbiByZXNvbHZlTW9kZShzcGVjKSB7XG4gICAgaWYgKHR5cGVvZiBzcGVjID09IFwic3RyaW5nXCIgJiYgbWltZU1vZGVzLmhhc093blByb3BlcnR5KHNwZWMpKSB7XG4gICAgICBzcGVjID0gbWltZU1vZGVzW3NwZWNdO1xuICAgIH0gZWxzZSBpZiAoc3BlYyAmJiB0eXBlb2Ygc3BlYy5uYW1lID09IFwic3RyaW5nXCIgJiYgbWltZU1vZGVzLmhhc093blByb3BlcnR5KHNwZWMubmFtZSkpIHtcbiAgICAgIHZhciBmb3VuZCA9IG1pbWVNb2Rlc1tzcGVjLm5hbWVdO1xuICAgICAgaWYgKHR5cGVvZiBmb3VuZCA9PSBcInN0cmluZ1wiKSB7IGZvdW5kID0ge25hbWU6IGZvdW5kfTsgfVxuICAgICAgc3BlYyA9IGNyZWF0ZU9iaihmb3VuZCwgc3BlYyk7XG4gICAgICBzcGVjLm5hbWUgPSBmb3VuZC5uYW1lO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHNwZWMgPT0gXCJzdHJpbmdcIiAmJiAvXltcXHdcXC1dK1xcL1tcXHdcXC1dK1xcK3htbCQvLnRlc3Qoc3BlYykpIHtcbiAgICAgIHJldHVybiByZXNvbHZlTW9kZShcImFwcGxpY2F0aW9uL3htbFwiKVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHNwZWMgPT0gXCJzdHJpbmdcIiAmJiAvXltcXHdcXC1dK1xcL1tcXHdcXC1dK1xcK2pzb24kLy50ZXN0KHNwZWMpKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZU1vZGUoXCJhcHBsaWNhdGlvbi9qc29uXCIpXG4gICAgfVxuICAgIGlmICh0eXBlb2Ygc3BlYyA9PSBcInN0cmluZ1wiKSB7IHJldHVybiB7bmFtZTogc3BlY30gfVxuICAgIGVsc2UgeyByZXR1cm4gc3BlYyB8fCB7bmFtZTogXCJudWxsXCJ9IH1cbiAgfVxuXG4gIC8vIEdpdmVuIGEgbW9kZSBzcGVjIChhbnl0aGluZyB0aGF0IHJlc29sdmVNb2RlIGFjY2VwdHMpLCBmaW5kIGFuZFxuICAvLyBpbml0aWFsaXplIGFuIGFjdHVhbCBtb2RlIG9iamVjdC5cbiAgZnVuY3Rpb24gZ2V0TW9kZShvcHRpb25zLCBzcGVjKSB7XG4gICAgc3BlYyA9IHJlc29sdmVNb2RlKHNwZWMpO1xuICAgIHZhciBtZmFjdG9yeSA9IG1vZGVzW3NwZWMubmFtZV07XG4gICAgaWYgKCFtZmFjdG9yeSkgeyByZXR1cm4gZ2V0TW9kZShvcHRpb25zLCBcInRleHQvcGxhaW5cIikgfVxuICAgIHZhciBtb2RlT2JqID0gbWZhY3Rvcnkob3B0aW9ucywgc3BlYyk7XG4gICAgaWYgKG1vZGVFeHRlbnNpb25zLmhhc093blByb3BlcnR5KHNwZWMubmFtZSkpIHtcbiAgICAgIHZhciBleHRzID0gbW9kZUV4dGVuc2lvbnNbc3BlYy5uYW1lXTtcbiAgICAgIGZvciAodmFyIHByb3AgaW4gZXh0cykge1xuICAgICAgICBpZiAoIWV4dHMuaGFzT3duUHJvcGVydHkocHJvcCkpIHsgY29udGludWUgfVxuICAgICAgICBpZiAobW9kZU9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgeyBtb2RlT2JqW1wiX1wiICsgcHJvcF0gPSBtb2RlT2JqW3Byb3BdOyB9XG4gICAgICAgIG1vZGVPYmpbcHJvcF0gPSBleHRzW3Byb3BdO1xuICAgICAgfVxuICAgIH1cbiAgICBtb2RlT2JqLm5hbWUgPSBzcGVjLm5hbWU7XG4gICAgaWYgKHNwZWMuaGVscGVyVHlwZSkgeyBtb2RlT2JqLmhlbHBlclR5cGUgPSBzcGVjLmhlbHBlclR5cGU7IH1cbiAgICBpZiAoc3BlYy5tb2RlUHJvcHMpIHsgZm9yICh2YXIgcHJvcCQxIGluIHNwZWMubW9kZVByb3BzKVxuICAgICAgeyBtb2RlT2JqW3Byb3AkMV0gPSBzcGVjLm1vZGVQcm9wc1twcm9wJDFdOyB9IH1cblxuICAgIHJldHVybiBtb2RlT2JqXG4gIH1cblxuICAvLyBUaGlzIGNhbiBiZSB1c2VkIHRvIGF0dGFjaCBwcm9wZXJ0aWVzIHRvIG1vZGUgb2JqZWN0cyBmcm9tXG4gIC8vIG91dHNpZGUgdGhlIGFjdHVhbCBtb2RlIGRlZmluaXRpb24uXG4gIHZhciBtb2RlRXh0ZW5zaW9ucyA9IHt9O1xuICBmdW5jdGlvbiBleHRlbmRNb2RlKG1vZGUsIHByb3BlcnRpZXMpIHtcbiAgICB2YXIgZXh0cyA9IG1vZGVFeHRlbnNpb25zLmhhc093blByb3BlcnR5KG1vZGUpID8gbW9kZUV4dGVuc2lvbnNbbW9kZV0gOiAobW9kZUV4dGVuc2lvbnNbbW9kZV0gPSB7fSk7XG4gICAgY29weU9iaihwcm9wZXJ0aWVzLCBleHRzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvcHlTdGF0ZShtb2RlLCBzdGF0ZSkge1xuICAgIGlmIChzdGF0ZSA9PT0gdHJ1ZSkgeyByZXR1cm4gc3RhdGUgfVxuICAgIGlmIChtb2RlLmNvcHlTdGF0ZSkgeyByZXR1cm4gbW9kZS5jb3B5U3RhdGUoc3RhdGUpIH1cbiAgICB2YXIgbnN0YXRlID0ge307XG4gICAgZm9yICh2YXIgbiBpbiBzdGF0ZSkge1xuICAgICAgdmFyIHZhbCA9IHN0YXRlW25dO1xuICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIEFycmF5KSB7IHZhbCA9IHZhbC5jb25jYXQoW10pOyB9XG4gICAgICBuc3RhdGVbbl0gPSB2YWw7XG4gICAgfVxuICAgIHJldHVybiBuc3RhdGVcbiAgfVxuXG4gIC8vIEdpdmVuIGEgbW9kZSBhbmQgYSBzdGF0ZSAoZm9yIHRoYXQgbW9kZSksIGZpbmQgdGhlIGlubmVyIG1vZGUgYW5kXG4gIC8vIHN0YXRlIGF0IHRoZSBwb3NpdGlvbiB0aGF0IHRoZSBzdGF0ZSByZWZlcnMgdG8uXG4gIGZ1bmN0aW9uIGlubmVyTW9kZShtb2RlLCBzdGF0ZSkge1xuICAgIHZhciBpbmZvO1xuICAgIHdoaWxlIChtb2RlLmlubmVyTW9kZSkge1xuICAgICAgaW5mbyA9IG1vZGUuaW5uZXJNb2RlKHN0YXRlKTtcbiAgICAgIGlmICghaW5mbyB8fCBpbmZvLm1vZGUgPT0gbW9kZSkgeyBicmVhayB9XG4gICAgICBzdGF0ZSA9IGluZm8uc3RhdGU7XG4gICAgICBtb2RlID0gaW5mby5tb2RlO1xuICAgIH1cbiAgICByZXR1cm4gaW5mbyB8fCB7bW9kZTogbW9kZSwgc3RhdGU6IHN0YXRlfVxuICB9XG5cbiAgZnVuY3Rpb24gc3RhcnRTdGF0ZShtb2RlLCBhMSwgYTIpIHtcbiAgICByZXR1cm4gbW9kZS5zdGFydFN0YXRlID8gbW9kZS5zdGFydFN0YXRlKGExLCBhMikgOiB0cnVlXG4gIH1cblxuICAvLyBTVFJJTkcgU1RSRUFNXG5cbiAgLy8gRmVkIHRvIHRoZSBtb2RlIHBhcnNlcnMsIHByb3ZpZGVzIGhlbHBlciBmdW5jdGlvbnMgdG8gbWFrZVxuICAvLyBwYXJzZXJzIG1vcmUgc3VjY2luY3QuXG5cbiAgdmFyIFN0cmluZ1N0cmVhbSA9IGZ1bmN0aW9uKHN0cmluZywgdGFiU2l6ZSwgbGluZU9yYWNsZSkge1xuICAgIHRoaXMucG9zID0gdGhpcy5zdGFydCA9IDA7XG4gICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG4gICAgdGhpcy50YWJTaXplID0gdGFiU2l6ZSB8fCA4O1xuICAgIHRoaXMubGFzdENvbHVtblBvcyA9IHRoaXMubGFzdENvbHVtblZhbHVlID0gMDtcbiAgICB0aGlzLmxpbmVTdGFydCA9IDA7XG4gICAgdGhpcy5saW5lT3JhY2xlID0gbGluZU9yYWNsZTtcbiAgfTtcblxuICBTdHJpbmdTdHJlYW0ucHJvdG90eXBlLmVvbCA9IGZ1bmN0aW9uICgpIHtyZXR1cm4gdGhpcy5wb3MgPj0gdGhpcy5zdHJpbmcubGVuZ3RofTtcbiAgU3RyaW5nU3RyZWFtLnByb3RvdHlwZS5zb2wgPSBmdW5jdGlvbiAoKSB7cmV0dXJuIHRoaXMucG9zID09IHRoaXMubGluZVN0YXJ0fTtcbiAgU3RyaW5nU3RyZWFtLnByb3RvdHlwZS5wZWVrID0gZnVuY3Rpb24gKCkge3JldHVybiB0aGlzLnN0cmluZy5jaGFyQXQodGhpcy5wb3MpIHx8IHVuZGVmaW5lZH07XG4gIFN0cmluZ1N0cmVhbS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5wb3MgPCB0aGlzLnN0cmluZy5sZW5ndGgpXG4gICAgICB7IHJldHVybiB0aGlzLnN0cmluZy5jaGFyQXQodGhpcy5wb3MrKykgfVxuICB9O1xuICBTdHJpbmdTdHJlYW0ucHJvdG90eXBlLmVhdCA9IGZ1bmN0aW9uIChtYXRjaCkge1xuICAgIHZhciBjaCA9IHRoaXMuc3RyaW5nLmNoYXJBdCh0aGlzLnBvcyk7XG4gICAgdmFyIG9rO1xuICAgIGlmICh0eXBlb2YgbWF0Y2ggPT0gXCJzdHJpbmdcIikgeyBvayA9IGNoID09IG1hdGNoOyB9XG4gICAgZWxzZSB7IG9rID0gY2ggJiYgKG1hdGNoLnRlc3QgPyBtYXRjaC50ZXN0KGNoKSA6IG1hdGNoKGNoKSk7IH1cbiAgICBpZiAob2spIHsrK3RoaXMucG9zOyByZXR1cm4gY2h9XG4gIH07XG4gIFN0cmluZ1N0cmVhbS5wcm90b3R5cGUuZWF0V2hpbGUgPSBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB3aGlsZSAodGhpcy5lYXQobWF0Y2gpKXt9XG4gICAgcmV0dXJuIHRoaXMucG9zID4gc3RhcnRcbiAgfTtcbiAgU3RyaW5nU3RyZWFtLnByb3RvdHlwZS5lYXRTcGFjZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB3aGlsZSAoL1tcXHNcXHUwMGEwXS8udGVzdCh0aGlzLnN0cmluZy5jaGFyQXQodGhpcy5wb3MpKSkgeyArK3RoaXMucG9zOyB9XG4gICAgcmV0dXJuIHRoaXMucG9zID4gc3RhcnRcbiAgfTtcbiAgU3RyaW5nU3RyZWFtLnByb3RvdHlwZS5za2lwVG9FbmQgPSBmdW5jdGlvbiAoKSB7dGhpcy5wb3MgPSB0aGlzLnN0cmluZy5sZW5ndGg7fTtcbiAgU3RyaW5nU3RyZWFtLnByb3RvdHlwZS5za2lwVG8gPSBmdW5jdGlvbiAoY2gpIHtcbiAgICB2YXIgZm91bmQgPSB0aGlzLnN0cmluZy5pbmRleE9mKGNoLCB0aGlzLnBvcyk7XG4gICAgaWYgKGZvdW5kID4gLTEpIHt0aGlzLnBvcyA9IGZvdW5kOyByZXR1cm4gdHJ1ZX1cbiAgfTtcbiAgU3RyaW5nU3RyZWFtLnByb3RvdHlwZS5iYWNrVXAgPSBmdW5jdGlvbiAobikge3RoaXMucG9zIC09IG47fTtcbiAgU3RyaW5nU3RyZWFtLnByb3RvdHlwZS5jb2x1bW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMubGFzdENvbHVtblBvcyA8IHRoaXMuc3RhcnQpIHtcbiAgICAgIHRoaXMubGFzdENvbHVtblZhbHVlID0gY291bnRDb2x1bW4odGhpcy5zdHJpbmcsIHRoaXMuc3RhcnQsIHRoaXMudGFiU2l6ZSwgdGhpcy5sYXN0Q29sdW1uUG9zLCB0aGlzLmxhc3RDb2x1bW5WYWx1ZSk7XG4gICAgICB0aGlzLmxhc3RDb2x1bW5Qb3MgPSB0aGlzLnN0YXJ0O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sYXN0Q29sdW1uVmFsdWUgLSAodGhpcy5saW5lU3RhcnQgPyBjb3VudENvbHVtbih0aGlzLnN0cmluZywgdGhpcy5saW5lU3RhcnQsIHRoaXMudGFiU2l6ZSkgOiAwKVxuICB9O1xuICBTdHJpbmdTdHJlYW0ucHJvdG90eXBlLmluZGVudGF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjb3VudENvbHVtbih0aGlzLnN0cmluZywgbnVsbCwgdGhpcy50YWJTaXplKSAtXG4gICAgICAodGhpcy5saW5lU3RhcnQgPyBjb3VudENvbHVtbih0aGlzLnN0cmluZywgdGhpcy5saW5lU3RhcnQsIHRoaXMudGFiU2l6ZSkgOiAwKVxuICB9O1xuICBTdHJpbmdTdHJlYW0ucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24gKHBhdHRlcm4sIGNvbnN1bWUsIGNhc2VJbnNlbnNpdGl2ZSkge1xuICAgIGlmICh0eXBlb2YgcGF0dGVybiA9PSBcInN0cmluZ1wiKSB7XG4gICAgICB2YXIgY2FzZWQgPSBmdW5jdGlvbiAoc3RyKSB7IHJldHVybiBjYXNlSW5zZW5zaXRpdmUgPyBzdHIudG9Mb3dlckNhc2UoKSA6IHN0cjsgfTtcbiAgICAgIHZhciBzdWJzdHIgPSB0aGlzLnN0cmluZy5zdWJzdHIodGhpcy5wb3MsIHBhdHRlcm4ubGVuZ3RoKTtcbiAgICAgIGlmIChjYXNlZChzdWJzdHIpID09IGNhc2VkKHBhdHRlcm4pKSB7XG4gICAgICAgIGlmIChjb25zdW1lICE9PSBmYWxzZSkgeyB0aGlzLnBvcyArPSBwYXR0ZXJuLmxlbmd0aDsgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbWF0Y2ggPSB0aGlzLnN0cmluZy5zbGljZSh0aGlzLnBvcykubWF0Y2gocGF0dGVybik7XG4gICAgICBpZiAobWF0Y2ggJiYgbWF0Y2guaW5kZXggPiAwKSB7IHJldHVybiBudWxsIH1cbiAgICAgIGlmIChtYXRjaCAmJiBjb25zdW1lICE9PSBmYWxzZSkgeyB0aGlzLnBvcyArPSBtYXRjaFswXS5sZW5ndGg7IH1cbiAgICAgIHJldHVybiBtYXRjaFxuICAgIH1cbiAgfTtcbiAgU3RyaW5nU3RyZWFtLnByb3RvdHlwZS5jdXJyZW50ID0gZnVuY3Rpb24gKCl7cmV0dXJuIHRoaXMuc3RyaW5nLnNsaWNlKHRoaXMuc3RhcnQsIHRoaXMucG9zKX07XG4gIFN0cmluZ1N0cmVhbS5wcm90b3R5cGUuaGlkZUZpcnN0Q2hhcnMgPSBmdW5jdGlvbiAobiwgaW5uZXIpIHtcbiAgICB0aGlzLmxpbmVTdGFydCArPSBuO1xuICAgIHRyeSB7IHJldHVybiBpbm5lcigpIH1cbiAgICBmaW5hbGx5IHsgdGhpcy5saW5lU3RhcnQgLT0gbjsgfVxuICB9O1xuICBTdHJpbmdTdHJlYW0ucHJvdG90eXBlLmxvb2tBaGVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgdmFyIG9yYWNsZSA9IHRoaXMubGluZU9yYWNsZTtcbiAgICByZXR1cm4gb3JhY2xlICYmIG9yYWNsZS5sb29rQWhlYWQobilcbiAgfTtcbiAgU3RyaW5nU3RyZWFtLnByb3RvdHlwZS5iYXNlVG9rZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9yYWNsZSA9IHRoaXMubGluZU9yYWNsZTtcbiAgICByZXR1cm4gb3JhY2xlICYmIG9yYWNsZS5iYXNlVG9rZW4odGhpcy5wb3MpXG4gIH07XG5cbiAgLy8gRmluZCB0aGUgbGluZSBvYmplY3QgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gbGluZSBudW1iZXIuXG4gIGZ1bmN0aW9uIGdldExpbmUoZG9jLCBuKSB7XG4gICAgbiAtPSBkb2MuZmlyc3Q7XG4gICAgaWYgKG4gPCAwIHx8IG4gPj0gZG9jLnNpemUpIHsgdGhyb3cgbmV3IEVycm9yKFwiVGhlcmUgaXMgbm8gbGluZSBcIiArIChuICsgZG9jLmZpcnN0KSArIFwiIGluIHRoZSBkb2N1bWVudC5cIikgfVxuICAgIHZhciBjaHVuayA9IGRvYztcbiAgICB3aGlsZSAoIWNodW5rLmxpbmVzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDs7ICsraSkge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaHVuay5jaGlsZHJlbltpXSwgc3ogPSBjaGlsZC5jaHVua1NpemUoKTtcbiAgICAgICAgaWYgKG4gPCBzeikgeyBjaHVuayA9IGNoaWxkOyBicmVhayB9XG4gICAgICAgIG4gLT0gc3o7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjaHVuay5saW5lc1tuXVxuICB9XG5cbiAgLy8gR2V0IHRoZSBwYXJ0IG9mIGEgZG9jdW1lbnQgYmV0d2VlbiB0d28gcG9zaXRpb25zLCBhcyBhbiBhcnJheSBvZlxuICAvLyBzdHJpbmdzLlxuICBmdW5jdGlvbiBnZXRCZXR3ZWVuKGRvYywgc3RhcnQsIGVuZCkge1xuICAgIHZhciBvdXQgPSBbXSwgbiA9IHN0YXJ0LmxpbmU7XG4gICAgZG9jLml0ZXIoc3RhcnQubGluZSwgZW5kLmxpbmUgKyAxLCBmdW5jdGlvbiAobGluZSkge1xuICAgICAgdmFyIHRleHQgPSBsaW5lLnRleHQ7XG4gICAgICBpZiAobiA9PSBlbmQubGluZSkgeyB0ZXh0ID0gdGV4dC5zbGljZSgwLCBlbmQuY2gpOyB9XG4gICAgICBpZiAobiA9PSBzdGFydC5saW5lKSB7IHRleHQgPSB0ZXh0LnNsaWNlKHN0YXJ0LmNoKTsgfVxuICAgICAgb3V0LnB1c2godGV4dCk7XG4gICAgICArK247XG4gICAgfSk7XG4gICAgcmV0dXJuIG91dFxuICB9XG4gIC8vIEdldCB0aGUgbGluZXMgYmV0d2VlbiBmcm9tIGFuZCB0bywgYXMgYXJyYXkgb2Ygc3RyaW5ncy5cbiAgZnVuY3Rpb24gZ2V0TGluZXMoZG9jLCBmcm9tLCB0bykge1xuICAgIHZhciBvdXQgPSBbXTtcbiAgICBkb2MuaXRlcihmcm9tLCB0bywgZnVuY3Rpb24gKGxpbmUpIHsgb3V0LnB1c2gobGluZS50ZXh0KTsgfSk7IC8vIGl0ZXIgYWJvcnRzIHdoZW4gY2FsbGJhY2sgcmV0dXJucyB0cnV0aHkgdmFsdWVcbiAgICByZXR1cm4gb3V0XG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIGhlaWdodCBvZiBhIGxpbmUsIHByb3BhZ2F0aW5nIHRoZSBoZWlnaHQgY2hhbmdlXG4gIC8vIHVwd2FyZHMgdG8gcGFyZW50IG5vZGVzLlxuICBmdW5jdGlvbiB1cGRhdGVMaW5lSGVpZ2h0KGxpbmUsIGhlaWdodCkge1xuICAgIHZhciBkaWZmID0gaGVpZ2h0IC0gbGluZS5oZWlnaHQ7XG4gICAgaWYgKGRpZmYpIHsgZm9yICh2YXIgbiA9IGxpbmU7IG47IG4gPSBuLnBhcmVudCkgeyBuLmhlaWdodCArPSBkaWZmOyB9IH1cbiAgfVxuXG4gIC8vIEdpdmVuIGEgbGluZSBvYmplY3QsIGZpbmQgaXRzIGxpbmUgbnVtYmVyIGJ5IHdhbGtpbmcgdXAgdGhyb3VnaFxuICAvLyBpdHMgcGFyZW50IGxpbmtzLlxuICBmdW5jdGlvbiBsaW5lTm8obGluZSkge1xuICAgIGlmIChsaW5lLnBhcmVudCA9PSBudWxsKSB7IHJldHVybiBudWxsIH1cbiAgICB2YXIgY3VyID0gbGluZS5wYXJlbnQsIG5vID0gaW5kZXhPZihjdXIubGluZXMsIGxpbmUpO1xuICAgIGZvciAodmFyIGNodW5rID0gY3VyLnBhcmVudDsgY2h1bms7IGN1ciA9IGNodW5rLCBjaHVuayA9IGNodW5rLnBhcmVudCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7OyArK2kpIHtcbiAgICAgICAgaWYgKGNodW5rLmNoaWxkcmVuW2ldID09IGN1cikgeyBicmVhayB9XG4gICAgICAgIG5vICs9IGNodW5rLmNoaWxkcmVuW2ldLmNodW5rU2l6ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbm8gKyBjdXIuZmlyc3RcbiAgfVxuXG4gIC8vIEZpbmQgdGhlIGxpbmUgYXQgdGhlIGdpdmVuIHZlcnRpY2FsIHBvc2l0aW9uLCB1c2luZyB0aGUgaGVpZ2h0XG4gIC8vIGluZm9ybWF0aW9uIGluIHRoZSBkb2N1bWVudCB0cmVlLlxuICBmdW5jdGlvbiBsaW5lQXRIZWlnaHQoY2h1bmssIGgpIHtcbiAgICB2YXIgbiA9IGNodW5rLmZpcnN0O1xuICAgIG91dGVyOiBkbyB7XG4gICAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCBjaHVuay5jaGlsZHJlbi5sZW5ndGg7ICsraSQxKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNodW5rLmNoaWxkcmVuW2kkMV0sIGNoID0gY2hpbGQuaGVpZ2h0O1xuICAgICAgICBpZiAoaCA8IGNoKSB7IGNodW5rID0gY2hpbGQ7IGNvbnRpbnVlIG91dGVyIH1cbiAgICAgICAgaCAtPSBjaDtcbiAgICAgICAgbiArPSBjaGlsZC5jaHVua1NpemUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuXG4gICAgfSB3aGlsZSAoIWNodW5rLmxpbmVzKVxuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKDsgaSA8IGNodW5rLmxpbmVzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgbGluZSA9IGNodW5rLmxpbmVzW2ldLCBsaCA9IGxpbmUuaGVpZ2h0O1xuICAgICAgaWYgKGggPCBsaCkgeyBicmVhayB9XG4gICAgICBoIC09IGxoO1xuICAgIH1cbiAgICByZXR1cm4gbiArIGlcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzTGluZShkb2MsIGwpIHtyZXR1cm4gbCA+PSBkb2MuZmlyc3QgJiYgbCA8IGRvYy5maXJzdCArIGRvYy5zaXplfVxuXG4gIGZ1bmN0aW9uIGxpbmVOdW1iZXJGb3Iob3B0aW9ucywgaSkge1xuICAgIHJldHVybiBTdHJpbmcob3B0aW9ucy5saW5lTnVtYmVyRm9ybWF0dGVyKGkgKyBvcHRpb25zLmZpcnN0TGluZU51bWJlcikpXG4gIH1cblxuICAvLyBBIFBvcyBpbnN0YW5jZSByZXByZXNlbnRzIGEgcG9zaXRpb24gd2l0aGluIHRoZSB0ZXh0LlxuICBmdW5jdGlvbiBQb3MobGluZSwgY2gsIHN0aWNreSkge1xuICAgIGlmICggc3RpY2t5ID09PSB2b2lkIDAgKSBzdGlja3kgPSBudWxsO1xuXG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFBvcykpIHsgcmV0dXJuIG5ldyBQb3MobGluZSwgY2gsIHN0aWNreSkgfVxuICAgIHRoaXMubGluZSA9IGxpbmU7XG4gICAgdGhpcy5jaCA9IGNoO1xuICAgIHRoaXMuc3RpY2t5ID0gc3RpY2t5O1xuICB9XG5cbiAgLy8gQ29tcGFyZSB0d28gcG9zaXRpb25zLCByZXR1cm4gMCBpZiB0aGV5IGFyZSB0aGUgc2FtZSwgYSBuZWdhdGl2ZVxuICAvLyBudW1iZXIgd2hlbiBhIGlzIGxlc3MsIGFuZCBhIHBvc2l0aXZlIG51bWJlciBvdGhlcndpc2UuXG4gIGZ1bmN0aW9uIGNtcChhLCBiKSB7IHJldHVybiBhLmxpbmUgLSBiLmxpbmUgfHwgYS5jaCAtIGIuY2ggfVxuXG4gIGZ1bmN0aW9uIGVxdWFsQ3Vyc29yUG9zKGEsIGIpIHsgcmV0dXJuIGEuc3RpY2t5ID09IGIuc3RpY2t5ICYmIGNtcChhLCBiKSA9PSAwIH1cblxuICBmdW5jdGlvbiBjb3B5UG9zKHgpIHtyZXR1cm4gUG9zKHgubGluZSwgeC5jaCl9XG4gIGZ1bmN0aW9uIG1heFBvcyhhLCBiKSB7IHJldHVybiBjbXAoYSwgYikgPCAwID8gYiA6IGEgfVxuICBmdW5jdGlvbiBtaW5Qb3MoYSwgYikgeyByZXR1cm4gY21wKGEsIGIpIDwgMCA/IGEgOiBiIH1cblxuICAvLyBNb3N0IG9mIHRoZSBleHRlcm5hbCBBUEkgY2xpcHMgZ2l2ZW4gcG9zaXRpb25zIHRvIG1ha2Ugc3VyZSB0aGV5XG4gIC8vIGFjdHVhbGx5IGV4aXN0IHdpdGhpbiB0aGUgZG9jdW1lbnQuXG4gIGZ1bmN0aW9uIGNsaXBMaW5lKGRvYywgbikge3JldHVybiBNYXRoLm1heChkb2MuZmlyc3QsIE1hdGgubWluKG4sIGRvYy5maXJzdCArIGRvYy5zaXplIC0gMSkpfVxuICBmdW5jdGlvbiBjbGlwUG9zKGRvYywgcG9zKSB7XG4gICAgaWYgKHBvcy5saW5lIDwgZG9jLmZpcnN0KSB7IHJldHVybiBQb3MoZG9jLmZpcnN0LCAwKSB9XG4gICAgdmFyIGxhc3QgPSBkb2MuZmlyc3QgKyBkb2Muc2l6ZSAtIDE7XG4gICAgaWYgKHBvcy5saW5lID4gbGFzdCkgeyByZXR1cm4gUG9zKGxhc3QsIGdldExpbmUoZG9jLCBsYXN0KS50ZXh0Lmxlbmd0aCkgfVxuICAgIHJldHVybiBjbGlwVG9MZW4ocG9zLCBnZXRMaW5lKGRvYywgcG9zLmxpbmUpLnRleHQubGVuZ3RoKVxuICB9XG4gIGZ1bmN0aW9uIGNsaXBUb0xlbihwb3MsIGxpbmVsZW4pIHtcbiAgICB2YXIgY2ggPSBwb3MuY2g7XG4gICAgaWYgKGNoID09IG51bGwgfHwgY2ggPiBsaW5lbGVuKSB7IHJldHVybiBQb3MocG9zLmxpbmUsIGxpbmVsZW4pIH1cbiAgICBlbHNlIGlmIChjaCA8IDApIHsgcmV0dXJuIFBvcyhwb3MubGluZSwgMCkgfVxuICAgIGVsc2UgeyByZXR1cm4gcG9zIH1cbiAgfVxuICBmdW5jdGlvbiBjbGlwUG9zQXJyYXkoZG9jLCBhcnJheSkge1xuICAgIHZhciBvdXQgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7IG91dFtpXSA9IGNsaXBQb3MoZG9jLCBhcnJheVtpXSk7IH1cbiAgICByZXR1cm4gb3V0XG4gIH1cblxuICB2YXIgU2F2ZWRDb250ZXh0ID0gZnVuY3Rpb24oc3RhdGUsIGxvb2tBaGVhZCkge1xuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB0aGlzLmxvb2tBaGVhZCA9IGxvb2tBaGVhZDtcbiAgfTtcblxuICB2YXIgQ29udGV4dCA9IGZ1bmN0aW9uKGRvYywgc3RhdGUsIGxpbmUsIGxvb2tBaGVhZCkge1xuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB0aGlzLmRvYyA9IGRvYztcbiAgICB0aGlzLmxpbmUgPSBsaW5lO1xuICAgIHRoaXMubWF4TG9va0FoZWFkID0gbG9va0FoZWFkIHx8IDA7XG4gICAgdGhpcy5iYXNlVG9rZW5zID0gbnVsbDtcbiAgICB0aGlzLmJhc2VUb2tlblBvcyA9IDE7XG4gIH07XG5cbiAgQ29udGV4dC5wcm90b3R5cGUubG9va0FoZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgICB2YXIgbGluZSA9IHRoaXMuZG9jLmdldExpbmUodGhpcy5saW5lICsgbik7XG4gICAgaWYgKGxpbmUgIT0gbnVsbCAmJiBuID4gdGhpcy5tYXhMb29rQWhlYWQpIHsgdGhpcy5tYXhMb29rQWhlYWQgPSBuOyB9XG4gICAgcmV0dXJuIGxpbmVcbiAgfTtcblxuICBDb250ZXh0LnByb3RvdHlwZS5iYXNlVG9rZW4gPSBmdW5jdGlvbiAobikge1xuICAgIGlmICghdGhpcy5iYXNlVG9rZW5zKSB7IHJldHVybiBudWxsIH1cbiAgICB3aGlsZSAodGhpcy5iYXNlVG9rZW5zW3RoaXMuYmFzZVRva2VuUG9zXSA8PSBuKVxuICAgICAgeyB0aGlzLmJhc2VUb2tlblBvcyArPSAyOyB9XG4gICAgdmFyIHR5cGUgPSB0aGlzLmJhc2VUb2tlbnNbdGhpcy5iYXNlVG9rZW5Qb3MgKyAxXTtcbiAgICByZXR1cm4ge3R5cGU6IHR5cGUgJiYgdHlwZS5yZXBsYWNlKC8oIHxeKW92ZXJsYXkgLiovLCBcIlwiKSxcbiAgICAgICAgICAgIHNpemU6IHRoaXMuYmFzZVRva2Vuc1t0aGlzLmJhc2VUb2tlblBvc10gLSBufVxuICB9O1xuXG4gIENvbnRleHQucHJvdG90eXBlLm5leHRMaW5lID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMubGluZSsrO1xuICAgIGlmICh0aGlzLm1heExvb2tBaGVhZCA+IDApIHsgdGhpcy5tYXhMb29rQWhlYWQtLTsgfVxuICB9O1xuXG4gIENvbnRleHQuZnJvbVNhdmVkID0gZnVuY3Rpb24gKGRvYywgc2F2ZWQsIGxpbmUpIHtcbiAgICBpZiAoc2F2ZWQgaW5zdGFuY2VvZiBTYXZlZENvbnRleHQpXG4gICAgICB7IHJldHVybiBuZXcgQ29udGV4dChkb2MsIGNvcHlTdGF0ZShkb2MubW9kZSwgc2F2ZWQuc3RhdGUpLCBsaW5lLCBzYXZlZC5sb29rQWhlYWQpIH1cbiAgICBlbHNlXG4gICAgICB7IHJldHVybiBuZXcgQ29udGV4dChkb2MsIGNvcHlTdGF0ZShkb2MubW9kZSwgc2F2ZWQpLCBsaW5lKSB9XG4gIH07XG5cbiAgQ29udGV4dC5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uIChjb3B5KSB7XG4gICAgdmFyIHN0YXRlID0gY29weSAhPT0gZmFsc2UgPyBjb3B5U3RhdGUodGhpcy5kb2MubW9kZSwgdGhpcy5zdGF0ZSkgOiB0aGlzLnN0YXRlO1xuICAgIHJldHVybiB0aGlzLm1heExvb2tBaGVhZCA+IDAgPyBuZXcgU2F2ZWRDb250ZXh0KHN0YXRlLCB0aGlzLm1heExvb2tBaGVhZCkgOiBzdGF0ZVxuICB9O1xuXG5cbiAgLy8gQ29tcHV0ZSBhIHN0eWxlIGFycmF5IChhbiBhcnJheSBzdGFydGluZyB3aXRoIGEgbW9kZSBnZW5lcmF0aW9uXG4gIC8vIC0tIGZvciBpbnZhbGlkYXRpb24gLS0gZm9sbG93ZWQgYnkgcGFpcnMgb2YgZW5kIHBvc2l0aW9ucyBhbmRcbiAgLy8gc3R5bGUgc3RyaW5ncyksIHdoaWNoIGlzIHVzZWQgdG8gaGlnaGxpZ2h0IHRoZSB0b2tlbnMgb24gdGhlXG4gIC8vIGxpbmUuXG4gIGZ1bmN0aW9uIGhpZ2hsaWdodExpbmUoY20sIGxpbmUsIGNvbnRleHQsIGZvcmNlVG9FbmQpIHtcbiAgICAvLyBBIHN0eWxlcyBhcnJheSBhbHdheXMgc3RhcnRzIHdpdGggYSBudW1iZXIgaWRlbnRpZnlpbmcgdGhlXG4gICAgLy8gbW9kZS9vdmVybGF5cyB0aGF0IGl0IGlzIGJhc2VkIG9uIChmb3IgZWFzeSBpbnZhbGlkYXRpb24pLlxuICAgIHZhciBzdCA9IFtjbS5zdGF0ZS5tb2RlR2VuXSwgbGluZUNsYXNzZXMgPSB7fTtcbiAgICAvLyBDb21wdXRlIHRoZSBiYXNlIGFycmF5IG9mIHN0eWxlc1xuICAgIHJ1bk1vZGUoY20sIGxpbmUudGV4dCwgY20uZG9jLm1vZGUsIGNvbnRleHQsIGZ1bmN0aW9uIChlbmQsIHN0eWxlKSB7IHJldHVybiBzdC5wdXNoKGVuZCwgc3R5bGUpOyB9LFxuICAgICAgICAgICAgbGluZUNsYXNzZXMsIGZvcmNlVG9FbmQpO1xuICAgIHZhciBzdGF0ZSA9IGNvbnRleHQuc3RhdGU7XG5cbiAgICAvLyBSdW4gb3ZlcmxheXMsIGFkanVzdCBzdHlsZSBhcnJheS5cbiAgICB2YXIgbG9vcCA9IGZ1bmN0aW9uICggbyApIHtcbiAgICAgIGNvbnRleHQuYmFzZVRva2VucyA9IHN0O1xuICAgICAgdmFyIG92ZXJsYXkgPSBjbS5zdGF0ZS5vdmVybGF5c1tvXSwgaSA9IDEsIGF0ID0gMDtcbiAgICAgIGNvbnRleHQuc3RhdGUgPSB0cnVlO1xuICAgICAgcnVuTW9kZShjbSwgbGluZS50ZXh0LCBvdmVybGF5Lm1vZGUsIGNvbnRleHQsIGZ1bmN0aW9uIChlbmQsIHN0eWxlKSB7XG4gICAgICAgIHZhciBzdGFydCA9IGk7XG4gICAgICAgIC8vIEVuc3VyZSB0aGVyZSdzIGEgdG9rZW4gZW5kIGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uLCBhbmQgdGhhdCBpIHBvaW50cyBhdCBpdFxuICAgICAgICB3aGlsZSAoYXQgPCBlbmQpIHtcbiAgICAgICAgICB2YXIgaV9lbmQgPSBzdFtpXTtcbiAgICAgICAgICBpZiAoaV9lbmQgPiBlbmQpXG4gICAgICAgICAgICB7IHN0LnNwbGljZShpLCAxLCBlbmQsIHN0W2krMV0sIGlfZW5kKTsgfVxuICAgICAgICAgIGkgKz0gMjtcbiAgICAgICAgICBhdCA9IE1hdGgubWluKGVuZCwgaV9lbmQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc3R5bGUpIHsgcmV0dXJuIH1cbiAgICAgICAgaWYgKG92ZXJsYXkub3BhcXVlKSB7XG4gICAgICAgICAgc3Quc3BsaWNlKHN0YXJ0LCBpIC0gc3RhcnQsIGVuZCwgXCJvdmVybGF5IFwiICsgc3R5bGUpO1xuICAgICAgICAgIGkgPSBzdGFydCArIDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yICg7IHN0YXJ0IDwgaTsgc3RhcnQgKz0gMikge1xuICAgICAgICAgICAgdmFyIGN1ciA9IHN0W3N0YXJ0KzFdO1xuICAgICAgICAgICAgc3Rbc3RhcnQrMV0gPSAoY3VyID8gY3VyICsgXCIgXCIgOiBcIlwiKSArIFwib3ZlcmxheSBcIiArIHN0eWxlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgbGluZUNsYXNzZXMpO1xuICAgICAgY29udGV4dC5zdGF0ZSA9IHN0YXRlO1xuICAgICAgY29udGV4dC5iYXNlVG9rZW5zID0gbnVsbDtcbiAgICAgIGNvbnRleHQuYmFzZVRva2VuUG9zID0gMTtcbiAgICB9O1xuXG4gICAgZm9yICh2YXIgbyA9IDA7IG8gPCBjbS5zdGF0ZS5vdmVybGF5cy5sZW5ndGg7ICsrbykgbG9vcCggbyApO1xuXG4gICAgcmV0dXJuIHtzdHlsZXM6IHN0LCBjbGFzc2VzOiBsaW5lQ2xhc3Nlcy5iZ0NsYXNzIHx8IGxpbmVDbGFzc2VzLnRleHRDbGFzcyA/IGxpbmVDbGFzc2VzIDogbnVsbH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldExpbmVTdHlsZXMoY20sIGxpbmUsIHVwZGF0ZUZyb250aWVyKSB7XG4gICAgaWYgKCFsaW5lLnN0eWxlcyB8fCBsaW5lLnN0eWxlc1swXSAhPSBjbS5zdGF0ZS5tb2RlR2VuKSB7XG4gICAgICB2YXIgY29udGV4dCA9IGdldENvbnRleHRCZWZvcmUoY20sIGxpbmVObyhsaW5lKSk7XG4gICAgICB2YXIgcmVzZXRTdGF0ZSA9IGxpbmUudGV4dC5sZW5ndGggPiBjbS5vcHRpb25zLm1heEhpZ2hsaWdodExlbmd0aCAmJiBjb3B5U3RhdGUoY20uZG9jLm1vZGUsIGNvbnRleHQuc3RhdGUpO1xuICAgICAgdmFyIHJlc3VsdCA9IGhpZ2hsaWdodExpbmUoY20sIGxpbmUsIGNvbnRleHQpO1xuICAgICAgaWYgKHJlc2V0U3RhdGUpIHsgY29udGV4dC5zdGF0ZSA9IHJlc2V0U3RhdGU7IH1cbiAgICAgIGxpbmUuc3RhdGVBZnRlciA9IGNvbnRleHQuc2F2ZSghcmVzZXRTdGF0ZSk7XG4gICAgICBsaW5lLnN0eWxlcyA9IHJlc3VsdC5zdHlsZXM7XG4gICAgICBpZiAocmVzdWx0LmNsYXNzZXMpIHsgbGluZS5zdHlsZUNsYXNzZXMgPSByZXN1bHQuY2xhc3NlczsgfVxuICAgICAgZWxzZSBpZiAobGluZS5zdHlsZUNsYXNzZXMpIHsgbGluZS5zdHlsZUNsYXNzZXMgPSBudWxsOyB9XG4gICAgICBpZiAodXBkYXRlRnJvbnRpZXIgPT09IGNtLmRvYy5oaWdobGlnaHRGcm9udGllcilcbiAgICAgICAgeyBjbS5kb2MubW9kZUZyb250aWVyID0gTWF0aC5tYXgoY20uZG9jLm1vZGVGcm9udGllciwgKytjbS5kb2MuaGlnaGxpZ2h0RnJvbnRpZXIpOyB9XG4gICAgfVxuICAgIHJldHVybiBsaW5lLnN0eWxlc1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Q29udGV4dEJlZm9yZShjbSwgbiwgcHJlY2lzZSkge1xuICAgIHZhciBkb2MgPSBjbS5kb2MsIGRpc3BsYXkgPSBjbS5kaXNwbGF5O1xuICAgIGlmICghZG9jLm1vZGUuc3RhcnRTdGF0ZSkgeyByZXR1cm4gbmV3IENvbnRleHQoZG9jLCB0cnVlLCBuKSB9XG4gICAgdmFyIHN0YXJ0ID0gZmluZFN0YXJ0TGluZShjbSwgbiwgcHJlY2lzZSk7XG4gICAgdmFyIHNhdmVkID0gc3RhcnQgPiBkb2MuZmlyc3QgJiYgZ2V0TGluZShkb2MsIHN0YXJ0IC0gMSkuc3RhdGVBZnRlcjtcbiAgICB2YXIgY29udGV4dCA9IHNhdmVkID8gQ29udGV4dC5mcm9tU2F2ZWQoZG9jLCBzYXZlZCwgc3RhcnQpIDogbmV3IENvbnRleHQoZG9jLCBzdGFydFN0YXRlKGRvYy5tb2RlKSwgc3RhcnQpO1xuXG4gICAgZG9jLml0ZXIoc3RhcnQsIG4sIGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICBwcm9jZXNzTGluZShjbSwgbGluZS50ZXh0LCBjb250ZXh0KTtcbiAgICAgIHZhciBwb3MgPSBjb250ZXh0LmxpbmU7XG4gICAgICBsaW5lLnN0YXRlQWZ0ZXIgPSBwb3MgPT0gbiAtIDEgfHwgcG9zICUgNSA9PSAwIHx8IHBvcyA+PSBkaXNwbGF5LnZpZXdGcm9tICYmIHBvcyA8IGRpc3BsYXkudmlld1RvID8gY29udGV4dC5zYXZlKCkgOiBudWxsO1xuICAgICAgY29udGV4dC5uZXh0TGluZSgpO1xuICAgIH0pO1xuICAgIGlmIChwcmVjaXNlKSB7IGRvYy5tb2RlRnJvbnRpZXIgPSBjb250ZXh0LmxpbmU7IH1cbiAgICByZXR1cm4gY29udGV4dFxuICB9XG5cbiAgLy8gTGlnaHR3ZWlnaHQgZm9ybSBvZiBoaWdobGlnaHQgLS0gcHJvY2VlZCBvdmVyIHRoaXMgbGluZSBhbmRcbiAgLy8gdXBkYXRlIHN0YXRlLCBidXQgZG9uJ3Qgc2F2ZSBhIHN0eWxlIGFycmF5LiBVc2VkIGZvciBsaW5lcyB0aGF0XG4gIC8vIGFyZW4ndCBjdXJyZW50bHkgdmlzaWJsZS5cbiAgZnVuY3Rpb24gcHJvY2Vzc0xpbmUoY20sIHRleHQsIGNvbnRleHQsIHN0YXJ0QXQpIHtcbiAgICB2YXIgbW9kZSA9IGNtLmRvYy5tb2RlO1xuICAgIHZhciBzdHJlYW0gPSBuZXcgU3RyaW5nU3RyZWFtKHRleHQsIGNtLm9wdGlvbnMudGFiU2l6ZSwgY29udGV4dCk7XG4gICAgc3RyZWFtLnN0YXJ0ID0gc3RyZWFtLnBvcyA9IHN0YXJ0QXQgfHwgMDtcbiAgICBpZiAodGV4dCA9PSBcIlwiKSB7IGNhbGxCbGFua0xpbmUobW9kZSwgY29udGV4dC5zdGF0ZSk7IH1cbiAgICB3aGlsZSAoIXN0cmVhbS5lb2woKSkge1xuICAgICAgcmVhZFRva2VuKG1vZGUsIHN0cmVhbSwgY29udGV4dC5zdGF0ZSk7XG4gICAgICBzdHJlYW0uc3RhcnQgPSBzdHJlYW0ucG9zO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbGxCbGFua0xpbmUobW9kZSwgc3RhdGUpIHtcbiAgICBpZiAobW9kZS5ibGFua0xpbmUpIHsgcmV0dXJuIG1vZGUuYmxhbmtMaW5lKHN0YXRlKSB9XG4gICAgaWYgKCFtb2RlLmlubmVyTW9kZSkgeyByZXR1cm4gfVxuICAgIHZhciBpbm5lciA9IGlubmVyTW9kZShtb2RlLCBzdGF0ZSk7XG4gICAgaWYgKGlubmVyLm1vZGUuYmxhbmtMaW5lKSB7IHJldHVybiBpbm5lci5tb2RlLmJsYW5rTGluZShpbm5lci5zdGF0ZSkgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZFRva2VuKG1vZGUsIHN0cmVhbSwgc3RhdGUsIGlubmVyKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG4gICAgICBpZiAoaW5uZXIpIHsgaW5uZXJbMF0gPSBpbm5lck1vZGUobW9kZSwgc3RhdGUpLm1vZGU7IH1cbiAgICAgIHZhciBzdHlsZSA9IG1vZGUudG9rZW4oc3RyZWFtLCBzdGF0ZSk7XG4gICAgICBpZiAoc3RyZWFtLnBvcyA+IHN0cmVhbS5zdGFydCkgeyByZXR1cm4gc3R5bGUgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJNb2RlIFwiICsgbW9kZS5uYW1lICsgXCIgZmFpbGVkIHRvIGFkdmFuY2Ugc3RyZWFtLlwiKVxuICB9XG5cbiAgdmFyIFRva2VuID0gZnVuY3Rpb24oc3RyZWFtLCB0eXBlLCBzdGF0ZSkge1xuICAgIHRoaXMuc3RhcnQgPSBzdHJlYW0uc3RhcnQ7IHRoaXMuZW5kID0gc3RyZWFtLnBvcztcbiAgICB0aGlzLnN0cmluZyA9IHN0cmVhbS5jdXJyZW50KCk7XG4gICAgdGhpcy50eXBlID0gdHlwZSB8fCBudWxsO1xuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgfTtcblxuICAvLyBVdGlsaXR5IGZvciBnZXRUb2tlbkF0IGFuZCBnZXRMaW5lVG9rZW5zXG4gIGZ1bmN0aW9uIHRha2VUb2tlbihjbSwgcG9zLCBwcmVjaXNlLCBhc0FycmF5KSB7XG4gICAgdmFyIGRvYyA9IGNtLmRvYywgbW9kZSA9IGRvYy5tb2RlLCBzdHlsZTtcbiAgICBwb3MgPSBjbGlwUG9zKGRvYywgcG9zKTtcbiAgICB2YXIgbGluZSA9IGdldExpbmUoZG9jLCBwb3MubGluZSksIGNvbnRleHQgPSBnZXRDb250ZXh0QmVmb3JlKGNtLCBwb3MubGluZSwgcHJlY2lzZSk7XG4gICAgdmFyIHN0cmVhbSA9IG5ldyBTdHJpbmdTdHJlYW0obGluZS50ZXh0LCBjbS5vcHRpb25zLnRhYlNpemUsIGNvbnRleHQpLCB0b2tlbnM7XG4gICAgaWYgKGFzQXJyYXkpIHsgdG9rZW5zID0gW107IH1cbiAgICB3aGlsZSAoKGFzQXJyYXkgfHwgc3RyZWFtLnBvcyA8IHBvcy5jaCkgJiYgIXN0cmVhbS5lb2woKSkge1xuICAgICAgc3RyZWFtLnN0YXJ0ID0gc3RyZWFtLnBvcztcbiAgICAgIHN0eWxlID0gcmVhZFRva2VuKG1vZGUsIHN0cmVhbSwgY29udGV4dC5zdGF0ZSk7XG4gICAgICBpZiAoYXNBcnJheSkgeyB0b2tlbnMucHVzaChuZXcgVG9rZW4oc3RyZWFtLCBzdHlsZSwgY29weVN0YXRlKGRvYy5tb2RlLCBjb250ZXh0LnN0YXRlKSkpOyB9XG4gICAgfVxuICAgIHJldHVybiBhc0FycmF5ID8gdG9rZW5zIDogbmV3IFRva2VuKHN0cmVhbSwgc3R5bGUsIGNvbnRleHQuc3RhdGUpXG4gIH1cblxuICBmdW5jdGlvbiBleHRyYWN0TGluZUNsYXNzZXModHlwZSwgb3V0cHV0KSB7XG4gICAgaWYgKHR5cGUpIHsgZm9yICg7Oykge1xuICAgICAgdmFyIGxpbmVDbGFzcyA9IHR5cGUubWF0Y2goLyg/Ol58XFxzKylsaW5lLShiYWNrZ3JvdW5kLSk/KFxcUyspLyk7XG4gICAgICBpZiAoIWxpbmVDbGFzcykgeyBicmVhayB9XG4gICAgICB0eXBlID0gdHlwZS5zbGljZSgwLCBsaW5lQ2xhc3MuaW5kZXgpICsgdHlwZS5zbGljZShsaW5lQ2xhc3MuaW5kZXggKyBsaW5lQ2xhc3NbMF0ubGVuZ3RoKTtcbiAgICAgIHZhciBwcm9wID0gbGluZUNsYXNzWzFdID8gXCJiZ0NsYXNzXCIgOiBcInRleHRDbGFzc1wiO1xuICAgICAgaWYgKG91dHB1dFtwcm9wXSA9PSBudWxsKVxuICAgICAgICB7IG91dHB1dFtwcm9wXSA9IGxpbmVDbGFzc1syXTsgfVxuICAgICAgZWxzZSBpZiAoIShuZXcgUmVnRXhwKFwiKD86XnxcXFxccylcIiArIGxpbmVDbGFzc1syXSArIFwiKD86JHxcXFxccylcIikpLnRlc3Qob3V0cHV0W3Byb3BdKSlcbiAgICAgICAgeyBvdXRwdXRbcHJvcF0gKz0gXCIgXCIgKyBsaW5lQ2xhc3NbMl07IH1cbiAgICB9IH1cbiAgICByZXR1cm4gdHlwZVxuICB9XG5cbiAgLy8gUnVuIHRoZSBnaXZlbiBtb2RlJ3MgcGFyc2VyIG92ZXIgYSBsaW5lLCBjYWxsaW5nIGYgZm9yIGVhY2ggdG9rZW4uXG4gIGZ1bmN0aW9uIHJ1bk1vZGUoY20sIHRleHQsIG1vZGUsIGNvbnRleHQsIGYsIGxpbmVDbGFzc2VzLCBmb3JjZVRvRW5kKSB7XG4gICAgdmFyIGZsYXR0ZW5TcGFucyA9IG1vZGUuZmxhdHRlblNwYW5zO1xuICAgIGlmIChmbGF0dGVuU3BhbnMgPT0gbnVsbCkgeyBmbGF0dGVuU3BhbnMgPSBjbS5vcHRpb25zLmZsYXR0ZW5TcGFuczsgfVxuICAgIHZhciBjdXJTdGFydCA9IDAsIGN1clN0eWxlID0gbnVsbDtcbiAgICB2YXIgc3RyZWFtID0gbmV3IFN0cmluZ1N0cmVhbSh0ZXh0LCBjbS5vcHRpb25zLnRhYlNpemUsIGNvbnRleHQpLCBzdHlsZTtcbiAgICB2YXIgaW5uZXIgPSBjbS5vcHRpb25zLmFkZE1vZGVDbGFzcyAmJiBbbnVsbF07XG4gICAgaWYgKHRleHQgPT0gXCJcIikgeyBleHRyYWN0TGluZUNsYXNzZXMoY2FsbEJsYW5rTGluZShtb2RlLCBjb250ZXh0LnN0YXRlKSwgbGluZUNsYXNzZXMpOyB9XG4gICAgd2hpbGUgKCFzdHJlYW0uZW9sKCkpIHtcbiAgICAgIGlmIChzdHJlYW0ucG9zID4gY20ub3B0aW9ucy5tYXhIaWdobGlnaHRMZW5ndGgpIHtcbiAgICAgICAgZmxhdHRlblNwYW5zID0gZmFsc2U7XG4gICAgICAgIGlmIChmb3JjZVRvRW5kKSB7IHByb2Nlc3NMaW5lKGNtLCB0ZXh0LCBjb250ZXh0LCBzdHJlYW0ucG9zKTsgfVxuICAgICAgICBzdHJlYW0ucG9zID0gdGV4dC5sZW5ndGg7XG4gICAgICAgIHN0eWxlID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0eWxlID0gZXh0cmFjdExpbmVDbGFzc2VzKHJlYWRUb2tlbihtb2RlLCBzdHJlYW0sIGNvbnRleHQuc3RhdGUsIGlubmVyKSwgbGluZUNsYXNzZXMpO1xuICAgICAgfVxuICAgICAgaWYgKGlubmVyKSB7XG4gICAgICAgIHZhciBtTmFtZSA9IGlubmVyWzBdLm5hbWU7XG4gICAgICAgIGlmIChtTmFtZSkgeyBzdHlsZSA9IFwibS1cIiArIChzdHlsZSA/IG1OYW1lICsgXCIgXCIgKyBzdHlsZSA6IG1OYW1lKTsgfVxuICAgICAgfVxuICAgICAgaWYgKCFmbGF0dGVuU3BhbnMgfHwgY3VyU3R5bGUgIT0gc3R5bGUpIHtcbiAgICAgICAgd2hpbGUgKGN1clN0YXJ0IDwgc3RyZWFtLnN0YXJ0KSB7XG4gICAgICAgICAgY3VyU3RhcnQgPSBNYXRoLm1pbihzdHJlYW0uc3RhcnQsIGN1clN0YXJ0ICsgNTAwMCk7XG4gICAgICAgICAgZihjdXJTdGFydCwgY3VyU3R5bGUpO1xuICAgICAgICB9XG4gICAgICAgIGN1clN0eWxlID0gc3R5bGU7XG4gICAgICB9XG4gICAgICBzdHJlYW0uc3RhcnQgPSBzdHJlYW0ucG9zO1xuICAgIH1cbiAgICB3aGlsZSAoY3VyU3RhcnQgPCBzdHJlYW0ucG9zKSB7XG4gICAgICAvLyBXZWJraXQgc2VlbXMgdG8gcmVmdXNlIHRvIHJlbmRlciB0ZXh0IG5vZGVzIGxvbmdlciB0aGFuIDU3NDQ0XG4gICAgICAvLyBjaGFyYWN0ZXJzLCBhbmQgcmV0dXJucyBpbmFjY3VyYXRlIG1lYXN1cmVtZW50cyBpbiBub2Rlc1xuICAgICAgLy8gc3RhcnRpbmcgYXJvdW5kIDUwMDAgY2hhcnMuXG4gICAgICB2YXIgcG9zID0gTWF0aC5taW4oc3RyZWFtLnBvcywgY3VyU3RhcnQgKyA1MDAwKTtcbiAgICAgIGYocG9zLCBjdXJTdHlsZSk7XG4gICAgICBjdXJTdGFydCA9IHBvcztcbiAgICB9XG4gIH1cblxuICAvLyBGaW5kcyB0aGUgbGluZSB0byBzdGFydCB3aXRoIHdoZW4gc3RhcnRpbmcgYSBwYXJzZS4gVHJpZXMgdG9cbiAgLy8gZmluZCBhIGxpbmUgd2l0aCBhIHN0YXRlQWZ0ZXIsIHNvIHRoYXQgaXQgY2FuIHN0YXJ0IHdpdGggYVxuICAvLyB2YWxpZCBzdGF0ZS4gSWYgdGhhdCBmYWlscywgaXQgcmV0dXJucyB0aGUgbGluZSB3aXRoIHRoZVxuICAvLyBzbWFsbGVzdCBpbmRlbnRhdGlvbiwgd2hpY2ggdGVuZHMgdG8gbmVlZCB0aGUgbGVhc3QgY29udGV4dCB0b1xuICAvLyBwYXJzZSBjb3JyZWN0bHkuXG4gIGZ1bmN0aW9uIGZpbmRTdGFydExpbmUoY20sIG4sIHByZWNpc2UpIHtcbiAgICB2YXIgbWluaW5kZW50LCBtaW5saW5lLCBkb2MgPSBjbS5kb2M7XG4gICAgdmFyIGxpbSA9IHByZWNpc2UgPyAtMSA6IG4gLSAoY20uZG9jLm1vZGUuaW5uZXJNb2RlID8gMTAwMCA6IDEwMCk7XG4gICAgZm9yICh2YXIgc2VhcmNoID0gbjsgc2VhcmNoID4gbGltOyAtLXNlYXJjaCkge1xuICAgICAgaWYgKHNlYXJjaCA8PSBkb2MuZmlyc3QpIHsgcmV0dXJuIGRvYy5maXJzdCB9XG4gICAgICB2YXIgbGluZSA9IGdldExpbmUoZG9jLCBzZWFyY2ggLSAxKSwgYWZ0ZXIgPSBsaW5lLnN0YXRlQWZ0ZXI7XG4gICAgICBpZiAoYWZ0ZXIgJiYgKCFwcmVjaXNlIHx8IHNlYXJjaCArIChhZnRlciBpbnN0YW5jZW9mIFNhdmVkQ29udGV4dCA/IGFmdGVyLmxvb2tBaGVhZCA6IDApIDw9IGRvYy5tb2RlRnJvbnRpZXIpKVxuICAgICAgICB7IHJldHVybiBzZWFyY2ggfVxuICAgICAgdmFyIGluZGVudGVkID0gY291bnRDb2x1bW4obGluZS50ZXh0LCBudWxsLCBjbS5vcHRpb25zLnRhYlNpemUpO1xuICAgICAgaWYgKG1pbmxpbmUgPT0gbnVsbCB8fCBtaW5pbmRlbnQgPiBpbmRlbnRlZCkge1xuICAgICAgICBtaW5saW5lID0gc2VhcmNoIC0gMTtcbiAgICAgICAgbWluaW5kZW50ID0gaW5kZW50ZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtaW5saW5lXG4gIH1cblxuICBmdW5jdGlvbiByZXRyZWF0RnJvbnRpZXIoZG9jLCBuKSB7XG4gICAgZG9jLm1vZGVGcm9udGllciA9IE1hdGgubWluKGRvYy5tb2RlRnJvbnRpZXIsIG4pO1xuICAgIGlmIChkb2MuaGlnaGxpZ2h0RnJvbnRpZXIgPCBuIC0gMTApIHsgcmV0dXJuIH1cbiAgICB2YXIgc3RhcnQgPSBkb2MuZmlyc3Q7XG4gICAgZm9yICh2YXIgbGluZSA9IG4gLSAxOyBsaW5lID4gc3RhcnQ7IGxpbmUtLSkge1xuICAgICAgdmFyIHNhdmVkID0gZ2V0TGluZShkb2MsIGxpbmUpLnN0YXRlQWZ0ZXI7XG4gICAgICAvLyBjaGFuZ2UgaXMgb24gM1xuICAgICAgLy8gc3RhdGUgb24gbGluZSAxIGxvb2tlZCBhaGVhZCAyIC0tIHNvIHNhdyAzXG4gICAgICAvLyB0ZXN0IDEgKyAyIDwgMyBzaG91bGQgY292ZXIgdGhpc1xuICAgICAgaWYgKHNhdmVkICYmICghKHNhdmVkIGluc3RhbmNlb2YgU2F2ZWRDb250ZXh0KSB8fCBsaW5lICsgc2F2ZWQubG9va0FoZWFkIDwgbikpIHtcbiAgICAgICAgc3RhcnQgPSBsaW5lICsgMTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jLmhpZ2hsaWdodEZyb250aWVyID0gTWF0aC5taW4oZG9jLmhpZ2hsaWdodEZyb250aWVyLCBzdGFydCk7XG4gIH1cblxuICAvLyBPcHRpbWl6ZSBzb21lIGNvZGUgd2hlbiB0aGVzZSBmZWF0dXJlcyBhcmUgbm90IHVzZWQuXG4gIHZhciBzYXdSZWFkT25seVNwYW5zID0gZmFsc2UsIHNhd0NvbGxhcHNlZFNwYW5zID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gc2VlUmVhZE9ubHlTcGFucygpIHtcbiAgICBzYXdSZWFkT25seVNwYW5zID0gdHJ1ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNlZUNvbGxhcHNlZFNwYW5zKCkge1xuICAgIHNhd0NvbGxhcHNlZFNwYW5zID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIFRFWFRNQVJLRVIgU1BBTlNcblxuICBmdW5jdGlvbiBNYXJrZWRTcGFuKG1hcmtlciwgZnJvbSwgdG8pIHtcbiAgICB0aGlzLm1hcmtlciA9IG1hcmtlcjtcbiAgICB0aGlzLmZyb20gPSBmcm9tOyB0aGlzLnRvID0gdG87XG4gIH1cblxuICAvLyBTZWFyY2ggYW4gYXJyYXkgb2Ygc3BhbnMgZm9yIGEgc3BhbiBtYXRjaGluZyB0aGUgZ2l2ZW4gbWFya2VyLlxuICBmdW5jdGlvbiBnZXRNYXJrZWRTcGFuRm9yKHNwYW5zLCBtYXJrZXIpIHtcbiAgICBpZiAoc3BhbnMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBzcGFucy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIHNwYW4gPSBzcGFuc1tpXTtcbiAgICAgIGlmIChzcGFuLm1hcmtlciA9PSBtYXJrZXIpIHsgcmV0dXJuIHNwYW4gfVxuICAgIH0gfVxuICB9XG4gIC8vIFJlbW92ZSBhIHNwYW4gZnJvbSBhbiBhcnJheSwgcmV0dXJuaW5nIHVuZGVmaW5lZCBpZiBubyBzcGFucyBhcmVcbiAgLy8gbGVmdCAod2UgZG9uJ3Qgc3RvcmUgYXJyYXlzIGZvciBsaW5lcyB3aXRob3V0IHNwYW5zKS5cbiAgZnVuY3Rpb24gcmVtb3ZlTWFya2VkU3BhbihzcGFucywgc3Bhbikge1xuICAgIHZhciByO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3BhbnMubGVuZ3RoOyArK2kpXG4gICAgICB7IGlmIChzcGFuc1tpXSAhPSBzcGFuKSB7IChyIHx8IChyID0gW10pKS5wdXNoKHNwYW5zW2ldKTsgfSB9XG4gICAgcmV0dXJuIHJcbiAgfVxuICAvLyBBZGQgYSBzcGFuIHRvIGEgbGluZS5cbiAgZnVuY3Rpb24gYWRkTWFya2VkU3BhbihsaW5lLCBzcGFuKSB7XG4gICAgbGluZS5tYXJrZWRTcGFucyA9IGxpbmUubWFya2VkU3BhbnMgPyBsaW5lLm1hcmtlZFNwYW5zLmNvbmNhdChbc3Bhbl0pIDogW3NwYW5dO1xuICAgIHNwYW4ubWFya2VyLmF0dGFjaExpbmUobGluZSk7XG4gIH1cblxuICAvLyBVc2VkIGZvciB0aGUgYWxnb3JpdGhtIHRoYXQgYWRqdXN0cyBtYXJrZXJzIGZvciBhIGNoYW5nZSBpbiB0aGVcbiAgLy8gZG9jdW1lbnQuIFRoZXNlIGZ1bmN0aW9ucyBjdXQgYW4gYXJyYXkgb2Ygc3BhbnMgYXQgYSBnaXZlblxuICAvLyBjaGFyYWN0ZXIgcG9zaXRpb24sIHJldHVybmluZyBhbiBhcnJheSBvZiByZW1haW5pbmcgY2h1bmtzIChvclxuICAvLyB1bmRlZmluZWQgaWYgbm90aGluZyByZW1haW5zKS5cbiAgZnVuY3Rpb24gbWFya2VkU3BhbnNCZWZvcmUob2xkLCBzdGFydENoLCBpc0luc2VydCkge1xuICAgIHZhciBudztcbiAgICBpZiAob2xkKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgb2xkLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgc3BhbiA9IG9sZFtpXSwgbWFya2VyID0gc3Bhbi5tYXJrZXI7XG4gICAgICB2YXIgc3RhcnRzQmVmb3JlID0gc3Bhbi5mcm9tID09IG51bGwgfHwgKG1hcmtlci5pbmNsdXNpdmVMZWZ0ID8gc3Bhbi5mcm9tIDw9IHN0YXJ0Q2ggOiBzcGFuLmZyb20gPCBzdGFydENoKTtcbiAgICAgIGlmIChzdGFydHNCZWZvcmUgfHwgc3Bhbi5mcm9tID09IHN0YXJ0Q2ggJiYgbWFya2VyLnR5cGUgPT0gXCJib29rbWFya1wiICYmICghaXNJbnNlcnQgfHwgIXNwYW4ubWFya2VyLmluc2VydExlZnQpKSB7XG4gICAgICAgIHZhciBlbmRzQWZ0ZXIgPSBzcGFuLnRvID09IG51bGwgfHwgKG1hcmtlci5pbmNsdXNpdmVSaWdodCA/IHNwYW4udG8gPj0gc3RhcnRDaCA6IHNwYW4udG8gPiBzdGFydENoKVxuICAgICAgICA7KG53IHx8IChudyA9IFtdKSkucHVzaChuZXcgTWFya2VkU3BhbihtYXJrZXIsIHNwYW4uZnJvbSwgZW5kc0FmdGVyID8gbnVsbCA6IHNwYW4udG8pKTtcbiAgICAgIH1cbiAgICB9IH1cbiAgICByZXR1cm4gbndcbiAgfVxuICBmdW5jdGlvbiBtYXJrZWRTcGFuc0FmdGVyKG9sZCwgZW5kQ2gsIGlzSW5zZXJ0KSB7XG4gICAgdmFyIG53O1xuICAgIGlmIChvbGQpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBvbGQubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBzcGFuID0gb2xkW2ldLCBtYXJrZXIgPSBzcGFuLm1hcmtlcjtcbiAgICAgIHZhciBlbmRzQWZ0ZXIgPSBzcGFuLnRvID09IG51bGwgfHwgKG1hcmtlci5pbmNsdXNpdmVSaWdodCA/IHNwYW4udG8gPj0gZW5kQ2ggOiBzcGFuLnRvID4gZW5kQ2gpO1xuICAgICAgaWYgKGVuZHNBZnRlciB8fCBzcGFuLmZyb20gPT0gZW5kQ2ggJiYgbWFya2VyLnR5cGUgPT0gXCJib29rbWFya1wiICYmICghaXNJbnNlcnQgfHwgc3Bhbi5tYXJrZXIuaW5zZXJ0TGVmdCkpIHtcbiAgICAgICAgdmFyIHN0YXJ0c0JlZm9yZSA9IHNwYW4uZnJvbSA9PSBudWxsIHx8IChtYXJrZXIuaW5jbHVzaXZlTGVmdCA/IHNwYW4uZnJvbSA8PSBlbmRDaCA6IHNwYW4uZnJvbSA8IGVuZENoKVxuICAgICAgICA7KG53IHx8IChudyA9IFtdKSkucHVzaChuZXcgTWFya2VkU3BhbihtYXJrZXIsIHN0YXJ0c0JlZm9yZSA/IG51bGwgOiBzcGFuLmZyb20gLSBlbmRDaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFuLnRvID09IG51bGwgPyBudWxsIDogc3Bhbi50byAtIGVuZENoKSk7XG4gICAgICB9XG4gICAgfSB9XG4gICAgcmV0dXJuIG53XG4gIH1cblxuICAvLyBHaXZlbiBhIGNoYW5nZSBvYmplY3QsIGNvbXB1dGUgdGhlIG5ldyBzZXQgb2YgbWFya2VyIHNwYW5zIHRoYXRcbiAgLy8gY292ZXIgdGhlIGxpbmUgaW4gd2hpY2ggdGhlIGNoYW5nZSB0b29rIHBsYWNlLiBSZW1vdmVzIHNwYW5zXG4gIC8vIGVudGlyZWx5IHdpdGhpbiB0aGUgY2hhbmdlLCByZWNvbm5lY3RzIHNwYW5zIGJlbG9uZ2luZyB0byB0aGVcbiAgLy8gc2FtZSBtYXJrZXIgdGhhdCBhcHBlYXIgb24gYm90aCBzaWRlcyBvZiB0aGUgY2hhbmdlLCBhbmQgY3V0cyBvZmZcbiAgLy8gc3BhbnMgcGFydGlhbGx5IHdpdGhpbiB0aGUgY2hhbmdlLiBSZXR1cm5zIGFuIGFycmF5IG9mIHNwYW5cbiAgLy8gYXJyYXlzIHdpdGggb25lIGVsZW1lbnQgZm9yIGVhY2ggbGluZSBpbiAoYWZ0ZXIpIHRoZSBjaGFuZ2UuXG4gIGZ1bmN0aW9uIHN0cmV0Y2hTcGFuc092ZXJDaGFuZ2UoZG9jLCBjaGFuZ2UpIHtcbiAgICBpZiAoY2hhbmdlLmZ1bGwpIHsgcmV0dXJuIG51bGwgfVxuICAgIHZhciBvbGRGaXJzdCA9IGlzTGluZShkb2MsIGNoYW5nZS5mcm9tLmxpbmUpICYmIGdldExpbmUoZG9jLCBjaGFuZ2UuZnJvbS5saW5lKS5tYXJrZWRTcGFucztcbiAgICB2YXIgb2xkTGFzdCA9IGlzTGluZShkb2MsIGNoYW5nZS50by5saW5lKSAmJiBnZXRMaW5lKGRvYywgY2hhbmdlLnRvLmxpbmUpLm1hcmtlZFNwYW5zO1xuICAgIGlmICghb2xkRmlyc3QgJiYgIW9sZExhc3QpIHsgcmV0dXJuIG51bGwgfVxuXG4gICAgdmFyIHN0YXJ0Q2ggPSBjaGFuZ2UuZnJvbS5jaCwgZW5kQ2ggPSBjaGFuZ2UudG8uY2gsIGlzSW5zZXJ0ID0gY21wKGNoYW5nZS5mcm9tLCBjaGFuZ2UudG8pID09IDA7XG4gICAgLy8gR2V0IHRoZSBzcGFucyB0aGF0ICdzdGljayBvdXQnIG9uIGJvdGggc2lkZXNcbiAgICB2YXIgZmlyc3QgPSBtYXJrZWRTcGFuc0JlZm9yZShvbGRGaXJzdCwgc3RhcnRDaCwgaXNJbnNlcnQpO1xuICAgIHZhciBsYXN0ID0gbWFya2VkU3BhbnNBZnRlcihvbGRMYXN0LCBlbmRDaCwgaXNJbnNlcnQpO1xuXG4gICAgLy8gTmV4dCwgbWVyZ2UgdGhvc2UgdHdvIGVuZHNcbiAgICB2YXIgc2FtZUxpbmUgPSBjaGFuZ2UudGV4dC5sZW5ndGggPT0gMSwgb2Zmc2V0ID0gbHN0KGNoYW5nZS50ZXh0KS5sZW5ndGggKyAoc2FtZUxpbmUgPyBzdGFydENoIDogMCk7XG4gICAgaWYgKGZpcnN0KSB7XG4gICAgICAvLyBGaXggdXAgLnRvIHByb3BlcnRpZXMgb2YgZmlyc3RcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlyc3QubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIHNwYW4gPSBmaXJzdFtpXTtcbiAgICAgICAgaWYgKHNwYW4udG8gPT0gbnVsbCkge1xuICAgICAgICAgIHZhciBmb3VuZCA9IGdldE1hcmtlZFNwYW5Gb3IobGFzdCwgc3Bhbi5tYXJrZXIpO1xuICAgICAgICAgIGlmICghZm91bmQpIHsgc3Bhbi50byA9IHN0YXJ0Q2g7IH1cbiAgICAgICAgICBlbHNlIGlmIChzYW1lTGluZSkgeyBzcGFuLnRvID0gZm91bmQudG8gPT0gbnVsbCA/IG51bGwgOiBmb3VuZC50byArIG9mZnNldDsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChsYXN0KSB7XG4gICAgICAvLyBGaXggdXAgLmZyb20gaW4gbGFzdCAob3IgbW92ZSB0aGVtIGludG8gZmlyc3QgaW4gY2FzZSBvZiBzYW1lTGluZSlcbiAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGxhc3QubGVuZ3RoOyArK2kkMSkge1xuICAgICAgICB2YXIgc3BhbiQxID0gbGFzdFtpJDFdO1xuICAgICAgICBpZiAoc3BhbiQxLnRvICE9IG51bGwpIHsgc3BhbiQxLnRvICs9IG9mZnNldDsgfVxuICAgICAgICBpZiAoc3BhbiQxLmZyb20gPT0gbnVsbCkge1xuICAgICAgICAgIHZhciBmb3VuZCQxID0gZ2V0TWFya2VkU3BhbkZvcihmaXJzdCwgc3BhbiQxLm1hcmtlcik7XG4gICAgICAgICAgaWYgKCFmb3VuZCQxKSB7XG4gICAgICAgICAgICBzcGFuJDEuZnJvbSA9IG9mZnNldDtcbiAgICAgICAgICAgIGlmIChzYW1lTGluZSkgeyAoZmlyc3QgfHwgKGZpcnN0ID0gW10pKS5wdXNoKHNwYW4kMSk7IH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3BhbiQxLmZyb20gKz0gb2Zmc2V0O1xuICAgICAgICAgIGlmIChzYW1lTGluZSkgeyAoZmlyc3QgfHwgKGZpcnN0ID0gW10pKS5wdXNoKHNwYW4kMSk7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBNYWtlIHN1cmUgd2UgZGlkbid0IGNyZWF0ZSBhbnkgemVyby1sZW5ndGggc3BhbnNcbiAgICBpZiAoZmlyc3QpIHsgZmlyc3QgPSBjbGVhckVtcHR5U3BhbnMoZmlyc3QpOyB9XG4gICAgaWYgKGxhc3QgJiYgbGFzdCAhPSBmaXJzdCkgeyBsYXN0ID0gY2xlYXJFbXB0eVNwYW5zKGxhc3QpOyB9XG5cbiAgICB2YXIgbmV3TWFya2VycyA9IFtmaXJzdF07XG4gICAgaWYgKCFzYW1lTGluZSkge1xuICAgICAgLy8gRmlsbCBnYXAgd2l0aCB3aG9sZS1saW5lLXNwYW5zXG4gICAgICB2YXIgZ2FwID0gY2hhbmdlLnRleHQubGVuZ3RoIC0gMiwgZ2FwTWFya2VycztcbiAgICAgIGlmIChnYXAgPiAwICYmIGZpcnN0KVxuICAgICAgICB7IGZvciAodmFyIGkkMiA9IDA7IGkkMiA8IGZpcnN0Lmxlbmd0aDsgKytpJDIpXG4gICAgICAgICAgeyBpZiAoZmlyc3RbaSQyXS50byA9PSBudWxsKVxuICAgICAgICAgICAgeyAoZ2FwTWFya2VycyB8fCAoZ2FwTWFya2VycyA9IFtdKSkucHVzaChuZXcgTWFya2VkU3BhbihmaXJzdFtpJDJdLm1hcmtlciwgbnVsbCwgbnVsbCkpOyB9IH0gfVxuICAgICAgZm9yICh2YXIgaSQzID0gMDsgaSQzIDwgZ2FwOyArK2kkMylcbiAgICAgICAgeyBuZXdNYXJrZXJzLnB1c2goZ2FwTWFya2Vycyk7IH1cbiAgICAgIG5ld01hcmtlcnMucHVzaChsYXN0KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld01hcmtlcnNcbiAgfVxuXG4gIC8vIFJlbW92ZSBzcGFucyB0aGF0IGFyZSBlbXB0eSBhbmQgZG9uJ3QgaGF2ZSBhIGNsZWFyV2hlbkVtcHR5XG4gIC8vIG9wdGlvbiBvZiBmYWxzZS5cbiAgZnVuY3Rpb24gY2xlYXJFbXB0eVNwYW5zKHNwYW5zKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzcGFucy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIHNwYW4gPSBzcGFuc1tpXTtcbiAgICAgIGlmIChzcGFuLmZyb20gIT0gbnVsbCAmJiBzcGFuLmZyb20gPT0gc3Bhbi50byAmJiBzcGFuLm1hcmtlci5jbGVhcldoZW5FbXB0eSAhPT0gZmFsc2UpXG4gICAgICAgIHsgc3BhbnMuc3BsaWNlKGktLSwgMSk7IH1cbiAgICB9XG4gICAgaWYgKCFzcGFucy5sZW5ndGgpIHsgcmV0dXJuIG51bGwgfVxuICAgIHJldHVybiBzcGFuc1xuICB9XG5cbiAgLy8gVXNlZCB0byAnY2xpcCcgb3V0IHJlYWRPbmx5IHJhbmdlcyB3aGVuIG1ha2luZyBhIGNoYW5nZS5cbiAgZnVuY3Rpb24gcmVtb3ZlUmVhZE9ubHlSYW5nZXMoZG9jLCBmcm9tLCB0bykge1xuICAgIHZhciBtYXJrZXJzID0gbnVsbDtcbiAgICBkb2MuaXRlcihmcm9tLmxpbmUsIHRvLmxpbmUgKyAxLCBmdW5jdGlvbiAobGluZSkge1xuICAgICAgaWYgKGxpbmUubWFya2VkU3BhbnMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lLm1hcmtlZFNwYW5zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBtYXJrID0gbGluZS5tYXJrZWRTcGFuc1tpXS5tYXJrZXI7XG4gICAgICAgIGlmIChtYXJrLnJlYWRPbmx5ICYmICghbWFya2VycyB8fCBpbmRleE9mKG1hcmtlcnMsIG1hcmspID09IC0xKSlcbiAgICAgICAgICB7IChtYXJrZXJzIHx8IChtYXJrZXJzID0gW10pKS5wdXNoKG1hcmspOyB9XG4gICAgICB9IH1cbiAgICB9KTtcbiAgICBpZiAoIW1hcmtlcnMpIHsgcmV0dXJuIG51bGwgfVxuICAgIHZhciBwYXJ0cyA9IFt7ZnJvbTogZnJvbSwgdG86IHRvfV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXJrZXJzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgbWsgPSBtYXJrZXJzW2ldLCBtID0gbWsuZmluZCgwKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcGFydHMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgdmFyIHAgPSBwYXJ0c1tqXTtcbiAgICAgICAgaWYgKGNtcChwLnRvLCBtLmZyb20pIDwgMCB8fCBjbXAocC5mcm9tLCBtLnRvKSA+IDApIHsgY29udGludWUgfVxuICAgICAgICB2YXIgbmV3UGFydHMgPSBbaiwgMV0sIGRmcm9tID0gY21wKHAuZnJvbSwgbS5mcm9tKSwgZHRvID0gY21wKHAudG8sIG0udG8pO1xuICAgICAgICBpZiAoZGZyb20gPCAwIHx8ICFtay5pbmNsdXNpdmVMZWZ0ICYmICFkZnJvbSlcbiAgICAgICAgICB7IG5ld1BhcnRzLnB1c2goe2Zyb206IHAuZnJvbSwgdG86IG0uZnJvbX0pOyB9XG4gICAgICAgIGlmIChkdG8gPiAwIHx8ICFtay5pbmNsdXNpdmVSaWdodCAmJiAhZHRvKVxuICAgICAgICAgIHsgbmV3UGFydHMucHVzaCh7ZnJvbTogbS50bywgdG86IHAudG99KTsgfVxuICAgICAgICBwYXJ0cy5zcGxpY2UuYXBwbHkocGFydHMsIG5ld1BhcnRzKTtcbiAgICAgICAgaiArPSBuZXdQYXJ0cy5sZW5ndGggLSAzO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGFydHNcbiAgfVxuXG4gIC8vIENvbm5lY3Qgb3IgZGlzY29ubmVjdCBzcGFucyBmcm9tIGEgbGluZS5cbiAgZnVuY3Rpb24gZGV0YWNoTWFya2VkU3BhbnMobGluZSkge1xuICAgIHZhciBzcGFucyA9IGxpbmUubWFya2VkU3BhbnM7XG4gICAgaWYgKCFzcGFucykgeyByZXR1cm4gfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3BhbnMubGVuZ3RoOyArK2kpXG4gICAgICB7IHNwYW5zW2ldLm1hcmtlci5kZXRhY2hMaW5lKGxpbmUpOyB9XG4gICAgbGluZS5tYXJrZWRTcGFucyA9IG51bGw7XG4gIH1cbiAgZnVuY3Rpb24gYXR0YWNoTWFya2VkU3BhbnMobGluZSwgc3BhbnMpIHtcbiAgICBpZiAoIXNwYW5zKSB7IHJldHVybiB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzcGFucy5sZW5ndGg7ICsraSlcbiAgICAgIHsgc3BhbnNbaV0ubWFya2VyLmF0dGFjaExpbmUobGluZSk7IH1cbiAgICBsaW5lLm1hcmtlZFNwYW5zID0gc3BhbnM7XG4gIH1cblxuICAvLyBIZWxwZXJzIHVzZWQgd2hlbiBjb21wdXRpbmcgd2hpY2ggb3ZlcmxhcHBpbmcgY29sbGFwc2VkIHNwYW5cbiAgLy8gY291bnRzIGFzIHRoZSBsYXJnZXIgb25lLlxuICBmdW5jdGlvbiBleHRyYUxlZnQobWFya2VyKSB7IHJldHVybiBtYXJrZXIuaW5jbHVzaXZlTGVmdCA/IC0xIDogMCB9XG4gIGZ1bmN0aW9uIGV4dHJhUmlnaHQobWFya2VyKSB7IHJldHVybiBtYXJrZXIuaW5jbHVzaXZlUmlnaHQgPyAxIDogMCB9XG5cbiAgLy8gUmV0dXJucyBhIG51bWJlciBpbmRpY2F0aW5nIHdoaWNoIG9mIHR3byBvdmVybGFwcGluZyBjb2xsYXBzZWRcbiAgLy8gc3BhbnMgaXMgbGFyZ2VyIChhbmQgdGh1cyBpbmNsdWRlcyB0aGUgb3RoZXIpLiBGYWxscyBiYWNrIHRvXG4gIC8vIGNvbXBhcmluZyBpZHMgd2hlbiB0aGUgc3BhbnMgY292ZXIgZXhhY3RseSB0aGUgc2FtZSByYW5nZS5cbiAgZnVuY3Rpb24gY29tcGFyZUNvbGxhcHNlZE1hcmtlcnMoYSwgYikge1xuICAgIHZhciBsZW5EaWZmID0gYS5saW5lcy5sZW5ndGggLSBiLmxpbmVzLmxlbmd0aDtcbiAgICBpZiAobGVuRGlmZiAhPSAwKSB7IHJldHVybiBsZW5EaWZmIH1cbiAgICB2YXIgYVBvcyA9IGEuZmluZCgpLCBiUG9zID0gYi5maW5kKCk7XG4gICAgdmFyIGZyb21DbXAgPSBjbXAoYVBvcy5mcm9tLCBiUG9zLmZyb20pIHx8IGV4dHJhTGVmdChhKSAtIGV4dHJhTGVmdChiKTtcbiAgICBpZiAoZnJvbUNtcCkgeyByZXR1cm4gLWZyb21DbXAgfVxuICAgIHZhciB0b0NtcCA9IGNtcChhUG9zLnRvLCBiUG9zLnRvKSB8fCBleHRyYVJpZ2h0KGEpIC0gZXh0cmFSaWdodChiKTtcbiAgICBpZiAodG9DbXApIHsgcmV0dXJuIHRvQ21wIH1cbiAgICByZXR1cm4gYi5pZCAtIGEuaWRcbiAgfVxuXG4gIC8vIEZpbmQgb3V0IHdoZXRoZXIgYSBsaW5lIGVuZHMgb3Igc3RhcnRzIGluIGEgY29sbGFwc2VkIHNwYW4uIElmXG4gIC8vIHNvLCByZXR1cm4gdGhlIG1hcmtlciBmb3IgdGhhdCBzcGFuLlxuICBmdW5jdGlvbiBjb2xsYXBzZWRTcGFuQXRTaWRlKGxpbmUsIHN0YXJ0KSB7XG4gICAgdmFyIHNwcyA9IHNhd0NvbGxhcHNlZFNwYW5zICYmIGxpbmUubWFya2VkU3BhbnMsIGZvdW5kO1xuICAgIGlmIChzcHMpIHsgZm9yICh2YXIgc3AgPSAodm9pZCAwKSwgaSA9IDA7IGkgPCBzcHMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHNwID0gc3BzW2ldO1xuICAgICAgaWYgKHNwLm1hcmtlci5jb2xsYXBzZWQgJiYgKHN0YXJ0ID8gc3AuZnJvbSA6IHNwLnRvKSA9PSBudWxsICYmXG4gICAgICAgICAgKCFmb3VuZCB8fCBjb21wYXJlQ29sbGFwc2VkTWFya2Vycyhmb3VuZCwgc3AubWFya2VyKSA8IDApKVxuICAgICAgICB7IGZvdW5kID0gc3AubWFya2VyOyB9XG4gICAgfSB9XG4gICAgcmV0dXJuIGZvdW5kXG4gIH1cbiAgZnVuY3Rpb24gY29sbGFwc2VkU3BhbkF0U3RhcnQobGluZSkgeyByZXR1cm4gY29sbGFwc2VkU3BhbkF0U2lkZShsaW5lLCB0cnVlKSB9XG4gIGZ1bmN0aW9uIGNvbGxhcHNlZFNwYW5BdEVuZChsaW5lKSB7IHJldHVybiBjb2xsYXBzZWRTcGFuQXRTaWRlKGxpbmUsIGZhbHNlKSB9XG5cbiAgZnVuY3Rpb24gY29sbGFwc2VkU3BhbkFyb3VuZChsaW5lLCBjaCkge1xuICAgIHZhciBzcHMgPSBzYXdDb2xsYXBzZWRTcGFucyAmJiBsaW5lLm1hcmtlZFNwYW5zLCBmb3VuZDtcbiAgICBpZiAoc3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgc3BzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgc3AgPSBzcHNbaV07XG4gICAgICBpZiAoc3AubWFya2VyLmNvbGxhcHNlZCAmJiAoc3AuZnJvbSA9PSBudWxsIHx8IHNwLmZyb20gPCBjaCkgJiYgKHNwLnRvID09IG51bGwgfHwgc3AudG8gPiBjaCkgJiZcbiAgICAgICAgICAoIWZvdW5kIHx8IGNvbXBhcmVDb2xsYXBzZWRNYXJrZXJzKGZvdW5kLCBzcC5tYXJrZXIpIDwgMCkpIHsgZm91bmQgPSBzcC5tYXJrZXI7IH1cbiAgICB9IH1cbiAgICByZXR1cm4gZm91bmRcbiAgfVxuXG4gIC8vIFRlc3Qgd2hldGhlciB0aGVyZSBleGlzdHMgYSBjb2xsYXBzZWQgc3BhbiB0aGF0IHBhcnRpYWxseVxuICAvLyBvdmVybGFwcyAoY292ZXJzIHRoZSBzdGFydCBvciBlbmQsIGJ1dCBub3QgYm90aCkgb2YgYSBuZXcgc3Bhbi5cbiAgLy8gU3VjaCBvdmVybGFwIGlzIG5vdCBhbGxvd2VkLlxuICBmdW5jdGlvbiBjb25mbGljdGluZ0NvbGxhcHNlZFJhbmdlKGRvYywgbGluZU5vLCBmcm9tLCB0bywgbWFya2VyKSB7XG4gICAgdmFyIGxpbmUgPSBnZXRMaW5lKGRvYywgbGluZU5vKTtcbiAgICB2YXIgc3BzID0gc2F3Q29sbGFwc2VkU3BhbnMgJiYgbGluZS5tYXJrZWRTcGFucztcbiAgICBpZiAoc3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgc3BzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgc3AgPSBzcHNbaV07XG4gICAgICBpZiAoIXNwLm1hcmtlci5jb2xsYXBzZWQpIHsgY29udGludWUgfVxuICAgICAgdmFyIGZvdW5kID0gc3AubWFya2VyLmZpbmQoMCk7XG4gICAgICB2YXIgZnJvbUNtcCA9IGNtcChmb3VuZC5mcm9tLCBmcm9tKSB8fCBleHRyYUxlZnQoc3AubWFya2VyKSAtIGV4dHJhTGVmdChtYXJrZXIpO1xuICAgICAgdmFyIHRvQ21wID0gY21wKGZvdW5kLnRvLCB0bykgfHwgZXh0cmFSaWdodChzcC5tYXJrZXIpIC0gZXh0cmFSaWdodChtYXJrZXIpO1xuICAgICAgaWYgKGZyb21DbXAgPj0gMCAmJiB0b0NtcCA8PSAwIHx8IGZyb21DbXAgPD0gMCAmJiB0b0NtcCA+PSAwKSB7IGNvbnRpbnVlIH1cbiAgICAgIGlmIChmcm9tQ21wIDw9IDAgJiYgKHNwLm1hcmtlci5pbmNsdXNpdmVSaWdodCAmJiBtYXJrZXIuaW5jbHVzaXZlTGVmdCA/IGNtcChmb3VuZC50bywgZnJvbSkgPj0gMCA6IGNtcChmb3VuZC50bywgZnJvbSkgPiAwKSB8fFxuICAgICAgICAgIGZyb21DbXAgPj0gMCAmJiAoc3AubWFya2VyLmluY2x1c2l2ZVJpZ2h0ICYmIG1hcmtlci5pbmNsdXNpdmVMZWZ0ID8gY21wKGZvdW5kLmZyb20sIHRvKSA8PSAwIDogY21wKGZvdW5kLmZyb20sIHRvKSA8IDApKVxuICAgICAgICB7IHJldHVybiB0cnVlIH1cbiAgICB9IH1cbiAgfVxuXG4gIC8vIEEgdmlzdWFsIGxpbmUgaXMgYSBsaW5lIGFzIGRyYXduIG9uIHRoZSBzY3JlZW4uIEZvbGRpbmcsIGZvclxuICAvLyBleGFtcGxlLCBjYW4gY2F1c2UgbXVsdGlwbGUgbG9naWNhbCBsaW5lcyB0byBhcHBlYXIgb24gdGhlIHNhbWVcbiAgLy8gdmlzdWFsIGxpbmUuIFRoaXMgZmluZHMgdGhlIHN0YXJ0IG9mIHRoZSB2aXN1YWwgbGluZSB0aGF0IHRoZVxuICAvLyBnaXZlbiBsaW5lIGlzIHBhcnQgb2YgKHVzdWFsbHkgdGhhdCBpcyB0aGUgbGluZSBpdHNlbGYpLlxuICBmdW5jdGlvbiB2aXN1YWxMaW5lKGxpbmUpIHtcbiAgICB2YXIgbWVyZ2VkO1xuICAgIHdoaWxlIChtZXJnZWQgPSBjb2xsYXBzZWRTcGFuQXRTdGFydChsaW5lKSlcbiAgICAgIHsgbGluZSA9IG1lcmdlZC5maW5kKC0xLCB0cnVlKS5saW5lOyB9XG4gICAgcmV0dXJuIGxpbmVcbiAgfVxuXG4gIGZ1bmN0aW9uIHZpc3VhbExpbmVFbmQobGluZSkge1xuICAgIHZhciBtZXJnZWQ7XG4gICAgd2hpbGUgKG1lcmdlZCA9IGNvbGxhcHNlZFNwYW5BdEVuZChsaW5lKSlcbiAgICAgIHsgbGluZSA9IG1lcmdlZC5maW5kKDEsIHRydWUpLmxpbmU7IH1cbiAgICByZXR1cm4gbGluZVxuICB9XG5cbiAgLy8gUmV0dXJucyBhbiBhcnJheSBvZiBsb2dpY2FsIGxpbmVzIHRoYXQgY29udGludWUgdGhlIHZpc3VhbCBsaW5lXG4gIC8vIHN0YXJ0ZWQgYnkgdGhlIGFyZ3VtZW50LCBvciB1bmRlZmluZWQgaWYgdGhlcmUgYXJlIG5vIHN1Y2ggbGluZXMuXG4gIGZ1bmN0aW9uIHZpc3VhbExpbmVDb250aW51ZWQobGluZSkge1xuICAgIHZhciBtZXJnZWQsIGxpbmVzO1xuICAgIHdoaWxlIChtZXJnZWQgPSBjb2xsYXBzZWRTcGFuQXRFbmQobGluZSkpIHtcbiAgICAgIGxpbmUgPSBtZXJnZWQuZmluZCgxLCB0cnVlKS5saW5lXG4gICAgICA7KGxpbmVzIHx8IChsaW5lcyA9IFtdKSkucHVzaChsaW5lKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVzXG4gIH1cblxuICAvLyBHZXQgdGhlIGxpbmUgbnVtYmVyIG9mIHRoZSBzdGFydCBvZiB0aGUgdmlzdWFsIGxpbmUgdGhhdCB0aGVcbiAgLy8gZ2l2ZW4gbGluZSBudW1iZXIgaXMgcGFydCBvZi5cbiAgZnVuY3Rpb24gdmlzdWFsTGluZU5vKGRvYywgbGluZU4pIHtcbiAgICB2YXIgbGluZSA9IGdldExpbmUoZG9jLCBsaW5lTiksIHZpcyA9IHZpc3VhbExpbmUobGluZSk7XG4gICAgaWYgKGxpbmUgPT0gdmlzKSB7IHJldHVybiBsaW5lTiB9XG4gICAgcmV0dXJuIGxpbmVObyh2aXMpXG4gIH1cblxuICAvLyBHZXQgdGhlIGxpbmUgbnVtYmVyIG9mIHRoZSBzdGFydCBvZiB0aGUgbmV4dCB2aXN1YWwgbGluZSBhZnRlclxuICAvLyB0aGUgZ2l2ZW4gbGluZS5cbiAgZnVuY3Rpb24gdmlzdWFsTGluZUVuZE5vKGRvYywgbGluZU4pIHtcbiAgICBpZiAobGluZU4gPiBkb2MubGFzdExpbmUoKSkgeyByZXR1cm4gbGluZU4gfVxuICAgIHZhciBsaW5lID0gZ2V0TGluZShkb2MsIGxpbmVOKSwgbWVyZ2VkO1xuICAgIGlmICghbGluZUlzSGlkZGVuKGRvYywgbGluZSkpIHsgcmV0dXJuIGxpbmVOIH1cbiAgICB3aGlsZSAobWVyZ2VkID0gY29sbGFwc2VkU3BhbkF0RW5kKGxpbmUpKVxuICAgICAgeyBsaW5lID0gbWVyZ2VkLmZpbmQoMSwgdHJ1ZSkubGluZTsgfVxuICAgIHJldHVybiBsaW5lTm8obGluZSkgKyAxXG4gIH1cblxuICAvLyBDb21wdXRlIHdoZXRoZXIgYSBsaW5lIGlzIGhpZGRlbi4gTGluZXMgY291bnQgYXMgaGlkZGVuIHdoZW4gdGhleVxuICAvLyBhcmUgcGFydCBvZiBhIHZpc3VhbCBsaW5lIHRoYXQgc3RhcnRzIHdpdGggYW5vdGhlciBsaW5lLCBvciB3aGVuXG4gIC8vIHRoZXkgYXJlIGVudGlyZWx5IGNvdmVyZWQgYnkgY29sbGFwc2VkLCBub24td2lkZ2V0IHNwYW4uXG4gIGZ1bmN0aW9uIGxpbmVJc0hpZGRlbihkb2MsIGxpbmUpIHtcbiAgICB2YXIgc3BzID0gc2F3Q29sbGFwc2VkU3BhbnMgJiYgbGluZS5tYXJrZWRTcGFucztcbiAgICBpZiAoc3BzKSB7IGZvciAodmFyIHNwID0gKHZvaWQgMCksIGkgPSAwOyBpIDwgc3BzLmxlbmd0aDsgKytpKSB7XG4gICAgICBzcCA9IHNwc1tpXTtcbiAgICAgIGlmICghc3AubWFya2VyLmNvbGxhcHNlZCkgeyBjb250aW51ZSB9XG4gICAgICBpZiAoc3AuZnJvbSA9PSBudWxsKSB7IHJldHVybiB0cnVlIH1cbiAgICAgIGlmIChzcC5tYXJrZXIud2lkZ2V0Tm9kZSkgeyBjb250aW51ZSB9XG4gICAgICBpZiAoc3AuZnJvbSA9PSAwICYmIHNwLm1hcmtlci5pbmNsdXNpdmVMZWZ0ICYmIGxpbmVJc0hpZGRlbklubmVyKGRvYywgbGluZSwgc3ApKVxuICAgICAgICB7IHJldHVybiB0cnVlIH1cbiAgICB9IH1cbiAgfVxuICBmdW5jdGlvbiBsaW5lSXNIaWRkZW5Jbm5lcihkb2MsIGxpbmUsIHNwYW4pIHtcbiAgICBpZiAoc3Bhbi50byA9PSBudWxsKSB7XG4gICAgICB2YXIgZW5kID0gc3Bhbi5tYXJrZXIuZmluZCgxLCB0cnVlKTtcbiAgICAgIHJldHVybiBsaW5lSXNIaWRkZW5Jbm5lcihkb2MsIGVuZC5saW5lLCBnZXRNYXJrZWRTcGFuRm9yKGVuZC5saW5lLm1hcmtlZFNwYW5zLCBzcGFuLm1hcmtlcikpXG4gICAgfVxuICAgIGlmIChzcGFuLm1hcmtlci5pbmNsdXNpdmVSaWdodCAmJiBzcGFuLnRvID09IGxpbmUudGV4dC5sZW5ndGgpXG4gICAgICB7IHJldHVybiB0cnVlIH1cbiAgICBmb3IgKHZhciBzcCA9ICh2b2lkIDApLCBpID0gMDsgaSA8IGxpbmUubWFya2VkU3BhbnMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHNwID0gbGluZS5tYXJrZWRTcGFuc1tpXTtcbiAgICAgIGlmIChzcC5tYXJrZXIuY29sbGFwc2VkICYmICFzcC5tYXJrZXIud2lkZ2V0Tm9kZSAmJiBzcC5mcm9tID09IHNwYW4udG8gJiZcbiAgICAgICAgICAoc3AudG8gPT0gbnVsbCB8fCBzcC50byAhPSBzcGFuLmZyb20pICYmXG4gICAgICAgICAgKHNwLm1hcmtlci5pbmNsdXNpdmVMZWZ0IHx8IHNwYW4ubWFya2VyLmluY2x1c2l2ZVJpZ2h0KSAmJlxuICAgICAgICAgIGxpbmVJc0hpZGRlbklubmVyKGRvYywgbGluZSwgc3ApKSB7IHJldHVybiB0cnVlIH1cbiAgICB9XG4gIH1cblxuICAvLyBGaW5kIHRoZSBoZWlnaHQgYWJvdmUgdGhlIGdpdmVuIGxpbmUuXG4gIGZ1bmN0aW9uIGhlaWdodEF0TGluZShsaW5lT2JqKSB7XG4gICAgbGluZU9iaiA9IHZpc3VhbExpbmUobGluZU9iaik7XG5cbiAgICB2YXIgaCA9IDAsIGNodW5rID0gbGluZU9iai5wYXJlbnQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaHVuay5saW5lcy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGxpbmUgPSBjaHVuay5saW5lc1tpXTtcbiAgICAgIGlmIChsaW5lID09IGxpbmVPYmopIHsgYnJlYWsgfVxuICAgICAgZWxzZSB7IGggKz0gbGluZS5oZWlnaHQ7IH1cbiAgICB9XG4gICAgZm9yICh2YXIgcCA9IGNodW5rLnBhcmVudDsgcDsgY2h1bmsgPSBwLCBwID0gY2h1bmsucGFyZW50KSB7XG4gICAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCBwLmNoaWxkcmVuLmxlbmd0aDsgKytpJDEpIHtcbiAgICAgICAgdmFyIGN1ciA9IHAuY2hpbGRyZW5baSQxXTtcbiAgICAgICAgaWYgKGN1ciA9PSBjaHVuaykgeyBicmVhayB9XG4gICAgICAgIGVsc2UgeyBoICs9IGN1ci5oZWlnaHQ7IH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhcbiAgfVxuXG4gIC8vIENvbXB1dGUgdGhlIGNoYXJhY3RlciBsZW5ndGggb2YgYSBsaW5lLCB0YWtpbmcgaW50byBhY2NvdW50XG4gIC8vIGNvbGxhcHNlZCByYW5nZXMgKHNlZSBtYXJrVGV4dCkgdGhhdCBtaWdodCBoaWRlIHBhcnRzLCBhbmQgam9pblxuICAvLyBvdGhlciBsaW5lcyBvbnRvIGl0LlxuICBmdW5jdGlvbiBsaW5lTGVuZ3RoKGxpbmUpIHtcbiAgICBpZiAobGluZS5oZWlnaHQgPT0gMCkgeyByZXR1cm4gMCB9XG4gICAgdmFyIGxlbiA9IGxpbmUudGV4dC5sZW5ndGgsIG1lcmdlZCwgY3VyID0gbGluZTtcbiAgICB3aGlsZSAobWVyZ2VkID0gY29sbGFwc2VkU3BhbkF0U3RhcnQoY3VyKSkge1xuICAgICAgdmFyIGZvdW5kID0gbWVyZ2VkLmZpbmQoMCwgdHJ1ZSk7XG4gICAgICBjdXIgPSBmb3VuZC5mcm9tLmxpbmU7XG4gICAgICBsZW4gKz0gZm91bmQuZnJvbS5jaCAtIGZvdW5kLnRvLmNoO1xuICAgIH1cbiAgICBjdXIgPSBsaW5lO1xuICAgIHdoaWxlIChtZXJnZWQgPSBjb2xsYXBzZWRTcGFuQXRFbmQoY3VyKSkge1xuICAgICAgdmFyIGZvdW5kJDEgPSBtZXJnZWQuZmluZCgwLCB0cnVlKTtcbiAgICAgIGxlbiAtPSBjdXIudGV4dC5sZW5ndGggLSBmb3VuZCQxLmZyb20uY2g7XG4gICAgICBjdXIgPSBmb3VuZCQxLnRvLmxpbmU7XG4gICAgICBsZW4gKz0gY3VyLnRleHQubGVuZ3RoIC0gZm91bmQkMS50by5jaDtcbiAgICB9XG4gICAgcmV0dXJuIGxlblxuICB9XG5cbiAgLy8gRmluZCB0aGUgbG9uZ2VzdCBsaW5lIGluIHRoZSBkb2N1bWVudC5cbiAgZnVuY3Rpb24gZmluZE1heExpbmUoY20pIHtcbiAgICB2YXIgZCA9IGNtLmRpc3BsYXksIGRvYyA9IGNtLmRvYztcbiAgICBkLm1heExpbmUgPSBnZXRMaW5lKGRvYywgZG9jLmZpcnN0KTtcbiAgICBkLm1heExpbmVMZW5ndGggPSBsaW5lTGVuZ3RoKGQubWF4TGluZSk7XG4gICAgZC5tYXhMaW5lQ2hhbmdlZCA9IHRydWU7XG4gICAgZG9jLml0ZXIoZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIHZhciBsZW4gPSBsaW5lTGVuZ3RoKGxpbmUpO1xuICAgICAgaWYgKGxlbiA+IGQubWF4TGluZUxlbmd0aCkge1xuICAgICAgICBkLm1heExpbmVMZW5ndGggPSBsZW47XG4gICAgICAgIGQubWF4TGluZSA9IGxpbmU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBMSU5FIERBVEEgU1RSVUNUVVJFXG5cbiAgLy8gTGluZSBvYmplY3RzLiBUaGVzZSBob2xkIHN0YXRlIHJlbGF0ZWQgdG8gYSBsaW5lLCBpbmNsdWRpbmdcbiAgLy8gaGlnaGxpZ2h0aW5nIGluZm8gKHRoZSBzdHlsZXMgYXJyYXkpLlxuICB2YXIgTGluZSA9IGZ1bmN0aW9uKHRleHQsIG1hcmtlZFNwYW5zLCBlc3RpbWF0ZUhlaWdodCkge1xuICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gICAgYXR0YWNoTWFya2VkU3BhbnModGhpcywgbWFya2VkU3BhbnMpO1xuICAgIHRoaXMuaGVpZ2h0ID0gZXN0aW1hdGVIZWlnaHQgPyBlc3RpbWF0ZUhlaWdodCh0aGlzKSA6IDE7XG4gIH07XG5cbiAgTGluZS5wcm90b3R5cGUubGluZU5vID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbGluZU5vKHRoaXMpIH07XG4gIGV2ZW50TWl4aW4oTGluZSk7XG5cbiAgLy8gQ2hhbmdlIHRoZSBjb250ZW50ICh0ZXh0LCBtYXJrZXJzKSBvZiBhIGxpbmUuIEF1dG9tYXRpY2FsbHlcbiAgLy8gaW52YWxpZGF0ZXMgY2FjaGVkIGluZm9ybWF0aW9uIGFuZCB0cmllcyB0byByZS1lc3RpbWF0ZSB0aGVcbiAgLy8gbGluZSdzIGhlaWdodC5cbiAgZnVuY3Rpb24gdXBkYXRlTGluZShsaW5lLCB0ZXh0LCBtYXJrZWRTcGFucywgZXN0aW1hdGVIZWlnaHQpIHtcbiAgICBsaW5lLnRleHQgPSB0ZXh0O1xuICAgIGlmIChsaW5lLnN0YXRlQWZ0ZXIpIHsgbGluZS5zdGF0ZUFmdGVyID0gbnVsbDsgfVxuICAgIGlmIChsaW5lLnN0eWxlcykgeyBsaW5lLnN0eWxlcyA9IG51bGw7IH1cbiAgICBpZiAobGluZS5vcmRlciAhPSBudWxsKSB7IGxpbmUub3JkZXIgPSBudWxsOyB9XG4gICAgZGV0YWNoTWFya2VkU3BhbnMobGluZSk7XG4gICAgYXR0YWNoTWFya2VkU3BhbnMobGluZSwgbWFya2VkU3BhbnMpO1xuICAgIHZhciBlc3RIZWlnaHQgPSBlc3RpbWF0ZUhlaWdodCA/IGVzdGltYXRlSGVpZ2h0KGxpbmUpIDogMTtcbiAgICBpZiAoZXN0SGVpZ2h0ICE9IGxpbmUuaGVpZ2h0KSB7IHVwZGF0ZUxpbmVIZWlnaHQobGluZSwgZXN0SGVpZ2h0KTsgfVxuICB9XG5cbiAgLy8gRGV0YWNoIGEgbGluZSBmcm9tIHRoZSBkb2N1bWVudCB0cmVlIGFuZCBpdHMgbWFya2Vycy5cbiAgZnVuY3Rpb24gY2xlYW5VcExpbmUobGluZSkge1xuICAgIGxpbmUucGFyZW50ID0gbnVsbDtcbiAgICBkZXRhY2hNYXJrZWRTcGFucyhsaW5lKTtcbiAgfVxuXG4gIC8vIENvbnZlcnQgYSBzdHlsZSBhcyByZXR1cm5lZCBieSBhIG1vZGUgKGVpdGhlciBudWxsLCBvciBhIHN0cmluZ1xuICAvLyBjb250YWluaW5nIG9uZSBvciBtb3JlIHN0eWxlcykgdG8gYSBDU1Mgc3R5bGUuIFRoaXMgaXMgY2FjaGVkLFxuICAvLyBhbmQgYWxzbyBsb29rcyBmb3IgbGluZS13aWRlIHN0eWxlcy5cbiAgdmFyIHN0eWxlVG9DbGFzc0NhY2hlID0ge30sIHN0eWxlVG9DbGFzc0NhY2hlV2l0aE1vZGUgPSB7fTtcbiAgZnVuY3Rpb24gaW50ZXJwcmV0VG9rZW5TdHlsZShzdHlsZSwgb3B0aW9ucykge1xuICAgIGlmICghc3R5bGUgfHwgL15cXHMqJC8udGVzdChzdHlsZSkpIHsgcmV0dXJuIG51bGwgfVxuICAgIHZhciBjYWNoZSA9IG9wdGlvbnMuYWRkTW9kZUNsYXNzID8gc3R5bGVUb0NsYXNzQ2FjaGVXaXRoTW9kZSA6IHN0eWxlVG9DbGFzc0NhY2hlO1xuICAgIHJldHVybiBjYWNoZVtzdHlsZV0gfHxcbiAgICAgIChjYWNoZVtzdHlsZV0gPSBzdHlsZS5yZXBsYWNlKC9cXFMrL2csIFwiY20tJCZcIikpXG4gIH1cblxuICAvLyBSZW5kZXIgdGhlIERPTSByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGV4dCBvZiBhIGxpbmUuIEFsc28gYnVpbGRzXG4gIC8vIHVwIGEgJ2xpbmUgbWFwJywgd2hpY2ggcG9pbnRzIGF0IHRoZSBET00gbm9kZXMgdGhhdCByZXByZXNlbnRcbiAgLy8gc3BlY2lmaWMgc3RyZXRjaGVzIG9mIHRleHQsIGFuZCBpcyB1c2VkIGJ5IHRoZSBtZWFzdXJpbmcgY29kZS5cbiAgLy8gVGhlIHJldHVybmVkIG9iamVjdCBjb250YWlucyB0aGUgRE9NIG5vZGUsIHRoaXMgbWFwLCBhbmRcbiAgLy8gaW5mb3JtYXRpb24gYWJvdXQgbGluZS13aWRlIHN0eWxlcyB0aGF0IHdlcmUgc2V0IGJ5IHRoZSBtb2RlLlxuICBmdW5jdGlvbiBidWlsZExpbmVDb250ZW50KGNtLCBsaW5lVmlldykge1xuICAgIC8vIFRoZSBwYWRkaW5nLXJpZ2h0IGZvcmNlcyB0aGUgZWxlbWVudCB0byBoYXZlIGEgJ2JvcmRlcicsIHdoaWNoXG4gICAgLy8gaXMgbmVlZGVkIG9uIFdlYmtpdCB0byBiZSBhYmxlIHRvIGdldCBsaW5lLWxldmVsIGJvdW5kaW5nXG4gICAgLy8gcmVjdGFuZ2xlcyBmb3IgaXQgKGluIG1lYXN1cmVDaGFyKS5cbiAgICB2YXIgY29udGVudCA9IGVsdFAoXCJzcGFuXCIsIG51bGwsIG51bGwsIHdlYmtpdCA/IFwicGFkZGluZy1yaWdodDogLjFweFwiIDogbnVsbCk7XG4gICAgdmFyIGJ1aWxkZXIgPSB7cHJlOiBlbHRQKFwicHJlXCIsIFtjb250ZW50XSwgXCJDb2RlTWlycm9yLWxpbmVcIiksIGNvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgY29sOiAwLCBwb3M6IDAsIGNtOiBjbSxcbiAgICAgICAgICAgICAgICAgICB0cmFpbGluZ1NwYWNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICBzcGxpdFNwYWNlczogY20uZ2V0T3B0aW9uKFwibGluZVdyYXBwaW5nXCIpfTtcbiAgICBsaW5lVmlldy5tZWFzdXJlID0ge307XG5cbiAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIGxvZ2ljYWwgbGluZXMgdGhhdCBtYWtlIHVwIHRoaXMgdmlzdWFsIGxpbmUuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gKGxpbmVWaWV3LnJlc3QgPyBsaW5lVmlldy5yZXN0Lmxlbmd0aCA6IDApOyBpKyspIHtcbiAgICAgIHZhciBsaW5lID0gaSA/IGxpbmVWaWV3LnJlc3RbaSAtIDFdIDogbGluZVZpZXcubGluZSwgb3JkZXIgPSAodm9pZCAwKTtcbiAgICAgIGJ1aWxkZXIucG9zID0gMDtcbiAgICAgIGJ1aWxkZXIuYWRkVG9rZW4gPSBidWlsZFRva2VuO1xuICAgICAgLy8gT3B0aW9uYWxseSB3aXJlIGluIHNvbWUgaGFja3MgaW50byB0aGUgdG9rZW4tcmVuZGVyaW5nXG4gICAgICAvLyBhbGdvcml0aG0sIHRvIGRlYWwgd2l0aCBicm93c2VyIHF1aXJrcy5cbiAgICAgIGlmIChoYXNCYWRCaWRpUmVjdHMoY20uZGlzcGxheS5tZWFzdXJlKSAmJiAob3JkZXIgPSBnZXRPcmRlcihsaW5lLCBjbS5kb2MuZGlyZWN0aW9uKSkpXG4gICAgICAgIHsgYnVpbGRlci5hZGRUb2tlbiA9IGJ1aWxkVG9rZW5CYWRCaWRpKGJ1aWxkZXIuYWRkVG9rZW4sIG9yZGVyKTsgfVxuICAgICAgYnVpbGRlci5tYXAgPSBbXTtcbiAgICAgIHZhciBhbGxvd0Zyb250aWVyVXBkYXRlID0gbGluZVZpZXcgIT0gY20uZGlzcGxheS5leHRlcm5hbE1lYXN1cmVkICYmIGxpbmVObyhsaW5lKTtcbiAgICAgIGluc2VydExpbmVDb250ZW50KGxpbmUsIGJ1aWxkZXIsIGdldExpbmVTdHlsZXMoY20sIGxpbmUsIGFsbG93RnJvbnRpZXJVcGRhdGUpKTtcbiAgICAgIGlmIChsaW5lLnN0eWxlQ2xhc3Nlcykge1xuICAgICAgICBpZiAobGluZS5zdHlsZUNsYXNzZXMuYmdDbGFzcylcbiAgICAgICAgICB7IGJ1aWxkZXIuYmdDbGFzcyA9IGpvaW5DbGFzc2VzKGxpbmUuc3R5bGVDbGFzc2VzLmJnQ2xhc3MsIGJ1aWxkZXIuYmdDbGFzcyB8fCBcIlwiKTsgfVxuICAgICAgICBpZiAobGluZS5zdHlsZUNsYXNzZXMudGV4dENsYXNzKVxuICAgICAgICAgIHsgYnVpbGRlci50ZXh0Q2xhc3MgPSBqb2luQ2xhc3NlcyhsaW5lLnN0eWxlQ2xhc3Nlcy50ZXh0Q2xhc3MsIGJ1aWxkZXIudGV4dENsYXNzIHx8IFwiXCIpOyB9XG4gICAgICB9XG5cbiAgICAgIC8vIEVuc3VyZSBhdCBsZWFzdCBhIHNpbmdsZSBub2RlIGlzIHByZXNlbnQsIGZvciBtZWFzdXJpbmcuXG4gICAgICBpZiAoYnVpbGRlci5tYXAubGVuZ3RoID09IDApXG4gICAgICAgIHsgYnVpbGRlci5tYXAucHVzaCgwLCAwLCBidWlsZGVyLmNvbnRlbnQuYXBwZW5kQ2hpbGQoemVyb1dpZHRoRWxlbWVudChjbS5kaXNwbGF5Lm1lYXN1cmUpKSk7IH1cblxuICAgICAgLy8gU3RvcmUgdGhlIG1hcCBhbmQgYSBjYWNoZSBvYmplY3QgZm9yIHRoZSBjdXJyZW50IGxvZ2ljYWwgbGluZVxuICAgICAgaWYgKGkgPT0gMCkge1xuICAgICAgICBsaW5lVmlldy5tZWFzdXJlLm1hcCA9IGJ1aWxkZXIubWFwO1xuICAgICAgICBsaW5lVmlldy5tZWFzdXJlLmNhY2hlID0ge307XG4gICAgICB9IGVsc2Uge1xuICAobGluZVZpZXcubWVhc3VyZS5tYXBzIHx8IChsaW5lVmlldy5tZWFzdXJlLm1hcHMgPSBbXSkpLnB1c2goYnVpbGRlci5tYXApXG4gICAgICAgIDsobGluZVZpZXcubWVhc3VyZS5jYWNoZXMgfHwgKGxpbmVWaWV3Lm1lYXN1cmUuY2FjaGVzID0gW10pKS5wdXNoKHt9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZWUgaXNzdWUgIzI5MDFcbiAgICBpZiAod2Via2l0KSB7XG4gICAgICB2YXIgbGFzdCA9IGJ1aWxkZXIuY29udGVudC5sYXN0Q2hpbGQ7XG4gICAgICBpZiAoL1xcYmNtLXRhYlxcYi8udGVzdChsYXN0LmNsYXNzTmFtZSkgfHwgKGxhc3QucXVlcnlTZWxlY3RvciAmJiBsYXN0LnF1ZXJ5U2VsZWN0b3IoXCIuY20tdGFiXCIpKSlcbiAgICAgICAgeyBidWlsZGVyLmNvbnRlbnQuY2xhc3NOYW1lID0gXCJjbS10YWItd3JhcC1oYWNrXCI7IH1cbiAgICB9XG5cbiAgICBzaWduYWwoY20sIFwicmVuZGVyTGluZVwiLCBjbSwgbGluZVZpZXcubGluZSwgYnVpbGRlci5wcmUpO1xuICAgIGlmIChidWlsZGVyLnByZS5jbGFzc05hbWUpXG4gICAgICB7IGJ1aWxkZXIudGV4dENsYXNzID0gam9pbkNsYXNzZXMoYnVpbGRlci5wcmUuY2xhc3NOYW1lLCBidWlsZGVyLnRleHRDbGFzcyB8fCBcIlwiKTsgfVxuXG4gICAgcmV0dXJuIGJ1aWxkZXJcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlZmF1bHRTcGVjaWFsQ2hhclBsYWNlaG9sZGVyKGNoKSB7XG4gICAgdmFyIHRva2VuID0gZWx0KFwic3BhblwiLCBcIlxcdTIwMjJcIiwgXCJjbS1pbnZhbGlkY2hhclwiKTtcbiAgICB0b2tlbi50aXRsZSA9IFwiXFxcXHVcIiArIGNoLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpO1xuICAgIHRva2VuLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIiwgdG9rZW4udGl0bGUpO1xuICAgIHJldHVybiB0b2tlblxuICB9XG5cbiAgLy8gQnVpbGQgdXAgdGhlIERPTSByZXByZXNlbnRhdGlvbiBmb3IgYSBzaW5nbGUgdG9rZW4sIGFuZCBhZGQgaXQgdG9cbiAgLy8gdGhlIGxpbmUgbWFwLiBUYWtlcyBjYXJlIHRvIHJlbmRlciBzcGVjaWFsIGNoYXJhY3RlcnMgc2VwYXJhdGVseS5cbiAgZnVuY3Rpb24gYnVpbGRUb2tlbihidWlsZGVyLCB0ZXh0LCBzdHlsZSwgc3RhcnRTdHlsZSwgZW5kU3R5bGUsIGNzcywgYXR0cmlidXRlcykge1xuICAgIGlmICghdGV4dCkgeyByZXR1cm4gfVxuICAgIHZhciBkaXNwbGF5VGV4dCA9IGJ1aWxkZXIuc3BsaXRTcGFjZXMgPyBzcGxpdFNwYWNlcyh0ZXh0LCBidWlsZGVyLnRyYWlsaW5nU3BhY2UpIDogdGV4dDtcbiAgICB2YXIgc3BlY2lhbCA9IGJ1aWxkZXIuY20uc3RhdGUuc3BlY2lhbENoYXJzLCBtdXN0V3JhcCA9IGZhbHNlO1xuICAgIHZhciBjb250ZW50O1xuICAgIGlmICghc3BlY2lhbC50ZXN0KHRleHQpKSB7XG4gICAgICBidWlsZGVyLmNvbCArPSB0ZXh0Lmxlbmd0aDtcbiAgICAgIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShkaXNwbGF5VGV4dCk7XG4gICAgICBidWlsZGVyLm1hcC5wdXNoKGJ1aWxkZXIucG9zLCBidWlsZGVyLnBvcyArIHRleHQubGVuZ3RoLCBjb250ZW50KTtcbiAgICAgIGlmIChpZSAmJiBpZV92ZXJzaW9uIDwgOSkgeyBtdXN0V3JhcCA9IHRydWU7IH1cbiAgICAgIGJ1aWxkZXIucG9zICs9IHRleHQubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgICAgdmFyIHBvcyA9IDA7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBzcGVjaWFsLmxhc3RJbmRleCA9IHBvcztcbiAgICAgICAgdmFyIG0gPSBzcGVjaWFsLmV4ZWModGV4dCk7XG4gICAgICAgIHZhciBza2lwcGVkID0gbSA/IG0uaW5kZXggLSBwb3MgOiB0ZXh0Lmxlbmd0aCAtIHBvcztcbiAgICAgICAgaWYgKHNraXBwZWQpIHtcbiAgICAgICAgICB2YXIgdHh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZGlzcGxheVRleHQuc2xpY2UocG9zLCBwb3MgKyBza2lwcGVkKSk7XG4gICAgICAgICAgaWYgKGllICYmIGllX3ZlcnNpb24gPCA5KSB7IGNvbnRlbnQuYXBwZW5kQ2hpbGQoZWx0KFwic3BhblwiLCBbdHh0XSkpOyB9XG4gICAgICAgICAgZWxzZSB7IGNvbnRlbnQuYXBwZW5kQ2hpbGQodHh0KTsgfVxuICAgICAgICAgIGJ1aWxkZXIubWFwLnB1c2goYnVpbGRlci5wb3MsIGJ1aWxkZXIucG9zICsgc2tpcHBlZCwgdHh0KTtcbiAgICAgICAgICBidWlsZGVyLmNvbCArPSBza2lwcGVkO1xuICAgICAgICAgIGJ1aWxkZXIucG9zICs9IHNraXBwZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtKSB7IGJyZWFrIH1cbiAgICAgICAgcG9zICs9IHNraXBwZWQgKyAxO1xuICAgICAgICB2YXIgdHh0JDEgPSAodm9pZCAwKTtcbiAgICAgICAgaWYgKG1bMF0gPT0gXCJcXHRcIikge1xuICAgICAgICAgIHZhciB0YWJTaXplID0gYnVpbGRlci5jbS5vcHRpb25zLnRhYlNpemUsIHRhYldpZHRoID0gdGFiU2l6ZSAtIGJ1aWxkZXIuY29sICUgdGFiU2l6ZTtcbiAgICAgICAgICB0eHQkMSA9IGNvbnRlbnQuYXBwZW5kQ2hpbGQoZWx0KFwic3BhblwiLCBzcGFjZVN0cih0YWJXaWR0aCksIFwiY20tdGFiXCIpKTtcbiAgICAgICAgICB0eHQkMS5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsIFwicHJlc2VudGF0aW9uXCIpO1xuICAgICAgICAgIHR4dCQxLnNldEF0dHJpYnV0ZShcImNtLXRleHRcIiwgXCJcXHRcIik7XG4gICAgICAgICAgYnVpbGRlci5jb2wgKz0gdGFiV2lkdGg7XG4gICAgICAgIH0gZWxzZSBpZiAobVswXSA9PSBcIlxcclwiIHx8IG1bMF0gPT0gXCJcXG5cIikge1xuICAgICAgICAgIHR4dCQxID0gY29udGVudC5hcHBlbmRDaGlsZChlbHQoXCJzcGFuXCIsIG1bMF0gPT0gXCJcXHJcIiA/IFwiXFx1MjQwZFwiIDogXCJcXHUyNDI0XCIsIFwiY20taW52YWxpZGNoYXJcIikpO1xuICAgICAgICAgIHR4dCQxLnNldEF0dHJpYnV0ZShcImNtLXRleHRcIiwgbVswXSk7XG4gICAgICAgICAgYnVpbGRlci5jb2wgKz0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0eHQkMSA9IGJ1aWxkZXIuY20ub3B0aW9ucy5zcGVjaWFsQ2hhclBsYWNlaG9sZGVyKG1bMF0pO1xuICAgICAgICAgIHR4dCQxLnNldEF0dHJpYnV0ZShcImNtLXRleHRcIiwgbVswXSk7XG4gICAgICAgICAgaWYgKGllICYmIGllX3ZlcnNpb24gPCA5KSB7IGNvbnRlbnQuYXBwZW5kQ2hpbGQoZWx0KFwic3BhblwiLCBbdHh0JDFdKSk7IH1cbiAgICAgICAgICBlbHNlIHsgY29udGVudC5hcHBlbmRDaGlsZCh0eHQkMSk7IH1cbiAgICAgICAgICBidWlsZGVyLmNvbCArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGJ1aWxkZXIubWFwLnB1c2goYnVpbGRlci5wb3MsIGJ1aWxkZXIucG9zICsgMSwgdHh0JDEpO1xuICAgICAgICBidWlsZGVyLnBvcysrO1xuICAgICAgfVxuICAgIH1cbiAgICBidWlsZGVyLnRyYWlsaW5nU3BhY2UgPSBkaXNwbGF5VGV4dC5jaGFyQ29kZUF0KHRleHQubGVuZ3RoIC0gMSkgPT0gMzI7XG4gICAgaWYgKHN0eWxlIHx8IHN0YXJ0U3R5bGUgfHwgZW5kU3R5bGUgfHwgbXVzdFdyYXAgfHwgY3NzKSB7XG4gICAgICB2YXIgZnVsbFN0eWxlID0gc3R5bGUgfHwgXCJcIjtcbiAgICAgIGlmIChzdGFydFN0eWxlKSB7IGZ1bGxTdHlsZSArPSBzdGFydFN0eWxlOyB9XG4gICAgICBpZiAoZW5kU3R5bGUpIHsgZnVsbFN0eWxlICs9IGVuZFN0eWxlOyB9XG4gICAgICB2YXIgdG9rZW4gPSBlbHQoXCJzcGFuXCIsIFtjb250ZW50XSwgZnVsbFN0eWxlLCBjc3MpO1xuICAgICAgaWYgKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgZm9yICh2YXIgYXR0ciBpbiBhdHRyaWJ1dGVzKSB7IGlmIChhdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KGF0dHIpICYmIGF0dHIgIT0gXCJzdHlsZVwiICYmIGF0dHIgIT0gXCJjbGFzc1wiKVxuICAgICAgICAgIHsgdG9rZW4uc2V0QXR0cmlidXRlKGF0dHIsIGF0dHJpYnV0ZXNbYXR0cl0pOyB9IH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBidWlsZGVyLmNvbnRlbnQuYXBwZW5kQ2hpbGQodG9rZW4pXG4gICAgfVxuICAgIGJ1aWxkZXIuY29udGVudC5hcHBlbmRDaGlsZChjb250ZW50KTtcbiAgfVxuXG4gIC8vIENoYW5nZSBzb21lIHNwYWNlcyB0byBOQlNQIHRvIHByZXZlbnQgdGhlIGJyb3dzZXIgZnJvbSBjb2xsYXBzaW5nXG4gIC8vIHRyYWlsaW5nIHNwYWNlcyBhdCB0aGUgZW5kIG9mIGEgbGluZSB3aGVuIHJlbmRlcmluZyB0ZXh0IChpc3N1ZSAjMTM2MikuXG4gIGZ1bmN0aW9uIHNwbGl0U3BhY2VzKHRleHQsIHRyYWlsaW5nQmVmb3JlKSB7XG4gICAgaWYgKHRleHQubGVuZ3RoID4gMSAmJiAhLyAgLy50ZXN0KHRleHQpKSB7IHJldHVybiB0ZXh0IH1cbiAgICB2YXIgc3BhY2VCZWZvcmUgPSB0cmFpbGluZ0JlZm9yZSwgcmVzdWx0ID0gXCJcIjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjaCA9IHRleHQuY2hhckF0KGkpO1xuICAgICAgaWYgKGNoID09IFwiIFwiICYmIHNwYWNlQmVmb3JlICYmIChpID09IHRleHQubGVuZ3RoIC0gMSB8fCB0ZXh0LmNoYXJDb2RlQXQoaSArIDEpID09IDMyKSlcbiAgICAgICAgeyBjaCA9IFwiXFx1MDBhMFwiOyB9XG4gICAgICByZXN1bHQgKz0gY2g7XG4gICAgICBzcGFjZUJlZm9yZSA9IGNoID09IFwiIFwiO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvLyBXb3JrIGFyb3VuZCBub25zZW5zZSBkaW1lbnNpb25zIGJlaW5nIHJlcG9ydGVkIGZvciBzdHJldGNoZXMgb2ZcbiAgLy8gcmlnaHQtdG8tbGVmdCB0ZXh0LlxuICBmdW5jdGlvbiBidWlsZFRva2VuQmFkQmlkaShpbm5lciwgb3JkZXIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGJ1aWxkZXIsIHRleHQsIHN0eWxlLCBzdGFydFN0eWxlLCBlbmRTdHlsZSwgY3NzLCBhdHRyaWJ1dGVzKSB7XG4gICAgICBzdHlsZSA9IHN0eWxlID8gc3R5bGUgKyBcIiBjbS1mb3JjZS1ib3JkZXJcIiA6IFwiY20tZm9yY2UtYm9yZGVyXCI7XG4gICAgICB2YXIgc3RhcnQgPSBidWlsZGVyLnBvcywgZW5kID0gc3RhcnQgKyB0ZXh0Lmxlbmd0aDtcbiAgICAgIGZvciAoOzspIHtcbiAgICAgICAgLy8gRmluZCB0aGUgcGFydCB0aGF0IG92ZXJsYXBzIHdpdGggdGhlIHN0YXJ0IG9mIHRoaXMgdGV4dFxuICAgICAgICB2YXIgcGFydCA9ICh2b2lkIDApO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9yZGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgcGFydCA9IG9yZGVyW2ldO1xuICAgICAgICAgIGlmIChwYXJ0LnRvID4gc3RhcnQgJiYgcGFydC5mcm9tIDw9IHN0YXJ0KSB7IGJyZWFrIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGFydC50byA+PSBlbmQpIHsgcmV0dXJuIGlubmVyKGJ1aWxkZXIsIHRleHQsIHN0eWxlLCBzdGFydFN0eWxlLCBlbmRTdHlsZSwgY3NzLCBhdHRyaWJ1dGVzKSB9XG4gICAgICAgIGlubmVyKGJ1aWxkZXIsIHRleHQuc2xpY2UoMCwgcGFydC50byAtIHN0YXJ0KSwgc3R5bGUsIHN0YXJ0U3R5bGUsIG51bGwsIGNzcywgYXR0cmlidXRlcyk7XG4gICAgICAgIHN0YXJ0U3R5bGUgPSBudWxsO1xuICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZShwYXJ0LnRvIC0gc3RhcnQpO1xuICAgICAgICBzdGFydCA9IHBhcnQudG87XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRDb2xsYXBzZWRTcGFuKGJ1aWxkZXIsIHNpemUsIG1hcmtlciwgaWdub3JlV2lkZ2V0KSB7XG4gICAgdmFyIHdpZGdldCA9ICFpZ25vcmVXaWRnZXQgJiYgbWFya2VyLndpZGdldE5vZGU7XG4gICAgaWYgKHdpZGdldCkgeyBidWlsZGVyLm1hcC5wdXNoKGJ1aWxkZXIucG9zLCBidWlsZGVyLnBvcyArIHNpemUsIHdpZGdldCk7IH1cbiAgICBpZiAoIWlnbm9yZVdpZGdldCAmJiBidWlsZGVyLmNtLmRpc3BsYXkuaW5wdXQubmVlZHNDb250ZW50QXR0cmlidXRlKSB7XG4gICAgICBpZiAoIXdpZGdldClcbiAgICAgICAgeyB3aWRnZXQgPSBidWlsZGVyLmNvbnRlbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIikpOyB9XG4gICAgICB3aWRnZXQuc2V0QXR0cmlidXRlKFwiY20tbWFya2VyXCIsIG1hcmtlci5pZCk7XG4gICAgfVxuICAgIGlmICh3aWRnZXQpIHtcbiAgICAgIGJ1aWxkZXIuY20uZGlzcGxheS5pbnB1dC5zZXRVbmVkaXRhYmxlKHdpZGdldCk7XG4gICAgICBidWlsZGVyLmNvbnRlbnQuYXBwZW5kQ2hpbGQod2lkZ2V0KTtcbiAgICB9XG4gICAgYnVpbGRlci5wb3MgKz0gc2l6ZTtcbiAgICBidWlsZGVyLnRyYWlsaW5nU3BhY2UgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIE91dHB1dHMgYSBudW1iZXIgb2Ygc3BhbnMgdG8gbWFrZSB1cCBhIGxpbmUsIHRha2luZyBoaWdobGlnaHRpbmdcbiAgLy8gYW5kIG1hcmtlZCB0ZXh0IGludG8gYWNjb3VudC5cbiAgZnVuY3Rpb24gaW5zZXJ0TGluZUNvbnRlbnQobGluZSwgYnVpbGRlciwgc3R5bGVzKSB7XG4gICAgdmFyIHNwYW5zID0gbGluZS5tYXJrZWRTcGFucywgYWxsVGV4dCA9IGxpbmUudGV4dCwgYXQgPSAwO1xuICAgIGlmICghc3BhbnMpIHtcbiAgICAgIGZvciAodmFyIGkkMSA9IDE7IGkkMSA8IHN0eWxlcy5sZW5ndGg7IGkkMSs9MilcbiAgICAgICAgeyBidWlsZGVyLmFkZFRva2VuKGJ1aWxkZXIsIGFsbFRleHQuc2xpY2UoYXQsIGF0ID0gc3R5bGVzW2kkMV0pLCBpbnRlcnByZXRUb2tlblN0eWxlKHN0eWxlc1tpJDErMV0sIGJ1aWxkZXIuY20ub3B0aW9ucykpOyB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgbGVuID0gYWxsVGV4dC5sZW5ndGgsIHBvcyA9IDAsIGkgPSAxLCB0ZXh0ID0gXCJcIiwgc3R5bGUsIGNzcztcbiAgICB2YXIgbmV4dENoYW5nZSA9IDAsIHNwYW5TdHlsZSwgc3BhbkVuZFN0eWxlLCBzcGFuU3RhcnRTdHlsZSwgY29sbGFwc2VkLCBhdHRyaWJ1dGVzO1xuICAgIGZvciAoOzspIHtcbiAgICAgIGlmIChuZXh0Q2hhbmdlID09IHBvcykgeyAvLyBVcGRhdGUgY3VycmVudCBtYXJrZXIgc2V0XG4gICAgICAgIHNwYW5TdHlsZSA9IHNwYW5FbmRTdHlsZSA9IHNwYW5TdGFydFN0eWxlID0gY3NzID0gXCJcIjtcbiAgICAgICAgYXR0cmlidXRlcyA9IG51bGw7XG4gICAgICAgIGNvbGxhcHNlZCA9IG51bGw7IG5leHRDaGFuZ2UgPSBJbmZpbml0eTtcbiAgICAgICAgdmFyIGZvdW5kQm9va21hcmtzID0gW10sIGVuZFN0eWxlcyA9ICh2b2lkIDApO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNwYW5zLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgdmFyIHNwID0gc3BhbnNbal0sIG0gPSBzcC5tYXJrZXI7XG4gICAgICAgICAgaWYgKG0udHlwZSA9PSBcImJvb2ttYXJrXCIgJiYgc3AuZnJvbSA9PSBwb3MgJiYgbS53aWRnZXROb2RlKSB7XG4gICAgICAgICAgICBmb3VuZEJvb2ttYXJrcy5wdXNoKG0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3AuZnJvbSA8PSBwb3MgJiYgKHNwLnRvID09IG51bGwgfHwgc3AudG8gPiBwb3MgfHwgbS5jb2xsYXBzZWQgJiYgc3AudG8gPT0gcG9zICYmIHNwLmZyb20gPT0gcG9zKSkge1xuICAgICAgICAgICAgaWYgKHNwLnRvICE9IG51bGwgJiYgc3AudG8gIT0gcG9zICYmIG5leHRDaGFuZ2UgPiBzcC50bykge1xuICAgICAgICAgICAgICBuZXh0Q2hhbmdlID0gc3AudG87XG4gICAgICAgICAgICAgIHNwYW5FbmRTdHlsZSA9IFwiXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobS5jbGFzc05hbWUpIHsgc3BhblN0eWxlICs9IFwiIFwiICsgbS5jbGFzc05hbWU7IH1cbiAgICAgICAgICAgIGlmIChtLmNzcykgeyBjc3MgPSAoY3NzID8gY3NzICsgXCI7XCIgOiBcIlwiKSArIG0uY3NzOyB9XG4gICAgICAgICAgICBpZiAobS5zdGFydFN0eWxlICYmIHNwLmZyb20gPT0gcG9zKSB7IHNwYW5TdGFydFN0eWxlICs9IFwiIFwiICsgbS5zdGFydFN0eWxlOyB9XG4gICAgICAgICAgICBpZiAobS5lbmRTdHlsZSAmJiBzcC50byA9PSBuZXh0Q2hhbmdlKSB7IChlbmRTdHlsZXMgfHwgKGVuZFN0eWxlcyA9IFtdKSkucHVzaChtLmVuZFN0eWxlLCBzcC50byk7IH1cbiAgICAgICAgICAgIC8vIHN1cHBvcnQgZm9yIHRoZSBvbGQgdGl0bGUgcHJvcGVydHlcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2RlbWlycm9yL0NvZGVNaXJyb3IvcHVsbC81NjczXG4gICAgICAgICAgICBpZiAobS50aXRsZSkgeyAoYXR0cmlidXRlcyB8fCAoYXR0cmlidXRlcyA9IHt9KSkudGl0bGUgPSBtLnRpdGxlOyB9XG4gICAgICAgICAgICBpZiAobS5hdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICAgIGZvciAodmFyIGF0dHIgaW4gbS5hdHRyaWJ1dGVzKVxuICAgICAgICAgICAgICAgIHsgKGF0dHJpYnV0ZXMgfHwgKGF0dHJpYnV0ZXMgPSB7fSkpW2F0dHJdID0gbS5hdHRyaWJ1dGVzW2F0dHJdOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobS5jb2xsYXBzZWQgJiYgKCFjb2xsYXBzZWQgfHwgY29tcGFyZUNvbGxhcHNlZE1hcmtlcnMoY29sbGFwc2VkLm1hcmtlciwgbSkgPCAwKSlcbiAgICAgICAgICAgICAgeyBjb2xsYXBzZWQgPSBzcDsgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoc3AuZnJvbSA+IHBvcyAmJiBuZXh0Q2hhbmdlID4gc3AuZnJvbSkge1xuICAgICAgICAgICAgbmV4dENoYW5nZSA9IHNwLmZyb207XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRTdHlsZXMpIHsgZm9yICh2YXIgaiQxID0gMDsgaiQxIDwgZW5kU3R5bGVzLmxlbmd0aDsgaiQxICs9IDIpXG4gICAgICAgICAgeyBpZiAoZW5kU3R5bGVzW2okMSArIDFdID09IG5leHRDaGFuZ2UpIHsgc3BhbkVuZFN0eWxlICs9IFwiIFwiICsgZW5kU3R5bGVzW2okMV07IH0gfSB9XG5cbiAgICAgICAgaWYgKCFjb2xsYXBzZWQgfHwgY29sbGFwc2VkLmZyb20gPT0gcG9zKSB7IGZvciAodmFyIGokMiA9IDA7IGokMiA8IGZvdW5kQm9va21hcmtzLmxlbmd0aDsgKytqJDIpXG4gICAgICAgICAgeyBidWlsZENvbGxhcHNlZFNwYW4oYnVpbGRlciwgMCwgZm91bmRCb29rbWFya3NbaiQyXSk7IH0gfVxuICAgICAgICBpZiAoY29sbGFwc2VkICYmIChjb2xsYXBzZWQuZnJvbSB8fCAwKSA9PSBwb3MpIHtcbiAgICAgICAgICBidWlsZENvbGxhcHNlZFNwYW4oYnVpbGRlciwgKGNvbGxhcHNlZC50byA9PSBudWxsID8gbGVuICsgMSA6IGNvbGxhcHNlZC50bykgLSBwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZC5tYXJrZXIsIGNvbGxhcHNlZC5mcm9tID09IG51bGwpO1xuICAgICAgICAgIGlmIChjb2xsYXBzZWQudG8gPT0gbnVsbCkgeyByZXR1cm4gfVxuICAgICAgICAgIGlmIChjb2xsYXBzZWQudG8gPT0gcG9zKSB7IGNvbGxhcHNlZCA9IGZhbHNlOyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChwb3MgPj0gbGVuKSB7IGJyZWFrIH1cblxuICAgICAgdmFyIHVwdG8gPSBNYXRoLm1pbihsZW4sIG5leHRDaGFuZ2UpO1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgICB2YXIgZW5kID0gcG9zICsgdGV4dC5sZW5ndGg7XG4gICAgICAgICAgaWYgKCFjb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHZhciB0b2tlblRleHQgPSBlbmQgPiB1cHRvID8gdGV4dC5zbGljZSgwLCB1cHRvIC0gcG9zKSA6IHRleHQ7XG4gICAgICAgICAgICBidWlsZGVyLmFkZFRva2VuKGJ1aWxkZXIsIHRva2VuVGV4dCwgc3R5bGUgPyBzdHlsZSArIHNwYW5TdHlsZSA6IHNwYW5TdHlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhblN0YXJ0U3R5bGUsIHBvcyArIHRva2VuVGV4dC5sZW5ndGggPT0gbmV4dENoYW5nZSA/IHNwYW5FbmRTdHlsZSA6IFwiXCIsIGNzcywgYXR0cmlidXRlcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbmQgPj0gdXB0bykge3RleHQgPSB0ZXh0LnNsaWNlKHVwdG8gLSBwb3MpOyBwb3MgPSB1cHRvOyBicmVha31cbiAgICAgICAgICBwb3MgPSBlbmQ7XG4gICAgICAgICAgc3BhblN0YXJ0U3R5bGUgPSBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIHRleHQgPSBhbGxUZXh0LnNsaWNlKGF0LCBhdCA9IHN0eWxlc1tpKytdKTtcbiAgICAgICAgc3R5bGUgPSBpbnRlcnByZXRUb2tlblN0eWxlKHN0eWxlc1tpKytdLCBidWlsZGVyLmNtLm9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgLy8gVGhlc2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgdGhlIHZpc2libGUgKGN1cnJlbnRseSBkcmF3bilcbiAgLy8gcGFydCBvZiB0aGUgZG9jdW1lbnQuIEEgTGluZVZpZXcgbWF5IGNvcnJlc3BvbmQgdG8gbXVsdGlwbGVcbiAgLy8gbG9naWNhbCBsaW5lcywgaWYgdGhvc2UgYXJlIGNvbm5lY3RlZCBieSBjb2xsYXBzZWQgcmFuZ2VzLlxuICBmdW5jdGlvbiBMaW5lVmlldyhkb2MsIGxpbmUsIGxpbmVOKSB7XG4gICAgLy8gVGhlIHN0YXJ0aW5nIGxpbmVcbiAgICB0aGlzLmxpbmUgPSBsaW5lO1xuICAgIC8vIENvbnRpbnVpbmcgbGluZXMsIGlmIGFueVxuICAgIHRoaXMucmVzdCA9IHZpc3VhbExpbmVDb250aW51ZWQobGluZSk7XG4gICAgLy8gTnVtYmVyIG9mIGxvZ2ljYWwgbGluZXMgaW4gdGhpcyB2aXN1YWwgbGluZVxuICAgIHRoaXMuc2l6ZSA9IHRoaXMucmVzdCA/IGxpbmVObyhsc3QodGhpcy5yZXN0KSkgLSBsaW5lTiArIDEgOiAxO1xuICAgIHRoaXMubm9kZSA9IHRoaXMudGV4dCA9IG51bGw7XG4gICAgdGhpcy5oaWRkZW4gPSBsaW5lSXNIaWRkZW4oZG9jLCBsaW5lKTtcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIHJhbmdlIG9mIExpbmVWaWV3IG9iamVjdHMgZm9yIHRoZSBnaXZlbiBsaW5lcy5cbiAgZnVuY3Rpb24gYnVpbGRWaWV3QXJyYXkoY20sIGZyb20sIHRvKSB7XG4gICAgdmFyIGFycmF5ID0gW10sIG5leHRQb3M7XG4gICAgZm9yICh2YXIgcG9zID0gZnJvbTsgcG9zIDwgdG87IHBvcyA9IG5leHRQb3MpIHtcbiAgICAgIHZhciB2aWV3ID0gbmV3IExpbmVWaWV3KGNtLmRvYywgZ2V0TGluZShjbS5kb2MsIHBvcyksIHBvcyk7XG4gICAgICBuZXh0UG9zID0gcG9zICsgdmlldy5zaXplO1xuICAgICAgYXJyYXkucHVzaCh2aWV3KTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5XG4gIH1cblxuICB2YXIgb3BlcmF0aW9uR3JvdXAgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIHB1c2hPcGVyYXRpb24ob3ApIHtcbiAgICBpZiAob3BlcmF0aW9uR3JvdXApIHtcbiAgICAgIG9wZXJhdGlvbkdyb3VwLm9wcy5wdXNoKG9wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3Aub3duc0dyb3VwID0gb3BlcmF0aW9uR3JvdXAgPSB7XG4gICAgICAgIG9wczogW29wXSxcbiAgICAgICAgZGVsYXllZENhbGxiYWNrczogW11cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZmlyZUNhbGxiYWNrc0Zvck9wcyhncm91cCkge1xuICAgIC8vIENhbGxzIGRlbGF5ZWQgY2FsbGJhY2tzIGFuZCBjdXJzb3JBY3Rpdml0eSBoYW5kbGVycyB1bnRpbCBub1xuICAgIC8vIG5ldyBvbmVzIGFwcGVhclxuICAgIHZhciBjYWxsYmFja3MgPSBncm91cC5kZWxheWVkQ2FsbGJhY2tzLCBpID0gMDtcbiAgICBkbyB7XG4gICAgICBmb3IgKDsgaSA8IGNhbGxiYWNrcy5sZW5ndGg7IGkrKylcbiAgICAgICAgeyBjYWxsYmFja3NbaV0uY2FsbChudWxsKTsgfVxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBncm91cC5vcHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG9wID0gZ3JvdXAub3BzW2pdO1xuICAgICAgICBpZiAob3AuY3Vyc29yQWN0aXZpdHlIYW5kbGVycylcbiAgICAgICAgICB7IHdoaWxlIChvcC5jdXJzb3JBY3Rpdml0eUNhbGxlZCA8IG9wLmN1cnNvckFjdGl2aXR5SGFuZGxlcnMubGVuZ3RoKVxuICAgICAgICAgICAgeyBvcC5jdXJzb3JBY3Rpdml0eUhhbmRsZXJzW29wLmN1cnNvckFjdGl2aXR5Q2FsbGVkKytdLmNhbGwobnVsbCwgb3AuY20pOyB9IH1cbiAgICAgIH1cbiAgICB9IHdoaWxlIChpIDwgY2FsbGJhY2tzLmxlbmd0aClcbiAgfVxuXG4gIGZ1bmN0aW9uIGZpbmlzaE9wZXJhdGlvbihvcCwgZW5kQ2IpIHtcbiAgICB2YXIgZ3JvdXAgPSBvcC5vd25zR3JvdXA7XG4gICAgaWYgKCFncm91cCkgeyByZXR1cm4gfVxuXG4gICAgdHJ5IHsgZmlyZUNhbGxiYWNrc0Zvck9wcyhncm91cCk7IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIG9wZXJhdGlvbkdyb3VwID0gbnVsbDtcbiAgICAgIGVuZENiKGdyb3VwKTtcbiAgICB9XG4gIH1cblxuICB2YXIgb3JwaGFuRGVsYXllZENhbGxiYWNrcyA9IG51bGw7XG5cbiAgLy8gT2Z0ZW4sIHdlIHdhbnQgdG8gc2lnbmFsIGV2ZW50cyBhdCBhIHBvaW50IHdoZXJlIHdlIGFyZSBpbiB0aGVcbiAgLy8gbWlkZGxlIG9mIHNvbWUgd29yaywgYnV0IGRvbid0IHdhbnQgdGhlIGhhbmRsZXIgdG8gc3RhcnQgY2FsbGluZ1xuICAvLyBvdGhlciBtZXRob2RzIG9uIHRoZSBlZGl0b3IsIHdoaWNoIG1pZ2h0IGJlIGluIGFuIGluY29uc2lzdGVudFxuICAvLyBzdGF0ZSBvciBzaW1wbHkgbm90IGV4cGVjdCBhbnkgb3RoZXIgZXZlbnRzIHRvIGhhcHBlbi5cbiAgLy8gc2lnbmFsTGF0ZXIgbG9va3Mgd2hldGhlciB0aGVyZSBhcmUgYW55IGhhbmRsZXJzLCBhbmQgc2NoZWR1bGVzXG4gIC8vIHRoZW0gdG8gYmUgZXhlY3V0ZWQgd2hlbiB0aGUgbGFzdCBvcGVyYXRpb24gZW5kcywgb3IsIGlmIG5vXG4gIC8vIG9wZXJhdGlvbiBpcyBhY3RpdmUsIHdoZW4gYSB0aW1lb3V0IGZpcmVzLlxuICBmdW5jdGlvbiBzaWduYWxMYXRlcihlbWl0dGVyLCB0eXBlIC8qLCB2YWx1ZXMuLi4qLykge1xuICAgIHZhciBhcnIgPSBnZXRIYW5kbGVycyhlbWl0dGVyLCB0eXBlKTtcbiAgICBpZiAoIWFyci5sZW5ndGgpIHsgcmV0dXJuIH1cbiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMiksIGxpc3Q7XG4gICAgaWYgKG9wZXJhdGlvbkdyb3VwKSB7XG4gICAgICBsaXN0ID0gb3BlcmF0aW9uR3JvdXAuZGVsYXllZENhbGxiYWNrcztcbiAgICB9IGVsc2UgaWYgKG9ycGhhbkRlbGF5ZWRDYWxsYmFja3MpIHtcbiAgICAgIGxpc3QgPSBvcnBoYW5EZWxheWVkQ2FsbGJhY2tzO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaXN0ID0gb3JwaGFuRGVsYXllZENhbGxiYWNrcyA9IFtdO1xuICAgICAgc2V0VGltZW91dChmaXJlT3JwaGFuRGVsYXllZCwgMCk7XG4gICAgfVxuICAgIHZhciBsb29wID0gZnVuY3Rpb24gKCBpICkge1xuICAgICAgbGlzdC5wdXNoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFycltpXS5hcHBseShudWxsLCBhcmdzKTsgfSk7XG4gICAgfTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgKytpKVxuICAgICAgbG9vcCggaSApO1xuICB9XG5cbiAgZnVuY3Rpb24gZmlyZU9ycGhhbkRlbGF5ZWQoKSB7XG4gICAgdmFyIGRlbGF5ZWQgPSBvcnBoYW5EZWxheWVkQ2FsbGJhY2tzO1xuICAgIG9ycGhhbkRlbGF5ZWRDYWxsYmFja3MgPSBudWxsO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsYXllZC5sZW5ndGg7ICsraSkgeyBkZWxheWVkW2ldKCk7IH1cbiAgfVxuXG4gIC8vIFdoZW4gYW4gYXNwZWN0IG9mIGEgbGluZSBjaGFuZ2VzLCBhIHN0cmluZyBpcyBhZGRlZCB0b1xuICAvLyBsaW5lVmlldy5jaGFuZ2VzLiBUaGlzIHVwZGF0ZXMgdGhlIHJlbGV2YW50IHBhcnQgb2YgdGhlIGxpbmUnc1xuICAvLyBET00gc3RydWN0dXJlLlxuICBmdW5jdGlvbiB1cGRhdGVMaW5lRm9yQ2hhbmdlcyhjbSwgbGluZVZpZXcsIGxpbmVOLCBkaW1zKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBsaW5lVmlldy5jaGFuZ2VzLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgdHlwZSA9IGxpbmVWaWV3LmNoYW5nZXNbal07XG4gICAgICBpZiAodHlwZSA9PSBcInRleHRcIikgeyB1cGRhdGVMaW5lVGV4dChjbSwgbGluZVZpZXcpOyB9XG4gICAgICBlbHNlIGlmICh0eXBlID09IFwiZ3V0dGVyXCIpIHsgdXBkYXRlTGluZUd1dHRlcihjbSwgbGluZVZpZXcsIGxpbmVOLCBkaW1zKTsgfVxuICAgICAgZWxzZSBpZiAodHlwZSA9PSBcImNsYXNzXCIpIHsgdXBkYXRlTGluZUNsYXNzZXMoY20sIGxpbmVWaWV3KTsgfVxuICAgICAgZWxzZSBpZiAodHlwZSA9PSBcIndpZGdldFwiKSB7IHVwZGF0ZUxpbmVXaWRnZXRzKGNtLCBsaW5lVmlldywgZGltcyk7IH1cbiAgICB9XG4gICAgbGluZVZpZXcuY2hhbmdlcyA9IG51bGw7XG4gIH1cblxuICAvLyBMaW5lcyB3aXRoIGd1dHRlciBlbGVtZW50cywgd2lkZ2V0cyBvciBhIGJhY2tncm91bmQgY2xhc3MgbmVlZCB0b1xuICAvLyBiZSB3cmFwcGVkLCBhbmQgaGF2ZSB0aGUgZXh0cmEgZWxlbWVudHMgYWRkZWQgdG8gdGhlIHdyYXBwZXIgZGl2XG4gIGZ1bmN0aW9uIGVuc3VyZUxpbmVXcmFwcGVkKGxpbmVWaWV3KSB7XG4gICAgaWYgKGxpbmVWaWV3Lm5vZGUgPT0gbGluZVZpZXcudGV4dCkge1xuICAgICAgbGluZVZpZXcubm9kZSA9IGVsdChcImRpdlwiLCBudWxsLCBudWxsLCBcInBvc2l0aW9uOiByZWxhdGl2ZVwiKTtcbiAgICAgIGlmIChsaW5lVmlldy50ZXh0LnBhcmVudE5vZGUpXG4gICAgICAgIHsgbGluZVZpZXcudGV4dC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChsaW5lVmlldy5ub2RlLCBsaW5lVmlldy50ZXh0KTsgfVxuICAgICAgbGluZVZpZXcubm9kZS5hcHBlbmRDaGlsZChsaW5lVmlldy50ZXh0KTtcbiAgICAgIGlmIChpZSAmJiBpZV92ZXJzaW9uIDwgOCkgeyBsaW5lVmlldy5ub2RlLnN0eWxlLnpJbmRleCA9IDI7IH1cbiAgICB9XG4gICAgcmV0dXJuIGxpbmVWaWV3Lm5vZGVcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZUxpbmVCYWNrZ3JvdW5kKGNtLCBsaW5lVmlldykge1xuICAgIHZhciBjbHMgPSBsaW5lVmlldy5iZ0NsYXNzID8gbGluZVZpZXcuYmdDbGFzcyArIFwiIFwiICsgKGxpbmVWaWV3LmxpbmUuYmdDbGFzcyB8fCBcIlwiKSA6IGxpbmVWaWV3LmxpbmUuYmdDbGFzcztcbiAgICBpZiAoY2xzKSB7IGNscyArPSBcIiBDb2RlTWlycm9yLWxpbmViYWNrZ3JvdW5kXCI7IH1cbiAgICBpZiAobGluZVZpZXcuYmFja2dyb3VuZCkge1xuICAgICAgaWYgKGNscykgeyBsaW5lVmlldy5iYWNrZ3JvdW5kLmNsYXNzTmFtZSA9IGNsczsgfVxuICAgICAgZWxzZSB7IGxpbmVWaWV3LmJhY2tncm91bmQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChsaW5lVmlldy5iYWNrZ3JvdW5kKTsgbGluZVZpZXcuYmFja2dyb3VuZCA9IG51bGw7IH1cbiAgICB9IGVsc2UgaWYgKGNscykge1xuICAgICAgdmFyIHdyYXAgPSBlbnN1cmVMaW5lV3JhcHBlZChsaW5lVmlldyk7XG4gICAgICBsaW5lVmlldy5iYWNrZ3JvdW5kID0gd3JhcC5pbnNlcnRCZWZvcmUoZWx0KFwiZGl2XCIsIG51bGwsIGNscyksIHdyYXAuZmlyc3RDaGlsZCk7XG4gICAgICBjbS5kaXNwbGF5LmlucHV0LnNldFVuZWRpdGFibGUobGluZVZpZXcuYmFja2dyb3VuZCk7XG4gICAgfVxuICB9XG5cbiAgLy8gV3JhcHBlciBhcm91bmQgYnVpbGRMaW5lQ29udGVudCB3aGljaCB3aWxsIHJldXNlIHRoZSBzdHJ1Y3R1cmVcbiAgLy8gaW4gZGlzcGxheS5leHRlcm5hbE1lYXN1cmVkIHdoZW4gcG9zc2libGUuXG4gIGZ1bmN0aW9uIGdldExpbmVDb250ZW50KGNtLCBsaW5lVmlldykge1xuICAgIHZhciBleHQgPSBjbS5kaXNwbGF5LmV4dGVybmFsTWVhc3VyZWQ7XG4gICAgaWYgKGV4dCAmJiBleHQubGluZSA9PSBsaW5lVmlldy5saW5lKSB7XG4gICAgICBjbS5kaXNwbGF5LmV4dGVybmFsTWVhc3VyZWQgPSBudWxsO1xuICAgICAgbGluZVZpZXcubWVhc3VyZSA9IGV4dC5tZWFzdXJlO1xuICAgICAgcmV0dXJuIGV4dC5idWlsdFxuICAgIH1cbiAgICByZXR1cm4gYnVpbGRMaW5lQ29udGVudChjbSwgbGluZVZpZXcpXG4gIH1cblxuICAvLyBSZWRyYXcgdGhlIGxpbmUncyB0ZXh0LiBJbnRlcmFjdHMgd2l0aCB0aGUgYmFja2dyb3VuZCBhbmQgdGV4dFxuICAvLyBjbGFzc2VzIGJlY2F1c2UgdGhlIG1vZGUgbWF5IG91dHB1dCB0b2tlbnMgdGhhdCBpbmZsdWVuY2UgdGhlc2VcbiAgLy8gY2xhc3Nlcy5cbiAgZnVuY3Rpb24gdXBkYXRlTGluZVRleHQoY20sIGxpbmVWaWV3KSB7XG4gICAgdmFyIGNscyA9IGxpbmVWaWV3LnRleHQuY2xhc3NOYW1lO1xuICAgIHZhciBidWlsdCA9IGdldExpbmVDb250ZW50KGNtLCBsaW5lVmlldyk7XG4gICAgaWYgKGxpbmVWaWV3LnRleHQgPT0gbGluZVZpZXcubm9kZSkgeyBsaW5lVmlldy5ub2RlID0gYnVpbHQucHJlOyB9XG4gICAgbGluZVZpZXcudGV4dC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChidWlsdC5wcmUsIGxpbmVWaWV3LnRleHQpO1xuICAgIGxpbmVWaWV3LnRleHQgPSBidWlsdC5wcmU7XG4gICAgaWYgKGJ1aWx0LmJnQ2xhc3MgIT0gbGluZVZpZXcuYmdDbGFzcyB8fCBidWlsdC50ZXh0Q2xhc3MgIT0gbGluZVZpZXcudGV4dENsYXNzKSB7XG4gICAgICBsaW5lVmlldy5iZ0NsYXNzID0gYnVpbHQuYmdDbGFzcztcbiAgICAgIGxpbmVWaWV3LnRleHRDbGFzcyA9IGJ1aWx0LnRleHRDbGFzcztcbiAgICAgIHVwZGF0ZUxpbmVDbGFzc2VzKGNtLCBsaW5lVmlldyk7XG4gICAgfSBlbHNlIGlmIChjbHMpIHtcbiAgICAgIGxpbmVWaWV3LnRleHQuY2xhc3NOYW1lID0gY2xzO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZUxpbmVDbGFzc2VzKGNtLCBsaW5lVmlldykge1xuICAgIHVwZGF0ZUxpbmVCYWNrZ3JvdW5kKGNtLCBsaW5lVmlldyk7XG4gICAgaWYgKGxpbmVWaWV3LmxpbmUud3JhcENsYXNzKVxuICAgICAgeyBlbnN1cmVMaW5lV3JhcHBlZChsaW5lVmlldykuY2xhc3NOYW1lID0gbGluZVZpZXcubGluZS53cmFwQ2xhc3M7IH1cbiAgICBlbHNlIGlmIChsaW5lVmlldy5ub2RlICE9IGxpbmVWaWV3LnRleHQpXG4gICAgICB7IGxpbmVWaWV3Lm5vZGUuY2xhc3NOYW1lID0gXCJcIjsgfVxuICAgIHZhciB0ZXh0Q2xhc3MgPSBsaW5lVmlldy50ZXh0Q2xhc3MgPyBsaW5lVmlldy50ZXh0Q2xhc3MgKyBcIiBcIiArIChsaW5lVmlldy5saW5lLnRleHRDbGFzcyB8fCBcIlwiKSA6IGxpbmVWaWV3LmxpbmUudGV4dENsYXNzO1xuICAgIGxpbmVWaWV3LnRleHQuY2xhc3NOYW1lID0gdGV4dENsYXNzIHx8IFwiXCI7XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVMaW5lR3V0dGVyKGNtLCBsaW5lVmlldywgbGluZU4sIGRpbXMpIHtcbiAgICBpZiAobGluZVZpZXcuZ3V0dGVyKSB7XG4gICAgICBsaW5lVmlldy5ub2RlLnJlbW92ZUNoaWxkKGxpbmVWaWV3Lmd1dHRlcik7XG4gICAgICBsaW5lVmlldy5ndXR0ZXIgPSBudWxsO1xuICAgIH1cbiAgICBpZiAobGluZVZpZXcuZ3V0dGVyQmFja2dyb3VuZCkge1xuICAgICAgbGluZVZpZXcubm9kZS5yZW1vdmVDaGlsZChsaW5lVmlldy5ndXR0ZXJCYWNrZ3JvdW5kKTtcbiAgICAgIGxpbmVWaWV3Lmd1dHRlckJhY2tncm91bmQgPSBudWxsO1xuICAgIH1cbiAgICBpZiAobGluZVZpZXcubGluZS5ndXR0ZXJDbGFzcykge1xuICAgICAgdmFyIHdyYXAgPSBlbnN1cmVMaW5lV3JhcHBlZChsaW5lVmlldyk7XG4gICAgICBsaW5lVmlldy5ndXR0ZXJCYWNrZ3JvdW5kID0gZWx0KFwiZGl2XCIsIG51bGwsIFwiQ29kZU1pcnJvci1ndXR0ZXItYmFja2dyb3VuZCBcIiArIGxpbmVWaWV3LmxpbmUuZ3V0dGVyQ2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcImxlZnQ6IFwiICsgKGNtLm9wdGlvbnMuZml4ZWRHdXR0ZXIgPyBkaW1zLmZpeGVkUG9zIDogLWRpbXMuZ3V0dGVyVG90YWxXaWR0aCkgKyBcInB4OyB3aWR0aDogXCIgKyAoZGltcy5ndXR0ZXJUb3RhbFdpZHRoKSArIFwicHhcIikpO1xuICAgICAgY20uZGlzcGxheS5pbnB1dC5zZXRVbmVkaXRhYmxlKGxpbmVWaWV3Lmd1dHRlckJhY2tncm91bmQpO1xuICAgICAgd3JhcC5pbnNlcnRCZWZvcmUobGluZVZpZXcuZ3V0dGVyQmFja2dyb3VuZCwgbGluZVZpZXcudGV4dCk7XG4gICAgfVxuICAgIHZhciBtYXJrZXJzID0gbGluZVZpZXcubGluZS5ndXR0ZXJNYXJrZXJzO1xuICAgIGlmIChjbS5vcHRpb25zLmxpbmVOdW1iZXJzIHx8IG1hcmtlcnMpIHtcbiAgICAgIHZhciB3cmFwJDEgPSBlbnN1cmVMaW5lV3JhcHBlZChsaW5lVmlldyk7XG4gICAgICB2YXIgZ3V0dGVyV3JhcCA9IGxpbmVWaWV3Lmd1dHRlciA9IGVsdChcImRpdlwiLCBudWxsLCBcIkNvZGVNaXJyb3ItZ3V0dGVyLXdyYXBwZXJcIiwgKFwibGVmdDogXCIgKyAoY20ub3B0aW9ucy5maXhlZEd1dHRlciA/IGRpbXMuZml4ZWRQb3MgOiAtZGltcy5ndXR0ZXJUb3RhbFdpZHRoKSArIFwicHhcIikpO1xuICAgICAgY20uZGlzcGxheS5pbnB1dC5zZXRVbmVkaXRhYmxlKGd1dHRlcldyYXApO1xuICAgICAgd3JhcCQxLmluc2VydEJlZm9yZShndXR0ZXJXcmFwLCBsaW5lVmlldy50ZXh0KTtcbiAgICAgIGlmIChsaW5lVmlldy5saW5lLmd1dHRlckNsYXNzKVxuICAgICAgICB7IGd1dHRlcldyYXAuY2xhc3NOYW1lICs9IFwiIFwiICsgbGluZVZpZXcubGluZS5ndXR0ZXJDbGFzczsgfVxuICAgICAgaWYgKGNtLm9wdGlvbnMubGluZU51bWJlcnMgJiYgKCFtYXJrZXJzIHx8ICFtYXJrZXJzW1wiQ29kZU1pcnJvci1saW5lbnVtYmVyc1wiXSkpXG4gICAgICAgIHsgbGluZVZpZXcubGluZU51bWJlciA9IGd1dHRlcldyYXAuYXBwZW5kQ2hpbGQoXG4gICAgICAgICAgZWx0KFwiZGl2XCIsIGxpbmVOdW1iZXJGb3IoY20ub3B0aW9ucywgbGluZU4pLFxuICAgICAgICAgICAgICBcIkNvZGVNaXJyb3ItbGluZW51bWJlciBDb2RlTWlycm9yLWd1dHRlci1lbHRcIixcbiAgICAgICAgICAgICAgKFwibGVmdDogXCIgKyAoZGltcy5ndXR0ZXJMZWZ0W1wiQ29kZU1pcnJvci1saW5lbnVtYmVyc1wiXSkgKyBcInB4OyB3aWR0aDogXCIgKyAoY20uZGlzcGxheS5saW5lTnVtSW5uZXJXaWR0aCkgKyBcInB4XCIpKSk7IH1cbiAgICAgIGlmIChtYXJrZXJzKSB7IGZvciAodmFyIGsgPSAwOyBrIDwgY20uZGlzcGxheS5ndXR0ZXJTcGVjcy5sZW5ndGg7ICsraykge1xuICAgICAgICB2YXIgaWQgPSBjbS5kaXNwbGF5Lmd1dHRlclNwZWNzW2tdLmNsYXNzTmFtZSwgZm91bmQgPSBtYXJrZXJzLmhhc093blByb3BlcnR5KGlkKSAmJiBtYXJrZXJzW2lkXTtcbiAgICAgICAgaWYgKGZvdW5kKVxuICAgICAgICAgIHsgZ3V0dGVyV3JhcC5hcHBlbmRDaGlsZChlbHQoXCJkaXZcIiwgW2ZvdW5kXSwgXCJDb2RlTWlycm9yLWd1dHRlci1lbHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXCJsZWZ0OiBcIiArIChkaW1zLmd1dHRlckxlZnRbaWRdKSArIFwicHg7IHdpZHRoOiBcIiArIChkaW1zLmd1dHRlcldpZHRoW2lkXSkgKyBcInB4XCIpKSk7IH1cbiAgICAgIH0gfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZUxpbmVXaWRnZXRzKGNtLCBsaW5lVmlldywgZGltcykge1xuICAgIGlmIChsaW5lVmlldy5hbGlnbmFibGUpIHsgbGluZVZpZXcuYWxpZ25hYmxlID0gbnVsbDsgfVxuICAgIHZhciBpc1dpZGdldCA9IGNsYXNzVGVzdChcIkNvZGVNaXJyb3ItbGluZXdpZGdldFwiKTtcbiAgICBmb3IgKHZhciBub2RlID0gbGluZVZpZXcubm9kZS5maXJzdENoaWxkLCBuZXh0ID0gKHZvaWQgMCk7IG5vZGU7IG5vZGUgPSBuZXh0KSB7XG4gICAgICBuZXh0ID0gbm9kZS5uZXh0U2libGluZztcbiAgICAgIGlmIChpc1dpZGdldC50ZXN0KG5vZGUuY2xhc3NOYW1lKSkgeyBsaW5lVmlldy5ub2RlLnJlbW92ZUNoaWxkKG5vZGUpOyB9XG4gICAgfVxuICAgIGluc2VydExpbmVXaWRnZXRzKGNtLCBsaW5lVmlldywgZGltcyk7XG4gIH1cblxuICAvLyBCdWlsZCBhIGxpbmUncyBET00gcmVwcmVzZW50YXRpb24gZnJvbSBzY3JhdGNoXG4gIGZ1bmN0aW9uIGJ1aWxkTGluZUVsZW1lbnQoY20sIGxpbmVWaWV3LCBsaW5lTiwgZGltcykge1xuICAgIHZhciBidWlsdCA9IGdldExpbmVDb250ZW50KGNtLCBsaW5lVmlldyk7XG4gICAgbGluZVZpZXcudGV4dCA9IGxpbmVWaWV3Lm5vZGUgPSBidWlsdC5wcmU7XG4gICAgaWYgKGJ1aWx0LmJnQ2xhc3MpIHsgbGluZVZpZXcuYmdDbGFzcyA9IGJ1aWx0LmJnQ2xhc3M7IH1cbiAgICBpZiAoYnVpbHQudGV4dENsYXNzKSB7IGxpbmVWaWV3LnRleHRDbGFzcyA9IGJ1aWx0LnRleHRDbGFzczsgfVxuXG4gICAgdXBkYXRlTGluZUNsYXNzZXMoY20sIGxpbmVWaWV3KTtcbiAgICB1cGRhdGVMaW5lR3V0dGVyKGNtLCBsaW5lVmlldywgbGluZU4sIGRpbXMpO1xuICAgIGluc2VydExpbmVXaWRnZXRzKGNtLCBsaW5lVmlldywgZGltcyk7XG4gICAgcmV0dXJuIGxpbmVWaWV3Lm5vZGVcbiAgfVxuXG4gIC8vIEEgbGluZVZpZXcgbWF5IGNvbnRhaW4gbXVsdGlwbGUgbG9naWNhbCBsaW5lcyAod2hlbiBtZXJnZWQgYnlcbiAgLy8gY29sbGFwc2VkIHNwYW5zKS4gVGhlIHdpZGdldHMgZm9yIGFsbCBvZiB0aGVtIG5lZWQgdG8gYmUgZHJhd24uXG4gIGZ1bmN0aW9uIGluc2VydExpbmVXaWRnZXRzKGNtLCBsaW5lVmlldywgZGltcykge1xuICAgIGluc2VydExpbmVXaWRnZXRzRm9yKGNtLCBsaW5lVmlldy5saW5lLCBsaW5lVmlldywgZGltcywgdHJ1ZSk7XG4gICAgaWYgKGxpbmVWaWV3LnJlc3QpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lVmlldy5yZXN0Lmxlbmd0aDsgaSsrKVxuICAgICAgeyBpbnNlcnRMaW5lV2lkZ2V0c0ZvcihjbSwgbGluZVZpZXcucmVzdFtpXSwgbGluZVZpZXcsIGRpbXMsIGZhbHNlKTsgfSB9XG4gIH1cblxuICBmdW5jdGlvbiBpbnNlcnRMaW5lV2lkZ2V0c0ZvcihjbSwgbGluZSwgbGluZVZpZXcsIGRpbXMsIGFsbG93QWJvdmUpIHtcbiAgICBpZiAoIWxpbmUud2lkZ2V0cykgeyByZXR1cm4gfVxuICAgIHZhciB3cmFwID0gZW5zdXJlTGluZVdyYXBwZWQobGluZVZpZXcpO1xuICAgIGZvciAodmFyIGkgPSAwLCB3cyA9IGxpbmUud2lkZ2V0czsgaSA8IHdzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgd2lkZ2V0ID0gd3NbaV0sIG5vZGUgPSBlbHQoXCJkaXZcIiwgW3dpZGdldC5ub2RlXSwgXCJDb2RlTWlycm9yLWxpbmV3aWRnZXRcIiArICh3aWRnZXQuY2xhc3NOYW1lID8gXCIgXCIgKyB3aWRnZXQuY2xhc3NOYW1lIDogXCJcIikpO1xuICAgICAgaWYgKCF3aWRnZXQuaGFuZGxlTW91c2VFdmVudHMpIHsgbm9kZS5zZXRBdHRyaWJ1dGUoXCJjbS1pZ25vcmUtZXZlbnRzXCIsIFwidHJ1ZVwiKTsgfVxuICAgICAgcG9zaXRpb25MaW5lV2lkZ2V0KHdpZGdldCwgbm9kZSwgbGluZVZpZXcsIGRpbXMpO1xuICAgICAgY20uZGlzcGxheS5pbnB1dC5zZXRVbmVkaXRhYmxlKG5vZGUpO1xuICAgICAgaWYgKGFsbG93QWJvdmUgJiYgd2lkZ2V0LmFib3ZlKVxuICAgICAgICB7IHdyYXAuaW5zZXJ0QmVmb3JlKG5vZGUsIGxpbmVWaWV3Lmd1dHRlciB8fCBsaW5lVmlldy50ZXh0KTsgfVxuICAgICAgZWxzZVxuICAgICAgICB7IHdyYXAuYXBwZW5kQ2hpbGQobm9kZSk7IH1cbiAgICAgIHNpZ25hbExhdGVyKHdpZGdldCwgXCJyZWRyYXdcIik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcG9zaXRpb25MaW5lV2lkZ2V0KHdpZGdldCwgbm9kZSwgbGluZVZpZXcsIGRpbXMpIHtcbiAgICBpZiAod2lkZ2V0Lm5vSFNjcm9sbCkge1xuICAobGluZVZpZXcuYWxpZ25hYmxlIHx8IChsaW5lVmlldy5hbGlnbmFibGUgPSBbXSkpLnB1c2gobm9kZSk7XG4gICAgICB2YXIgd2lkdGggPSBkaW1zLndyYXBwZXJXaWR0aDtcbiAgICAgIG5vZGUuc3R5bGUubGVmdCA9IGRpbXMuZml4ZWRQb3MgKyBcInB4XCI7XG4gICAgICBpZiAoIXdpZGdldC5jb3Zlckd1dHRlcikge1xuICAgICAgICB3aWR0aCAtPSBkaW1zLmd1dHRlclRvdGFsV2lkdGg7XG4gICAgICAgIG5vZGUuc3R5bGUucGFkZGluZ0xlZnQgPSBkaW1zLmd1dHRlclRvdGFsV2lkdGggKyBcInB4XCI7XG4gICAgICB9XG4gICAgICBub2RlLnN0eWxlLndpZHRoID0gd2lkdGggKyBcInB4XCI7XG4gICAgfVxuICAgIGlmICh3aWRnZXQuY292ZXJHdXR0ZXIpIHtcbiAgICAgIG5vZGUuc3R5bGUuekluZGV4ID0gNTtcbiAgICAgIG5vZGUuc3R5bGUucG9zaXRpb24gPSBcInJlbGF0aXZlXCI7XG4gICAgICBpZiAoIXdpZGdldC5ub0hTY3JvbGwpIHsgbm9kZS5zdHlsZS5tYXJnaW5MZWZ0ID0gLWRpbXMuZ3V0dGVyVG90YWxXaWR0aCArIFwicHhcIjsgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHdpZGdldEhlaWdodCh3aWRnZXQpIHtcbiAgICBpZiAod2lkZ2V0LmhlaWdodCAhPSBudWxsKSB7IHJldHVybiB3aWRnZXQuaGVpZ2h0IH1cbiAgICB2YXIgY20gPSB3aWRnZXQuZG9jLmNtO1xuICAgIGlmICghY20pIHsgcmV0dXJuIDAgfVxuICAgIGlmICghY29udGFpbnMoZG9jdW1lbnQuYm9keSwgd2lkZ2V0Lm5vZGUpKSB7XG4gICAgICB2YXIgcGFyZW50U3R5bGUgPSBcInBvc2l0aW9uOiByZWxhdGl2ZTtcIjtcbiAgICAgIGlmICh3aWRnZXQuY292ZXJHdXR0ZXIpXG4gICAgICAgIHsgcGFyZW50U3R5bGUgKz0gXCJtYXJnaW4tbGVmdDogLVwiICsgY20uZGlzcGxheS5ndXR0ZXJzLm9mZnNldFdpZHRoICsgXCJweDtcIjsgfVxuICAgICAgaWYgKHdpZGdldC5ub0hTY3JvbGwpXG4gICAgICAgIHsgcGFyZW50U3R5bGUgKz0gXCJ3aWR0aDogXCIgKyBjbS5kaXNwbGF5LndyYXBwZXIuY2xpZW50V2lkdGggKyBcInB4O1wiOyB9XG4gICAgICByZW1vdmVDaGlsZHJlbkFuZEFkZChjbS5kaXNwbGF5Lm1lYXN1cmUsIGVsdChcImRpdlwiLCBbd2lkZ2V0Lm5vZGVdLCBudWxsLCBwYXJlbnRTdHlsZSkpO1xuICAgIH1cbiAgICByZXR1cm4gd2lkZ2V0LmhlaWdodCA9IHdpZGdldC5ub2RlLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0XG4gIH1cblxuICAvLyBSZXR1cm4gdHJ1ZSB3aGVuIHRoZSBnaXZlbiBtb3VzZSBldmVudCBoYXBwZW5lZCBpbiBhIHdpZGdldFxuICBmdW5jdGlvbiBldmVudEluV2lkZ2V0KGRpc3BsYXksIGUpIHtcbiAgICBmb3IgKHZhciBuID0gZV90YXJnZXQoZSk7IG4gIT0gZGlzcGxheS53cmFwcGVyOyBuID0gbi5wYXJlbnROb2RlKSB7XG4gICAgICBpZiAoIW4gfHwgKG4ubm9kZVR5cGUgPT0gMSAmJiBuLmdldEF0dHJpYnV0ZShcImNtLWlnbm9yZS1ldmVudHNcIikgPT0gXCJ0cnVlXCIpIHx8XG4gICAgICAgICAgKG4ucGFyZW50Tm9kZSA9PSBkaXNwbGF5LnNpemVyICYmIG4gIT0gZGlzcGxheS5tb3ZlcikpXG4gICAgICAgIHsgcmV0dXJuIHRydWUgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFBPU0lUSU9OIE1FQVNVUkVNRU5UXG5cbiAgZnVuY3Rpb24gcGFkZGluZ1RvcChkaXNwbGF5KSB7cmV0dXJuIGRpc3BsYXkubGluZVNwYWNlLm9mZnNldFRvcH1cbiAgZnVuY3Rpb24gcGFkZGluZ1ZlcnQoZGlzcGxheSkge3JldHVybiBkaXNwbGF5Lm1vdmVyLm9mZnNldEhlaWdodCAtIGRpc3BsYXkubGluZVNwYWNlLm9mZnNldEhlaWdodH1cbiAgZnVuY3Rpb24gcGFkZGluZ0goZGlzcGxheSkge1xuICAgIGlmIChkaXNwbGF5LmNhY2hlZFBhZGRpbmdIKSB7IHJldHVybiBkaXNwbGF5LmNhY2hlZFBhZGRpbmdIIH1cbiAgICB2YXIgZSA9IHJlbW92ZUNoaWxkcmVuQW5kQWRkKGRpc3BsYXkubWVhc3VyZSwgZWx0KFwicHJlXCIsIFwieFwiLCBcIkNvZGVNaXJyb3ItbGluZS1saWtlXCIpKTtcbiAgICB2YXIgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSA/IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpIDogZS5jdXJyZW50U3R5bGU7XG4gICAgdmFyIGRhdGEgPSB7bGVmdDogcGFyc2VJbnQoc3R5bGUucGFkZGluZ0xlZnQpLCByaWdodDogcGFyc2VJbnQoc3R5bGUucGFkZGluZ1JpZ2h0KX07XG4gICAgaWYgKCFpc05hTihkYXRhLmxlZnQpICYmICFpc05hTihkYXRhLnJpZ2h0KSkgeyBkaXNwbGF5LmNhY2hlZFBhZGRpbmdIID0gZGF0YTsgfVxuICAgIHJldHVybiBkYXRhXG4gIH1cblxuICBmdW5jdGlvbiBzY3JvbGxHYXAoY20pIHsgcmV0dXJuIHNjcm9sbGVyR2FwIC0gY20uZGlzcGxheS5uYXRpdmVCYXJXaWR0aCB9XG4gIGZ1bmN0aW9uIGRpc3BsYXlXaWR0aChjbSkge1xuICAgIHJldHVybiBjbS5kaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoIC0gc2Nyb2xsR2FwKGNtKSAtIGNtLmRpc3BsYXkuYmFyV2lkdGhcbiAgfVxuICBmdW5jdGlvbiBkaXNwbGF5SGVpZ2h0KGNtKSB7XG4gICAgcmV0dXJuIGNtLmRpc3BsYXkuc2Nyb2xsZXIuY2xpZW50SGVpZ2h0IC0gc2Nyb2xsR2FwKGNtKSAtIGNtLmRpc3BsYXkuYmFySGVpZ2h0XG4gIH1cblxuICAvLyBFbnN1cmUgdGhlIGxpbmVWaWV3LndyYXBwaW5nLmhlaWdodHMgYXJyYXkgaXMgcG9wdWxhdGVkLiBUaGlzIGlzXG4gIC8vIGFuIGFycmF5IG9mIGJvdHRvbSBvZmZzZXRzIGZvciB0aGUgbGluZXMgdGhhdCBtYWtlIHVwIGEgZHJhd25cbiAgLy8gbGluZS4gV2hlbiBsaW5lV3JhcHBpbmcgaXMgb24sIHRoZXJlIG1pZ2h0IGJlIG1vcmUgdGhhbiBvbmVcbiAgLy8gaGVpZ2h0LlxuICBmdW5jdGlvbiBlbnN1cmVMaW5lSGVpZ2h0cyhjbSwgbGluZVZpZXcsIHJlY3QpIHtcbiAgICB2YXIgd3JhcHBpbmcgPSBjbS5vcHRpb25zLmxpbmVXcmFwcGluZztcbiAgICB2YXIgY3VyV2lkdGggPSB3cmFwcGluZyAmJiBkaXNwbGF5V2lkdGgoY20pO1xuICAgIGlmICghbGluZVZpZXcubWVhc3VyZS5oZWlnaHRzIHx8IHdyYXBwaW5nICYmIGxpbmVWaWV3Lm1lYXN1cmUud2lkdGggIT0gY3VyV2lkdGgpIHtcbiAgICAgIHZhciBoZWlnaHRzID0gbGluZVZpZXcubWVhc3VyZS5oZWlnaHRzID0gW107XG4gICAgICBpZiAod3JhcHBpbmcpIHtcbiAgICAgICAgbGluZVZpZXcubWVhc3VyZS53aWR0aCA9IGN1cldpZHRoO1xuICAgICAgICB2YXIgcmVjdHMgPSBsaW5lVmlldy50ZXh0LmZpcnN0Q2hpbGQuZ2V0Q2xpZW50UmVjdHMoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWN0cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICB2YXIgY3VyID0gcmVjdHNbaV0sIG5leHQgPSByZWN0c1tpICsgMV07XG4gICAgICAgICAgaWYgKE1hdGguYWJzKGN1ci5ib3R0b20gLSBuZXh0LmJvdHRvbSkgPiAyKVxuICAgICAgICAgICAgeyBoZWlnaHRzLnB1c2goKGN1ci5ib3R0b20gKyBuZXh0LnRvcCkgLyAyIC0gcmVjdC50b3ApOyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGhlaWdodHMucHVzaChyZWN0LmJvdHRvbSAtIHJlY3QudG9wKTtcbiAgICB9XG4gIH1cblxuICAvLyBGaW5kIGEgbGluZSBtYXAgKG1hcHBpbmcgY2hhcmFjdGVyIG9mZnNldHMgdG8gdGV4dCBub2RlcykgYW5kIGFcbiAgLy8gbWVhc3VyZW1lbnQgY2FjaGUgZm9yIHRoZSBnaXZlbiBsaW5lIG51bWJlci4gKEEgbGluZSB2aWV3IG1pZ2h0XG4gIC8vIGNvbnRhaW4gbXVsdGlwbGUgbGluZXMgd2hlbiBjb2xsYXBzZWQgcmFuZ2VzIGFyZSBwcmVzZW50LilcbiAgZnVuY3Rpb24gbWFwRnJvbUxpbmVWaWV3KGxpbmVWaWV3LCBsaW5lLCBsaW5lTikge1xuICAgIGlmIChsaW5lVmlldy5saW5lID09IGxpbmUpXG4gICAgICB7IHJldHVybiB7bWFwOiBsaW5lVmlldy5tZWFzdXJlLm1hcCwgY2FjaGU6IGxpbmVWaWV3Lm1lYXN1cmUuY2FjaGV9IH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVWaWV3LnJlc3QubGVuZ3RoOyBpKyspXG4gICAgICB7IGlmIChsaW5lVmlldy5yZXN0W2ldID09IGxpbmUpXG4gICAgICAgIHsgcmV0dXJuIHttYXA6IGxpbmVWaWV3Lm1lYXN1cmUubWFwc1tpXSwgY2FjaGU6IGxpbmVWaWV3Lm1lYXN1cmUuY2FjaGVzW2ldfSB9IH1cbiAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCBsaW5lVmlldy5yZXN0Lmxlbmd0aDsgaSQxKyspXG4gICAgICB7IGlmIChsaW5lTm8obGluZVZpZXcucmVzdFtpJDFdKSA+IGxpbmVOKVxuICAgICAgICB7IHJldHVybiB7bWFwOiBsaW5lVmlldy5tZWFzdXJlLm1hcHNbaSQxXSwgY2FjaGU6IGxpbmVWaWV3Lm1lYXN1cmUuY2FjaGVzW2kkMV0sIGJlZm9yZTogdHJ1ZX0gfSB9XG4gIH1cblxuICAvLyBSZW5kZXIgYSBsaW5lIGludG8gdGhlIGhpZGRlbiBub2RlIGRpc3BsYXkuZXh0ZXJuYWxNZWFzdXJlZC4gVXNlZFxuICAvLyB3aGVuIG1lYXN1cmVtZW50IGlzIG5lZWRlZCBmb3IgYSBsaW5lIHRoYXQncyBub3QgaW4gdGhlIHZpZXdwb3J0LlxuICBmdW5jdGlvbiB1cGRhdGVFeHRlcm5hbE1lYXN1cmVtZW50KGNtLCBsaW5lKSB7XG4gICAgbGluZSA9IHZpc3VhbExpbmUobGluZSk7XG4gICAgdmFyIGxpbmVOID0gbGluZU5vKGxpbmUpO1xuICAgIHZhciB2aWV3ID0gY20uZGlzcGxheS5leHRlcm5hbE1lYXN1cmVkID0gbmV3IExpbmVWaWV3KGNtLmRvYywgbGluZSwgbGluZU4pO1xuICAgIHZpZXcubGluZU4gPSBsaW5lTjtcbiAgICB2YXIgYnVpbHQgPSB2aWV3LmJ1aWx0ID0gYnVpbGRMaW5lQ29udGVudChjbSwgdmlldyk7XG4gICAgdmlldy50ZXh0ID0gYnVpbHQucHJlO1xuICAgIHJlbW92ZUNoaWxkcmVuQW5kQWRkKGNtLmRpc3BsYXkubGluZU1lYXN1cmUsIGJ1aWx0LnByZSk7XG4gICAgcmV0dXJuIHZpZXdcbiAgfVxuXG4gIC8vIEdldCBhIHt0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHR9IGJveCAoaW4gbGluZS1sb2NhbCBjb29yZGluYXRlcylcbiAgLy8gZm9yIGEgZ2l2ZW4gY2hhcmFjdGVyLlxuICBmdW5jdGlvbiBtZWFzdXJlQ2hhcihjbSwgbGluZSwgY2gsIGJpYXMpIHtcbiAgICByZXR1cm4gbWVhc3VyZUNoYXJQcmVwYXJlZChjbSwgcHJlcGFyZU1lYXN1cmVGb3JMaW5lKGNtLCBsaW5lKSwgY2gsIGJpYXMpXG4gIH1cblxuICAvLyBGaW5kIGEgbGluZSB2aWV3IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGxpbmUgbnVtYmVyLlxuICBmdW5jdGlvbiBmaW5kVmlld0ZvckxpbmUoY20sIGxpbmVOKSB7XG4gICAgaWYgKGxpbmVOID49IGNtLmRpc3BsYXkudmlld0Zyb20gJiYgbGluZU4gPCBjbS5kaXNwbGF5LnZpZXdUbylcbiAgICAgIHsgcmV0dXJuIGNtLmRpc3BsYXkudmlld1tmaW5kVmlld0luZGV4KGNtLCBsaW5lTildIH1cbiAgICB2YXIgZXh0ID0gY20uZGlzcGxheS5leHRlcm5hbE1lYXN1cmVkO1xuICAgIGlmIChleHQgJiYgbGluZU4gPj0gZXh0LmxpbmVOICYmIGxpbmVOIDwgZXh0LmxpbmVOICsgZXh0LnNpemUpXG4gICAgICB7IHJldHVybiBleHQgfVxuICB9XG5cbiAgLy8gTWVhc3VyZW1lbnQgY2FuIGJlIHNwbGl0IGluIHR3byBzdGVwcywgdGhlIHNldC11cCB3b3JrIHRoYXRcbiAgLy8gYXBwbGllcyB0byB0aGUgd2hvbGUgbGluZSwgYW5kIHRoZSBtZWFzdXJlbWVudCBvZiB0aGUgYWN0dWFsXG4gIC8vIGNoYXJhY3Rlci4gRnVuY3Rpb25zIGxpa2UgY29vcmRzQ2hhciwgdGhhdCBuZWVkIHRvIGRvIGEgbG90IG9mXG4gIC8vIG1lYXN1cmVtZW50cyBpbiBhIHJvdywgY2FuIHRodXMgZW5zdXJlIHRoYXQgdGhlIHNldC11cCB3b3JrIGlzXG4gIC8vIG9ubHkgZG9uZSBvbmNlLlxuICBmdW5jdGlvbiBwcmVwYXJlTWVhc3VyZUZvckxpbmUoY20sIGxpbmUpIHtcbiAgICB2YXIgbGluZU4gPSBsaW5lTm8obGluZSk7XG4gICAgdmFyIHZpZXcgPSBmaW5kVmlld0ZvckxpbmUoY20sIGxpbmVOKTtcbiAgICBpZiAodmlldyAmJiAhdmlldy50ZXh0KSB7XG4gICAgICB2aWV3ID0gbnVsbDtcbiAgICB9IGVsc2UgaWYgKHZpZXcgJiYgdmlldy5jaGFuZ2VzKSB7XG4gICAgICB1cGRhdGVMaW5lRm9yQ2hhbmdlcyhjbSwgdmlldywgbGluZU4sIGdldERpbWVuc2lvbnMoY20pKTtcbiAgICAgIGNtLmN1ck9wLmZvcmNlVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCF2aWV3KVxuICAgICAgeyB2aWV3ID0gdXBkYXRlRXh0ZXJuYWxNZWFzdXJlbWVudChjbSwgbGluZSk7IH1cblxuICAgIHZhciBpbmZvID0gbWFwRnJvbUxpbmVWaWV3KHZpZXcsIGxpbmUsIGxpbmVOKTtcbiAgICByZXR1cm4ge1xuICAgICAgbGluZTogbGluZSwgdmlldzogdmlldywgcmVjdDogbnVsbCxcbiAgICAgIG1hcDogaW5mby5tYXAsIGNhY2hlOiBpbmZvLmNhY2hlLCBiZWZvcmU6IGluZm8uYmVmb3JlLFxuICAgICAgaGFzSGVpZ2h0czogZmFsc2VcbiAgICB9XG4gIH1cblxuICAvLyBHaXZlbiBhIHByZXBhcmVkIG1lYXN1cmVtZW50IG9iamVjdCwgbWVhc3VyZXMgdGhlIHBvc2l0aW9uIG9mIGFuXG4gIC8vIGFjdHVhbCBjaGFyYWN0ZXIgKG9yIGZldGNoZXMgaXQgZnJvbSB0aGUgY2FjaGUpLlxuICBmdW5jdGlvbiBtZWFzdXJlQ2hhclByZXBhcmVkKGNtLCBwcmVwYXJlZCwgY2gsIGJpYXMsIHZhckhlaWdodCkge1xuICAgIGlmIChwcmVwYXJlZC5iZWZvcmUpIHsgY2ggPSAtMTsgfVxuICAgIHZhciBrZXkgPSBjaCArIChiaWFzIHx8IFwiXCIpLCBmb3VuZDtcbiAgICBpZiAocHJlcGFyZWQuY2FjaGUuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgZm91bmQgPSBwcmVwYXJlZC5jYWNoZVtrZXldO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXByZXBhcmVkLnJlY3QpXG4gICAgICAgIHsgcHJlcGFyZWQucmVjdCA9IHByZXBhcmVkLnZpZXcudGV4dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsgfVxuICAgICAgaWYgKCFwcmVwYXJlZC5oYXNIZWlnaHRzKSB7XG4gICAgICAgIGVuc3VyZUxpbmVIZWlnaHRzKGNtLCBwcmVwYXJlZC52aWV3LCBwcmVwYXJlZC5yZWN0KTtcbiAgICAgICAgcHJlcGFyZWQuaGFzSGVpZ2h0cyA9IHRydWU7XG4gICAgICB9XG4gICAgICBmb3VuZCA9IG1lYXN1cmVDaGFySW5uZXIoY20sIHByZXBhcmVkLCBjaCwgYmlhcyk7XG4gICAgICBpZiAoIWZvdW5kLmJvZ3VzKSB7IHByZXBhcmVkLmNhY2hlW2tleV0gPSBmb3VuZDsgfVxuICAgIH1cbiAgICByZXR1cm4ge2xlZnQ6IGZvdW5kLmxlZnQsIHJpZ2h0OiBmb3VuZC5yaWdodCxcbiAgICAgICAgICAgIHRvcDogdmFySGVpZ2h0ID8gZm91bmQucnRvcCA6IGZvdW5kLnRvcCxcbiAgICAgICAgICAgIGJvdHRvbTogdmFySGVpZ2h0ID8gZm91bmQucmJvdHRvbSA6IGZvdW5kLmJvdHRvbX1cbiAgfVxuXG4gIHZhciBudWxsUmVjdCA9IHtsZWZ0OiAwLCByaWdodDogMCwgdG9wOiAwLCBib3R0b206IDB9O1xuXG4gIGZ1bmN0aW9uIG5vZGVBbmRPZmZzZXRJbkxpbmVNYXAobWFwLCBjaCwgYmlhcykge1xuICAgIHZhciBub2RlLCBzdGFydCwgZW5kLCBjb2xsYXBzZSwgbVN0YXJ0LCBtRW5kO1xuICAgIC8vIEZpcnN0LCBzZWFyY2ggdGhlIGxpbmUgbWFwIGZvciB0aGUgdGV4dCBub2RlIGNvcnJlc3BvbmRpbmcgdG8sXG4gICAgLy8gb3IgY2xvc2VzdCB0bywgdGhlIHRhcmdldCBjaGFyYWN0ZXIuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXAubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgIG1TdGFydCA9IG1hcFtpXTtcbiAgICAgIG1FbmQgPSBtYXBbaSArIDFdO1xuICAgICAgaWYgKGNoIDwgbVN0YXJ0KSB7XG4gICAgICAgIHN0YXJ0ID0gMDsgZW5kID0gMTtcbiAgICAgICAgY29sbGFwc2UgPSBcImxlZnRcIjtcbiAgICAgIH0gZWxzZSBpZiAoY2ggPCBtRW5kKSB7XG4gICAgICAgIHN0YXJ0ID0gY2ggLSBtU3RhcnQ7XG4gICAgICAgIGVuZCA9IHN0YXJ0ICsgMTtcbiAgICAgIH0gZWxzZSBpZiAoaSA9PSBtYXAubGVuZ3RoIC0gMyB8fCBjaCA9PSBtRW5kICYmIG1hcFtpICsgM10gPiBjaCkge1xuICAgICAgICBlbmQgPSBtRW5kIC0gbVN0YXJ0O1xuICAgICAgICBzdGFydCA9IGVuZCAtIDE7XG4gICAgICAgIGlmIChjaCA+PSBtRW5kKSB7IGNvbGxhcHNlID0gXCJyaWdodFwiOyB9XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnQgIT0gbnVsbCkge1xuICAgICAgICBub2RlID0gbWFwW2kgKyAyXTtcbiAgICAgICAgaWYgKG1TdGFydCA9PSBtRW5kICYmIGJpYXMgPT0gKG5vZGUuaW5zZXJ0TGVmdCA/IFwibGVmdFwiIDogXCJyaWdodFwiKSlcbiAgICAgICAgICB7IGNvbGxhcHNlID0gYmlhczsgfVxuICAgICAgICBpZiAoYmlhcyA9PSBcImxlZnRcIiAmJiBzdGFydCA9PSAwKVxuICAgICAgICAgIHsgd2hpbGUgKGkgJiYgbWFwW2kgLSAyXSA9PSBtYXBbaSAtIDNdICYmIG1hcFtpIC0gMV0uaW5zZXJ0TGVmdCkge1xuICAgICAgICAgICAgbm9kZSA9IG1hcFsoaSAtPSAzKSArIDJdO1xuICAgICAgICAgICAgY29sbGFwc2UgPSBcImxlZnRcIjtcbiAgICAgICAgICB9IH1cbiAgICAgICAgaWYgKGJpYXMgPT0gXCJyaWdodFwiICYmIHN0YXJ0ID09IG1FbmQgLSBtU3RhcnQpXG4gICAgICAgICAgeyB3aGlsZSAoaSA8IG1hcC5sZW5ndGggLSAzICYmIG1hcFtpICsgM10gPT0gbWFwW2kgKyA0XSAmJiAhbWFwW2kgKyA1XS5pbnNlcnRMZWZ0KSB7XG4gICAgICAgICAgICBub2RlID0gbWFwWyhpICs9IDMpICsgMl07XG4gICAgICAgICAgICBjb2xsYXBzZSA9IFwicmlnaHRcIjtcbiAgICAgICAgICB9IH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtub2RlOiBub2RlLCBzdGFydDogc3RhcnQsIGVuZDogZW5kLCBjb2xsYXBzZTogY29sbGFwc2UsIGNvdmVyU3RhcnQ6IG1TdGFydCwgY292ZXJFbmQ6IG1FbmR9XG4gIH1cblxuICBmdW5jdGlvbiBnZXRVc2VmdWxSZWN0KHJlY3RzLCBiaWFzKSB7XG4gICAgdmFyIHJlY3QgPSBudWxsUmVjdDtcbiAgICBpZiAoYmlhcyA9PSBcImxlZnRcIikgeyBmb3IgKHZhciBpID0gMDsgaSA8IHJlY3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoKHJlY3QgPSByZWN0c1tpXSkubGVmdCAhPSByZWN0LnJpZ2h0KSB7IGJyZWFrIH1cbiAgICB9IH0gZWxzZSB7IGZvciAodmFyIGkkMSA9IHJlY3RzLmxlbmd0aCAtIDE7IGkkMSA+PSAwOyBpJDEtLSkge1xuICAgICAgaWYgKChyZWN0ID0gcmVjdHNbaSQxXSkubGVmdCAhPSByZWN0LnJpZ2h0KSB7IGJyZWFrIH1cbiAgICB9IH1cbiAgICByZXR1cm4gcmVjdFxuICB9XG5cbiAgZnVuY3Rpb24gbWVhc3VyZUNoYXJJbm5lcihjbSwgcHJlcGFyZWQsIGNoLCBiaWFzKSB7XG4gICAgdmFyIHBsYWNlID0gbm9kZUFuZE9mZnNldEluTGluZU1hcChwcmVwYXJlZC5tYXAsIGNoLCBiaWFzKTtcbiAgICB2YXIgbm9kZSA9IHBsYWNlLm5vZGUsIHN0YXJ0ID0gcGxhY2Uuc3RhcnQsIGVuZCA9IHBsYWNlLmVuZCwgY29sbGFwc2UgPSBwbGFjZS5jb2xsYXBzZTtcblxuICAgIHZhciByZWN0O1xuICAgIGlmIChub2RlLm5vZGVUeXBlID09IDMpIHsgLy8gSWYgaXQgaXMgYSB0ZXh0IG5vZGUsIHVzZSBhIHJhbmdlIHRvIHJldHJpZXZlIHRoZSBjb29yZGluYXRlcy5cbiAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IDQ7IGkkMSsrKSB7IC8vIFJldHJ5IGEgbWF4aW11bSBvZiA0IHRpbWVzIHdoZW4gbm9uc2Vuc2UgcmVjdGFuZ2xlcyBhcmUgcmV0dXJuZWRcbiAgICAgICAgd2hpbGUgKHN0YXJ0ICYmIGlzRXh0ZW5kaW5nQ2hhcihwcmVwYXJlZC5saW5lLnRleHQuY2hhckF0KHBsYWNlLmNvdmVyU3RhcnQgKyBzdGFydCkpKSB7IC0tc3RhcnQ7IH1cbiAgICAgICAgd2hpbGUgKHBsYWNlLmNvdmVyU3RhcnQgKyBlbmQgPCBwbGFjZS5jb3ZlckVuZCAmJiBpc0V4dGVuZGluZ0NoYXIocHJlcGFyZWQubGluZS50ZXh0LmNoYXJBdChwbGFjZS5jb3ZlclN0YXJ0ICsgZW5kKSkpIHsgKytlbmQ7IH1cbiAgICAgICAgaWYgKGllICYmIGllX3ZlcnNpb24gPCA5ICYmIHN0YXJ0ID09IDAgJiYgZW5kID09IHBsYWNlLmNvdmVyRW5kIC0gcGxhY2UuY292ZXJTdGFydClcbiAgICAgICAgICB7IHJlY3QgPSBub2RlLnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7IH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIHsgcmVjdCA9IGdldFVzZWZ1bFJlY3QocmFuZ2Uobm9kZSwgc3RhcnQsIGVuZCkuZ2V0Q2xpZW50UmVjdHMoKSwgYmlhcyk7IH1cbiAgICAgICAgaWYgKHJlY3QubGVmdCB8fCByZWN0LnJpZ2h0IHx8IHN0YXJ0ID09IDApIHsgYnJlYWsgfVxuICAgICAgICBlbmQgPSBzdGFydDtcbiAgICAgICAgc3RhcnQgPSBzdGFydCAtIDE7XG4gICAgICAgIGNvbGxhcHNlID0gXCJyaWdodFwiO1xuICAgICAgfVxuICAgICAgaWYgKGllICYmIGllX3ZlcnNpb24gPCAxMSkgeyByZWN0ID0gbWF5YmVVcGRhdGVSZWN0Rm9yWm9vbWluZyhjbS5kaXNwbGF5Lm1lYXN1cmUsIHJlY3QpOyB9XG4gICAgfSBlbHNlIHsgLy8gSWYgaXQgaXMgYSB3aWRnZXQsIHNpbXBseSBnZXQgdGhlIGJveCBmb3IgdGhlIHdob2xlIHdpZGdldC5cbiAgICAgIGlmIChzdGFydCA+IDApIHsgY29sbGFwc2UgPSBiaWFzID0gXCJyaWdodFwiOyB9XG4gICAgICB2YXIgcmVjdHM7XG4gICAgICBpZiAoY20ub3B0aW9ucy5saW5lV3JhcHBpbmcgJiYgKHJlY3RzID0gbm9kZS5nZXRDbGllbnRSZWN0cygpKS5sZW5ndGggPiAxKVxuICAgICAgICB7IHJlY3QgPSByZWN0c1tiaWFzID09IFwicmlnaHRcIiA/IHJlY3RzLmxlbmd0aCAtIDEgOiAwXTsgfVxuICAgICAgZWxzZVxuICAgICAgICB7IHJlY3QgPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOyB9XG4gICAgfVxuICAgIGlmIChpZSAmJiBpZV92ZXJzaW9uIDwgOSAmJiAhc3RhcnQgJiYgKCFyZWN0IHx8ICFyZWN0LmxlZnQgJiYgIXJlY3QucmlnaHQpKSB7XG4gICAgICB2YXIgclNwYW4gPSBub2RlLnBhcmVudE5vZGUuZ2V0Q2xpZW50UmVjdHMoKVswXTtcbiAgICAgIGlmIChyU3BhbilcbiAgICAgICAgeyByZWN0ID0ge2xlZnQ6IHJTcGFuLmxlZnQsIHJpZ2h0OiByU3Bhbi5sZWZ0ICsgY2hhcldpZHRoKGNtLmRpc3BsYXkpLCB0b3A6IHJTcGFuLnRvcCwgYm90dG9tOiByU3Bhbi5ib3R0b219OyB9XG4gICAgICBlbHNlXG4gICAgICAgIHsgcmVjdCA9IG51bGxSZWN0OyB9XG4gICAgfVxuXG4gICAgdmFyIHJ0b3AgPSByZWN0LnRvcCAtIHByZXBhcmVkLnJlY3QudG9wLCByYm90ID0gcmVjdC5ib3R0b20gLSBwcmVwYXJlZC5yZWN0LnRvcDtcbiAgICB2YXIgbWlkID0gKHJ0b3AgKyByYm90KSAvIDI7XG4gICAgdmFyIGhlaWdodHMgPSBwcmVwYXJlZC52aWV3Lm1lYXN1cmUuaGVpZ2h0cztcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yICg7IGkgPCBoZWlnaHRzLmxlbmd0aCAtIDE7IGkrKylcbiAgICAgIHsgaWYgKG1pZCA8IGhlaWdodHNbaV0pIHsgYnJlYWsgfSB9XG4gICAgdmFyIHRvcCA9IGkgPyBoZWlnaHRzW2kgLSAxXSA6IDAsIGJvdCA9IGhlaWdodHNbaV07XG4gICAgdmFyIHJlc3VsdCA9IHtsZWZ0OiAoY29sbGFwc2UgPT0gXCJyaWdodFwiID8gcmVjdC5yaWdodCA6IHJlY3QubGVmdCkgLSBwcmVwYXJlZC5yZWN0LmxlZnQsXG4gICAgICAgICAgICAgICAgICByaWdodDogKGNvbGxhcHNlID09IFwibGVmdFwiID8gcmVjdC5sZWZ0IDogcmVjdC5yaWdodCkgLSBwcmVwYXJlZC5yZWN0LmxlZnQsXG4gICAgICAgICAgICAgICAgICB0b3A6IHRvcCwgYm90dG9tOiBib3R9O1xuICAgIGlmICghcmVjdC5sZWZ0ICYmICFyZWN0LnJpZ2h0KSB7IHJlc3VsdC5ib2d1cyA9IHRydWU7IH1cbiAgICBpZiAoIWNtLm9wdGlvbnMuc2luZ2xlQ3Vyc29ySGVpZ2h0UGVyTGluZSkgeyByZXN1bHQucnRvcCA9IHJ0b3A7IHJlc3VsdC5yYm90dG9tID0gcmJvdDsgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLy8gV29yayBhcm91bmQgcHJvYmxlbSB3aXRoIGJvdW5kaW5nIGNsaWVudCByZWN0cyBvbiByYW5nZXMgYmVpbmdcbiAgLy8gcmV0dXJuZWQgaW5jb3JyZWN0bHkgd2hlbiB6b29tZWQgb24gSUUxMCBhbmQgYmVsb3cuXG4gIGZ1bmN0aW9uIG1heWJlVXBkYXRlUmVjdEZvclpvb21pbmcobWVhc3VyZSwgcmVjdCkge1xuICAgIGlmICghd2luZG93LnNjcmVlbiB8fCBzY3JlZW4ubG9naWNhbFhEUEkgPT0gbnVsbCB8fFxuICAgICAgICBzY3JlZW4ubG9naWNhbFhEUEkgPT0gc2NyZWVuLmRldmljZVhEUEkgfHwgIWhhc0JhZFpvb21lZFJlY3RzKG1lYXN1cmUpKVxuICAgICAgeyByZXR1cm4gcmVjdCB9XG4gICAgdmFyIHNjYWxlWCA9IHNjcmVlbi5sb2dpY2FsWERQSSAvIHNjcmVlbi5kZXZpY2VYRFBJO1xuICAgIHZhciBzY2FsZVkgPSBzY3JlZW4ubG9naWNhbFlEUEkgLyBzY3JlZW4uZGV2aWNlWURQSTtcbiAgICByZXR1cm4ge2xlZnQ6IHJlY3QubGVmdCAqIHNjYWxlWCwgcmlnaHQ6IHJlY3QucmlnaHQgKiBzY2FsZVgsXG4gICAgICAgICAgICB0b3A6IHJlY3QudG9wICogc2NhbGVZLCBib3R0b206IHJlY3QuYm90dG9tICogc2NhbGVZfVxuICB9XG5cbiAgZnVuY3Rpb24gY2xlYXJMaW5lTWVhc3VyZW1lbnRDYWNoZUZvcihsaW5lVmlldykge1xuICAgIGlmIChsaW5lVmlldy5tZWFzdXJlKSB7XG4gICAgICBsaW5lVmlldy5tZWFzdXJlLmNhY2hlID0ge307XG4gICAgICBsaW5lVmlldy5tZWFzdXJlLmhlaWdodHMgPSBudWxsO1xuICAgICAgaWYgKGxpbmVWaWV3LnJlc3QpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lVmlldy5yZXN0Lmxlbmd0aDsgaSsrKVxuICAgICAgICB7IGxpbmVWaWV3Lm1lYXN1cmUuY2FjaGVzW2ldID0ge307IH0gfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNsZWFyTGluZU1lYXN1cmVtZW50Q2FjaGUoY20pIHtcbiAgICBjbS5kaXNwbGF5LmV4dGVybmFsTWVhc3VyZSA9IG51bGw7XG4gICAgcmVtb3ZlQ2hpbGRyZW4oY20uZGlzcGxheS5saW5lTWVhc3VyZSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbS5kaXNwbGF5LnZpZXcubGVuZ3RoOyBpKyspXG4gICAgICB7IGNsZWFyTGluZU1lYXN1cmVtZW50Q2FjaGVGb3IoY20uZGlzcGxheS52aWV3W2ldKTsgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2xlYXJDYWNoZXMoY20pIHtcbiAgICBjbGVhckxpbmVNZWFzdXJlbWVudENhY2hlKGNtKTtcbiAgICBjbS5kaXNwbGF5LmNhY2hlZENoYXJXaWR0aCA9IGNtLmRpc3BsYXkuY2FjaGVkVGV4dEhlaWdodCA9IGNtLmRpc3BsYXkuY2FjaGVkUGFkZGluZ0ggPSBudWxsO1xuICAgIGlmICghY20ub3B0aW9ucy5saW5lV3JhcHBpbmcpIHsgY20uZGlzcGxheS5tYXhMaW5lQ2hhbmdlZCA9IHRydWU7IH1cbiAgICBjbS5kaXNwbGF5LmxpbmVOdW1DaGFycyA9IG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBwYWdlU2Nyb2xsWCgpIHtcbiAgICAvLyBXb3JrIGFyb3VuZCBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00ODkyMDZcbiAgICAvLyB3aGljaCBjYXVzZXMgcGFnZV9PZmZzZXQgYW5kIGJvdW5kaW5nIGNsaWVudCByZWN0cyB0byB1c2VcbiAgICAvLyBkaWZmZXJlbnQgcmVmZXJlbmNlIHZpZXdwb3J0cyBhbmQgaW52YWxpZGF0ZSBvdXIgY2FsY3VsYXRpb25zLlxuICAgIGlmIChjaHJvbWUgJiYgYW5kcm9pZCkgeyByZXR1cm4gLShkb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm1hcmdpbkxlZnQpKSB9XG4gICAgcmV0dXJuIHdpbmRvdy5wYWdlWE9mZnNldCB8fCAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50IHx8IGRvY3VtZW50LmJvZHkpLnNjcm9sbExlZnRcbiAgfVxuICBmdW5jdGlvbiBwYWdlU2Nyb2xsWSgpIHtcbiAgICBpZiAoY2hyb21lICYmIGFuZHJvaWQpIHsgcmV0dXJuIC0oZG9jdW1lbnQuYm9keS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgLSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm1hcmdpblRvcCkpIH1cbiAgICByZXR1cm4gd2luZG93LnBhZ2VZT2Zmc2V0IHx8IChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgfHwgZG9jdW1lbnQuYm9keSkuc2Nyb2xsVG9wXG4gIH1cblxuICBmdW5jdGlvbiB3aWRnZXRUb3BIZWlnaHQobGluZU9iaikge1xuICAgIHZhciBoZWlnaHQgPSAwO1xuICAgIGlmIChsaW5lT2JqLndpZGdldHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lT2JqLndpZGdldHMubGVuZ3RoOyArK2kpIHsgaWYgKGxpbmVPYmoud2lkZ2V0c1tpXS5hYm92ZSlcbiAgICAgIHsgaGVpZ2h0ICs9IHdpZGdldEhlaWdodChsaW5lT2JqLndpZGdldHNbaV0pOyB9IH0gfVxuICAgIHJldHVybiBoZWlnaHRcbiAgfVxuXG4gIC8vIENvbnZlcnRzIGEge3RvcCwgYm90dG9tLCBsZWZ0LCByaWdodH0gYm94IGZyb20gbGluZS1sb2NhbFxuICAvLyBjb29yZGluYXRlcyBpbnRvIGFub3RoZXIgY29vcmRpbmF0ZSBzeXN0ZW0uIENvbnRleHQgbWF5IGJlIG9uZSBvZlxuICAvLyBcImxpbmVcIiwgXCJkaXZcIiAoZGlzcGxheS5saW5lRGl2KSwgXCJsb2NhbFwiLi9udWxsIChlZGl0b3IpLCBcIndpbmRvd1wiLFxuICAvLyBvciBcInBhZ2VcIi5cbiAgZnVuY3Rpb24gaW50b0Nvb3JkU3lzdGVtKGNtLCBsaW5lT2JqLCByZWN0LCBjb250ZXh0LCBpbmNsdWRlV2lkZ2V0cykge1xuICAgIGlmICghaW5jbHVkZVdpZGdldHMpIHtcbiAgICAgIHZhciBoZWlnaHQgPSB3aWRnZXRUb3BIZWlnaHQobGluZU9iaik7XG4gICAgICByZWN0LnRvcCArPSBoZWlnaHQ7IHJlY3QuYm90dG9tICs9IGhlaWdodDtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQgPT0gXCJsaW5lXCIpIHsgcmV0dXJuIHJlY3QgfVxuICAgIGlmICghY29udGV4dCkgeyBjb250ZXh0ID0gXCJsb2NhbFwiOyB9XG4gICAgdmFyIHlPZmYgPSBoZWlnaHRBdExpbmUobGluZU9iaik7XG4gICAgaWYgKGNvbnRleHQgPT0gXCJsb2NhbFwiKSB7IHlPZmYgKz0gcGFkZGluZ1RvcChjbS5kaXNwbGF5KTsgfVxuICAgIGVsc2UgeyB5T2ZmIC09IGNtLmRpc3BsYXkudmlld09mZnNldDsgfVxuICAgIGlmIChjb250ZXh0ID09IFwicGFnZVwiIHx8IGNvbnRleHQgPT0gXCJ3aW5kb3dcIikge1xuICAgICAgdmFyIGxPZmYgPSBjbS5kaXNwbGF5LmxpbmVTcGFjZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIHlPZmYgKz0gbE9mZi50b3AgKyAoY29udGV4dCA9PSBcIndpbmRvd1wiID8gMCA6IHBhZ2VTY3JvbGxZKCkpO1xuICAgICAgdmFyIHhPZmYgPSBsT2ZmLmxlZnQgKyAoY29udGV4dCA9PSBcIndpbmRvd1wiID8gMCA6IHBhZ2VTY3JvbGxYKCkpO1xuICAgICAgcmVjdC5sZWZ0ICs9IHhPZmY7IHJlY3QucmlnaHQgKz0geE9mZjtcbiAgICB9XG4gICAgcmVjdC50b3AgKz0geU9mZjsgcmVjdC5ib3R0b20gKz0geU9mZjtcbiAgICByZXR1cm4gcmVjdFxuICB9XG5cbiAgLy8gQ292ZXJ0cyBhIGJveCBmcm9tIFwiZGl2XCIgY29vcmRzIHRvIGFub3RoZXIgY29vcmRpbmF0ZSBzeXN0ZW0uXG4gIC8vIENvbnRleHQgbWF5IGJlIFwid2luZG93XCIsIFwicGFnZVwiLCBcImRpdlwiLCBvciBcImxvY2FsXCIuL251bGwuXG4gIGZ1bmN0aW9uIGZyb21Db29yZFN5c3RlbShjbSwgY29vcmRzLCBjb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQgPT0gXCJkaXZcIikgeyByZXR1cm4gY29vcmRzIH1cbiAgICB2YXIgbGVmdCA9IGNvb3Jkcy5sZWZ0LCB0b3AgPSBjb29yZHMudG9wO1xuICAgIC8vIEZpcnN0IG1vdmUgaW50byBcInBhZ2VcIiBjb29yZGluYXRlIHN5c3RlbVxuICAgIGlmIChjb250ZXh0ID09IFwicGFnZVwiKSB7XG4gICAgICBsZWZ0IC09IHBhZ2VTY3JvbGxYKCk7XG4gICAgICB0b3AgLT0gcGFnZVNjcm9sbFkoKTtcbiAgICB9IGVsc2UgaWYgKGNvbnRleHQgPT0gXCJsb2NhbFwiIHx8ICFjb250ZXh0KSB7XG4gICAgICB2YXIgbG9jYWxCb3ggPSBjbS5kaXNwbGF5LnNpemVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgbGVmdCArPSBsb2NhbEJveC5sZWZ0O1xuICAgICAgdG9wICs9IGxvY2FsQm94LnRvcDtcbiAgICB9XG5cbiAgICB2YXIgbGluZVNwYWNlQm94ID0gY20uZGlzcGxheS5saW5lU3BhY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgcmV0dXJuIHtsZWZ0OiBsZWZ0IC0gbGluZVNwYWNlQm94LmxlZnQsIHRvcDogdG9wIC0gbGluZVNwYWNlQm94LnRvcH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNoYXJDb29yZHMoY20sIHBvcywgY29udGV4dCwgbGluZU9iaiwgYmlhcykge1xuICAgIGlmICghbGluZU9iaikgeyBsaW5lT2JqID0gZ2V0TGluZShjbS5kb2MsIHBvcy5saW5lKTsgfVxuICAgIHJldHVybiBpbnRvQ29vcmRTeXN0ZW0oY20sIGxpbmVPYmosIG1lYXN1cmVDaGFyKGNtLCBsaW5lT2JqLCBwb3MuY2gsIGJpYXMpLCBjb250ZXh0KVxuICB9XG5cbiAgLy8gUmV0dXJucyBhIGJveCBmb3IgYSBnaXZlbiBjdXJzb3IgcG9zaXRpb24sIHdoaWNoIG1heSBoYXZlIGFuXG4gIC8vICdvdGhlcicgcHJvcGVydHkgY29udGFpbmluZyB0aGUgcG9zaXRpb24gb2YgdGhlIHNlY29uZGFyeSBjdXJzb3JcbiAgLy8gb24gYSBiaWRpIGJvdW5kYXJ5LlxuICAvLyBBIGN1cnNvciBQb3MobGluZSwgY2hhciwgXCJiZWZvcmVcIikgaXMgb24gdGhlIHNhbWUgdmlzdWFsIGxpbmUgYXMgYGNoYXIgLSAxYFxuICAvLyBhbmQgYWZ0ZXIgYGNoYXIgLSAxYCBpbiB3cml0aW5nIG9yZGVyIG9mIGBjaGFyIC0gMWBcbiAgLy8gQSBjdXJzb3IgUG9zKGxpbmUsIGNoYXIsIFwiYWZ0ZXJcIikgaXMgb24gdGhlIHNhbWUgdmlzdWFsIGxpbmUgYXMgYGNoYXJgXG4gIC8vIGFuZCBiZWZvcmUgYGNoYXJgIGluIHdyaXRpbmcgb3JkZXIgb2YgYGNoYXJgXG4gIC8vIEV4YW1wbGVzICh1cHBlci1jYXNlIGxldHRlcnMgYXJlIFJUTCwgbG93ZXItY2FzZSBhcmUgTFRSKTpcbiAgLy8gICAgIFBvcygwLCAxLCAuLi4pXG4gIC8vICAgICBiZWZvcmUgICBhZnRlclxuICAvLyBhYiAgICAgYXxiICAgICBhfGJcbiAgLy8gYUIgICAgIGF8QiAgICAgYUJ8XG4gIC8vIEFiICAgICB8QWIgICAgIEF8YlxuICAvLyBBQiAgICAgQnxBICAgICBCfEFcbiAgLy8gRXZlcnkgcG9zaXRpb24gYWZ0ZXIgdGhlIGxhc3QgY2hhcmFjdGVyIG9uIGEgbGluZSBpcyBjb25zaWRlcmVkIHRvIHN0aWNrXG4gIC8vIHRvIHRoZSBsYXN0IGNoYXJhY3RlciBvbiB0aGUgbGluZS5cbiAgZnVuY3Rpb24gY3Vyc29yQ29vcmRzKGNtLCBwb3MsIGNvbnRleHQsIGxpbmVPYmosIHByZXBhcmVkTWVhc3VyZSwgdmFySGVpZ2h0KSB7XG4gICAgbGluZU9iaiA9IGxpbmVPYmogfHwgZ2V0TGluZShjbS5kb2MsIHBvcy5saW5lKTtcbiAgICBpZiAoIXByZXBhcmVkTWVhc3VyZSkgeyBwcmVwYXJlZE1lYXN1cmUgPSBwcmVwYXJlTWVhc3VyZUZvckxpbmUoY20sIGxpbmVPYmopOyB9XG4gICAgZnVuY3Rpb24gZ2V0KGNoLCByaWdodCkge1xuICAgICAgdmFyIG0gPSBtZWFzdXJlQ2hhclByZXBhcmVkKGNtLCBwcmVwYXJlZE1lYXN1cmUsIGNoLCByaWdodCA/IFwicmlnaHRcIiA6IFwibGVmdFwiLCB2YXJIZWlnaHQpO1xuICAgICAgaWYgKHJpZ2h0KSB7IG0ubGVmdCA9IG0ucmlnaHQ7IH0gZWxzZSB7IG0ucmlnaHQgPSBtLmxlZnQ7IH1cbiAgICAgIHJldHVybiBpbnRvQ29vcmRTeXN0ZW0oY20sIGxpbmVPYmosIG0sIGNvbnRleHQpXG4gICAgfVxuICAgIHZhciBvcmRlciA9IGdldE9yZGVyKGxpbmVPYmosIGNtLmRvYy5kaXJlY3Rpb24pLCBjaCA9IHBvcy5jaCwgc3RpY2t5ID0gcG9zLnN0aWNreTtcbiAgICBpZiAoY2ggPj0gbGluZU9iai50ZXh0Lmxlbmd0aCkge1xuICAgICAgY2ggPSBsaW5lT2JqLnRleHQubGVuZ3RoO1xuICAgICAgc3RpY2t5ID0gXCJiZWZvcmVcIjtcbiAgICB9IGVsc2UgaWYgKGNoIDw9IDApIHtcbiAgICAgIGNoID0gMDtcbiAgICAgIHN0aWNreSA9IFwiYWZ0ZXJcIjtcbiAgICB9XG4gICAgaWYgKCFvcmRlcikgeyByZXR1cm4gZ2V0KHN0aWNreSA9PSBcImJlZm9yZVwiID8gY2ggLSAxIDogY2gsIHN0aWNreSA9PSBcImJlZm9yZVwiKSB9XG5cbiAgICBmdW5jdGlvbiBnZXRCaWRpKGNoLCBwYXJ0UG9zLCBpbnZlcnQpIHtcbiAgICAgIHZhciBwYXJ0ID0gb3JkZXJbcGFydFBvc10sIHJpZ2h0ID0gcGFydC5sZXZlbCA9PSAxO1xuICAgICAgcmV0dXJuIGdldChpbnZlcnQgPyBjaCAtIDEgOiBjaCwgcmlnaHQgIT0gaW52ZXJ0KVxuICAgIH1cbiAgICB2YXIgcGFydFBvcyA9IGdldEJpZGlQYXJ0QXQob3JkZXIsIGNoLCBzdGlja3kpO1xuICAgIHZhciBvdGhlciA9IGJpZGlPdGhlcjtcbiAgICB2YXIgdmFsID0gZ2V0QmlkaShjaCwgcGFydFBvcywgc3RpY2t5ID09IFwiYmVmb3JlXCIpO1xuICAgIGlmIChvdGhlciAhPSBudWxsKSB7IHZhbC5vdGhlciA9IGdldEJpZGkoY2gsIG90aGVyLCBzdGlja3kgIT0gXCJiZWZvcmVcIik7IH1cbiAgICByZXR1cm4gdmFsXG4gIH1cblxuICAvLyBVc2VkIHRvIGNoZWFwbHkgZXN0aW1hdGUgdGhlIGNvb3JkaW5hdGVzIGZvciBhIHBvc2l0aW9uLiBVc2VkIGZvclxuICAvLyBpbnRlcm1lZGlhdGUgc2Nyb2xsIHVwZGF0ZXMuXG4gIGZ1bmN0aW9uIGVzdGltYXRlQ29vcmRzKGNtLCBwb3MpIHtcbiAgICB2YXIgbGVmdCA9IDA7XG4gICAgcG9zID0gY2xpcFBvcyhjbS5kb2MsIHBvcyk7XG4gICAgaWYgKCFjbS5vcHRpb25zLmxpbmVXcmFwcGluZykgeyBsZWZ0ID0gY2hhcldpZHRoKGNtLmRpc3BsYXkpICogcG9zLmNoOyB9XG4gICAgdmFyIGxpbmVPYmogPSBnZXRMaW5lKGNtLmRvYywgcG9zLmxpbmUpO1xuICAgIHZhciB0b3AgPSBoZWlnaHRBdExpbmUobGluZU9iaikgKyBwYWRkaW5nVG9wKGNtLmRpc3BsYXkpO1xuICAgIHJldHVybiB7bGVmdDogbGVmdCwgcmlnaHQ6IGxlZnQsIHRvcDogdG9wLCBib3R0b206IHRvcCArIGxpbmVPYmouaGVpZ2h0fVxuICB9XG5cbiAgLy8gUG9zaXRpb25zIHJldHVybmVkIGJ5IGNvb3Jkc0NoYXIgY29udGFpbiBzb21lIGV4dHJhIGluZm9ybWF0aW9uLlxuICAvLyB4UmVsIGlzIHRoZSByZWxhdGl2ZSB4IHBvc2l0aW9uIG9mIHRoZSBpbnB1dCBjb29yZGluYXRlcyBjb21wYXJlZFxuICAvLyB0byB0aGUgZm91bmQgcG9zaXRpb24gKHNvIHhSZWwgPiAwIG1lYW5zIHRoZSBjb29yZGluYXRlcyBhcmUgdG9cbiAgLy8gdGhlIHJpZ2h0IG9mIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24sIGZvciBleGFtcGxlKS4gV2hlbiBvdXRzaWRlXG4gIC8vIGlzIHRydWUsIHRoYXQgbWVhbnMgdGhlIGNvb3JkaW5hdGVzIGxpZSBvdXRzaWRlIHRoZSBsaW5lJ3NcbiAgLy8gdmVydGljYWwgcmFuZ2UuXG4gIGZ1bmN0aW9uIFBvc1dpdGhJbmZvKGxpbmUsIGNoLCBzdGlja3ksIG91dHNpZGUsIHhSZWwpIHtcbiAgICB2YXIgcG9zID0gUG9zKGxpbmUsIGNoLCBzdGlja3kpO1xuICAgIHBvcy54UmVsID0geFJlbDtcbiAgICBpZiAob3V0c2lkZSkgeyBwb3Mub3V0c2lkZSA9IG91dHNpZGU7IH1cbiAgICByZXR1cm4gcG9zXG4gIH1cblxuICAvLyBDb21wdXRlIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gY2xvc2VzdCB0byB0aGUgZ2l2ZW4gY29vcmRpbmF0ZXMuXG4gIC8vIElucHV0IG11c3QgYmUgbGluZVNwYWNlLWxvY2FsIChcImRpdlwiIGNvb3JkaW5hdGUgc3lzdGVtKS5cbiAgZnVuY3Rpb24gY29vcmRzQ2hhcihjbSwgeCwgeSkge1xuICAgIHZhciBkb2MgPSBjbS5kb2M7XG4gICAgeSArPSBjbS5kaXNwbGF5LnZpZXdPZmZzZXQ7XG4gICAgaWYgKHkgPCAwKSB7IHJldHVybiBQb3NXaXRoSW5mbyhkb2MuZmlyc3QsIDAsIG51bGwsIC0xLCAtMSkgfVxuICAgIHZhciBsaW5lTiA9IGxpbmVBdEhlaWdodChkb2MsIHkpLCBsYXN0ID0gZG9jLmZpcnN0ICsgZG9jLnNpemUgLSAxO1xuICAgIGlmIChsaW5lTiA+IGxhc3QpXG4gICAgICB7IHJldHVybiBQb3NXaXRoSW5mbyhkb2MuZmlyc3QgKyBkb2Muc2l6ZSAtIDEsIGdldExpbmUoZG9jLCBsYXN0KS50ZXh0Lmxlbmd0aCwgbnVsbCwgMSwgMSkgfVxuICAgIGlmICh4IDwgMCkgeyB4ID0gMDsgfVxuXG4gICAgdmFyIGxpbmVPYmogPSBnZXRMaW5lKGRvYywgbGluZU4pO1xuICAgIGZvciAoOzspIHtcbiAgICAgIHZhciBmb3VuZCA9IGNvb3Jkc0NoYXJJbm5lcihjbSwgbGluZU9iaiwgbGluZU4sIHgsIHkpO1xuICAgICAgdmFyIGNvbGxhcHNlZCA9IGNvbGxhcHNlZFNwYW5Bcm91bmQobGluZU9iaiwgZm91bmQuY2ggKyAoZm91bmQueFJlbCA+IDAgfHwgZm91bmQub3V0c2lkZSA+IDAgPyAxIDogMCkpO1xuICAgICAgaWYgKCFjb2xsYXBzZWQpIHsgcmV0dXJuIGZvdW5kIH1cbiAgICAgIHZhciByYW5nZUVuZCA9IGNvbGxhcHNlZC5maW5kKDEpO1xuICAgICAgaWYgKHJhbmdlRW5kLmxpbmUgPT0gbGluZU4pIHsgcmV0dXJuIHJhbmdlRW5kIH1cbiAgICAgIGxpbmVPYmogPSBnZXRMaW5lKGRvYywgbGluZU4gPSByYW5nZUVuZC5saW5lKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB3cmFwcGVkTGluZUV4dGVudChjbSwgbGluZU9iaiwgcHJlcGFyZWRNZWFzdXJlLCB5KSB7XG4gICAgeSAtPSB3aWRnZXRUb3BIZWlnaHQobGluZU9iaik7XG4gICAgdmFyIGVuZCA9IGxpbmVPYmoudGV4dC5sZW5ndGg7XG4gICAgdmFyIGJlZ2luID0gZmluZEZpcnN0KGZ1bmN0aW9uIChjaCkgeyByZXR1cm4gbWVhc3VyZUNoYXJQcmVwYXJlZChjbSwgcHJlcGFyZWRNZWFzdXJlLCBjaCAtIDEpLmJvdHRvbSA8PSB5OyB9LCBlbmQsIDApO1xuICAgIGVuZCA9IGZpbmRGaXJzdChmdW5jdGlvbiAoY2gpIHsgcmV0dXJuIG1lYXN1cmVDaGFyUHJlcGFyZWQoY20sIHByZXBhcmVkTWVhc3VyZSwgY2gpLnRvcCA+IHk7IH0sIGJlZ2luLCBlbmQpO1xuICAgIHJldHVybiB7YmVnaW46IGJlZ2luLCBlbmQ6IGVuZH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHdyYXBwZWRMaW5lRXh0ZW50Q2hhcihjbSwgbGluZU9iaiwgcHJlcGFyZWRNZWFzdXJlLCB0YXJnZXQpIHtcbiAgICBpZiAoIXByZXBhcmVkTWVhc3VyZSkgeyBwcmVwYXJlZE1lYXN1cmUgPSBwcmVwYXJlTWVhc3VyZUZvckxpbmUoY20sIGxpbmVPYmopOyB9XG4gICAgdmFyIHRhcmdldFRvcCA9IGludG9Db29yZFN5c3RlbShjbSwgbGluZU9iaiwgbWVhc3VyZUNoYXJQcmVwYXJlZChjbSwgcHJlcGFyZWRNZWFzdXJlLCB0YXJnZXQpLCBcImxpbmVcIikudG9wO1xuICAgIHJldHVybiB3cmFwcGVkTGluZUV4dGVudChjbSwgbGluZU9iaiwgcHJlcGFyZWRNZWFzdXJlLCB0YXJnZXRUb3ApXG4gIH1cblxuICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHNpZGUgb2YgYSBib3ggaXMgYWZ0ZXIgdGhlIGdpdmVuXG4gIC8vIGNvb3JkaW5hdGVzLCBpbiB0b3AtdG8tYm90dG9tLCBsZWZ0LXRvLXJpZ2h0IG9yZGVyLlxuICBmdW5jdGlvbiBib3hJc0FmdGVyKGJveCwgeCwgeSwgbGVmdCkge1xuICAgIHJldHVybiBib3guYm90dG9tIDw9IHkgPyBmYWxzZSA6IGJveC50b3AgPiB5ID8gdHJ1ZSA6IChsZWZ0ID8gYm94LmxlZnQgOiBib3gucmlnaHQpID4geFxuICB9XG5cbiAgZnVuY3Rpb24gY29vcmRzQ2hhcklubmVyKGNtLCBsaW5lT2JqLCBsaW5lTm8sIHgsIHkpIHtcbiAgICAvLyBNb3ZlIHkgaW50byBsaW5lLWxvY2FsIGNvb3JkaW5hdGUgc3BhY2VcbiAgICB5IC09IGhlaWdodEF0TGluZShsaW5lT2JqKTtcbiAgICB2YXIgcHJlcGFyZWRNZWFzdXJlID0gcHJlcGFyZU1lYXN1cmVGb3JMaW5lKGNtLCBsaW5lT2JqKTtcbiAgICAvLyBXaGVuIGRpcmVjdGx5IGNhbGxpbmcgYG1lYXN1cmVDaGFyUHJlcGFyZWRgLCB3ZSBoYXZlIHRvIGFkanVzdFxuICAgIC8vIGZvciB0aGUgd2lkZ2V0cyBhdCB0aGlzIGxpbmUuXG4gICAgdmFyIHdpZGdldEhlaWdodCA9IHdpZGdldFRvcEhlaWdodChsaW5lT2JqKTtcbiAgICB2YXIgYmVnaW4gPSAwLCBlbmQgPSBsaW5lT2JqLnRleHQubGVuZ3RoLCBsdHIgPSB0cnVlO1xuXG4gICAgdmFyIG9yZGVyID0gZ2V0T3JkZXIobGluZU9iaiwgY20uZG9jLmRpcmVjdGlvbik7XG4gICAgLy8gSWYgdGhlIGxpbmUgaXNuJ3QgcGxhaW4gbGVmdC10by1yaWdodCB0ZXh0LCBmaXJzdCBmaWd1cmUgb3V0XG4gICAgLy8gd2hpY2ggYmlkaSBzZWN0aW9uIHRoZSBjb29yZGluYXRlcyBmYWxsIGludG8uXG4gICAgaWYgKG9yZGVyKSB7XG4gICAgICB2YXIgcGFydCA9IChjbS5vcHRpb25zLmxpbmVXcmFwcGluZyA/IGNvb3Jkc0JpZGlQYXJ0V3JhcHBlZCA6IGNvb3Jkc0JpZGlQYXJ0KVxuICAgICAgICAgICAgICAgICAgIChjbSwgbGluZU9iaiwgbGluZU5vLCBwcmVwYXJlZE1lYXN1cmUsIG9yZGVyLCB4LCB5KTtcbiAgICAgIGx0ciA9IHBhcnQubGV2ZWwgIT0gMTtcbiAgICAgIC8vIFRoZSBhd2t3YXJkIC0xIG9mZnNldHMgYXJlIG5lZWRlZCBiZWNhdXNlIGZpbmRGaXJzdCAoY2FsbGVkXG4gICAgICAvLyBvbiB0aGVzZSBiZWxvdykgd2lsbCB0cmVhdCBpdHMgZmlyc3QgYm91bmQgYXMgaW5jbHVzaXZlLFxuICAgICAgLy8gc2Vjb25kIGFzIGV4Y2x1c2l2ZSwgYnV0IHdlIHdhbnQgdG8gYWN0dWFsbHkgYWRkcmVzcyB0aGVcbiAgICAgIC8vIGNoYXJhY3RlcnMgaW4gdGhlIHBhcnQncyByYW5nZVxuICAgICAgYmVnaW4gPSBsdHIgPyBwYXJ0LmZyb20gOiBwYXJ0LnRvIC0gMTtcbiAgICAgIGVuZCA9IGx0ciA/IHBhcnQudG8gOiBwYXJ0LmZyb20gLSAxO1xuICAgIH1cblxuICAgIC8vIEEgYmluYXJ5IHNlYXJjaCB0byBmaW5kIHRoZSBmaXJzdCBjaGFyYWN0ZXIgd2hvc2UgYm91bmRpbmcgYm94XG4gICAgLy8gc3RhcnRzIGFmdGVyIHRoZSBjb29yZGluYXRlcy4gSWYgd2UgcnVuIGFjcm9zcyBhbnkgd2hvc2UgYm94IHdyYXBcbiAgICAvLyB0aGUgY29vcmRpbmF0ZXMsIHN0b3JlIHRoYXQuXG4gICAgdmFyIGNoQXJvdW5kID0gbnVsbCwgYm94QXJvdW5kID0gbnVsbDtcbiAgICB2YXIgY2ggPSBmaW5kRmlyc3QoZnVuY3Rpb24gKGNoKSB7XG4gICAgICB2YXIgYm94ID0gbWVhc3VyZUNoYXJQcmVwYXJlZChjbSwgcHJlcGFyZWRNZWFzdXJlLCBjaCk7XG4gICAgICBib3gudG9wICs9IHdpZGdldEhlaWdodDsgYm94LmJvdHRvbSArPSB3aWRnZXRIZWlnaHQ7XG4gICAgICBpZiAoIWJveElzQWZ0ZXIoYm94LCB4LCB5LCBmYWxzZSkpIHsgcmV0dXJuIGZhbHNlIH1cbiAgICAgIGlmIChib3gudG9wIDw9IHkgJiYgYm94LmxlZnQgPD0geCkge1xuICAgICAgICBjaEFyb3VuZCA9IGNoO1xuICAgICAgICBib3hBcm91bmQgPSBib3g7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIGJlZ2luLCBlbmQpO1xuXG4gICAgdmFyIGJhc2VYLCBzdGlja3ksIG91dHNpZGUgPSBmYWxzZTtcbiAgICAvLyBJZiBhIGJveCBhcm91bmQgdGhlIGNvb3JkaW5hdGVzIHdhcyBmb3VuZCwgdXNlIHRoYXRcbiAgICBpZiAoYm94QXJvdW5kKSB7XG4gICAgICAvLyBEaXN0aW5ndWlzaCBjb29yZGluYXRlcyBuZWFyZXIgdG8gdGhlIGxlZnQgb3IgcmlnaHQgc2lkZSBvZiB0aGUgYm94XG4gICAgICB2YXIgYXRMZWZ0ID0geCAtIGJveEFyb3VuZC5sZWZ0IDwgYm94QXJvdW5kLnJpZ2h0IC0geCwgYXRTdGFydCA9IGF0TGVmdCA9PSBsdHI7XG4gICAgICBjaCA9IGNoQXJvdW5kICsgKGF0U3RhcnQgPyAwIDogMSk7XG4gICAgICBzdGlja3kgPSBhdFN0YXJ0ID8gXCJhZnRlclwiIDogXCJiZWZvcmVcIjtcbiAgICAgIGJhc2VYID0gYXRMZWZ0ID8gYm94QXJvdW5kLmxlZnQgOiBib3hBcm91bmQucmlnaHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIChBZGp1c3QgZm9yIGV4dGVuZGVkIGJvdW5kLCBpZiBuZWNlc3NhcnkuKVxuICAgICAgaWYgKCFsdHIgJiYgKGNoID09IGVuZCB8fCBjaCA9PSBiZWdpbikpIHsgY2grKzsgfVxuICAgICAgLy8gVG8gZGV0ZXJtaW5lIHdoaWNoIHNpZGUgdG8gYXNzb2NpYXRlIHdpdGgsIGdldCB0aGUgYm94IHRvIHRoZVxuICAgICAgLy8gbGVmdCBvZiB0aGUgY2hhcmFjdGVyIGFuZCBjb21wYXJlIGl0J3MgdmVydGljYWwgcG9zaXRpb24gdG8gdGhlXG4gICAgICAvLyBjb29yZGluYXRlc1xuICAgICAgc3RpY2t5ID0gY2ggPT0gMCA/IFwiYWZ0ZXJcIiA6IGNoID09IGxpbmVPYmoudGV4dC5sZW5ndGggPyBcImJlZm9yZVwiIDpcbiAgICAgICAgKG1lYXN1cmVDaGFyUHJlcGFyZWQoY20sIHByZXBhcmVkTWVhc3VyZSwgY2ggLSAobHRyID8gMSA6IDApKS5ib3R0b20gKyB3aWRnZXRIZWlnaHQgPD0geSkgPT0gbHRyID9cbiAgICAgICAgXCJhZnRlclwiIDogXCJiZWZvcmVcIjtcbiAgICAgIC8vIE5vdyBnZXQgYWNjdXJhdGUgY29vcmRpbmF0ZXMgZm9yIHRoaXMgcGxhY2UsIGluIG9yZGVyIHRvIGdldCBhXG4gICAgICAvLyBiYXNlIFggcG9zaXRpb25cbiAgICAgIHZhciBjb29yZHMgPSBjdXJzb3JDb29yZHMoY20sIFBvcyhsaW5lTm8sIGNoLCBzdGlja3kpLCBcImxpbmVcIiwgbGluZU9iaiwgcHJlcGFyZWRNZWFzdXJlKTtcbiAgICAgIGJhc2VYID0gY29vcmRzLmxlZnQ7XG4gICAgICBvdXRzaWRlID0geSA8IGNvb3Jkcy50b3AgPyAtMSA6IHkgPj0gY29vcmRzLmJvdHRvbSA/IDEgOiAwO1xuICAgIH1cblxuICAgIGNoID0gc2tpcEV4dGVuZGluZ0NoYXJzKGxpbmVPYmoudGV4dCwgY2gsIDEpO1xuICAgIHJldHVybiBQb3NXaXRoSW5mbyhsaW5lTm8sIGNoLCBzdGlja3ksIG91dHNpZGUsIHggLSBiYXNlWClcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvb3Jkc0JpZGlQYXJ0KGNtLCBsaW5lT2JqLCBsaW5lTm8sIHByZXBhcmVkTWVhc3VyZSwgb3JkZXIsIHgsIHkpIHtcbiAgICAvLyBCaWRpIHBhcnRzIGFyZSBzb3J0ZWQgbGVmdC10by1yaWdodCwgYW5kIGluIGEgbm9uLWxpbmUtd3JhcHBpbmdcbiAgICAvLyBzaXR1YXRpb24sIHdlIGNhbiB0YWtlIHRoaXMgb3JkZXJpbmcgdG8gY29ycmVzcG9uZCB0byB0aGUgdmlzdWFsXG4gICAgLy8gb3JkZXJpbmcuIFRoaXMgZmluZHMgdGhlIGZpcnN0IHBhcnQgd2hvc2UgZW5kIGlzIGFmdGVyIHRoZSBnaXZlblxuICAgIC8vIGNvb3JkaW5hdGVzLlxuICAgIHZhciBpbmRleCA9IGZpbmRGaXJzdChmdW5jdGlvbiAoaSkge1xuICAgICAgdmFyIHBhcnQgPSBvcmRlcltpXSwgbHRyID0gcGFydC5sZXZlbCAhPSAxO1xuICAgICAgcmV0dXJuIGJveElzQWZ0ZXIoY3Vyc29yQ29vcmRzKGNtLCBQb3MobGluZU5vLCBsdHIgPyBwYXJ0LnRvIDogcGFydC5mcm9tLCBsdHIgPyBcImJlZm9yZVwiIDogXCJhZnRlclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImxpbmVcIiwgbGluZU9iaiwgcHJlcGFyZWRNZWFzdXJlKSwgeCwgeSwgdHJ1ZSlcbiAgICB9LCAwLCBvcmRlci5sZW5ndGggLSAxKTtcbiAgICB2YXIgcGFydCA9IG9yZGVyW2luZGV4XTtcbiAgICAvLyBJZiB0aGlzIGlzbid0IHRoZSBmaXJzdCBwYXJ0LCB0aGUgcGFydCdzIHN0YXJ0IGlzIGFsc28gYWZ0ZXJcbiAgICAvLyB0aGUgY29vcmRpbmF0ZXMsIGFuZCB0aGUgY29vcmRpbmF0ZXMgYXJlbid0IG9uIHRoZSBzYW1lIGxpbmUgYXNcbiAgICAvLyB0aGF0IHN0YXJ0LCBtb3ZlIG9uZSBwYXJ0IGJhY2suXG4gICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgdmFyIGx0ciA9IHBhcnQubGV2ZWwgIT0gMTtcbiAgICAgIHZhciBzdGFydCA9IGN1cnNvckNvb3JkcyhjbSwgUG9zKGxpbmVObywgbHRyID8gcGFydC5mcm9tIDogcGFydC50bywgbHRyID8gXCJhZnRlclwiIDogXCJiZWZvcmVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJsaW5lXCIsIGxpbmVPYmosIHByZXBhcmVkTWVhc3VyZSk7XG4gICAgICBpZiAoYm94SXNBZnRlcihzdGFydCwgeCwgeSwgdHJ1ZSkgJiYgc3RhcnQudG9wID4geSlcbiAgICAgICAgeyBwYXJ0ID0gb3JkZXJbaW5kZXggLSAxXTsgfVxuICAgIH1cbiAgICByZXR1cm4gcGFydFxuICB9XG5cbiAgZnVuY3Rpb24gY29vcmRzQmlkaVBhcnRXcmFwcGVkKGNtLCBsaW5lT2JqLCBfbGluZU5vLCBwcmVwYXJlZE1lYXN1cmUsIG9yZGVyLCB4LCB5KSB7XG4gICAgLy8gSW4gYSB3cmFwcGVkIGxpbmUsIHJ0bCB0ZXh0IG9uIHdyYXBwaW5nIGJvdW5kYXJpZXMgY2FuIGRvIHRoaW5nc1xuICAgIC8vIHRoYXQgZG9uJ3QgY29ycmVzcG9uZCB0byB0aGUgb3JkZXJpbmcgaW4gb3VyIGBvcmRlcmAgYXJyYXkgYXRcbiAgICAvLyBhbGwsIHNvIGEgYmluYXJ5IHNlYXJjaCBkb2Vzbid0IHdvcmssIGFuZCB3ZSB3YW50IHRvIHJldHVybiBhXG4gICAgLy8gcGFydCB0aGF0IG9ubHkgc3BhbnMgb25lIGxpbmUgc28gdGhhdCB0aGUgYmluYXJ5IHNlYXJjaCBpblxuICAgIC8vIGNvb3Jkc0NoYXJJbm5lciBpcyBzYWZlLiBBcyBzdWNoLCB3ZSBmaXJzdCBmaW5kIHRoZSBleHRlbnQgb2YgdGhlXG4gICAgLy8gd3JhcHBlZCBsaW5lLCBhbmQgdGhlbiBkbyBhIGZsYXQgc2VhcmNoIGluIHdoaWNoIHdlIGRpc2NhcmQgYW55XG4gICAgLy8gc3BhbnMgdGhhdCBhcmVuJ3Qgb24gdGhlIGxpbmUuXG4gICAgdmFyIHJlZiA9IHdyYXBwZWRMaW5lRXh0ZW50KGNtLCBsaW5lT2JqLCBwcmVwYXJlZE1lYXN1cmUsIHkpO1xuICAgIHZhciBiZWdpbiA9IHJlZi5iZWdpbjtcbiAgICB2YXIgZW5kID0gcmVmLmVuZDtcbiAgICBpZiAoL1xccy8udGVzdChsaW5lT2JqLnRleHQuY2hhckF0KGVuZCAtIDEpKSkgeyBlbmQtLTsgfVxuICAgIHZhciBwYXJ0ID0gbnVsbCwgY2xvc2VzdERpc3QgPSBudWxsO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3JkZXIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBwID0gb3JkZXJbaV07XG4gICAgICBpZiAocC5mcm9tID49IGVuZCB8fCBwLnRvIDw9IGJlZ2luKSB7IGNvbnRpbnVlIH1cbiAgICAgIHZhciBsdHIgPSBwLmxldmVsICE9IDE7XG4gICAgICB2YXIgZW5kWCA9IG1lYXN1cmVDaGFyUHJlcGFyZWQoY20sIHByZXBhcmVkTWVhc3VyZSwgbHRyID8gTWF0aC5taW4oZW5kLCBwLnRvKSAtIDEgOiBNYXRoLm1heChiZWdpbiwgcC5mcm9tKSkucmlnaHQ7XG4gICAgICAvLyBXZWlnaCBhZ2FpbnN0IHNwYW5zIGVuZGluZyBiZWZvcmUgdGhpcywgc28gdGhhdCB0aGV5IGFyZSBvbmx5XG4gICAgICAvLyBwaWNrZWQgaWYgbm90aGluZyBlbmRzIGFmdGVyXG4gICAgICB2YXIgZGlzdCA9IGVuZFggPCB4ID8geCAtIGVuZFggKyAxZTkgOiBlbmRYIC0geDtcbiAgICAgIGlmICghcGFydCB8fCBjbG9zZXN0RGlzdCA+IGRpc3QpIHtcbiAgICAgICAgcGFydCA9IHA7XG4gICAgICAgIGNsb3Nlc3REaXN0ID0gZGlzdDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFwYXJ0KSB7IHBhcnQgPSBvcmRlcltvcmRlci5sZW5ndGggLSAxXTsgfVxuICAgIC8vIENsaXAgdGhlIHBhcnQgdG8gdGhlIHdyYXBwZWQgbGluZS5cbiAgICBpZiAocGFydC5mcm9tIDwgYmVnaW4pIHsgcGFydCA9IHtmcm9tOiBiZWdpbiwgdG86IHBhcnQudG8sIGxldmVsOiBwYXJ0LmxldmVsfTsgfVxuICAgIGlmIChwYXJ0LnRvID4gZW5kKSB7IHBhcnQgPSB7ZnJvbTogcGFydC5mcm9tLCB0bzogZW5kLCBsZXZlbDogcGFydC5sZXZlbH07IH1cbiAgICByZXR1cm4gcGFydFxuICB9XG5cbiAgdmFyIG1lYXN1cmVUZXh0O1xuICAvLyBDb21wdXRlIHRoZSBkZWZhdWx0IHRleHQgaGVpZ2h0LlxuICBmdW5jdGlvbiB0ZXh0SGVpZ2h0KGRpc3BsYXkpIHtcbiAgICBpZiAoZGlzcGxheS5jYWNoZWRUZXh0SGVpZ2h0ICE9IG51bGwpIHsgcmV0dXJuIGRpc3BsYXkuY2FjaGVkVGV4dEhlaWdodCB9XG4gICAgaWYgKG1lYXN1cmVUZXh0ID09IG51bGwpIHtcbiAgICAgIG1lYXN1cmVUZXh0ID0gZWx0KFwicHJlXCIsIG51bGwsIFwiQ29kZU1pcnJvci1saW5lLWxpa2VcIik7XG4gICAgICAvLyBNZWFzdXJlIGEgYnVuY2ggb2YgbGluZXMsIGZvciBicm93c2VycyB0aGF0IGNvbXB1dGVcbiAgICAgIC8vIGZyYWN0aW9uYWwgaGVpZ2h0cy5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDk7ICsraSkge1xuICAgICAgICBtZWFzdXJlVGV4dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcInhcIikpO1xuICAgICAgICBtZWFzdXJlVGV4dC5hcHBlbmRDaGlsZChlbHQoXCJiclwiKSk7XG4gICAgICB9XG4gICAgICBtZWFzdXJlVGV4dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcInhcIikpO1xuICAgIH1cbiAgICByZW1vdmVDaGlsZHJlbkFuZEFkZChkaXNwbGF5Lm1lYXN1cmUsIG1lYXN1cmVUZXh0KTtcbiAgICB2YXIgaGVpZ2h0ID0gbWVhc3VyZVRleHQub2Zmc2V0SGVpZ2h0IC8gNTA7XG4gICAgaWYgKGhlaWdodCA+IDMpIHsgZGlzcGxheS5jYWNoZWRUZXh0SGVpZ2h0ID0gaGVpZ2h0OyB9XG4gICAgcmVtb3ZlQ2hpbGRyZW4oZGlzcGxheS5tZWFzdXJlKTtcbiAgICByZXR1cm4gaGVpZ2h0IHx8IDFcbiAgfVxuXG4gIC8vIENvbXB1dGUgdGhlIGRlZmF1bHQgY2hhcmFjdGVyIHdpZHRoLlxuICBmdW5jdGlvbiBjaGFyV2lkdGgoZGlzcGxheSkge1xuICAgIGlmIChkaXNwbGF5LmNhY2hlZENoYXJXaWR0aCAhPSBudWxsKSB7IHJldHVybiBkaXNwbGF5LmNhY2hlZENoYXJXaWR0aCB9XG4gICAgdmFyIGFuY2hvciA9IGVsdChcInNwYW5cIiwgXCJ4eHh4eHh4eHh4XCIpO1xuICAgIHZhciBwcmUgPSBlbHQoXCJwcmVcIiwgW2FuY2hvcl0sIFwiQ29kZU1pcnJvci1saW5lLWxpa2VcIik7XG4gICAgcmVtb3ZlQ2hpbGRyZW5BbmRBZGQoZGlzcGxheS5tZWFzdXJlLCBwcmUpO1xuICAgIHZhciByZWN0ID0gYW5jaG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCB3aWR0aCA9IChyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0KSAvIDEwO1xuICAgIGlmICh3aWR0aCA+IDIpIHsgZGlzcGxheS5jYWNoZWRDaGFyV2lkdGggPSB3aWR0aDsgfVxuICAgIHJldHVybiB3aWR0aCB8fCAxMFxuICB9XG5cbiAgLy8gRG8gYSBidWxrLXJlYWQgb2YgdGhlIERPTSBwb3NpdGlvbnMgYW5kIHNpemVzIG5lZWRlZCB0byBkcmF3IHRoZVxuICAvLyB2aWV3LCBzbyB0aGF0IHdlIGRvbid0IGludGVybGVhdmUgcmVhZGluZyBhbmQgd3JpdGluZyB0byB0aGUgRE9NLlxuICBmdW5jdGlvbiBnZXREaW1lbnNpb25zKGNtKSB7XG4gICAgdmFyIGQgPSBjbS5kaXNwbGF5LCBsZWZ0ID0ge30sIHdpZHRoID0ge307XG4gICAgdmFyIGd1dHRlckxlZnQgPSBkLmd1dHRlcnMuY2xpZW50TGVmdDtcbiAgICBmb3IgKHZhciBuID0gZC5ndXR0ZXJzLmZpcnN0Q2hpbGQsIGkgPSAwOyBuOyBuID0gbi5uZXh0U2libGluZywgKytpKSB7XG4gICAgICB2YXIgaWQgPSBjbS5kaXNwbGF5Lmd1dHRlclNwZWNzW2ldLmNsYXNzTmFtZTtcbiAgICAgIGxlZnRbaWRdID0gbi5vZmZzZXRMZWZ0ICsgbi5jbGllbnRMZWZ0ICsgZ3V0dGVyTGVmdDtcbiAgICAgIHdpZHRoW2lkXSA9IG4uY2xpZW50V2lkdGg7XG4gICAgfVxuICAgIHJldHVybiB7Zml4ZWRQb3M6IGNvbXBlbnNhdGVGb3JIU2Nyb2xsKGQpLFxuICAgICAgICAgICAgZ3V0dGVyVG90YWxXaWR0aDogZC5ndXR0ZXJzLm9mZnNldFdpZHRoLFxuICAgICAgICAgICAgZ3V0dGVyTGVmdDogbGVmdCxcbiAgICAgICAgICAgIGd1dHRlcldpZHRoOiB3aWR0aCxcbiAgICAgICAgICAgIHdyYXBwZXJXaWR0aDogZC53cmFwcGVyLmNsaWVudFdpZHRofVxuICB9XG5cbiAgLy8gQ29tcHV0ZXMgZGlzcGxheS5zY3JvbGxlci5zY3JvbGxMZWZ0ICsgZGlzcGxheS5ndXR0ZXJzLm9mZnNldFdpZHRoLFxuICAvLyBidXQgdXNpbmcgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IHRvIGdldCBhIHN1Yi1waXhlbC1hY2N1cmF0ZVxuICAvLyByZXN1bHQuXG4gIGZ1bmN0aW9uIGNvbXBlbnNhdGVGb3JIU2Nyb2xsKGRpc3BsYXkpIHtcbiAgICByZXR1cm4gZGlzcGxheS5zY3JvbGxlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC0gZGlzcGxheS5zaXplci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBlc3RpbWF0ZXMgdGhlIGhlaWdodCBvZiBhIGxpbmUsIHRvIHVzZSBhc1xuICAvLyBmaXJzdCBhcHByb3hpbWF0aW9uIHVudGlsIHRoZSBsaW5lIGJlY29tZXMgdmlzaWJsZSAoYW5kIGlzIHRodXNcbiAgLy8gcHJvcGVybHkgbWVhc3VyYWJsZSkuXG4gIGZ1bmN0aW9uIGVzdGltYXRlSGVpZ2h0KGNtKSB7XG4gICAgdmFyIHRoID0gdGV4dEhlaWdodChjbS5kaXNwbGF5KSwgd3JhcHBpbmcgPSBjbS5vcHRpb25zLmxpbmVXcmFwcGluZztcbiAgICB2YXIgcGVyTGluZSA9IHdyYXBwaW5nICYmIE1hdGgubWF4KDUsIGNtLmRpc3BsYXkuc2Nyb2xsZXIuY2xpZW50V2lkdGggLyBjaGFyV2lkdGgoY20uZGlzcGxheSkgLSAzKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIGlmIChsaW5lSXNIaWRkZW4oY20uZG9jLCBsaW5lKSkgeyByZXR1cm4gMCB9XG5cbiAgICAgIHZhciB3aWRnZXRzSGVpZ2h0ID0gMDtcbiAgICAgIGlmIChsaW5lLndpZGdldHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lLndpZGdldHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGxpbmUud2lkZ2V0c1tpXS5oZWlnaHQpIHsgd2lkZ2V0c0hlaWdodCArPSBsaW5lLndpZGdldHNbaV0uaGVpZ2h0OyB9XG4gICAgICB9IH1cblxuICAgICAgaWYgKHdyYXBwaW5nKVxuICAgICAgICB7IHJldHVybiB3aWRnZXRzSGVpZ2h0ICsgKE1hdGguY2VpbChsaW5lLnRleHQubGVuZ3RoIC8gcGVyTGluZSkgfHwgMSkgKiB0aCB9XG4gICAgICBlbHNlXG4gICAgICAgIHsgcmV0dXJuIHdpZGdldHNIZWlnaHQgKyB0aCB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZXN0aW1hdGVMaW5lSGVpZ2h0cyhjbSkge1xuICAgIHZhciBkb2MgPSBjbS5kb2MsIGVzdCA9IGVzdGltYXRlSGVpZ2h0KGNtKTtcbiAgICBkb2MuaXRlcihmdW5jdGlvbiAobGluZSkge1xuICAgICAgdmFyIGVzdEhlaWdodCA9IGVzdChsaW5lKTtcbiAgICAgIGlmIChlc3RIZWlnaHQgIT0gbGluZS5oZWlnaHQpIHsgdXBkYXRlTGluZUhlaWdodChsaW5lLCBlc3RIZWlnaHQpOyB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBHaXZlbiBhIG1vdXNlIGV2ZW50LCBmaW5kIHRoZSBjb3JyZXNwb25kaW5nIHBvc2l0aW9uLiBJZiBsaWJlcmFsXG4gIC8vIGlzIGZhbHNlLCBpdCBjaGVja3Mgd2hldGhlciBhIGd1dHRlciBvciBzY3JvbGxiYXIgd2FzIGNsaWNrZWQsXG4gIC8vIGFuZCByZXR1cm5zIG51bGwgaWYgaXQgd2FzLiBmb3JSZWN0IGlzIHVzZWQgYnkgcmVjdGFuZ3VsYXJcbiAgLy8gc2VsZWN0aW9ucywgYW5kIHRyaWVzIHRvIGVzdGltYXRlIGEgY2hhcmFjdGVyIHBvc2l0aW9uIGV2ZW4gZm9yXG4gIC8vIGNvb3JkaW5hdGVzIGJleW9uZCB0aGUgcmlnaHQgb2YgdGhlIHRleHQuXG4gIGZ1bmN0aW9uIHBvc0Zyb21Nb3VzZShjbSwgZSwgbGliZXJhbCwgZm9yUmVjdCkge1xuICAgIHZhciBkaXNwbGF5ID0gY20uZGlzcGxheTtcbiAgICBpZiAoIWxpYmVyYWwgJiYgZV90YXJnZXQoZSkuZ2V0QXR0cmlidXRlKFwiY20tbm90LWNvbnRlbnRcIikgPT0gXCJ0cnVlXCIpIHsgcmV0dXJuIG51bGwgfVxuXG4gICAgdmFyIHgsIHksIHNwYWNlID0gZGlzcGxheS5saW5lU3BhY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgLy8gRmFpbHMgdW5wcmVkaWN0YWJseSBvbiBJRVs2N10gd2hlbiBtb3VzZSBpcyBkcmFnZ2VkIGFyb3VuZCBxdWlja2x5LlxuICAgIHRyeSB7IHggPSBlLmNsaWVudFggLSBzcGFjZS5sZWZ0OyB5ID0gZS5jbGllbnRZIC0gc3BhY2UudG9wOyB9XG4gICAgY2F0Y2ggKGUkMSkgeyByZXR1cm4gbnVsbCB9XG4gICAgdmFyIGNvb3JkcyA9IGNvb3Jkc0NoYXIoY20sIHgsIHkpLCBsaW5lO1xuICAgIGlmIChmb3JSZWN0ICYmIGNvb3Jkcy54UmVsID4gMCAmJiAobGluZSA9IGdldExpbmUoY20uZG9jLCBjb29yZHMubGluZSkudGV4dCkubGVuZ3RoID09IGNvb3Jkcy5jaCkge1xuICAgICAgdmFyIGNvbERpZmYgPSBjb3VudENvbHVtbihsaW5lLCBsaW5lLmxlbmd0aCwgY20ub3B0aW9ucy50YWJTaXplKSAtIGxpbmUubGVuZ3RoO1xuICAgICAgY29vcmRzID0gUG9zKGNvb3Jkcy5saW5lLCBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKCh4IC0gcGFkZGluZ0goY20uZGlzcGxheSkubGVmdCkgLyBjaGFyV2lkdGgoY20uZGlzcGxheSkpIC0gY29sRGlmZikpO1xuICAgIH1cbiAgICByZXR1cm4gY29vcmRzXG4gIH1cblxuICAvLyBGaW5kIHRoZSB2aWV3IGVsZW1lbnQgY29ycmVzcG9uZGluZyB0byBhIGdpdmVuIGxpbmUuIFJldHVybiBudWxsXG4gIC8vIHdoZW4gdGhlIGxpbmUgaXNuJ3QgdmlzaWJsZS5cbiAgZnVuY3Rpb24gZmluZFZpZXdJbmRleChjbSwgbikge1xuICAgIGlmIChuID49IGNtLmRpc3BsYXkudmlld1RvKSB7IHJldHVybiBudWxsIH1cbiAgICBuIC09IGNtLmRpc3BsYXkudmlld0Zyb207XG4gICAgaWYgKG4gPCAwKSB7IHJldHVybiBudWxsIH1cbiAgICB2YXIgdmlldyA9IGNtLmRpc3BsYXkudmlldztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyBpKyspIHtcbiAgICAgIG4gLT0gdmlld1tpXS5zaXplO1xuICAgICAgaWYgKG4gPCAwKSB7IHJldHVybiBpIH1cbiAgICB9XG4gIH1cblxuICAvLyBVcGRhdGVzIHRoZSBkaXNwbGF5LnZpZXcgZGF0YSBzdHJ1Y3R1cmUgZm9yIGEgZ2l2ZW4gY2hhbmdlIHRvIHRoZVxuICAvLyBkb2N1bWVudC4gRnJvbSBhbmQgdG8gYXJlIGluIHByZS1jaGFuZ2UgY29vcmRpbmF0ZXMuIExlbmRpZmYgaXNcbiAgLy8gdGhlIGFtb3VudCBvZiBsaW5lcyBhZGRlZCBvciBzdWJ0cmFjdGVkIGJ5IHRoZSBjaGFuZ2UuIFRoaXMgaXNcbiAgLy8gdXNlZCBmb3IgY2hhbmdlcyB0aGF0IHNwYW4gbXVsdGlwbGUgbGluZXMsIG9yIGNoYW5nZSB0aGUgd2F5XG4gIC8vIGxpbmVzIGFyZSBkaXZpZGVkIGludG8gdmlzdWFsIGxpbmVzLiByZWdMaW5lQ2hhbmdlIChiZWxvdylcbiAgLy8gcmVnaXN0ZXJzIHNpbmdsZS1saW5lIGNoYW5nZXMuXG4gIGZ1bmN0aW9uIHJlZ0NoYW5nZShjbSwgZnJvbSwgdG8sIGxlbmRpZmYpIHtcbiAgICBpZiAoZnJvbSA9PSBudWxsKSB7IGZyb20gPSBjbS5kb2MuZmlyc3Q7IH1cbiAgICBpZiAodG8gPT0gbnVsbCkgeyB0byA9IGNtLmRvYy5maXJzdCArIGNtLmRvYy5zaXplOyB9XG4gICAgaWYgKCFsZW5kaWZmKSB7IGxlbmRpZmYgPSAwOyB9XG5cbiAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXk7XG4gICAgaWYgKGxlbmRpZmYgJiYgdG8gPCBkaXNwbGF5LnZpZXdUbyAmJlxuICAgICAgICAoZGlzcGxheS51cGRhdGVMaW5lTnVtYmVycyA9PSBudWxsIHx8IGRpc3BsYXkudXBkYXRlTGluZU51bWJlcnMgPiBmcm9tKSlcbiAgICAgIHsgZGlzcGxheS51cGRhdGVMaW5lTnVtYmVycyA9IGZyb207IH1cblxuICAgIGNtLmN1ck9wLnZpZXdDaGFuZ2VkID0gdHJ1ZTtcblxuICAgIGlmIChmcm9tID49IGRpc3BsYXkudmlld1RvKSB7IC8vIENoYW5nZSBhZnRlclxuICAgICAgaWYgKHNhd0NvbGxhcHNlZFNwYW5zICYmIHZpc3VhbExpbmVObyhjbS5kb2MsIGZyb20pIDwgZGlzcGxheS52aWV3VG8pXG4gICAgICAgIHsgcmVzZXRWaWV3KGNtKTsgfVxuICAgIH0gZWxzZSBpZiAodG8gPD0gZGlzcGxheS52aWV3RnJvbSkgeyAvLyBDaGFuZ2UgYmVmb3JlXG4gICAgICBpZiAoc2F3Q29sbGFwc2VkU3BhbnMgJiYgdmlzdWFsTGluZUVuZE5vKGNtLmRvYywgdG8gKyBsZW5kaWZmKSA+IGRpc3BsYXkudmlld0Zyb20pIHtcbiAgICAgICAgcmVzZXRWaWV3KGNtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3BsYXkudmlld0Zyb20gKz0gbGVuZGlmZjtcbiAgICAgICAgZGlzcGxheS52aWV3VG8gKz0gbGVuZGlmZjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZyb20gPD0gZGlzcGxheS52aWV3RnJvbSAmJiB0byA+PSBkaXNwbGF5LnZpZXdUbykgeyAvLyBGdWxsIG92ZXJsYXBcbiAgICAgIHJlc2V0VmlldyhjbSk7XG4gICAgfSBlbHNlIGlmIChmcm9tIDw9IGRpc3BsYXkudmlld0Zyb20pIHsgLy8gVG9wIG92ZXJsYXBcbiAgICAgIHZhciBjdXQgPSB2aWV3Q3V0dGluZ1BvaW50KGNtLCB0bywgdG8gKyBsZW5kaWZmLCAxKTtcbiAgICAgIGlmIChjdXQpIHtcbiAgICAgICAgZGlzcGxheS52aWV3ID0gZGlzcGxheS52aWV3LnNsaWNlKGN1dC5pbmRleCk7XG4gICAgICAgIGRpc3BsYXkudmlld0Zyb20gPSBjdXQubGluZU47XG4gICAgICAgIGRpc3BsYXkudmlld1RvICs9IGxlbmRpZmY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNldFZpZXcoY20pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG8gPj0gZGlzcGxheS52aWV3VG8pIHsgLy8gQm90dG9tIG92ZXJsYXBcbiAgICAgIHZhciBjdXQkMSA9IHZpZXdDdXR0aW5nUG9pbnQoY20sIGZyb20sIGZyb20sIC0xKTtcbiAgICAgIGlmIChjdXQkMSkge1xuICAgICAgICBkaXNwbGF5LnZpZXcgPSBkaXNwbGF5LnZpZXcuc2xpY2UoMCwgY3V0JDEuaW5kZXgpO1xuICAgICAgICBkaXNwbGF5LnZpZXdUbyA9IGN1dCQxLmxpbmVOO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzZXRWaWV3KGNtKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgeyAvLyBHYXAgaW4gdGhlIG1pZGRsZVxuICAgICAgdmFyIGN1dFRvcCA9IHZpZXdDdXR0aW5nUG9pbnQoY20sIGZyb20sIGZyb20sIC0xKTtcbiAgICAgIHZhciBjdXRCb3QgPSB2aWV3Q3V0dGluZ1BvaW50KGNtLCB0bywgdG8gKyBsZW5kaWZmLCAxKTtcbiAgICAgIGlmIChjdXRUb3AgJiYgY3V0Qm90KSB7XG4gICAgICAgIGRpc3BsYXkudmlldyA9IGRpc3BsYXkudmlldy5zbGljZSgwLCBjdXRUb3AuaW5kZXgpXG4gICAgICAgICAgLmNvbmNhdChidWlsZFZpZXdBcnJheShjbSwgY3V0VG9wLmxpbmVOLCBjdXRCb3QubGluZU4pKVxuICAgICAgICAgIC5jb25jYXQoZGlzcGxheS52aWV3LnNsaWNlKGN1dEJvdC5pbmRleCkpO1xuICAgICAgICBkaXNwbGF5LnZpZXdUbyArPSBsZW5kaWZmO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzZXRWaWV3KGNtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZXh0ID0gZGlzcGxheS5leHRlcm5hbE1lYXN1cmVkO1xuICAgIGlmIChleHQpIHtcbiAgICAgIGlmICh0byA8IGV4dC5saW5lTilcbiAgICAgICAgeyBleHQubGluZU4gKz0gbGVuZGlmZjsgfVxuICAgICAgZWxzZSBpZiAoZnJvbSA8IGV4dC5saW5lTiArIGV4dC5zaXplKVxuICAgICAgICB7IGRpc3BsYXkuZXh0ZXJuYWxNZWFzdXJlZCA9IG51bGw7IH1cbiAgICB9XG4gIH1cblxuICAvLyBSZWdpc3RlciBhIGNoYW5nZSB0byBhIHNpbmdsZSBsaW5lLiBUeXBlIG11c3QgYmUgb25lIG9mIFwidGV4dFwiLFxuICAvLyBcImd1dHRlclwiLCBcImNsYXNzXCIsIFwid2lkZ2V0XCJcbiAgZnVuY3Rpb24gcmVnTGluZUNoYW5nZShjbSwgbGluZSwgdHlwZSkge1xuICAgIGNtLmN1ck9wLnZpZXdDaGFuZ2VkID0gdHJ1ZTtcbiAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXksIGV4dCA9IGNtLmRpc3BsYXkuZXh0ZXJuYWxNZWFzdXJlZDtcbiAgICBpZiAoZXh0ICYmIGxpbmUgPj0gZXh0LmxpbmVOICYmIGxpbmUgPCBleHQubGluZU4gKyBleHQuc2l6ZSlcbiAgICAgIHsgZGlzcGxheS5leHRlcm5hbE1lYXN1cmVkID0gbnVsbDsgfVxuXG4gICAgaWYgKGxpbmUgPCBkaXNwbGF5LnZpZXdGcm9tIHx8IGxpbmUgPj0gZGlzcGxheS52aWV3VG8pIHsgcmV0dXJuIH1cbiAgICB2YXIgbGluZVZpZXcgPSBkaXNwbGF5LnZpZXdbZmluZFZpZXdJbmRleChjbSwgbGluZSldO1xuICAgIGlmIChsaW5lVmlldy5ub2RlID09IG51bGwpIHsgcmV0dXJuIH1cbiAgICB2YXIgYXJyID0gbGluZVZpZXcuY2hhbmdlcyB8fCAobGluZVZpZXcuY2hhbmdlcyA9IFtdKTtcbiAgICBpZiAoaW5kZXhPZihhcnIsIHR5cGUpID09IC0xKSB7IGFyci5wdXNoKHR5cGUpOyB9XG4gIH1cblxuICAvLyBDbGVhciB0aGUgdmlldy5cbiAgZnVuY3Rpb24gcmVzZXRWaWV3KGNtKSB7XG4gICAgY20uZGlzcGxheS52aWV3RnJvbSA9IGNtLmRpc3BsYXkudmlld1RvID0gY20uZG9jLmZpcnN0O1xuICAgIGNtLmRpc3BsYXkudmlldyA9IFtdO1xuICAgIGNtLmRpc3BsYXkudmlld09mZnNldCA9IDA7XG4gIH1cblxuICBmdW5jdGlvbiB2aWV3Q3V0dGluZ1BvaW50KGNtLCBvbGROLCBuZXdOLCBkaXIpIHtcbiAgICB2YXIgaW5kZXggPSBmaW5kVmlld0luZGV4KGNtLCBvbGROKSwgZGlmZiwgdmlldyA9IGNtLmRpc3BsYXkudmlldztcbiAgICBpZiAoIXNhd0NvbGxhcHNlZFNwYW5zIHx8IG5ld04gPT0gY20uZG9jLmZpcnN0ICsgY20uZG9jLnNpemUpXG4gICAgICB7IHJldHVybiB7aW5kZXg6IGluZGV4LCBsaW5lTjogbmV3Tn0gfVxuICAgIHZhciBuID0gY20uZGlzcGxheS52aWV3RnJvbTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGV4OyBpKyspXG4gICAgICB7IG4gKz0gdmlld1tpXS5zaXplOyB9XG4gICAgaWYgKG4gIT0gb2xkTikge1xuICAgICAgaWYgKGRpciA+IDApIHtcbiAgICAgICAgaWYgKGluZGV4ID09IHZpZXcubGVuZ3RoIC0gMSkgeyByZXR1cm4gbnVsbCB9XG4gICAgICAgIGRpZmYgPSAobiArIHZpZXdbaW5kZXhdLnNpemUpIC0gb2xkTjtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpZmYgPSBuIC0gb2xkTjtcbiAgICAgIH1cbiAgICAgIG9sZE4gKz0gZGlmZjsgbmV3TiArPSBkaWZmO1xuICAgIH1cbiAgICB3aGlsZSAodmlzdWFsTGluZU5vKGNtLmRvYywgbmV3TikgIT0gbmV3Tikge1xuICAgICAgaWYgKGluZGV4ID09IChkaXIgPCAwID8gMCA6IHZpZXcubGVuZ3RoIC0gMSkpIHsgcmV0dXJuIG51bGwgfVxuICAgICAgbmV3TiArPSBkaXIgKiB2aWV3W2luZGV4IC0gKGRpciA8IDAgPyAxIDogMCldLnNpemU7XG4gICAgICBpbmRleCArPSBkaXI7XG4gICAgfVxuICAgIHJldHVybiB7aW5kZXg6IGluZGV4LCBsaW5lTjogbmV3Tn1cbiAgfVxuXG4gIC8vIEZvcmNlIHRoZSB2aWV3IHRvIGNvdmVyIGEgZ2l2ZW4gcmFuZ2UsIGFkZGluZyBlbXB0eSB2aWV3IGVsZW1lbnRcbiAgLy8gb3IgY2xpcHBpbmcgb2ZmIGV4aXN0aW5nIG9uZXMgYXMgbmVlZGVkLlxuICBmdW5jdGlvbiBhZGp1c3RWaWV3KGNtLCBmcm9tLCB0bykge1xuICAgIHZhciBkaXNwbGF5ID0gY20uZGlzcGxheSwgdmlldyA9IGRpc3BsYXkudmlldztcbiAgICBpZiAodmlldy5sZW5ndGggPT0gMCB8fCBmcm9tID49IGRpc3BsYXkudmlld1RvIHx8IHRvIDw9IGRpc3BsYXkudmlld0Zyb20pIHtcbiAgICAgIGRpc3BsYXkudmlldyA9IGJ1aWxkVmlld0FycmF5KGNtLCBmcm9tLCB0byk7XG4gICAgICBkaXNwbGF5LnZpZXdGcm9tID0gZnJvbTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGRpc3BsYXkudmlld0Zyb20gPiBmcm9tKVxuICAgICAgICB7IGRpc3BsYXkudmlldyA9IGJ1aWxkVmlld0FycmF5KGNtLCBmcm9tLCBkaXNwbGF5LnZpZXdGcm9tKS5jb25jYXQoZGlzcGxheS52aWV3KTsgfVxuICAgICAgZWxzZSBpZiAoZGlzcGxheS52aWV3RnJvbSA8IGZyb20pXG4gICAgICAgIHsgZGlzcGxheS52aWV3ID0gZGlzcGxheS52aWV3LnNsaWNlKGZpbmRWaWV3SW5kZXgoY20sIGZyb20pKTsgfVxuICAgICAgZGlzcGxheS52aWV3RnJvbSA9IGZyb207XG4gICAgICBpZiAoZGlzcGxheS52aWV3VG8gPCB0bylcbiAgICAgICAgeyBkaXNwbGF5LnZpZXcgPSBkaXNwbGF5LnZpZXcuY29uY2F0KGJ1aWxkVmlld0FycmF5KGNtLCBkaXNwbGF5LnZpZXdUbywgdG8pKTsgfVxuICAgICAgZWxzZSBpZiAoZGlzcGxheS52aWV3VG8gPiB0bylcbiAgICAgICAgeyBkaXNwbGF5LnZpZXcgPSBkaXNwbGF5LnZpZXcuc2xpY2UoMCwgZmluZFZpZXdJbmRleChjbSwgdG8pKTsgfVxuICAgIH1cbiAgICBkaXNwbGF5LnZpZXdUbyA9IHRvO1xuICB9XG5cbiAgLy8gQ291bnQgdGhlIG51bWJlciBvZiBsaW5lcyBpbiB0aGUgdmlldyB3aG9zZSBET00gcmVwcmVzZW50YXRpb24gaXNcbiAgLy8gb3V0IG9mIGRhdGUgKG9yIG5vbmV4aXN0ZW50KS5cbiAgZnVuY3Rpb24gY291bnREaXJ0eVZpZXcoY20pIHtcbiAgICB2YXIgdmlldyA9IGNtLmRpc3BsYXkudmlldywgZGlydHkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmlldy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGxpbmVWaWV3ID0gdmlld1tpXTtcbiAgICAgIGlmICghbGluZVZpZXcuaGlkZGVuICYmICghbGluZVZpZXcubm9kZSB8fCBsaW5lVmlldy5jaGFuZ2VzKSkgeyArK2RpcnR5OyB9XG4gICAgfVxuICAgIHJldHVybiBkaXJ0eVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlU2VsZWN0aW9uKGNtKSB7XG4gICAgY20uZGlzcGxheS5pbnB1dC5zaG93U2VsZWN0aW9uKGNtLmRpc3BsYXkuaW5wdXQucHJlcGFyZVNlbGVjdGlvbigpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHByZXBhcmVTZWxlY3Rpb24oY20sIHByaW1hcnkpIHtcbiAgICBpZiAoIHByaW1hcnkgPT09IHZvaWQgMCApIHByaW1hcnkgPSB0cnVlO1xuXG4gICAgdmFyIGRvYyA9IGNtLmRvYywgcmVzdWx0ID0ge307XG4gICAgdmFyIGN1ckZyYWdtZW50ID0gcmVzdWx0LmN1cnNvcnMgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgdmFyIHNlbEZyYWdtZW50ID0gcmVzdWx0LnNlbGVjdGlvbiA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZG9jLnNlbC5yYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghcHJpbWFyeSAmJiBpID09IGRvYy5zZWwucHJpbUluZGV4KSB7IGNvbnRpbnVlIH1cbiAgICAgIHZhciByYW5nZSA9IGRvYy5zZWwucmFuZ2VzW2ldO1xuICAgICAgaWYgKHJhbmdlLmZyb20oKS5saW5lID49IGNtLmRpc3BsYXkudmlld1RvIHx8IHJhbmdlLnRvKCkubGluZSA8IGNtLmRpc3BsYXkudmlld0Zyb20pIHsgY29udGludWUgfVxuICAgICAgdmFyIGNvbGxhcHNlZCA9IHJhbmdlLmVtcHR5KCk7XG4gICAgICBpZiAoY29sbGFwc2VkIHx8IGNtLm9wdGlvbnMuc2hvd0N1cnNvcldoZW5TZWxlY3RpbmcpXG4gICAgICAgIHsgZHJhd1NlbGVjdGlvbkN1cnNvcihjbSwgcmFuZ2UuaGVhZCwgY3VyRnJhZ21lbnQpOyB9XG4gICAgICBpZiAoIWNvbGxhcHNlZClcbiAgICAgICAgeyBkcmF3U2VsZWN0aW9uUmFuZ2UoY20sIHJhbmdlLCBzZWxGcmFnbWVudCk7IH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLy8gRHJhd3MgYSBjdXJzb3IgZm9yIHRoZSBnaXZlbiByYW5nZVxuICBmdW5jdGlvbiBkcmF3U2VsZWN0aW9uQ3Vyc29yKGNtLCBoZWFkLCBvdXRwdXQpIHtcbiAgICB2YXIgcG9zID0gY3Vyc29yQ29vcmRzKGNtLCBoZWFkLCBcImRpdlwiLCBudWxsLCBudWxsLCAhY20ub3B0aW9ucy5zaW5nbGVDdXJzb3JIZWlnaHRQZXJMaW5lKTtcblxuICAgIHZhciBjdXJzb3IgPSBvdXRwdXQuYXBwZW5kQ2hpbGQoZWx0KFwiZGl2XCIsIFwiXFx1MDBhMFwiLCBcIkNvZGVNaXJyb3ItY3Vyc29yXCIpKTtcbiAgICBjdXJzb3Iuc3R5bGUubGVmdCA9IHBvcy5sZWZ0ICsgXCJweFwiO1xuICAgIGN1cnNvci5zdHlsZS50b3AgPSBwb3MudG9wICsgXCJweFwiO1xuICAgIGN1cnNvci5zdHlsZS5oZWlnaHQgPSBNYXRoLm1heCgwLCBwb3MuYm90dG9tIC0gcG9zLnRvcCkgKiBjbS5vcHRpb25zLmN1cnNvckhlaWdodCArIFwicHhcIjtcblxuICAgIGlmIChwb3Mub3RoZXIpIHtcbiAgICAgIC8vIFNlY29uZGFyeSBjdXJzb3IsIHNob3duIHdoZW4gb24gYSAnanVtcCcgaW4gYmktZGlyZWN0aW9uYWwgdGV4dFxuICAgICAgdmFyIG90aGVyQ3Vyc29yID0gb3V0cHV0LmFwcGVuZENoaWxkKGVsdChcImRpdlwiLCBcIlxcdTAwYTBcIiwgXCJDb2RlTWlycm9yLWN1cnNvciBDb2RlTWlycm9yLXNlY29uZGFyeWN1cnNvclwiKSk7XG4gICAgICBvdGhlckN1cnNvci5zdHlsZS5kaXNwbGF5ID0gXCJcIjtcbiAgICAgIG90aGVyQ3Vyc29yLnN0eWxlLmxlZnQgPSBwb3Mub3RoZXIubGVmdCArIFwicHhcIjtcbiAgICAgIG90aGVyQ3Vyc29yLnN0eWxlLnRvcCA9IHBvcy5vdGhlci50b3AgKyBcInB4XCI7XG4gICAgICBvdGhlckN1cnNvci5zdHlsZS5oZWlnaHQgPSAocG9zLm90aGVyLmJvdHRvbSAtIHBvcy5vdGhlci50b3ApICogLjg1ICsgXCJweFwiO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNtcENvb3JkcyhhLCBiKSB7IHJldHVybiBhLnRvcCAtIGIudG9wIHx8IGEubGVmdCAtIGIubGVmdCB9XG5cbiAgLy8gRHJhd3MgdGhlIGdpdmVuIHJhbmdlIGFzIGEgaGlnaGxpZ2h0ZWQgc2VsZWN0aW9uXG4gIGZ1bmN0aW9uIGRyYXdTZWxlY3Rpb25SYW5nZShjbSwgcmFuZ2UsIG91dHB1dCkge1xuICAgIHZhciBkaXNwbGF5ID0gY20uZGlzcGxheSwgZG9jID0gY20uZG9jO1xuICAgIHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICB2YXIgcGFkZGluZyA9IHBhZGRpbmdIKGNtLmRpc3BsYXkpLCBsZWZ0U2lkZSA9IHBhZGRpbmcubGVmdDtcbiAgICB2YXIgcmlnaHRTaWRlID0gTWF0aC5tYXgoZGlzcGxheS5zaXplcldpZHRoLCBkaXNwbGF5V2lkdGgoY20pIC0gZGlzcGxheS5zaXplci5vZmZzZXRMZWZ0KSAtIHBhZGRpbmcucmlnaHQ7XG4gICAgdmFyIGRvY0xUUiA9IGRvYy5kaXJlY3Rpb24gPT0gXCJsdHJcIjtcblxuICAgIGZ1bmN0aW9uIGFkZChsZWZ0LCB0b3AsIHdpZHRoLCBib3R0b20pIHtcbiAgICAgIGlmICh0b3AgPCAwKSB7IHRvcCA9IDA7IH1cbiAgICAgIHRvcCA9IE1hdGgucm91bmQodG9wKTtcbiAgICAgIGJvdHRvbSA9IE1hdGgucm91bmQoYm90dG9tKTtcbiAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGVsdChcImRpdlwiLCBudWxsLCBcIkNvZGVNaXJyb3Itc2VsZWN0ZWRcIiwgKFwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiBcIiArIGxlZnQgKyBcInB4O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBcIiArIHRvcCArIFwicHg7IHdpZHRoOiBcIiArICh3aWR0aCA9PSBudWxsID8gcmlnaHRTaWRlIC0gbGVmdCA6IHdpZHRoKSArIFwicHg7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiICsgKGJvdHRvbSAtIHRvcCkgKyBcInB4XCIpKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZHJhd0ZvckxpbmUobGluZSwgZnJvbUFyZywgdG9BcmcpIHtcbiAgICAgIHZhciBsaW5lT2JqID0gZ2V0TGluZShkb2MsIGxpbmUpO1xuICAgICAgdmFyIGxpbmVMZW4gPSBsaW5lT2JqLnRleHQubGVuZ3RoO1xuICAgICAgdmFyIHN0YXJ0LCBlbmQ7XG4gICAgICBmdW5jdGlvbiBjb29yZHMoY2gsIGJpYXMpIHtcbiAgICAgICAgcmV0dXJuIGNoYXJDb29yZHMoY20sIFBvcyhsaW5lLCBjaCksIFwiZGl2XCIsIGxpbmVPYmosIGJpYXMpXG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHdyYXBYKHBvcywgZGlyLCBzaWRlKSB7XG4gICAgICAgIHZhciBleHRlbnQgPSB3cmFwcGVkTGluZUV4dGVudENoYXIoY20sIGxpbmVPYmosIG51bGwsIHBvcyk7XG4gICAgICAgIHZhciBwcm9wID0gKGRpciA9PSBcImx0clwiKSA9PSAoc2lkZSA9PSBcImFmdGVyXCIpID8gXCJsZWZ0XCIgOiBcInJpZ2h0XCI7XG4gICAgICAgIHZhciBjaCA9IHNpZGUgPT0gXCJhZnRlclwiID8gZXh0ZW50LmJlZ2luIDogZXh0ZW50LmVuZCAtICgvXFxzLy50ZXN0KGxpbmVPYmoudGV4dC5jaGFyQXQoZXh0ZW50LmVuZCAtIDEpKSA/IDIgOiAxKTtcbiAgICAgICAgcmV0dXJuIGNvb3JkcyhjaCwgcHJvcClbcHJvcF1cbiAgICAgIH1cblxuICAgICAgdmFyIG9yZGVyID0gZ2V0T3JkZXIobGluZU9iaiwgZG9jLmRpcmVjdGlvbik7XG4gICAgICBpdGVyYXRlQmlkaVNlY3Rpb25zKG9yZGVyLCBmcm9tQXJnIHx8IDAsIHRvQXJnID09IG51bGwgPyBsaW5lTGVuIDogdG9BcmcsIGZ1bmN0aW9uIChmcm9tLCB0bywgZGlyLCBpKSB7XG4gICAgICAgIHZhciBsdHIgPSBkaXIgPT0gXCJsdHJcIjtcbiAgICAgICAgdmFyIGZyb21Qb3MgPSBjb29yZHMoZnJvbSwgbHRyID8gXCJsZWZ0XCIgOiBcInJpZ2h0XCIpO1xuICAgICAgICB2YXIgdG9Qb3MgPSBjb29yZHModG8gLSAxLCBsdHIgPyBcInJpZ2h0XCIgOiBcImxlZnRcIik7XG5cbiAgICAgICAgdmFyIG9wZW5TdGFydCA9IGZyb21BcmcgPT0gbnVsbCAmJiBmcm9tID09IDAsIG9wZW5FbmQgPSB0b0FyZyA9PSBudWxsICYmIHRvID09IGxpbmVMZW47XG4gICAgICAgIHZhciBmaXJzdCA9IGkgPT0gMCwgbGFzdCA9ICFvcmRlciB8fCBpID09IG9yZGVyLmxlbmd0aCAtIDE7XG4gICAgICAgIGlmICh0b1Bvcy50b3AgLSBmcm9tUG9zLnRvcCA8PSAzKSB7IC8vIFNpbmdsZSBsaW5lXG4gICAgICAgICAgdmFyIG9wZW5MZWZ0ID0gKGRvY0xUUiA/IG9wZW5TdGFydCA6IG9wZW5FbmQpICYmIGZpcnN0O1xuICAgICAgICAgIHZhciBvcGVuUmlnaHQgPSAoZG9jTFRSID8gb3BlbkVuZCA6IG9wZW5TdGFydCkgJiYgbGFzdDtcbiAgICAgICAgICB2YXIgbGVmdCA9IG9wZW5MZWZ0ID8gbGVmdFNpZGUgOiAobHRyID8gZnJvbVBvcyA6IHRvUG9zKS5sZWZ0O1xuICAgICAgICAgIHZhciByaWdodCA9IG9wZW5SaWdodCA/IHJpZ2h0U2lkZSA6IChsdHIgPyB0b1BvcyA6IGZyb21Qb3MpLnJpZ2h0O1xuICAgICAgICAgIGFkZChsZWZ0LCBmcm9tUG9zLnRvcCwgcmlnaHQgLSBsZWZ0LCBmcm9tUG9zLmJvdHRvbSk7XG4gICAgICAgIH0gZWxzZSB7IC8vIE11bHRpcGxlIGxpbmVzXG4gICAgICAgICAgdmFyIHRvcExlZnQsIHRvcFJpZ2h0LCBib3RMZWZ0LCBib3RSaWdodDtcbiAgICAgICAgICBpZiAobHRyKSB7XG4gICAgICAgICAgICB0b3BMZWZ0ID0gZG9jTFRSICYmIG9wZW5TdGFydCAmJiBmaXJzdCA/IGxlZnRTaWRlIDogZnJvbVBvcy5sZWZ0O1xuICAgICAgICAgICAgdG9wUmlnaHQgPSBkb2NMVFIgPyByaWdodFNpZGUgOiB3cmFwWChmcm9tLCBkaXIsIFwiYmVmb3JlXCIpO1xuICAgICAgICAgICAgYm90TGVmdCA9IGRvY0xUUiA/IGxlZnRTaWRlIDogd3JhcFgodG8sIGRpciwgXCJhZnRlclwiKTtcbiAgICAgICAgICAgIGJvdFJpZ2h0ID0gZG9jTFRSICYmIG9wZW5FbmQgJiYgbGFzdCA/IHJpZ2h0U2lkZSA6IHRvUG9zLnJpZ2h0O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0b3BMZWZ0ID0gIWRvY0xUUiA/IGxlZnRTaWRlIDogd3JhcFgoZnJvbSwgZGlyLCBcImJlZm9yZVwiKTtcbiAgICAgICAgICAgIHRvcFJpZ2h0ID0gIWRvY0xUUiAmJiBvcGVuU3RhcnQgJiYgZmlyc3QgPyByaWdodFNpZGUgOiBmcm9tUG9zLnJpZ2h0O1xuICAgICAgICAgICAgYm90TGVmdCA9ICFkb2NMVFIgJiYgb3BlbkVuZCAmJiBsYXN0ID8gbGVmdFNpZGUgOiB0b1Bvcy5sZWZ0O1xuICAgICAgICAgICAgYm90UmlnaHQgPSAhZG9jTFRSID8gcmlnaHRTaWRlIDogd3JhcFgodG8sIGRpciwgXCJhZnRlclwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYWRkKHRvcExlZnQsIGZyb21Qb3MudG9wLCB0b3BSaWdodCAtIHRvcExlZnQsIGZyb21Qb3MuYm90dG9tKTtcbiAgICAgICAgICBpZiAoZnJvbVBvcy5ib3R0b20gPCB0b1Bvcy50b3ApIHsgYWRkKGxlZnRTaWRlLCBmcm9tUG9zLmJvdHRvbSwgbnVsbCwgdG9Qb3MudG9wKTsgfVxuICAgICAgICAgIGFkZChib3RMZWZ0LCB0b1Bvcy50b3AsIGJvdFJpZ2h0IC0gYm90TGVmdCwgdG9Qb3MuYm90dG9tKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc3RhcnQgfHwgY21wQ29vcmRzKGZyb21Qb3MsIHN0YXJ0KSA8IDApIHsgc3RhcnQgPSBmcm9tUG9zOyB9XG4gICAgICAgIGlmIChjbXBDb29yZHModG9Qb3MsIHN0YXJ0KSA8IDApIHsgc3RhcnQgPSB0b1BvczsgfVxuICAgICAgICBpZiAoIWVuZCB8fCBjbXBDb29yZHMoZnJvbVBvcywgZW5kKSA8IDApIHsgZW5kID0gZnJvbVBvczsgfVxuICAgICAgICBpZiAoY21wQ29vcmRzKHRvUG9zLCBlbmQpIDwgMCkgeyBlbmQgPSB0b1BvczsgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge3N0YXJ0OiBzdGFydCwgZW5kOiBlbmR9XG4gICAgfVxuXG4gICAgdmFyIHNGcm9tID0gcmFuZ2UuZnJvbSgpLCBzVG8gPSByYW5nZS50bygpO1xuICAgIGlmIChzRnJvbS5saW5lID09IHNUby5saW5lKSB7XG4gICAgICBkcmF3Rm9yTGluZShzRnJvbS5saW5lLCBzRnJvbS5jaCwgc1RvLmNoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGZyb21MaW5lID0gZ2V0TGluZShkb2MsIHNGcm9tLmxpbmUpLCB0b0xpbmUgPSBnZXRMaW5lKGRvYywgc1RvLmxpbmUpO1xuICAgICAgdmFyIHNpbmdsZVZMaW5lID0gdmlzdWFsTGluZShmcm9tTGluZSkgPT0gdmlzdWFsTGluZSh0b0xpbmUpO1xuICAgICAgdmFyIGxlZnRFbmQgPSBkcmF3Rm9yTGluZShzRnJvbS5saW5lLCBzRnJvbS5jaCwgc2luZ2xlVkxpbmUgPyBmcm9tTGluZS50ZXh0Lmxlbmd0aCArIDEgOiBudWxsKS5lbmQ7XG4gICAgICB2YXIgcmlnaHRTdGFydCA9IGRyYXdGb3JMaW5lKHNUby5saW5lLCBzaW5nbGVWTGluZSA/IDAgOiBudWxsLCBzVG8uY2gpLnN0YXJ0O1xuICAgICAgaWYgKHNpbmdsZVZMaW5lKSB7XG4gICAgICAgIGlmIChsZWZ0RW5kLnRvcCA8IHJpZ2h0U3RhcnQudG9wIC0gMikge1xuICAgICAgICAgIGFkZChsZWZ0RW5kLnJpZ2h0LCBsZWZ0RW5kLnRvcCwgbnVsbCwgbGVmdEVuZC5ib3R0b20pO1xuICAgICAgICAgIGFkZChsZWZ0U2lkZSwgcmlnaHRTdGFydC50b3AsIHJpZ2h0U3RhcnQubGVmdCwgcmlnaHRTdGFydC5ib3R0b20pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZChsZWZ0RW5kLnJpZ2h0LCBsZWZ0RW5kLnRvcCwgcmlnaHRTdGFydC5sZWZ0IC0gbGVmdEVuZC5yaWdodCwgbGVmdEVuZC5ib3R0b20pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobGVmdEVuZC5ib3R0b20gPCByaWdodFN0YXJ0LnRvcClcbiAgICAgICAgeyBhZGQobGVmdFNpZGUsIGxlZnRFbmQuYm90dG9tLCBudWxsLCByaWdodFN0YXJ0LnRvcCk7IH1cbiAgICB9XG5cbiAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xuICB9XG5cbiAgLy8gQ3Vyc29yLWJsaW5raW5nXG4gIGZ1bmN0aW9uIHJlc3RhcnRCbGluayhjbSkge1xuICAgIGlmICghY20uc3RhdGUuZm9jdXNlZCkgeyByZXR1cm4gfVxuICAgIHZhciBkaXNwbGF5ID0gY20uZGlzcGxheTtcbiAgICBjbGVhckludGVydmFsKGRpc3BsYXkuYmxpbmtlcik7XG4gICAgdmFyIG9uID0gdHJ1ZTtcbiAgICBkaXNwbGF5LmN1cnNvckRpdi5zdHlsZS52aXNpYmlsaXR5ID0gXCJcIjtcbiAgICBpZiAoY20ub3B0aW9ucy5jdXJzb3JCbGlua1JhdGUgPiAwKVxuICAgICAgeyBkaXNwbGF5LmJsaW5rZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7IHJldHVybiBkaXNwbGF5LmN1cnNvckRpdi5zdHlsZS52aXNpYmlsaXR5ID0gKG9uID0gIW9uKSA/IFwiXCIgOiBcImhpZGRlblwiOyB9LFxuICAgICAgICBjbS5vcHRpb25zLmN1cnNvckJsaW5rUmF0ZSk7IH1cbiAgICBlbHNlIGlmIChjbS5vcHRpb25zLmN1cnNvckJsaW5rUmF0ZSA8IDApXG4gICAgICB7IGRpc3BsYXkuY3Vyc29yRGl2LnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiOyB9XG4gIH1cblxuICBmdW5jdGlvbiBlbnN1cmVGb2N1cyhjbSkge1xuICAgIGlmICghY20uc3RhdGUuZm9jdXNlZCkgeyBjbS5kaXNwbGF5LmlucHV0LmZvY3VzKCk7IG9uRm9jdXMoY20pOyB9XG4gIH1cblxuICBmdW5jdGlvbiBkZWxheUJsdXJFdmVudChjbSkge1xuICAgIGNtLnN0YXRlLmRlbGF5aW5nQmx1ckV2ZW50ID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgaWYgKGNtLnN0YXRlLmRlbGF5aW5nQmx1ckV2ZW50KSB7XG4gICAgICBjbS5zdGF0ZS5kZWxheWluZ0JsdXJFdmVudCA9IGZhbHNlO1xuICAgICAgb25CbHVyKGNtKTtcbiAgICB9IH0sIDEwMCk7XG4gIH1cblxuICBmdW5jdGlvbiBvbkZvY3VzKGNtLCBlKSB7XG4gICAgaWYgKGNtLnN0YXRlLmRlbGF5aW5nQmx1ckV2ZW50KSB7IGNtLnN0YXRlLmRlbGF5aW5nQmx1ckV2ZW50ID0gZmFsc2U7IH1cblxuICAgIGlmIChjbS5vcHRpb25zLnJlYWRPbmx5ID09IFwibm9jdXJzb3JcIikgeyByZXR1cm4gfVxuICAgIGlmICghY20uc3RhdGUuZm9jdXNlZCkge1xuICAgICAgc2lnbmFsKGNtLCBcImZvY3VzXCIsIGNtLCBlKTtcbiAgICAgIGNtLnN0YXRlLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgYWRkQ2xhc3MoY20uZGlzcGxheS53cmFwcGVyLCBcIkNvZGVNaXJyb3ItZm9jdXNlZFwiKTtcbiAgICAgIC8vIFRoaXMgdGVzdCBwcmV2ZW50cyB0aGlzIGZyb20gZmlyaW5nIHdoZW4gYSBjb250ZXh0XG4gICAgICAvLyBtZW51IGlzIGNsb3NlZCAoc2luY2UgdGhlIGlucHV0IHJlc2V0IHdvdWxkIGtpbGwgdGhlXG4gICAgICAvLyBzZWxlY3QtYWxsIGRldGVjdGlvbiBoYWNrKVxuICAgICAgaWYgKCFjbS5jdXJPcCAmJiBjbS5kaXNwbGF5LnNlbEZvckNvbnRleHRNZW51ICE9IGNtLmRvYy5zZWwpIHtcbiAgICAgICAgY20uZGlzcGxheS5pbnB1dC5yZXNldCgpO1xuICAgICAgICBpZiAod2Via2l0KSB7IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gY20uZGlzcGxheS5pbnB1dC5yZXNldCh0cnVlKTsgfSwgMjApOyB9IC8vIElzc3VlICMxNzMwXG4gICAgICB9XG4gICAgICBjbS5kaXNwbGF5LmlucHV0LnJlY2VpdmVkRm9jdXMoKTtcbiAgICB9XG4gICAgcmVzdGFydEJsaW5rKGNtKTtcbiAgfVxuICBmdW5jdGlvbiBvbkJsdXIoY20sIGUpIHtcbiAgICBpZiAoY20uc3RhdGUuZGVsYXlpbmdCbHVyRXZlbnQpIHsgcmV0dXJuIH1cblxuICAgIGlmIChjbS5zdGF0ZS5mb2N1c2VkKSB7XG4gICAgICBzaWduYWwoY20sIFwiYmx1clwiLCBjbSwgZSk7XG4gICAgICBjbS5zdGF0ZS5mb2N1c2VkID0gZmFsc2U7XG4gICAgICBybUNsYXNzKGNtLmRpc3BsYXkud3JhcHBlciwgXCJDb2RlTWlycm9yLWZvY3VzZWRcIik7XG4gICAgfVxuICAgIGNsZWFySW50ZXJ2YWwoY20uZGlzcGxheS5ibGlua2VyKTtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgaWYgKCFjbS5zdGF0ZS5mb2N1c2VkKSB7IGNtLmRpc3BsYXkuc2hpZnQgPSBmYWxzZTsgfSB9LCAxNTApO1xuICB9XG5cbiAgLy8gUmVhZCB0aGUgYWN0dWFsIGhlaWdodHMgb2YgdGhlIHJlbmRlcmVkIGxpbmVzLCBhbmQgdXBkYXRlIHRoZWlyXG4gIC8vIHN0b3JlZCBoZWlnaHRzIHRvIG1hdGNoLlxuICBmdW5jdGlvbiB1cGRhdGVIZWlnaHRzSW5WaWV3cG9ydChjbSkge1xuICAgIHZhciBkaXNwbGF5ID0gY20uZGlzcGxheTtcbiAgICB2YXIgcHJldkJvdHRvbSA9IGRpc3BsYXkubGluZURpdi5vZmZzZXRUb3A7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNwbGF5LnZpZXcubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjdXIgPSBkaXNwbGF5LnZpZXdbaV0sIHdyYXBwaW5nID0gY20ub3B0aW9ucy5saW5lV3JhcHBpbmc7XG4gICAgICB2YXIgaGVpZ2h0ID0gKHZvaWQgMCksIHdpZHRoID0gMDtcbiAgICAgIGlmIChjdXIuaGlkZGVuKSB7IGNvbnRpbnVlIH1cbiAgICAgIGlmIChpZSAmJiBpZV92ZXJzaW9uIDwgOCkge1xuICAgICAgICB2YXIgYm90ID0gY3VyLm5vZGUub2Zmc2V0VG9wICsgY3VyLm5vZGUub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBoZWlnaHQgPSBib3QgLSBwcmV2Qm90dG9tO1xuICAgICAgICBwcmV2Qm90dG9tID0gYm90O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGJveCA9IGN1ci5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBoZWlnaHQgPSBib3guYm90dG9tIC0gYm94LnRvcDtcbiAgICAgICAgLy8gQ2hlY2sgdGhhdCBsaW5lcyBkb24ndCBleHRlbmQgcGFzdCB0aGUgcmlnaHQgb2YgdGhlIGN1cnJlbnRcbiAgICAgICAgLy8gZWRpdG9yIHdpZHRoXG4gICAgICAgIGlmICghd3JhcHBpbmcgJiYgY3VyLnRleHQuZmlyc3RDaGlsZClcbiAgICAgICAgICB7IHdpZHRoID0gY3VyLnRleHQuZmlyc3RDaGlsZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCAtIGJveC5sZWZ0IC0gMTsgfVxuICAgICAgfVxuICAgICAgdmFyIGRpZmYgPSBjdXIubGluZS5oZWlnaHQgLSBoZWlnaHQ7XG4gICAgICBpZiAoZGlmZiA+IC4wMDUgfHwgZGlmZiA8IC0uMDA1KSB7XG4gICAgICAgIHVwZGF0ZUxpbmVIZWlnaHQoY3VyLmxpbmUsIGhlaWdodCk7XG4gICAgICAgIHVwZGF0ZVdpZGdldEhlaWdodChjdXIubGluZSk7XG4gICAgICAgIGlmIChjdXIucmVzdCkgeyBmb3IgKHZhciBqID0gMDsgaiA8IGN1ci5yZXN0Lmxlbmd0aDsgaisrKVxuICAgICAgICAgIHsgdXBkYXRlV2lkZ2V0SGVpZ2h0KGN1ci5yZXN0W2pdKTsgfSB9XG4gICAgICB9XG4gICAgICBpZiAod2lkdGggPiBjbS5kaXNwbGF5LnNpemVyV2lkdGgpIHtcbiAgICAgICAgdmFyIGNoV2lkdGggPSBNYXRoLmNlaWwod2lkdGggLyBjaGFyV2lkdGgoY20uZGlzcGxheSkpO1xuICAgICAgICBpZiAoY2hXaWR0aCA+IGNtLmRpc3BsYXkubWF4TGluZUxlbmd0aCkge1xuICAgICAgICAgIGNtLmRpc3BsYXkubWF4TGluZUxlbmd0aCA9IGNoV2lkdGg7XG4gICAgICAgICAgY20uZGlzcGxheS5tYXhMaW5lID0gY3VyLmxpbmU7XG4gICAgICAgICAgY20uZGlzcGxheS5tYXhMaW5lQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZWFkIGFuZCBzdG9yZSB0aGUgaGVpZ2h0IG9mIGxpbmUgd2lkZ2V0cyBhc3NvY2lhdGVkIHdpdGggdGhlXG4gIC8vIGdpdmVuIGxpbmUuXG4gIGZ1bmN0aW9uIHVwZGF0ZVdpZGdldEhlaWdodChsaW5lKSB7XG4gICAgaWYgKGxpbmUud2lkZ2V0cykgeyBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmUud2lkZ2V0cy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIHcgPSBsaW5lLndpZGdldHNbaV0sIHBhcmVudCA9IHcubm9kZS5wYXJlbnROb2RlO1xuICAgICAgaWYgKHBhcmVudCkgeyB3LmhlaWdodCA9IHBhcmVudC5vZmZzZXRIZWlnaHQ7IH1cbiAgICB9IH1cbiAgfVxuXG4gIC8vIENvbXB1dGUgdGhlIGxpbmVzIHRoYXQgYXJlIHZpc2libGUgaW4gYSBnaXZlbiB2aWV3cG9ydCAoZGVmYXVsdHNcbiAgLy8gdGhlIHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbikuIHZpZXdwb3J0IG1heSBjb250YWluIHRvcCxcbiAgLy8gaGVpZ2h0LCBhbmQgZW5zdXJlIChzZWUgb3Auc2Nyb2xsVG9Qb3MpIHByb3BlcnRpZXMuXG4gIGZ1bmN0aW9uIHZpc2libGVMaW5lcyhkaXNwbGF5LCBkb2MsIHZpZXdwb3J0KSB7XG4gICAgdmFyIHRvcCA9IHZpZXdwb3J0ICYmIHZpZXdwb3J0LnRvcCAhPSBudWxsID8gTWF0aC5tYXgoMCwgdmlld3BvcnQudG9wKSA6IGRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsVG9wO1xuICAgIHRvcCA9IE1hdGguZmxvb3IodG9wIC0gcGFkZGluZ1RvcChkaXNwbGF5KSk7XG4gICAgdmFyIGJvdHRvbSA9IHZpZXdwb3J0ICYmIHZpZXdwb3J0LmJvdHRvbSAhPSBudWxsID8gdmlld3BvcnQuYm90dG9tIDogdG9wICsgZGlzcGxheS53cmFwcGVyLmNsaWVudEhlaWdodDtcblxuICAgIHZhciBmcm9tID0gbGluZUF0SGVpZ2h0KGRvYywgdG9wKSwgdG8gPSBsaW5lQXRIZWlnaHQoZG9jLCBib3R0b20pO1xuICAgIC8vIEVuc3VyZSBpcyBhIHtmcm9tOiB7bGluZSwgY2h9LCB0bzoge2xpbmUsIGNofX0gb2JqZWN0LCBhbmRcbiAgICAvLyBmb3JjZXMgdGhvc2UgbGluZXMgaW50byB0aGUgdmlld3BvcnQgKGlmIHBvc3NpYmxlKS5cbiAgICBpZiAodmlld3BvcnQgJiYgdmlld3BvcnQuZW5zdXJlKSB7XG4gICAgICB2YXIgZW5zdXJlRnJvbSA9IHZpZXdwb3J0LmVuc3VyZS5mcm9tLmxpbmUsIGVuc3VyZVRvID0gdmlld3BvcnQuZW5zdXJlLnRvLmxpbmU7XG4gICAgICBpZiAoZW5zdXJlRnJvbSA8IGZyb20pIHtcbiAgICAgICAgZnJvbSA9IGVuc3VyZUZyb207XG4gICAgICAgIHRvID0gbGluZUF0SGVpZ2h0KGRvYywgaGVpZ2h0QXRMaW5lKGdldExpbmUoZG9jLCBlbnN1cmVGcm9tKSkgKyBkaXNwbGF5LndyYXBwZXIuY2xpZW50SGVpZ2h0KTtcbiAgICAgIH0gZWxzZSBpZiAoTWF0aC5taW4oZW5zdXJlVG8sIGRvYy5sYXN0TGluZSgpKSA+PSB0bykge1xuICAgICAgICBmcm9tID0gbGluZUF0SGVpZ2h0KGRvYywgaGVpZ2h0QXRMaW5lKGdldExpbmUoZG9jLCBlbnN1cmVUbykpIC0gZGlzcGxheS53cmFwcGVyLmNsaWVudEhlaWdodCk7XG4gICAgICAgIHRvID0gZW5zdXJlVG87XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7ZnJvbTogZnJvbSwgdG86IE1hdGgubWF4KHRvLCBmcm9tICsgMSl9XG4gIH1cblxuICAvLyBTQ1JPTExJTkcgVEhJTkdTIElOVE8gVklFV1xuXG4gIC8vIElmIGFuIGVkaXRvciBzaXRzIG9uIHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZSB3aW5kb3csIHBhcnRpYWxseVxuICAvLyBzY3JvbGxlZCBvdXQgb2YgdmlldywgdGhpcyBlbnN1cmVzIHRoYXQgdGhlIGN1cnNvciBpcyB2aXNpYmxlLlxuICBmdW5jdGlvbiBtYXliZVNjcm9sbFdpbmRvdyhjbSwgcmVjdCkge1xuICAgIGlmIChzaWduYWxET01FdmVudChjbSwgXCJzY3JvbGxDdXJzb3JJbnRvVmlld1wiKSkgeyByZXR1cm4gfVxuXG4gICAgdmFyIGRpc3BsYXkgPSBjbS5kaXNwbGF5LCBib3ggPSBkaXNwbGF5LnNpemVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCBkb1Njcm9sbCA9IG51bGw7XG4gICAgaWYgKHJlY3QudG9wICsgYm94LnRvcCA8IDApIHsgZG9TY3JvbGwgPSB0cnVlOyB9XG4gICAgZWxzZSBpZiAocmVjdC5ib3R0b20gKyBib3gudG9wID4gKHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSkgeyBkb1Njcm9sbCA9IGZhbHNlOyB9XG4gICAgaWYgKGRvU2Nyb2xsICE9IG51bGwgJiYgIXBoYW50b20pIHtcbiAgICAgIHZhciBzY3JvbGxOb2RlID0gZWx0KFwiZGl2XCIsIFwiXFx1MjAwYlwiLCBudWxsLCAoXCJwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogXCIgKyAocmVjdC50b3AgLSBkaXNwbGF5LnZpZXdPZmZzZXQgLSBwYWRkaW5nVG9wKGNtLmRpc3BsYXkpKSArIFwicHg7XFxuICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIgKyAocmVjdC5ib3R0b20gLSByZWN0LnRvcCArIHNjcm9sbEdhcChjbSkgKyBkaXNwbGF5LmJhckhlaWdodCkgKyBcInB4O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBcIiArIChyZWN0LmxlZnQpICsgXCJweDsgd2lkdGg6IFwiICsgKE1hdGgubWF4KDIsIHJlY3QucmlnaHQgLSByZWN0LmxlZnQpKSArIFwicHg7XCIpKTtcbiAgICAgIGNtLmRpc3BsYXkubGluZVNwYWNlLmFwcGVuZENoaWxkKHNjcm9sbE5vZGUpO1xuICAgICAgc2Nyb2xsTm9kZS5zY3JvbGxJbnRvVmlldyhkb1Njcm9sbCk7XG4gICAgICBjbS5kaXNwbGF5LmxpbmVTcGFjZS5yZW1vdmVDaGlsZChzY3JvbGxOb2RlKTtcbiAgICB9XG4gIH1cblxuICAvLyBTY3JvbGwgYSBnaXZlbiBwb3NpdGlvbiBpbnRvIHZpZXcgKGltbWVkaWF0ZWx5KSwgdmVyaWZ5aW5nIHRoYXRcbiAgLy8gaXQgYWN0dWFsbHkgYmVjYW1lIHZpc2libGUgKGFzIGxpbmUgaGVpZ2h0cyBhcmUgYWNjdXJhdGVseVxuICAvLyBtZWFzdXJlZCwgdGhlIHBvc2l0aW9uIG9mIHNvbWV0aGluZyBtYXkgJ2RyaWZ0JyBkdXJpbmcgZHJhd2luZykuXG4gIGZ1bmN0aW9uIHNjcm9sbFBvc0ludG9WaWV3KGNtLCBwb3MsIGVuZCwgbWFyZ2luKSB7XG4gICAgaWYgKG1hcmdpbiA9PSBudWxsKSB7IG1hcmdpbiA9IDA7IH1cbiAgICB2YXIgcmVjdDtcbiAgICBpZiAoIWNtLm9wdGlvbnMubGluZVdyYXBwaW5nICYmIHBvcyA9PSBlbmQpIHtcbiAgICAgIC8vIFNldCBwb3MgYW5kIGVuZCB0byB0aGUgY3Vyc29yIHBvc2l0aW9ucyBhcm91bmQgdGhlIGNoYXJhY3RlciBwb3Mgc3RpY2tzIHRvXG4gICAgICAvLyBJZiBwb3Muc3RpY2t5ID09IFwiYmVmb3JlXCIsIHRoYXQgaXMgYXJvdW5kIHBvcy5jaCAtIDEsIG90aGVyd2lzZSBhcm91bmQgcG9zLmNoXG4gICAgICAvLyBJZiBwb3MgPT0gUG9zKF8sIDAsIFwiYmVmb3JlXCIpLCBwb3MgYW5kIGVuZCBhcmUgdW5jaGFuZ2VkXG4gICAgICBwb3MgPSBwb3MuY2ggPyBQb3MocG9zLmxpbmUsIHBvcy5zdGlja3kgPT0gXCJiZWZvcmVcIiA/IHBvcy5jaCAtIDEgOiBwb3MuY2gsIFwiYWZ0ZXJcIikgOiBwb3M7XG4gICAgICBlbmQgPSBwb3Muc3RpY2t5ID09IFwiYmVmb3JlXCIgPyBQb3MocG9zLmxpbmUsIHBvcy5jaCArIDEsIFwiYmVmb3JlXCIpIDogcG9zO1xuICAgIH1cbiAgICBmb3IgKHZhciBsaW1pdCA9IDA7IGxpbWl0IDwgNTsgbGltaXQrKykge1xuICAgICAgdmFyIGNoYW5nZWQgPSBmYWxzZTtcbiAgICAgIHZhciBjb29yZHMgPSBjdXJzb3JDb29yZHMoY20sIHBvcyk7XG4gICAgICB2YXIgZW5kQ29vcmRzID0gIWVuZCB8fCBlbmQgPT0gcG9zID8gY29vcmRzIDogY3Vyc29yQ29vcmRzKGNtLCBlbmQpO1xuICAgICAgcmVjdCA9IHtsZWZ0OiBNYXRoLm1pbihjb29yZHMubGVmdCwgZW5kQ29vcmRzLmxlZnQpLFxuICAgICAgICAgICAgICB0b3A6IE1hdGgubWluKGNvb3Jkcy50b3AsIGVuZENvb3Jkcy50b3ApIC0gbWFyZ2luLFxuICAgICAgICAgICAgICByaWdodDogTWF0aC5tYXgoY29vcmRzLmxlZnQsIGVuZENvb3Jkcy5sZWZ0KSxcbiAgICAgICAgICAgICAgYm90dG9tOiBNYXRoLm1heChjb29yZHMuYm90dG9tLCBlbmRDb29yZHMuYm90dG9tKSArIG1hcmdpbn07XG4gICAgICB2YXIgc2Nyb2xsUG9zID0gY2FsY3VsYXRlU2Nyb2xsUG9zKGNtLCByZWN0KTtcbiAgICAgIHZhciBzdGFydFRvcCA9IGNtLmRvYy5zY3JvbGxUb3AsIHN0YXJ0TGVmdCA9IGNtLmRvYy5zY3JvbGxMZWZ0O1xuICAgICAgaWYgKHNjcm9sbFBvcy5zY3JvbGxUb3AgIT0gbnVsbCkge1xuICAgICAgICB1cGRhdGVTY3JvbGxUb3AoY20sIHNjcm9sbFBvcy5zY3JvbGxUb3ApO1xuICAgICAgICBpZiAoTWF0aC5hYnMoY20uZG9jLnNjcm9sbFRvcCAtIHN0YXJ0VG9wKSA+IDEpIHsgY2hhbmdlZCA9IHRydWU7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzY3JvbGxQb3Muc2Nyb2xsTGVmdCAhPSBudWxsKSB7XG4gICAgICAgIHNldFNjcm9sbExlZnQoY20sIHNjcm9sbFBvcy5zY3JvbGxMZWZ0KTtcbiAgICAgICAgaWYgKE1hdGguYWJzKGNtLmRvYy5zY3JvbGxMZWZ0IC0gc3RhcnRMZWZ0KSA+IDEpIHsgY2hhbmdlZCA9IHRydWU7IH1cbiAgICAgIH1cbiAgICAgIGlmICghY2hhbmdlZCkgeyBicmVhayB9XG4gICAgfVxuICAgIHJldHVybiByZWN0XG4gIH1cblxuICAvLyBTY3JvbGwgYSBnaXZlbiBzZXQgb2YgY29vcmRpbmF0ZXMgaW50byB2aWV3IChpbW1lZGlhdGVseSkuXG4gIGZ1bmN0aW9uIHNjcm9sbEludG9WaWV3KGNtLCByZWN0KSB7XG4gICAgdmFyIHNjcm9sbFBvcyA9IGNhbGN1bGF0ZVNjcm9sbFBvcyhjbSwgcmVjdCk7XG4gICAgaWYgKHNjcm9sbFBvcy5zY3JvbGxUb3AgIT0gbnVsbCkgeyB1cGRhdGVTY3JvbGxUb3AoY20sIHNjcm9sbFBvcy5zY3JvbGxUb3ApOyB9XG4gICAgaWYgKHNjcm9sbFBvcy5zY3JvbGxMZWZ0ICE9IG51bGwpIHsgc2V0U2Nyb2xsTGVmdChjbSwgc2Nyb2xsUG9zLnNjcm9sbExlZnQpOyB9XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgYSBuZXcgc2Nyb2xsIHBvc2l0aW9uIG5lZWRlZCB0byBzY3JvbGwgdGhlIGdpdmVuXG4gIC8vIHJlY3RhbmdsZSBpbnRvIHZpZXcuIFJldHVybnMgYW4gb2JqZWN0IHdpdGggc2Nyb2xsVG9wIGFuZFxuICAvLyBzY3JvbGxMZWZ0IHByb3BlcnRpZXMuIFdoZW4gdGhlc2UgYXJlIHVuZGVmaW5lZCwgdGhlXG4gIC8vIHZlcnRpY2FsL2hvcml6b250YWwgcG9zaXRpb24gZG9lcyBub3QgbmVlZCB0byBiZSBhZGp1c3RlZC5cbiAgZnVuY3Rpb24gY2FsY3VsYXRlU2Nyb2xsUG9zKGNtLCByZWN0KSB7XG4gICAgdmFyIGRpc3BsYXkgPSBjbS5kaXNwbGF5LCBzbmFwTWFyZ2luID0gdGV4dEhlaWdodChjbS5kaXNwbGF5KTtcbiAgICBpZiAocmVjdC50b3AgPCAwKSB7IHJlY3QudG9wID0gMDsgfVxuICAgIHZhciBzY3JlZW50b3AgPSBjbS5jdXJPcCAmJiBjbS5jdXJPcC5zY3JvbGxUb3AgIT0gbnVsbCA/IGNtLmN1ck9wLnNjcm9sbFRvcCA6IGRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsVG9wO1xuICAgIHZhciBzY3JlZW4gPSBkaXNwbGF5SGVpZ2h0KGNtKSwgcmVzdWx0ID0ge307XG4gICAgaWYgKHJlY3QuYm90dG9tIC0gcmVjdC50b3AgPiBzY3JlZW4pIHsgcmVjdC5ib3R0b20gPSByZWN0LnRvcCArIHNjcmVlbjsgfVxuICAgIHZhciBkb2NCb3R0b20gPSBjbS5kb2MuaGVpZ2h0ICsgcGFkZGluZ1ZlcnQoZGlzcGxheSk7XG4gICAgdmFyIGF0VG9wID0gcmVjdC50b3AgPCBzbmFwTWFyZ2luLCBhdEJvdHRvbSA9IHJlY3QuYm90dG9tID4gZG9jQm90dG9tIC0gc25hcE1hcmdpbjtcbiAgICBpZiAocmVjdC50b3AgPCBzY3JlZW50b3ApIHtcbiAgICAgIHJlc3VsdC5zY3JvbGxUb3AgPSBhdFRvcCA/IDAgOiByZWN0LnRvcDtcbiAgICB9IGVsc2UgaWYgKHJlY3QuYm90dG9tID4gc2NyZWVudG9wICsgc2NyZWVuKSB7XG4gICAgICB2YXIgbmV3VG9wID0gTWF0aC5taW4ocmVjdC50b3AsIChhdEJvdHRvbSA/IGRvY0JvdHRvbSA6IHJlY3QuYm90dG9tKSAtIHNjcmVlbik7XG4gICAgICBpZiAobmV3VG9wICE9IHNjcmVlbnRvcCkgeyByZXN1bHQuc2Nyb2xsVG9wID0gbmV3VG9wOyB9XG4gICAgfVxuXG4gICAgdmFyIHNjcmVlbmxlZnQgPSBjbS5jdXJPcCAmJiBjbS5jdXJPcC5zY3JvbGxMZWZ0ICE9IG51bGwgPyBjbS5jdXJPcC5zY3JvbGxMZWZ0IDogZGlzcGxheS5zY3JvbGxlci5zY3JvbGxMZWZ0O1xuICAgIHZhciBzY3JlZW53ID0gZGlzcGxheVdpZHRoKGNtKSAtIChjbS5vcHRpb25zLmZpeGVkR3V0dGVyID8gZGlzcGxheS5ndXR0ZXJzLm9mZnNldFdpZHRoIDogMCk7XG4gICAgdmFyIHRvb1dpZGUgPSByZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0ID4gc2NyZWVudztcbiAgICBpZiAodG9vV2lkZSkgeyByZWN0LnJpZ2h0ID0gcmVjdC5sZWZ0ICsgc2NyZWVudzsgfVxuICAgIGlmIChyZWN0LmxlZnQgPCAxMClcbiAgICAgIHsgcmVzdWx0LnNjcm9sbExlZnQgPSAwOyB9XG4gICAgZWxzZSBpZiAocmVjdC5sZWZ0IDwgc2NyZWVubGVmdClcbiAgICAgIHsgcmVzdWx0LnNjcm9sbExlZnQgPSBNYXRoLm1heCgwLCByZWN0LmxlZnQgLSAodG9vV2lkZSA/IDAgOiAxMCkpOyB9XG4gICAgZWxzZSBpZiAocmVjdC5yaWdodCA+IHNjcmVlbncgKyBzY3JlZW5sZWZ0IC0gMylcbiAgICAgIHsgcmVzdWx0LnNjcm9sbExlZnQgPSByZWN0LnJpZ2h0ICsgKHRvb1dpZGUgPyAwIDogMTApIC0gc2NyZWVudzsgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8vIFN0b3JlIGEgcmVsYXRpdmUgYWRqdXN0bWVudCB0byB0aGUgc2Nyb2xsIHBvc2l0aW9uIGluIHRoZSBjdXJyZW50XG4gIC8vIG9wZXJhdGlvbiAodG8gYmUgYXBwbGllZCB3aGVuIHRoZSBvcGVyYXRpb24gZmluaXNoZXMpLlxuICBmdW5jdGlvbiBhZGRUb1Njcm9sbFRvcChjbSwgdG9wKSB7XG4gICAgaWYgKHRvcCA9PSBudWxsKSB7IHJldHVybiB9XG4gICAgcmVzb2x2ZVNjcm9sbFRvUG9zKGNtKTtcbiAgICBjbS5jdXJPcC5zY3JvbGxUb3AgPSAoY20uY3VyT3Auc2Nyb2xsVG9wID09IG51bGwgPyBjbS5kb2Muc2Nyb2xsVG9wIDogY20uY3VyT3Auc2Nyb2xsVG9wKSArIHRvcDtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB0aGF0IGF0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvbiB0aGUgY3VycmVudCBjdXJzb3IgaXNcbiAgLy8gc2hvd24uXG4gIGZ1bmN0aW9uIGVuc3VyZUN1cnNvclZpc2libGUoY20pIHtcbiAgICByZXNvbHZlU2Nyb2xsVG9Qb3MoY20pO1xuICAgIHZhciBjdXIgPSBjbS5nZXRDdXJzb3IoKTtcbiAgICBjbS5jdXJPcC5zY3JvbGxUb1BvcyA9IHtmcm9tOiBjdXIsIHRvOiBjdXIsIG1hcmdpbjogY20ub3B0aW9ucy5jdXJzb3JTY3JvbGxNYXJnaW59O1xuICB9XG5cbiAgZnVuY3Rpb24gc2Nyb2xsVG9Db29yZHMoY20sIHgsIHkpIHtcbiAgICBpZiAoeCAhPSBudWxsIHx8IHkgIT0gbnVsbCkgeyByZXNvbHZlU2Nyb2xsVG9Qb3MoY20pOyB9XG4gICAgaWYgKHggIT0gbnVsbCkgeyBjbS5jdXJPcC5zY3JvbGxMZWZ0ID0geDsgfVxuICAgIGlmICh5ICE9IG51bGwpIHsgY20uY3VyT3Auc2Nyb2xsVG9wID0geTsgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2Nyb2xsVG9SYW5nZShjbSwgcmFuZ2UpIHtcbiAgICByZXNvbHZlU2Nyb2xsVG9Qb3MoY20pO1xuICAgIGNtLmN1ck9wLnNjcm9sbFRvUG9zID0gcmFuZ2U7XG4gIH1cblxuICAvLyBXaGVuIGFuIG9wZXJhdGlvbiBoYXMgaXRzIHNjcm9sbFRvUG9zIHByb3BlcnR5IHNldCwgYW5kIGFub3RoZXJcbiAgLy8gc2Nyb2xsIGFjdGlvbiBpcyBhcHBsaWVkIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb24sIHRoaXNcbiAgLy8gJ3NpbXVsYXRlcycgc2Nyb2xsaW5nIHRoYXQgcG9zaXRpb24gaW50byB2aWV3IGluIGEgY2hlYXAgd2F5LCBzb1xuICAvLyB0aGF0IHRoZSBlZmZlY3Qgb2YgaW50ZXJtZWRpYXRlIHNjcm9sbCBjb21tYW5kcyBpcyBub3QgaWdub3JlZC5cbiAgZnVuY3Rpb24gcmVzb2x2ZVNjcm9sbFRvUG9zKGNtKSB7XG4gICAgdmFyIHJhbmdlID0gY20uY3VyT3Auc2Nyb2xsVG9Qb3M7XG4gICAgaWYgKHJhbmdlKSB7XG4gICAgICBjbS5jdXJPcC5zY3JvbGxUb1BvcyA9IG51bGw7XG4gICAgICB2YXIgZnJvbSA9IGVzdGltYXRlQ29vcmRzKGNtLCByYW5nZS5mcm9tKSwgdG8gPSBlc3RpbWF0ZUNvb3JkcyhjbSwgcmFuZ2UudG8pO1xuICAgICAgc2Nyb2xsVG9Db29yZHNSYW5nZShjbSwgZnJvbSwgdG8sIHJhbmdlLm1hcmdpbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2Nyb2xsVG9Db29yZHNSYW5nZShjbSwgZnJvbSwgdG8sIG1hcmdpbikge1xuICAgIHZhciBzUG9zID0gY2FsY3VsYXRlU2Nyb2xsUG9zKGNtLCB7XG4gICAgICBsZWZ0OiBNYXRoLm1pbihmcm9tLmxlZnQsIHRvLmxlZnQpLFxuICAgICAgdG9wOiBNYXRoLm1pbihmcm9tLnRvcCwgdG8udG9wKSAtIG1hcmdpbixcbiAgICAgIHJpZ2h0OiBNYXRoLm1heChmcm9tLnJpZ2h0LCB0by5yaWdodCksXG4gICAgICBib3R0b206IE1hdGgubWF4KGZyb20uYm90dG9tLCB0by5ib3R0b20pICsgbWFyZ2luXG4gICAgfSk7XG4gICAgc2Nyb2xsVG9Db29yZHMoY20sIHNQb3Muc2Nyb2xsTGVmdCwgc1Bvcy5zY3JvbGxUb3ApO1xuICB9XG5cbiAgLy8gU3luYyB0aGUgc2Nyb2xsYWJsZSBhcmVhIGFuZCBzY3JvbGxiYXJzLCBlbnN1cmUgdGhlIHZpZXdwb3J0XG4gIC8vIGNvdmVycyB0aGUgdmlzaWJsZSBhcmVhLlxuICBmdW5jdGlvbiB1cGRhdGVTY3JvbGxUb3AoY20sIHZhbCkge1xuICAgIGlmIChNYXRoLmFicyhjbS5kb2Muc2Nyb2xsVG9wIC0gdmFsKSA8IDIpIHsgcmV0dXJuIH1cbiAgICBpZiAoIWdlY2tvKSB7IHVwZGF0ZURpc3BsYXlTaW1wbGUoY20sIHt0b3A6IHZhbH0pOyB9XG4gICAgc2V0U2Nyb2xsVG9wKGNtLCB2YWwsIHRydWUpO1xuICAgIGlmIChnZWNrbykgeyB1cGRhdGVEaXNwbGF5U2ltcGxlKGNtKTsgfVxuICAgIHN0YXJ0V29ya2VyKGNtLCAxMDApO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0U2Nyb2xsVG9wKGNtLCB2YWwsIGZvcmNlU2Nyb2xsKSB7XG4gICAgdmFsID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oY20uZGlzcGxheS5zY3JvbGxlci5zY3JvbGxIZWlnaHQgLSBjbS5kaXNwbGF5LnNjcm9sbGVyLmNsaWVudEhlaWdodCwgdmFsKSk7XG4gICAgaWYgKGNtLmRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsVG9wID09IHZhbCAmJiAhZm9yY2VTY3JvbGwpIHsgcmV0dXJuIH1cbiAgICBjbS5kb2Muc2Nyb2xsVG9wID0gdmFsO1xuICAgIGNtLmRpc3BsYXkuc2Nyb2xsYmFycy5zZXRTY3JvbGxUb3AodmFsKTtcbiAgICBpZiAoY20uZGlzcGxheS5zY3JvbGxlci5zY3JvbGxUb3AgIT0gdmFsKSB7IGNtLmRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsVG9wID0gdmFsOyB9XG4gIH1cblxuICAvLyBTeW5jIHNjcm9sbGVyIGFuZCBzY3JvbGxiYXIsIGVuc3VyZSB0aGUgZ3V0dGVyIGVsZW1lbnRzIGFyZVxuICAvLyBhbGlnbmVkLlxuICBmdW5jdGlvbiBzZXRTY3JvbGxMZWZ0KGNtLCB2YWwsIGlzU2Nyb2xsZXIsIGZvcmNlU2Nyb2xsKSB7XG4gICAgdmFsID0gTWF0aC5tYXgoMCwgTWF0aC5taW4odmFsLCBjbS5kaXNwbGF5LnNjcm9sbGVyLnNjcm9sbFdpZHRoIC0gY20uZGlzcGxheS5zY3JvbGxlci5jbGllbnRXaWR0aCkpO1xuICAgIGlmICgoaXNTY3JvbGxlciA/IHZhbCA9PSBjbS5kb2Muc2Nyb2xsTGVmdCA6IE1hdGguYWJzKGNtLmRvYy5zY3JvbGxMZWZ0IC0gdmFsKSA8IDIpICYmICFmb3JjZVNjcm9sbCkgeyByZXR1cm4gfVxuICAgIGNtLmRvYy5zY3JvbGxMZWZ0ID0gdmFsO1xuICAgIGFsaWduSG9yaXpvbnRhbGx5KGNtKTtcbiAgICBpZiAoY20uZGlzcGxheS5zY3JvbGxlci5zY3JvbGxMZWZ0ICE9IHZhbCkgeyBjbS5kaXNwbGF5LnNjcm9sbGVyLnNjcm9sbExlZnQgPSB2YWw7IH1cbiAgICBjbS5kaXNwbGF5LnNjcm9sbGJhcnMuc2V0U2Nyb2xsTGVmdCh2YWwpO1xuICB9XG5cbiAgLy8gU0NST0xMQkFSU1xuXG4gIC8vIFByZXBhcmUgRE9NIHJlYWRzIG5lZWRlZCB0byB1cGRhdGUgdGhlIHNjcm9sbGJhcnMuIERvbmUgaW4gb25lXG4gIC8vIHNob3QgdG8gbWluaW1pemUgdXBkYXRlL21lYXN1cmUgcm91bmR0cmlwcy5cbiAgZnVuY3Rpb24gbWVhc3VyZUZvclNjcm9sbGJhcnMoY20pIHtcbiAgICB2YXIgZCA9IGNtLmRpc3BsYXksIGd1dHRlclcgPSBkLmd1dHRlcnMub2Zmc2V0V2lkdGg7XG4gICAgdmFyIGRvY0ggPSBNYXRoLnJvdW5kKGNtLmRvYy5oZWlnaHQgKyBwYWRkaW5nVmVydChjbS5kaXNwbGF5KSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNsaWVudEhlaWdodDogZC5zY3JvbGxlci5jbGllbnRIZWlnaHQsXG4gICAgICB2aWV3SGVpZ2h0OiBkLndyYXBwZXIuY2xpZW50SGVpZ2h0LFxuICAgICAgc2Nyb2xsV2lkdGg6IGQuc2Nyb2xsZXIuc2Nyb2xsV2lkdGgsIGNsaWVudFdpZHRoOiBkLnNjcm9sbGVyLmNsaWVudFdpZHRoLFxuICAgICAgdmlld1dpZHRoOiBkLndyYXBwZXIuY2xpZW50V2lkdGgsXG4gICAgICBiYXJMZWZ0OiBjbS5vcHRpb25zLmZpeGVkR3V0dGVyID8gZ3V0dGVyVyA6IDAsXG4gICAgICBkb2NIZWlnaHQ6IGRvY0gsXG4gICAgICBzY3JvbGxIZWlnaHQ6IGRvY0ggKyBzY3JvbGxHYXAoY20pICsgZC5iYXJIZWlnaHQsXG4gICAgICBuYXRpdmVCYXJXaWR0aDogZC5uYXRpdmVCYXJXaWR0aCxcbiAgICAgIGd1dHRlcldpZHRoOiBndXR0ZXJXXG4gICAgfVxuICB9XG5cbiAgdmFyIE5hdGl2ZVNjcm9sbGJhcnMgPSBmdW5jdGlvbihwbGFjZSwgc2Nyb2xsLCBjbSkge1xuICAgIHRoaXMuY20gPSBjbTtcbiAgICB2YXIgdmVydCA9IHRoaXMudmVydCA9IGVsdChcImRpdlwiLCBbZWx0KFwiZGl2XCIsIG51bGwsIG51bGwsIFwibWluLXdpZHRoOiAxcHhcIildLCBcIkNvZGVNaXJyb3ItdnNjcm9sbGJhclwiKTtcbiAgICB2YXIgaG9yaXogPSB0aGlzLmhvcml6ID0gZWx0KFwiZGl2XCIsIFtlbHQoXCJkaXZcIiwgbnVsbCwgbnVsbCwgXCJoZWlnaHQ6IDEwMCU7IG1pbi1oZWlnaHQ6IDFweFwiKV0sIFwiQ29kZU1pcnJvci1oc2Nyb2xsYmFyXCIpO1xuICAgIHZlcnQudGFiSW5kZXggPSBob3Jpei50YWJJbmRleCA9IC0xO1xuICAgIHBsYWNlKHZlcnQpOyBwbGFjZShob3Jpeik7XG5cbiAgICBvbih2ZXJ0LCBcInNjcm9sbFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAodmVydC5jbGllbnRIZWlnaHQpIHsgc2Nyb2xsKHZlcnQuc2Nyb2xsVG9wLCBcInZlcnRpY2FsXCIpOyB9XG4gICAgfSk7XG4gICAgb24oaG9yaXosIFwic2Nyb2xsXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChob3Jpei5jbGllbnRXaWR0aCkgeyBzY3JvbGwoaG9yaXouc2Nyb2xsTGVmdCwgXCJob3Jpem9udGFsXCIpOyB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmNoZWNrZWRaZXJvV2lkdGggPSBmYWxzZTtcbiAgICAvLyBOZWVkIHRvIHNldCBhIG1pbmltdW0gd2lkdGggdG8gc2VlIHRoZSBzY3JvbGxiYXIgb24gSUU3IChidXQgbXVzdCBub3Qgc2V0IGl0IG9uIElFOCkuXG4gICAgaWYgKGllICYmIGllX3ZlcnNpb24gPCA4KSB7IHRoaXMuaG9yaXouc3R5bGUubWluSGVpZ2h0ID0gdGhpcy52ZXJ0LnN0eWxlLm1pbldpZHRoID0gXCIxOHB4XCI7IH1cbiAgfTtcblxuICBOYXRpdmVTY3JvbGxiYXJzLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAobWVhc3VyZSkge1xuICAgIHZhciBuZWVkc0ggPSBtZWFzdXJlLnNjcm9sbFdpZHRoID4gbWVhc3VyZS5jbGllbnRXaWR0aCArIDE7XG4gICAgdmFyIG5lZWRzViA9IG1lYXN1cmUuc2Nyb2xsSGVpZ2h0ID4gbWVhc3VyZS5jbGllbnRIZWlnaHQgKyAxO1xuICAgIHZhciBzV2lkdGggPSBtZWFzdXJlLm5hdGl2ZUJhcldpZHRoO1xuXG4gICAgaWYgKG5lZWRzVikge1xuICAgICAgdGhpcy52ZXJ0LnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgICB0aGlzLnZlcnQuc3R5bGUuYm90dG9tID0gbmVlZHNIID8gc1dpZHRoICsgXCJweFwiIDogXCIwXCI7XG4gICAgICB2YXIgdG90YWxIZWlnaHQgPSBtZWFzdXJlLnZpZXdIZWlnaHQgLSAobmVlZHNIID8gc1dpZHRoIDogMCk7XG4gICAgICAvLyBBIGJ1ZyBpbiBJRTggY2FuIGNhdXNlIHRoaXMgdmFsdWUgdG8gYmUgbmVnYXRpdmUsIHNvIGd1YXJkIGl0LlxuICAgICAgdGhpcy52ZXJ0LmZpcnN0Q2hpbGQuc3R5bGUuaGVpZ2h0ID1cbiAgICAgICAgTWF0aC5tYXgoMCwgbWVhc3VyZS5zY3JvbGxIZWlnaHQgLSBtZWFzdXJlLmNsaWVudEhlaWdodCArIHRvdGFsSGVpZ2h0KSArIFwicHhcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52ZXJ0LnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xuICAgICAgdGhpcy52ZXJ0LmZpcnN0Q2hpbGQuc3R5bGUuaGVpZ2h0ID0gXCIwXCI7XG4gICAgfVxuXG4gICAgaWYgKG5lZWRzSCkge1xuICAgICAgdGhpcy5ob3Jpei5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xuICAgICAgdGhpcy5ob3Jpei5zdHlsZS5yaWdodCA9IG5lZWRzViA/IHNXaWR0aCArIFwicHhcIiA6IFwiMFwiO1xuICAgICAgdGhpcy5ob3Jpei5zdHlsZS5sZWZ0ID0gbWVhc3VyZS5iYXJMZWZ0ICsgXCJweFwiO1xuICAgICAgdmFyIHRvdGFsV2lkdGggPSBtZWFzdXJlLnZpZXdXaWR0aCAtIG1lYXN1cmUuYmFyTGVmdCAtIChuZWVkc1YgPyBzV2lkdGggOiAwKTtcbiAgICAgIHRoaXMuaG9yaXouZmlyc3RDaGlsZC5zdHlsZS53aWR0aCA9XG4gICAgICAgIE1hdGgubWF4KDAsIG1lYXN1cmUuc2Nyb2xsV2lkdGggLSBtZWFzdXJlLmNsaWVudFdpZHRoICsgdG90YWxXaWR0aCkgKyBcInB4XCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaG9yaXouc3R5bGUuZGlzcGxheSA9IFwiXCI7XG4gICAgICB0aGlzLmhvcml6LmZpcnN0Q2hpbGQuc3R5bGUud2lkdGggPSBcIjBcIjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY2hlY2tlZFplcm9XaWR0aCAmJiBtZWFzdXJlLmNsaWVudEhlaWdodCA+IDApIHtcbiAgICAgIGlmIChzV2lkdGggPT0gMCkgeyB0aGlzLnplcm9XaWR0aEhhY2soKTsgfVxuICAgICAgdGhpcy5jaGVja2VkWmVyb1dpZHRoID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4ge3JpZ2h0OiBuZWVkc1YgPyBzV2lkdGggOiAwLCBib3R0b206IG5lZWRzSCA/IHNXaWR0aCA6IDB9XG4gIH07XG5cbiAgTmF0aXZlU2Nyb2xsYmFycy5wcm90b3R5cGUuc2V0U2Nyb2xsTGVmdCA9IGZ1bmN0aW9uIChwb3MpIHtcbiAgICBpZiAodGhpcy5ob3Jpei5zY3JvbGxMZWZ0ICE9IHBvcykgeyB0aGlzLmhvcml6LnNjcm9sbExlZnQgPSBwb3M7IH1cbiAgICBpZiAodGhpcy5kaXNhYmxlSG9yaXopIHsgdGhpcy5lbmFibGVaZXJvV2lkdGhCYXIodGhpcy5ob3JpeiwgdGhpcy5kaXNhYmxlSG9yaXosIFwiaG9yaXpcIik7IH1cbiAgfTtcblxuICBOYXRpdmVTY3JvbGxiYXJzLnByb3RvdHlwZS5zZXRTY3JvbGxUb3AgPSBmdW5jdGlvbiAocG9zKSB7XG4gICAgaWYgKHRoaXMudmVydC5zY3JvbGxUb3AgIT0gcG9zKSB7IHRoaXMudmVydC5zY3JvbGxUb3AgPSBwb3M7IH1cbiAgICBpZiAodGhpcy5kaXNhYmxlVmVydCkgeyB0aGlzLmVuYWJsZVplcm9XaWR0aEJhcih0aGlzLnZlcnQsIHRoaXMuZGlzYWJsZVZlcnQsIFwidmVydFwiKTsgfVxuICB9O1xuXG4gIE5hdGl2ZVNjcm9sbGJhcnMucHJvdG90eXBlLnplcm9XaWR0aEhhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHcgPSBtYWMgJiYgIW1hY19nZU1vdW50YWluTGlvbiA/IFwiMTJweFwiIDogXCIxOHB4XCI7XG4gICAgdGhpcy5ob3Jpei5zdHlsZS5oZWlnaHQgPSB0aGlzLnZlcnQuc3R5bGUud2lkdGggPSB3O1xuICAgIHRoaXMuaG9yaXouc3R5bGUucG9pbnRlckV2ZW50cyA9IHRoaXMudmVydC5zdHlsZS5wb2ludGVyRXZlbnRzID0gXCJub25lXCI7XG4gICAgdGhpcy5kaXNhYmxlSG9yaXogPSBuZXcgRGVsYXllZDtcbiAgICB0aGlzLmRpc2FibGVWZXJ0ID0gbmV3IERlbGF5ZWQ7XG4gIH07XG5cbiAgTmF0aXZlU2Nyb2xsYmFycy5wcm90b3R5cGUuZW5hYmxlWmVyb1dpZHRoQmFyID0gZnVuY3Rpb24gKGJhciwgZGVsYXksIHR5cGUpIHtcbiAgICBiYXIuc3R5bGUucG9pbnRlckV2ZW50cyA9IFwiYXV0b1wiO1xuICAgIGZ1bmN0aW9uIG1heWJlRGlzYWJsZSgpIHtcbiAgICAgIC8vIFRvIGZpbmQgb3V0IHdoZXRoZXIgdGhlIHNjcm9sbGJhciBpcyBzdGlsbCB2aXNpYmxlLCB3ZVxuICAgICAgLy8gY2hlY2sgd2hldGhlciB0aGUgZWxlbWVudCB1bmRlciB0aGUgcGl4ZWwgaW4gdGhlIGJvdHRvbVxuICAgICAgLy8gcmlnaHQgY29ybmVyIG9mIHRoZSBzY3JvbGxiYXIgYm94IGlzIHRoZSBzY3JvbGxiYXIgYm94XG4gICAgICAvLyBpdHNlbGYgKHdoZW4gdGhlIGJhciBpcyBzdGlsbCB2aXNpYmxlKSBvciBpdHMgZmlsbGVyIGNoaWxkXG4gICAgICAvLyAod2hlbiB0aGUgYmFyIGlzIGhpZGRlbikuIElmIGl0IGlzIHN0aWxsIHZpc2libGUsIHdlIGtlZXBcbiAgICAgIC8vIGl0IGVuYWJsZWQsIGlmIGl0J3MgaGlkZGVuLCB3ZSBkaXNhYmxlIHBvaW50ZXIgZXZlbnRzLlxuICAgICAgdmFyIGJveCA9IGJhci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIHZhciBlbHQgPSB0eXBlID09IFwidmVydFwiID8gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChib3gucmlnaHQgLSAxLCAoYm94LnRvcCArIGJveC5ib3R0b20pIC8gMilcbiAgICAgICAgICA6IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoKGJveC5yaWdodCArIGJveC5sZWZ0KSAvIDIsIGJveC5ib3R0b20gLSAxKTtcbiAgICAgIGlmIChlbHQgIT0gYmFyKSB7IGJhci5zdHlsZS5wb2ludGVyRXZlbnRzID0gXCJub25lXCI7IH1cbiAgICAgIGVsc2UgeyBkZWxheS5zZXQoMTAwMCwgbWF5YmVEaXNhYmxlKTsgfVxuICAgIH1cbiAgICBkZWxheS5zZXQoMTAwMCwgbWF5YmVEaXNhYmxlKTtcbiAgfTtcblxuICBOYXRpdmVTY3JvbGxiYXJzLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyZW50ID0gdGhpcy5ob3Jpei5wYXJlbnROb2RlO1xuICAgIHBhcmVudC5yZW1vdmVDaGlsZCh0aGlzLmhvcml6KTtcbiAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy52ZXJ0KTtcbiAgfTtcblxuICB2YXIgTnVsbFNjcm9sbGJhcnMgPSBmdW5jdGlvbiAoKSB7fTtcblxuICBOdWxsU2Nyb2xsYmFycy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4ge2JvdHRvbTogMCwgcmlnaHQ6IDB9IH07XG4gIE51bGxTY3JvbGxiYXJzLnByb3RvdHlwZS5zZXRTY3JvbGxMZWZ0ID0gZnVuY3Rpb24gKCkge307XG4gIE51bGxTY3JvbGxiYXJzLnByb3RvdHlwZS5zZXRTY3JvbGxUb3AgPSBmdW5jdGlvbiAoKSB7fTtcbiAgTnVsbFNjcm9sbGJhcnMucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge307XG5cbiAgZnVuY3Rpb24gdXBkYXRlU2Nyb2xsYmFycyhjbSwgbWVhc3VyZSkge1xuICAgIGlmICghbWVhc3VyZSkgeyBtZWFzdXJlID0gbWVhc3VyZUZvclNjcm9sbGJhcnMoY20pOyB9XG4gICAgdmFyIHN0YXJ0V2lkdGggPSBjbS5kaXNwbGF5LmJhcldpZHRoLCBzdGFydEhlaWdodCA9IGNtLmRpc3BsYXkuYmFySGVpZ2h0O1xuICAgIHVwZGF0ZVNjcm9sbGJhcnNJbm5lcihjbSwgbWVhc3VyZSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0ICYmIHN0YXJ0V2lkdGggIT0gY20uZGlzcGxheS5iYXJXaWR0aCB8fCBzdGFydEhlaWdodCAhPSBjbS5kaXNwbGF5LmJhckhlaWdodDsgaSsrKSB7XG4gICAgICBpZiAoc3RhcnRXaWR0aCAhPSBjbS5kaXNwbGF5LmJhcldpZHRoICYmIGNtLm9wdGlvbnMubGluZVdyYXBwaW5nKVxuICAgICAgICB7IHVwZGF0ZUhlaWdodHNJblZpZXdwb3J0KGNtKTsgfVxuICAgICAgdXBkYXRlU2Nyb2xsYmFyc0lubmVyKGNtLCBtZWFzdXJlRm9yU2Nyb2xsYmFycyhjbSkpO1xuICAgICAgc3RhcnRXaWR0aCA9IGNtLmRpc3BsYXkuYmFyV2lkdGg7IHN0YXJ0SGVpZ2h0ID0gY20uZGlzcGxheS5iYXJIZWlnaHQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUmUtc3luY2hyb25pemUgdGhlIGZha2Ugc2Nyb2xsYmFycyB3aXRoIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGVcbiAgLy8gY29udGVudC5cbiAgZnVuY3Rpb24gdXBkYXRlU2Nyb2xsYmFyc0lubmVyKGNtLCBtZWFzdXJlKSB7XG4gICAgdmFyIGQgPSBjbS5kaXNwbGF5O1xuICAgIHZhciBzaXplcyA9IGQuc2Nyb2xsYmFycy51cGRhdGUobWVhc3VyZSk7XG5cbiAgICBkLnNpemVyLnN0eWxlLnBhZGRpbmdSaWdodCA9IChkLmJhcldpZHRoID0gc2l6ZXMucmlnaHQpICsgXCJweFwiO1xuICAgIGQuc2l6ZXIuc3R5bGUucGFkZGluZ0JvdHRvbSA9IChkLmJhckhlaWdodCA9IHNpemVzLmJvdHRvbSkgKyBcInB4XCI7XG4gICAgZC5oZWlnaHRGb3JjZXIuc3R5bGUuYm9yZGVyQm90dG9tID0gc2l6ZXMuYm90dG9tICsgXCJweCBzb2xpZCB0cmFuc3BhcmVudFwiO1xuXG4gICAgaWYgKHNpemVzLnJpZ2h0ICYmIHNpemVzLmJvdHRvbSkge1xuICAgICAgZC5zY3JvbGxiYXJGaWxsZXIuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAgIGQuc2Nyb2xsYmFyRmlsbGVyLnN0eWxlLmhlaWdodCA9IHNpemVzLmJvdHRvbSArIFwicHhcIjtcbiAgICAgIGQuc2Nyb2xsYmFyRmlsbGVyLnN0eWxlLndpZHRoID0gc2l6ZXMucmlnaHQgKyBcInB4XCI7XG4gICAgfSBlbHNlIHsgZC5zY3JvbGxiYXJGaWxsZXIuc3R5bGUuZGlzcGxheSA9IFwiXCI7IH1cbiAgICBpZiAoc2l6ZXMuYm90dG9tICYmIGNtLm9wdGlvbnMuY292ZXJHdXR0ZXJOZXh0VG9TY3JvbGxiYXIgJiYgY20ub3B0aW9ucy5maXhlZEd1dHRlcikge1xuICAgICAgZC5ndXR0ZXJGaWxsZXIuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAgIGQuZ3V0dGVyRmlsbGVyLnN0eWxlLmhlaWdodCA9IHNpemVzLmJvdHRvbSArIFwicHhcIjtcbiAgICAgIGQuZ3V0dGVyRmlsbGVyLnN0eWxlLndpZHRoID0gbWVhc3VyZS5ndXR0ZXJXaWR0aCArIFwicHhcIjtcbiAgICB9IGVsc2UgeyBkLmd1dHRlckZpbGxlci5zdHlsZS5kaXNwbGF5ID0gXCJcIjsgfVxuICB9XG5cbiAgdmFyIHNjcm9sbGJhck1vZGVsID0ge1wibmF0aXZlXCI6IE5hdGl2ZVNjcm9sbGJhcnMsIFwibnVsbFwiOiBOdWxsU2Nyb2xsYmFyc307XG5cbiAgZnVuY3Rpb24gaW5pdFNjcm9sbGJhcnMoY20pIHtcbiAgICBpZiAoY20uZGlzcGxheS5zY3JvbGxiYXJzKSB7XG4gICAgICBjbS5kaXNwbGF5LnNjcm9sbGJhcnMuY2xlYXIoKTtcbiAgICAgIGlmIChjbS5kaXNwbGF5LnNjcm9sbGJhcnMuYWRkQ2xhc3MpXG4gICAgICAgIHsgcm1DbGFzcyhjbS5kaXNwbGF5LndyYXBwZXIsIGNtLmRpc3BsYXkuc2Nyb2xsYmFycy5hZGRDbGFzcyk7IH1cbiAgICB9XG5cbiAgICBjbS5kaXNwbGF5LnNjcm9sbGJhcnMgPSBuZXcgc2Nyb2xsYmFyTW9kZWxbY20ub3B0aW9ucy5zY3JvbGxiYXJTdHlsZV0oZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIGNtLmRpc3BsYXkud3JhcHBlci5pbnNlcnRCZWZvcmUobm9kZSwgY20uZGlzcGxheS5zY3JvbGxiYXJGaWxsZXIpO1xuICAgICAgLy8gUHJldmVudCBjbGlja3MgaW4gdGhlIHNjcm9sbGJhcnMgZnJvbSBraWxsaW5nIGZvY3VzXG4gICAgICBvbihub2RlLCBcIm1vdXNlZG93blwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChjbS5zdGF0ZS5mb2N1c2VkKSB7IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gY20uZGlzcGxheS5pbnB1dC5mb2N1cygpOyB9LCAwKTsgfVxuICAgICAgfSk7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcImNtLW5vdC1jb250ZW50XCIsIFwidHJ1ZVwiKTtcbiAgICB9LCBmdW5jdGlvbiAocG9zLCBheGlzKSB7XG4gICAgICBpZiAoYXhpcyA9PSBcImhvcml6b250YWxcIikgeyBzZXRTY3JvbGxMZWZ0KGNtLCBwb3MpOyB9XG4gICAgICBlbHNlIHsgdXBkYXRlU2Nyb2xsVG9wKGNtLCBwb3MpOyB9XG4gICAgfSwgY20pO1xuICAgIGlmIChjbS5kaXNwbGF5LnNjcm9sbGJhcnMuYWRkQ2xhc3MpXG4gICAgICB7IGFkZENsYXNzKGNtLmRpc3BsYXkud3JhcHBlciwgY20uZGlzcGxheS5zY3JvbGxiYXJzLmFkZENsYXNzKTsgfVxuICB9XG5cbiAgLy8gT3BlcmF0aW9ucyBhcmUgdXNlZCB0byB3cmFwIGEgc2VyaWVzIG9mIGNoYW5nZXMgdG8gdGhlIGVkaXRvclxuICAvLyBzdGF0ZSBpbiBzdWNoIGEgd2F5IHRoYXQgZWFjaCBjaGFuZ2Ugd29uJ3QgaGF2ZSB0byB1cGRhdGUgdGhlXG4gIC8vIGN1cnNvciBhbmQgZGlzcGxheSAod2hpY2ggd291bGQgYmUgYXdrd2FyZCwgc2xvdywgYW5kXG4gIC8vIGVycm9yLXByb25lKS4gSW5zdGVhZCwgZGlzcGxheSB1cGRhdGVzIGFyZSBiYXRjaGVkIGFuZCB0aGVuIGFsbFxuICAvLyBjb21iaW5lZCBhbmQgZXhlY3V0ZWQgYXQgb25jZS5cblxuICB2YXIgbmV4dE9wSWQgPSAwO1xuICAvLyBTdGFydCBhIG5ldyBvcGVyYXRpb24uXG4gIGZ1bmN0aW9uIHN0YXJ0T3BlcmF0aW9uKGNtKSB7XG4gICAgY20uY3VyT3AgPSB7XG4gICAgICBjbTogY20sXG4gICAgICB2aWV3Q2hhbmdlZDogZmFsc2UsICAgICAgLy8gRmxhZyB0aGF0IGluZGljYXRlcyB0aGF0IGxpbmVzIG1pZ2h0IG5lZWQgdG8gYmUgcmVkcmF3blxuICAgICAgc3RhcnRIZWlnaHQ6IGNtLmRvYy5oZWlnaHQsIC8vIFVzZWQgdG8gZGV0ZWN0IG5lZWQgdG8gdXBkYXRlIHNjcm9sbGJhclxuICAgICAgZm9yY2VVcGRhdGU6IGZhbHNlLCAgICAgIC8vIFVzZWQgdG8gZm9yY2UgYSByZWRyYXdcbiAgICAgIHVwZGF0ZUlucHV0OiAwLCAgICAgICAvLyBXaGV0aGVyIHRvIHJlc2V0IHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgICAgdHlwaW5nOiBmYWxzZSwgICAgICAgICAgIC8vIFdoZXRoZXIgdGhpcyByZXNldCBzaG91bGQgYmUgY2FyZWZ1bCB0byBsZWF2ZSBleGlzdGluZyB0ZXh0IChmb3IgY29tcG9zaXRpbmcpXG4gICAgICBjaGFuZ2VPYmpzOiBudWxsLCAgICAgICAgLy8gQWNjdW11bGF0ZWQgY2hhbmdlcywgZm9yIGZpcmluZyBjaGFuZ2UgZXZlbnRzXG4gICAgICBjdXJzb3JBY3Rpdml0eUhhbmRsZXJzOiBudWxsLCAvLyBTZXQgb2YgaGFuZGxlcnMgdG8gZmlyZSBjdXJzb3JBY3Rpdml0eSBvblxuICAgICAgY3Vyc29yQWN0aXZpdHlDYWxsZWQ6IDAsIC8vIFRyYWNrcyB3aGljaCBjdXJzb3JBY3Rpdml0eSBoYW5kbGVycyBoYXZlIGJlZW4gY2FsbGVkIGFscmVhZHlcbiAgICAgIHNlbGVjdGlvbkNoYW5nZWQ6IGZhbHNlLCAvLyBXaGV0aGVyIHRoZSBzZWxlY3Rpb24gbmVlZHMgdG8gYmUgcmVkcmF3blxuICAgICAgdXBkYXRlTWF4TGluZTogZmFsc2UsICAgIC8vIFNldCB3aGVuIHRoZSB3aWRlc3QgbGluZSBuZWVkcyB0byBiZSBkZXRlcm1pbmVkIGFuZXdcbiAgICAgIHNjcm9sbExlZnQ6IG51bGwsIHNjcm9sbFRvcDogbnVsbCwgLy8gSW50ZXJtZWRpYXRlIHNjcm9sbCBwb3NpdGlvbiwgbm90IHB1c2hlZCB0byBET00geWV0XG4gICAgICBzY3JvbGxUb1BvczogbnVsbCwgICAgICAgLy8gVXNlZCB0byBzY3JvbGwgdG8gYSBzcGVjaWZpYyBwb3NpdGlvblxuICAgICAgZm9jdXM6IGZhbHNlLFxuICAgICAgaWQ6ICsrbmV4dE9wSWQgICAgICAgICAgIC8vIFVuaXF1ZSBJRFxuICAgIH07XG4gICAgcHVzaE9wZXJhdGlvbihjbS5jdXJPcCk7XG4gIH1cblxuICAvLyBGaW5pc2ggYW4gb3BlcmF0aW9uLCB1cGRhdGluZyB0aGUgZGlzcGxheSBhbmQgc2lnbmFsbGluZyBkZWxheWVkIGV2ZW50c1xuICBmdW5jdGlvbiBlbmRPcGVyYXRpb24oY20pIHtcbiAgICB2YXIgb3AgPSBjbS5jdXJPcDtcbiAgICBpZiAob3ApIHsgZmluaXNoT3BlcmF0aW9uKG9wLCBmdW5jdGlvbiAoZ3JvdXApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXAub3BzLmxlbmd0aDsgaSsrKVxuICAgICAgICB7IGdyb3VwLm9wc1tpXS5jbS5jdXJPcCA9IG51bGw7IH1cbiAgICAgIGVuZE9wZXJhdGlvbnMoZ3JvdXApO1xuICAgIH0pOyB9XG4gIH1cblxuICAvLyBUaGUgRE9NIHVwZGF0ZXMgZG9uZSB3aGVuIGFuIG9wZXJhdGlvbiBmaW5pc2hlcyBhcmUgYmF0Y2hlZCBzb1xuICAvLyB0aGF0IHRoZSBtaW5pbXVtIG51bWJlciBvZiByZWxheW91dHMgYXJlIHJlcXVpcmVkLlxuICBmdW5jdGlvbiBlbmRPcGVyYXRpb25zKGdyb3VwKSB7XG4gICAgdmFyIG9wcyA9IGdyb3VwLm9wcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9wcy5sZW5ndGg7IGkrKykgLy8gUmVhZCBET01cbiAgICAgIHsgZW5kT3BlcmF0aW9uX1IxKG9wc1tpXSk7IH1cbiAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCBvcHMubGVuZ3RoOyBpJDErKykgLy8gV3JpdGUgRE9NIChtYXliZSlcbiAgICAgIHsgZW5kT3BlcmF0aW9uX1cxKG9wc1tpJDFdKTsgfVxuICAgIGZvciAodmFyIGkkMiA9IDA7IGkkMiA8IG9wcy5sZW5ndGg7IGkkMisrKSAvLyBSZWFkIERPTVxuICAgICAgeyBlbmRPcGVyYXRpb25fUjIob3BzW2kkMl0pOyB9XG4gICAgZm9yICh2YXIgaSQzID0gMDsgaSQzIDwgb3BzLmxlbmd0aDsgaSQzKyspIC8vIFdyaXRlIERPTSAobWF5YmUpXG4gICAgICB7IGVuZE9wZXJhdGlvbl9XMihvcHNbaSQzXSk7IH1cbiAgICBmb3IgKHZhciBpJDQgPSAwOyBpJDQgPCBvcHMubGVuZ3RoOyBpJDQrKykgLy8gUmVhZCBET01cbiAgICAgIHsgZW5kT3BlcmF0aW9uX2ZpbmlzaChvcHNbaSQ0XSk7IH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVuZE9wZXJhdGlvbl9SMShvcCkge1xuICAgIHZhciBjbSA9IG9wLmNtLCBkaXNwbGF5ID0gY20uZGlzcGxheTtcbiAgICBtYXliZUNsaXBTY3JvbGxiYXJzKGNtKTtcbiAgICBpZiAob3AudXBkYXRlTWF4TGluZSkgeyBmaW5kTWF4TGluZShjbSk7IH1cblxuICAgIG9wLm11c3RVcGRhdGUgPSBvcC52aWV3Q2hhbmdlZCB8fCBvcC5mb3JjZVVwZGF0ZSB8fCBvcC5zY3JvbGxUb3AgIT0gbnVsbCB8fFxuICAgICAgb3Auc2Nyb2xsVG9Qb3MgJiYgKG9wLnNjcm9sbFRvUG9zLmZyb20ubGluZSA8IGRpc3BsYXkudmlld0Zyb20gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICBvcC5zY3JvbGxUb1Bvcy50by5saW5lID49IGRpc3BsYXkudmlld1RvKSB8fFxuICAgICAgZGlzcGxheS5tYXhMaW5lQ2hhbmdlZCAmJiBjbS5vcHRpb25zLmxpbmVXcmFwcGluZztcbiAgICBvcC51cGRhdGUgPSBvcC5tdXN0VXBkYXRlICYmXG4gICAgICBuZXcgRGlzcGxheVVwZGF0ZShjbSwgb3AubXVzdFVwZGF0ZSAmJiB7dG9wOiBvcC5zY3JvbGxUb3AsIGVuc3VyZTogb3Auc2Nyb2xsVG9Qb3N9LCBvcC5mb3JjZVVwZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBlbmRPcGVyYXRpb25fVzEob3ApIHtcbiAgICBvcC51cGRhdGVkRGlzcGxheSA9IG9wLm11c3RVcGRhdGUgJiYgdXBkYXRlRGlzcGxheUlmTmVlZGVkKG9wLmNtLCBvcC51cGRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gZW5kT3BlcmF0aW9uX1IyKG9wKSB7XG4gICAgdmFyIGNtID0gb3AuY20sIGRpc3BsYXkgPSBjbS5kaXNwbGF5O1xuICAgIGlmIChvcC51cGRhdGVkRGlzcGxheSkgeyB1cGRhdGVIZWlnaHRzSW5WaWV3cG9ydChjbSk7IH1cblxuICAgIG9wLmJhck1lYXN1cmUgPSBtZWFzdXJlRm9yU2Nyb2xsYmFycyhjbSk7XG5cbiAgICAvLyBJZiB0aGUgbWF4IGxpbmUgY2hhbmdlZCBzaW5jZSBpdCB3YXMgbGFzdCBtZWFzdXJlZCwgbWVhc3VyZSBpdCxcbiAgICAvLyBhbmQgZW5zdXJlIHRoZSBkb2N1bWVudCdzIHdpZHRoIG1hdGNoZXMgaXQuXG4gICAgLy8gdXBkYXRlRGlzcGxheV9XMiB3aWxsIHVzZSB0aGVzZSBwcm9wZXJ0aWVzIHRvIGRvIHRoZSBhY3R1YWwgcmVzaXppbmdcbiAgICBpZiAoZGlzcGxheS5tYXhMaW5lQ2hhbmdlZCAmJiAhY20ub3B0aW9ucy5saW5lV3JhcHBpbmcpIHtcbiAgICAgIG9wLmFkanVzdFdpZHRoVG8gPSBtZWFzdXJlQ2hhcihjbSwgZGlzcGxheS5tYXhMaW5lLCBkaXNwbGF5Lm1heExpbmUudGV4dC5sZW5ndGgpLmxlZnQgKyAzO1xuICAgICAgY20uZGlzcGxheS5zaXplcldpZHRoID0gb3AuYWRqdXN0V2lkdGhUbztcbiAgICAgIG9wLmJhck1lYXN1cmUuc2Nyb2xsV2lkdGggPVxuICAgICAgICBNYXRoLm1heChkaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoLCBkaXNwbGF5LnNpemVyLm9mZnNldExlZnQgKyBvcC5hZGp1c3RXaWR0aFRvICsgc2Nyb2xsR2FwKGNtKSArIGNtLmRpc3BsYXkuYmFyV2lkdGgpO1xuICAgICAgb3AubWF4U2Nyb2xsTGVmdCA9IE1hdGgubWF4KDAsIGRpc3BsYXkuc2l6ZXIub2Zmc2V0TGVmdCArIG9wLmFkanVzdFdpZHRoVG8gLSBkaXNwbGF5V2lkdGgoY20pKTtcbiAgICB9XG5cbiAgICBpZiAob3AudXBkYXRlZERpc3BsYXkgfHwgb3Auc2VsZWN0aW9uQ2hhbmdlZClcbiAgICAgIHsgb3AucHJlcGFyZWRTZWxlY3Rpb24gPSBkaXNwbGF5LmlucHV0LnByZXBhcmVTZWxlY3Rpb24oKTsgfVxuICB9XG5cbiAgZnVuY3Rpb24gZW5kT3BlcmF0aW9uX1cyKG9wKSB7XG4gICAgdmFyIGNtID0gb3AuY207XG5cbiAgICBpZiAob3AuYWRqdXN0V2lkdGhUbyAhPSBudWxsKSB7XG4gICAgICBjbS5kaXNwbGF5LnNpemVyLnN0eWxlLm1pbldpZHRoID0gb3AuYWRqdXN0V2lkdGhUbyArIFwicHhcIjtcbiAgICAgIGlmIChvcC5tYXhTY3JvbGxMZWZ0IDwgY20uZG9jLnNjcm9sbExlZnQpXG4gICAgICAgIHsgc2V0U2Nyb2xsTGVmdChjbSwgTWF0aC5taW4oY20uZGlzcGxheS5zY3JvbGxlci5zY3JvbGxMZWZ0LCBvcC5tYXhTY3JvbGxMZWZ0KSwgdHJ1ZSk7IH1cbiAgICAgIGNtLmRpc3BsYXkubWF4TGluZUNoYW5nZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgdGFrZUZvY3VzID0gb3AuZm9jdXMgJiYgb3AuZm9jdXMgPT0gYWN0aXZlRWx0KCk7XG4gICAgaWYgKG9wLnByZXBhcmVkU2VsZWN0aW9uKVxuICAgICAgeyBjbS5kaXNwbGF5LmlucHV0LnNob3dTZWxlY3Rpb24ob3AucHJlcGFyZWRTZWxlY3Rpb24sIHRha2VGb2N1cyk7IH1cbiAgICBpZiAob3AudXBkYXRlZERpc3BsYXkgfHwgb3Auc3RhcnRIZWlnaHQgIT0gY20uZG9jLmhlaWdodClcbiAgICAgIHsgdXBkYXRlU2Nyb2xsYmFycyhjbSwgb3AuYmFyTWVhc3VyZSk7IH1cbiAgICBpZiAob3AudXBkYXRlZERpc3BsYXkpXG4gICAgICB7IHNldERvY3VtZW50SGVpZ2h0KGNtLCBvcC5iYXJNZWFzdXJlKTsgfVxuXG4gICAgaWYgKG9wLnNlbGVjdGlvbkNoYW5nZWQpIHsgcmVzdGFydEJsaW5rKGNtKTsgfVxuXG4gICAgaWYgKGNtLnN0YXRlLmZvY3VzZWQgJiYgb3AudXBkYXRlSW5wdXQpXG4gICAgICB7IGNtLmRpc3BsYXkuaW5wdXQucmVzZXQob3AudHlwaW5nKTsgfVxuICAgIGlmICh0YWtlRm9jdXMpIHsgZW5zdXJlRm9jdXMob3AuY20pOyB9XG4gIH1cblxuICBmdW5jdGlvbiBlbmRPcGVyYXRpb25fZmluaXNoKG9wKSB7XG4gICAgdmFyIGNtID0gb3AuY20sIGRpc3BsYXkgPSBjbS5kaXNwbGF5LCBkb2MgPSBjbS5kb2M7XG5cbiAgICBpZiAob3AudXBkYXRlZERpc3BsYXkpIHsgcG9zdFVwZGF0ZURpc3BsYXkoY20sIG9wLnVwZGF0ZSk7IH1cblxuICAgIC8vIEFib3J0IG1vdXNlIHdoZWVsIGRlbHRhIG1lYXN1cmVtZW50LCB3aGVuIHNjcm9sbGluZyBleHBsaWNpdGx5XG4gICAgaWYgKGRpc3BsYXkud2hlZWxTdGFydFggIT0gbnVsbCAmJiAob3Auc2Nyb2xsVG9wICE9IG51bGwgfHwgb3Auc2Nyb2xsTGVmdCAhPSBudWxsIHx8IG9wLnNjcm9sbFRvUG9zKSlcbiAgICAgIHsgZGlzcGxheS53aGVlbFN0YXJ0WCA9IGRpc3BsYXkud2hlZWxTdGFydFkgPSBudWxsOyB9XG5cbiAgICAvLyBQcm9wYWdhdGUgdGhlIHNjcm9sbCBwb3NpdGlvbiB0byB0aGUgYWN0dWFsIERPTSBzY3JvbGxlclxuICAgIGlmIChvcC5zY3JvbGxUb3AgIT0gbnVsbCkgeyBzZXRTY3JvbGxUb3AoY20sIG9wLnNjcm9sbFRvcCwgb3AuZm9yY2VTY3JvbGwpOyB9XG5cbiAgICBpZiAob3Auc2Nyb2xsTGVmdCAhPSBudWxsKSB7IHNldFNjcm9sbExlZnQoY20sIG9wLnNjcm9sbExlZnQsIHRydWUsIHRydWUpOyB9XG4gICAgLy8gSWYgd2UgbmVlZCB0byBzY3JvbGwgYSBzcGVjaWZpYyBwb3NpdGlvbiBpbnRvIHZpZXcsIGRvIHNvLlxuICAgIGlmIChvcC5zY3JvbGxUb1Bvcykge1xuICAgICAgdmFyIHJlY3QgPSBzY3JvbGxQb3NJbnRvVmlldyhjbSwgY2xpcFBvcyhkb2MsIG9wLnNjcm9sbFRvUG9zLmZyb20pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwUG9zKGRvYywgb3Auc2Nyb2xsVG9Qb3MudG8pLCBvcC5zY3JvbGxUb1Bvcy5tYXJnaW4pO1xuICAgICAgbWF5YmVTY3JvbGxXaW5kb3coY20sIHJlY3QpO1xuICAgIH1cblxuICAgIC8vIEZpcmUgZXZlbnRzIGZvciBtYXJrZXJzIHRoYXQgYXJlIGhpZGRlbi91bmlkZGVuIGJ5IGVkaXRpbmcgb3JcbiAgICAvLyB1bmRvaW5nXG4gICAgdmFyIGhpZGRlbiA9IG9wLm1heWJlSGlkZGVuTWFya2VycywgdW5oaWRkZW4gPSBvcC5tYXliZVVuaGlkZGVuTWFya2VycztcbiAgICBpZiAoaGlkZGVuKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgaGlkZGVuLmxlbmd0aDsgKytpKVxuICAgICAgeyBpZiAoIWhpZGRlbltpXS5saW5lcy5sZW5ndGgpIHsgc2lnbmFsKGhpZGRlbltpXSwgXCJoaWRlXCIpOyB9IH0gfVxuICAgIGlmICh1bmhpZGRlbikgeyBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCB1bmhpZGRlbi5sZW5ndGg7ICsraSQxKVxuICAgICAgeyBpZiAodW5oaWRkZW5baSQxXS5saW5lcy5sZW5ndGgpIHsgc2lnbmFsKHVuaGlkZGVuW2kkMV0sIFwidW5oaWRlXCIpOyB9IH0gfVxuXG4gICAgaWYgKGRpc3BsYXkud3JhcHBlci5vZmZzZXRIZWlnaHQpXG4gICAgICB7IGRvYy5zY3JvbGxUb3AgPSBjbS5kaXNwbGF5LnNjcm9sbGVyLnNjcm9sbFRvcDsgfVxuXG4gICAgLy8gRmlyZSBjaGFuZ2UgZXZlbnRzLCBhbmQgZGVsYXllZCBldmVudCBoYW5kbGVyc1xuICAgIGlmIChvcC5jaGFuZ2VPYmpzKVxuICAgICAgeyBzaWduYWwoY20sIFwiY2hhbmdlc1wiLCBjbSwgb3AuY2hhbmdlT2Jqcyk7IH1cbiAgICBpZiAob3AudXBkYXRlKVxuICAgICAgeyBvcC51cGRhdGUuZmluaXNoKCk7IH1cbiAgfVxuXG4gIC8vIFJ1biB0aGUgZ2l2ZW4gZnVuY3Rpb24gaW4gYW4gb3BlcmF0aW9uXG4gIGZ1bmN0aW9uIHJ1bkluT3AoY20sIGYpIHtcbiAgICBpZiAoY20uY3VyT3ApIHsgcmV0dXJuIGYoKSB9XG4gICAgc3RhcnRPcGVyYXRpb24oY20pO1xuICAgIHRyeSB7IHJldHVybiBmKCkgfVxuICAgIGZpbmFsbHkgeyBlbmRPcGVyYXRpb24oY20pOyB9XG4gIH1cbiAgLy8gV3JhcHMgYSBmdW5jdGlvbiBpbiBhbiBvcGVyYXRpb24uIFJldHVybnMgdGhlIHdyYXBwZWQgZnVuY3Rpb24uXG4gIGZ1bmN0aW9uIG9wZXJhdGlvbihjbSwgZikge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIGlmIChjbS5jdXJPcCkgeyByZXR1cm4gZi5hcHBseShjbSwgYXJndW1lbnRzKSB9XG4gICAgICBzdGFydE9wZXJhdGlvbihjbSk7XG4gICAgICB0cnkgeyByZXR1cm4gZi5hcHBseShjbSwgYXJndW1lbnRzKSB9XG4gICAgICBmaW5hbGx5IHsgZW5kT3BlcmF0aW9uKGNtKTsgfVxuICAgIH1cbiAgfVxuICAvLyBVc2VkIHRvIGFkZCBtZXRob2RzIHRvIGVkaXRvciBhbmQgZG9jIGluc3RhbmNlcywgd3JhcHBpbmcgdGhlbSBpblxuICAvLyBvcGVyYXRpb25zLlxuICBmdW5jdGlvbiBtZXRob2RPcChmKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHRoaXMuY3VyT3ApIHsgcmV0dXJuIGYuYXBwbHkodGhpcywgYXJndW1lbnRzKSB9XG4gICAgICBzdGFydE9wZXJhdGlvbih0aGlzKTtcbiAgICAgIHRyeSB7IHJldHVybiBmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfVxuICAgICAgZmluYWxseSB7IGVuZE9wZXJhdGlvbih0aGlzKTsgfVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBkb2NNZXRob2RPcChmKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNtID0gdGhpcy5jbTtcbiAgICAgIGlmICghY20gfHwgY20uY3VyT3ApIHsgcmV0dXJuIGYuYXBwbHkodGhpcywgYXJndW1lbnRzKSB9XG4gICAgICBzdGFydE9wZXJhdGlvbihjbSk7XG4gICAgICB0cnkgeyByZXR1cm4gZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpIH1cbiAgICAgIGZpbmFsbHkgeyBlbmRPcGVyYXRpb24oY20pOyB9XG4gICAgfVxuICB9XG5cbiAgLy8gSElHSExJR0hUIFdPUktFUlxuXG4gIGZ1bmN0aW9uIHN0YXJ0V29ya2VyKGNtLCB0aW1lKSB7XG4gICAgaWYgKGNtLmRvYy5oaWdobGlnaHRGcm9udGllciA8IGNtLmRpc3BsYXkudmlld1RvKVxuICAgICAgeyBjbS5zdGF0ZS5oaWdobGlnaHQuc2V0KHRpbWUsIGJpbmQoaGlnaGxpZ2h0V29ya2VyLCBjbSkpOyB9XG4gIH1cblxuICBmdW5jdGlvbiBoaWdobGlnaHRXb3JrZXIoY20pIHtcbiAgICB2YXIgZG9jID0gY20uZG9jO1xuICAgIGlmIChkb2MuaGlnaGxpZ2h0RnJvbnRpZXIgPj0gY20uZGlzcGxheS52aWV3VG8pIHsgcmV0dXJuIH1cbiAgICB2YXIgZW5kID0gK25ldyBEYXRlICsgY20ub3B0aW9ucy53b3JrVGltZTtcbiAgICB2YXIgY29udGV4dCA9IGdldENvbnRleHRCZWZvcmUoY20sIGRvYy5oaWdobGlnaHRGcm9udGllcik7XG4gICAgdmFyIGNoYW5nZWRMaW5lcyA9IFtdO1xuXG4gICAgZG9jLml0ZXIoY29udGV4dC5saW5lLCBNYXRoLm1pbihkb2MuZmlyc3QgKyBkb2Muc2l6ZSwgY20uZGlzcGxheS52aWV3VG8gKyA1MDApLCBmdW5jdGlvbiAobGluZSkge1xuICAgICAgaWYgKGNvbnRleHQubGluZSA+PSBjbS5kaXNwbGF5LnZpZXdGcm9tKSB7IC8vIFZpc2libGVcbiAgICAgICAgdmFyIG9sZFN0eWxlcyA9IGxpbmUuc3R5bGVzO1xuICAgICAgICB2YXIgcmVzZXRTdGF0ZSA9IGxpbmUudGV4dC5sZW5ndGggPiBjbS5vcHRpb25zLm1heEhpZ2hsaWdodExlbmd0aCA/IGNvcHlTdGF0ZShkb2MubW9kZSwgY29udGV4dC5zdGF0ZSkgOiBudWxsO1xuICAgICAgICB2YXIgaGlnaGxpZ2h0ZWQgPSBoaWdobGlnaHRMaW5lKGNtLCBsaW5lLCBjb250ZXh0LCB0cnVlKTtcbiAgICAgICAgaWYgKHJlc2V0U3RhdGUpIHsgY29udGV4dC5zdGF0ZSA9IHJlc2V0U3RhdGU7IH1cbiAgICAgICAgbGluZS5zdHlsZXMgPSBoaWdobGlnaHRlZC5zdHlsZXM7XG4gICAgICAgIHZhciBvbGRDbHMgPSBsaW5lLnN0eWxlQ2xhc3NlcywgbmV3Q2xzID0gaGlnaGxpZ2h0ZWQuY2xhc3NlcztcbiAgICAgICAgaWYgKG5ld0NscykgeyBsaW5lLnN0eWxlQ2xhc3NlcyA9IG5ld0NsczsgfVxuICAgICAgICBlbHNlIGlmIChvbGRDbHMpIHsgbGluZS5zdHlsZUNsYXNzZXMgPSBudWxsOyB9XG4gICAgICAgIHZhciBpc2NoYW5nZSA9ICFvbGRTdHlsZXMgfHwgb2xkU3R5bGVzLmxlbmd0aCAhPSBsaW5lLnN0eWxlcy5sZW5ndGggfHxcbiAgICAgICAgICBvbGRDbHMgIT0gbmV3Q2xzICYmICghb2xkQ2xzIHx8ICFuZXdDbHMgfHwgb2xkQ2xzLmJnQ2xhc3MgIT0gbmV3Q2xzLmJnQ2xhc3MgfHwgb2xkQ2xzLnRleHRDbGFzcyAhPSBuZXdDbHMudGV4dENsYXNzKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7ICFpc2NoYW5nZSAmJiBpIDwgb2xkU3R5bGVzLmxlbmd0aDsgKytpKSB7IGlzY2hhbmdlID0gb2xkU3R5bGVzW2ldICE9IGxpbmUuc3R5bGVzW2ldOyB9XG4gICAgICAgIGlmIChpc2NoYW5nZSkgeyBjaGFuZ2VkTGluZXMucHVzaChjb250ZXh0LmxpbmUpOyB9XG4gICAgICAgIGxpbmUuc3RhdGVBZnRlciA9IGNvbnRleHQuc2F2ZSgpO1xuICAgICAgICBjb250ZXh0Lm5leHRMaW5lKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobGluZS50ZXh0Lmxlbmd0aCA8PSBjbS5vcHRpb25zLm1heEhpZ2hsaWdodExlbmd0aClcbiAgICAgICAgICB7IHByb2Nlc3NMaW5lKGNtLCBsaW5lLnRleHQsIGNvbnRleHQpOyB9XG4gICAgICAgIGxpbmUuc3RhdGVBZnRlciA9IGNvbnRleHQubGluZSAlIDUgPT0gMCA/IGNvbnRleHQuc2F2ZSgpIDogbnVsbDtcbiAgICAgICAgY29udGV4dC5uZXh0TGluZSgpO1xuICAgICAgfVxuICAgICAgaWYgKCtuZXcgRGF0ZSA+IGVuZCkge1xuICAgICAgICBzdGFydFdvcmtlcihjbSwgY20ub3B0aW9ucy53b3JrRGVsYXkpO1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH0pO1xuICAgIGRvYy5oaWdobGlnaHRGcm9udGllciA9IGNvbnRleHQubGluZTtcbiAgICBkb2MubW9kZUZyb250aWVyID0gTWF0aC5tYXgoZG9jLm1vZGVGcm9udGllciwgY29udGV4dC5saW5lKTtcbiAgICBpZiAoY2hhbmdlZExpbmVzLmxlbmd0aCkgeyBydW5Jbk9wKGNtLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYW5nZWRMaW5lcy5sZW5ndGg7IGkrKylcbiAgICAgICAgeyByZWdMaW5lQ2hhbmdlKGNtLCBjaGFuZ2VkTGluZXNbaV0sIFwidGV4dFwiKTsgfVxuICAgIH0pOyB9XG4gIH1cblxuICAvLyBESVNQTEFZIERSQVdJTkdcblxuICB2YXIgRGlzcGxheVVwZGF0ZSA9IGZ1bmN0aW9uKGNtLCB2aWV3cG9ydCwgZm9yY2UpIHtcbiAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXk7XG5cbiAgICB0aGlzLnZpZXdwb3J0ID0gdmlld3BvcnQ7XG4gICAgLy8gU3RvcmUgc29tZSB2YWx1ZXMgdGhhdCB3ZSdsbCBuZWVkIGxhdGVyIChidXQgZG9uJ3Qgd2FudCB0byBmb3JjZSBhIHJlbGF5b3V0IGZvcilcbiAgICB0aGlzLnZpc2libGUgPSB2aXNpYmxlTGluZXMoZGlzcGxheSwgY20uZG9jLCB2aWV3cG9ydCk7XG4gICAgdGhpcy5lZGl0b3JJc0hpZGRlbiA9ICFkaXNwbGF5LndyYXBwZXIub2Zmc2V0V2lkdGg7XG4gICAgdGhpcy53cmFwcGVySGVpZ2h0ID0gZGlzcGxheS53cmFwcGVyLmNsaWVudEhlaWdodDtcbiAgICB0aGlzLndyYXBwZXJXaWR0aCA9IGRpc3BsYXkud3JhcHBlci5jbGllbnRXaWR0aDtcbiAgICB0aGlzLm9sZERpc3BsYXlXaWR0aCA9IGRpc3BsYXlXaWR0aChjbSk7XG4gICAgdGhpcy5mb3JjZSA9IGZvcmNlO1xuICAgIHRoaXMuZGltcyA9IGdldERpbWVuc2lvbnMoY20pO1xuICAgIHRoaXMuZXZlbnRzID0gW107XG4gIH07XG5cbiAgRGlzcGxheVVwZGF0ZS5wcm90b3R5cGUuc2lnbmFsID0gZnVuY3Rpb24gKGVtaXR0ZXIsIHR5cGUpIHtcbiAgICBpZiAoaGFzSGFuZGxlcihlbWl0dGVyLCB0eXBlKSlcbiAgICAgIHsgdGhpcy5ldmVudHMucHVzaChhcmd1bWVudHMpOyB9XG4gIH07XG4gIERpc3BsYXlVcGRhdGUucHJvdG90eXBlLmZpbmlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZXZlbnRzLmxlbmd0aDsgaSsrKVxuICAgICAgeyBzaWduYWwuYXBwbHkobnVsbCwgdGhpcy5ldmVudHNbaV0pOyB9XG4gIH07XG5cbiAgZnVuY3Rpb24gbWF5YmVDbGlwU2Nyb2xsYmFycyhjbSkge1xuICAgIHZhciBkaXNwbGF5ID0gY20uZGlzcGxheTtcbiAgICBpZiAoIWRpc3BsYXkuc2Nyb2xsYmFyc0NsaXBwZWQgJiYgZGlzcGxheS5zY3JvbGxlci5vZmZzZXRXaWR0aCkge1xuICAgICAgZGlzcGxheS5uYXRpdmVCYXJXaWR0aCA9IGRpc3BsYXkuc2Nyb2xsZXIub2Zmc2V0V2lkdGggLSBkaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoO1xuICAgICAgZGlzcGxheS5oZWlnaHRGb3JjZXIuc3R5bGUuaGVpZ2h0ID0gc2Nyb2xsR2FwKGNtKSArIFwicHhcIjtcbiAgICAgIGRpc3BsYXkuc2l6ZXIuc3R5bGUubWFyZ2luQm90dG9tID0gLWRpc3BsYXkubmF0aXZlQmFyV2lkdGggKyBcInB4XCI7XG4gICAgICBkaXNwbGF5LnNpemVyLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGggPSBzY3JvbGxHYXAoY20pICsgXCJweFwiO1xuICAgICAgZGlzcGxheS5zY3JvbGxiYXJzQ2xpcHBlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2VsZWN0aW9uU25hcHNob3QoY20pIHtcbiAgICBpZiAoY20uaGFzRm9jdXMoKSkgeyByZXR1cm4gbnVsbCB9XG4gICAgdmFyIGFjdGl2ZSA9IGFjdGl2ZUVsdCgpO1xuICAgIGlmICghYWN0aXZlIHx8ICFjb250YWlucyhjbS5kaXNwbGF5LmxpbmVEaXYsIGFjdGl2ZSkpIHsgcmV0dXJuIG51bGwgfVxuICAgIHZhciByZXN1bHQgPSB7YWN0aXZlRWx0OiBhY3RpdmV9O1xuICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7XG4gICAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgaWYgKHNlbC5hbmNob3JOb2RlICYmIHNlbC5leHRlbmQgJiYgY29udGFpbnMoY20uZGlzcGxheS5saW5lRGl2LCBzZWwuYW5jaG9yTm9kZSkpIHtcbiAgICAgICAgcmVzdWx0LmFuY2hvck5vZGUgPSBzZWwuYW5jaG9yTm9kZTtcbiAgICAgICAgcmVzdWx0LmFuY2hvck9mZnNldCA9IHNlbC5hbmNob3JPZmZzZXQ7XG4gICAgICAgIHJlc3VsdC5mb2N1c05vZGUgPSBzZWwuZm9jdXNOb2RlO1xuICAgICAgICByZXN1bHQuZm9jdXNPZmZzZXQgPSBzZWwuZm9jdXNPZmZzZXQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc3RvcmVTZWxlY3Rpb24oc25hcHNob3QpIHtcbiAgICBpZiAoIXNuYXBzaG90IHx8ICFzbmFwc2hvdC5hY3RpdmVFbHQgfHwgc25hcHNob3QuYWN0aXZlRWx0ID09IGFjdGl2ZUVsdCgpKSB7IHJldHVybiB9XG4gICAgc25hcHNob3QuYWN0aXZlRWx0LmZvY3VzKCk7XG4gICAgaWYgKCEvXihJTlBVVHxURVhUQVJFQSkkLy50ZXN0KHNuYXBzaG90LmFjdGl2ZUVsdC5ub2RlTmFtZSkgJiZcbiAgICAgICAgc25hcHNob3QuYW5jaG9yTm9kZSAmJiBjb250YWlucyhkb2N1bWVudC5ib2R5LCBzbmFwc2hvdC5hbmNob3JOb2RlKSAmJiBjb250YWlucyhkb2N1bWVudC5ib2R5LCBzbmFwc2hvdC5mb2N1c05vZGUpKSB7XG4gICAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpLCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICByYW5nZS5zZXRFbmQoc25hcHNob3QuYW5jaG9yTm9kZSwgc25hcHNob3QuYW5jaG9yT2Zmc2V0KTtcbiAgICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTtcbiAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7XG4gICAgICBzZWwuZXh0ZW5kKHNuYXBzaG90LmZvY3VzTm9kZSwgc25hcHNob3QuZm9jdXNPZmZzZXQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIERvZXMgdGhlIGFjdHVhbCB1cGRhdGluZyBvZiB0aGUgbGluZSBkaXNwbGF5LiBCYWlscyBvdXRcbiAgLy8gKHJldHVybmluZyBmYWxzZSkgd2hlbiB0aGVyZSBpcyBub3RoaW5nIHRvIGJlIGRvbmUgYW5kIGZvcmNlZCBpc1xuICAvLyBmYWxzZS5cbiAgZnVuY3Rpb24gdXBkYXRlRGlzcGxheUlmTmVlZGVkKGNtLCB1cGRhdGUpIHtcbiAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXksIGRvYyA9IGNtLmRvYztcblxuICAgIGlmICh1cGRhdGUuZWRpdG9ySXNIaWRkZW4pIHtcbiAgICAgIHJlc2V0VmlldyhjbSk7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICAvLyBCYWlsIG91dCBpZiB0aGUgdmlzaWJsZSBhcmVhIGlzIGFscmVhZHkgcmVuZGVyZWQgYW5kIG5vdGhpbmcgY2hhbmdlZC5cbiAgICBpZiAoIXVwZGF0ZS5mb3JjZSAmJlxuICAgICAgICB1cGRhdGUudmlzaWJsZS5mcm9tID49IGRpc3BsYXkudmlld0Zyb20gJiYgdXBkYXRlLnZpc2libGUudG8gPD0gZGlzcGxheS52aWV3VG8gJiZcbiAgICAgICAgKGRpc3BsYXkudXBkYXRlTGluZU51bWJlcnMgPT0gbnVsbCB8fCBkaXNwbGF5LnVwZGF0ZUxpbmVOdW1iZXJzID49IGRpc3BsYXkudmlld1RvKSAmJlxuICAgICAgICBkaXNwbGF5LnJlbmRlcmVkVmlldyA9PSBkaXNwbGF5LnZpZXcgJiYgY291bnREaXJ0eVZpZXcoY20pID09IDApXG4gICAgICB7IHJldHVybiBmYWxzZSB9XG5cbiAgICBpZiAobWF5YmVVcGRhdGVMaW5lTnVtYmVyV2lkdGgoY20pKSB7XG4gICAgICByZXNldFZpZXcoY20pO1xuICAgICAgdXBkYXRlLmRpbXMgPSBnZXREaW1lbnNpb25zKGNtKTtcbiAgICB9XG5cbiAgICAvLyBDb21wdXRlIGEgc3VpdGFibGUgbmV3IHZpZXdwb3J0IChmcm9tICYgdG8pXG4gICAgdmFyIGVuZCA9IGRvYy5maXJzdCArIGRvYy5zaXplO1xuICAgIHZhciBmcm9tID0gTWF0aC5tYXgodXBkYXRlLnZpc2libGUuZnJvbSAtIGNtLm9wdGlvbnMudmlld3BvcnRNYXJnaW4sIGRvYy5maXJzdCk7XG4gICAgdmFyIHRvID0gTWF0aC5taW4oZW5kLCB1cGRhdGUudmlzaWJsZS50byArIGNtLm9wdGlvbnMudmlld3BvcnRNYXJnaW4pO1xuICAgIGlmIChkaXNwbGF5LnZpZXdGcm9tIDwgZnJvbSAmJiBmcm9tIC0gZGlzcGxheS52aWV3RnJvbSA8IDIwKSB7IGZyb20gPSBNYXRoLm1heChkb2MuZmlyc3QsIGRpc3BsYXkudmlld0Zyb20pOyB9XG4gICAgaWYgKGRpc3BsYXkudmlld1RvID4gdG8gJiYgZGlzcGxheS52aWV3VG8gLSB0byA8IDIwKSB7IHRvID0gTWF0aC5taW4oZW5kLCBkaXNwbGF5LnZpZXdUbyk7IH1cbiAgICBpZiAoc2F3Q29sbGFwc2VkU3BhbnMpIHtcbiAgICAgIGZyb20gPSB2aXN1YWxMaW5lTm8oY20uZG9jLCBmcm9tKTtcbiAgICAgIHRvID0gdmlzdWFsTGluZUVuZE5vKGNtLmRvYywgdG8pO1xuICAgIH1cblxuICAgIHZhciBkaWZmZXJlbnQgPSBmcm9tICE9IGRpc3BsYXkudmlld0Zyb20gfHwgdG8gIT0gZGlzcGxheS52aWV3VG8gfHxcbiAgICAgIGRpc3BsYXkubGFzdFdyYXBIZWlnaHQgIT0gdXBkYXRlLndyYXBwZXJIZWlnaHQgfHwgZGlzcGxheS5sYXN0V3JhcFdpZHRoICE9IHVwZGF0ZS53cmFwcGVyV2lkdGg7XG4gICAgYWRqdXN0VmlldyhjbSwgZnJvbSwgdG8pO1xuXG4gICAgZGlzcGxheS52aWV3T2Zmc2V0ID0gaGVpZ2h0QXRMaW5lKGdldExpbmUoY20uZG9jLCBkaXNwbGF5LnZpZXdGcm9tKSk7XG4gICAgLy8gUG9zaXRpb24gdGhlIG1vdmVyIGRpdiB0byBhbGlnbiB3aXRoIHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvblxuICAgIGNtLmRpc3BsYXkubW92ZXIuc3R5bGUudG9wID0gZGlzcGxheS52aWV3T2Zmc2V0ICsgXCJweFwiO1xuXG4gICAgdmFyIHRvVXBkYXRlID0gY291bnREaXJ0eVZpZXcoY20pO1xuICAgIGlmICghZGlmZmVyZW50ICYmIHRvVXBkYXRlID09IDAgJiYgIXVwZGF0ZS5mb3JjZSAmJiBkaXNwbGF5LnJlbmRlcmVkVmlldyA9PSBkaXNwbGF5LnZpZXcgJiZcbiAgICAgICAgKGRpc3BsYXkudXBkYXRlTGluZU51bWJlcnMgPT0gbnVsbCB8fCBkaXNwbGF5LnVwZGF0ZUxpbmVOdW1iZXJzID49IGRpc3BsYXkudmlld1RvKSlcbiAgICAgIHsgcmV0dXJuIGZhbHNlIH1cblxuICAgIC8vIEZvciBiaWcgY2hhbmdlcywgd2UgaGlkZSB0aGUgZW5jbG9zaW5nIGVsZW1lbnQgZHVyaW5nIHRoZVxuICAgIC8vIHVwZGF0ZSwgc2luY2UgdGhhdCBzcGVlZHMgdXAgdGhlIG9wZXJhdGlvbnMgb24gbW9zdCBicm93c2Vycy5cbiAgICB2YXIgc2VsU25hcHNob3QgPSBzZWxlY3Rpb25TbmFwc2hvdChjbSk7XG4gICAgaWYgKHRvVXBkYXRlID4gNCkgeyBkaXNwbGF5LmxpbmVEaXYuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiOyB9XG4gICAgcGF0Y2hEaXNwbGF5KGNtLCBkaXNwbGF5LnVwZGF0ZUxpbmVOdW1iZXJzLCB1cGRhdGUuZGltcyk7XG4gICAgaWYgKHRvVXBkYXRlID4gNCkgeyBkaXNwbGF5LmxpbmVEaXYuc3R5bGUuZGlzcGxheSA9IFwiXCI7IH1cbiAgICBkaXNwbGF5LnJlbmRlcmVkVmlldyA9IGRpc3BsYXkudmlldztcbiAgICAvLyBUaGVyZSBtaWdodCBoYXZlIGJlZW4gYSB3aWRnZXQgd2l0aCBhIGZvY3VzZWQgZWxlbWVudCB0aGF0IGdvdFxuICAgIC8vIGhpZGRlbiBvciB1cGRhdGVkLCBpZiBzbyByZS1mb2N1cyBpdC5cbiAgICByZXN0b3JlU2VsZWN0aW9uKHNlbFNuYXBzaG90KTtcblxuICAgIC8vIFByZXZlbnQgc2VsZWN0aW9uIGFuZCBjdXJzb3JzIGZyb20gaW50ZXJmZXJpbmcgd2l0aCB0aGUgc2Nyb2xsXG4gICAgLy8gd2lkdGggYW5kIGhlaWdodC5cbiAgICByZW1vdmVDaGlsZHJlbihkaXNwbGF5LmN1cnNvckRpdik7XG4gICAgcmVtb3ZlQ2hpbGRyZW4oZGlzcGxheS5zZWxlY3Rpb25EaXYpO1xuICAgIGRpc3BsYXkuZ3V0dGVycy5zdHlsZS5oZWlnaHQgPSBkaXNwbGF5LnNpemVyLnN0eWxlLm1pbkhlaWdodCA9IDA7XG5cbiAgICBpZiAoZGlmZmVyZW50KSB7XG4gICAgICBkaXNwbGF5Lmxhc3RXcmFwSGVpZ2h0ID0gdXBkYXRlLndyYXBwZXJIZWlnaHQ7XG4gICAgICBkaXNwbGF5Lmxhc3RXcmFwV2lkdGggPSB1cGRhdGUud3JhcHBlcldpZHRoO1xuICAgICAgc3RhcnRXb3JrZXIoY20sIDQwMCk7XG4gICAgfVxuXG4gICAgZGlzcGxheS51cGRhdGVMaW5lTnVtYmVycyA9IG51bGw7XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZnVuY3Rpb24gcG9zdFVwZGF0ZURpc3BsYXkoY20sIHVwZGF0ZSkge1xuICAgIHZhciB2aWV3cG9ydCA9IHVwZGF0ZS52aWV3cG9ydDtcblxuICAgIGZvciAodmFyIGZpcnN0ID0gdHJ1ZTs7IGZpcnN0ID0gZmFsc2UpIHtcbiAgICAgIGlmICghZmlyc3QgfHwgIWNtLm9wdGlvbnMubGluZVdyYXBwaW5nIHx8IHVwZGF0ZS5vbGREaXNwbGF5V2lkdGggPT0gZGlzcGxheVdpZHRoKGNtKSkge1xuICAgICAgICAvLyBDbGlwIGZvcmNlZCB2aWV3cG9ydCB0byBhY3R1YWwgc2Nyb2xsYWJsZSBhcmVhLlxuICAgICAgICBpZiAodmlld3BvcnQgJiYgdmlld3BvcnQudG9wICE9IG51bGwpXG4gICAgICAgICAgeyB2aWV3cG9ydCA9IHt0b3A6IE1hdGgubWluKGNtLmRvYy5oZWlnaHQgKyBwYWRkaW5nVmVydChjbS5kaXNwbGF5KSAtIGRpc3BsYXlIZWlnaHQoY20pLCB2aWV3cG9ydC50b3ApfTsgfVxuICAgICAgICAvLyBVcGRhdGVkIGxpbmUgaGVpZ2h0cyBtaWdodCByZXN1bHQgaW4gdGhlIGRyYXduIGFyZWEgbm90XG4gICAgICAgIC8vIGFjdHVhbGx5IGNvdmVyaW5nIHRoZSB2aWV3cG9ydC4gS2VlcCBsb29waW5nIHVudGlsIGl0IGRvZXMuXG4gICAgICAgIHVwZGF0ZS52aXNpYmxlID0gdmlzaWJsZUxpbmVzKGNtLmRpc3BsYXksIGNtLmRvYywgdmlld3BvcnQpO1xuICAgICAgICBpZiAodXBkYXRlLnZpc2libGUuZnJvbSA+PSBjbS5kaXNwbGF5LnZpZXdGcm9tICYmIHVwZGF0ZS52aXNpYmxlLnRvIDw9IGNtLmRpc3BsYXkudmlld1RvKVxuICAgICAgICAgIHsgYnJlYWsgfVxuICAgICAgfSBlbHNlIGlmIChmaXJzdCkge1xuICAgICAgICB1cGRhdGUudmlzaWJsZSA9IHZpc2libGVMaW5lcyhjbS5kaXNwbGF5LCBjbS5kb2MsIHZpZXdwb3J0KTtcbiAgICAgIH1cbiAgICAgIGlmICghdXBkYXRlRGlzcGxheUlmTmVlZGVkKGNtLCB1cGRhdGUpKSB7IGJyZWFrIH1cbiAgICAgIHVwZGF0ZUhlaWdodHNJblZpZXdwb3J0KGNtKTtcbiAgICAgIHZhciBiYXJNZWFzdXJlID0gbWVhc3VyZUZvclNjcm9sbGJhcnMoY20pO1xuICAgICAgdXBkYXRlU2VsZWN0aW9uKGNtKTtcbiAgICAgIHVwZGF0ZVNjcm9sbGJhcnMoY20sIGJhck1lYXN1cmUpO1xuICAgICAgc2V0RG9jdW1lbnRIZWlnaHQoY20sIGJhck1lYXN1cmUpO1xuICAgICAgdXBkYXRlLmZvcmNlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdXBkYXRlLnNpZ25hbChjbSwgXCJ1cGRhdGVcIiwgY20pO1xuICAgIGlmIChjbS5kaXNwbGF5LnZpZXdGcm9tICE9IGNtLmRpc3BsYXkucmVwb3J0ZWRWaWV3RnJvbSB8fCBjbS5kaXNwbGF5LnZpZXdUbyAhPSBjbS5kaXNwbGF5LnJlcG9ydGVkVmlld1RvKSB7XG4gICAgICB1cGRhdGUuc2lnbmFsKGNtLCBcInZpZXdwb3J0Q2hhbmdlXCIsIGNtLCBjbS5kaXNwbGF5LnZpZXdGcm9tLCBjbS5kaXNwbGF5LnZpZXdUbyk7XG4gICAgICBjbS5kaXNwbGF5LnJlcG9ydGVkVmlld0Zyb20gPSBjbS5kaXNwbGF5LnZpZXdGcm9tOyBjbS5kaXNwbGF5LnJlcG9ydGVkVmlld1RvID0gY20uZGlzcGxheS52aWV3VG87XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlRGlzcGxheVNpbXBsZShjbSwgdmlld3BvcnQpIHtcbiAgICB2YXIgdXBkYXRlID0gbmV3IERpc3BsYXlVcGRhdGUoY20sIHZpZXdwb3J0KTtcbiAgICBpZiAodXBkYXRlRGlzcGxheUlmTmVlZGVkKGNtLCB1cGRhdGUpKSB7XG4gICAgICB1cGRhdGVIZWlnaHRzSW5WaWV3cG9ydChjbSk7XG4gICAgICBwb3N0VXBkYXRlRGlzcGxheShjbSwgdXBkYXRlKTtcbiAgICAgIHZhciBiYXJNZWFzdXJlID0gbWVhc3VyZUZvclNjcm9sbGJhcnMoY20pO1xuICAgICAgdXBkYXRlU2VsZWN0aW9uKGNtKTtcbiAgICAgIHVwZGF0ZVNjcm9sbGJhcnMoY20sIGJhck1lYXN1cmUpO1xuICAgICAgc2V0RG9jdW1lbnRIZWlnaHQoY20sIGJhck1lYXN1cmUpO1xuICAgICAgdXBkYXRlLmZpbmlzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFN5bmMgdGhlIGFjdHVhbCBkaXNwbGF5IERPTSBzdHJ1Y3R1cmUgd2l0aCBkaXNwbGF5LnZpZXcsIHJlbW92aW5nXG4gIC8vIG5vZGVzIGZvciBsaW5lcyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdmlldywgYW5kIGNyZWF0aW5nIHRoZSBvbmVzXG4gIC8vIHRoYXQgYXJlIG5vdCB0aGVyZSB5ZXQsIGFuZCB1cGRhdGluZyB0aGUgb25lcyB0aGF0IGFyZSBvdXQgb2ZcbiAgLy8gZGF0ZS5cbiAgZnVuY3Rpb24gcGF0Y2hEaXNwbGF5KGNtLCB1cGRhdGVOdW1iZXJzRnJvbSwgZGltcykge1xuICAgIHZhciBkaXNwbGF5ID0gY20uZGlzcGxheSwgbGluZU51bWJlcnMgPSBjbS5vcHRpb25zLmxpbmVOdW1iZXJzO1xuICAgIHZhciBjb250YWluZXIgPSBkaXNwbGF5LmxpbmVEaXYsIGN1ciA9IGNvbnRhaW5lci5maXJzdENoaWxkO1xuXG4gICAgZnVuY3Rpb24gcm0obm9kZSkge1xuICAgICAgdmFyIG5leHQgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgICAgLy8gV29ya3MgYXJvdW5kIGEgdGhyb3ctc2Nyb2xsIGJ1ZyBpbiBPUyBYIFdlYmtpdFxuICAgICAgaWYgKHdlYmtpdCAmJiBtYWMgJiYgY20uZGlzcGxheS5jdXJyZW50V2hlZWxUYXJnZXQgPT0gbm9kZSlcbiAgICAgICAgeyBub2RlLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjsgfVxuICAgICAgZWxzZVxuICAgICAgICB7IG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTsgfVxuICAgICAgcmV0dXJuIG5leHRcbiAgICB9XG5cbiAgICB2YXIgdmlldyA9IGRpc3BsYXkudmlldywgbGluZU4gPSBkaXNwbGF5LnZpZXdGcm9tO1xuICAgIC8vIExvb3Agb3ZlciB0aGUgZWxlbWVudHMgaW4gdGhlIHZpZXcsIHN5bmNpbmcgY3VyICh0aGUgRE9NIG5vZGVzXG4gICAgLy8gaW4gZGlzcGxheS5saW5lRGl2KSB3aXRoIHRoZSB2aWV3IGFzIHdlIGdvLlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmlldy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGxpbmVWaWV3ID0gdmlld1tpXTtcbiAgICAgIGlmIChsaW5lVmlldy5oaWRkZW4pIDsgZWxzZSBpZiAoIWxpbmVWaWV3Lm5vZGUgfHwgbGluZVZpZXcubm9kZS5wYXJlbnROb2RlICE9IGNvbnRhaW5lcikgeyAvLyBOb3QgZHJhd24geWV0XG4gICAgICAgIHZhciBub2RlID0gYnVpbGRMaW5lRWxlbWVudChjbSwgbGluZVZpZXcsIGxpbmVOLCBkaW1zKTtcbiAgICAgICAgY29udGFpbmVyLmluc2VydEJlZm9yZShub2RlLCBjdXIpO1xuICAgICAgfSBlbHNlIHsgLy8gQWxyZWFkeSBkcmF3blxuICAgICAgICB3aGlsZSAoY3VyICE9IGxpbmVWaWV3Lm5vZGUpIHsgY3VyID0gcm0oY3VyKTsgfVxuICAgICAgICB2YXIgdXBkYXRlTnVtYmVyID0gbGluZU51bWJlcnMgJiYgdXBkYXRlTnVtYmVyc0Zyb20gIT0gbnVsbCAmJlxuICAgICAgICAgIHVwZGF0ZU51bWJlcnNGcm9tIDw9IGxpbmVOICYmIGxpbmVWaWV3LmxpbmVOdW1iZXI7XG4gICAgICAgIGlmIChsaW5lVmlldy5jaGFuZ2VzKSB7XG4gICAgICAgICAgaWYgKGluZGV4T2YobGluZVZpZXcuY2hhbmdlcywgXCJndXR0ZXJcIikgPiAtMSkgeyB1cGRhdGVOdW1iZXIgPSBmYWxzZTsgfVxuICAgICAgICAgIHVwZGF0ZUxpbmVGb3JDaGFuZ2VzKGNtLCBsaW5lVmlldywgbGluZU4sIGRpbXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1cGRhdGVOdW1iZXIpIHtcbiAgICAgICAgICByZW1vdmVDaGlsZHJlbihsaW5lVmlldy5saW5lTnVtYmVyKTtcbiAgICAgICAgICBsaW5lVmlldy5saW5lTnVtYmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGxpbmVOdW1iZXJGb3IoY20ub3B0aW9ucywgbGluZU4pKSk7XG4gICAgICAgIH1cbiAgICAgICAgY3VyID0gbGluZVZpZXcubm9kZS5uZXh0U2libGluZztcbiAgICAgIH1cbiAgICAgIGxpbmVOICs9IGxpbmVWaWV3LnNpemU7XG4gICAgfVxuICAgIHdoaWxlIChjdXIpIHsgY3VyID0gcm0oY3VyKTsgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlR3V0dGVyU3BhY2UoZGlzcGxheSkge1xuICAgIHZhciB3aWR0aCA9IGRpc3BsYXkuZ3V0dGVycy5vZmZzZXRXaWR0aDtcbiAgICBkaXNwbGF5LnNpemVyLnN0eWxlLm1hcmdpbkxlZnQgPSB3aWR0aCArIFwicHhcIjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldERvY3VtZW50SGVpZ2h0KGNtLCBtZWFzdXJlKSB7XG4gICAgY20uZGlzcGxheS5zaXplci5zdHlsZS5taW5IZWlnaHQgPSBtZWFzdXJlLmRvY0hlaWdodCArIFwicHhcIjtcbiAgICBjbS5kaXNwbGF5LmhlaWdodEZvcmNlci5zdHlsZS50b3AgPSBtZWFzdXJlLmRvY0hlaWdodCArIFwicHhcIjtcbiAgICBjbS5kaXNwbGF5Lmd1dHRlcnMuc3R5bGUuaGVpZ2h0ID0gKG1lYXN1cmUuZG9jSGVpZ2h0ICsgY20uZGlzcGxheS5iYXJIZWlnaHQgKyBzY3JvbGxHYXAoY20pKSArIFwicHhcIjtcbiAgfVxuXG4gIC8vIFJlLWFsaWduIGxpbmUgbnVtYmVycyBhbmQgZ3V0dGVyIG1hcmtzIHRvIGNvbXBlbnNhdGUgZm9yXG4gIC8vIGhvcml6b250YWwgc2Nyb2xsaW5nLlxuICBmdW5jdGlvbiBhbGlnbkhvcml6b250YWxseShjbSkge1xuICAgIHZhciBkaXNwbGF5ID0gY20uZGlzcGxheSwgdmlldyA9IGRpc3BsYXkudmlldztcbiAgICBpZiAoIWRpc3BsYXkuYWxpZ25XaWRnZXRzICYmICghZGlzcGxheS5ndXR0ZXJzLmZpcnN0Q2hpbGQgfHwgIWNtLm9wdGlvbnMuZml4ZWRHdXR0ZXIpKSB7IHJldHVybiB9XG4gICAgdmFyIGNvbXAgPSBjb21wZW5zYXRlRm9ySFNjcm9sbChkaXNwbGF5KSAtIGRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsTGVmdCArIGNtLmRvYy5zY3JvbGxMZWZ0O1xuICAgIHZhciBndXR0ZXJXID0gZGlzcGxheS5ndXR0ZXJzLm9mZnNldFdpZHRoLCBsZWZ0ID0gY29tcCArIFwicHhcIjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyBpKyspIHsgaWYgKCF2aWV3W2ldLmhpZGRlbikge1xuICAgICAgaWYgKGNtLm9wdGlvbnMuZml4ZWRHdXR0ZXIpIHtcbiAgICAgICAgaWYgKHZpZXdbaV0uZ3V0dGVyKVxuICAgICAgICAgIHsgdmlld1tpXS5ndXR0ZXIuc3R5bGUubGVmdCA9IGxlZnQ7IH1cbiAgICAgICAgaWYgKHZpZXdbaV0uZ3V0dGVyQmFja2dyb3VuZClcbiAgICAgICAgICB7IHZpZXdbaV0uZ3V0dGVyQmFja2dyb3VuZC5zdHlsZS5sZWZ0ID0gbGVmdDsgfVxuICAgICAgfVxuICAgICAgdmFyIGFsaWduID0gdmlld1tpXS5hbGlnbmFibGU7XG4gICAgICBpZiAoYWxpZ24pIHsgZm9yICh2YXIgaiA9IDA7IGogPCBhbGlnbi5sZW5ndGg7IGorKylcbiAgICAgICAgeyBhbGlnbltqXS5zdHlsZS5sZWZ0ID0gbGVmdDsgfSB9XG4gICAgfSB9XG4gICAgaWYgKGNtLm9wdGlvbnMuZml4ZWRHdXR0ZXIpXG4gICAgICB7IGRpc3BsYXkuZ3V0dGVycy5zdHlsZS5sZWZ0ID0gKGNvbXAgKyBndXR0ZXJXKSArIFwicHhcIjsgfVxuICB9XG5cbiAgLy8gVXNlZCB0byBlbnN1cmUgdGhhdCB0aGUgbGluZSBudW1iZXIgZ3V0dGVyIGlzIHN0aWxsIHRoZSByaWdodFxuICAvLyBzaXplIGZvciB0aGUgY3VycmVudCBkb2N1bWVudCBzaXplLiBSZXR1cm5zIHRydWUgd2hlbiBhbiB1cGRhdGVcbiAgLy8gaXMgbmVlZGVkLlxuICBmdW5jdGlvbiBtYXliZVVwZGF0ZUxpbmVOdW1iZXJXaWR0aChjbSkge1xuICAgIGlmICghY20ub3B0aW9ucy5saW5lTnVtYmVycykgeyByZXR1cm4gZmFsc2UgfVxuICAgIHZhciBkb2MgPSBjbS5kb2MsIGxhc3QgPSBsaW5lTnVtYmVyRm9yKGNtLm9wdGlvbnMsIGRvYy5maXJzdCArIGRvYy5zaXplIC0gMSksIGRpc3BsYXkgPSBjbS5kaXNwbGF5O1xuICAgIGlmIChsYXN0Lmxlbmd0aCAhPSBkaXNwbGF5LmxpbmVOdW1DaGFycykge1xuICAgICAgdmFyIHRlc3QgPSBkaXNwbGF5Lm1lYXN1cmUuYXBwZW5kQ2hpbGQoZWx0KFwiZGl2XCIsIFtlbHQoXCJkaXZcIiwgbGFzdCldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29kZU1pcnJvci1saW5lbnVtYmVyIENvZGVNaXJyb3ItZ3V0dGVyLWVsdFwiKSk7XG4gICAgICB2YXIgaW5uZXJXID0gdGVzdC5maXJzdENoaWxkLm9mZnNldFdpZHRoLCBwYWRkaW5nID0gdGVzdC5vZmZzZXRXaWR0aCAtIGlubmVyVztcbiAgICAgIGRpc3BsYXkubGluZUd1dHRlci5zdHlsZS53aWR0aCA9IFwiXCI7XG4gICAgICBkaXNwbGF5LmxpbmVOdW1Jbm5lcldpZHRoID0gTWF0aC5tYXgoaW5uZXJXLCBkaXNwbGF5LmxpbmVHdXR0ZXIub2Zmc2V0V2lkdGggLSBwYWRkaW5nKSArIDE7XG4gICAgICBkaXNwbGF5LmxpbmVOdW1XaWR0aCA9IGRpc3BsYXkubGluZU51bUlubmVyV2lkdGggKyBwYWRkaW5nO1xuICAgICAgZGlzcGxheS5saW5lTnVtQ2hhcnMgPSBkaXNwbGF5LmxpbmVOdW1Jbm5lcldpZHRoID8gbGFzdC5sZW5ndGggOiAtMTtcbiAgICAgIGRpc3BsYXkubGluZUd1dHRlci5zdHlsZS53aWR0aCA9IGRpc3BsYXkubGluZU51bVdpZHRoICsgXCJweFwiO1xuICAgICAgdXBkYXRlR3V0dGVyU3BhY2UoY20uZGlzcGxheSk7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEd1dHRlcnMoZ3V0dGVycywgbGluZU51bWJlcnMpIHtcbiAgICB2YXIgcmVzdWx0ID0gW10sIHNhd0xpbmVOdW1iZXJzID0gZmFsc2U7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBndXR0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmFtZSA9IGd1dHRlcnNbaV0sIHN0eWxlID0gbnVsbDtcbiAgICAgIGlmICh0eXBlb2YgbmFtZSAhPSBcInN0cmluZ1wiKSB7IHN0eWxlID0gbmFtZS5zdHlsZTsgbmFtZSA9IG5hbWUuY2xhc3NOYW1lOyB9XG4gICAgICBpZiAobmFtZSA9PSBcIkNvZGVNaXJyb3ItbGluZW51bWJlcnNcIikge1xuICAgICAgICBpZiAoIWxpbmVOdW1iZXJzKSB7IGNvbnRpbnVlIH1cbiAgICAgICAgZWxzZSB7IHNhd0xpbmVOdW1iZXJzID0gdHJ1ZTsgfVxuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2goe2NsYXNzTmFtZTogbmFtZSwgc3R5bGU6IHN0eWxlfSk7XG4gICAgfVxuICAgIGlmIChsaW5lTnVtYmVycyAmJiAhc2F3TGluZU51bWJlcnMpIHsgcmVzdWx0LnB1c2goe2NsYXNzTmFtZTogXCJDb2RlTWlycm9yLWxpbmVudW1iZXJzXCIsIHN0eWxlOiBudWxsfSk7IH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvLyBSZWJ1aWxkIHRoZSBndXR0ZXIgZWxlbWVudHMsIGVuc3VyZSB0aGUgbWFyZ2luIHRvIHRoZSBsZWZ0IG9mIHRoZVxuICAvLyBjb2RlIG1hdGNoZXMgdGhlaXIgd2lkdGguXG4gIGZ1bmN0aW9uIHJlbmRlckd1dHRlcnMoZGlzcGxheSkge1xuICAgIHZhciBndXR0ZXJzID0gZGlzcGxheS5ndXR0ZXJzLCBzcGVjcyA9IGRpc3BsYXkuZ3V0dGVyU3BlY3M7XG4gICAgcmVtb3ZlQ2hpbGRyZW4oZ3V0dGVycyk7XG4gICAgZGlzcGxheS5saW5lR3V0dGVyID0gbnVsbDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNwZWNzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgcmVmID0gc3BlY3NbaV07XG4gICAgICB2YXIgY2xhc3NOYW1lID0gcmVmLmNsYXNzTmFtZTtcbiAgICAgIHZhciBzdHlsZSA9IHJlZi5zdHlsZTtcbiAgICAgIHZhciBnRWx0ID0gZ3V0dGVycy5hcHBlbmRDaGlsZChlbHQoXCJkaXZcIiwgbnVsbCwgXCJDb2RlTWlycm9yLWd1dHRlciBcIiArIGNsYXNzTmFtZSkpO1xuICAgICAgaWYgKHN0eWxlKSB7IGdFbHQuc3R5bGUuY3NzVGV4dCA9IHN0eWxlOyB9XG4gICAgICBpZiAoY2xhc3NOYW1lID09IFwiQ29kZU1pcnJvci1saW5lbnVtYmVyc1wiKSB7XG4gICAgICAgIGRpc3BsYXkubGluZUd1dHRlciA9IGdFbHQ7XG4gICAgICAgIGdFbHQuc3R5bGUud2lkdGggPSAoZGlzcGxheS5saW5lTnVtV2lkdGggfHwgMSkgKyBcInB4XCI7XG4gICAgICB9XG4gICAgfVxuICAgIGd1dHRlcnMuc3R5bGUuZGlzcGxheSA9IHNwZWNzLmxlbmd0aCA/IFwiXCIgOiBcIm5vbmVcIjtcbiAgICB1cGRhdGVHdXR0ZXJTcGFjZShkaXNwbGF5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZUd1dHRlcnMoY20pIHtcbiAgICByZW5kZXJHdXR0ZXJzKGNtLmRpc3BsYXkpO1xuICAgIHJlZ0NoYW5nZShjbSk7XG4gICAgYWxpZ25Ib3Jpem9udGFsbHkoY20pO1xuICB9XG5cbiAgLy8gVGhlIGRpc3BsYXkgaGFuZGxlcyB0aGUgRE9NIGludGVncmF0aW9uLCBib3RoIGZvciBpbnB1dCByZWFkaW5nXG4gIC8vIGFuZCBjb250ZW50IGRyYXdpbmcuIEl0IGhvbGRzIHJlZmVyZW5jZXMgdG8gRE9NIG5vZGVzIGFuZFxuICAvLyBkaXNwbGF5LXJlbGF0ZWQgc3RhdGUuXG5cbiAgZnVuY3Rpb24gRGlzcGxheShwbGFjZSwgZG9jLCBpbnB1dCwgb3B0aW9ucykge1xuICAgIHZhciBkID0gdGhpcztcbiAgICB0aGlzLmlucHV0ID0gaW5wdXQ7XG5cbiAgICAvLyBDb3ZlcnMgYm90dG9tLXJpZ2h0IHNxdWFyZSB3aGVuIGJvdGggc2Nyb2xsYmFycyBhcmUgcHJlc2VudC5cbiAgICBkLnNjcm9sbGJhckZpbGxlciA9IGVsdChcImRpdlwiLCBudWxsLCBcIkNvZGVNaXJyb3Itc2Nyb2xsYmFyLWZpbGxlclwiKTtcbiAgICBkLnNjcm9sbGJhckZpbGxlci5zZXRBdHRyaWJ1dGUoXCJjbS1ub3QtY29udGVudFwiLCBcInRydWVcIik7XG4gICAgLy8gQ292ZXJzIGJvdHRvbSBvZiBndXR0ZXIgd2hlbiBjb3Zlckd1dHRlck5leHRUb1Njcm9sbGJhciBpcyBvblxuICAgIC8vIGFuZCBoIHNjcm9sbGJhciBpcyBwcmVzZW50LlxuICAgIGQuZ3V0dGVyRmlsbGVyID0gZWx0KFwiZGl2XCIsIG51bGwsIFwiQ29kZU1pcnJvci1ndXR0ZXItZmlsbGVyXCIpO1xuICAgIGQuZ3V0dGVyRmlsbGVyLnNldEF0dHJpYnV0ZShcImNtLW5vdC1jb250ZW50XCIsIFwidHJ1ZVwiKTtcbiAgICAvLyBXaWxsIGNvbnRhaW4gdGhlIGFjdHVhbCBjb2RlLCBwb3NpdGlvbmVkIHRvIGNvdmVyIHRoZSB2aWV3cG9ydC5cbiAgICBkLmxpbmVEaXYgPSBlbHRQKFwiZGl2XCIsIG51bGwsIFwiQ29kZU1pcnJvci1jb2RlXCIpO1xuICAgIC8vIEVsZW1lbnRzIGFyZSBhZGRlZCB0byB0aGVzZSB0byByZXByZXNlbnQgc2VsZWN0aW9uIGFuZCBjdXJzb3JzLlxuICAgIGQuc2VsZWN0aW9uRGl2ID0gZWx0KFwiZGl2XCIsIG51bGwsIG51bGwsIFwicG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAxXCIpO1xuICAgIGQuY3Vyc29yRGl2ID0gZWx0KFwiZGl2XCIsIG51bGwsIFwiQ29kZU1pcnJvci1jdXJzb3JzXCIpO1xuICAgIC8vIEEgdmlzaWJpbGl0eTogaGlkZGVuIGVsZW1lbnQgdXNlZCB0byBmaW5kIHRoZSBzaXplIG9mIHRoaW5ncy5cbiAgICBkLm1lYXN1cmUgPSBlbHQoXCJkaXZcIiwgbnVsbCwgXCJDb2RlTWlycm9yLW1lYXN1cmVcIik7XG4gICAgLy8gV2hlbiBsaW5lcyBvdXRzaWRlIG9mIHRoZSB2aWV3cG9ydCBhcmUgbWVhc3VyZWQsIHRoZXkgYXJlIGRyYXduIGluIHRoaXMuXG4gICAgZC5saW5lTWVhc3VyZSA9IGVsdChcImRpdlwiLCBudWxsLCBcIkNvZGVNaXJyb3ItbWVhc3VyZVwiKTtcbiAgICAvLyBXcmFwcyBldmVyeXRoaW5nIHRoYXQgbmVlZHMgdG8gZXhpc3QgaW5zaWRlIHRoZSB2ZXJ0aWNhbGx5LXBhZGRlZCBjb29yZGluYXRlIHN5c3RlbVxuICAgIGQubGluZVNwYWNlID0gZWx0UChcImRpdlwiLCBbZC5tZWFzdXJlLCBkLmxpbmVNZWFzdXJlLCBkLnNlbGVjdGlvbkRpdiwgZC5jdXJzb3JEaXYsIGQubGluZURpdl0sXG4gICAgICAgICAgICAgICAgICAgICAgbnVsbCwgXCJwb3NpdGlvbjogcmVsYXRpdmU7IG91dGxpbmU6IG5vbmVcIik7XG4gICAgdmFyIGxpbmVzID0gZWx0UChcImRpdlwiLCBbZC5saW5lU3BhY2VdLCBcIkNvZGVNaXJyb3ItbGluZXNcIik7XG4gICAgLy8gTW92ZWQgYXJvdW5kIGl0cyBwYXJlbnQgdG8gY292ZXIgdmlzaWJsZSB2aWV3LlxuICAgIGQubW92ZXIgPSBlbHQoXCJkaXZcIiwgW2xpbmVzXSwgbnVsbCwgXCJwb3NpdGlvbjogcmVsYXRpdmVcIik7XG4gICAgLy8gU2V0IHRvIHRoZSBoZWlnaHQgb2YgdGhlIGRvY3VtZW50LCBhbGxvd2luZyBzY3JvbGxpbmcuXG4gICAgZC5zaXplciA9IGVsdChcImRpdlwiLCBbZC5tb3Zlcl0sIFwiQ29kZU1pcnJvci1zaXplclwiKTtcbiAgICBkLnNpemVyV2lkdGggPSBudWxsO1xuICAgIC8vIEJlaGF2aW9yIG9mIGVsdHMgd2l0aCBvdmVyZmxvdzogYXV0byBhbmQgcGFkZGluZyBpc1xuICAgIC8vIGluY29uc2lzdGVudCBhY3Jvc3MgYnJvd3NlcnMuIFRoaXMgaXMgdXNlZCB0byBlbnN1cmUgdGhlXG4gICAgLy8gc2Nyb2xsYWJsZSBhcmVhIGlzIGJpZyBlbm91Z2guXG4gICAgZC5oZWlnaHRGb3JjZXIgPSBlbHQoXCJkaXZcIiwgbnVsbCwgbnVsbCwgXCJwb3NpdGlvbjogYWJzb2x1dGU7IGhlaWdodDogXCIgKyBzY3JvbGxlckdhcCArIFwicHg7IHdpZHRoOiAxcHg7XCIpO1xuICAgIC8vIFdpbGwgY29udGFpbiB0aGUgZ3V0dGVycywgaWYgYW55LlxuICAgIGQuZ3V0dGVycyA9IGVsdChcImRpdlwiLCBudWxsLCBcIkNvZGVNaXJyb3ItZ3V0dGVyc1wiKTtcbiAgICBkLmxpbmVHdXR0ZXIgPSBudWxsO1xuICAgIC8vIEFjdHVhbCBzY3JvbGxhYmxlIGVsZW1lbnQuXG4gICAgZC5zY3JvbGxlciA9IGVsdChcImRpdlwiLCBbZC5zaXplciwgZC5oZWlnaHRGb3JjZXIsIGQuZ3V0dGVyc10sIFwiQ29kZU1pcnJvci1zY3JvbGxcIik7XG4gICAgZC5zY3JvbGxlci5zZXRBdHRyaWJ1dGUoXCJ0YWJJbmRleFwiLCBcIi0xXCIpO1xuICAgIC8vIFRoZSBlbGVtZW50IGluIHdoaWNoIHRoZSBlZGl0b3IgbGl2ZXMuXG4gICAgZC53cmFwcGVyID0gZWx0KFwiZGl2XCIsIFtkLnNjcm9sbGJhckZpbGxlciwgZC5ndXR0ZXJGaWxsZXIsIGQuc2Nyb2xsZXJdLCBcIkNvZGVNaXJyb3JcIik7XG5cbiAgICAvLyBXb3JrIGFyb3VuZCBJRTcgei1pbmRleCBidWcgKG5vdCBwZXJmZWN0LCBoZW5jZSBJRTcgbm90IHJlYWxseSBiZWluZyBzdXBwb3J0ZWQpXG4gICAgaWYgKGllICYmIGllX3ZlcnNpb24gPCA4KSB7IGQuZ3V0dGVycy5zdHlsZS56SW5kZXggPSAtMTsgZC5zY3JvbGxlci5zdHlsZS5wYWRkaW5nUmlnaHQgPSAwOyB9XG4gICAgaWYgKCF3ZWJraXQgJiYgIShnZWNrbyAmJiBtb2JpbGUpKSB7IGQuc2Nyb2xsZXIuZHJhZ2dhYmxlID0gdHJ1ZTsgfVxuXG4gICAgaWYgKHBsYWNlKSB7XG4gICAgICBpZiAocGxhY2UuYXBwZW5kQ2hpbGQpIHsgcGxhY2UuYXBwZW5kQ2hpbGQoZC53cmFwcGVyKTsgfVxuICAgICAgZWxzZSB7IHBsYWNlKGQud3JhcHBlcik7IH1cbiAgICB9XG5cbiAgICAvLyBDdXJyZW50IHJlbmRlcmVkIHJhbmdlIChtYXkgYmUgYmlnZ2VyIHRoYW4gdGhlIHZpZXcgd2luZG93KS5cbiAgICBkLnZpZXdGcm9tID0gZC52aWV3VG8gPSBkb2MuZmlyc3Q7XG4gICAgZC5yZXBvcnRlZFZpZXdGcm9tID0gZC5yZXBvcnRlZFZpZXdUbyA9IGRvYy5maXJzdDtcbiAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVuZGVyZWQgbGluZXMuXG4gICAgZC52aWV3ID0gW107XG4gICAgZC5yZW5kZXJlZFZpZXcgPSBudWxsO1xuICAgIC8vIEhvbGRzIGluZm8gYWJvdXQgYSBzaW5nbGUgcmVuZGVyZWQgbGluZSB3aGVuIGl0IHdhcyByZW5kZXJlZFxuICAgIC8vIGZvciBtZWFzdXJlbWVudCwgd2hpbGUgbm90IGluIHZpZXcuXG4gICAgZC5leHRlcm5hbE1lYXN1cmVkID0gbnVsbDtcbiAgICAvLyBFbXB0eSBzcGFjZSAoaW4gcGl4ZWxzKSBhYm92ZSB0aGUgdmlld1xuICAgIGQudmlld09mZnNldCA9IDA7XG4gICAgZC5sYXN0V3JhcEhlaWdodCA9IGQubGFzdFdyYXBXaWR0aCA9IDA7XG4gICAgZC51cGRhdGVMaW5lTnVtYmVycyA9IG51bGw7XG5cbiAgICBkLm5hdGl2ZUJhcldpZHRoID0gZC5iYXJIZWlnaHQgPSBkLmJhcldpZHRoID0gMDtcbiAgICBkLnNjcm9sbGJhcnNDbGlwcGVkID0gZmFsc2U7XG5cbiAgICAvLyBVc2VkIHRvIG9ubHkgcmVzaXplIHRoZSBsaW5lIG51bWJlciBndXR0ZXIgd2hlbiBuZWNlc3NhcnkgKHdoZW5cbiAgICAvLyB0aGUgYW1vdW50IG9mIGxpbmVzIGNyb3NzZXMgYSBib3VuZGFyeSB0aGF0IG1ha2VzIGl0cyB3aWR0aCBjaGFuZ2UpXG4gICAgZC5saW5lTnVtV2lkdGggPSBkLmxpbmVOdW1Jbm5lcldpZHRoID0gZC5saW5lTnVtQ2hhcnMgPSBudWxsO1xuICAgIC8vIFNldCB0byB0cnVlIHdoZW4gYSBub24taG9yaXpvbnRhbC1zY3JvbGxpbmcgbGluZSB3aWRnZXQgaXNcbiAgICAvLyBhZGRlZC4gQXMgYW4gb3B0aW1pemF0aW9uLCBsaW5lIHdpZGdldCBhbGlnbmluZyBpcyBza2lwcGVkIHdoZW5cbiAgICAvLyB0aGlzIGlzIGZhbHNlLlxuICAgIGQuYWxpZ25XaWRnZXRzID0gZmFsc2U7XG5cbiAgICBkLmNhY2hlZENoYXJXaWR0aCA9IGQuY2FjaGVkVGV4dEhlaWdodCA9IGQuY2FjaGVkUGFkZGluZ0ggPSBudWxsO1xuXG4gICAgLy8gVHJhY2tzIHRoZSBtYXhpbXVtIGxpbmUgbGVuZ3RoIHNvIHRoYXQgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyXG4gICAgLy8gY2FuIGJlIGtlcHQgc3RhdGljIHdoZW4gc2Nyb2xsaW5nLlxuICAgIGQubWF4TGluZSA9IG51bGw7XG4gICAgZC5tYXhMaW5lTGVuZ3RoID0gMDtcbiAgICBkLm1heExpbmVDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAvLyBVc2VkIGZvciBtZWFzdXJpbmcgd2hlZWwgc2Nyb2xsaW5nIGdyYW51bGFyaXR5XG4gICAgZC53aGVlbERYID0gZC53aGVlbERZID0gZC53aGVlbFN0YXJ0WCA9IGQud2hlZWxTdGFydFkgPSBudWxsO1xuXG4gICAgLy8gVHJ1ZSB3aGVuIHNoaWZ0IGlzIGhlbGQgZG93bi5cbiAgICBkLnNoaWZ0ID0gZmFsc2U7XG5cbiAgICAvLyBVc2VkIHRvIHRyYWNrIHdoZXRoZXIgYW55dGhpbmcgaGFwcGVuZWQgc2luY2UgdGhlIGNvbnRleHQgbWVudVxuICAgIC8vIHdhcyBvcGVuZWQuXG4gICAgZC5zZWxGb3JDb250ZXh0TWVudSA9IG51bGw7XG5cbiAgICBkLmFjdGl2ZVRvdWNoID0gbnVsbDtcblxuICAgIGQuZ3V0dGVyU3BlY3MgPSBnZXRHdXR0ZXJzKG9wdGlvbnMuZ3V0dGVycywgb3B0aW9ucy5saW5lTnVtYmVycyk7XG4gICAgcmVuZGVyR3V0dGVycyhkKTtcblxuICAgIGlucHV0LmluaXQoZCk7XG4gIH1cblxuICAvLyBTaW5jZSB0aGUgZGVsdGEgdmFsdWVzIHJlcG9ydGVkIG9uIG1vdXNlIHdoZWVsIGV2ZW50cyBhcmVcbiAgLy8gdW5zdGFuZGFyZGl6ZWQgYmV0d2VlbiBicm93c2VycyBhbmQgZXZlbiBicm93c2VyIHZlcnNpb25zLCBhbmRcbiAgLy8gZ2VuZXJhbGx5IGhvcnJpYmx5IHVucHJlZGljdGFibGUsIHRoaXMgY29kZSBzdGFydHMgYnkgbWVhc3VyaW5nXG4gIC8vIHRoZSBzY3JvbGwgZWZmZWN0IHRoYXQgdGhlIGZpcnN0IGZldyBtb3VzZSB3aGVlbCBldmVudHMgaGF2ZSxcbiAgLy8gYW5kLCBmcm9tIHRoYXQsIGRldGVjdHMgdGhlIHdheSBpdCBjYW4gY29udmVydCBkZWx0YXMgdG8gcGl4ZWxcbiAgLy8gb2Zmc2V0cyBhZnRlcndhcmRzLlxuICAvL1xuICAvLyBUaGUgcmVhc29uIHdlIHdhbnQgdG8ga25vdyB0aGUgYW1vdW50IGEgd2hlZWwgZXZlbnQgd2lsbCBzY3JvbGxcbiAgLy8gaXMgdGhhdCBpdCBnaXZlcyB1cyBhIGNoYW5jZSB0byB1cGRhdGUgdGhlIGRpc3BsYXkgYmVmb3JlIHRoZVxuICAvLyBhY3R1YWwgc2Nyb2xsaW5nIGhhcHBlbnMsIHJlZHVjaW5nIGZsaWNrZXJpbmcuXG5cbiAgdmFyIHdoZWVsU2FtcGxlcyA9IDAsIHdoZWVsUGl4ZWxzUGVyVW5pdCA9IG51bGw7XG4gIC8vIEZpbGwgaW4gYSBicm93c2VyLWRldGVjdGVkIHN0YXJ0aW5nIHZhbHVlIG9uIGJyb3dzZXJzIHdoZXJlIHdlXG4gIC8vIGtub3cgb25lLiBUaGVzZSBkb24ndCBoYXZlIHRvIGJlIGFjY3VyYXRlIC0tIHRoZSByZXN1bHQgb2YgdGhlbVxuICAvLyBiZWluZyB3cm9uZyB3b3VsZCBqdXN0IGJlIGEgc2xpZ2h0IGZsaWNrZXIgb24gdGhlIGZpcnN0IHdoZWVsXG4gIC8vIHNjcm9sbCAoaWYgaXQgaXMgbGFyZ2UgZW5vdWdoKS5cbiAgaWYgKGllKSB7IHdoZWVsUGl4ZWxzUGVyVW5pdCA9IC0uNTM7IH1cbiAgZWxzZSBpZiAoZ2Vja28pIHsgd2hlZWxQaXhlbHNQZXJVbml0ID0gMTU7IH1cbiAgZWxzZSBpZiAoY2hyb21lKSB7IHdoZWVsUGl4ZWxzUGVyVW5pdCA9IC0uNzsgfVxuICBlbHNlIGlmIChzYWZhcmkpIHsgd2hlZWxQaXhlbHNQZXJVbml0ID0gLTEvMzsgfVxuXG4gIGZ1bmN0aW9uIHdoZWVsRXZlbnREZWx0YShlKSB7XG4gICAgdmFyIGR4ID0gZS53aGVlbERlbHRhWCwgZHkgPSBlLndoZWVsRGVsdGFZO1xuICAgIGlmIChkeCA9PSBudWxsICYmIGUuZGV0YWlsICYmIGUuYXhpcyA9PSBlLkhPUklaT05UQUxfQVhJUykgeyBkeCA9IGUuZGV0YWlsOyB9XG4gICAgaWYgKGR5ID09IG51bGwgJiYgZS5kZXRhaWwgJiYgZS5heGlzID09IGUuVkVSVElDQUxfQVhJUykgeyBkeSA9IGUuZGV0YWlsOyB9XG4gICAgZWxzZSBpZiAoZHkgPT0gbnVsbCkgeyBkeSA9IGUud2hlZWxEZWx0YTsgfVxuICAgIHJldHVybiB7eDogZHgsIHk6IGR5fVxuICB9XG4gIGZ1bmN0aW9uIHdoZWVsRXZlbnRQaXhlbHMoZSkge1xuICAgIHZhciBkZWx0YSA9IHdoZWVsRXZlbnREZWx0YShlKTtcbiAgICBkZWx0YS54ICo9IHdoZWVsUGl4ZWxzUGVyVW5pdDtcbiAgICBkZWx0YS55ICo9IHdoZWVsUGl4ZWxzUGVyVW5pdDtcbiAgICByZXR1cm4gZGVsdGFcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uU2Nyb2xsV2hlZWwoY20sIGUpIHtcbiAgICB2YXIgZGVsdGEgPSB3aGVlbEV2ZW50RGVsdGEoZSksIGR4ID0gZGVsdGEueCwgZHkgPSBkZWx0YS55O1xuXG4gICAgdmFyIGRpc3BsYXkgPSBjbS5kaXNwbGF5LCBzY3JvbGwgPSBkaXNwbGF5LnNjcm9sbGVyO1xuICAgIC8vIFF1aXQgaWYgdGhlcmUncyBub3RoaW5nIHRvIHNjcm9sbCBoZXJlXG4gICAgdmFyIGNhblNjcm9sbFggPSBzY3JvbGwuc2Nyb2xsV2lkdGggPiBzY3JvbGwuY2xpZW50V2lkdGg7XG4gICAgdmFyIGNhblNjcm9sbFkgPSBzY3JvbGwuc2Nyb2xsSGVpZ2h0ID4gc2Nyb2xsLmNsaWVudEhlaWdodDtcbiAgICBpZiAoIShkeCAmJiBjYW5TY3JvbGxYIHx8IGR5ICYmIGNhblNjcm9sbFkpKSB7IHJldHVybiB9XG5cbiAgICAvLyBXZWJraXQgYnJvd3NlcnMgb24gT1MgWCBhYm9ydCBtb21lbnR1bSBzY3JvbGxzIHdoZW4gdGhlIHRhcmdldFxuICAgIC8vIG9mIHRoZSBzY3JvbGwgZXZlbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzY3JvbGxhYmxlIGVsZW1lbnQuXG4gICAgLy8gVGhpcyBoYWNrIChzZWUgcmVsYXRlZCBjb2RlIGluIHBhdGNoRGlzcGxheSkgbWFrZXMgc3VyZSB0aGVcbiAgICAvLyBlbGVtZW50IGlzIGtlcHQgYXJvdW5kLlxuICAgIGlmIChkeSAmJiBtYWMgJiYgd2Via2l0KSB7XG4gICAgICBvdXRlcjogZm9yICh2YXIgY3VyID0gZS50YXJnZXQsIHZpZXcgPSBkaXNwbGF5LnZpZXc7IGN1ciAhPSBzY3JvbGw7IGN1ciA9IGN1ci5wYXJlbnROb2RlKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmlldy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmICh2aWV3W2ldLm5vZGUgPT0gY3VyKSB7XG4gICAgICAgICAgICBjbS5kaXNwbGF5LmN1cnJlbnRXaGVlbFRhcmdldCA9IGN1cjtcbiAgICAgICAgICAgIGJyZWFrIG91dGVyXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT24gc29tZSBicm93c2VycywgaG9yaXpvbnRhbCBzY3JvbGxpbmcgd2lsbCBjYXVzZSByZWRyYXdzIHRvXG4gICAgLy8gaGFwcGVuIGJlZm9yZSB0aGUgZ3V0dGVyIGhhcyBiZWVuIHJlYWxpZ25lZCwgY2F1c2luZyBpdCB0b1xuICAgIC8vIHdyaWdnbGUgYXJvdW5kIGluIGEgbW9zdCB1bnNlZW1seSB3YXkuIFdoZW4gd2UgaGF2ZSBhblxuICAgIC8vIGVzdGltYXRlZCBwaXhlbHMvZGVsdGEgdmFsdWUsIHdlIGp1c3QgaGFuZGxlIGhvcml6b250YWxcbiAgICAvLyBzY3JvbGxpbmcgZW50aXJlbHkgaGVyZS4gSXQnbGwgYmUgc2xpZ2h0bHkgb2ZmIGZyb20gbmF0aXZlLCBidXRcbiAgICAvLyBiZXR0ZXIgdGhhbiBnbGl0Y2hpbmcgb3V0LlxuICAgIGlmIChkeCAmJiAhZ2Vja28gJiYgIXByZXN0byAmJiB3aGVlbFBpeGVsc1BlclVuaXQgIT0gbnVsbCkge1xuICAgICAgaWYgKGR5ICYmIGNhblNjcm9sbFkpXG4gICAgICAgIHsgdXBkYXRlU2Nyb2xsVG9wKGNtLCBNYXRoLm1heCgwLCBzY3JvbGwuc2Nyb2xsVG9wICsgZHkgKiB3aGVlbFBpeGVsc1BlclVuaXQpKTsgfVxuICAgICAgc2V0U2Nyb2xsTGVmdChjbSwgTWF0aC5tYXgoMCwgc2Nyb2xsLnNjcm9sbExlZnQgKyBkeCAqIHdoZWVsUGl4ZWxzUGVyVW5pdCkpO1xuICAgICAgLy8gT25seSBwcmV2ZW50IGRlZmF1bHQgc2Nyb2xsaW5nIGlmIHZlcnRpY2FsIHNjcm9sbGluZyBpc1xuICAgICAgLy8gYWN0dWFsbHkgcG9zc2libGUuIE90aGVyd2lzZSwgaXQgY2F1c2VzIHZlcnRpY2FsIHNjcm9sbFxuICAgICAgLy8gaml0dGVyIG9uIE9TWCB0cmFja3BhZHMgd2hlbiBkZWx0YVggaXMgc21hbGwgYW5kIGRlbHRhWVxuICAgICAgLy8gaXMgbGFyZ2UgKGlzc3VlICMzNTc5KVxuICAgICAgaWYgKCFkeSB8fCAoZHkgJiYgY2FuU2Nyb2xsWSkpXG4gICAgICAgIHsgZV9wcmV2ZW50RGVmYXVsdChlKTsgfVxuICAgICAgZGlzcGxheS53aGVlbFN0YXJ0WCA9IG51bGw7IC8vIEFib3J0IG1lYXN1cmVtZW50LCBpZiBpbiBwcm9ncmVzc1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gJ1Byb2plY3QnIHRoZSB2aXNpYmxlIHZpZXdwb3J0IHRvIGNvdmVyIHRoZSBhcmVhIHRoYXQgaXMgYmVpbmdcbiAgICAvLyBzY3JvbGxlZCBpbnRvIHZpZXcgKGlmIHdlIGtub3cgZW5vdWdoIHRvIGVzdGltYXRlIGl0KS5cbiAgICBpZiAoZHkgJiYgd2hlZWxQaXhlbHNQZXJVbml0ICE9IG51bGwpIHtcbiAgICAgIHZhciBwaXhlbHMgPSBkeSAqIHdoZWVsUGl4ZWxzUGVyVW5pdDtcbiAgICAgIHZhciB0b3AgPSBjbS5kb2Muc2Nyb2xsVG9wLCBib3QgPSB0b3AgKyBkaXNwbGF5LndyYXBwZXIuY2xpZW50SGVpZ2h0O1xuICAgICAgaWYgKHBpeGVscyA8IDApIHsgdG9wID0gTWF0aC5tYXgoMCwgdG9wICsgcGl4ZWxzIC0gNTApOyB9XG4gICAgICBlbHNlIHsgYm90ID0gTWF0aC5taW4oY20uZG9jLmhlaWdodCwgYm90ICsgcGl4ZWxzICsgNTApOyB9XG4gICAgICB1cGRhdGVEaXNwbGF5U2ltcGxlKGNtLCB7dG9wOiB0b3AsIGJvdHRvbTogYm90fSk7XG4gICAgfVxuXG4gICAgaWYgKHdoZWVsU2FtcGxlcyA8IDIwKSB7XG4gICAgICBpZiAoZGlzcGxheS53aGVlbFN0YXJ0WCA9PSBudWxsKSB7XG4gICAgICAgIGRpc3BsYXkud2hlZWxTdGFydFggPSBzY3JvbGwuc2Nyb2xsTGVmdDsgZGlzcGxheS53aGVlbFN0YXJ0WSA9IHNjcm9sbC5zY3JvbGxUb3A7XG4gICAgICAgIGRpc3BsYXkud2hlZWxEWCA9IGR4OyBkaXNwbGF5LndoZWVsRFkgPSBkeTtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGRpc3BsYXkud2hlZWxTdGFydFggPT0gbnVsbCkgeyByZXR1cm4gfVxuICAgICAgICAgIHZhciBtb3ZlZFggPSBzY3JvbGwuc2Nyb2xsTGVmdCAtIGRpc3BsYXkud2hlZWxTdGFydFg7XG4gICAgICAgICAgdmFyIG1vdmVkWSA9IHNjcm9sbC5zY3JvbGxUb3AgLSBkaXNwbGF5LndoZWVsU3RhcnRZO1xuICAgICAgICAgIHZhciBzYW1wbGUgPSAobW92ZWRZICYmIGRpc3BsYXkud2hlZWxEWSAmJiBtb3ZlZFkgLyBkaXNwbGF5LndoZWVsRFkpIHx8XG4gICAgICAgICAgICAobW92ZWRYICYmIGRpc3BsYXkud2hlZWxEWCAmJiBtb3ZlZFggLyBkaXNwbGF5LndoZWVsRFgpO1xuICAgICAgICAgIGRpc3BsYXkud2hlZWxTdGFydFggPSBkaXNwbGF5LndoZWVsU3RhcnRZID0gbnVsbDtcbiAgICAgICAgICBpZiAoIXNhbXBsZSkgeyByZXR1cm4gfVxuICAgICAgICAgIHdoZWVsUGl4ZWxzUGVyVW5pdCA9ICh3aGVlbFBpeGVsc1BlclVuaXQgKiB3aGVlbFNhbXBsZXMgKyBzYW1wbGUpIC8gKHdoZWVsU2FtcGxlcyArIDEpO1xuICAgICAgICAgICsrd2hlZWxTYW1wbGVzO1xuICAgICAgICB9LCAyMDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzcGxheS53aGVlbERYICs9IGR4OyBkaXNwbGF5LndoZWVsRFkgKz0gZHk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU2VsZWN0aW9uIG9iamVjdHMgYXJlIGltbXV0YWJsZS4gQSBuZXcgb25lIGlzIGNyZWF0ZWQgZXZlcnkgdGltZVxuICAvLyB0aGUgc2VsZWN0aW9uIGNoYW5nZXMuIEEgc2VsZWN0aW9uIGlzIG9uZSBvciBtb3JlIG5vbi1vdmVybGFwcGluZ1xuICAvLyAoYW5kIG5vbi10b3VjaGluZykgcmFuZ2VzLCBzb3J0ZWQsIGFuZCBhbiBpbnRlZ2VyIHRoYXQgaW5kaWNhdGVzXG4gIC8vIHdoaWNoIG9uZSBpcyB0aGUgcHJpbWFyeSBzZWxlY3Rpb24gKHRoZSBvbmUgdGhhdCdzIHNjcm9sbGVkIGludG9cbiAgLy8gdmlldywgdGhhdCBnZXRDdXJzb3IgcmV0dXJucywgZXRjKS5cbiAgdmFyIFNlbGVjdGlvbiA9IGZ1bmN0aW9uKHJhbmdlcywgcHJpbUluZGV4KSB7XG4gICAgdGhpcy5yYW5nZXMgPSByYW5nZXM7XG4gICAgdGhpcy5wcmltSW5kZXggPSBwcmltSW5kZXg7XG4gIH07XG5cbiAgU2VsZWN0aW9uLnByb3RvdHlwZS5wcmltYXJ5ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5yYW5nZXNbdGhpcy5wcmltSW5kZXhdIH07XG5cbiAgU2VsZWN0aW9uLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICBpZiAob3RoZXIgPT0gdGhpcykgeyByZXR1cm4gdHJ1ZSB9XG4gICAgaWYgKG90aGVyLnByaW1JbmRleCAhPSB0aGlzLnByaW1JbmRleCB8fCBvdGhlci5yYW5nZXMubGVuZ3RoICE9IHRoaXMucmFuZ2VzLmxlbmd0aCkgeyByZXR1cm4gZmFsc2UgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5yYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoZXJlID0gdGhpcy5yYW5nZXNbaV0sIHRoZXJlID0gb3RoZXIucmFuZ2VzW2ldO1xuICAgICAgaWYgKCFlcXVhbEN1cnNvclBvcyhoZXJlLmFuY2hvciwgdGhlcmUuYW5jaG9yKSB8fCAhZXF1YWxDdXJzb3JQb3MoaGVyZS5oZWFkLCB0aGVyZS5oZWFkKSkgeyByZXR1cm4gZmFsc2UgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxuICB9O1xuXG4gIFNlbGVjdGlvbi5wcm90b3R5cGUuZGVlcENvcHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG91dCA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5yYW5nZXMubGVuZ3RoOyBpKyspXG4gICAgICB7IG91dFtpXSA9IG5ldyBSYW5nZShjb3B5UG9zKHRoaXMucmFuZ2VzW2ldLmFuY2hvciksIGNvcHlQb3ModGhpcy5yYW5nZXNbaV0uaGVhZCkpOyB9XG4gICAgcmV0dXJuIG5ldyBTZWxlY3Rpb24ob3V0LCB0aGlzLnByaW1JbmRleClcbiAgfTtcblxuICBTZWxlY3Rpb24ucHJvdG90eXBlLnNvbWV0aGluZ1NlbGVjdGVkID0gZnVuY3Rpb24gKCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5yYW5nZXMubGVuZ3RoOyBpKyspXG4gICAgICB7IGlmICghdGhpcy5yYW5nZXNbaV0uZW1wdHkoKSkgeyByZXR1cm4gdHJ1ZSB9IH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfTtcblxuICBTZWxlY3Rpb24ucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24gKHBvcywgZW5kKSB7XG4gICAgaWYgKCFlbmQpIHsgZW5kID0gcG9zOyB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnJhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHJhbmdlID0gdGhpcy5yYW5nZXNbaV07XG4gICAgICBpZiAoY21wKGVuZCwgcmFuZ2UuZnJvbSgpKSA+PSAwICYmIGNtcChwb3MsIHJhbmdlLnRvKCkpIDw9IDApXG4gICAgICAgIHsgcmV0dXJuIGkgfVxuICAgIH1cbiAgICByZXR1cm4gLTFcbiAgfTtcblxuICB2YXIgUmFuZ2UgPSBmdW5jdGlvbihhbmNob3IsIGhlYWQpIHtcbiAgICB0aGlzLmFuY2hvciA9IGFuY2hvcjsgdGhpcy5oZWFkID0gaGVhZDtcbiAgfTtcblxuICBSYW5nZS5wcm90b3R5cGUuZnJvbSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1pblBvcyh0aGlzLmFuY2hvciwgdGhpcy5oZWFkKSB9O1xuICBSYW5nZS5wcm90b3R5cGUudG8gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBtYXhQb3ModGhpcy5hbmNob3IsIHRoaXMuaGVhZCkgfTtcbiAgUmFuZ2UucHJvdG90eXBlLmVtcHR5ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5oZWFkLmxpbmUgPT0gdGhpcy5hbmNob3IubGluZSAmJiB0aGlzLmhlYWQuY2ggPT0gdGhpcy5hbmNob3IuY2ggfTtcblxuICAvLyBUYWtlIGFuIHVuc29ydGVkLCBwb3RlbnRpYWxseSBvdmVybGFwcGluZyBzZXQgb2YgcmFuZ2VzLCBhbmRcbiAgLy8gYnVpbGQgYSBzZWxlY3Rpb24gb3V0IG9mIGl0LiAnQ29uc3VtZXMnIHJhbmdlcyBhcnJheSAobW9kaWZ5aW5nXG4gIC8vIGl0KS5cbiAgZnVuY3Rpb24gbm9ybWFsaXplU2VsZWN0aW9uKGNtLCByYW5nZXMsIHByaW1JbmRleCkge1xuICAgIHZhciBtYXlUb3VjaCA9IGNtICYmIGNtLm9wdGlvbnMuc2VsZWN0aW9uc01heVRvdWNoO1xuICAgIHZhciBwcmltID0gcmFuZ2VzW3ByaW1JbmRleF07XG4gICAgcmFuZ2VzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGNtcChhLmZyb20oKSwgYi5mcm9tKCkpOyB9KTtcbiAgICBwcmltSW5kZXggPSBpbmRleE9mKHJhbmdlcywgcHJpbSk7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjdXIgPSByYW5nZXNbaV0sIHByZXYgPSByYW5nZXNbaSAtIDFdO1xuICAgICAgdmFyIGRpZmYgPSBjbXAocHJldi50bygpLCBjdXIuZnJvbSgpKTtcbiAgICAgIGlmIChtYXlUb3VjaCAmJiAhY3VyLmVtcHR5KCkgPyBkaWZmID4gMCA6IGRpZmYgPj0gMCkge1xuICAgICAgICB2YXIgZnJvbSA9IG1pblBvcyhwcmV2LmZyb20oKSwgY3VyLmZyb20oKSksIHRvID0gbWF4UG9zKHByZXYudG8oKSwgY3VyLnRvKCkpO1xuICAgICAgICB2YXIgaW52ID0gcHJldi5lbXB0eSgpID8gY3VyLmZyb20oKSA9PSBjdXIuaGVhZCA6IHByZXYuZnJvbSgpID09IHByZXYuaGVhZDtcbiAgICAgICAgaWYgKGkgPD0gcHJpbUluZGV4KSB7IC0tcHJpbUluZGV4OyB9XG4gICAgICAgIHJhbmdlcy5zcGxpY2UoLS1pLCAyLCBuZXcgUmFuZ2UoaW52ID8gdG8gOiBmcm9tLCBpbnYgPyBmcm9tIDogdG8pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBTZWxlY3Rpb24ocmFuZ2VzLCBwcmltSW5kZXgpXG4gIH1cblxuICBmdW5jdGlvbiBzaW1wbGVTZWxlY3Rpb24oYW5jaG9yLCBoZWFkKSB7XG4gICAgcmV0dXJuIG5ldyBTZWxlY3Rpb24oW25ldyBSYW5nZShhbmNob3IsIGhlYWQgfHwgYW5jaG9yKV0sIDApXG4gIH1cblxuICAvLyBDb21wdXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZW5kIG9mIGEgY2hhbmdlIChpdHMgJ3RvJyBwcm9wZXJ0eVxuICAvLyByZWZlcnMgdG8gdGhlIHByZS1jaGFuZ2UgZW5kKS5cbiAgZnVuY3Rpb24gY2hhbmdlRW5kKGNoYW5nZSkge1xuICAgIGlmICghY2hhbmdlLnRleHQpIHsgcmV0dXJuIGNoYW5nZS50byB9XG4gICAgcmV0dXJuIFBvcyhjaGFuZ2UuZnJvbS5saW5lICsgY2hhbmdlLnRleHQubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgICAgIGxzdChjaGFuZ2UudGV4dCkubGVuZ3RoICsgKGNoYW5nZS50ZXh0Lmxlbmd0aCA9PSAxID8gY2hhbmdlLmZyb20uY2ggOiAwKSlcbiAgfVxuXG4gIC8vIEFkanVzdCBhIHBvc2l0aW9uIHRvIHJlZmVyIHRvIHRoZSBwb3N0LWNoYW5nZSBwb3NpdGlvbiBvZiB0aGVcbiAgLy8gc2FtZSB0ZXh0LCBvciB0aGUgZW5kIG9mIHRoZSBjaGFuZ2UgaWYgdGhlIGNoYW5nZSBjb3ZlcnMgaXQuXG4gIGZ1bmN0aW9uIGFkanVzdEZvckNoYW5nZShwb3MsIGNoYW5nZSkge1xuICAgIGlmIChjbXAocG9zLCBjaGFuZ2UuZnJvbSkgPCAwKSB7IHJldHVybiBwb3MgfVxuICAgIGlmIChjbXAocG9zLCBjaGFuZ2UudG8pIDw9IDApIHsgcmV0dXJuIGNoYW5nZUVuZChjaGFuZ2UpIH1cblxuICAgIHZhciBsaW5lID0gcG9zLmxpbmUgKyBjaGFuZ2UudGV4dC5sZW5ndGggLSAoY2hhbmdlLnRvLmxpbmUgLSBjaGFuZ2UuZnJvbS5saW5lKSAtIDEsIGNoID0gcG9zLmNoO1xuICAgIGlmIChwb3MubGluZSA9PSBjaGFuZ2UudG8ubGluZSkgeyBjaCArPSBjaGFuZ2VFbmQoY2hhbmdlKS5jaCAtIGNoYW5nZS50by5jaDsgfVxuICAgIHJldHVybiBQb3MobGluZSwgY2gpXG4gIH1cblxuICBmdW5jdGlvbiBjb21wdXRlU2VsQWZ0ZXJDaGFuZ2UoZG9jLCBjaGFuZ2UpIHtcbiAgICB2YXIgb3V0ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkb2Muc2VsLnJhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHJhbmdlID0gZG9jLnNlbC5yYW5nZXNbaV07XG4gICAgICBvdXQucHVzaChuZXcgUmFuZ2UoYWRqdXN0Rm9yQ2hhbmdlKHJhbmdlLmFuY2hvciwgY2hhbmdlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhZGp1c3RGb3JDaGFuZ2UocmFuZ2UuaGVhZCwgY2hhbmdlKSkpO1xuICAgIH1cbiAgICByZXR1cm4gbm9ybWFsaXplU2VsZWN0aW9uKGRvYy5jbSwgb3V0LCBkb2Muc2VsLnByaW1JbmRleClcbiAgfVxuXG4gIGZ1bmN0aW9uIG9mZnNldFBvcyhwb3MsIG9sZCwgbncpIHtcbiAgICBpZiAocG9zLmxpbmUgPT0gb2xkLmxpbmUpXG4gICAgICB7IHJldHVybiBQb3MobncubGluZSwgcG9zLmNoIC0gb2xkLmNoICsgbncuY2gpIH1cbiAgICBlbHNlXG4gICAgICB7IHJldHVybiBQb3MobncubGluZSArIChwb3MubGluZSAtIG9sZC5saW5lKSwgcG9zLmNoKSB9XG4gIH1cblxuICAvLyBVc2VkIGJ5IHJlcGxhY2VTZWxlY3Rpb25zIHRvIGFsbG93IG1vdmluZyB0aGUgc2VsZWN0aW9uIHRvIHRoZVxuICAvLyBzdGFydCBvciBhcm91bmQgdGhlIHJlcGxhY2VkIHRlc3QuIEhpbnQgbWF5IGJlIFwic3RhcnRcIiBvciBcImFyb3VuZFwiLlxuICBmdW5jdGlvbiBjb21wdXRlUmVwbGFjZWRTZWwoZG9jLCBjaGFuZ2VzLCBoaW50KSB7XG4gICAgdmFyIG91dCA9IFtdO1xuICAgIHZhciBvbGRQcmV2ID0gUG9zKGRvYy5maXJzdCwgMCksIG5ld1ByZXYgPSBvbGRQcmV2O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgICB2YXIgZnJvbSA9IG9mZnNldFBvcyhjaGFuZ2UuZnJvbSwgb2xkUHJldiwgbmV3UHJldik7XG4gICAgICB2YXIgdG8gPSBvZmZzZXRQb3MoY2hhbmdlRW5kKGNoYW5nZSksIG9sZFByZXYsIG5ld1ByZXYpO1xuICAgICAgb2xkUHJldiA9IGNoYW5nZS50bztcbiAgICAgIG5ld1ByZXYgPSB0bztcbiAgICAgIGlmIChoaW50ID09IFwiYXJvdW5kXCIpIHtcbiAgICAgICAgdmFyIHJhbmdlID0gZG9jLnNlbC5yYW5nZXNbaV0sIGludiA9IGNtcChyYW5nZS5oZWFkLCByYW5nZS5hbmNob3IpIDwgMDtcbiAgICAgICAgb3V0W2ldID0gbmV3IFJhbmdlKGludiA/IHRvIDogZnJvbSwgaW52ID8gZnJvbSA6IHRvKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dFtpXSA9IG5ldyBSYW5nZShmcm9tLCBmcm9tKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBTZWxlY3Rpb24ob3V0LCBkb2Muc2VsLnByaW1JbmRleClcbiAgfVxuXG4gIC8vIFVzZWQgdG8gZ2V0IHRoZSBlZGl0b3IgaW50byBhIGNvbnNpc3RlbnQgc3RhdGUgYWdhaW4gd2hlbiBvcHRpb25zIGNoYW5nZS5cblxuICBmdW5jdGlvbiBsb2FkTW9kZShjbSkge1xuICAgIGNtLmRvYy5tb2RlID0gZ2V0TW9kZShjbS5vcHRpb25zLCBjbS5kb2MubW9kZU9wdGlvbik7XG4gICAgcmVzZXRNb2RlU3RhdGUoY20pO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzZXRNb2RlU3RhdGUoY20pIHtcbiAgICBjbS5kb2MuaXRlcihmdW5jdGlvbiAobGluZSkge1xuICAgICAgaWYgKGxpbmUuc3RhdGVBZnRlcikgeyBsaW5lLnN0YXRlQWZ0ZXIgPSBudWxsOyB9XG4gICAgICBpZiAobGluZS5zdHlsZXMpIHsgbGluZS5zdHlsZXMgPSBudWxsOyB9XG4gICAgfSk7XG4gICAgY20uZG9jLm1vZGVGcm9udGllciA9IGNtLmRvYy5oaWdobGlnaHRGcm9udGllciA9IGNtLmRvYy5maXJzdDtcbiAgICBzdGFydFdvcmtlcihjbSwgMTAwKTtcbiAgICBjbS5zdGF0ZS5tb2RlR2VuKys7XG4gICAgaWYgKGNtLmN1ck9wKSB7IHJlZ0NoYW5nZShjbSk7IH1cbiAgfVxuXG4gIC8vIERPQ1VNRU5UIERBVEEgU1RSVUNUVVJFXG5cbiAgLy8gQnkgZGVmYXVsdCwgdXBkYXRlcyB0aGF0IHN0YXJ0IGFuZCBlbmQgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmVcbiAgLy8gYXJlIHRyZWF0ZWQgc3BlY2lhbGx5LCBpbiBvcmRlciB0byBtYWtlIHRoZSBhc3NvY2lhdGlvbiBvZiBsaW5lXG4gIC8vIHdpZGdldHMgYW5kIG1hcmtlciBlbGVtZW50cyB3aXRoIHRoZSB0ZXh0IGJlaGF2ZSBtb3JlIGludHVpdGl2ZS5cbiAgZnVuY3Rpb24gaXNXaG9sZUxpbmVVcGRhdGUoZG9jLCBjaGFuZ2UpIHtcbiAgICByZXR1cm4gY2hhbmdlLmZyb20uY2ggPT0gMCAmJiBjaGFuZ2UudG8uY2ggPT0gMCAmJiBsc3QoY2hhbmdlLnRleHQpID09IFwiXCIgJiZcbiAgICAgICghZG9jLmNtIHx8IGRvYy5jbS5vcHRpb25zLndob2xlTGluZVVwZGF0ZUJlZm9yZSlcbiAgfVxuXG4gIC8vIFBlcmZvcm0gYSBjaGFuZ2Ugb24gdGhlIGRvY3VtZW50IGRhdGEgc3RydWN0dXJlLlxuICBmdW5jdGlvbiB1cGRhdGVEb2MoZG9jLCBjaGFuZ2UsIG1hcmtlZFNwYW5zLCBlc3RpbWF0ZUhlaWdodCkge1xuICAgIGZ1bmN0aW9uIHNwYW5zRm9yKG4pIHtyZXR1cm4gbWFya2VkU3BhbnMgPyBtYXJrZWRTcGFuc1tuXSA6IG51bGx9XG4gICAgZnVuY3Rpb24gdXBkYXRlKGxpbmUsIHRleHQsIHNwYW5zKSB7XG4gICAgICB1cGRhdGVMaW5lKGxpbmUsIHRleHQsIHNwYW5zLCBlc3RpbWF0ZUhlaWdodCk7XG4gICAgICBzaWduYWxMYXRlcihsaW5lLCBcImNoYW5nZVwiLCBsaW5lLCBjaGFuZ2UpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBsaW5lc0ZvcihzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSlcbiAgICAgICAgeyByZXN1bHQucHVzaChuZXcgTGluZSh0ZXh0W2ldLCBzcGFuc0ZvcihpKSwgZXN0aW1hdGVIZWlnaHQpKTsgfVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIHZhciBmcm9tID0gY2hhbmdlLmZyb20sIHRvID0gY2hhbmdlLnRvLCB0ZXh0ID0gY2hhbmdlLnRleHQ7XG4gICAgdmFyIGZpcnN0TGluZSA9IGdldExpbmUoZG9jLCBmcm9tLmxpbmUpLCBsYXN0TGluZSA9IGdldExpbmUoZG9jLCB0by5saW5lKTtcbiAgICB2YXIgbGFzdFRleHQgPSBsc3QodGV4dCksIGxhc3RTcGFucyA9IHNwYW5zRm9yKHRleHQubGVuZ3RoIC0gMSksIG5saW5lcyA9IHRvLmxpbmUgLSBmcm9tLmxpbmU7XG5cbiAgICAvLyBBZGp1c3QgdGhlIGxpbmUgc3RydWN0dXJlXG4gICAgaWYgKGNoYW5nZS5mdWxsKSB7XG4gICAgICBkb2MuaW5zZXJ0KDAsIGxpbmVzRm9yKDAsIHRleHQubGVuZ3RoKSk7XG4gICAgICBkb2MucmVtb3ZlKHRleHQubGVuZ3RoLCBkb2Muc2l6ZSAtIHRleHQubGVuZ3RoKTtcbiAgICB9IGVsc2UgaWYgKGlzV2hvbGVMaW5lVXBkYXRlKGRvYywgY2hhbmdlKSkge1xuICAgICAgLy8gVGhpcyBpcyBhIHdob2xlLWxpbmUgcmVwbGFjZS4gVHJlYXRlZCBzcGVjaWFsbHkgdG8gbWFrZVxuICAgICAgLy8gc3VyZSBsaW5lIG9iamVjdHMgbW92ZSB0aGUgd2F5IHRoZXkgYXJlIHN1cHBvc2VkIHRvLlxuICAgICAgdmFyIGFkZGVkID0gbGluZXNGb3IoMCwgdGV4dC5sZW5ndGggLSAxKTtcbiAgICAgIHVwZGF0ZShsYXN0TGluZSwgbGFzdExpbmUudGV4dCwgbGFzdFNwYW5zKTtcbiAgICAgIGlmIChubGluZXMpIHsgZG9jLnJlbW92ZShmcm9tLmxpbmUsIG5saW5lcyk7IH1cbiAgICAgIGlmIChhZGRlZC5sZW5ndGgpIHsgZG9jLmluc2VydChmcm9tLmxpbmUsIGFkZGVkKTsgfVxuICAgIH0gZWxzZSBpZiAoZmlyc3RMaW5lID09IGxhc3RMaW5lKSB7XG4gICAgICBpZiAodGV4dC5sZW5ndGggPT0gMSkge1xuICAgICAgICB1cGRhdGUoZmlyc3RMaW5lLCBmaXJzdExpbmUudGV4dC5zbGljZSgwLCBmcm9tLmNoKSArIGxhc3RUZXh0ICsgZmlyc3RMaW5lLnRleHQuc2xpY2UodG8uY2gpLCBsYXN0U3BhbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGFkZGVkJDEgPSBsaW5lc0ZvcigxLCB0ZXh0Lmxlbmd0aCAtIDEpO1xuICAgICAgICBhZGRlZCQxLnB1c2gobmV3IExpbmUobGFzdFRleHQgKyBmaXJzdExpbmUudGV4dC5zbGljZSh0by5jaCksIGxhc3RTcGFucywgZXN0aW1hdGVIZWlnaHQpKTtcbiAgICAgICAgdXBkYXRlKGZpcnN0TGluZSwgZmlyc3RMaW5lLnRleHQuc2xpY2UoMCwgZnJvbS5jaCkgKyB0ZXh0WzBdLCBzcGFuc0ZvcigwKSk7XG4gICAgICAgIGRvYy5pbnNlcnQoZnJvbS5saW5lICsgMSwgYWRkZWQkMSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0ZXh0Lmxlbmd0aCA9PSAxKSB7XG4gICAgICB1cGRhdGUoZmlyc3RMaW5lLCBmaXJzdExpbmUudGV4dC5zbGljZSgwLCBmcm9tLmNoKSArIHRleHRbMF0gKyBsYXN0TGluZS50ZXh0LnNsaWNlKHRvLmNoKSwgc3BhbnNGb3IoMCkpO1xuICAgICAgZG9jLnJlbW92ZShmcm9tLmxpbmUgKyAxLCBubGluZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cGRhdGUoZmlyc3RMaW5lLCBmaXJzdExpbmUudGV4dC5zbGljZSgwLCBmcm9tLmNoKSArIHRleHRbMF0sIHNwYW5zRm9yKDApKTtcbiAgICAgIHVwZGF0ZShsYXN0TGluZSwgbGFzdFRleHQgKyBsYXN0TGluZS50ZXh0LnNsaWNlKHRvLmNoKSwgbGFzdFNwYW5zKTtcbiAgICAgIHZhciBhZGRlZCQyID0gbGluZXNGb3IoMSwgdGV4dC5sZW5ndGggLSAxKTtcbiAgICAgIGlmIChubGluZXMgPiAxKSB7IGRvYy5yZW1vdmUoZnJvbS5saW5lICsgMSwgbmxpbmVzIC0gMSk7IH1cbiAgICAgIGRvYy5pbnNlcnQoZnJvbS5saW5lICsgMSwgYWRkZWQkMik7XG4gICAgfVxuXG4gICAgc2lnbmFsTGF0ZXIoZG9jLCBcImNoYW5nZVwiLCBkb2MsIGNoYW5nZSk7XG4gIH1cblxuICAvLyBDYWxsIGYgZm9yIGFsbCBsaW5rZWQgZG9jdW1lbnRzLlxuICBmdW5jdGlvbiBsaW5rZWREb2NzKGRvYywgZiwgc2hhcmVkSGlzdE9ubHkpIHtcbiAgICBmdW5jdGlvbiBwcm9wYWdhdGUoZG9jLCBza2lwLCBzaGFyZWRIaXN0KSB7XG4gICAgICBpZiAoZG9jLmxpbmtlZCkgeyBmb3IgKHZhciBpID0gMDsgaSA8IGRvYy5saW5rZWQubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIHJlbCA9IGRvYy5saW5rZWRbaV07XG4gICAgICAgIGlmIChyZWwuZG9jID09IHNraXApIHsgY29udGludWUgfVxuICAgICAgICB2YXIgc2hhcmVkID0gc2hhcmVkSGlzdCAmJiByZWwuc2hhcmVkSGlzdDtcbiAgICAgICAgaWYgKHNoYXJlZEhpc3RPbmx5ICYmICFzaGFyZWQpIHsgY29udGludWUgfVxuICAgICAgICBmKHJlbC5kb2MsIHNoYXJlZCk7XG4gICAgICAgIHByb3BhZ2F0ZShyZWwuZG9jLCBkb2MsIHNoYXJlZCk7XG4gICAgICB9IH1cbiAgICB9XG4gICAgcHJvcGFnYXRlKGRvYywgbnVsbCwgdHJ1ZSk7XG4gIH1cblxuICAvLyBBdHRhY2ggYSBkb2N1bWVudCB0byBhbiBlZGl0b3IuXG4gIGZ1bmN0aW9uIGF0dGFjaERvYyhjbSwgZG9jKSB7XG4gICAgaWYgKGRvYy5jbSkgeyB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIGRvY3VtZW50IGlzIGFscmVhZHkgaW4gdXNlLlwiKSB9XG4gICAgY20uZG9jID0gZG9jO1xuICAgIGRvYy5jbSA9IGNtO1xuICAgIGVzdGltYXRlTGluZUhlaWdodHMoY20pO1xuICAgIGxvYWRNb2RlKGNtKTtcbiAgICBzZXREaXJlY3Rpb25DbGFzcyhjbSk7XG4gICAgaWYgKCFjbS5vcHRpb25zLmxpbmVXcmFwcGluZykgeyBmaW5kTWF4TGluZShjbSk7IH1cbiAgICBjbS5vcHRpb25zLm1vZGUgPSBkb2MubW9kZU9wdGlvbjtcbiAgICByZWdDaGFuZ2UoY20pO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0RGlyZWN0aW9uQ2xhc3MoY20pIHtcbiAgKGNtLmRvYy5kaXJlY3Rpb24gPT0gXCJydGxcIiA/IGFkZENsYXNzIDogcm1DbGFzcykoY20uZGlzcGxheS5saW5lRGl2LCBcIkNvZGVNaXJyb3ItcnRsXCIpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlyZWN0aW9uQ2hhbmdlZChjbSkge1xuICAgIHJ1bkluT3AoY20sIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNldERpcmVjdGlvbkNsYXNzKGNtKTtcbiAgICAgIHJlZ0NoYW5nZShjbSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBIaXN0b3J5KHN0YXJ0R2VuKSB7XG4gICAgLy8gQXJyYXlzIG9mIGNoYW5nZSBldmVudHMgYW5kIHNlbGVjdGlvbnMuIERvaW5nIHNvbWV0aGluZyBhZGRzIGFuXG4gICAgLy8gZXZlbnQgdG8gZG9uZSBhbmQgY2xlYXJzIHVuZG8uIFVuZG9pbmcgbW92ZXMgZXZlbnRzIGZyb20gZG9uZVxuICAgIC8vIHRvIHVuZG9uZSwgcmVkb2luZyBtb3ZlcyB0aGVtIGluIHRoZSBvdGhlciBkaXJlY3Rpb24uXG4gICAgdGhpcy5kb25lID0gW107IHRoaXMudW5kb25lID0gW107XG4gICAgdGhpcy51bmRvRGVwdGggPSBJbmZpbml0eTtcbiAgICAvLyBVc2VkIHRvIHRyYWNrIHdoZW4gY2hhbmdlcyBjYW4gYmUgbWVyZ2VkIGludG8gYSBzaW5nbGUgdW5kb1xuICAgIC8vIGV2ZW50XG4gICAgdGhpcy5sYXN0TW9kVGltZSA9IHRoaXMubGFzdFNlbFRpbWUgPSAwO1xuICAgIHRoaXMubGFzdE9wID0gdGhpcy5sYXN0U2VsT3AgPSBudWxsO1xuICAgIHRoaXMubGFzdE9yaWdpbiA9IHRoaXMubGFzdFNlbE9yaWdpbiA9IG51bGw7XG4gICAgLy8gVXNlZCBieSB0aGUgaXNDbGVhbigpIG1ldGhvZFxuICAgIHRoaXMuZ2VuZXJhdGlvbiA9IHRoaXMubWF4R2VuZXJhdGlvbiA9IHN0YXJ0R2VuIHx8IDE7XG4gIH1cblxuICAvLyBDcmVhdGUgYSBoaXN0b3J5IGNoYW5nZSBldmVudCBmcm9tIGFuIHVwZGF0ZURvYy1zdHlsZSBjaGFuZ2VcbiAgLy8gb2JqZWN0LlxuICBmdW5jdGlvbiBoaXN0b3J5Q2hhbmdlRnJvbUNoYW5nZShkb2MsIGNoYW5nZSkge1xuICAgIHZhciBoaXN0Q2hhbmdlID0ge2Zyb206IGNvcHlQb3MoY2hhbmdlLmZyb20pLCB0bzogY2hhbmdlRW5kKGNoYW5nZSksIHRleHQ6IGdldEJldHdlZW4oZG9jLCBjaGFuZ2UuZnJvbSwgY2hhbmdlLnRvKX07XG4gICAgYXR0YWNoTG9jYWxTcGFucyhkb2MsIGhpc3RDaGFuZ2UsIGNoYW5nZS5mcm9tLmxpbmUsIGNoYW5nZS50by5saW5lICsgMSk7XG4gICAgbGlua2VkRG9jcyhkb2MsIGZ1bmN0aW9uIChkb2MpIHsgcmV0dXJuIGF0dGFjaExvY2FsU3BhbnMoZG9jLCBoaXN0Q2hhbmdlLCBjaGFuZ2UuZnJvbS5saW5lLCBjaGFuZ2UudG8ubGluZSArIDEpOyB9LCB0cnVlKTtcbiAgICByZXR1cm4gaGlzdENoYW5nZVxuICB9XG5cbiAgLy8gUG9wIGFsbCBzZWxlY3Rpb24gZXZlbnRzIG9mZiB0aGUgZW5kIG9mIGEgaGlzdG9yeSBhcnJheS4gU3RvcCBhdFxuICAvLyBhIGNoYW5nZSBldmVudC5cbiAgZnVuY3Rpb24gY2xlYXJTZWxlY3Rpb25FdmVudHMoYXJyYXkpIHtcbiAgICB3aGlsZSAoYXJyYXkubGVuZ3RoKSB7XG4gICAgICB2YXIgbGFzdCA9IGxzdChhcnJheSk7XG4gICAgICBpZiAobGFzdC5yYW5nZXMpIHsgYXJyYXkucG9wKCk7IH1cbiAgICAgIGVsc2UgeyBicmVhayB9XG4gICAgfVxuICB9XG5cbiAgLy8gRmluZCB0aGUgdG9wIGNoYW5nZSBldmVudCBpbiB0aGUgaGlzdG9yeS4gUG9wIG9mZiBzZWxlY3Rpb25cbiAgLy8gZXZlbnRzIHRoYXQgYXJlIGluIHRoZSB3YXkuXG4gIGZ1bmN0aW9uIGxhc3RDaGFuZ2VFdmVudChoaXN0LCBmb3JjZSkge1xuICAgIGlmIChmb3JjZSkge1xuICAgICAgY2xlYXJTZWxlY3Rpb25FdmVudHMoaGlzdC5kb25lKTtcbiAgICAgIHJldHVybiBsc3QoaGlzdC5kb25lKVxuICAgIH0gZWxzZSBpZiAoaGlzdC5kb25lLmxlbmd0aCAmJiAhbHN0KGhpc3QuZG9uZSkucmFuZ2VzKSB7XG4gICAgICByZXR1cm4gbHN0KGhpc3QuZG9uZSlcbiAgICB9IGVsc2UgaWYgKGhpc3QuZG9uZS5sZW5ndGggPiAxICYmICFoaXN0LmRvbmVbaGlzdC5kb25lLmxlbmd0aCAtIDJdLnJhbmdlcykge1xuICAgICAgaGlzdC5kb25lLnBvcCgpO1xuICAgICAgcmV0dXJuIGxzdChoaXN0LmRvbmUpXG4gICAgfVxuICB9XG5cbiAgLy8gUmVnaXN0ZXIgYSBjaGFuZ2UgaW4gdGhlIGhpc3RvcnkuIE1lcmdlcyBjaGFuZ2VzIHRoYXQgYXJlIHdpdGhpblxuICAvLyBhIHNpbmdsZSBvcGVyYXRpb24sIG9yIGFyZSBjbG9zZSB0b2dldGhlciB3aXRoIGFuIG9yaWdpbiB0aGF0XG4gIC8vIGFsbG93cyBtZXJnaW5nIChzdGFydGluZyB3aXRoIFwiK1wiKSBpbnRvIGEgc2luZ2xlIGV2ZW50LlxuICBmdW5jdGlvbiBhZGRDaGFuZ2VUb0hpc3RvcnkoZG9jLCBjaGFuZ2UsIHNlbEFmdGVyLCBvcElkKSB7XG4gICAgdmFyIGhpc3QgPSBkb2MuaGlzdG9yeTtcbiAgICBoaXN0LnVuZG9uZS5sZW5ndGggPSAwO1xuICAgIHZhciB0aW1lID0gK25ldyBEYXRlLCBjdXI7XG4gICAgdmFyIGxhc3Q7XG5cbiAgICBpZiAoKGhpc3QubGFzdE9wID09IG9wSWQgfHxcbiAgICAgICAgIGhpc3QubGFzdE9yaWdpbiA9PSBjaGFuZ2Uub3JpZ2luICYmIGNoYW5nZS5vcmlnaW4gJiZcbiAgICAgICAgICgoY2hhbmdlLm9yaWdpbi5jaGFyQXQoMCkgPT0gXCIrXCIgJiYgaGlzdC5sYXN0TW9kVGltZSA+IHRpbWUgLSAoZG9jLmNtID8gZG9jLmNtLm9wdGlvbnMuaGlzdG9yeUV2ZW50RGVsYXkgOiA1MDApKSB8fFxuICAgICAgICAgIGNoYW5nZS5vcmlnaW4uY2hhckF0KDApID09IFwiKlwiKSkgJiZcbiAgICAgICAgKGN1ciA9IGxhc3RDaGFuZ2VFdmVudChoaXN0LCBoaXN0Lmxhc3RPcCA9PSBvcElkKSkpIHtcbiAgICAgIC8vIE1lcmdlIHRoaXMgY2hhbmdlIGludG8gdGhlIGxhc3QgZXZlbnRcbiAgICAgIGxhc3QgPSBsc3QoY3VyLmNoYW5nZXMpO1xuICAgICAgaWYgKGNtcChjaGFuZ2UuZnJvbSwgY2hhbmdlLnRvKSA9PSAwICYmIGNtcChjaGFuZ2UuZnJvbSwgbGFzdC50bykgPT0gMCkge1xuICAgICAgICAvLyBPcHRpbWl6ZWQgY2FzZSBmb3Igc2ltcGxlIGluc2VydGlvbiAtLSBkb24ndCB3YW50IHRvIGFkZFxuICAgICAgICAvLyBuZXcgY2hhbmdlc2V0cyBmb3IgZXZlcnkgY2hhcmFjdGVyIHR5cGVkXG4gICAgICAgIGxhc3QudG8gPSBjaGFuZ2VFbmQoY2hhbmdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFkZCBuZXcgc3ViLWV2ZW50XG4gICAgICAgIGN1ci5jaGFuZ2VzLnB1c2goaGlzdG9yeUNoYW5nZUZyb21DaGFuZ2UoZG9jLCBjaGFuZ2UpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FuIG5vdCBiZSBtZXJnZWQsIHN0YXJ0IGEgbmV3IGV2ZW50LlxuICAgICAgdmFyIGJlZm9yZSA9IGxzdChoaXN0LmRvbmUpO1xuICAgICAgaWYgKCFiZWZvcmUgfHwgIWJlZm9yZS5yYW5nZXMpXG4gICAgICAgIHsgcHVzaFNlbGVjdGlvblRvSGlzdG9yeShkb2Muc2VsLCBoaXN0LmRvbmUpOyB9XG4gICAgICBjdXIgPSB7Y2hhbmdlczogW2hpc3RvcnlDaGFuZ2VGcm9tQ2hhbmdlKGRvYywgY2hhbmdlKV0sXG4gICAgICAgICAgICAgZ2VuZXJhdGlvbjogaGlzdC5nZW5lcmF0aW9ufTtcbiAgICAgIGhpc3QuZG9uZS5wdXNoKGN1cik7XG4gICAgICB3aGlsZSAoaGlzdC5kb25lLmxlbmd0aCA+IGhpc3QudW5kb0RlcHRoKSB7XG4gICAgICAgIGhpc3QuZG9uZS5zaGlmdCgpO1xuICAgICAgICBpZiAoIWhpc3QuZG9uZVswXS5yYW5nZXMpIHsgaGlzdC5kb25lLnNoaWZ0KCk7IH1cbiAgICAgIH1cbiAgICB9XG4gICAgaGlzdC5kb25lLnB1c2goc2VsQWZ0ZXIpO1xuICAgIGhpc3QuZ2VuZXJhdGlvbiA9ICsraGlzdC5tYXhHZW5lcmF0aW9uO1xuICAgIGhpc3QubGFzdE1vZFRpbWUgPSBoaXN0Lmxhc3RTZWxUaW1lID0gdGltZTtcbiAgICBoaXN0Lmxhc3RPcCA9IGhpc3QubGFzdFNlbE9wID0gb3BJZDtcbiAgICBoaXN0Lmxhc3RPcmlnaW4gPSBoaXN0Lmxhc3RTZWxPcmlnaW4gPSBjaGFuZ2Uub3JpZ2luO1xuXG4gICAgaWYgKCFsYXN0KSB7IHNpZ25hbChkb2MsIFwiaGlzdG9yeUFkZGVkXCIpOyB9XG4gIH1cblxuICBmdW5jdGlvbiBzZWxlY3Rpb25FdmVudENhbkJlTWVyZ2VkKGRvYywgb3JpZ2luLCBwcmV2LCBzZWwpIHtcbiAgICB2YXIgY2ggPSBvcmlnaW4uY2hhckF0KDApO1xuICAgIHJldHVybiBjaCA9PSBcIipcIiB8fFxuICAgICAgY2ggPT0gXCIrXCIgJiZcbiAgICAgIHByZXYucmFuZ2VzLmxlbmd0aCA9PSBzZWwucmFuZ2VzLmxlbmd0aCAmJlxuICAgICAgcHJldi5zb21ldGhpbmdTZWxlY3RlZCgpID09IHNlbC5zb21ldGhpbmdTZWxlY3RlZCgpICYmXG4gICAgICBuZXcgRGF0ZSAtIGRvYy5oaXN0b3J5Lmxhc3RTZWxUaW1lIDw9IChkb2MuY20gPyBkb2MuY20ub3B0aW9ucy5oaXN0b3J5RXZlbnREZWxheSA6IDUwMClcbiAgfVxuXG4gIC8vIENhbGxlZCB3aGVuZXZlciB0aGUgc2VsZWN0aW9uIGNoYW5nZXMsIHNldHMgdGhlIG5ldyBzZWxlY3Rpb24gYXNcbiAgLy8gdGhlIHBlbmRpbmcgc2VsZWN0aW9uIGluIHRoZSBoaXN0b3J5LCBhbmQgcHVzaGVzIHRoZSBvbGQgcGVuZGluZ1xuICAvLyBzZWxlY3Rpb24gaW50byB0aGUgJ2RvbmUnIGFycmF5IHdoZW4gaXQgd2FzIHNpZ25pZmljYW50bHlcbiAgLy8gZGlmZmVyZW50IChpbiBudW1iZXIgb2Ygc2VsZWN0ZWQgcmFuZ2VzLCBlbXB0aW5lc3MsIG9yIHRpbWUpLlxuICBmdW5jdGlvbiBhZGRTZWxlY3Rpb25Ub0hpc3RvcnkoZG9jLCBzZWwsIG9wSWQsIG9wdGlvbnMpIHtcbiAgICB2YXIgaGlzdCA9IGRvYy5oaXN0b3J5LCBvcmlnaW4gPSBvcHRpb25zICYmIG9wdGlvbnMub3JpZ2luO1xuXG4gICAgLy8gQSBuZXcgZXZlbnQgaXMgc3RhcnRlZCB3aGVuIHRoZSBwcmV2aW91cyBvcmlnaW4gZG9lcyBub3QgbWF0Y2hcbiAgICAvLyB0aGUgY3VycmVudCwgb3IgdGhlIG9yaWdpbnMgZG9uJ3QgYWxsb3cgbWF0Y2hpbmcuIE9yaWdpbnNcbiAgICAvLyBzdGFydGluZyB3aXRoICogYXJlIGFsd2F5cyBtZXJnZWQsIHRob3NlIHN0YXJ0aW5nIHdpdGggKyBhcmVcbiAgICAvLyBtZXJnZWQgd2hlbiBzaW1pbGFyIGFuZCBjbG9zZSB0b2dldGhlciBpbiB0aW1lLlxuICAgIGlmIChvcElkID09IGhpc3QubGFzdFNlbE9wIHx8XG4gICAgICAgIChvcmlnaW4gJiYgaGlzdC5sYXN0U2VsT3JpZ2luID09IG9yaWdpbiAmJlxuICAgICAgICAgKGhpc3QubGFzdE1vZFRpbWUgPT0gaGlzdC5sYXN0U2VsVGltZSAmJiBoaXN0Lmxhc3RPcmlnaW4gPT0gb3JpZ2luIHx8XG4gICAgICAgICAgc2VsZWN0aW9uRXZlbnRDYW5CZU1lcmdlZChkb2MsIG9yaWdpbiwgbHN0KGhpc3QuZG9uZSksIHNlbCkpKSlcbiAgICAgIHsgaGlzdC5kb25lW2hpc3QuZG9uZS5sZW5ndGggLSAxXSA9IHNlbDsgfVxuICAgIGVsc2VcbiAgICAgIHsgcHVzaFNlbGVjdGlvblRvSGlzdG9yeShzZWwsIGhpc3QuZG9uZSk7IH1cblxuICAgIGhpc3QubGFzdFNlbFRpbWUgPSArbmV3IERhdGU7XG4gICAgaGlzdC5sYXN0U2VsT3JpZ2luID0gb3JpZ2luO1xuICAgIGhpc3QubGFzdFNlbE9wID0gb3BJZDtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmNsZWFyUmVkbyAhPT0gZmFsc2UpXG4gICAgICB7IGNsZWFyU2VsZWN0aW9uRXZlbnRzKGhpc3QudW5kb25lKTsgfVxuICB9XG5cbiAgZnVuY3Rpb24gcHVzaFNlbGVjdGlvblRvSGlzdG9yeShzZWwsIGRlc3QpIHtcbiAgICB2YXIgdG9wID0gbHN0KGRlc3QpO1xuICAgIGlmICghKHRvcCAmJiB0b3AucmFuZ2VzICYmIHRvcC5lcXVhbHMoc2VsKSkpXG4gICAgICB7IGRlc3QucHVzaChzZWwpOyB9XG4gIH1cblxuICAvLyBVc2VkIHRvIHN0b3JlIG1hcmtlZCBzcGFuIGluZm9ybWF0aW9uIGluIHRoZSBoaXN0b3J5LlxuICBmdW5jdGlvbiBhdHRhY2hMb2NhbFNwYW5zKGRvYywgY2hhbmdlLCBmcm9tLCB0bykge1xuICAgIHZhciBleGlzdGluZyA9IGNoYW5nZVtcInNwYW5zX1wiICsgZG9jLmlkXSwgbiA9IDA7XG4gICAgZG9jLml0ZXIoTWF0aC5tYXgoZG9jLmZpcnN0LCBmcm9tKSwgTWF0aC5taW4oZG9jLmZpcnN0ICsgZG9jLnNpemUsIHRvKSwgZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIGlmIChsaW5lLm1hcmtlZFNwYW5zKVxuICAgICAgICB7IChleGlzdGluZyB8fCAoZXhpc3RpbmcgPSBjaGFuZ2VbXCJzcGFuc19cIiArIGRvYy5pZF0gPSB7fSkpW25dID0gbGluZS5tYXJrZWRTcGFuczsgfVxuICAgICAgKytuO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gV2hlbiB1bi9yZS1kb2luZyByZXN0b3JlcyB0ZXh0IGNvbnRhaW5pbmcgbWFya2VkIHNwYW5zLCB0aG9zZVxuICAvLyB0aGF0IGhhdmUgYmVlbiBleHBsaWNpdGx5IGNsZWFyZWQgc2hvdWxkIG5vdCBiZSByZXN0b3JlZC5cbiAgZnVuY3Rpb24gcmVtb3ZlQ2xlYXJlZFNwYW5zKHNwYW5zKSB7XG4gICAgaWYgKCFzcGFucykgeyByZXR1cm4gbnVsbCB9XG4gICAgdmFyIG91dDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNwYW5zLmxlbmd0aDsgKytpKSB7XG4gICAgICBpZiAoc3BhbnNbaV0ubWFya2VyLmV4cGxpY2l0bHlDbGVhcmVkKSB7IGlmICghb3V0KSB7IG91dCA9IHNwYW5zLnNsaWNlKDAsIGkpOyB9IH1cbiAgICAgIGVsc2UgaWYgKG91dCkgeyBvdXQucHVzaChzcGFuc1tpXSk7IH1cbiAgICB9XG4gICAgcmV0dXJuICFvdXQgPyBzcGFucyA6IG91dC5sZW5ndGggPyBvdXQgOiBudWxsXG4gIH1cblxuICAvLyBSZXRyaWV2ZSBhbmQgZmlsdGVyIHRoZSBvbGQgbWFya2VkIHNwYW5zIHN0b3JlZCBpbiBhIGNoYW5nZSBldmVudC5cbiAgZnVuY3Rpb24gZ2V0T2xkU3BhbnMoZG9jLCBjaGFuZ2UpIHtcbiAgICB2YXIgZm91bmQgPSBjaGFuZ2VbXCJzcGFuc19cIiArIGRvYy5pZF07XG4gICAgaWYgKCFmb3VuZCkgeyByZXR1cm4gbnVsbCB9XG4gICAgdmFyIG53ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFuZ2UudGV4dC5sZW5ndGg7ICsraSlcbiAgICAgIHsgbncucHVzaChyZW1vdmVDbGVhcmVkU3BhbnMoZm91bmRbaV0pKTsgfVxuICAgIHJldHVybiBud1xuICB9XG5cbiAgLy8gVXNlZCBmb3IgdW4vcmUtZG9pbmcgY2hhbmdlcyBmcm9tIHRoZSBoaXN0b3J5LiBDb21iaW5lcyB0aGVcbiAgLy8gcmVzdWx0IG9mIGNvbXB1dGluZyB0aGUgZXhpc3Rpbmcgc3BhbnMgd2l0aCB0aGUgc2V0IG9mIHNwYW5zIHRoYXRcbiAgLy8gZXhpc3RlZCBpbiB0aGUgaGlzdG9yeSAoc28gdGhhdCBkZWxldGluZyBhcm91bmQgYSBzcGFuIGFuZCB0aGVuXG4gIC8vIHVuZG9pbmcgYnJpbmdzIGJhY2sgdGhlIHNwYW4pLlxuICBmdW5jdGlvbiBtZXJnZU9sZFNwYW5zKGRvYywgY2hhbmdlKSB7XG4gICAgdmFyIG9sZCA9IGdldE9sZFNwYW5zKGRvYywgY2hhbmdlKTtcbiAgICB2YXIgc3RyZXRjaGVkID0gc3RyZXRjaFNwYW5zT3ZlckNoYW5nZShkb2MsIGNoYW5nZSk7XG4gICAgaWYgKCFvbGQpIHsgcmV0dXJuIHN0cmV0Y2hlZCB9XG4gICAgaWYgKCFzdHJldGNoZWQpIHsgcmV0dXJuIG9sZCB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9sZC5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIG9sZEN1ciA9IG9sZFtpXSwgc3RyZXRjaEN1ciA9IHN0cmV0Y2hlZFtpXTtcbiAgICAgIGlmIChvbGRDdXIgJiYgc3RyZXRjaEN1cikge1xuICAgICAgICBzcGFuczogZm9yICh2YXIgaiA9IDA7IGogPCBzdHJldGNoQ3VyLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgdmFyIHNwYW4gPSBzdHJldGNoQ3VyW2pdO1xuICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb2xkQ3VyLmxlbmd0aDsgKytrKVxuICAgICAgICAgICAgeyBpZiAob2xkQ3VyW2tdLm1hcmtlciA9PSBzcGFuLm1hcmtlcikgeyBjb250aW51ZSBzcGFucyB9IH1cbiAgICAgICAgICBvbGRDdXIucHVzaChzcGFuKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzdHJldGNoQ3VyKSB7XG4gICAgICAgIG9sZFtpXSA9IHN0cmV0Y2hDdXI7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvbGRcbiAgfVxuXG4gIC8vIFVzZWQgYm90aCB0byBwcm92aWRlIGEgSlNPTi1zYWZlIG9iamVjdCBpbiAuZ2V0SGlzdG9yeSwgYW5kLCB3aGVuXG4gIC8vIGRldGFjaGluZyBhIGRvY3VtZW50LCB0byBzcGxpdCB0aGUgaGlzdG9yeSBpbiB0d29cbiAgZnVuY3Rpb24gY29weUhpc3RvcnlBcnJheShldmVudHMsIG5ld0dyb3VwLCBpbnN0YW50aWF0ZVNlbCkge1xuICAgIHZhciBjb3B5ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudHMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBldmVudCA9IGV2ZW50c1tpXTtcbiAgICAgIGlmIChldmVudC5yYW5nZXMpIHtcbiAgICAgICAgY29weS5wdXNoKGluc3RhbnRpYXRlU2VsID8gU2VsZWN0aW9uLnByb3RvdHlwZS5kZWVwQ29weS5jYWxsKGV2ZW50KSA6IGV2ZW50KTtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIHZhciBjaGFuZ2VzID0gZXZlbnQuY2hhbmdlcywgbmV3Q2hhbmdlcyA9IFtdO1xuICAgICAgY29weS5wdXNoKHtjaGFuZ2VzOiBuZXdDaGFuZ2VzfSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNoYW5nZXMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgdmFyIGNoYW5nZSA9IGNoYW5nZXNbal0sIG0gPSAodm9pZCAwKTtcbiAgICAgICAgbmV3Q2hhbmdlcy5wdXNoKHtmcm9tOiBjaGFuZ2UuZnJvbSwgdG86IGNoYW5nZS50bywgdGV4dDogY2hhbmdlLnRleHR9KTtcbiAgICAgICAgaWYgKG5ld0dyb3VwKSB7IGZvciAodmFyIHByb3AgaW4gY2hhbmdlKSB7IGlmIChtID0gcHJvcC5tYXRjaCgvXnNwYW5zXyhcXGQrKSQvKSkge1xuICAgICAgICAgIGlmIChpbmRleE9mKG5ld0dyb3VwLCBOdW1iZXIobVsxXSkpID4gLTEpIHtcbiAgICAgICAgICAgIGxzdChuZXdDaGFuZ2VzKVtwcm9wXSA9IGNoYW5nZVtwcm9wXTtcbiAgICAgICAgICAgIGRlbGV0ZSBjaGFuZ2VbcHJvcF07XG4gICAgICAgICAgfVxuICAgICAgICB9IH0gfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29weVxuICB9XG5cbiAgLy8gVGhlICdzY3JvbGwnIHBhcmFtZXRlciBnaXZlbiB0byBtYW55IG9mIHRoZXNlIGluZGljYXRlZCB3aGV0aGVyXG4gIC8vIHRoZSBuZXcgY3Vyc29yIHBvc2l0aW9uIHNob3VsZCBiZSBzY3JvbGxlZCBpbnRvIHZpZXcgYWZ0ZXJcbiAgLy8gbW9kaWZ5aW5nIHRoZSBzZWxlY3Rpb24uXG5cbiAgLy8gSWYgc2hpZnQgaXMgaGVsZCBvciB0aGUgZXh0ZW5kIGZsYWcgaXMgc2V0LCBleHRlbmRzIGEgcmFuZ2UgdG9cbiAgLy8gaW5jbHVkZSBhIGdpdmVuIHBvc2l0aW9uIChhbmQgb3B0aW9uYWxseSBhIHNlY29uZCBwb3NpdGlvbikuXG4gIC8vIE90aGVyd2lzZSwgc2ltcGx5IHJldHVybnMgdGhlIHJhbmdlIGJldHdlZW4gdGhlIGdpdmVuIHBvc2l0aW9ucy5cbiAgLy8gVXNlZCBmb3IgY3Vyc29yIG1vdGlvbiBhbmQgc3VjaC5cbiAgZnVuY3Rpb24gZXh0ZW5kUmFuZ2UocmFuZ2UsIGhlYWQsIG90aGVyLCBleHRlbmQpIHtcbiAgICBpZiAoZXh0ZW5kKSB7XG4gICAgICB2YXIgYW5jaG9yID0gcmFuZ2UuYW5jaG9yO1xuICAgICAgaWYgKG90aGVyKSB7XG4gICAgICAgIHZhciBwb3NCZWZvcmUgPSBjbXAoaGVhZCwgYW5jaG9yKSA8IDA7XG4gICAgICAgIGlmIChwb3NCZWZvcmUgIT0gKGNtcChvdGhlciwgYW5jaG9yKSA8IDApKSB7XG4gICAgICAgICAgYW5jaG9yID0gaGVhZDtcbiAgICAgICAgICBoZWFkID0gb3RoZXI7XG4gICAgICAgIH0gZWxzZSBpZiAocG9zQmVmb3JlICE9IChjbXAoaGVhZCwgb3RoZXIpIDwgMCkpIHtcbiAgICAgICAgICBoZWFkID0gb3RoZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgUmFuZ2UoYW5jaG9yLCBoZWFkKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IFJhbmdlKG90aGVyIHx8IGhlYWQsIGhlYWQpXG4gICAgfVxuICB9XG5cbiAgLy8gRXh0ZW5kIHRoZSBwcmltYXJ5IHNlbGVjdGlvbiByYW5nZSwgZGlzY2FyZCB0aGUgcmVzdC5cbiAgZnVuY3Rpb24gZXh0ZW5kU2VsZWN0aW9uKGRvYywgaGVhZCwgb3RoZXIsIG9wdGlvbnMsIGV4dGVuZCkge1xuICAgIGlmIChleHRlbmQgPT0gbnVsbCkgeyBleHRlbmQgPSBkb2MuY20gJiYgKGRvYy5jbS5kaXNwbGF5LnNoaWZ0IHx8IGRvYy5leHRlbmQpOyB9XG4gICAgc2V0U2VsZWN0aW9uKGRvYywgbmV3IFNlbGVjdGlvbihbZXh0ZW5kUmFuZ2UoZG9jLnNlbC5wcmltYXJ5KCksIGhlYWQsIG90aGVyLCBleHRlbmQpXSwgMCksIG9wdGlvbnMpO1xuICB9XG5cbiAgLy8gRXh0ZW5kIGFsbCBzZWxlY3Rpb25zIChwb3MgaXMgYW4gYXJyYXkgb2Ygc2VsZWN0aW9ucyB3aXRoIGxlbmd0aFxuICAvLyBlcXVhbCB0aGUgbnVtYmVyIG9mIHNlbGVjdGlvbnMpXG4gIGZ1bmN0aW9uIGV4dGVuZFNlbGVjdGlvbnMoZG9jLCBoZWFkcywgb3B0aW9ucykge1xuICAgIHZhciBvdXQgPSBbXTtcbiAgICB2YXIgZXh0ZW5kID0gZG9jLmNtICYmIChkb2MuY20uZGlzcGxheS5zaGlmdCB8fCBkb2MuZXh0ZW5kKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRvYy5zZWwucmFuZ2VzLmxlbmd0aDsgaSsrKVxuICAgICAgeyBvdXRbaV0gPSBleHRlbmRSYW5nZShkb2Muc2VsLnJhbmdlc1tpXSwgaGVhZHNbaV0sIG51bGwsIGV4dGVuZCk7IH1cbiAgICB2YXIgbmV3U2VsID0gbm9ybWFsaXplU2VsZWN0aW9uKGRvYy5jbSwgb3V0LCBkb2Muc2VsLnByaW1JbmRleCk7XG4gICAgc2V0U2VsZWN0aW9uKGRvYywgbmV3U2VsLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8vIFVwZGF0ZXMgYSBzaW5nbGUgcmFuZ2UgaW4gdGhlIHNlbGVjdGlvbi5cbiAgZnVuY3Rpb24gcmVwbGFjZU9uZVNlbGVjdGlvbihkb2MsIGksIHJhbmdlLCBvcHRpb25zKSB7XG4gICAgdmFyIHJhbmdlcyA9IGRvYy5zZWwucmFuZ2VzLnNsaWNlKDApO1xuICAgIHJhbmdlc1tpXSA9IHJhbmdlO1xuICAgIHNldFNlbGVjdGlvbihkb2MsIG5vcm1hbGl6ZVNlbGVjdGlvbihkb2MuY20sIHJhbmdlcywgZG9jLnNlbC5wcmltSW5kZXgpLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8vIFJlc2V0IHRoZSBzZWxlY3Rpb24gdG8gYSBzaW5nbGUgcmFuZ2UuXG4gIGZ1bmN0aW9uIHNldFNpbXBsZVNlbGVjdGlvbihkb2MsIGFuY2hvciwgaGVhZCwgb3B0aW9ucykge1xuICAgIHNldFNlbGVjdGlvbihkb2MsIHNpbXBsZVNlbGVjdGlvbihhbmNob3IsIGhlYWQpLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8vIEdpdmUgYmVmb3JlU2VsZWN0aW9uQ2hhbmdlIGhhbmRsZXJzIGEgY2hhbmdlIHRvIGluZmx1ZW5jZSBhXG4gIC8vIHNlbGVjdGlvbiB1cGRhdGUuXG4gIGZ1bmN0aW9uIGZpbHRlclNlbGVjdGlvbkNoYW5nZShkb2MsIHNlbCwgb3B0aW9ucykge1xuICAgIHZhciBvYmogPSB7XG4gICAgICByYW5nZXM6IHNlbC5yYW5nZXMsXG4gICAgICB1cGRhdGU6IGZ1bmN0aW9uKHJhbmdlcykge1xuICAgICAgICB0aGlzLnJhbmdlcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKylcbiAgICAgICAgICB7IHRoaXMucmFuZ2VzW2ldID0gbmV3IFJhbmdlKGNsaXBQb3MoZG9jLCByYW5nZXNbaV0uYW5jaG9yKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwUG9zKGRvYywgcmFuZ2VzW2ldLmhlYWQpKTsgfVxuICAgICAgfSxcbiAgICAgIG9yaWdpbjogb3B0aW9ucyAmJiBvcHRpb25zLm9yaWdpblxuICAgIH07XG4gICAgc2lnbmFsKGRvYywgXCJiZWZvcmVTZWxlY3Rpb25DaGFuZ2VcIiwgZG9jLCBvYmopO1xuICAgIGlmIChkb2MuY20pIHsgc2lnbmFsKGRvYy5jbSwgXCJiZWZvcmVTZWxlY3Rpb25DaGFuZ2VcIiwgZG9jLmNtLCBvYmopOyB9XG4gICAgaWYgKG9iai5yYW5nZXMgIT0gc2VsLnJhbmdlcykgeyByZXR1cm4gbm9ybWFsaXplU2VsZWN0aW9uKGRvYy5jbSwgb2JqLnJhbmdlcywgb2JqLnJhbmdlcy5sZW5ndGggLSAxKSB9XG4gICAgZWxzZSB7IHJldHVybiBzZWwgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2V0U2VsZWN0aW9uUmVwbGFjZUhpc3RvcnkoZG9jLCBzZWwsIG9wdGlvbnMpIHtcbiAgICB2YXIgZG9uZSA9IGRvYy5oaXN0b3J5LmRvbmUsIGxhc3QgPSBsc3QoZG9uZSk7XG4gICAgaWYgKGxhc3QgJiYgbGFzdC5yYW5nZXMpIHtcbiAgICAgIGRvbmVbZG9uZS5sZW5ndGggLSAxXSA9IHNlbDtcbiAgICAgIHNldFNlbGVjdGlvbk5vVW5kbyhkb2MsIHNlbCwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFNlbGVjdGlvbihkb2MsIHNlbCwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2V0IGEgbmV3IHNlbGVjdGlvbi5cbiAgZnVuY3Rpb24gc2V0U2VsZWN0aW9uKGRvYywgc2VsLCBvcHRpb25zKSB7XG4gICAgc2V0U2VsZWN0aW9uTm9VbmRvKGRvYywgc2VsLCBvcHRpb25zKTtcbiAgICBhZGRTZWxlY3Rpb25Ub0hpc3RvcnkoZG9jLCBkb2Muc2VsLCBkb2MuY20gPyBkb2MuY20uY3VyT3AuaWQgOiBOYU4sIG9wdGlvbnMpO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0U2VsZWN0aW9uTm9VbmRvKGRvYywgc2VsLCBvcHRpb25zKSB7XG4gICAgaWYgKGhhc0hhbmRsZXIoZG9jLCBcImJlZm9yZVNlbGVjdGlvbkNoYW5nZVwiKSB8fCBkb2MuY20gJiYgaGFzSGFuZGxlcihkb2MuY20sIFwiYmVmb3JlU2VsZWN0aW9uQ2hhbmdlXCIpKVxuICAgICAgeyBzZWwgPSBmaWx0ZXJTZWxlY3Rpb25DaGFuZ2UoZG9jLCBzZWwsIG9wdGlvbnMpOyB9XG5cbiAgICB2YXIgYmlhcyA9IG9wdGlvbnMgJiYgb3B0aW9ucy5iaWFzIHx8XG4gICAgICAoY21wKHNlbC5wcmltYXJ5KCkuaGVhZCwgZG9jLnNlbC5wcmltYXJ5KCkuaGVhZCkgPCAwID8gLTEgOiAxKTtcbiAgICBzZXRTZWxlY3Rpb25Jbm5lcihkb2MsIHNraXBBdG9taWNJblNlbGVjdGlvbihkb2MsIHNlbCwgYmlhcywgdHJ1ZSkpO1xuXG4gICAgaWYgKCEob3B0aW9ucyAmJiBvcHRpb25zLnNjcm9sbCA9PT0gZmFsc2UpICYmIGRvYy5jbSlcbiAgICAgIHsgZW5zdXJlQ3Vyc29yVmlzaWJsZShkb2MuY20pOyB9XG4gIH1cblxuICBmdW5jdGlvbiBzZXRTZWxlY3Rpb25Jbm5lcihkb2MsIHNlbCkge1xuICAgIGlmIChzZWwuZXF1YWxzKGRvYy5zZWwpKSB7IHJldHVybiB9XG5cbiAgICBkb2Muc2VsID0gc2VsO1xuXG4gICAgaWYgKGRvYy5jbSkge1xuICAgICAgZG9jLmNtLmN1ck9wLnVwZGF0ZUlucHV0ID0gMTtcbiAgICAgIGRvYy5jbS5jdXJPcC5zZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTtcbiAgICAgIHNpZ25hbEN1cnNvckFjdGl2aXR5KGRvYy5jbSk7XG4gICAgfVxuICAgIHNpZ25hbExhdGVyKGRvYywgXCJjdXJzb3JBY3Rpdml0eVwiLCBkb2MpO1xuICB9XG5cbiAgLy8gVmVyaWZ5IHRoYXQgdGhlIHNlbGVjdGlvbiBkb2VzIG5vdCBwYXJ0aWFsbHkgc2VsZWN0IGFueSBhdG9taWNcbiAgLy8gbWFya2VkIHJhbmdlcy5cbiAgZnVuY3Rpb24gcmVDaGVja1NlbGVjdGlvbihkb2MpIHtcbiAgICBzZXRTZWxlY3Rpb25Jbm5lcihkb2MsIHNraXBBdG9taWNJblNlbGVjdGlvbihkb2MsIGRvYy5zZWwsIG51bGwsIGZhbHNlKSk7XG4gIH1cblxuICAvLyBSZXR1cm4gYSBzZWxlY3Rpb24gdGhhdCBkb2VzIG5vdCBwYXJ0aWFsbHkgc2VsZWN0IGFueSBhdG9taWNcbiAgLy8gcmFuZ2VzLlxuICBmdW5jdGlvbiBza2lwQXRvbWljSW5TZWxlY3Rpb24oZG9jLCBzZWwsIGJpYXMsIG1heUNsZWFyKSB7XG4gICAgdmFyIG91dDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbC5yYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciByYW5nZSA9IHNlbC5yYW5nZXNbaV07XG4gICAgICB2YXIgb2xkID0gc2VsLnJhbmdlcy5sZW5ndGggPT0gZG9jLnNlbC5yYW5nZXMubGVuZ3RoICYmIGRvYy5zZWwucmFuZ2VzW2ldO1xuICAgICAgdmFyIG5ld0FuY2hvciA9IHNraXBBdG9taWMoZG9jLCByYW5nZS5hbmNob3IsIG9sZCAmJiBvbGQuYW5jaG9yLCBiaWFzLCBtYXlDbGVhcik7XG4gICAgICB2YXIgbmV3SGVhZCA9IHNraXBBdG9taWMoZG9jLCByYW5nZS5oZWFkLCBvbGQgJiYgb2xkLmhlYWQsIGJpYXMsIG1heUNsZWFyKTtcbiAgICAgIGlmIChvdXQgfHwgbmV3QW5jaG9yICE9IHJhbmdlLmFuY2hvciB8fCBuZXdIZWFkICE9IHJhbmdlLmhlYWQpIHtcbiAgICAgICAgaWYgKCFvdXQpIHsgb3V0ID0gc2VsLnJhbmdlcy5zbGljZSgwLCBpKTsgfVxuICAgICAgICBvdXRbaV0gPSBuZXcgUmFuZ2UobmV3QW5jaG9yLCBuZXdIZWFkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dCA/IG5vcm1hbGl6ZVNlbGVjdGlvbihkb2MuY20sIG91dCwgc2VsLnByaW1JbmRleCkgOiBzZWxcbiAgfVxuXG4gIGZ1bmN0aW9uIHNraXBBdG9taWNJbm5lcihkb2MsIHBvcywgb2xkUG9zLCBkaXIsIG1heUNsZWFyKSB7XG4gICAgdmFyIGxpbmUgPSBnZXRMaW5lKGRvYywgcG9zLmxpbmUpO1xuICAgIGlmIChsaW5lLm1hcmtlZFNwYW5zKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgbGluZS5tYXJrZWRTcGFucy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIHNwID0gbGluZS5tYXJrZWRTcGFuc1tpXSwgbSA9IHNwLm1hcmtlcjtcblxuICAgICAgLy8gRGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBwcmV2ZW50IHRoZSBjdXJzb3IgYmVpbmcgcGxhY2VkIHRvIHRoZSBsZWZ0L3JpZ2h0IG9mIGFuIGF0b21pYyBtYXJrZXJcbiAgICAgIC8vIEhpc3RvcmljYWxseSB0aGlzIHdhcyBkZXRlcm1pbmVkIHVzaW5nIHRoZSBpbmNsdXNpdmVMZWZ0L1JpZ2h0IG9wdGlvbiwgYnV0IHRoZSBuZXcgd2F5IHRvIGNvbnRyb2wgaXRcbiAgICAgIC8vIGlzIHdpdGggc2VsZWN0TGVmdC9SaWdodFxuICAgICAgdmFyIHByZXZlbnRDdXJzb3JMZWZ0ID0gKFwic2VsZWN0TGVmdFwiIGluIG0pID8gIW0uc2VsZWN0TGVmdCA6IG0uaW5jbHVzaXZlTGVmdDtcbiAgICAgIHZhciBwcmV2ZW50Q3Vyc29yUmlnaHQgPSAoXCJzZWxlY3RSaWdodFwiIGluIG0pID8gIW0uc2VsZWN0UmlnaHQgOiBtLmluY2x1c2l2ZVJpZ2h0O1xuXG4gICAgICBpZiAoKHNwLmZyb20gPT0gbnVsbCB8fCAocHJldmVudEN1cnNvckxlZnQgPyBzcC5mcm9tIDw9IHBvcy5jaCA6IHNwLmZyb20gPCBwb3MuY2gpKSAmJlxuICAgICAgICAgIChzcC50byA9PSBudWxsIHx8IChwcmV2ZW50Q3Vyc29yUmlnaHQgPyBzcC50byA+PSBwb3MuY2ggOiBzcC50byA+IHBvcy5jaCkpKSB7XG4gICAgICAgIGlmIChtYXlDbGVhcikge1xuICAgICAgICAgIHNpZ25hbChtLCBcImJlZm9yZUN1cnNvckVudGVyXCIpO1xuICAgICAgICAgIGlmIChtLmV4cGxpY2l0bHlDbGVhcmVkKSB7XG4gICAgICAgICAgICBpZiAoIWxpbmUubWFya2VkU3BhbnMpIHsgYnJlYWsgfVxuICAgICAgICAgICAgZWxzZSB7LS1pOyBjb250aW51ZX1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtLmF0b21pYykgeyBjb250aW51ZSB9XG5cbiAgICAgICAgaWYgKG9sZFBvcykge1xuICAgICAgICAgIHZhciBuZWFyID0gbS5maW5kKGRpciA8IDAgPyAxIDogLTEpLCBkaWZmID0gKHZvaWQgMCk7XG4gICAgICAgICAgaWYgKGRpciA8IDAgPyBwcmV2ZW50Q3Vyc29yUmlnaHQgOiBwcmV2ZW50Q3Vyc29yTGVmdClcbiAgICAgICAgICAgIHsgbmVhciA9IG1vdmVQb3MoZG9jLCBuZWFyLCAtZGlyLCBuZWFyICYmIG5lYXIubGluZSA9PSBwb3MubGluZSA/IGxpbmUgOiBudWxsKTsgfVxuICAgICAgICAgIGlmIChuZWFyICYmIG5lYXIubGluZSA9PSBwb3MubGluZSAmJiAoZGlmZiA9IGNtcChuZWFyLCBvbGRQb3MpKSAmJiAoZGlyIDwgMCA/IGRpZmYgPCAwIDogZGlmZiA+IDApKVxuICAgICAgICAgICAgeyByZXR1cm4gc2tpcEF0b21pY0lubmVyKGRvYywgbmVhciwgcG9zLCBkaXIsIG1heUNsZWFyKSB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZmFyID0gbS5maW5kKGRpciA8IDAgPyAtMSA6IDEpO1xuICAgICAgICBpZiAoZGlyIDwgMCA/IHByZXZlbnRDdXJzb3JMZWZ0IDogcHJldmVudEN1cnNvclJpZ2h0KVxuICAgICAgICAgIHsgZmFyID0gbW92ZVBvcyhkb2MsIGZhciwgZGlyLCBmYXIubGluZSA9PSBwb3MubGluZSA/IGxpbmUgOiBudWxsKTsgfVxuICAgICAgICByZXR1cm4gZmFyID8gc2tpcEF0b21pY0lubmVyKGRvYywgZmFyLCBwb3MsIGRpciwgbWF5Q2xlYXIpIDogbnVsbFxuICAgICAgfVxuICAgIH0gfVxuICAgIHJldHVybiBwb3NcbiAgfVxuXG4gIC8vIEVuc3VyZSBhIGdpdmVuIHBvc2l0aW9uIGlzIG5vdCBpbnNpZGUgYW4gYXRvbWljIHJhbmdlLlxuICBmdW5jdGlvbiBza2lwQXRvbWljKGRvYywgcG9zLCBvbGRQb3MsIGJpYXMsIG1heUNsZWFyKSB7XG4gICAgdmFyIGRpciA9IGJpYXMgfHwgMTtcbiAgICB2YXIgZm91bmQgPSBza2lwQXRvbWljSW5uZXIoZG9jLCBwb3MsIG9sZFBvcywgZGlyLCBtYXlDbGVhcikgfHxcbiAgICAgICAgKCFtYXlDbGVhciAmJiBza2lwQXRvbWljSW5uZXIoZG9jLCBwb3MsIG9sZFBvcywgZGlyLCB0cnVlKSkgfHxcbiAgICAgICAgc2tpcEF0b21pY0lubmVyKGRvYywgcG9zLCBvbGRQb3MsIC1kaXIsIG1heUNsZWFyKSB8fFxuICAgICAgICAoIW1heUNsZWFyICYmIHNraXBBdG9taWNJbm5lcihkb2MsIHBvcywgb2xkUG9zLCAtZGlyLCB0cnVlKSk7XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgZG9jLmNhbnRFZGl0ID0gdHJ1ZTtcbiAgICAgIHJldHVybiBQb3MoZG9jLmZpcnN0LCAwKVxuICAgIH1cbiAgICByZXR1cm4gZm91bmRcbiAgfVxuXG4gIGZ1bmN0aW9uIG1vdmVQb3MoZG9jLCBwb3MsIGRpciwgbGluZSkge1xuICAgIGlmIChkaXIgPCAwICYmIHBvcy5jaCA9PSAwKSB7XG4gICAgICBpZiAocG9zLmxpbmUgPiBkb2MuZmlyc3QpIHsgcmV0dXJuIGNsaXBQb3MoZG9jLCBQb3MocG9zLmxpbmUgLSAxKSkgfVxuICAgICAgZWxzZSB7IHJldHVybiBudWxsIH1cbiAgICB9IGVsc2UgaWYgKGRpciA+IDAgJiYgcG9zLmNoID09IChsaW5lIHx8IGdldExpbmUoZG9jLCBwb3MubGluZSkpLnRleHQubGVuZ3RoKSB7XG4gICAgICBpZiAocG9zLmxpbmUgPCBkb2MuZmlyc3QgKyBkb2Muc2l6ZSAtIDEpIHsgcmV0dXJuIFBvcyhwb3MubGluZSArIDEsIDApIH1cbiAgICAgIGVsc2UgeyByZXR1cm4gbnVsbCB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgUG9zKHBvcy5saW5lLCBwb3MuY2ggKyBkaXIpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2VsZWN0QWxsKGNtKSB7XG4gICAgY20uc2V0U2VsZWN0aW9uKFBvcyhjbS5maXJzdExpbmUoKSwgMCksIFBvcyhjbS5sYXN0TGluZSgpKSwgc2VsX2RvbnRTY3JvbGwpO1xuICB9XG5cbiAgLy8gVVBEQVRJTkdcblxuICAvLyBBbGxvdyBcImJlZm9yZUNoYW5nZVwiIGV2ZW50IGhhbmRsZXJzIHRvIGluZmx1ZW5jZSBhIGNoYW5nZVxuICBmdW5jdGlvbiBmaWx0ZXJDaGFuZ2UoZG9jLCBjaGFuZ2UsIHVwZGF0ZSkge1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjYW5jZWxlZDogZmFsc2UsXG4gICAgICBmcm9tOiBjaGFuZ2UuZnJvbSxcbiAgICAgIHRvOiBjaGFuZ2UudG8sXG4gICAgICB0ZXh0OiBjaGFuZ2UudGV4dCxcbiAgICAgIG9yaWdpbjogY2hhbmdlLm9yaWdpbixcbiAgICAgIGNhbmNlbDogZnVuY3Rpb24gKCkgeyByZXR1cm4gb2JqLmNhbmNlbGVkID0gdHJ1ZTsgfVxuICAgIH07XG4gICAgaWYgKHVwZGF0ZSkgeyBvYmoudXBkYXRlID0gZnVuY3Rpb24gKGZyb20sIHRvLCB0ZXh0LCBvcmlnaW4pIHtcbiAgICAgIGlmIChmcm9tKSB7IG9iai5mcm9tID0gY2xpcFBvcyhkb2MsIGZyb20pOyB9XG4gICAgICBpZiAodG8pIHsgb2JqLnRvID0gY2xpcFBvcyhkb2MsIHRvKTsgfVxuICAgICAgaWYgKHRleHQpIHsgb2JqLnRleHQgPSB0ZXh0OyB9XG4gICAgICBpZiAob3JpZ2luICE9PSB1bmRlZmluZWQpIHsgb2JqLm9yaWdpbiA9IG9yaWdpbjsgfVxuICAgIH07IH1cbiAgICBzaWduYWwoZG9jLCBcImJlZm9yZUNoYW5nZVwiLCBkb2MsIG9iaik7XG4gICAgaWYgKGRvYy5jbSkgeyBzaWduYWwoZG9jLmNtLCBcImJlZm9yZUNoYW5nZVwiLCBkb2MuY20sIG9iaik7IH1cblxuICAgIGlmIChvYmouY2FuY2VsZWQpIHtcbiAgICAgIGlmIChkb2MuY20pIHsgZG9jLmNtLmN1ck9wLnVwZGF0ZUlucHV0ID0gMjsgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIHtmcm9tOiBvYmouZnJvbSwgdG86IG9iai50bywgdGV4dDogb2JqLnRleHQsIG9yaWdpbjogb2JqLm9yaWdpbn1cbiAgfVxuXG4gIC8vIEFwcGx5IGEgY2hhbmdlIHRvIGEgZG9jdW1lbnQsIGFuZCBhZGQgaXQgdG8gdGhlIGRvY3VtZW50J3NcbiAgLy8gaGlzdG9yeSwgYW5kIHByb3BhZ2F0aW5nIGl0IHRvIGFsbCBsaW5rZWQgZG9jdW1lbnRzLlxuICBmdW5jdGlvbiBtYWtlQ2hhbmdlKGRvYywgY2hhbmdlLCBpZ25vcmVSZWFkT25seSkge1xuICAgIGlmIChkb2MuY20pIHtcbiAgICAgIGlmICghZG9jLmNtLmN1ck9wKSB7IHJldHVybiBvcGVyYXRpb24oZG9jLmNtLCBtYWtlQ2hhbmdlKShkb2MsIGNoYW5nZSwgaWdub3JlUmVhZE9ubHkpIH1cbiAgICAgIGlmIChkb2MuY20uc3RhdGUuc3VwcHJlc3NFZGl0cykgeyByZXR1cm4gfVxuICAgIH1cblxuICAgIGlmIChoYXNIYW5kbGVyKGRvYywgXCJiZWZvcmVDaGFuZ2VcIikgfHwgZG9jLmNtICYmIGhhc0hhbmRsZXIoZG9jLmNtLCBcImJlZm9yZUNoYW5nZVwiKSkge1xuICAgICAgY2hhbmdlID0gZmlsdGVyQ2hhbmdlKGRvYywgY2hhbmdlLCB0cnVlKTtcbiAgICAgIGlmICghY2hhbmdlKSB7IHJldHVybiB9XG4gICAgfVxuXG4gICAgLy8gUG9zc2libHkgc3BsaXQgb3Igc3VwcHJlc3MgdGhlIHVwZGF0ZSBiYXNlZCBvbiB0aGUgcHJlc2VuY2VcbiAgICAvLyBvZiByZWFkLW9ubHkgc3BhbnMgaW4gaXRzIHJhbmdlLlxuICAgIHZhciBzcGxpdCA9IHNhd1JlYWRPbmx5U3BhbnMgJiYgIWlnbm9yZVJlYWRPbmx5ICYmIHJlbW92ZVJlYWRPbmx5UmFuZ2VzKGRvYywgY2hhbmdlLmZyb20sIGNoYW5nZS50byk7XG4gICAgaWYgKHNwbGl0KSB7XG4gICAgICBmb3IgKHZhciBpID0gc3BsaXQubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpXG4gICAgICAgIHsgbWFrZUNoYW5nZUlubmVyKGRvYywge2Zyb206IHNwbGl0W2ldLmZyb20sIHRvOiBzcGxpdFtpXS50bywgdGV4dDogaSA/IFtcIlwiXSA6IGNoYW5nZS50ZXh0LCBvcmlnaW46IGNoYW5nZS5vcmlnaW59KTsgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtYWtlQ2hhbmdlSW5uZXIoZG9jLCBjaGFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG1ha2VDaGFuZ2VJbm5lcihkb2MsIGNoYW5nZSkge1xuICAgIGlmIChjaGFuZ2UudGV4dC5sZW5ndGggPT0gMSAmJiBjaGFuZ2UudGV4dFswXSA9PSBcIlwiICYmIGNtcChjaGFuZ2UuZnJvbSwgY2hhbmdlLnRvKSA9PSAwKSB7IHJldHVybiB9XG4gICAgdmFyIHNlbEFmdGVyID0gY29tcHV0ZVNlbEFmdGVyQ2hhbmdlKGRvYywgY2hhbmdlKTtcbiAgICBhZGRDaGFuZ2VUb0hpc3RvcnkoZG9jLCBjaGFuZ2UsIHNlbEFmdGVyLCBkb2MuY20gPyBkb2MuY20uY3VyT3AuaWQgOiBOYU4pO1xuXG4gICAgbWFrZUNoYW5nZVNpbmdsZURvYyhkb2MsIGNoYW5nZSwgc2VsQWZ0ZXIsIHN0cmV0Y2hTcGFuc092ZXJDaGFuZ2UoZG9jLCBjaGFuZ2UpKTtcbiAgICB2YXIgcmViYXNlZCA9IFtdO1xuXG4gICAgbGlua2VkRG9jcyhkb2MsIGZ1bmN0aW9uIChkb2MsIHNoYXJlZEhpc3QpIHtcbiAgICAgIGlmICghc2hhcmVkSGlzdCAmJiBpbmRleE9mKHJlYmFzZWQsIGRvYy5oaXN0b3J5KSA9PSAtMSkge1xuICAgICAgICByZWJhc2VIaXN0KGRvYy5oaXN0b3J5LCBjaGFuZ2UpO1xuICAgICAgICByZWJhc2VkLnB1c2goZG9jLmhpc3RvcnkpO1xuICAgICAgfVxuICAgICAgbWFrZUNoYW5nZVNpbmdsZURvYyhkb2MsIGNoYW5nZSwgbnVsbCwgc3RyZXRjaFNwYW5zT3ZlckNoYW5nZShkb2MsIGNoYW5nZSkpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gUmV2ZXJ0IGEgY2hhbmdlIHN0b3JlZCBpbiBhIGRvY3VtZW50J3MgaGlzdG9yeS5cbiAgZnVuY3Rpb24gbWFrZUNoYW5nZUZyb21IaXN0b3J5KGRvYywgdHlwZSwgYWxsb3dTZWxlY3Rpb25Pbmx5KSB7XG4gICAgdmFyIHN1cHByZXNzID0gZG9jLmNtICYmIGRvYy5jbS5zdGF0ZS5zdXBwcmVzc0VkaXRzO1xuICAgIGlmIChzdXBwcmVzcyAmJiAhYWxsb3dTZWxlY3Rpb25Pbmx5KSB7IHJldHVybiB9XG5cbiAgICB2YXIgaGlzdCA9IGRvYy5oaXN0b3J5LCBldmVudCwgc2VsQWZ0ZXIgPSBkb2Muc2VsO1xuICAgIHZhciBzb3VyY2UgPSB0eXBlID09IFwidW5kb1wiID8gaGlzdC5kb25lIDogaGlzdC51bmRvbmUsIGRlc3QgPSB0eXBlID09IFwidW5kb1wiID8gaGlzdC51bmRvbmUgOiBoaXN0LmRvbmU7XG5cbiAgICAvLyBWZXJpZnkgdGhhdCB0aGVyZSBpcyBhIHVzZWFibGUgZXZlbnQgKHNvIHRoYXQgY3RybC16IHdvbid0XG4gICAgLy8gbmVlZGxlc3NseSBjbGVhciBzZWxlY3Rpb24gZXZlbnRzKVxuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKDsgaSA8IHNvdXJjZS5sZW5ndGg7IGkrKykge1xuICAgICAgZXZlbnQgPSBzb3VyY2VbaV07XG4gICAgICBpZiAoYWxsb3dTZWxlY3Rpb25Pbmx5ID8gZXZlbnQucmFuZ2VzICYmICFldmVudC5lcXVhbHMoZG9jLnNlbCkgOiAhZXZlbnQucmFuZ2VzKVxuICAgICAgICB7IGJyZWFrIH1cbiAgICB9XG4gICAgaWYgKGkgPT0gc291cmNlLmxlbmd0aCkgeyByZXR1cm4gfVxuICAgIGhpc3QubGFzdE9yaWdpbiA9IGhpc3QubGFzdFNlbE9yaWdpbiA9IG51bGw7XG5cbiAgICBmb3IgKDs7KSB7XG4gICAgICBldmVudCA9IHNvdXJjZS5wb3AoKTtcbiAgICAgIGlmIChldmVudC5yYW5nZXMpIHtcbiAgICAgICAgcHVzaFNlbGVjdGlvblRvSGlzdG9yeShldmVudCwgZGVzdCk7XG4gICAgICAgIGlmIChhbGxvd1NlbGVjdGlvbk9ubHkgJiYgIWV2ZW50LmVxdWFscyhkb2Muc2VsKSkge1xuICAgICAgICAgIHNldFNlbGVjdGlvbihkb2MsIGV2ZW50LCB7Y2xlYXJSZWRvOiBmYWxzZX0pO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHNlbEFmdGVyID0gZXZlbnQ7XG4gICAgICB9IGVsc2UgaWYgKHN1cHByZXNzKSB7XG4gICAgICAgIHNvdXJjZS5wdXNoKGV2ZW50KTtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9IGVsc2UgeyBicmVhayB9XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgdXAgYSByZXZlcnNlIGNoYW5nZSBvYmplY3QgdG8gYWRkIHRvIHRoZSBvcHBvc2l0ZSBoaXN0b3J5XG4gICAgLy8gc3RhY2sgKHJlZG8gd2hlbiB1bmRvaW5nLCBhbmQgdmljZSB2ZXJzYSkuXG4gICAgdmFyIGFudGlDaGFuZ2VzID0gW107XG4gICAgcHVzaFNlbGVjdGlvblRvSGlzdG9yeShzZWxBZnRlciwgZGVzdCk7XG4gICAgZGVzdC5wdXNoKHtjaGFuZ2VzOiBhbnRpQ2hhbmdlcywgZ2VuZXJhdGlvbjogaGlzdC5nZW5lcmF0aW9ufSk7XG4gICAgaGlzdC5nZW5lcmF0aW9uID0gZXZlbnQuZ2VuZXJhdGlvbiB8fCArK2hpc3QubWF4R2VuZXJhdGlvbjtcblxuICAgIHZhciBmaWx0ZXIgPSBoYXNIYW5kbGVyKGRvYywgXCJiZWZvcmVDaGFuZ2VcIikgfHwgZG9jLmNtICYmIGhhc0hhbmRsZXIoZG9jLmNtLCBcImJlZm9yZUNoYW5nZVwiKTtcblxuICAgIHZhciBsb29wID0gZnVuY3Rpb24gKCBpICkge1xuICAgICAgdmFyIGNoYW5nZSA9IGV2ZW50LmNoYW5nZXNbaV07XG4gICAgICBjaGFuZ2Uub3JpZ2luID0gdHlwZTtcbiAgICAgIGlmIChmaWx0ZXIgJiYgIWZpbHRlckNoYW5nZShkb2MsIGNoYW5nZSwgZmFsc2UpKSB7XG4gICAgICAgIHNvdXJjZS5sZW5ndGggPSAwO1xuICAgICAgICByZXR1cm4ge31cbiAgICAgIH1cblxuICAgICAgYW50aUNoYW5nZXMucHVzaChoaXN0b3J5Q2hhbmdlRnJvbUNoYW5nZShkb2MsIGNoYW5nZSkpO1xuXG4gICAgICB2YXIgYWZ0ZXIgPSBpID8gY29tcHV0ZVNlbEFmdGVyQ2hhbmdlKGRvYywgY2hhbmdlKSA6IGxzdChzb3VyY2UpO1xuICAgICAgbWFrZUNoYW5nZVNpbmdsZURvYyhkb2MsIGNoYW5nZSwgYWZ0ZXIsIG1lcmdlT2xkU3BhbnMoZG9jLCBjaGFuZ2UpKTtcbiAgICAgIGlmICghaSAmJiBkb2MuY20pIHsgZG9jLmNtLnNjcm9sbEludG9WaWV3KHtmcm9tOiBjaGFuZ2UuZnJvbSwgdG86IGNoYW5nZUVuZChjaGFuZ2UpfSk7IH1cbiAgICAgIHZhciByZWJhc2VkID0gW107XG5cbiAgICAgIC8vIFByb3BhZ2F0ZSB0byB0aGUgbGlua2VkIGRvY3VtZW50c1xuICAgICAgbGlua2VkRG9jcyhkb2MsIGZ1bmN0aW9uIChkb2MsIHNoYXJlZEhpc3QpIHtcbiAgICAgICAgaWYgKCFzaGFyZWRIaXN0ICYmIGluZGV4T2YocmViYXNlZCwgZG9jLmhpc3RvcnkpID09IC0xKSB7XG4gICAgICAgICAgcmViYXNlSGlzdChkb2MuaGlzdG9yeSwgY2hhbmdlKTtcbiAgICAgICAgICByZWJhc2VkLnB1c2goZG9jLmhpc3RvcnkpO1xuICAgICAgICB9XG4gICAgICAgIG1ha2VDaGFuZ2VTaW5nbGVEb2MoZG9jLCBjaGFuZ2UsIG51bGwsIG1lcmdlT2xkU3BhbnMoZG9jLCBjaGFuZ2UpKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBmb3IgKHZhciBpJDEgPSBldmVudC5jaGFuZ2VzLmxlbmd0aCAtIDE7IGkkMSA+PSAwOyAtLWkkMSkge1xuICAgICAgdmFyIHJldHVybmVkID0gbG9vcCggaSQxICk7XG5cbiAgICAgIGlmICggcmV0dXJuZWQgKSByZXR1cm4gcmV0dXJuZWQudjtcbiAgICB9XG4gIH1cblxuICAvLyBTdWItdmlld3MgbmVlZCB0aGVpciBsaW5lIG51bWJlcnMgc2hpZnRlZCB3aGVuIHRleHQgaXMgYWRkZWRcbiAgLy8gYWJvdmUgb3IgYmVsb3cgdGhlbSBpbiB0aGUgcGFyZW50IGRvY3VtZW50LlxuICBmdW5jdGlvbiBzaGlmdERvYyhkb2MsIGRpc3RhbmNlKSB7XG4gICAgaWYgKGRpc3RhbmNlID09IDApIHsgcmV0dXJuIH1cbiAgICBkb2MuZmlyc3QgKz0gZGlzdGFuY2U7XG4gICAgZG9jLnNlbCA9IG5ldyBTZWxlY3Rpb24obWFwKGRvYy5zZWwucmFuZ2VzLCBmdW5jdGlvbiAocmFuZ2UpIHsgcmV0dXJuIG5ldyBSYW5nZShcbiAgICAgIFBvcyhyYW5nZS5hbmNob3IubGluZSArIGRpc3RhbmNlLCByYW5nZS5hbmNob3IuY2gpLFxuICAgICAgUG9zKHJhbmdlLmhlYWQubGluZSArIGRpc3RhbmNlLCByYW5nZS5oZWFkLmNoKVxuICAgICk7IH0pLCBkb2Muc2VsLnByaW1JbmRleCk7XG4gICAgaWYgKGRvYy5jbSkge1xuICAgICAgcmVnQ2hhbmdlKGRvYy5jbSwgZG9jLmZpcnN0LCBkb2MuZmlyc3QgLSBkaXN0YW5jZSwgZGlzdGFuY2UpO1xuICAgICAgZm9yICh2YXIgZCA9IGRvYy5jbS5kaXNwbGF5LCBsID0gZC52aWV3RnJvbTsgbCA8IGQudmlld1RvOyBsKyspXG4gICAgICAgIHsgcmVnTGluZUNoYW5nZShkb2MuY20sIGwsIFwiZ3V0dGVyXCIpOyB9XG4gICAgfVxuICB9XG5cbiAgLy8gTW9yZSBsb3dlci1sZXZlbCBjaGFuZ2UgZnVuY3Rpb24sIGhhbmRsaW5nIG9ubHkgYSBzaW5nbGUgZG9jdW1lbnRcbiAgLy8gKG5vdCBsaW5rZWQgb25lcykuXG4gIGZ1bmN0aW9uIG1ha2VDaGFuZ2VTaW5nbGVEb2MoZG9jLCBjaGFuZ2UsIHNlbEFmdGVyLCBzcGFucykge1xuICAgIGlmIChkb2MuY20gJiYgIWRvYy5jbS5jdXJPcClcbiAgICAgIHsgcmV0dXJuIG9wZXJhdGlvbihkb2MuY20sIG1ha2VDaGFuZ2VTaW5nbGVEb2MpKGRvYywgY2hhbmdlLCBzZWxBZnRlciwgc3BhbnMpIH1cblxuICAgIGlmIChjaGFuZ2UudG8ubGluZSA8IGRvYy5maXJzdCkge1xuICAgICAgc2hpZnREb2MoZG9jLCBjaGFuZ2UudGV4dC5sZW5ndGggLSAxIC0gKGNoYW5nZS50by5saW5lIC0gY2hhbmdlLmZyb20ubGluZSkpO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjaGFuZ2UuZnJvbS5saW5lID4gZG9jLmxhc3RMaW5lKCkpIHsgcmV0dXJuIH1cblxuICAgIC8vIENsaXAgdGhlIGNoYW5nZSB0byB0aGUgc2l6ZSBvZiB0aGlzIGRvY1xuICAgIGlmIChjaGFuZ2UuZnJvbS5saW5lIDwgZG9jLmZpcnN0KSB7XG4gICAgICB2YXIgc2hpZnQgPSBjaGFuZ2UudGV4dC5sZW5ndGggLSAxIC0gKGRvYy5maXJzdCAtIGNoYW5nZS5mcm9tLmxpbmUpO1xuICAgICAgc2hpZnREb2MoZG9jLCBzaGlmdCk7XG4gICAgICBjaGFuZ2UgPSB7ZnJvbTogUG9zKGRvYy5maXJzdCwgMCksIHRvOiBQb3MoY2hhbmdlLnRvLmxpbmUgKyBzaGlmdCwgY2hhbmdlLnRvLmNoKSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBbbHN0KGNoYW5nZS50ZXh0KV0sIG9yaWdpbjogY2hhbmdlLm9yaWdpbn07XG4gICAgfVxuICAgIHZhciBsYXN0ID0gZG9jLmxhc3RMaW5lKCk7XG4gICAgaWYgKGNoYW5nZS50by5saW5lID4gbGFzdCkge1xuICAgICAgY2hhbmdlID0ge2Zyb206IGNoYW5nZS5mcm9tLCB0bzogUG9zKGxhc3QsIGdldExpbmUoZG9jLCBsYXN0KS50ZXh0Lmxlbmd0aCksXG4gICAgICAgICAgICAgICAgdGV4dDogW2NoYW5nZS50ZXh0WzBdXSwgb3JpZ2luOiBjaGFuZ2Uub3JpZ2lufTtcbiAgICB9XG5cbiAgICBjaGFuZ2UucmVtb3ZlZCA9IGdldEJldHdlZW4oZG9jLCBjaGFuZ2UuZnJvbSwgY2hhbmdlLnRvKTtcblxuICAgIGlmICghc2VsQWZ0ZXIpIHsgc2VsQWZ0ZXIgPSBjb21wdXRlU2VsQWZ0ZXJDaGFuZ2UoZG9jLCBjaGFuZ2UpOyB9XG4gICAgaWYgKGRvYy5jbSkgeyBtYWtlQ2hhbmdlU2luZ2xlRG9jSW5FZGl0b3IoZG9jLmNtLCBjaGFuZ2UsIHNwYW5zKTsgfVxuICAgIGVsc2UgeyB1cGRhdGVEb2MoZG9jLCBjaGFuZ2UsIHNwYW5zKTsgfVxuICAgIHNldFNlbGVjdGlvbk5vVW5kbyhkb2MsIHNlbEFmdGVyLCBzZWxfZG9udFNjcm9sbCk7XG5cbiAgICBpZiAoZG9jLmNhbnRFZGl0ICYmIHNraXBBdG9taWMoZG9jLCBQb3MoZG9jLmZpcnN0TGluZSgpLCAwKSkpXG4gICAgICB7IGRvYy5jYW50RWRpdCA9IGZhbHNlOyB9XG4gIH1cblxuICAvLyBIYW5kbGUgdGhlIGludGVyYWN0aW9uIG9mIGEgY2hhbmdlIHRvIGEgZG9jdW1lbnQgd2l0aCB0aGUgZWRpdG9yXG4gIC8vIHRoYXQgdGhpcyBkb2N1bWVudCBpcyBwYXJ0IG9mLlxuICBmdW5jdGlvbiBtYWtlQ2hhbmdlU2luZ2xlRG9jSW5FZGl0b3IoY20sIGNoYW5nZSwgc3BhbnMpIHtcbiAgICB2YXIgZG9jID0gY20uZG9jLCBkaXNwbGF5ID0gY20uZGlzcGxheSwgZnJvbSA9IGNoYW5nZS5mcm9tLCB0byA9IGNoYW5nZS50bztcblxuICAgIHZhciByZWNvbXB1dGVNYXhMZW5ndGggPSBmYWxzZSwgY2hlY2tXaWR0aFN0YXJ0ID0gZnJvbS5saW5lO1xuICAgIGlmICghY20ub3B0aW9ucy5saW5lV3JhcHBpbmcpIHtcbiAgICAgIGNoZWNrV2lkdGhTdGFydCA9IGxpbmVObyh2aXN1YWxMaW5lKGdldExpbmUoZG9jLCBmcm9tLmxpbmUpKSk7XG4gICAgICBkb2MuaXRlcihjaGVja1dpZHRoU3RhcnQsIHRvLmxpbmUgKyAxLCBmdW5jdGlvbiAobGluZSkge1xuICAgICAgICBpZiAobGluZSA9PSBkaXNwbGF5Lm1heExpbmUpIHtcbiAgICAgICAgICByZWNvbXB1dGVNYXhMZW5ndGggPSB0cnVlO1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChkb2Muc2VsLmNvbnRhaW5zKGNoYW5nZS5mcm9tLCBjaGFuZ2UudG8pID4gLTEpXG4gICAgICB7IHNpZ25hbEN1cnNvckFjdGl2aXR5KGNtKTsgfVxuXG4gICAgdXBkYXRlRG9jKGRvYywgY2hhbmdlLCBzcGFucywgZXN0aW1hdGVIZWlnaHQoY20pKTtcblxuICAgIGlmICghY20ub3B0aW9ucy5saW5lV3JhcHBpbmcpIHtcbiAgICAgIGRvYy5pdGVyKGNoZWNrV2lkdGhTdGFydCwgZnJvbS5saW5lICsgY2hhbmdlLnRleHQubGVuZ3RoLCBmdW5jdGlvbiAobGluZSkge1xuICAgICAgICB2YXIgbGVuID0gbGluZUxlbmd0aChsaW5lKTtcbiAgICAgICAgaWYgKGxlbiA+IGRpc3BsYXkubWF4TGluZUxlbmd0aCkge1xuICAgICAgICAgIGRpc3BsYXkubWF4TGluZSA9IGxpbmU7XG4gICAgICAgICAgZGlzcGxheS5tYXhMaW5lTGVuZ3RoID0gbGVuO1xuICAgICAgICAgIGRpc3BsYXkubWF4TGluZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgIHJlY29tcHV0ZU1heExlbmd0aCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmIChyZWNvbXB1dGVNYXhMZW5ndGgpIHsgY20uY3VyT3AudXBkYXRlTWF4TGluZSA9IHRydWU7IH1cbiAgICB9XG5cbiAgICByZXRyZWF0RnJvbnRpZXIoZG9jLCBmcm9tLmxpbmUpO1xuICAgIHN0YXJ0V29ya2VyKGNtLCA0MDApO1xuXG4gICAgdmFyIGxlbmRpZmYgPSBjaGFuZ2UudGV4dC5sZW5ndGggLSAodG8ubGluZSAtIGZyb20ubGluZSkgLSAxO1xuICAgIC8vIFJlbWVtYmVyIHRoYXQgdGhlc2UgbGluZXMgY2hhbmdlZCwgZm9yIHVwZGF0aW5nIHRoZSBkaXNwbGF5XG4gICAgaWYgKGNoYW5nZS5mdWxsKVxuICAgICAgeyByZWdDaGFuZ2UoY20pOyB9XG4gICAgZWxzZSBpZiAoZnJvbS5saW5lID09IHRvLmxpbmUgJiYgY2hhbmdlLnRleHQubGVuZ3RoID09IDEgJiYgIWlzV2hvbGVMaW5lVXBkYXRlKGNtLmRvYywgY2hhbmdlKSlcbiAgICAgIHsgcmVnTGluZUNoYW5nZShjbSwgZnJvbS5saW5lLCBcInRleHRcIik7IH1cbiAgICBlbHNlXG4gICAgICB7IHJlZ0NoYW5nZShjbSwgZnJvbS5saW5lLCB0by5saW5lICsgMSwgbGVuZGlmZik7IH1cblxuICAgIHZhciBjaGFuZ2VzSGFuZGxlciA9IGhhc0hhbmRsZXIoY20sIFwiY2hhbmdlc1wiKSwgY2hhbmdlSGFuZGxlciA9IGhhc0hhbmRsZXIoY20sIFwiY2hhbmdlXCIpO1xuICAgIGlmIChjaGFuZ2VIYW5kbGVyIHx8IGNoYW5nZXNIYW5kbGVyKSB7XG4gICAgICB2YXIgb2JqID0ge1xuICAgICAgICBmcm9tOiBmcm9tLCB0bzogdG8sXG4gICAgICAgIHRleHQ6IGNoYW5nZS50ZXh0LFxuICAgICAgICByZW1vdmVkOiBjaGFuZ2UucmVtb3ZlZCxcbiAgICAgICAgb3JpZ2luOiBjaGFuZ2Uub3JpZ2luXG4gICAgICB9O1xuICAgICAgaWYgKGNoYW5nZUhhbmRsZXIpIHsgc2lnbmFsTGF0ZXIoY20sIFwiY2hhbmdlXCIsIGNtLCBvYmopOyB9XG4gICAgICBpZiAoY2hhbmdlc0hhbmRsZXIpIHsgKGNtLmN1ck9wLmNoYW5nZU9ianMgfHwgKGNtLmN1ck9wLmNoYW5nZU9ianMgPSBbXSkpLnB1c2gob2JqKTsgfVxuICAgIH1cbiAgICBjbS5kaXNwbGF5LnNlbEZvckNvbnRleHRNZW51ID0gbnVsbDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlcGxhY2VSYW5nZShkb2MsIGNvZGUsIGZyb20sIHRvLCBvcmlnaW4pIHtcbiAgICB2YXIgYXNzaWduO1xuXG4gICAgaWYgKCF0bykgeyB0byA9IGZyb207IH1cbiAgICBpZiAoY21wKHRvLCBmcm9tKSA8IDApIHsgKGFzc2lnbiA9IFt0bywgZnJvbV0sIGZyb20gPSBhc3NpZ25bMF0sIHRvID0gYXNzaWduWzFdKTsgfVxuICAgIGlmICh0eXBlb2YgY29kZSA9PSBcInN0cmluZ1wiKSB7IGNvZGUgPSBkb2Muc3BsaXRMaW5lcyhjb2RlKTsgfVxuICAgIG1ha2VDaGFuZ2UoZG9jLCB7ZnJvbTogZnJvbSwgdG86IHRvLCB0ZXh0OiBjb2RlLCBvcmlnaW46IG9yaWdpbn0pO1xuICB9XG5cbiAgLy8gUmViYXNpbmcvcmVzZXR0aW5nIGhpc3RvcnkgdG8gZGVhbCB3aXRoIGV4dGVybmFsbHktc291cmNlZCBjaGFuZ2VzXG5cbiAgZnVuY3Rpb24gcmViYXNlSGlzdFNlbFNpbmdsZShwb3MsIGZyb20sIHRvLCBkaWZmKSB7XG4gICAgaWYgKHRvIDwgcG9zLmxpbmUpIHtcbiAgICAgIHBvcy5saW5lICs9IGRpZmY7XG4gICAgfSBlbHNlIGlmIChmcm9tIDwgcG9zLmxpbmUpIHtcbiAgICAgIHBvcy5saW5lID0gZnJvbTtcbiAgICAgIHBvcy5jaCA9IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gVHJpZXMgdG8gcmViYXNlIGFuIGFycmF5IG9mIGhpc3RvcnkgZXZlbnRzIGdpdmVuIGEgY2hhbmdlIGluIHRoZVxuICAvLyBkb2N1bWVudC4gSWYgdGhlIGNoYW5nZSB0b3VjaGVzIHRoZSBzYW1lIGxpbmVzIGFzIHRoZSBldmVudCwgdGhlXG4gIC8vIGV2ZW50LCBhbmQgZXZlcnl0aGluZyAnYmVoaW5kJyBpdCwgaXMgZGlzY2FyZGVkLiBJZiB0aGUgY2hhbmdlIGlzXG4gIC8vIGJlZm9yZSB0aGUgZXZlbnQsIHRoZSBldmVudCdzIHBvc2l0aW9ucyBhcmUgdXBkYXRlZC4gVXNlcyBhXG4gIC8vIGNvcHktb24td3JpdGUgc2NoZW1lIGZvciB0aGUgcG9zaXRpb25zLCB0byBhdm9pZCBoYXZpbmcgdG9cbiAgLy8gcmVhbGxvY2F0ZSB0aGVtIGFsbCBvbiBldmVyeSByZWJhc2UsIGJ1dCBhbHNvIGF2b2lkIHByb2JsZW1zIHdpdGhcbiAgLy8gc2hhcmVkIHBvc2l0aW9uIG9iamVjdHMgYmVpbmcgdW5zYWZlbHkgdXBkYXRlZC5cbiAgZnVuY3Rpb24gcmViYXNlSGlzdEFycmF5KGFycmF5LCBmcm9tLCB0bywgZGlmZikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBzdWIgPSBhcnJheVtpXSwgb2sgPSB0cnVlO1xuICAgICAgaWYgKHN1Yi5yYW5nZXMpIHtcbiAgICAgICAgaWYgKCFzdWIuY29waWVkKSB7IHN1YiA9IGFycmF5W2ldID0gc3ViLmRlZXBDb3B5KCk7IHN1Yi5jb3BpZWQgPSB0cnVlOyB9XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc3ViLnJhbmdlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIHJlYmFzZUhpc3RTZWxTaW5nbGUoc3ViLnJhbmdlc1tqXS5hbmNob3IsIGZyb20sIHRvLCBkaWZmKTtcbiAgICAgICAgICByZWJhc2VIaXN0U2VsU2luZ2xlKHN1Yi5yYW5nZXNbal0uaGVhZCwgZnJvbSwgdG8sIGRpZmYpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBmb3IgKHZhciBqJDEgPSAwOyBqJDEgPCBzdWIuY2hhbmdlcy5sZW5ndGg7ICsraiQxKSB7XG4gICAgICAgIHZhciBjdXIgPSBzdWIuY2hhbmdlc1tqJDFdO1xuICAgICAgICBpZiAodG8gPCBjdXIuZnJvbS5saW5lKSB7XG4gICAgICAgICAgY3VyLmZyb20gPSBQb3MoY3VyLmZyb20ubGluZSArIGRpZmYsIGN1ci5mcm9tLmNoKTtcbiAgICAgICAgICBjdXIudG8gPSBQb3MoY3VyLnRvLmxpbmUgKyBkaWZmLCBjdXIudG8uY2gpO1xuICAgICAgICB9IGVsc2UgaWYgKGZyb20gPD0gY3VyLnRvLmxpbmUpIHtcbiAgICAgICAgICBvayA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghb2spIHtcbiAgICAgICAgYXJyYXkuc3BsaWNlKDAsIGkgKyAxKTtcbiAgICAgICAgaSA9IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmViYXNlSGlzdChoaXN0LCBjaGFuZ2UpIHtcbiAgICB2YXIgZnJvbSA9IGNoYW5nZS5mcm9tLmxpbmUsIHRvID0gY2hhbmdlLnRvLmxpbmUsIGRpZmYgPSBjaGFuZ2UudGV4dC5sZW5ndGggLSAodG8gLSBmcm9tKSAtIDE7XG4gICAgcmViYXNlSGlzdEFycmF5KGhpc3QuZG9uZSwgZnJvbSwgdG8sIGRpZmYpO1xuICAgIHJlYmFzZUhpc3RBcnJheShoaXN0LnVuZG9uZSwgZnJvbSwgdG8sIGRpZmYpO1xuICB9XG5cbiAgLy8gVXRpbGl0eSBmb3IgYXBwbHlpbmcgYSBjaGFuZ2UgdG8gYSBsaW5lIGJ5IGhhbmRsZSBvciBudW1iZXIsXG4gIC8vIHJldHVybmluZyB0aGUgbnVtYmVyIGFuZCBvcHRpb25hbGx5IHJlZ2lzdGVyaW5nIHRoZSBsaW5lIGFzXG4gIC8vIGNoYW5nZWQuXG4gIGZ1bmN0aW9uIGNoYW5nZUxpbmUoZG9jLCBoYW5kbGUsIGNoYW5nZVR5cGUsIG9wKSB7XG4gICAgdmFyIG5vID0gaGFuZGxlLCBsaW5lID0gaGFuZGxlO1xuICAgIGlmICh0eXBlb2YgaGFuZGxlID09IFwibnVtYmVyXCIpIHsgbGluZSA9IGdldExpbmUoZG9jLCBjbGlwTGluZShkb2MsIGhhbmRsZSkpOyB9XG4gICAgZWxzZSB7IG5vID0gbGluZU5vKGhhbmRsZSk7IH1cbiAgICBpZiAobm8gPT0gbnVsbCkgeyByZXR1cm4gbnVsbCB9XG4gICAgaWYgKG9wKGxpbmUsIG5vKSAmJiBkb2MuY20pIHsgcmVnTGluZUNoYW5nZShkb2MuY20sIG5vLCBjaGFuZ2VUeXBlKTsgfVxuICAgIHJldHVybiBsaW5lXG4gIH1cblxuICAvLyBUaGUgZG9jdW1lbnQgaXMgcmVwcmVzZW50ZWQgYXMgYSBCVHJlZSBjb25zaXN0aW5nIG9mIGxlYXZlcywgd2l0aFxuICAvLyBjaHVuayBvZiBsaW5lcyBpbiB0aGVtLCBhbmQgYnJhbmNoZXMsIHdpdGggdXAgdG8gdGVuIGxlYXZlcyBvclxuICAvLyBvdGhlciBicmFuY2ggbm9kZXMgYmVsb3cgdGhlbS4gVGhlIHRvcCBub2RlIGlzIGFsd2F5cyBhIGJyYW5jaFxuICAvLyBub2RlLCBhbmQgaXMgdGhlIGRvY3VtZW50IG9iamVjdCBpdHNlbGYgKG1lYW5pbmcgaXQgaGFzXG4gIC8vIGFkZGl0aW9uYWwgbWV0aG9kcyBhbmQgcHJvcGVydGllcykuXG4gIC8vXG4gIC8vIEFsbCBub2RlcyBoYXZlIHBhcmVudCBsaW5rcy4gVGhlIHRyZWUgaXMgdXNlZCBib3RoIHRvIGdvIGZyb21cbiAgLy8gbGluZSBudW1iZXJzIHRvIGxpbmUgb2JqZWN0cywgYW5kIHRvIGdvIGZyb20gb2JqZWN0cyB0byBudW1iZXJzLlxuICAvLyBJdCBhbHNvIGluZGV4ZXMgYnkgaGVpZ2h0LCBhbmQgaXMgdXNlZCB0byBjb252ZXJ0IGJldHdlZW4gaGVpZ2h0XG4gIC8vIGFuZCBsaW5lIG9iamVjdCwgYW5kIHRvIGZpbmQgdGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgZG9jdW1lbnQuXG4gIC8vXG4gIC8vIFNlZSBhbHNvIGh0dHA6Ly9tYXJpam5oYXZlcmJla2UubmwvYmxvZy9jb2RlbWlycm9yLWxpbmUtdHJlZS5odG1sXG5cbiAgZnVuY3Rpb24gTGVhZkNodW5rKGxpbmVzKSB7XG4gICAgdGhpcy5saW5lcyA9IGxpbmVzO1xuICAgIHRoaXMucGFyZW50ID0gbnVsbDtcbiAgICB2YXIgaGVpZ2h0ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgKytpKSB7XG4gICAgICBsaW5lc1tpXS5wYXJlbnQgPSB0aGlzO1xuICAgICAgaGVpZ2h0ICs9IGxpbmVzW2ldLmhlaWdodDtcbiAgICB9XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICBMZWFmQ2h1bmsucHJvdG90eXBlID0ge1xuICAgIGNodW5rU2l6ZTogZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLmxpbmVzLmxlbmd0aCB9LFxuXG4gICAgLy8gUmVtb3ZlIHRoZSBuIGxpbmVzIGF0IG9mZnNldCAnYXQnLlxuICAgIHJlbW92ZUlubmVyOiBmdW5jdGlvbihhdCwgbikge1xuICAgICAgZm9yICh2YXIgaSA9IGF0LCBlID0gYXQgKyBuOyBpIDwgZTsgKytpKSB7XG4gICAgICAgIHZhciBsaW5lID0gdGhpcy5saW5lc1tpXTtcbiAgICAgICAgdGhpcy5oZWlnaHQgLT0gbGluZS5oZWlnaHQ7XG4gICAgICAgIGNsZWFuVXBMaW5lKGxpbmUpO1xuICAgICAgICBzaWduYWxMYXRlcihsaW5lLCBcImRlbGV0ZVwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubGluZXMuc3BsaWNlKGF0LCBuKTtcbiAgICB9LFxuXG4gICAgLy8gSGVscGVyIHVzZWQgdG8gY29sbGFwc2UgYSBzbWFsbCBicmFuY2ggaW50byBhIHNpbmdsZSBsZWFmLlxuICAgIGNvbGxhcHNlOiBmdW5jdGlvbihsaW5lcykge1xuICAgICAgbGluZXMucHVzaC5hcHBseShsaW5lcywgdGhpcy5saW5lcyk7XG4gICAgfSxcblxuICAgIC8vIEluc2VydCB0aGUgZ2l2ZW4gYXJyYXkgb2YgbGluZXMgYXQgb2Zmc2V0ICdhdCcsIGNvdW50IHRoZW0gYXNcbiAgICAvLyBoYXZpbmcgdGhlIGdpdmVuIGhlaWdodC5cbiAgICBpbnNlcnRJbm5lcjogZnVuY3Rpb24oYXQsIGxpbmVzLCBoZWlnaHQpIHtcbiAgICAgIHRoaXMuaGVpZ2h0ICs9IGhlaWdodDtcbiAgICAgIHRoaXMubGluZXMgPSB0aGlzLmxpbmVzLnNsaWNlKDAsIGF0KS5jb25jYXQobGluZXMpLmNvbmNhdCh0aGlzLmxpbmVzLnNsaWNlKGF0KSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgKytpKSB7IGxpbmVzW2ldLnBhcmVudCA9IHRoaXM7IH1cbiAgICB9LFxuXG4gICAgLy8gVXNlZCB0byBpdGVyYXRlIG92ZXIgYSBwYXJ0IG9mIHRoZSB0cmVlLlxuICAgIGl0ZXJOOiBmdW5jdGlvbihhdCwgbiwgb3ApIHtcbiAgICAgIGZvciAodmFyIGUgPSBhdCArIG47IGF0IDwgZTsgKythdClcbiAgICAgICAgeyBpZiAob3AodGhpcy5saW5lc1thdF0pKSB7IHJldHVybiB0cnVlIH0gfVxuICAgIH1cbiAgfTtcblxuICBmdW5jdGlvbiBCcmFuY2hDaHVuayhjaGlsZHJlbikge1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICB2YXIgc2l6ZSA9IDAsIGhlaWdodCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGNoID0gY2hpbGRyZW5baV07XG4gICAgICBzaXplICs9IGNoLmNodW5rU2l6ZSgpOyBoZWlnaHQgKz0gY2guaGVpZ2h0O1xuICAgICAgY2gucGFyZW50ID0gdGhpcztcbiAgICB9XG4gICAgdGhpcy5zaXplID0gc2l6ZTtcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICB0aGlzLnBhcmVudCA9IG51bGw7XG4gIH1cblxuICBCcmFuY2hDaHVuay5wcm90b3R5cGUgPSB7XG4gICAgY2h1bmtTaXplOiBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMuc2l6ZSB9LFxuXG4gICAgcmVtb3ZlSW5uZXI6IGZ1bmN0aW9uKGF0LCBuKSB7XG4gICAgICB0aGlzLnNpemUgLT0gbjtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmNoaWxkcmVuW2ldLCBzeiA9IGNoaWxkLmNodW5rU2l6ZSgpO1xuICAgICAgICBpZiAoYXQgPCBzeikge1xuICAgICAgICAgIHZhciBybSA9IE1hdGgubWluKG4sIHN6IC0gYXQpLCBvbGRIZWlnaHQgPSBjaGlsZC5oZWlnaHQ7XG4gICAgICAgICAgY2hpbGQucmVtb3ZlSW5uZXIoYXQsIHJtKTtcbiAgICAgICAgICB0aGlzLmhlaWdodCAtPSBvbGRIZWlnaHQgLSBjaGlsZC5oZWlnaHQ7XG4gICAgICAgICAgaWYgKHN6ID09IHJtKSB7IHRoaXMuY2hpbGRyZW4uc3BsaWNlKGktLSwgMSk7IGNoaWxkLnBhcmVudCA9IG51bGw7IH1cbiAgICAgICAgICBpZiAoKG4gLT0gcm0pID09IDApIHsgYnJlYWsgfVxuICAgICAgICAgIGF0ID0gMDtcbiAgICAgICAgfSBlbHNlIHsgYXQgLT0gc3o7IH1cbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSByZXN1bHQgaXMgc21hbGxlciB0aGFuIDI1IGxpbmVzLCBlbnN1cmUgdGhhdCBpdCBpcyBhXG4gICAgICAvLyBzaW5nbGUgbGVhZiBub2RlLlxuICAgICAgaWYgKHRoaXMuc2l6ZSAtIG4gPCAyNSAmJlxuICAgICAgICAgICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDEgfHwgISh0aGlzLmNoaWxkcmVuWzBdIGluc3RhbmNlb2YgTGVhZkNodW5rKSkpIHtcbiAgICAgICAgdmFyIGxpbmVzID0gW107XG4gICAgICAgIHRoaXMuY29sbGFwc2UobGluZXMpO1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gW25ldyBMZWFmQ2h1bmsobGluZXMpXTtcbiAgICAgICAgdGhpcy5jaGlsZHJlblswXS5wYXJlbnQgPSB0aGlzO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBjb2xsYXBzZTogZnVuY3Rpb24obGluZXMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7ICsraSkgeyB0aGlzLmNoaWxkcmVuW2ldLmNvbGxhcHNlKGxpbmVzKTsgfVxuICAgIH0sXG5cbiAgICBpbnNlcnRJbm5lcjogZnVuY3Rpb24oYXQsIGxpbmVzLCBoZWlnaHQpIHtcbiAgICAgIHRoaXMuc2l6ZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICB0aGlzLmhlaWdodCArPSBoZWlnaHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlbltpXSwgc3ogPSBjaGlsZC5jaHVua1NpemUoKTtcbiAgICAgICAgaWYgKGF0IDw9IHN6KSB7XG4gICAgICAgICAgY2hpbGQuaW5zZXJ0SW5uZXIoYXQsIGxpbmVzLCBoZWlnaHQpO1xuICAgICAgICAgIGlmIChjaGlsZC5saW5lcyAmJiBjaGlsZC5saW5lcy5sZW5ndGggPiA1MCkge1xuICAgICAgICAgICAgLy8gVG8gYXZvaWQgbWVtb3J5IHRocmFzaGluZyB3aGVuIGNoaWxkLmxpbmVzIGlzIGh1Z2UgKGUuZy4gZmlyc3QgdmlldyBvZiBhIGxhcmdlIGZpbGUpLCBpdCdzIG5ldmVyIHNwbGljZWQuXG4gICAgICAgICAgICAvLyBJbnN0ZWFkLCBzbWFsbCBzbGljZXMgYXJlIHRha2VuLiBUaGV5J3JlIHRha2VuIGluIG9yZGVyIGJlY2F1c2Ugc2VxdWVudGlhbCBtZW1vcnkgYWNjZXNzZXMgYXJlIGZhc3Rlc3QuXG4gICAgICAgICAgICB2YXIgcmVtYWluaW5nID0gY2hpbGQubGluZXMubGVuZ3RoICUgMjUgKyAyNTtcbiAgICAgICAgICAgIGZvciAodmFyIHBvcyA9IHJlbWFpbmluZzsgcG9zIDwgY2hpbGQubGluZXMubGVuZ3RoOykge1xuICAgICAgICAgICAgICB2YXIgbGVhZiA9IG5ldyBMZWFmQ2h1bmsoY2hpbGQubGluZXMuc2xpY2UocG9zLCBwb3MgKz0gMjUpKTtcbiAgICAgICAgICAgICAgY2hpbGQuaGVpZ2h0IC09IGxlYWYuaGVpZ2h0O1xuICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuLnNwbGljZSgrK2ksIDAsIGxlYWYpO1xuICAgICAgICAgICAgICBsZWFmLnBhcmVudCA9IHRoaXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaGlsZC5saW5lcyA9IGNoaWxkLmxpbmVzLnNsaWNlKDAsIHJlbWFpbmluZyk7XG4gICAgICAgICAgICB0aGlzLm1heWJlU3BpbGwoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBhdCAtPSBzejtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8gV2hlbiBhIG5vZGUgaGFzIGdyb3duLCBjaGVjayB3aGV0aGVyIGl0IHNob3VsZCBiZSBzcGxpdC5cbiAgICBtYXliZVNwaWxsOiBmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA8PSAxMCkgeyByZXR1cm4gfVxuICAgICAgdmFyIG1lID0gdGhpcztcbiAgICAgIGRvIHtcbiAgICAgICAgdmFyIHNwaWxsZWQgPSBtZS5jaGlsZHJlbi5zcGxpY2UobWUuY2hpbGRyZW4ubGVuZ3RoIC0gNSwgNSk7XG4gICAgICAgIHZhciBzaWJsaW5nID0gbmV3IEJyYW5jaENodW5rKHNwaWxsZWQpO1xuICAgICAgICBpZiAoIW1lLnBhcmVudCkgeyAvLyBCZWNvbWUgdGhlIHBhcmVudCBub2RlXG4gICAgICAgICAgdmFyIGNvcHkgPSBuZXcgQnJhbmNoQ2h1bmsobWUuY2hpbGRyZW4pO1xuICAgICAgICAgIGNvcHkucGFyZW50ID0gbWU7XG4gICAgICAgICAgbWUuY2hpbGRyZW4gPSBbY29weSwgc2libGluZ107XG4gICAgICAgICAgbWUgPSBjb3B5O1xuICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWUuc2l6ZSAtPSBzaWJsaW5nLnNpemU7XG4gICAgICAgICAgbWUuaGVpZ2h0IC09IHNpYmxpbmcuaGVpZ2h0O1xuICAgICAgICAgIHZhciBteUluZGV4ID0gaW5kZXhPZihtZS5wYXJlbnQuY2hpbGRyZW4sIG1lKTtcbiAgICAgICAgICBtZS5wYXJlbnQuY2hpbGRyZW4uc3BsaWNlKG15SW5kZXggKyAxLCAwLCBzaWJsaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBzaWJsaW5nLnBhcmVudCA9IG1lLnBhcmVudDtcbiAgICAgIH0gd2hpbGUgKG1lLmNoaWxkcmVuLmxlbmd0aCA+IDEwKVxuICAgICAgbWUucGFyZW50Lm1heWJlU3BpbGwoKTtcbiAgICB9LFxuXG4gICAgaXRlck46IGZ1bmN0aW9uKGF0LCBuLCBvcCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5baV0sIHN6ID0gY2hpbGQuY2h1bmtTaXplKCk7XG4gICAgICAgIGlmIChhdCA8IHN6KSB7XG4gICAgICAgICAgdmFyIHVzZWQgPSBNYXRoLm1pbihuLCBzeiAtIGF0KTtcbiAgICAgICAgICBpZiAoY2hpbGQuaXRlck4oYXQsIHVzZWQsIG9wKSkgeyByZXR1cm4gdHJ1ZSB9XG4gICAgICAgICAgaWYgKChuIC09IHVzZWQpID09IDApIHsgYnJlYWsgfVxuICAgICAgICAgIGF0ID0gMDtcbiAgICAgICAgfSBlbHNlIHsgYXQgLT0gc3o7IH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLy8gTGluZSB3aWRnZXRzIGFyZSBibG9jayBlbGVtZW50cyBkaXNwbGF5ZWQgYWJvdmUgb3IgYmVsb3cgYSBsaW5lLlxuXG4gIHZhciBMaW5lV2lkZ2V0ID0gZnVuY3Rpb24oZG9jLCBub2RlLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMpIHsgZm9yICh2YXIgb3B0IGluIG9wdGlvbnMpIHsgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkob3B0KSlcbiAgICAgIHsgdGhpc1tvcHRdID0gb3B0aW9uc1tvcHRdOyB9IH0gfVxuICAgIHRoaXMuZG9jID0gZG9jO1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gIH07XG5cbiAgTGluZVdpZGdldC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNtID0gdGhpcy5kb2MuY20sIHdzID0gdGhpcy5saW5lLndpZGdldHMsIGxpbmUgPSB0aGlzLmxpbmUsIG5vID0gbGluZU5vKGxpbmUpO1xuICAgIGlmIChubyA9PSBudWxsIHx8ICF3cykgeyByZXR1cm4gfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd3MubGVuZ3RoOyArK2kpIHsgaWYgKHdzW2ldID09IHRoaXMpIHsgd3Muc3BsaWNlKGktLSwgMSk7IH0gfVxuICAgIGlmICghd3MubGVuZ3RoKSB7IGxpbmUud2lkZ2V0cyA9IG51bGw7IH1cbiAgICB2YXIgaGVpZ2h0ID0gd2lkZ2V0SGVpZ2h0KHRoaXMpO1xuICAgIHVwZGF0ZUxpbmVIZWlnaHQobGluZSwgTWF0aC5tYXgoMCwgbGluZS5oZWlnaHQgLSBoZWlnaHQpKTtcbiAgICBpZiAoY20pIHtcbiAgICAgIHJ1bkluT3AoY20sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYWRqdXN0U2Nyb2xsV2hlbkFib3ZlVmlzaWJsZShjbSwgbGluZSwgLWhlaWdodCk7XG4gICAgICAgIHJlZ0xpbmVDaGFuZ2UoY20sIG5vLCBcIndpZGdldFwiKTtcbiAgICAgIH0pO1xuICAgICAgc2lnbmFsTGF0ZXIoY20sIFwibGluZVdpZGdldENsZWFyZWRcIiwgY20sIHRoaXMsIG5vKTtcbiAgICB9XG4gIH07XG5cbiAgTGluZVdpZGdldC5wcm90b3R5cGUuY2hhbmdlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIG9sZEggPSB0aGlzLmhlaWdodCwgY20gPSB0aGlzLmRvYy5jbSwgbGluZSA9IHRoaXMubGluZTtcbiAgICB0aGlzLmhlaWdodCA9IG51bGw7XG4gICAgdmFyIGRpZmYgPSB3aWRnZXRIZWlnaHQodGhpcykgLSBvbGRIO1xuICAgIGlmICghZGlmZikgeyByZXR1cm4gfVxuICAgIGlmICghbGluZUlzSGlkZGVuKHRoaXMuZG9jLCBsaW5lKSkgeyB1cGRhdGVMaW5lSGVpZ2h0KGxpbmUsIGxpbmUuaGVpZ2h0ICsgZGlmZik7IH1cbiAgICBpZiAoY20pIHtcbiAgICAgIHJ1bkluT3AoY20sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY20uY3VyT3AuZm9yY2VVcGRhdGUgPSB0cnVlO1xuICAgICAgICBhZGp1c3RTY3JvbGxXaGVuQWJvdmVWaXNpYmxlKGNtLCBsaW5lLCBkaWZmKTtcbiAgICAgICAgc2lnbmFsTGF0ZXIoY20sIFwibGluZVdpZGdldENoYW5nZWRcIiwgY20sIHRoaXMkMSwgbGluZU5vKGxpbmUpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgZXZlbnRNaXhpbihMaW5lV2lkZ2V0KTtcblxuICBmdW5jdGlvbiBhZGp1c3RTY3JvbGxXaGVuQWJvdmVWaXNpYmxlKGNtLCBsaW5lLCBkaWZmKSB7XG4gICAgaWYgKGhlaWdodEF0TGluZShsaW5lKSA8ICgoY20uY3VyT3AgJiYgY20uY3VyT3Auc2Nyb2xsVG9wKSB8fCBjbS5kb2Muc2Nyb2xsVG9wKSlcbiAgICAgIHsgYWRkVG9TY3JvbGxUb3AoY20sIGRpZmYpOyB9XG4gIH1cblxuICBmdW5jdGlvbiBhZGRMaW5lV2lkZ2V0KGRvYywgaGFuZGxlLCBub2RlLCBvcHRpb25zKSB7XG4gICAgdmFyIHdpZGdldCA9IG5ldyBMaW5lV2lkZ2V0KGRvYywgbm9kZSwgb3B0aW9ucyk7XG4gICAgdmFyIGNtID0gZG9jLmNtO1xuICAgIGlmIChjbSAmJiB3aWRnZXQubm9IU2Nyb2xsKSB7IGNtLmRpc3BsYXkuYWxpZ25XaWRnZXRzID0gdHJ1ZTsgfVxuICAgIGNoYW5nZUxpbmUoZG9jLCBoYW5kbGUsIFwid2lkZ2V0XCIsIGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICB2YXIgd2lkZ2V0cyA9IGxpbmUud2lkZ2V0cyB8fCAobGluZS53aWRnZXRzID0gW10pO1xuICAgICAgaWYgKHdpZGdldC5pbnNlcnRBdCA9PSBudWxsKSB7IHdpZGdldHMucHVzaCh3aWRnZXQpOyB9XG4gICAgICBlbHNlIHsgd2lkZ2V0cy5zcGxpY2UoTWF0aC5taW4od2lkZ2V0cy5sZW5ndGggLSAxLCBNYXRoLm1heCgwLCB3aWRnZXQuaW5zZXJ0QXQpKSwgMCwgd2lkZ2V0KTsgfVxuICAgICAgd2lkZ2V0LmxpbmUgPSBsaW5lO1xuICAgICAgaWYgKGNtICYmICFsaW5lSXNIaWRkZW4oZG9jLCBsaW5lKSkge1xuICAgICAgICB2YXIgYWJvdmVWaXNpYmxlID0gaGVpZ2h0QXRMaW5lKGxpbmUpIDwgZG9jLnNjcm9sbFRvcDtcbiAgICAgICAgdXBkYXRlTGluZUhlaWdodChsaW5lLCBsaW5lLmhlaWdodCArIHdpZGdldEhlaWdodCh3aWRnZXQpKTtcbiAgICAgICAgaWYgKGFib3ZlVmlzaWJsZSkgeyBhZGRUb1Njcm9sbFRvcChjbSwgd2lkZ2V0LmhlaWdodCk7IH1cbiAgICAgICAgY20uY3VyT3AuZm9yY2VVcGRhdGUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9KTtcbiAgICBpZiAoY20pIHsgc2lnbmFsTGF0ZXIoY20sIFwibGluZVdpZGdldEFkZGVkXCIsIGNtLCB3aWRnZXQsIHR5cGVvZiBoYW5kbGUgPT0gXCJudW1iZXJcIiA/IGhhbmRsZSA6IGxpbmVObyhoYW5kbGUpKTsgfVxuICAgIHJldHVybiB3aWRnZXRcbiAgfVxuXG4gIC8vIFRFWFRNQVJLRVJTXG5cbiAgLy8gQ3JlYXRlZCB3aXRoIG1hcmtUZXh0IGFuZCBzZXRCb29rbWFyayBtZXRob2RzLiBBIFRleHRNYXJrZXIgaXMgYVxuICAvLyBoYW5kbGUgdGhhdCBjYW4gYmUgdXNlZCB0byBjbGVhciBvciBmaW5kIGEgbWFya2VkIHBvc2l0aW9uIGluIHRoZVxuICAvLyBkb2N1bWVudC4gTGluZSBvYmplY3RzIGhvbGQgYXJyYXlzIChtYXJrZWRTcGFucykgY29udGFpbmluZ1xuICAvLyB7ZnJvbSwgdG8sIG1hcmtlcn0gb2JqZWN0IHBvaW50aW5nIHRvIHN1Y2ggbWFya2VyIG9iamVjdHMsIGFuZFxuICAvLyBpbmRpY2F0aW5nIHRoYXQgc3VjaCBhIG1hcmtlciBpcyBwcmVzZW50IG9uIHRoYXQgbGluZS4gTXVsdGlwbGVcbiAgLy8gbGluZXMgbWF5IHBvaW50IHRvIHRoZSBzYW1lIG1hcmtlciB3aGVuIGl0IHNwYW5zIGFjcm9zcyBsaW5lcy5cbiAgLy8gVGhlIHNwYW5zIHdpbGwgaGF2ZSBudWxsIGZvciB0aGVpciBmcm9tL3RvIHByb3BlcnRpZXMgd2hlbiB0aGVcbiAgLy8gbWFya2VyIGNvbnRpbnVlcyBiZXlvbmQgdGhlIHN0YXJ0L2VuZCBvZiB0aGUgbGluZS4gTWFya2VycyBoYXZlXG4gIC8vIGxpbmtzIGJhY2sgdG8gdGhlIGxpbmVzIHRoZXkgY3VycmVudGx5IHRvdWNoLlxuXG4gIC8vIENvbGxhcHNlZCBtYXJrZXJzIGhhdmUgdW5pcXVlIGlkcywgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBvcmRlclxuICAvLyB0aGVtLCB3aGljaCBpcyBuZWVkZWQgZm9yIHVuaXF1ZWx5IGRldGVybWluaW5nIGFuIG91dGVyIG1hcmtlclxuICAvLyB3aGVuIHRoZXkgb3ZlcmxhcCAodGhleSBtYXkgbmVzdCwgYnV0IG5vdCBwYXJ0aWFsbHkgb3ZlcmxhcCkuXG4gIHZhciBuZXh0TWFya2VySWQgPSAwO1xuXG4gIHZhciBUZXh0TWFya2VyID0gZnVuY3Rpb24oZG9jLCB0eXBlKSB7XG4gICAgdGhpcy5saW5lcyA9IFtdO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5kb2MgPSBkb2M7XG4gICAgdGhpcy5pZCA9ICsrbmV4dE1hcmtlcklkO1xuICB9O1xuXG4gIC8vIENsZWFyIHRoZSBtYXJrZXIuXG4gIFRleHRNYXJrZXIucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmV4cGxpY2l0bHlDbGVhcmVkKSB7IHJldHVybiB9XG4gICAgdmFyIGNtID0gdGhpcy5kb2MuY20sIHdpdGhPcCA9IGNtICYmICFjbS5jdXJPcDtcbiAgICBpZiAod2l0aE9wKSB7IHN0YXJ0T3BlcmF0aW9uKGNtKTsgfVxuICAgIGlmIChoYXNIYW5kbGVyKHRoaXMsIFwiY2xlYXJcIikpIHtcbiAgICAgIHZhciBmb3VuZCA9IHRoaXMuZmluZCgpO1xuICAgICAgaWYgKGZvdW5kKSB7IHNpZ25hbExhdGVyKHRoaXMsIFwiY2xlYXJcIiwgZm91bmQuZnJvbSwgZm91bmQudG8pOyB9XG4gICAgfVxuICAgIHZhciBtaW4gPSBudWxsLCBtYXggPSBudWxsO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5saW5lcy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGxpbmUgPSB0aGlzLmxpbmVzW2ldO1xuICAgICAgdmFyIHNwYW4gPSBnZXRNYXJrZWRTcGFuRm9yKGxpbmUubWFya2VkU3BhbnMsIHRoaXMpO1xuICAgICAgaWYgKGNtICYmICF0aGlzLmNvbGxhcHNlZCkgeyByZWdMaW5lQ2hhbmdlKGNtLCBsaW5lTm8obGluZSksIFwidGV4dFwiKTsgfVxuICAgICAgZWxzZSBpZiAoY20pIHtcbiAgICAgICAgaWYgKHNwYW4udG8gIT0gbnVsbCkgeyBtYXggPSBsaW5lTm8obGluZSk7IH1cbiAgICAgICAgaWYgKHNwYW4uZnJvbSAhPSBudWxsKSB7IG1pbiA9IGxpbmVObyhsaW5lKTsgfVxuICAgICAgfVxuICAgICAgbGluZS5tYXJrZWRTcGFucyA9IHJlbW92ZU1hcmtlZFNwYW4obGluZS5tYXJrZWRTcGFucywgc3Bhbik7XG4gICAgICBpZiAoc3Bhbi5mcm9tID09IG51bGwgJiYgdGhpcy5jb2xsYXBzZWQgJiYgIWxpbmVJc0hpZGRlbih0aGlzLmRvYywgbGluZSkgJiYgY20pXG4gICAgICAgIHsgdXBkYXRlTGluZUhlaWdodChsaW5lLCB0ZXh0SGVpZ2h0KGNtLmRpc3BsYXkpKTsgfVxuICAgIH1cbiAgICBpZiAoY20gJiYgdGhpcy5jb2xsYXBzZWQgJiYgIWNtLm9wdGlvbnMubGluZVdyYXBwaW5nKSB7IGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHRoaXMubGluZXMubGVuZ3RoOyArK2kkMSkge1xuICAgICAgdmFyIHZpc3VhbCA9IHZpc3VhbExpbmUodGhpcy5saW5lc1tpJDFdKSwgbGVuID0gbGluZUxlbmd0aCh2aXN1YWwpO1xuICAgICAgaWYgKGxlbiA+IGNtLmRpc3BsYXkubWF4TGluZUxlbmd0aCkge1xuICAgICAgICBjbS5kaXNwbGF5Lm1heExpbmUgPSB2aXN1YWw7XG4gICAgICAgIGNtLmRpc3BsYXkubWF4TGluZUxlbmd0aCA9IGxlbjtcbiAgICAgICAgY20uZGlzcGxheS5tYXhMaW5lQ2hhbmdlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSB9XG5cbiAgICBpZiAobWluICE9IG51bGwgJiYgY20gJiYgdGhpcy5jb2xsYXBzZWQpIHsgcmVnQ2hhbmdlKGNtLCBtaW4sIG1heCArIDEpOyB9XG4gICAgdGhpcy5saW5lcy5sZW5ndGggPSAwO1xuICAgIHRoaXMuZXhwbGljaXRseUNsZWFyZWQgPSB0cnVlO1xuICAgIGlmICh0aGlzLmF0b21pYyAmJiB0aGlzLmRvYy5jYW50RWRpdCkge1xuICAgICAgdGhpcy5kb2MuY2FudEVkaXQgPSBmYWxzZTtcbiAgICAgIGlmIChjbSkgeyByZUNoZWNrU2VsZWN0aW9uKGNtLmRvYyk7IH1cbiAgICB9XG4gICAgaWYgKGNtKSB7IHNpZ25hbExhdGVyKGNtLCBcIm1hcmtlckNsZWFyZWRcIiwgY20sIHRoaXMsIG1pbiwgbWF4KTsgfVxuICAgIGlmICh3aXRoT3ApIHsgZW5kT3BlcmF0aW9uKGNtKTsgfVxuICAgIGlmICh0aGlzLnBhcmVudCkgeyB0aGlzLnBhcmVudC5jbGVhcigpOyB9XG4gIH07XG5cbiAgLy8gRmluZCB0aGUgcG9zaXRpb24gb2YgdGhlIG1hcmtlciBpbiB0aGUgZG9jdW1lbnQuIFJldHVybnMgYSB7ZnJvbSxcbiAgLy8gdG99IG9iamVjdCBieSBkZWZhdWx0LiBTaWRlIGNhbiBiZSBwYXNzZWQgdG8gZ2V0IGEgc3BlY2lmaWMgc2lkZVxuICAvLyAtLSAwIChib3RoKSwgLTEgKGxlZnQpLCBvciAxIChyaWdodCkuIFdoZW4gbGluZU9iaiBpcyB0cnVlLCB0aGVcbiAgLy8gUG9zIG9iamVjdHMgcmV0dXJuZWQgY29udGFpbiBhIGxpbmUgb2JqZWN0LCByYXRoZXIgdGhhbiBhIGxpbmVcbiAgLy8gbnVtYmVyICh1c2VkIHRvIHByZXZlbnQgbG9va2luZyB1cCB0aGUgc2FtZSBsaW5lIHR3aWNlKS5cbiAgVGV4dE1hcmtlci5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChzaWRlLCBsaW5lT2JqKSB7XG4gICAgaWYgKHNpZGUgPT0gbnVsbCAmJiB0aGlzLnR5cGUgPT0gXCJib29rbWFya1wiKSB7IHNpZGUgPSAxOyB9XG4gICAgdmFyIGZyb20sIHRvO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5saW5lcy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGxpbmUgPSB0aGlzLmxpbmVzW2ldO1xuICAgICAgdmFyIHNwYW4gPSBnZXRNYXJrZWRTcGFuRm9yKGxpbmUubWFya2VkU3BhbnMsIHRoaXMpO1xuICAgICAgaWYgKHNwYW4uZnJvbSAhPSBudWxsKSB7XG4gICAgICAgIGZyb20gPSBQb3MobGluZU9iaiA/IGxpbmUgOiBsaW5lTm8obGluZSksIHNwYW4uZnJvbSk7XG4gICAgICAgIGlmIChzaWRlID09IC0xKSB7IHJldHVybiBmcm9tIH1cbiAgICAgIH1cbiAgICAgIGlmIChzcGFuLnRvICE9IG51bGwpIHtcbiAgICAgICAgdG8gPSBQb3MobGluZU9iaiA/IGxpbmUgOiBsaW5lTm8obGluZSksIHNwYW4udG8pO1xuICAgICAgICBpZiAoc2lkZSA9PSAxKSB7IHJldHVybiB0byB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmcm9tICYmIHtmcm9tOiBmcm9tLCB0bzogdG99XG4gIH07XG5cbiAgLy8gU2lnbmFscyB0aGF0IHRoZSBtYXJrZXIncyB3aWRnZXQgY2hhbmdlZCwgYW5kIHN1cnJvdW5kaW5nIGxheW91dFxuICAvLyBzaG91bGQgYmUgcmVjb21wdXRlZC5cbiAgVGV4dE1hcmtlci5wcm90b3R5cGUuY2hhbmdlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIHBvcyA9IHRoaXMuZmluZCgtMSwgdHJ1ZSksIHdpZGdldCA9IHRoaXMsIGNtID0gdGhpcy5kb2MuY207XG4gICAgaWYgKCFwb3MgfHwgIWNtKSB7IHJldHVybiB9XG4gICAgcnVuSW5PcChjbSwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGxpbmUgPSBwb3MubGluZSwgbGluZU4gPSBsaW5lTm8ocG9zLmxpbmUpO1xuICAgICAgdmFyIHZpZXcgPSBmaW5kVmlld0ZvckxpbmUoY20sIGxpbmVOKTtcbiAgICAgIGlmICh2aWV3KSB7XG4gICAgICAgIGNsZWFyTGluZU1lYXN1cmVtZW50Q2FjaGVGb3Iodmlldyk7XG4gICAgICAgIGNtLmN1ck9wLnNlbGVjdGlvbkNoYW5nZWQgPSBjbS5jdXJPcC5mb3JjZVVwZGF0ZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBjbS5jdXJPcC51cGRhdGVNYXhMaW5lID0gdHJ1ZTtcbiAgICAgIGlmICghbGluZUlzSGlkZGVuKHdpZGdldC5kb2MsIGxpbmUpICYmIHdpZGdldC5oZWlnaHQgIT0gbnVsbCkge1xuICAgICAgICB2YXIgb2xkSGVpZ2h0ID0gd2lkZ2V0LmhlaWdodDtcbiAgICAgICAgd2lkZ2V0LmhlaWdodCA9IG51bGw7XG4gICAgICAgIHZhciBkSGVpZ2h0ID0gd2lkZ2V0SGVpZ2h0KHdpZGdldCkgLSBvbGRIZWlnaHQ7XG4gICAgICAgIGlmIChkSGVpZ2h0KVxuICAgICAgICAgIHsgdXBkYXRlTGluZUhlaWdodChsaW5lLCBsaW5lLmhlaWdodCArIGRIZWlnaHQpOyB9XG4gICAgICB9XG4gICAgICBzaWduYWxMYXRlcihjbSwgXCJtYXJrZXJDaGFuZ2VkXCIsIGNtLCB0aGlzJDEpO1xuICAgIH0pO1xuICB9O1xuXG4gIFRleHRNYXJrZXIucHJvdG90eXBlLmF0dGFjaExpbmUgPSBmdW5jdGlvbiAobGluZSkge1xuICAgIGlmICghdGhpcy5saW5lcy5sZW5ndGggJiYgdGhpcy5kb2MuY20pIHtcbiAgICAgIHZhciBvcCA9IHRoaXMuZG9jLmNtLmN1ck9wO1xuICAgICAgaWYgKCFvcC5tYXliZUhpZGRlbk1hcmtlcnMgfHwgaW5kZXhPZihvcC5tYXliZUhpZGRlbk1hcmtlcnMsIHRoaXMpID09IC0xKVxuICAgICAgICB7IChvcC5tYXliZVVuaGlkZGVuTWFya2VycyB8fCAob3AubWF5YmVVbmhpZGRlbk1hcmtlcnMgPSBbXSkpLnB1c2godGhpcyk7IH1cbiAgICB9XG4gICAgdGhpcy5saW5lcy5wdXNoKGxpbmUpO1xuICB9O1xuXG4gIFRleHRNYXJrZXIucHJvdG90eXBlLmRldGFjaExpbmUgPSBmdW5jdGlvbiAobGluZSkge1xuICAgIHRoaXMubGluZXMuc3BsaWNlKGluZGV4T2YodGhpcy5saW5lcywgbGluZSksIDEpO1xuICAgIGlmICghdGhpcy5saW5lcy5sZW5ndGggJiYgdGhpcy5kb2MuY20pIHtcbiAgICAgIHZhciBvcCA9IHRoaXMuZG9jLmNtLmN1ck9wXG4gICAgICA7KG9wLm1heWJlSGlkZGVuTWFya2VycyB8fCAob3AubWF5YmVIaWRkZW5NYXJrZXJzID0gW10pKS5wdXNoKHRoaXMpO1xuICAgIH1cbiAgfTtcbiAgZXZlbnRNaXhpbihUZXh0TWFya2VyKTtcblxuICAvLyBDcmVhdGUgYSBtYXJrZXIsIHdpcmUgaXQgdXAgdG8gdGhlIHJpZ2h0IGxpbmVzLCBhbmRcbiAgZnVuY3Rpb24gbWFya1RleHQoZG9jLCBmcm9tLCB0bywgb3B0aW9ucywgdHlwZSkge1xuICAgIC8vIFNoYXJlZCBtYXJrZXJzIChhY3Jvc3MgbGlua2VkIGRvY3VtZW50cykgYXJlIGhhbmRsZWQgc2VwYXJhdGVseVxuICAgIC8vIChtYXJrVGV4dFNoYXJlZCB3aWxsIGNhbGwgb3V0IHRvIHRoaXMgYWdhaW4sIG9uY2UgcGVyXG4gICAgLy8gZG9jdW1lbnQpLlxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2hhcmVkKSB7IHJldHVybiBtYXJrVGV4dFNoYXJlZChkb2MsIGZyb20sIHRvLCBvcHRpb25zLCB0eXBlKSB9XG4gICAgLy8gRW5zdXJlIHdlIGFyZSBpbiBhbiBvcGVyYXRpb24uXG4gICAgaWYgKGRvYy5jbSAmJiAhZG9jLmNtLmN1ck9wKSB7IHJldHVybiBvcGVyYXRpb24oZG9jLmNtLCBtYXJrVGV4dCkoZG9jLCBmcm9tLCB0bywgb3B0aW9ucywgdHlwZSkgfVxuXG4gICAgdmFyIG1hcmtlciA9IG5ldyBUZXh0TWFya2VyKGRvYywgdHlwZSksIGRpZmYgPSBjbXAoZnJvbSwgdG8pO1xuICAgIGlmIChvcHRpb25zKSB7IGNvcHlPYmoob3B0aW9ucywgbWFya2VyLCBmYWxzZSk7IH1cbiAgICAvLyBEb24ndCBjb25uZWN0IGVtcHR5IG1hcmtlcnMgdW5sZXNzIGNsZWFyV2hlbkVtcHR5IGlzIGZhbHNlXG4gICAgaWYgKGRpZmYgPiAwIHx8IGRpZmYgPT0gMCAmJiBtYXJrZXIuY2xlYXJXaGVuRW1wdHkgIT09IGZhbHNlKVxuICAgICAgeyByZXR1cm4gbWFya2VyIH1cbiAgICBpZiAobWFya2VyLnJlcGxhY2VkV2l0aCkge1xuICAgICAgLy8gU2hvd2luZyB1cCBhcyBhIHdpZGdldCBpbXBsaWVzIGNvbGxhcHNlZCAod2lkZ2V0IHJlcGxhY2VzIHRleHQpXG4gICAgICBtYXJrZXIuY29sbGFwc2VkID0gdHJ1ZTtcbiAgICAgIG1hcmtlci53aWRnZXROb2RlID0gZWx0UChcInNwYW5cIiwgW21hcmtlci5yZXBsYWNlZFdpdGhdLCBcIkNvZGVNaXJyb3Itd2lkZ2V0XCIpO1xuICAgICAgaWYgKCFvcHRpb25zLmhhbmRsZU1vdXNlRXZlbnRzKSB7IG1hcmtlci53aWRnZXROb2RlLnNldEF0dHJpYnV0ZShcImNtLWlnbm9yZS1ldmVudHNcIiwgXCJ0cnVlXCIpOyB9XG4gICAgICBpZiAob3B0aW9ucy5pbnNlcnRMZWZ0KSB7IG1hcmtlci53aWRnZXROb2RlLmluc2VydExlZnQgPSB0cnVlOyB9XG4gICAgfVxuICAgIGlmIChtYXJrZXIuY29sbGFwc2VkKSB7XG4gICAgICBpZiAoY29uZmxpY3RpbmdDb2xsYXBzZWRSYW5nZShkb2MsIGZyb20ubGluZSwgZnJvbSwgdG8sIG1hcmtlcikgfHxcbiAgICAgICAgICBmcm9tLmxpbmUgIT0gdG8ubGluZSAmJiBjb25mbGljdGluZ0NvbGxhcHNlZFJhbmdlKGRvYywgdG8ubGluZSwgZnJvbSwgdG8sIG1hcmtlcikpXG4gICAgICAgIHsgdGhyb3cgbmV3IEVycm9yKFwiSW5zZXJ0aW5nIGNvbGxhcHNlZCBtYXJrZXIgcGFydGlhbGx5IG92ZXJsYXBwaW5nIGFuIGV4aXN0aW5nIG9uZVwiKSB9XG4gICAgICBzZWVDb2xsYXBzZWRTcGFucygpO1xuICAgIH1cblxuICAgIGlmIChtYXJrZXIuYWRkVG9IaXN0b3J5KVxuICAgICAgeyBhZGRDaGFuZ2VUb0hpc3RvcnkoZG9jLCB7ZnJvbTogZnJvbSwgdG86IHRvLCBvcmlnaW46IFwibWFya1RleHRcIn0sIGRvYy5zZWwsIE5hTik7IH1cblxuICAgIHZhciBjdXJMaW5lID0gZnJvbS5saW5lLCBjbSA9IGRvYy5jbSwgdXBkYXRlTWF4TGluZTtcbiAgICBkb2MuaXRlcihjdXJMaW5lLCB0by5saW5lICsgMSwgZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIGlmIChjbSAmJiBtYXJrZXIuY29sbGFwc2VkICYmICFjbS5vcHRpb25zLmxpbmVXcmFwcGluZyAmJiB2aXN1YWxMaW5lKGxpbmUpID09IGNtLmRpc3BsYXkubWF4TGluZSlcbiAgICAgICAgeyB1cGRhdGVNYXhMaW5lID0gdHJ1ZTsgfVxuICAgICAgaWYgKG1hcmtlci5jb2xsYXBzZWQgJiYgY3VyTGluZSAhPSBmcm9tLmxpbmUpIHsgdXBkYXRlTGluZUhlaWdodChsaW5lLCAwKTsgfVxuICAgICAgYWRkTWFya2VkU3BhbihsaW5lLCBuZXcgTWFya2VkU3BhbihtYXJrZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckxpbmUgPT0gZnJvbS5saW5lID8gZnJvbS5jaCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckxpbmUgPT0gdG8ubGluZSA/IHRvLmNoIDogbnVsbCkpO1xuICAgICAgKytjdXJMaW5lO1xuICAgIH0pO1xuICAgIC8vIGxpbmVJc0hpZGRlbiBkZXBlbmRzIG9uIHRoZSBwcmVzZW5jZSBvZiB0aGUgc3BhbnMsIHNvIG5lZWRzIGEgc2Vjb25kIHBhc3NcbiAgICBpZiAobWFya2VyLmNvbGxhcHNlZCkgeyBkb2MuaXRlcihmcm9tLmxpbmUsIHRvLmxpbmUgKyAxLCBmdW5jdGlvbiAobGluZSkge1xuICAgICAgaWYgKGxpbmVJc0hpZGRlbihkb2MsIGxpbmUpKSB7IHVwZGF0ZUxpbmVIZWlnaHQobGluZSwgMCk7IH1cbiAgICB9KTsgfVxuXG4gICAgaWYgKG1hcmtlci5jbGVhck9uRW50ZXIpIHsgb24obWFya2VyLCBcImJlZm9yZUN1cnNvckVudGVyXCIsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1hcmtlci5jbGVhcigpOyB9KTsgfVxuXG4gICAgaWYgKG1hcmtlci5yZWFkT25seSkge1xuICAgICAgc2VlUmVhZE9ubHlTcGFucygpO1xuICAgICAgaWYgKGRvYy5oaXN0b3J5LmRvbmUubGVuZ3RoIHx8IGRvYy5oaXN0b3J5LnVuZG9uZS5sZW5ndGgpXG4gICAgICAgIHsgZG9jLmNsZWFySGlzdG9yeSgpOyB9XG4gICAgfVxuICAgIGlmIChtYXJrZXIuY29sbGFwc2VkKSB7XG4gICAgICBtYXJrZXIuaWQgPSArK25leHRNYXJrZXJJZDtcbiAgICAgIG1hcmtlci5hdG9taWMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoY20pIHtcbiAgICAgIC8vIFN5bmMgZWRpdG9yIHN0YXRlXG4gICAgICBpZiAodXBkYXRlTWF4TGluZSkgeyBjbS5jdXJPcC51cGRhdGVNYXhMaW5lID0gdHJ1ZTsgfVxuICAgICAgaWYgKG1hcmtlci5jb2xsYXBzZWQpXG4gICAgICAgIHsgcmVnQ2hhbmdlKGNtLCBmcm9tLmxpbmUsIHRvLmxpbmUgKyAxKTsgfVxuICAgICAgZWxzZSBpZiAobWFya2VyLmNsYXNzTmFtZSB8fCBtYXJrZXIuc3RhcnRTdHlsZSB8fCBtYXJrZXIuZW5kU3R5bGUgfHwgbWFya2VyLmNzcyB8fFxuICAgICAgICAgICAgICAgbWFya2VyLmF0dHJpYnV0ZXMgfHwgbWFya2VyLnRpdGxlKVxuICAgICAgICB7IGZvciAodmFyIGkgPSBmcm9tLmxpbmU7IGkgPD0gdG8ubGluZTsgaSsrKSB7IHJlZ0xpbmVDaGFuZ2UoY20sIGksIFwidGV4dFwiKTsgfSB9XG4gICAgICBpZiAobWFya2VyLmF0b21pYykgeyByZUNoZWNrU2VsZWN0aW9uKGNtLmRvYyk7IH1cbiAgICAgIHNpZ25hbExhdGVyKGNtLCBcIm1hcmtlckFkZGVkXCIsIGNtLCBtYXJrZXIpO1xuICAgIH1cbiAgICByZXR1cm4gbWFya2VyXG4gIH1cblxuICAvLyBTSEFSRUQgVEVYVE1BUktFUlNcblxuICAvLyBBIHNoYXJlZCBtYXJrZXIgc3BhbnMgbXVsdGlwbGUgbGlua2VkIGRvY3VtZW50cy4gSXQgaXNcbiAgLy8gaW1wbGVtZW50ZWQgYXMgYSBtZXRhLW1hcmtlci1vYmplY3QgY29udHJvbGxpbmcgbXVsdGlwbGUgbm9ybWFsXG4gIC8vIG1hcmtlcnMuXG4gIHZhciBTaGFyZWRUZXh0TWFya2VyID0gZnVuY3Rpb24obWFya2VycywgcHJpbWFyeSkge1xuICAgIHRoaXMubWFya2VycyA9IG1hcmtlcnM7XG4gICAgdGhpcy5wcmltYXJ5ID0gcHJpbWFyeTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hcmtlcnMubGVuZ3RoOyArK2kpXG4gICAgICB7IG1hcmtlcnNbaV0ucGFyZW50ID0gdGhpczsgfVxuICB9O1xuXG4gIFNoYXJlZFRleHRNYXJrZXIucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmV4cGxpY2l0bHlDbGVhcmVkKSB7IHJldHVybiB9XG4gICAgdGhpcy5leHBsaWNpdGx5Q2xlYXJlZCA9IHRydWU7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1hcmtlcnMubGVuZ3RoOyArK2kpXG4gICAgICB7IHRoaXMubWFya2Vyc1tpXS5jbGVhcigpOyB9XG4gICAgc2lnbmFsTGF0ZXIodGhpcywgXCJjbGVhclwiKTtcbiAgfTtcblxuICBTaGFyZWRUZXh0TWFya2VyLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKHNpZGUsIGxpbmVPYmopIHtcbiAgICByZXR1cm4gdGhpcy5wcmltYXJ5LmZpbmQoc2lkZSwgbGluZU9iailcbiAgfTtcbiAgZXZlbnRNaXhpbihTaGFyZWRUZXh0TWFya2VyKTtcblxuICBmdW5jdGlvbiBtYXJrVGV4dFNoYXJlZChkb2MsIGZyb20sIHRvLCBvcHRpb25zLCB0eXBlKSB7XG4gICAgb3B0aW9ucyA9IGNvcHlPYmoob3B0aW9ucyk7XG4gICAgb3B0aW9ucy5zaGFyZWQgPSBmYWxzZTtcbiAgICB2YXIgbWFya2VycyA9IFttYXJrVGV4dChkb2MsIGZyb20sIHRvLCBvcHRpb25zLCB0eXBlKV0sIHByaW1hcnkgPSBtYXJrZXJzWzBdO1xuICAgIHZhciB3aWRnZXQgPSBvcHRpb25zLndpZGdldE5vZGU7XG4gICAgbGlua2VkRG9jcyhkb2MsIGZ1bmN0aW9uIChkb2MpIHtcbiAgICAgIGlmICh3aWRnZXQpIHsgb3B0aW9ucy53aWRnZXROb2RlID0gd2lkZ2V0LmNsb25lTm9kZSh0cnVlKTsgfVxuICAgICAgbWFya2Vycy5wdXNoKG1hcmtUZXh0KGRvYywgY2xpcFBvcyhkb2MsIGZyb20pLCBjbGlwUG9zKGRvYywgdG8pLCBvcHRpb25zLCB0eXBlKSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRvYy5saW5rZWQubGVuZ3RoOyArK2kpXG4gICAgICAgIHsgaWYgKGRvYy5saW5rZWRbaV0uaXNQYXJlbnQpIHsgcmV0dXJuIH0gfVxuICAgICAgcHJpbWFyeSA9IGxzdChtYXJrZXJzKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IFNoYXJlZFRleHRNYXJrZXIobWFya2VycywgcHJpbWFyeSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGZpbmRTaGFyZWRNYXJrZXJzKGRvYykge1xuICAgIHJldHVybiBkb2MuZmluZE1hcmtzKFBvcyhkb2MuZmlyc3QsIDApLCBkb2MuY2xpcFBvcyhQb3MoZG9jLmxhc3RMaW5lKCkpKSwgZnVuY3Rpb24gKG0pIHsgcmV0dXJuIG0ucGFyZW50OyB9KVxuICB9XG5cbiAgZnVuY3Rpb24gY29weVNoYXJlZE1hcmtlcnMoZG9jLCBtYXJrZXJzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXJrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbWFya2VyID0gbWFya2Vyc1tpXSwgcG9zID0gbWFya2VyLmZpbmQoKTtcbiAgICAgIHZhciBtRnJvbSA9IGRvYy5jbGlwUG9zKHBvcy5mcm9tKSwgbVRvID0gZG9jLmNsaXBQb3MocG9zLnRvKTtcbiAgICAgIGlmIChjbXAobUZyb20sIG1UbykpIHtcbiAgICAgICAgdmFyIHN1Yk1hcmsgPSBtYXJrVGV4dChkb2MsIG1Gcm9tLCBtVG8sIG1hcmtlci5wcmltYXJ5LCBtYXJrZXIucHJpbWFyeS50eXBlKTtcbiAgICAgICAgbWFya2VyLm1hcmtlcnMucHVzaChzdWJNYXJrKTtcbiAgICAgICAgc3ViTWFyay5wYXJlbnQgPSBtYXJrZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGV0YWNoU2hhcmVkTWFya2VycyhtYXJrZXJzKSB7XG4gICAgdmFyIGxvb3AgPSBmdW5jdGlvbiAoIGkgKSB7XG4gICAgICB2YXIgbWFya2VyID0gbWFya2Vyc1tpXSwgbGlua2VkID0gW21hcmtlci5wcmltYXJ5LmRvY107XG4gICAgICBsaW5rZWREb2NzKG1hcmtlci5wcmltYXJ5LmRvYywgZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGxpbmtlZC5wdXNoKGQpOyB9KTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbWFya2VyLm1hcmtlcnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIHN1Yk1hcmtlciA9IG1hcmtlci5tYXJrZXJzW2pdO1xuICAgICAgICBpZiAoaW5kZXhPZihsaW5rZWQsIHN1Yk1hcmtlci5kb2MpID09IC0xKSB7XG4gICAgICAgICAgc3ViTWFya2VyLnBhcmVudCA9IG51bGw7XG4gICAgICAgICAgbWFya2VyLm1hcmtlcnMuc3BsaWNlKGotLSwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXJrZXJzLmxlbmd0aDsgaSsrKSBsb29wKCBpICk7XG4gIH1cblxuICB2YXIgbmV4dERvY0lkID0gMDtcbiAgdmFyIERvYyA9IGZ1bmN0aW9uKHRleHQsIG1vZGUsIGZpcnN0TGluZSwgbGluZVNlcCwgZGlyZWN0aW9uKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERvYykpIHsgcmV0dXJuIG5ldyBEb2ModGV4dCwgbW9kZSwgZmlyc3RMaW5lLCBsaW5lU2VwLCBkaXJlY3Rpb24pIH1cbiAgICBpZiAoZmlyc3RMaW5lID09IG51bGwpIHsgZmlyc3RMaW5lID0gMDsgfVxuXG4gICAgQnJhbmNoQ2h1bmsuY2FsbCh0aGlzLCBbbmV3IExlYWZDaHVuayhbbmV3IExpbmUoXCJcIiwgbnVsbCldKV0pO1xuICAgIHRoaXMuZmlyc3QgPSBmaXJzdExpbmU7XG4gICAgdGhpcy5zY3JvbGxUb3AgPSB0aGlzLnNjcm9sbExlZnQgPSAwO1xuICAgIHRoaXMuY2FudEVkaXQgPSBmYWxzZTtcbiAgICB0aGlzLmNsZWFuR2VuZXJhdGlvbiA9IDE7XG4gICAgdGhpcy5tb2RlRnJvbnRpZXIgPSB0aGlzLmhpZ2hsaWdodEZyb250aWVyID0gZmlyc3RMaW5lO1xuICAgIHZhciBzdGFydCA9IFBvcyhmaXJzdExpbmUsIDApO1xuICAgIHRoaXMuc2VsID0gc2ltcGxlU2VsZWN0aW9uKHN0YXJ0KTtcbiAgICB0aGlzLmhpc3RvcnkgPSBuZXcgSGlzdG9yeShudWxsKTtcbiAgICB0aGlzLmlkID0gKytuZXh0RG9jSWQ7XG4gICAgdGhpcy5tb2RlT3B0aW9uID0gbW9kZTtcbiAgICB0aGlzLmxpbmVTZXAgPSBsaW5lU2VwO1xuICAgIHRoaXMuZGlyZWN0aW9uID0gKGRpcmVjdGlvbiA9PSBcInJ0bFwiKSA/IFwicnRsXCIgOiBcImx0clwiO1xuICAgIHRoaXMuZXh0ZW5kID0gZmFsc2U7XG5cbiAgICBpZiAodHlwZW9mIHRleHQgPT0gXCJzdHJpbmdcIikgeyB0ZXh0ID0gdGhpcy5zcGxpdExpbmVzKHRleHQpOyB9XG4gICAgdXBkYXRlRG9jKHRoaXMsIHtmcm9tOiBzdGFydCwgdG86IHN0YXJ0LCB0ZXh0OiB0ZXh0fSk7XG4gICAgc2V0U2VsZWN0aW9uKHRoaXMsIHNpbXBsZVNlbGVjdGlvbihzdGFydCksIHNlbF9kb250U2Nyb2xsKTtcbiAgfTtcblxuICBEb2MucHJvdG90eXBlID0gY3JlYXRlT2JqKEJyYW5jaENodW5rLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiBEb2MsXG4gICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBkb2N1bWVudC4gU3VwcG9ydHMgdHdvIGZvcm1zIC0tIHdpdGggb25seSBvbmVcbiAgICAvLyBhcmd1bWVudCwgaXQgY2FsbHMgdGhhdCBmb3IgZWFjaCBsaW5lIGluIHRoZSBkb2N1bWVudC4gV2l0aFxuICAgIC8vIHRocmVlLCBpdCBpdGVyYXRlcyBvdmVyIHRoZSByYW5nZSBnaXZlbiBieSB0aGUgZmlyc3QgdHdvICh3aXRoXG4gICAgLy8gdGhlIHNlY29uZCBiZWluZyBub24taW5jbHVzaXZlKS5cbiAgICBpdGVyOiBmdW5jdGlvbihmcm9tLCB0bywgb3ApIHtcbiAgICAgIGlmIChvcCkgeyB0aGlzLml0ZXJOKGZyb20gLSB0aGlzLmZpcnN0LCB0byAtIGZyb20sIG9wKTsgfVxuICAgICAgZWxzZSB7IHRoaXMuaXRlck4odGhpcy5maXJzdCwgdGhpcy5maXJzdCArIHRoaXMuc2l6ZSwgZnJvbSk7IH1cbiAgICB9LFxuXG4gICAgLy8gTm9uLXB1YmxpYyBpbnRlcmZhY2UgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgbGluZXMuXG4gICAgaW5zZXJ0OiBmdW5jdGlvbihhdCwgbGluZXMpIHtcbiAgICAgIHZhciBoZWlnaHQgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7ICsraSkgeyBoZWlnaHQgKz0gbGluZXNbaV0uaGVpZ2h0OyB9XG4gICAgICB0aGlzLmluc2VydElubmVyKGF0IC0gdGhpcy5maXJzdCwgbGluZXMsIGhlaWdodCk7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uKGF0LCBuKSB7IHRoaXMucmVtb3ZlSW5uZXIoYXQgLSB0aGlzLmZpcnN0LCBuKTsgfSxcblxuICAgIC8vIEZyb20gaGVyZSwgdGhlIG1ldGhvZHMgYXJlIHBhcnQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIE1vc3RcbiAgICAvLyBhcmUgYWxzbyBhdmFpbGFibGUgZnJvbSBDb2RlTWlycm9yIChlZGl0b3IpIGluc3RhbmNlcy5cblxuICAgIGdldFZhbHVlOiBmdW5jdGlvbihsaW5lU2VwKSB7XG4gICAgICB2YXIgbGluZXMgPSBnZXRMaW5lcyh0aGlzLCB0aGlzLmZpcnN0LCB0aGlzLmZpcnN0ICsgdGhpcy5zaXplKTtcbiAgICAgIGlmIChsaW5lU2VwID09PSBmYWxzZSkgeyByZXR1cm4gbGluZXMgfVxuICAgICAgcmV0dXJuIGxpbmVzLmpvaW4obGluZVNlcCB8fCB0aGlzLmxpbmVTZXBhcmF0b3IoKSlcbiAgICB9LFxuICAgIHNldFZhbHVlOiBkb2NNZXRob2RPcChmdW5jdGlvbihjb2RlKSB7XG4gICAgICB2YXIgdG9wID0gUG9zKHRoaXMuZmlyc3QsIDApLCBsYXN0ID0gdGhpcy5maXJzdCArIHRoaXMuc2l6ZSAtIDE7XG4gICAgICBtYWtlQ2hhbmdlKHRoaXMsIHtmcm9tOiB0b3AsIHRvOiBQb3MobGFzdCwgZ2V0TGluZSh0aGlzLCBsYXN0KS50ZXh0Lmxlbmd0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnNwbGl0TGluZXMoY29kZSksIG9yaWdpbjogXCJzZXRWYWx1ZVwiLCBmdWxsOiB0cnVlfSwgdHJ1ZSk7XG4gICAgICBpZiAodGhpcy5jbSkgeyBzY3JvbGxUb0Nvb3Jkcyh0aGlzLmNtLCAwLCAwKTsgfVxuICAgICAgc2V0U2VsZWN0aW9uKHRoaXMsIHNpbXBsZVNlbGVjdGlvbih0b3ApLCBzZWxfZG9udFNjcm9sbCk7XG4gICAgfSksXG4gICAgcmVwbGFjZVJhbmdlOiBmdW5jdGlvbihjb2RlLCBmcm9tLCB0bywgb3JpZ2luKSB7XG4gICAgICBmcm9tID0gY2xpcFBvcyh0aGlzLCBmcm9tKTtcbiAgICAgIHRvID0gdG8gPyBjbGlwUG9zKHRoaXMsIHRvKSA6IGZyb207XG4gICAgICByZXBsYWNlUmFuZ2UodGhpcywgY29kZSwgZnJvbSwgdG8sIG9yaWdpbik7XG4gICAgfSxcbiAgICBnZXRSYW5nZTogZnVuY3Rpb24oZnJvbSwgdG8sIGxpbmVTZXApIHtcbiAgICAgIHZhciBsaW5lcyA9IGdldEJldHdlZW4odGhpcywgY2xpcFBvcyh0aGlzLCBmcm9tKSwgY2xpcFBvcyh0aGlzLCB0bykpO1xuICAgICAgaWYgKGxpbmVTZXAgPT09IGZhbHNlKSB7IHJldHVybiBsaW5lcyB9XG4gICAgICByZXR1cm4gbGluZXMuam9pbihsaW5lU2VwIHx8IHRoaXMubGluZVNlcGFyYXRvcigpKVxuICAgIH0sXG5cbiAgICBnZXRMaW5lOiBmdW5jdGlvbihsaW5lKSB7dmFyIGwgPSB0aGlzLmdldExpbmVIYW5kbGUobGluZSk7IHJldHVybiBsICYmIGwudGV4dH0sXG5cbiAgICBnZXRMaW5lSGFuZGxlOiBmdW5jdGlvbihsaW5lKSB7aWYgKGlzTGluZSh0aGlzLCBsaW5lKSkgeyByZXR1cm4gZ2V0TGluZSh0aGlzLCBsaW5lKSB9fSxcbiAgICBnZXRMaW5lTnVtYmVyOiBmdW5jdGlvbihsaW5lKSB7cmV0dXJuIGxpbmVObyhsaW5lKX0sXG5cbiAgICBnZXRMaW5lSGFuZGxlVmlzdWFsU3RhcnQ6IGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgIGlmICh0eXBlb2YgbGluZSA9PSBcIm51bWJlclwiKSB7IGxpbmUgPSBnZXRMaW5lKHRoaXMsIGxpbmUpOyB9XG4gICAgICByZXR1cm4gdmlzdWFsTGluZShsaW5lKVxuICAgIH0sXG5cbiAgICBsaW5lQ291bnQ6IGZ1bmN0aW9uKCkge3JldHVybiB0aGlzLnNpemV9LFxuICAgIGZpcnN0TGluZTogZnVuY3Rpb24oKSB7cmV0dXJuIHRoaXMuZmlyc3R9LFxuICAgIGxhc3RMaW5lOiBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5maXJzdCArIHRoaXMuc2l6ZSAtIDF9LFxuXG4gICAgY2xpcFBvczogZnVuY3Rpb24ocG9zKSB7cmV0dXJuIGNsaXBQb3ModGhpcywgcG9zKX0sXG5cbiAgICBnZXRDdXJzb3I6IGZ1bmN0aW9uKHN0YXJ0KSB7XG4gICAgICB2YXIgcmFuZ2UgPSB0aGlzLnNlbC5wcmltYXJ5KCksIHBvcztcbiAgICAgIGlmIChzdGFydCA9PSBudWxsIHx8IHN0YXJ0ID09IFwiaGVhZFwiKSB7IHBvcyA9IHJhbmdlLmhlYWQ7IH1cbiAgICAgIGVsc2UgaWYgKHN0YXJ0ID09IFwiYW5jaG9yXCIpIHsgcG9zID0gcmFuZ2UuYW5jaG9yOyB9XG4gICAgICBlbHNlIGlmIChzdGFydCA9PSBcImVuZFwiIHx8IHN0YXJ0ID09IFwidG9cIiB8fCBzdGFydCA9PT0gZmFsc2UpIHsgcG9zID0gcmFuZ2UudG8oKTsgfVxuICAgICAgZWxzZSB7IHBvcyA9IHJhbmdlLmZyb20oKTsgfVxuICAgICAgcmV0dXJuIHBvc1xuICAgIH0sXG4gICAgbGlzdFNlbGVjdGlvbnM6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5zZWwucmFuZ2VzIH0sXG4gICAgc29tZXRoaW5nU2VsZWN0ZWQ6IGZ1bmN0aW9uKCkge3JldHVybiB0aGlzLnNlbC5zb21ldGhpbmdTZWxlY3RlZCgpfSxcblxuICAgIHNldEN1cnNvcjogZG9jTWV0aG9kT3AoZnVuY3Rpb24obGluZSwgY2gsIG9wdGlvbnMpIHtcbiAgICAgIHNldFNpbXBsZVNlbGVjdGlvbih0aGlzLCBjbGlwUG9zKHRoaXMsIHR5cGVvZiBsaW5lID09IFwibnVtYmVyXCIgPyBQb3MobGluZSwgY2ggfHwgMCkgOiBsaW5lKSwgbnVsbCwgb3B0aW9ucyk7XG4gICAgfSksXG4gICAgc2V0U2VsZWN0aW9uOiBkb2NNZXRob2RPcChmdW5jdGlvbihhbmNob3IsIGhlYWQsIG9wdGlvbnMpIHtcbiAgICAgIHNldFNpbXBsZVNlbGVjdGlvbih0aGlzLCBjbGlwUG9zKHRoaXMsIGFuY2hvciksIGNsaXBQb3ModGhpcywgaGVhZCB8fCBhbmNob3IpLCBvcHRpb25zKTtcbiAgICB9KSxcbiAgICBleHRlbmRTZWxlY3Rpb246IGRvY01ldGhvZE9wKGZ1bmN0aW9uKGhlYWQsIG90aGVyLCBvcHRpb25zKSB7XG4gICAgICBleHRlbmRTZWxlY3Rpb24odGhpcywgY2xpcFBvcyh0aGlzLCBoZWFkKSwgb3RoZXIgJiYgY2xpcFBvcyh0aGlzLCBvdGhlciksIG9wdGlvbnMpO1xuICAgIH0pLFxuICAgIGV4dGVuZFNlbGVjdGlvbnM6IGRvY01ldGhvZE9wKGZ1bmN0aW9uKGhlYWRzLCBvcHRpb25zKSB7XG4gICAgICBleHRlbmRTZWxlY3Rpb25zKHRoaXMsIGNsaXBQb3NBcnJheSh0aGlzLCBoZWFkcyksIG9wdGlvbnMpO1xuICAgIH0pLFxuICAgIGV4dGVuZFNlbGVjdGlvbnNCeTogZG9jTWV0aG9kT3AoZnVuY3Rpb24oZiwgb3B0aW9ucykge1xuICAgICAgdmFyIGhlYWRzID0gbWFwKHRoaXMuc2VsLnJhbmdlcywgZik7XG4gICAgICBleHRlbmRTZWxlY3Rpb25zKHRoaXMsIGNsaXBQb3NBcnJheSh0aGlzLCBoZWFkcyksIG9wdGlvbnMpO1xuICAgIH0pLFxuICAgIHNldFNlbGVjdGlvbnM6IGRvY01ldGhvZE9wKGZ1bmN0aW9uKHJhbmdlcywgcHJpbWFyeSwgb3B0aW9ucykge1xuICAgICAgaWYgKCFyYW5nZXMubGVuZ3RoKSB7IHJldHVybiB9XG4gICAgICB2YXIgb3V0ID0gW107XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKylcbiAgICAgICAgeyBvdXRbaV0gPSBuZXcgUmFuZ2UoY2xpcFBvcyh0aGlzLCByYW5nZXNbaV0uYW5jaG9yKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBQb3ModGhpcywgcmFuZ2VzW2ldLmhlYWQpKTsgfVxuICAgICAgaWYgKHByaW1hcnkgPT0gbnVsbCkgeyBwcmltYXJ5ID0gTWF0aC5taW4ocmFuZ2VzLmxlbmd0aCAtIDEsIHRoaXMuc2VsLnByaW1JbmRleCk7IH1cbiAgICAgIHNldFNlbGVjdGlvbih0aGlzLCBub3JtYWxpemVTZWxlY3Rpb24odGhpcy5jbSwgb3V0LCBwcmltYXJ5KSwgb3B0aW9ucyk7XG4gICAgfSksXG4gICAgYWRkU2VsZWN0aW9uOiBkb2NNZXRob2RPcChmdW5jdGlvbihhbmNob3IsIGhlYWQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciByYW5nZXMgPSB0aGlzLnNlbC5yYW5nZXMuc2xpY2UoMCk7XG4gICAgICByYW5nZXMucHVzaChuZXcgUmFuZ2UoY2xpcFBvcyh0aGlzLCBhbmNob3IpLCBjbGlwUG9zKHRoaXMsIGhlYWQgfHwgYW5jaG9yKSkpO1xuICAgICAgc2V0U2VsZWN0aW9uKHRoaXMsIG5vcm1hbGl6ZVNlbGVjdGlvbih0aGlzLmNtLCByYW5nZXMsIHJhbmdlcy5sZW5ndGggLSAxKSwgb3B0aW9ucyk7XG4gICAgfSksXG5cbiAgICBnZXRTZWxlY3Rpb246IGZ1bmN0aW9uKGxpbmVTZXApIHtcbiAgICAgIHZhciByYW5nZXMgPSB0aGlzLnNlbC5yYW5nZXMsIGxpbmVzO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNlbCA9IGdldEJldHdlZW4odGhpcywgcmFuZ2VzW2ldLmZyb20oKSwgcmFuZ2VzW2ldLnRvKCkpO1xuICAgICAgICBsaW5lcyA9IGxpbmVzID8gbGluZXMuY29uY2F0KHNlbCkgOiBzZWw7XG4gICAgICB9XG4gICAgICBpZiAobGluZVNlcCA9PT0gZmFsc2UpIHsgcmV0dXJuIGxpbmVzIH1cbiAgICAgIGVsc2UgeyByZXR1cm4gbGluZXMuam9pbihsaW5lU2VwIHx8IHRoaXMubGluZVNlcGFyYXRvcigpKSB9XG4gICAgfSxcbiAgICBnZXRTZWxlY3Rpb25zOiBmdW5jdGlvbihsaW5lU2VwKSB7XG4gICAgICB2YXIgcGFydHMgPSBbXSwgcmFuZ2VzID0gdGhpcy5zZWwucmFuZ2VzO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNlbCA9IGdldEJldHdlZW4odGhpcywgcmFuZ2VzW2ldLmZyb20oKSwgcmFuZ2VzW2ldLnRvKCkpO1xuICAgICAgICBpZiAobGluZVNlcCAhPT0gZmFsc2UpIHsgc2VsID0gc2VsLmpvaW4obGluZVNlcCB8fCB0aGlzLmxpbmVTZXBhcmF0b3IoKSk7IH1cbiAgICAgICAgcGFydHNbaV0gPSBzZWw7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFydHNcbiAgICB9LFxuICAgIHJlcGxhY2VTZWxlY3Rpb246IGZ1bmN0aW9uKGNvZGUsIGNvbGxhcHNlLCBvcmlnaW4pIHtcbiAgICAgIHZhciBkdXAgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zZWwucmFuZ2VzLmxlbmd0aDsgaSsrKVxuICAgICAgICB7IGR1cFtpXSA9IGNvZGU7IH1cbiAgICAgIHRoaXMucmVwbGFjZVNlbGVjdGlvbnMoZHVwLCBjb2xsYXBzZSwgb3JpZ2luIHx8IFwiK2lucHV0XCIpO1xuICAgIH0sXG4gICAgcmVwbGFjZVNlbGVjdGlvbnM6IGRvY01ldGhvZE9wKGZ1bmN0aW9uKGNvZGUsIGNvbGxhcHNlLCBvcmlnaW4pIHtcbiAgICAgIHZhciBjaGFuZ2VzID0gW10sIHNlbCA9IHRoaXMuc2VsO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWwucmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByYW5nZSA9IHNlbC5yYW5nZXNbaV07XG4gICAgICAgIGNoYW5nZXNbaV0gPSB7ZnJvbTogcmFuZ2UuZnJvbSgpLCB0bzogcmFuZ2UudG8oKSwgdGV4dDogdGhpcy5zcGxpdExpbmVzKGNvZGVbaV0pLCBvcmlnaW46IG9yaWdpbn07XG4gICAgICB9XG4gICAgICB2YXIgbmV3U2VsID0gY29sbGFwc2UgJiYgY29sbGFwc2UgIT0gXCJlbmRcIiAmJiBjb21wdXRlUmVwbGFjZWRTZWwodGhpcywgY2hhbmdlcywgY29sbGFwc2UpO1xuICAgICAgZm9yICh2YXIgaSQxID0gY2hhbmdlcy5sZW5ndGggLSAxOyBpJDEgPj0gMDsgaSQxLS0pXG4gICAgICAgIHsgbWFrZUNoYW5nZSh0aGlzLCBjaGFuZ2VzW2kkMV0pOyB9XG4gICAgICBpZiAobmV3U2VsKSB7IHNldFNlbGVjdGlvblJlcGxhY2VIaXN0b3J5KHRoaXMsIG5ld1NlbCk7IH1cbiAgICAgIGVsc2UgaWYgKHRoaXMuY20pIHsgZW5zdXJlQ3Vyc29yVmlzaWJsZSh0aGlzLmNtKTsgfVxuICAgIH0pLFxuICAgIHVuZG86IGRvY01ldGhvZE9wKGZ1bmN0aW9uKCkge21ha2VDaGFuZ2VGcm9tSGlzdG9yeSh0aGlzLCBcInVuZG9cIik7fSksXG4gICAgcmVkbzogZG9jTWV0aG9kT3AoZnVuY3Rpb24oKSB7bWFrZUNoYW5nZUZyb21IaXN0b3J5KHRoaXMsIFwicmVkb1wiKTt9KSxcbiAgICB1bmRvU2VsZWN0aW9uOiBkb2NNZXRob2RPcChmdW5jdGlvbigpIHttYWtlQ2hhbmdlRnJvbUhpc3RvcnkodGhpcywgXCJ1bmRvXCIsIHRydWUpO30pLFxuICAgIHJlZG9TZWxlY3Rpb246IGRvY01ldGhvZE9wKGZ1bmN0aW9uKCkge21ha2VDaGFuZ2VGcm9tSGlzdG9yeSh0aGlzLCBcInJlZG9cIiwgdHJ1ZSk7fSksXG5cbiAgICBzZXRFeHRlbmRpbmc6IGZ1bmN0aW9uKHZhbCkge3RoaXMuZXh0ZW5kID0gdmFsO30sXG4gICAgZ2V0RXh0ZW5kaW5nOiBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5leHRlbmR9LFxuXG4gICAgaGlzdG9yeVNpemU6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGhpc3QgPSB0aGlzLmhpc3RvcnksIGRvbmUgPSAwLCB1bmRvbmUgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoaXN0LmRvbmUubGVuZ3RoOyBpKyspIHsgaWYgKCFoaXN0LmRvbmVbaV0ucmFuZ2VzKSB7ICsrZG9uZTsgfSB9XG4gICAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCBoaXN0LnVuZG9uZS5sZW5ndGg7IGkkMSsrKSB7IGlmICghaGlzdC51bmRvbmVbaSQxXS5yYW5nZXMpIHsgKyt1bmRvbmU7IH0gfVxuICAgICAgcmV0dXJuIHt1bmRvOiBkb25lLCByZWRvOiB1bmRvbmV9XG4gICAgfSxcbiAgICBjbGVhckhpc3Rvcnk6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgIHRoaXMuaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHRoaXMuaGlzdG9yeS5tYXhHZW5lcmF0aW9uKTtcbiAgICAgIGxpbmtlZERvY3ModGhpcywgZnVuY3Rpb24gKGRvYykgeyByZXR1cm4gZG9jLmhpc3RvcnkgPSB0aGlzJDEuaGlzdG9yeTsgfSwgdHJ1ZSk7XG4gICAgfSxcblxuICAgIG1hcmtDbGVhbjogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmNsZWFuR2VuZXJhdGlvbiA9IHRoaXMuY2hhbmdlR2VuZXJhdGlvbih0cnVlKTtcbiAgICB9LFxuICAgIGNoYW5nZUdlbmVyYXRpb246IGZ1bmN0aW9uKGZvcmNlU3BsaXQpIHtcbiAgICAgIGlmIChmb3JjZVNwbGl0KVxuICAgICAgICB7IHRoaXMuaGlzdG9yeS5sYXN0T3AgPSB0aGlzLmhpc3RvcnkubGFzdFNlbE9wID0gdGhpcy5oaXN0b3J5Lmxhc3RPcmlnaW4gPSBudWxsOyB9XG4gICAgICByZXR1cm4gdGhpcy5oaXN0b3J5LmdlbmVyYXRpb25cbiAgICB9LFxuICAgIGlzQ2xlYW46IGZ1bmN0aW9uIChnZW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmhpc3RvcnkuZ2VuZXJhdGlvbiA9PSAoZ2VuIHx8IHRoaXMuY2xlYW5HZW5lcmF0aW9uKVxuICAgIH0sXG5cbiAgICBnZXRIaXN0b3J5OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7ZG9uZTogY29weUhpc3RvcnlBcnJheSh0aGlzLmhpc3RvcnkuZG9uZSksXG4gICAgICAgICAgICAgIHVuZG9uZTogY29weUhpc3RvcnlBcnJheSh0aGlzLmhpc3RvcnkudW5kb25lKX1cbiAgICB9LFxuICAgIHNldEhpc3Rvcnk6IGZ1bmN0aW9uKGhpc3REYXRhKSB7XG4gICAgICB2YXIgaGlzdCA9IHRoaXMuaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHRoaXMuaGlzdG9yeS5tYXhHZW5lcmF0aW9uKTtcbiAgICAgIGhpc3QuZG9uZSA9IGNvcHlIaXN0b3J5QXJyYXkoaGlzdERhdGEuZG9uZS5zbGljZSgwKSwgbnVsbCwgdHJ1ZSk7XG4gICAgICBoaXN0LnVuZG9uZSA9IGNvcHlIaXN0b3J5QXJyYXkoaGlzdERhdGEudW5kb25lLnNsaWNlKDApLCBudWxsLCB0cnVlKTtcbiAgICB9LFxuXG4gICAgc2V0R3V0dGVyTWFya2VyOiBkb2NNZXRob2RPcChmdW5jdGlvbihsaW5lLCBndXR0ZXJJRCwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBjaGFuZ2VMaW5lKHRoaXMsIGxpbmUsIFwiZ3V0dGVyXCIsIGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICAgIHZhciBtYXJrZXJzID0gbGluZS5ndXR0ZXJNYXJrZXJzIHx8IChsaW5lLmd1dHRlck1hcmtlcnMgPSB7fSk7XG4gICAgICAgIG1hcmtlcnNbZ3V0dGVySURdID0gdmFsdWU7XG4gICAgICAgIGlmICghdmFsdWUgJiYgaXNFbXB0eShtYXJrZXJzKSkgeyBsaW5lLmd1dHRlck1hcmtlcnMgPSBudWxsOyB9XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9KVxuICAgIH0pLFxuXG4gICAgY2xlYXJHdXR0ZXI6IGRvY01ldGhvZE9wKGZ1bmN0aW9uKGd1dHRlcklEKSB7XG4gICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgdGhpcy5pdGVyKGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICAgIGlmIChsaW5lLmd1dHRlck1hcmtlcnMgJiYgbGluZS5ndXR0ZXJNYXJrZXJzW2d1dHRlcklEXSkge1xuICAgICAgICAgIGNoYW5nZUxpbmUodGhpcyQxLCBsaW5lLCBcImd1dHRlclwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsaW5lLmd1dHRlck1hcmtlcnNbZ3V0dGVySURdID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChpc0VtcHR5KGxpbmUuZ3V0dGVyTWFya2VycykpIHsgbGluZS5ndXR0ZXJNYXJrZXJzID0gbnVsbDsgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSksXG5cbiAgICBsaW5lSW5mbzogZnVuY3Rpb24obGluZSkge1xuICAgICAgdmFyIG47XG4gICAgICBpZiAodHlwZW9mIGxpbmUgPT0gXCJudW1iZXJcIikge1xuICAgICAgICBpZiAoIWlzTGluZSh0aGlzLCBsaW5lKSkgeyByZXR1cm4gbnVsbCB9XG4gICAgICAgIG4gPSBsaW5lO1xuICAgICAgICBsaW5lID0gZ2V0TGluZSh0aGlzLCBsaW5lKTtcbiAgICAgICAgaWYgKCFsaW5lKSB7IHJldHVybiBudWxsIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG4gPSBsaW5lTm8obGluZSk7XG4gICAgICAgIGlmIChuID09IG51bGwpIHsgcmV0dXJuIG51bGwgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtsaW5lOiBuLCBoYW5kbGU6IGxpbmUsIHRleHQ6IGxpbmUudGV4dCwgZ3V0dGVyTWFya2VyczogbGluZS5ndXR0ZXJNYXJrZXJzLFxuICAgICAgICAgICAgICB0ZXh0Q2xhc3M6IGxpbmUudGV4dENsYXNzLCBiZ0NsYXNzOiBsaW5lLmJnQ2xhc3MsIHdyYXBDbGFzczogbGluZS53cmFwQ2xhc3MsXG4gICAgICAgICAgICAgIHdpZGdldHM6IGxpbmUud2lkZ2V0c31cbiAgICB9LFxuXG4gICAgYWRkTGluZUNsYXNzOiBkb2NNZXRob2RPcChmdW5jdGlvbihoYW5kbGUsIHdoZXJlLCBjbHMpIHtcbiAgICAgIHJldHVybiBjaGFuZ2VMaW5lKHRoaXMsIGhhbmRsZSwgd2hlcmUgPT0gXCJndXR0ZXJcIiA/IFwiZ3V0dGVyXCIgOiBcImNsYXNzXCIsIGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICAgIHZhciBwcm9wID0gd2hlcmUgPT0gXCJ0ZXh0XCIgPyBcInRleHRDbGFzc1wiXG4gICAgICAgICAgICAgICAgIDogd2hlcmUgPT0gXCJiYWNrZ3JvdW5kXCIgPyBcImJnQ2xhc3NcIlxuICAgICAgICAgICAgICAgICA6IHdoZXJlID09IFwiZ3V0dGVyXCIgPyBcImd1dHRlckNsYXNzXCIgOiBcIndyYXBDbGFzc1wiO1xuICAgICAgICBpZiAoIWxpbmVbcHJvcF0pIHsgbGluZVtwcm9wXSA9IGNsczsgfVxuICAgICAgICBlbHNlIGlmIChjbGFzc1Rlc3QoY2xzKS50ZXN0KGxpbmVbcHJvcF0pKSB7IHJldHVybiBmYWxzZSB9XG4gICAgICAgIGVsc2UgeyBsaW5lW3Byb3BdICs9IFwiIFwiICsgY2xzOyB9XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9KVxuICAgIH0pLFxuICAgIHJlbW92ZUxpbmVDbGFzczogZG9jTWV0aG9kT3AoZnVuY3Rpb24oaGFuZGxlLCB3aGVyZSwgY2xzKSB7XG4gICAgICByZXR1cm4gY2hhbmdlTGluZSh0aGlzLCBoYW5kbGUsIHdoZXJlID09IFwiZ3V0dGVyXCIgPyBcImd1dHRlclwiIDogXCJjbGFzc1wiLCBmdW5jdGlvbiAobGluZSkge1xuICAgICAgICB2YXIgcHJvcCA9IHdoZXJlID09IFwidGV4dFwiID8gXCJ0ZXh0Q2xhc3NcIlxuICAgICAgICAgICAgICAgICA6IHdoZXJlID09IFwiYmFja2dyb3VuZFwiID8gXCJiZ0NsYXNzXCJcbiAgICAgICAgICAgICAgICAgOiB3aGVyZSA9PSBcImd1dHRlclwiID8gXCJndXR0ZXJDbGFzc1wiIDogXCJ3cmFwQ2xhc3NcIjtcbiAgICAgICAgdmFyIGN1ciA9IGxpbmVbcHJvcF07XG4gICAgICAgIGlmICghY3VyKSB7IHJldHVybiBmYWxzZSB9XG4gICAgICAgIGVsc2UgaWYgKGNscyA9PSBudWxsKSB7IGxpbmVbcHJvcF0gPSBudWxsOyB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHZhciBmb3VuZCA9IGN1ci5tYXRjaChjbGFzc1Rlc3QoY2xzKSk7XG4gICAgICAgICAgaWYgKCFmb3VuZCkgeyByZXR1cm4gZmFsc2UgfVxuICAgICAgICAgIHZhciBlbmQgPSBmb3VuZC5pbmRleCArIGZvdW5kWzBdLmxlbmd0aDtcbiAgICAgICAgICBsaW5lW3Byb3BdID0gY3VyLnNsaWNlKDAsIGZvdW5kLmluZGV4KSArICghZm91bmQuaW5kZXggfHwgZW5kID09IGN1ci5sZW5ndGggPyBcIlwiIDogXCIgXCIpICsgY3VyLnNsaWNlKGVuZCkgfHwgbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSlcbiAgICB9KSxcblxuICAgIGFkZExpbmVXaWRnZXQ6IGRvY01ldGhvZE9wKGZ1bmN0aW9uKGhhbmRsZSwgbm9kZSwgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIGFkZExpbmVXaWRnZXQodGhpcywgaGFuZGxlLCBub2RlLCBvcHRpb25zKVxuICAgIH0pLFxuICAgIHJlbW92ZUxpbmVXaWRnZXQ6IGZ1bmN0aW9uKHdpZGdldCkgeyB3aWRnZXQuY2xlYXIoKTsgfSxcblxuICAgIG1hcmtUZXh0OiBmdW5jdGlvbihmcm9tLCB0bywgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIG1hcmtUZXh0KHRoaXMsIGNsaXBQb3ModGhpcywgZnJvbSksIGNsaXBQb3ModGhpcywgdG8pLCBvcHRpb25zLCBvcHRpb25zICYmIG9wdGlvbnMudHlwZSB8fCBcInJhbmdlXCIpXG4gICAgfSxcbiAgICBzZXRCb29rbWFyazogZnVuY3Rpb24ocG9zLCBvcHRpb25zKSB7XG4gICAgICB2YXIgcmVhbE9wdHMgPSB7cmVwbGFjZWRXaXRoOiBvcHRpb25zICYmIChvcHRpb25zLm5vZGVUeXBlID09IG51bGwgPyBvcHRpb25zLndpZGdldCA6IG9wdGlvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgIGluc2VydExlZnQ6IG9wdGlvbnMgJiYgb3B0aW9ucy5pbnNlcnRMZWZ0LFxuICAgICAgICAgICAgICAgICAgICAgIGNsZWFyV2hlbkVtcHR5OiBmYWxzZSwgc2hhcmVkOiBvcHRpb25zICYmIG9wdGlvbnMuc2hhcmVkLFxuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU1vdXNlRXZlbnRzOiBvcHRpb25zICYmIG9wdGlvbnMuaGFuZGxlTW91c2VFdmVudHN9O1xuICAgICAgcG9zID0gY2xpcFBvcyh0aGlzLCBwb3MpO1xuICAgICAgcmV0dXJuIG1hcmtUZXh0KHRoaXMsIHBvcywgcG9zLCByZWFsT3B0cywgXCJib29rbWFya1wiKVxuICAgIH0sXG4gICAgZmluZE1hcmtzQXQ6IGZ1bmN0aW9uKHBvcykge1xuICAgICAgcG9zID0gY2xpcFBvcyh0aGlzLCBwb3MpO1xuICAgICAgdmFyIG1hcmtlcnMgPSBbXSwgc3BhbnMgPSBnZXRMaW5lKHRoaXMsIHBvcy5saW5lKS5tYXJrZWRTcGFucztcbiAgICAgIGlmIChzcGFucykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHNwYW5zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBzcGFuID0gc3BhbnNbaV07XG4gICAgICAgIGlmICgoc3Bhbi5mcm9tID09IG51bGwgfHwgc3Bhbi5mcm9tIDw9IHBvcy5jaCkgJiZcbiAgICAgICAgICAgIChzcGFuLnRvID09IG51bGwgfHwgc3Bhbi50byA+PSBwb3MuY2gpKVxuICAgICAgICAgIHsgbWFya2Vycy5wdXNoKHNwYW4ubWFya2VyLnBhcmVudCB8fCBzcGFuLm1hcmtlcik7IH1cbiAgICAgIH0gfVxuICAgICAgcmV0dXJuIG1hcmtlcnNcbiAgICB9LFxuICAgIGZpbmRNYXJrczogZnVuY3Rpb24oZnJvbSwgdG8sIGZpbHRlcikge1xuICAgICAgZnJvbSA9IGNsaXBQb3ModGhpcywgZnJvbSk7IHRvID0gY2xpcFBvcyh0aGlzLCB0byk7XG4gICAgICB2YXIgZm91bmQgPSBbXSwgbGluZU5vID0gZnJvbS5saW5lO1xuICAgICAgdGhpcy5pdGVyKGZyb20ubGluZSwgdG8ubGluZSArIDEsIGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICAgIHZhciBzcGFucyA9IGxpbmUubWFya2VkU3BhbnM7XG4gICAgICAgIGlmIChzcGFucykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHNwYW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIHNwYW4gPSBzcGFuc1tpXTtcbiAgICAgICAgICBpZiAoIShzcGFuLnRvICE9IG51bGwgJiYgbGluZU5vID09IGZyb20ubGluZSAmJiBmcm9tLmNoID49IHNwYW4udG8gfHxcbiAgICAgICAgICAgICAgICBzcGFuLmZyb20gPT0gbnVsbCAmJiBsaW5lTm8gIT0gZnJvbS5saW5lIHx8XG4gICAgICAgICAgICAgICAgc3Bhbi5mcm9tICE9IG51bGwgJiYgbGluZU5vID09IHRvLmxpbmUgJiYgc3Bhbi5mcm9tID49IHRvLmNoKSAmJlxuICAgICAgICAgICAgICAoIWZpbHRlciB8fCBmaWx0ZXIoc3Bhbi5tYXJrZXIpKSlcbiAgICAgICAgICAgIHsgZm91bmQucHVzaChzcGFuLm1hcmtlci5wYXJlbnQgfHwgc3Bhbi5tYXJrZXIpOyB9XG4gICAgICAgIH0gfVxuICAgICAgICArK2xpbmVObztcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZvdW5kXG4gICAgfSxcbiAgICBnZXRBbGxNYXJrczogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbWFya2VycyA9IFtdO1xuICAgICAgdGhpcy5pdGVyKGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICAgIHZhciBzcHMgPSBsaW5lLm1hcmtlZFNwYW5zO1xuICAgICAgICBpZiAoc3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgc3BzLmxlbmd0aDsgKytpKVxuICAgICAgICAgIHsgaWYgKHNwc1tpXS5mcm9tICE9IG51bGwpIHsgbWFya2Vycy5wdXNoKHNwc1tpXS5tYXJrZXIpOyB9IH0gfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gbWFya2Vyc1xuICAgIH0sXG5cbiAgICBwb3NGcm9tSW5kZXg6IGZ1bmN0aW9uKG9mZikge1xuICAgICAgdmFyIGNoLCBsaW5lTm8gPSB0aGlzLmZpcnN0LCBzZXBTaXplID0gdGhpcy5saW5lU2VwYXJhdG9yKCkubGVuZ3RoO1xuICAgICAgdGhpcy5pdGVyKGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICAgIHZhciBzeiA9IGxpbmUudGV4dC5sZW5ndGggKyBzZXBTaXplO1xuICAgICAgICBpZiAoc3ogPiBvZmYpIHsgY2ggPSBvZmY7IHJldHVybiB0cnVlIH1cbiAgICAgICAgb2ZmIC09IHN6O1xuICAgICAgICArK2xpbmVObztcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGNsaXBQb3ModGhpcywgUG9zKGxpbmVObywgY2gpKVxuICAgIH0sXG4gICAgaW5kZXhGcm9tUG9zOiBmdW5jdGlvbiAoY29vcmRzKSB7XG4gICAgICBjb29yZHMgPSBjbGlwUG9zKHRoaXMsIGNvb3Jkcyk7XG4gICAgICB2YXIgaW5kZXggPSBjb29yZHMuY2g7XG4gICAgICBpZiAoY29vcmRzLmxpbmUgPCB0aGlzLmZpcnN0IHx8IGNvb3Jkcy5jaCA8IDApIHsgcmV0dXJuIDAgfVxuICAgICAgdmFyIHNlcFNpemUgPSB0aGlzLmxpbmVTZXBhcmF0b3IoKS5sZW5ndGg7XG4gICAgICB0aGlzLml0ZXIodGhpcy5maXJzdCwgY29vcmRzLmxpbmUsIGZ1bmN0aW9uIChsaW5lKSB7IC8vIGl0ZXIgYWJvcnRzIHdoZW4gY2FsbGJhY2sgcmV0dXJucyBhIHRydXRoeSB2YWx1ZVxuICAgICAgICBpbmRleCArPSBsaW5lLnRleHQubGVuZ3RoICsgc2VwU2l6ZTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGluZGV4XG4gICAgfSxcblxuICAgIGNvcHk6IGZ1bmN0aW9uKGNvcHlIaXN0b3J5KSB7XG4gICAgICB2YXIgZG9jID0gbmV3IERvYyhnZXRMaW5lcyh0aGlzLCB0aGlzLmZpcnN0LCB0aGlzLmZpcnN0ICsgdGhpcy5zaXplKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9kZU9wdGlvbiwgdGhpcy5maXJzdCwgdGhpcy5saW5lU2VwLCB0aGlzLmRpcmVjdGlvbik7XG4gICAgICBkb2Muc2Nyb2xsVG9wID0gdGhpcy5zY3JvbGxUb3A7IGRvYy5zY3JvbGxMZWZ0ID0gdGhpcy5zY3JvbGxMZWZ0O1xuICAgICAgZG9jLnNlbCA9IHRoaXMuc2VsO1xuICAgICAgZG9jLmV4dGVuZCA9IGZhbHNlO1xuICAgICAgaWYgKGNvcHlIaXN0b3J5KSB7XG4gICAgICAgIGRvYy5oaXN0b3J5LnVuZG9EZXB0aCA9IHRoaXMuaGlzdG9yeS51bmRvRGVwdGg7XG4gICAgICAgIGRvYy5zZXRIaXN0b3J5KHRoaXMuZ2V0SGlzdG9yeSgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkb2NcbiAgICB9LFxuXG4gICAgbGlua2VkRG9jOiBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgICBpZiAoIW9wdGlvbnMpIHsgb3B0aW9ucyA9IHt9OyB9XG4gICAgICB2YXIgZnJvbSA9IHRoaXMuZmlyc3QsIHRvID0gdGhpcy5maXJzdCArIHRoaXMuc2l6ZTtcbiAgICAgIGlmIChvcHRpb25zLmZyb20gIT0gbnVsbCAmJiBvcHRpb25zLmZyb20gPiBmcm9tKSB7IGZyb20gPSBvcHRpb25zLmZyb207IH1cbiAgICAgIGlmIChvcHRpb25zLnRvICE9IG51bGwgJiYgb3B0aW9ucy50byA8IHRvKSB7IHRvID0gb3B0aW9ucy50bzsgfVxuICAgICAgdmFyIGNvcHkgPSBuZXcgRG9jKGdldExpbmVzKHRoaXMsIGZyb20sIHRvKSwgb3B0aW9ucy5tb2RlIHx8IHRoaXMubW9kZU9wdGlvbiwgZnJvbSwgdGhpcy5saW5lU2VwLCB0aGlzLmRpcmVjdGlvbik7XG4gICAgICBpZiAob3B0aW9ucy5zaGFyZWRIaXN0KSB7IGNvcHkuaGlzdG9yeSA9IHRoaXMuaGlzdG9yeVxuICAgICAgOyB9KHRoaXMubGlua2VkIHx8ICh0aGlzLmxpbmtlZCA9IFtdKSkucHVzaCh7ZG9jOiBjb3B5LCBzaGFyZWRIaXN0OiBvcHRpb25zLnNoYXJlZEhpc3R9KTtcbiAgICAgIGNvcHkubGlua2VkID0gW3tkb2M6IHRoaXMsIGlzUGFyZW50OiB0cnVlLCBzaGFyZWRIaXN0OiBvcHRpb25zLnNoYXJlZEhpc3R9XTtcbiAgICAgIGNvcHlTaGFyZWRNYXJrZXJzKGNvcHksIGZpbmRTaGFyZWRNYXJrZXJzKHRoaXMpKTtcbiAgICAgIHJldHVybiBjb3B5XG4gICAgfSxcbiAgICB1bmxpbmtEb2M6IGZ1bmN0aW9uKG90aGVyKSB7XG4gICAgICBpZiAob3RoZXIgaW5zdGFuY2VvZiBDb2RlTWlycm9yKSB7IG90aGVyID0gb3RoZXIuZG9jOyB9XG4gICAgICBpZiAodGhpcy5saW5rZWQpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxpbmtlZC5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgbGluayA9IHRoaXMubGlua2VkW2ldO1xuICAgICAgICBpZiAobGluay5kb2MgIT0gb3RoZXIpIHsgY29udGludWUgfVxuICAgICAgICB0aGlzLmxpbmtlZC5zcGxpY2UoaSwgMSk7XG4gICAgICAgIG90aGVyLnVubGlua0RvYyh0aGlzKTtcbiAgICAgICAgZGV0YWNoU2hhcmVkTWFya2VycyhmaW5kU2hhcmVkTWFya2Vycyh0aGlzKSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9IH1cbiAgICAgIC8vIElmIHRoZSBoaXN0b3JpZXMgd2VyZSBzaGFyZWQsIHNwbGl0IHRoZW0gYWdhaW5cbiAgICAgIGlmIChvdGhlci5oaXN0b3J5ID09IHRoaXMuaGlzdG9yeSkge1xuICAgICAgICB2YXIgc3BsaXRJZHMgPSBbb3RoZXIuaWRdO1xuICAgICAgICBsaW5rZWREb2NzKG90aGVyLCBmdW5jdGlvbiAoZG9jKSB7IHJldHVybiBzcGxpdElkcy5wdXNoKGRvYy5pZCk7IH0sIHRydWUpO1xuICAgICAgICBvdGhlci5oaXN0b3J5ID0gbmV3IEhpc3RvcnkobnVsbCk7XG4gICAgICAgIG90aGVyLmhpc3RvcnkuZG9uZSA9IGNvcHlIaXN0b3J5QXJyYXkodGhpcy5oaXN0b3J5LmRvbmUsIHNwbGl0SWRzKTtcbiAgICAgICAgb3RoZXIuaGlzdG9yeS51bmRvbmUgPSBjb3B5SGlzdG9yeUFycmF5KHRoaXMuaGlzdG9yeS51bmRvbmUsIHNwbGl0SWRzKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGl0ZXJMaW5rZWREb2NzOiBmdW5jdGlvbihmKSB7bGlua2VkRG9jcyh0aGlzLCBmKTt9LFxuXG4gICAgZ2V0TW9kZTogZnVuY3Rpb24oKSB7cmV0dXJuIHRoaXMubW9kZX0sXG4gICAgZ2V0RWRpdG9yOiBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5jbX0sXG5cbiAgICBzcGxpdExpbmVzOiBmdW5jdGlvbihzdHIpIHtcbiAgICAgIGlmICh0aGlzLmxpbmVTZXApIHsgcmV0dXJuIHN0ci5zcGxpdCh0aGlzLmxpbmVTZXApIH1cbiAgICAgIHJldHVybiBzcGxpdExpbmVzQXV0byhzdHIpXG4gICAgfSxcbiAgICBsaW5lU2VwYXJhdG9yOiBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMubGluZVNlcCB8fCBcIlxcblwiIH0sXG5cbiAgICBzZXREaXJlY3Rpb246IGRvY01ldGhvZE9wKGZ1bmN0aW9uIChkaXIpIHtcbiAgICAgIGlmIChkaXIgIT0gXCJydGxcIikgeyBkaXIgPSBcImx0clwiOyB9XG4gICAgICBpZiAoZGlyID09IHRoaXMuZGlyZWN0aW9uKSB7IHJldHVybiB9XG4gICAgICB0aGlzLmRpcmVjdGlvbiA9IGRpcjtcbiAgICAgIHRoaXMuaXRlcihmdW5jdGlvbiAobGluZSkgeyByZXR1cm4gbGluZS5vcmRlciA9IG51bGw7IH0pO1xuICAgICAgaWYgKHRoaXMuY20pIHsgZGlyZWN0aW9uQ2hhbmdlZCh0aGlzLmNtKTsgfVxuICAgIH0pXG4gIH0pO1xuXG4gIC8vIFB1YmxpYyBhbGlhcy5cbiAgRG9jLnByb3RvdHlwZS5lYWNoTGluZSA9IERvYy5wcm90b3R5cGUuaXRlcjtcblxuICAvLyBLbHVkZ2UgdG8gd29yayBhcm91bmQgc3RyYW5nZSBJRSBiZWhhdmlvciB3aGVyZSBpdCdsbCBzb21ldGltZXNcbiAgLy8gcmUtZmlyZSBhIHNlcmllcyBvZiBkcmFnLXJlbGF0ZWQgZXZlbnRzIHJpZ2h0IGFmdGVyIHRoZSBkcm9wICgjMTU1MSlcbiAgdmFyIGxhc3REcm9wID0gMDtcblxuICBmdW5jdGlvbiBvbkRyb3AoZSkge1xuICAgIHZhciBjbSA9IHRoaXM7XG4gICAgY2xlYXJEcmFnQ3Vyc29yKGNtKTtcbiAgICBpZiAoc2lnbmFsRE9NRXZlbnQoY20sIGUpIHx8IGV2ZW50SW5XaWRnZXQoY20uZGlzcGxheSwgZSkpXG4gICAgICB7IHJldHVybiB9XG4gICAgZV9wcmV2ZW50RGVmYXVsdChlKTtcbiAgICBpZiAoaWUpIHsgbGFzdERyb3AgPSArbmV3IERhdGU7IH1cbiAgICB2YXIgcG9zID0gcG9zRnJvbU1vdXNlKGNtLCBlLCB0cnVlKSwgZmlsZXMgPSBlLmRhdGFUcmFuc2Zlci5maWxlcztcbiAgICBpZiAoIXBvcyB8fCBjbS5pc1JlYWRPbmx5KCkpIHsgcmV0dXJuIH1cbiAgICAvLyBNaWdodCBiZSBhIGZpbGUgZHJvcCwgaW4gd2hpY2ggY2FzZSB3ZSBzaW1wbHkgZXh0cmFjdCB0aGUgdGV4dFxuICAgIC8vIGFuZCBpbnNlcnQgaXQuXG4gICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCAmJiB3aW5kb3cuRmlsZVJlYWRlciAmJiB3aW5kb3cuRmlsZSkge1xuICAgICAgdmFyIG4gPSBmaWxlcy5sZW5ndGgsIHRleHQgPSBBcnJheShuKSwgcmVhZCA9IDA7XG4gICAgICB2YXIgbWFya0FzUmVhZEFuZFBhc3RlSWZBbGxGaWxlc0FyZVJlYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICgrK3JlYWQgPT0gbikge1xuICAgICAgICAgIG9wZXJhdGlvbihjbSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcG9zID0gY2xpcFBvcyhjbS5kb2MsIHBvcyk7XG4gICAgICAgICAgICB2YXIgY2hhbmdlID0ge2Zyb206IHBvcywgdG86IHBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogY20uZG9jLnNwbGl0TGluZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LmZpbHRlcihmdW5jdGlvbiAodCkgeyByZXR1cm4gdCAhPSBudWxsOyB9KS5qb2luKGNtLmRvYy5saW5lU2VwYXJhdG9yKCkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiBcInBhc3RlXCJ9O1xuICAgICAgICAgICAgbWFrZUNoYW5nZShjbS5kb2MsIGNoYW5nZSk7XG4gICAgICAgICAgICBzZXRTZWxlY3Rpb25SZXBsYWNlSGlzdG9yeShjbS5kb2MsIHNpbXBsZVNlbGVjdGlvbihjbGlwUG9zKGNtLmRvYywgcG9zKSwgY2xpcFBvcyhjbS5kb2MsIGNoYW5nZUVuZChjaGFuZ2UpKSkpO1xuICAgICAgICAgIH0pKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB2YXIgcmVhZFRleHRGcm9tRmlsZSA9IGZ1bmN0aW9uIChmaWxlLCBpKSB7XG4gICAgICAgIGlmIChjbS5vcHRpb25zLmFsbG93RHJvcEZpbGVUeXBlcyAmJlxuICAgICAgICAgICAgaW5kZXhPZihjbS5vcHRpb25zLmFsbG93RHJvcEZpbGVUeXBlcywgZmlsZS50eXBlKSA9PSAtMSkge1xuICAgICAgICAgIG1hcmtBc1JlYWRBbmRQYXN0ZUlmQWxsRmlsZXNBcmVSZWFkKCk7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyO1xuICAgICAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1hcmtBc1JlYWRBbmRQYXN0ZUlmQWxsRmlsZXNBcmVSZWFkKCk7IH07XG4gICAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIGNvbnRlbnQgPSByZWFkZXIucmVzdWx0O1xuICAgICAgICAgIGlmICgvW1xceDAwLVxceDA4XFx4MGUtXFx4MWZdezJ9Ly50ZXN0KGNvbnRlbnQpKSB7XG4gICAgICAgICAgICBtYXJrQXNSZWFkQW5kUGFzdGVJZkFsbEZpbGVzQXJlUmVhZCgpO1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIHRleHRbaV0gPSBjb250ZW50O1xuICAgICAgICAgIG1hcmtBc1JlYWRBbmRQYXN0ZUlmQWxsRmlsZXNBcmVSZWFkKCk7XG4gICAgICAgIH07XG4gICAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICAgICAgfTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHsgcmVhZFRleHRGcm9tRmlsZShmaWxlc1tpXSwgaSk7IH1cbiAgICB9IGVsc2UgeyAvLyBOb3JtYWwgZHJvcFxuICAgICAgLy8gRG9uJ3QgZG8gYSByZXBsYWNlIGlmIHRoZSBkcm9wIGhhcHBlbmVkIGluc2lkZSBvZiB0aGUgc2VsZWN0ZWQgdGV4dC5cbiAgICAgIGlmIChjbS5zdGF0ZS5kcmFnZ2luZ1RleHQgJiYgY20uZG9jLnNlbC5jb250YWlucyhwb3MpID4gLTEpIHtcbiAgICAgICAgY20uc3RhdGUuZHJhZ2dpbmdUZXh0KGUpO1xuICAgICAgICAvLyBFbnN1cmUgdGhlIGVkaXRvciBpcyByZS1mb2N1c2VkXG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gY20uZGlzcGxheS5pbnB1dC5mb2N1cygpOyB9LCAyMCk7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHRleHQkMSA9IGUuZGF0YVRyYW5zZmVyLmdldERhdGEoXCJUZXh0XCIpO1xuICAgICAgICBpZiAodGV4dCQxKSB7XG4gICAgICAgICAgdmFyIHNlbGVjdGVkO1xuICAgICAgICAgIGlmIChjbS5zdGF0ZS5kcmFnZ2luZ1RleHQgJiYgIWNtLnN0YXRlLmRyYWdnaW5nVGV4dC5jb3B5KVxuICAgICAgICAgICAgeyBzZWxlY3RlZCA9IGNtLmxpc3RTZWxlY3Rpb25zKCk7IH1cbiAgICAgICAgICBzZXRTZWxlY3Rpb25Ob1VuZG8oY20uZG9jLCBzaW1wbGVTZWxlY3Rpb24ocG9zLCBwb3MpKTtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHsgZm9yICh2YXIgaSQxID0gMDsgaSQxIDwgc2VsZWN0ZWQubGVuZ3RoOyArK2kkMSlcbiAgICAgICAgICAgIHsgcmVwbGFjZVJhbmdlKGNtLmRvYywgXCJcIiwgc2VsZWN0ZWRbaSQxXS5hbmNob3IsIHNlbGVjdGVkW2kkMV0uaGVhZCwgXCJkcmFnXCIpOyB9IH1cbiAgICAgICAgICBjbS5yZXBsYWNlU2VsZWN0aW9uKHRleHQkMSwgXCJhcm91bmRcIiwgXCJwYXN0ZVwiKTtcbiAgICAgICAgICBjbS5kaXNwbGF5LmlucHV0LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNhdGNoKGUkMSl7fVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRHJhZ1N0YXJ0KGNtLCBlKSB7XG4gICAgaWYgKGllICYmICghY20uc3RhdGUuZHJhZ2dpbmdUZXh0IHx8ICtuZXcgRGF0ZSAtIGxhc3REcm9wIDwgMTAwKSkgeyBlX3N0b3AoZSk7IHJldHVybiB9XG4gICAgaWYgKHNpZ25hbERPTUV2ZW50KGNtLCBlKSB8fCBldmVudEluV2lkZ2V0KGNtLmRpc3BsYXksIGUpKSB7IHJldHVybiB9XG5cbiAgICBlLmRhdGFUcmFuc2Zlci5zZXREYXRhKFwiVGV4dFwiLCBjbS5nZXRTZWxlY3Rpb24oKSk7XG4gICAgZS5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9IFwiY29weU1vdmVcIjtcblxuICAgIC8vIFVzZSBkdW1teSBpbWFnZSBpbnN0ZWFkIG9mIGRlZmF1bHQgYnJvd3NlcnMgaW1hZ2UuXG4gICAgLy8gUmVjZW50IFNhZmFyaSAofjYuMC4yKSBoYXZlIGEgdGVuZGVuY3kgdG8gc2VnZmF1bHQgd2hlbiB0aGlzIGhhcHBlbnMsIHNvIHdlIGRvbid0IGRvIGl0IHRoZXJlLlxuICAgIGlmIChlLmRhdGFUcmFuc2Zlci5zZXREcmFnSW1hZ2UgJiYgIXNhZmFyaSkge1xuICAgICAgdmFyIGltZyA9IGVsdChcImltZ1wiLCBudWxsLCBudWxsLCBcInBvc2l0aW9uOiBmaXhlZDsgbGVmdDogMDsgdG9wOiAwO1wiKTtcbiAgICAgIGltZy5zcmMgPSBcImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBQUFBQUNINUJBRUtBQUVBTEFBQUFBQUJBQUVBQUFJQ1RBRUFPdz09XCI7XG4gICAgICBpZiAocHJlc3RvKSB7XG4gICAgICAgIGltZy53aWR0aCA9IGltZy5oZWlnaHQgPSAxO1xuICAgICAgICBjbS5kaXNwbGF5LndyYXBwZXIuYXBwZW5kQ2hpbGQoaW1nKTtcbiAgICAgICAgLy8gRm9yY2UgYSByZWxheW91dCwgb3IgT3BlcmEgd29uJ3QgdXNlIG91ciBpbWFnZSBmb3Igc29tZSBvYnNjdXJlIHJlYXNvblxuICAgICAgICBpbWcuX3RvcCA9IGltZy5vZmZzZXRUb3A7XG4gICAgICB9XG4gICAgICBlLmRhdGFUcmFuc2Zlci5zZXREcmFnSW1hZ2UoaW1nLCAwLCAwKTtcbiAgICAgIGlmIChwcmVzdG8pIHsgaW1nLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaW1nKTsgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRHJhZ092ZXIoY20sIGUpIHtcbiAgICB2YXIgcG9zID0gcG9zRnJvbU1vdXNlKGNtLCBlKTtcbiAgICBpZiAoIXBvcykgeyByZXR1cm4gfVxuICAgIHZhciBmcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgIGRyYXdTZWxlY3Rpb25DdXJzb3IoY20sIHBvcywgZnJhZyk7XG4gICAgaWYgKCFjbS5kaXNwbGF5LmRyYWdDdXJzb3IpIHtcbiAgICAgIGNtLmRpc3BsYXkuZHJhZ0N1cnNvciA9IGVsdChcImRpdlwiLCBudWxsLCBcIkNvZGVNaXJyb3ItY3Vyc29ycyBDb2RlTWlycm9yLWRyYWdjdXJzb3JzXCIpO1xuICAgICAgY20uZGlzcGxheS5saW5lU3BhY2UuaW5zZXJ0QmVmb3JlKGNtLmRpc3BsYXkuZHJhZ0N1cnNvciwgY20uZGlzcGxheS5jdXJzb3JEaXYpO1xuICAgIH1cbiAgICByZW1vdmVDaGlsZHJlbkFuZEFkZChjbS5kaXNwbGF5LmRyYWdDdXJzb3IsIGZyYWcpO1xuICB9XG5cbiAgZnVuY3Rpb24gY2xlYXJEcmFnQ3Vyc29yKGNtKSB7XG4gICAgaWYgKGNtLmRpc3BsYXkuZHJhZ0N1cnNvcikge1xuICAgICAgY20uZGlzcGxheS5saW5lU3BhY2UucmVtb3ZlQ2hpbGQoY20uZGlzcGxheS5kcmFnQ3Vyc29yKTtcbiAgICAgIGNtLmRpc3BsYXkuZHJhZ0N1cnNvciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLy8gVGhlc2UgbXVzdCBiZSBoYW5kbGVkIGNhcmVmdWxseSwgYmVjYXVzZSBuYWl2ZWx5IHJlZ2lzdGVyaW5nIGFcbiAgLy8gaGFuZGxlciBmb3IgZWFjaCBlZGl0b3Igd2lsbCBjYXVzZSB0aGUgZWRpdG9ycyB0byBuZXZlciBiZVxuICAvLyBnYXJiYWdlIGNvbGxlY3RlZC5cblxuICBmdW5jdGlvbiBmb3JFYWNoQ29kZU1pcnJvcihmKSB7XG4gICAgaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSB7IHJldHVybiB9XG4gICAgdmFyIGJ5Q2xhc3MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiQ29kZU1pcnJvclwiKSwgZWRpdG9ycyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnlDbGFzcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNtID0gYnlDbGFzc1tpXS5Db2RlTWlycm9yO1xuICAgICAgaWYgKGNtKSB7IGVkaXRvcnMucHVzaChjbSk7IH1cbiAgICB9XG4gICAgaWYgKGVkaXRvcnMubGVuZ3RoKSB7IGVkaXRvcnNbMF0ub3BlcmF0aW9uKGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRpdG9ycy5sZW5ndGg7IGkrKykgeyBmKGVkaXRvcnNbaV0pOyB9XG4gICAgfSk7IH1cbiAgfVxuXG4gIHZhciBnbG9iYWxzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBlbnN1cmVHbG9iYWxIYW5kbGVycygpIHtcbiAgICBpZiAoZ2xvYmFsc1JlZ2lzdGVyZWQpIHsgcmV0dXJuIH1cbiAgICByZWdpc3Rlckdsb2JhbEhhbmRsZXJzKCk7XG4gICAgZ2xvYmFsc1JlZ2lzdGVyZWQgPSB0cnVlO1xuICB9XG4gIGZ1bmN0aW9uIHJlZ2lzdGVyR2xvYmFsSGFuZGxlcnMoKSB7XG4gICAgLy8gV2hlbiB0aGUgd2luZG93IHJlc2l6ZXMsIHdlIG5lZWQgdG8gcmVmcmVzaCBhY3RpdmUgZWRpdG9ycy5cbiAgICB2YXIgcmVzaXplVGltZXI7XG4gICAgb24od2luZG93LCBcInJlc2l6ZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAocmVzaXplVGltZXIgPT0gbnVsbCkgeyByZXNpemVUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXNpemVUaW1lciA9IG51bGw7XG4gICAgICAgIGZvckVhY2hDb2RlTWlycm9yKG9uUmVzaXplKTtcbiAgICAgIH0sIDEwMCk7IH1cbiAgICB9KTtcbiAgICAvLyBXaGVuIHRoZSB3aW5kb3cgbG9zZXMgZm9jdXMsIHdlIHdhbnQgdG8gc2hvdyB0aGUgZWRpdG9yIGFzIGJsdXJyZWRcbiAgICBvbih3aW5kb3csIFwiYmx1clwiLCBmdW5jdGlvbiAoKSB7IHJldHVybiBmb3JFYWNoQ29kZU1pcnJvcihvbkJsdXIpOyB9KTtcbiAgfVxuICAvLyBDYWxsZWQgd2hlbiB0aGUgd2luZG93IHJlc2l6ZXNcbiAgZnVuY3Rpb24gb25SZXNpemUoY20pIHtcbiAgICB2YXIgZCA9IGNtLmRpc3BsYXk7XG4gICAgLy8gTWlnaHQgYmUgYSB0ZXh0IHNjYWxpbmcgb3BlcmF0aW9uLCBjbGVhciBzaXplIGNhY2hlcy5cbiAgICBkLmNhY2hlZENoYXJXaWR0aCA9IGQuY2FjaGVkVGV4dEhlaWdodCA9IGQuY2FjaGVkUGFkZGluZ0ggPSBudWxsO1xuICAgIGQuc2Nyb2xsYmFyc0NsaXBwZWQgPSBmYWxzZTtcbiAgICBjbS5zZXRTaXplKCk7XG4gIH1cblxuICB2YXIga2V5TmFtZXMgPSB7XG4gICAgMzogXCJQYXVzZVwiLCA4OiBcIkJhY2tzcGFjZVwiLCA5OiBcIlRhYlwiLCAxMzogXCJFbnRlclwiLCAxNjogXCJTaGlmdFwiLCAxNzogXCJDdHJsXCIsIDE4OiBcIkFsdFwiLFxuICAgIDE5OiBcIlBhdXNlXCIsIDIwOiBcIkNhcHNMb2NrXCIsIDI3OiBcIkVzY1wiLCAzMjogXCJTcGFjZVwiLCAzMzogXCJQYWdlVXBcIiwgMzQ6IFwiUGFnZURvd25cIiwgMzU6IFwiRW5kXCIsXG4gICAgMzY6IFwiSG9tZVwiLCAzNzogXCJMZWZ0XCIsIDM4OiBcIlVwXCIsIDM5OiBcIlJpZ2h0XCIsIDQwOiBcIkRvd25cIiwgNDQ6IFwiUHJpbnRTY3JuXCIsIDQ1OiBcIkluc2VydFwiLFxuICAgIDQ2OiBcIkRlbGV0ZVwiLCA1OTogXCI7XCIsIDYxOiBcIj1cIiwgOTE6IFwiTW9kXCIsIDkyOiBcIk1vZFwiLCA5MzogXCJNb2RcIixcbiAgICAxMDY6IFwiKlwiLCAxMDc6IFwiPVwiLCAxMDk6IFwiLVwiLCAxMTA6IFwiLlwiLCAxMTE6IFwiL1wiLCAxNDU6IFwiU2Nyb2xsTG9ja1wiLFxuICAgIDE3MzogXCItXCIsIDE4NjogXCI7XCIsIDE4NzogXCI9XCIsIDE4ODogXCIsXCIsIDE4OTogXCItXCIsIDE5MDogXCIuXCIsIDE5MTogXCIvXCIsIDE5MjogXCJgXCIsIDIxOTogXCJbXCIsIDIyMDogXCJcXFxcXCIsXG4gICAgMjIxOiBcIl1cIiwgMjIyOiBcIidcIiwgMjI0OiBcIk1vZFwiLCA2MzIzMjogXCJVcFwiLCA2MzIzMzogXCJEb3duXCIsIDYzMjM0OiBcIkxlZnRcIiwgNjMyMzU6IFwiUmlnaHRcIiwgNjMyNzI6IFwiRGVsZXRlXCIsXG4gICAgNjMyNzM6IFwiSG9tZVwiLCA2MzI3NTogXCJFbmRcIiwgNjMyNzY6IFwiUGFnZVVwXCIsIDYzMjc3OiBcIlBhZ2VEb3duXCIsIDYzMzAyOiBcIkluc2VydFwiXG4gIH07XG5cbiAgLy8gTnVtYmVyIGtleXNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7IGtleU5hbWVzW2kgKyA0OF0gPSBrZXlOYW1lc1tpICsgOTZdID0gU3RyaW5nKGkpOyB9XG4gIC8vIEFscGhhYmV0aWMga2V5c1xuICBmb3IgKHZhciBpJDEgPSA2NTsgaSQxIDw9IDkwOyBpJDErKykgeyBrZXlOYW1lc1tpJDFdID0gU3RyaW5nLmZyb21DaGFyQ29kZShpJDEpOyB9XG4gIC8vIEZ1bmN0aW9uIGtleXNcbiAgZm9yICh2YXIgaSQyID0gMTsgaSQyIDw9IDEyOyBpJDIrKykgeyBrZXlOYW1lc1tpJDIgKyAxMTFdID0ga2V5TmFtZXNbaSQyICsgNjMyMzVdID0gXCJGXCIgKyBpJDI7IH1cblxuICB2YXIga2V5TWFwID0ge307XG5cbiAga2V5TWFwLmJhc2ljID0ge1xuICAgIFwiTGVmdFwiOiBcImdvQ2hhckxlZnRcIiwgXCJSaWdodFwiOiBcImdvQ2hhclJpZ2h0XCIsIFwiVXBcIjogXCJnb0xpbmVVcFwiLCBcIkRvd25cIjogXCJnb0xpbmVEb3duXCIsXG4gICAgXCJFbmRcIjogXCJnb0xpbmVFbmRcIiwgXCJIb21lXCI6IFwiZ29MaW5lU3RhcnRTbWFydFwiLCBcIlBhZ2VVcFwiOiBcImdvUGFnZVVwXCIsIFwiUGFnZURvd25cIjogXCJnb1BhZ2VEb3duXCIsXG4gICAgXCJEZWxldGVcIjogXCJkZWxDaGFyQWZ0ZXJcIiwgXCJCYWNrc3BhY2VcIjogXCJkZWxDaGFyQmVmb3JlXCIsIFwiU2hpZnQtQmFja3NwYWNlXCI6IFwiZGVsQ2hhckJlZm9yZVwiLFxuICAgIFwiVGFiXCI6IFwiZGVmYXVsdFRhYlwiLCBcIlNoaWZ0LVRhYlwiOiBcImluZGVudEF1dG9cIixcbiAgICBcIkVudGVyXCI6IFwibmV3bGluZUFuZEluZGVudFwiLCBcIkluc2VydFwiOiBcInRvZ2dsZU92ZXJ3cml0ZVwiLFxuICAgIFwiRXNjXCI6IFwic2luZ2xlU2VsZWN0aW9uXCJcbiAgfTtcbiAgLy8gTm90ZSB0aGF0IHRoZSBzYXZlIGFuZCBmaW5kLXJlbGF0ZWQgY29tbWFuZHMgYXJlbid0IGRlZmluZWQgYnlcbiAgLy8gZGVmYXVsdC4gVXNlciBjb2RlIG9yIGFkZG9ucyBjYW4gZGVmaW5lIHRoZW0uIFVua25vd24gY29tbWFuZHNcbiAgLy8gYXJlIHNpbXBseSBpZ25vcmVkLlxuICBrZXlNYXAucGNEZWZhdWx0ID0ge1xuICAgIFwiQ3RybC1BXCI6IFwic2VsZWN0QWxsXCIsIFwiQ3RybC1EXCI6IFwiZGVsZXRlTGluZVwiLCBcIkN0cmwtWlwiOiBcInVuZG9cIiwgXCJTaGlmdC1DdHJsLVpcIjogXCJyZWRvXCIsIFwiQ3RybC1ZXCI6IFwicmVkb1wiLFxuICAgIFwiQ3RybC1Ib21lXCI6IFwiZ29Eb2NTdGFydFwiLCBcIkN0cmwtRW5kXCI6IFwiZ29Eb2NFbmRcIiwgXCJDdHJsLVVwXCI6IFwiZ29MaW5lVXBcIiwgXCJDdHJsLURvd25cIjogXCJnb0xpbmVEb3duXCIsXG4gICAgXCJDdHJsLUxlZnRcIjogXCJnb0dyb3VwTGVmdFwiLCBcIkN0cmwtUmlnaHRcIjogXCJnb0dyb3VwUmlnaHRcIiwgXCJBbHQtTGVmdFwiOiBcImdvTGluZVN0YXJ0XCIsIFwiQWx0LVJpZ2h0XCI6IFwiZ29MaW5lRW5kXCIsXG4gICAgXCJDdHJsLUJhY2tzcGFjZVwiOiBcImRlbEdyb3VwQmVmb3JlXCIsIFwiQ3RybC1EZWxldGVcIjogXCJkZWxHcm91cEFmdGVyXCIsIFwiQ3RybC1TXCI6IFwic2F2ZVwiLCBcIkN0cmwtRlwiOiBcImZpbmRcIixcbiAgICBcIkN0cmwtR1wiOiBcImZpbmROZXh0XCIsIFwiU2hpZnQtQ3RybC1HXCI6IFwiZmluZFByZXZcIiwgXCJTaGlmdC1DdHJsLUZcIjogXCJyZXBsYWNlXCIsIFwiU2hpZnQtQ3RybC1SXCI6IFwicmVwbGFjZUFsbFwiLFxuICAgIFwiQ3RybC1bXCI6IFwiaW5kZW50TGVzc1wiLCBcIkN0cmwtXVwiOiBcImluZGVudE1vcmVcIixcbiAgICBcIkN0cmwtVVwiOiBcInVuZG9TZWxlY3Rpb25cIiwgXCJTaGlmdC1DdHJsLVVcIjogXCJyZWRvU2VsZWN0aW9uXCIsIFwiQWx0LVVcIjogXCJyZWRvU2VsZWN0aW9uXCIsXG4gICAgXCJmYWxsdGhyb3VnaFwiOiBcImJhc2ljXCJcbiAgfTtcbiAgLy8gVmVyeSBiYXNpYyByZWFkbGluZS9lbWFjcy1zdHlsZSBiaW5kaW5ncywgd2hpY2ggYXJlIHN0YW5kYXJkIG9uIE1hYy5cbiAga2V5TWFwLmVtYWNzeSA9IHtcbiAgICBcIkN0cmwtRlwiOiBcImdvQ2hhclJpZ2h0XCIsIFwiQ3RybC1CXCI6IFwiZ29DaGFyTGVmdFwiLCBcIkN0cmwtUFwiOiBcImdvTGluZVVwXCIsIFwiQ3RybC1OXCI6IFwiZ29MaW5lRG93blwiLFxuICAgIFwiQWx0LUZcIjogXCJnb1dvcmRSaWdodFwiLCBcIkFsdC1CXCI6IFwiZ29Xb3JkTGVmdFwiLCBcIkN0cmwtQVwiOiBcImdvTGluZVN0YXJ0XCIsIFwiQ3RybC1FXCI6IFwiZ29MaW5lRW5kXCIsXG4gICAgXCJDdHJsLVZcIjogXCJnb1BhZ2VEb3duXCIsIFwiU2hpZnQtQ3RybC1WXCI6IFwiZ29QYWdlVXBcIiwgXCJDdHJsLURcIjogXCJkZWxDaGFyQWZ0ZXJcIiwgXCJDdHJsLUhcIjogXCJkZWxDaGFyQmVmb3JlXCIsXG4gICAgXCJBbHQtRFwiOiBcImRlbFdvcmRBZnRlclwiLCBcIkFsdC1CYWNrc3BhY2VcIjogXCJkZWxXb3JkQmVmb3JlXCIsIFwiQ3RybC1LXCI6IFwia2lsbExpbmVcIiwgXCJDdHJsLVRcIjogXCJ0cmFuc3Bvc2VDaGFyc1wiLFxuICAgIFwiQ3RybC1PXCI6IFwib3BlbkxpbmVcIlxuICB9O1xuICBrZXlNYXAubWFjRGVmYXVsdCA9IHtcbiAgICBcIkNtZC1BXCI6IFwic2VsZWN0QWxsXCIsIFwiQ21kLURcIjogXCJkZWxldGVMaW5lXCIsIFwiQ21kLVpcIjogXCJ1bmRvXCIsIFwiU2hpZnQtQ21kLVpcIjogXCJyZWRvXCIsIFwiQ21kLVlcIjogXCJyZWRvXCIsXG4gICAgXCJDbWQtSG9tZVwiOiBcImdvRG9jU3RhcnRcIiwgXCJDbWQtVXBcIjogXCJnb0RvY1N0YXJ0XCIsIFwiQ21kLUVuZFwiOiBcImdvRG9jRW5kXCIsIFwiQ21kLURvd25cIjogXCJnb0RvY0VuZFwiLCBcIkFsdC1MZWZ0XCI6IFwiZ29Hcm91cExlZnRcIixcbiAgICBcIkFsdC1SaWdodFwiOiBcImdvR3JvdXBSaWdodFwiLCBcIkNtZC1MZWZ0XCI6IFwiZ29MaW5lTGVmdFwiLCBcIkNtZC1SaWdodFwiOiBcImdvTGluZVJpZ2h0XCIsIFwiQWx0LUJhY2tzcGFjZVwiOiBcImRlbEdyb3VwQmVmb3JlXCIsXG4gICAgXCJDdHJsLUFsdC1CYWNrc3BhY2VcIjogXCJkZWxHcm91cEFmdGVyXCIsIFwiQWx0LURlbGV0ZVwiOiBcImRlbEdyb3VwQWZ0ZXJcIiwgXCJDbWQtU1wiOiBcInNhdmVcIiwgXCJDbWQtRlwiOiBcImZpbmRcIixcbiAgICBcIkNtZC1HXCI6IFwiZmluZE5leHRcIiwgXCJTaGlmdC1DbWQtR1wiOiBcImZpbmRQcmV2XCIsIFwiQ21kLUFsdC1GXCI6IFwicmVwbGFjZVwiLCBcIlNoaWZ0LUNtZC1BbHQtRlwiOiBcInJlcGxhY2VBbGxcIixcbiAgICBcIkNtZC1bXCI6IFwiaW5kZW50TGVzc1wiLCBcIkNtZC1dXCI6IFwiaW5kZW50TW9yZVwiLCBcIkNtZC1CYWNrc3BhY2VcIjogXCJkZWxXcmFwcGVkTGluZUxlZnRcIiwgXCJDbWQtRGVsZXRlXCI6IFwiZGVsV3JhcHBlZExpbmVSaWdodFwiLFxuICAgIFwiQ21kLVVcIjogXCJ1bmRvU2VsZWN0aW9uXCIsIFwiU2hpZnQtQ21kLVVcIjogXCJyZWRvU2VsZWN0aW9uXCIsIFwiQ3RybC1VcFwiOiBcImdvRG9jU3RhcnRcIiwgXCJDdHJsLURvd25cIjogXCJnb0RvY0VuZFwiLFxuICAgIFwiZmFsbHRocm91Z2hcIjogW1wiYmFzaWNcIiwgXCJlbWFjc3lcIl1cbiAgfTtcbiAga2V5TWFwW1wiZGVmYXVsdFwiXSA9IG1hYyA/IGtleU1hcC5tYWNEZWZhdWx0IDoga2V5TWFwLnBjRGVmYXVsdDtcblxuICAvLyBLRVlNQVAgRElTUEFUQ0hcblxuICBmdW5jdGlvbiBub3JtYWxpemVLZXlOYW1lKG5hbWUpIHtcbiAgICB2YXIgcGFydHMgPSBuYW1lLnNwbGl0KC8tKD8hJCkvKTtcbiAgICBuYW1lID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG4gICAgdmFyIGFsdCwgY3RybCwgc2hpZnQsIGNtZDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgdmFyIG1vZCA9IHBhcnRzW2ldO1xuICAgICAgaWYgKC9eKGNtZHxtZXRhfG0pJC9pLnRlc3QobW9kKSkgeyBjbWQgPSB0cnVlOyB9XG4gICAgICBlbHNlIGlmICgvXmEobHQpPyQvaS50ZXN0KG1vZCkpIHsgYWx0ID0gdHJ1ZTsgfVxuICAgICAgZWxzZSBpZiAoL14oY3xjdHJsfGNvbnRyb2wpJC9pLnRlc3QobW9kKSkgeyBjdHJsID0gdHJ1ZTsgfVxuICAgICAgZWxzZSBpZiAoL15zKGhpZnQpPyQvaS50ZXN0KG1vZCkpIHsgc2hpZnQgPSB0cnVlOyB9XG4gICAgICBlbHNlIHsgdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIG1vZGlmaWVyIG5hbWU6IFwiICsgbW9kKSB9XG4gICAgfVxuICAgIGlmIChhbHQpIHsgbmFtZSA9IFwiQWx0LVwiICsgbmFtZTsgfVxuICAgIGlmIChjdHJsKSB7IG5hbWUgPSBcIkN0cmwtXCIgKyBuYW1lOyB9XG4gICAgaWYgKGNtZCkgeyBuYW1lID0gXCJDbWQtXCIgKyBuYW1lOyB9XG4gICAgaWYgKHNoaWZ0KSB7IG5hbWUgPSBcIlNoaWZ0LVwiICsgbmFtZTsgfVxuICAgIHJldHVybiBuYW1lXG4gIH1cblxuICAvLyBUaGlzIGlzIGEga2x1ZGdlIHRvIGtlZXAga2V5bWFwcyBtb3N0bHkgd29ya2luZyBhcyByYXcgb2JqZWN0c1xuICAvLyAoYmFja3dhcmRzIGNvbXBhdGliaWxpdHkpIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgc3VwcG9ydCBmZWF0dXJlc1xuICAvLyBsaWtlIG5vcm1hbGl6YXRpb24gYW5kIG11bHRpLXN0cm9rZSBrZXkgYmluZGluZ3MuIEl0IGNvbXBpbGVzIGFcbiAgLy8gbmV3IG5vcm1hbGl6ZWQga2V5bWFwLCBhbmQgdGhlbiB1cGRhdGVzIHRoZSBvbGQgb2JqZWN0IHRvIHJlZmxlY3RcbiAgLy8gdGhpcy5cbiAgZnVuY3Rpb24gbm9ybWFsaXplS2V5TWFwKGtleW1hcCkge1xuICAgIHZhciBjb3B5ID0ge307XG4gICAgZm9yICh2YXIga2V5bmFtZSBpbiBrZXltYXApIHsgaWYgKGtleW1hcC5oYXNPd25Qcm9wZXJ0eShrZXluYW1lKSkge1xuICAgICAgdmFyIHZhbHVlID0ga2V5bWFwW2tleW5hbWVdO1xuICAgICAgaWYgKC9eKG5hbWV8ZmFsbHRocm91Z2h8KGRlfGF0KXRhY2gpJC8udGVzdChrZXluYW1lKSkgeyBjb250aW51ZSB9XG4gICAgICBpZiAodmFsdWUgPT0gXCIuLi5cIikgeyBkZWxldGUga2V5bWFwW2tleW5hbWVdOyBjb250aW51ZSB9XG5cbiAgICAgIHZhciBrZXlzID0gbWFwKGtleW5hbWUuc3BsaXQoXCIgXCIpLCBub3JtYWxpemVLZXlOYW1lKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdmFsID0gKHZvaWQgMCksIG5hbWUgPSAodm9pZCAwKTtcbiAgICAgICAgaWYgKGkgPT0ga2V5cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgbmFtZSA9IGtleXMuam9pbihcIiBcIik7XG4gICAgICAgICAgdmFsID0gdmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmFtZSA9IGtleXMuc2xpY2UoMCwgaSArIDEpLmpvaW4oXCIgXCIpO1xuICAgICAgICAgIHZhbCA9IFwiLi4uXCI7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHByZXYgPSBjb3B5W25hbWVdO1xuICAgICAgICBpZiAoIXByZXYpIHsgY29weVtuYW1lXSA9IHZhbDsgfVxuICAgICAgICBlbHNlIGlmIChwcmV2ICE9IHZhbCkgeyB0aHJvdyBuZXcgRXJyb3IoXCJJbmNvbnNpc3RlbnQgYmluZGluZ3MgZm9yIFwiICsgbmFtZSkgfVxuICAgICAgfVxuICAgICAgZGVsZXRlIGtleW1hcFtrZXluYW1lXTtcbiAgICB9IH1cbiAgICBmb3IgKHZhciBwcm9wIGluIGNvcHkpIHsga2V5bWFwW3Byb3BdID0gY29weVtwcm9wXTsgfVxuICAgIHJldHVybiBrZXltYXBcbiAgfVxuXG4gIGZ1bmN0aW9uIGxvb2t1cEtleShrZXksIG1hcCwgaGFuZGxlLCBjb250ZXh0KSB7XG4gICAgbWFwID0gZ2V0S2V5TWFwKG1hcCk7XG4gICAgdmFyIGZvdW5kID0gbWFwLmNhbGwgPyBtYXAuY2FsbChrZXksIGNvbnRleHQpIDogbWFwW2tleV07XG4gICAgaWYgKGZvdW5kID09PSBmYWxzZSkgeyByZXR1cm4gXCJub3RoaW5nXCIgfVxuICAgIGlmIChmb3VuZCA9PT0gXCIuLi5cIikgeyByZXR1cm4gXCJtdWx0aVwiIH1cbiAgICBpZiAoZm91bmQgIT0gbnVsbCAmJiBoYW5kbGUoZm91bmQpKSB7IHJldHVybiBcImhhbmRsZWRcIiB9XG5cbiAgICBpZiAobWFwLmZhbGx0aHJvdWdoKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG1hcC5mYWxsdGhyb3VnaCkgIT0gXCJbb2JqZWN0IEFycmF5XVwiKVxuICAgICAgICB7IHJldHVybiBsb29rdXBLZXkoa2V5LCBtYXAuZmFsbHRocm91Z2gsIGhhbmRsZSwgY29udGV4dCkgfVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXAuZmFsbHRocm91Z2gubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGxvb2t1cEtleShrZXksIG1hcC5mYWxsdGhyb3VnaFtpXSwgaGFuZGxlLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKHJlc3VsdCkgeyByZXR1cm4gcmVzdWx0IH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBNb2RpZmllciBrZXkgcHJlc3NlcyBkb24ndCBjb3VudCBhcyAncmVhbCcga2V5IHByZXNzZXMgZm9yIHRoZVxuICAvLyBwdXJwb3NlIG9mIGtleW1hcCBmYWxsdGhyb3VnaC5cbiAgZnVuY3Rpb24gaXNNb2RpZmllcktleSh2YWx1ZSkge1xuICAgIHZhciBuYW1lID0gdHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgPyB2YWx1ZSA6IGtleU5hbWVzW3ZhbHVlLmtleUNvZGVdO1xuICAgIHJldHVybiBuYW1lID09IFwiQ3RybFwiIHx8IG5hbWUgPT0gXCJBbHRcIiB8fCBuYW1lID09IFwiU2hpZnRcIiB8fCBuYW1lID09IFwiTW9kXCJcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZE1vZGlmaWVyTmFtZXMobmFtZSwgZXZlbnQsIG5vU2hpZnQpIHtcbiAgICB2YXIgYmFzZSA9IG5hbWU7XG4gICAgaWYgKGV2ZW50LmFsdEtleSAmJiBiYXNlICE9IFwiQWx0XCIpIHsgbmFtZSA9IFwiQWx0LVwiICsgbmFtZTsgfVxuICAgIGlmICgoZmxpcEN0cmxDbWQgPyBldmVudC5tZXRhS2V5IDogZXZlbnQuY3RybEtleSkgJiYgYmFzZSAhPSBcIkN0cmxcIikgeyBuYW1lID0gXCJDdHJsLVwiICsgbmFtZTsgfVxuICAgIGlmICgoZmxpcEN0cmxDbWQgPyBldmVudC5jdHJsS2V5IDogZXZlbnQubWV0YUtleSkgJiYgYmFzZSAhPSBcIk1vZFwiKSB7IG5hbWUgPSBcIkNtZC1cIiArIG5hbWU7IH1cbiAgICBpZiAoIW5vU2hpZnQgJiYgZXZlbnQuc2hpZnRLZXkgJiYgYmFzZSAhPSBcIlNoaWZ0XCIpIHsgbmFtZSA9IFwiU2hpZnQtXCIgKyBuYW1lOyB9XG4gICAgcmV0dXJuIG5hbWVcbiAgfVxuXG4gIC8vIExvb2sgdXAgdGhlIG5hbWUgb2YgYSBrZXkgYXMgaW5kaWNhdGVkIGJ5IGFuIGV2ZW50IG9iamVjdC5cbiAgZnVuY3Rpb24ga2V5TmFtZShldmVudCwgbm9TaGlmdCkge1xuICAgIGlmIChwcmVzdG8gJiYgZXZlbnQua2V5Q29kZSA9PSAzNCAmJiBldmVudFtcImNoYXJcIl0pIHsgcmV0dXJuIGZhbHNlIH1cbiAgICB2YXIgbmFtZSA9IGtleU5hbWVzW2V2ZW50LmtleUNvZGVdO1xuICAgIGlmIChuYW1lID09IG51bGwgfHwgZXZlbnQuYWx0R3JhcGhLZXkpIHsgcmV0dXJuIGZhbHNlIH1cbiAgICAvLyBDdHJsLVNjcm9sbExvY2sgaGFzIGtleUNvZGUgMywgc2FtZSBhcyBDdHJsLVBhdXNlLFxuICAgIC8vIHNvIHdlJ2xsIHVzZSBldmVudC5jb2RlIHdoZW4gYXZhaWxhYmxlIChDaHJvbWUgNDgrLCBGRiAzOCssIFNhZmFyaSAxMC4xKylcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PSAzICYmIGV2ZW50LmNvZGUpIHsgbmFtZSA9IGV2ZW50LmNvZGU7IH1cbiAgICByZXR1cm4gYWRkTW9kaWZpZXJOYW1lcyhuYW1lLCBldmVudCwgbm9TaGlmdClcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEtleU1hcCh2YWwpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSBcInN0cmluZ1wiID8ga2V5TWFwW3ZhbF0gOiB2YWxcbiAgfVxuXG4gIC8vIEhlbHBlciBmb3IgZGVsZXRpbmcgdGV4dCBuZWFyIHRoZSBzZWxlY3Rpb24ocyksIHVzZWQgdG8gaW1wbGVtZW50XG4gIC8vIGJhY2tzcGFjZSwgZGVsZXRlLCBhbmQgc2ltaWxhciBmdW5jdGlvbmFsaXR5LlxuICBmdW5jdGlvbiBkZWxldGVOZWFyU2VsZWN0aW9uKGNtLCBjb21wdXRlKSB7XG4gICAgdmFyIHJhbmdlcyA9IGNtLmRvYy5zZWwucmFuZ2VzLCBraWxsID0gW107XG4gICAgLy8gQnVpbGQgdXAgYSBzZXQgb2YgcmFuZ2VzIHRvIGtpbGwgZmlyc3QsIG1lcmdpbmcgb3ZlcmxhcHBpbmdcbiAgICAvLyByYW5nZXMuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB0b0tpbGwgPSBjb21wdXRlKHJhbmdlc1tpXSk7XG4gICAgICB3aGlsZSAoa2lsbC5sZW5ndGggJiYgY21wKHRvS2lsbC5mcm9tLCBsc3Qoa2lsbCkudG8pIDw9IDApIHtcbiAgICAgICAgdmFyIHJlcGxhY2VkID0ga2lsbC5wb3AoKTtcbiAgICAgICAgaWYgKGNtcChyZXBsYWNlZC5mcm9tLCB0b0tpbGwuZnJvbSkgPCAwKSB7XG4gICAgICAgICAgdG9LaWxsLmZyb20gPSByZXBsYWNlZC5mcm9tO1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGtpbGwucHVzaCh0b0tpbGwpO1xuICAgIH1cbiAgICAvLyBOZXh0LCByZW1vdmUgdGhvc2UgYWN0dWFsIHJhbmdlcy5cbiAgICBydW5Jbk9wKGNtLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBpID0ga2lsbC5sZW5ndGggLSAxOyBpID49IDA7IGktLSlcbiAgICAgICAgeyByZXBsYWNlUmFuZ2UoY20uZG9jLCBcIlwiLCBraWxsW2ldLmZyb20sIGtpbGxbaV0udG8sIFwiK2RlbGV0ZVwiKTsgfVxuICAgICAgZW5zdXJlQ3Vyc29yVmlzaWJsZShjbSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBtb3ZlQ2hhckxvZ2ljYWxseShsaW5lLCBjaCwgZGlyKSB7XG4gICAgdmFyIHRhcmdldCA9IHNraXBFeHRlbmRpbmdDaGFycyhsaW5lLnRleHQsIGNoICsgZGlyLCBkaXIpO1xuICAgIHJldHVybiB0YXJnZXQgPCAwIHx8IHRhcmdldCA+IGxpbmUudGV4dC5sZW5ndGggPyBudWxsIDogdGFyZ2V0XG4gIH1cblxuICBmdW5jdGlvbiBtb3ZlTG9naWNhbGx5KGxpbmUsIHN0YXJ0LCBkaXIpIHtcbiAgICB2YXIgY2ggPSBtb3ZlQ2hhckxvZ2ljYWxseShsaW5lLCBzdGFydC5jaCwgZGlyKTtcbiAgICByZXR1cm4gY2ggPT0gbnVsbCA/IG51bGwgOiBuZXcgUG9zKHN0YXJ0LmxpbmUsIGNoLCBkaXIgPCAwID8gXCJhZnRlclwiIDogXCJiZWZvcmVcIilcbiAgfVxuXG4gIGZ1bmN0aW9uIGVuZE9mTGluZSh2aXN1YWxseSwgY20sIGxpbmVPYmosIGxpbmVObywgZGlyKSB7XG4gICAgaWYgKHZpc3VhbGx5KSB7XG4gICAgICBpZiAoY20uZG9jLmRpcmVjdGlvbiA9PSBcInJ0bFwiKSB7IGRpciA9IC1kaXI7IH1cbiAgICAgIHZhciBvcmRlciA9IGdldE9yZGVyKGxpbmVPYmosIGNtLmRvYy5kaXJlY3Rpb24pO1xuICAgICAgaWYgKG9yZGVyKSB7XG4gICAgICAgIHZhciBwYXJ0ID0gZGlyIDwgMCA/IGxzdChvcmRlcikgOiBvcmRlclswXTtcbiAgICAgICAgdmFyIG1vdmVJblN0b3JhZ2VPcmRlciA9IChkaXIgPCAwKSA9PSAocGFydC5sZXZlbCA9PSAxKTtcbiAgICAgICAgdmFyIHN0aWNreSA9IG1vdmVJblN0b3JhZ2VPcmRlciA/IFwiYWZ0ZXJcIiA6IFwiYmVmb3JlXCI7XG4gICAgICAgIHZhciBjaDtcbiAgICAgICAgLy8gV2l0aCBhIHdyYXBwZWQgcnRsIGNodW5rIChwb3NzaWJseSBzcGFubmluZyBtdWx0aXBsZSBiaWRpIHBhcnRzKSxcbiAgICAgICAgLy8gaXQgY291bGQgYmUgdGhhdCB0aGUgbGFzdCBiaWRpIHBhcnQgaXMgbm90IG9uIHRoZSBsYXN0IHZpc3VhbCBsaW5lLFxuICAgICAgICAvLyBzaW5jZSB2aXN1YWwgbGluZXMgY29udGFpbiBjb250ZW50IG9yZGVyLWNvbnNlY3V0aXZlIGNodW5rcy5cbiAgICAgICAgLy8gVGh1cywgaW4gcnRsLCB3ZSBhcmUgbG9va2luZyBmb3IgdGhlIGZpcnN0IChjb250ZW50LW9yZGVyKSBjaGFyYWN0ZXJcbiAgICAgICAgLy8gaW4gdGhlIHJ0bCBjaHVuayB0aGF0IGlzIG9uIHRoZSBsYXN0IGxpbmUgKHRoYXQgaXMsIHRoZSBzYW1lIGxpbmVcbiAgICAgICAgLy8gYXMgdGhlIGxhc3QgKGNvbnRlbnQtb3JkZXIpIGNoYXJhY3RlcikuXG4gICAgICAgIGlmIChwYXJ0LmxldmVsID4gMCB8fCBjbS5kb2MuZGlyZWN0aW9uID09IFwicnRsXCIpIHtcbiAgICAgICAgICB2YXIgcHJlcCA9IHByZXBhcmVNZWFzdXJlRm9yTGluZShjbSwgbGluZU9iaik7XG4gICAgICAgICAgY2ggPSBkaXIgPCAwID8gbGluZU9iai50ZXh0Lmxlbmd0aCAtIDEgOiAwO1xuICAgICAgICAgIHZhciB0YXJnZXRUb3AgPSBtZWFzdXJlQ2hhclByZXBhcmVkKGNtLCBwcmVwLCBjaCkudG9wO1xuICAgICAgICAgIGNoID0gZmluZEZpcnN0KGZ1bmN0aW9uIChjaCkgeyByZXR1cm4gbWVhc3VyZUNoYXJQcmVwYXJlZChjbSwgcHJlcCwgY2gpLnRvcCA9PSB0YXJnZXRUb3A7IH0sIChkaXIgPCAwKSA9PSAocGFydC5sZXZlbCA9PSAxKSA/IHBhcnQuZnJvbSA6IHBhcnQudG8gLSAxLCBjaCk7XG4gICAgICAgICAgaWYgKHN0aWNreSA9PSBcImJlZm9yZVwiKSB7IGNoID0gbW92ZUNoYXJMb2dpY2FsbHkobGluZU9iaiwgY2gsIDEpOyB9XG4gICAgICAgIH0gZWxzZSB7IGNoID0gZGlyIDwgMCA/IHBhcnQudG8gOiBwYXJ0LmZyb207IH1cbiAgICAgICAgcmV0dXJuIG5ldyBQb3MobGluZU5vLCBjaCwgc3RpY2t5KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IFBvcyhsaW5lTm8sIGRpciA8IDAgPyBsaW5lT2JqLnRleHQubGVuZ3RoIDogMCwgZGlyIDwgMCA/IFwiYmVmb3JlXCIgOiBcImFmdGVyXCIpXG4gIH1cblxuICBmdW5jdGlvbiBtb3ZlVmlzdWFsbHkoY20sIGxpbmUsIHN0YXJ0LCBkaXIpIHtcbiAgICB2YXIgYmlkaSA9IGdldE9yZGVyKGxpbmUsIGNtLmRvYy5kaXJlY3Rpb24pO1xuICAgIGlmICghYmlkaSkgeyByZXR1cm4gbW92ZUxvZ2ljYWxseShsaW5lLCBzdGFydCwgZGlyKSB9XG4gICAgaWYgKHN0YXJ0LmNoID49IGxpbmUudGV4dC5sZW5ndGgpIHtcbiAgICAgIHN0YXJ0LmNoID0gbGluZS50ZXh0Lmxlbmd0aDtcbiAgICAgIHN0YXJ0LnN0aWNreSA9IFwiYmVmb3JlXCI7XG4gICAgfSBlbHNlIGlmIChzdGFydC5jaCA8PSAwKSB7XG4gICAgICBzdGFydC5jaCA9IDA7XG4gICAgICBzdGFydC5zdGlja3kgPSBcImFmdGVyXCI7XG4gICAgfVxuICAgIHZhciBwYXJ0UG9zID0gZ2V0QmlkaVBhcnRBdChiaWRpLCBzdGFydC5jaCwgc3RhcnQuc3RpY2t5KSwgcGFydCA9IGJpZGlbcGFydFBvc107XG4gICAgaWYgKGNtLmRvYy5kaXJlY3Rpb24gPT0gXCJsdHJcIiAmJiBwYXJ0LmxldmVsICUgMiA9PSAwICYmIChkaXIgPiAwID8gcGFydC50byA+IHN0YXJ0LmNoIDogcGFydC5mcm9tIDwgc3RhcnQuY2gpKSB7XG4gICAgICAvLyBDYXNlIDE6IFdlIG1vdmUgd2l0aGluIGFuIGx0ciBwYXJ0IGluIGFuIGx0ciBlZGl0b3IuIEV2ZW4gd2l0aCB3cmFwcGVkIGxpbmVzLFxuICAgICAgLy8gbm90aGluZyBpbnRlcmVzdGluZyBoYXBwZW5zLlxuICAgICAgcmV0dXJuIG1vdmVMb2dpY2FsbHkobGluZSwgc3RhcnQsIGRpcilcbiAgICB9XG5cbiAgICB2YXIgbXYgPSBmdW5jdGlvbiAocG9zLCBkaXIpIHsgcmV0dXJuIG1vdmVDaGFyTG9naWNhbGx5KGxpbmUsIHBvcyBpbnN0YW5jZW9mIFBvcyA/IHBvcy5jaCA6IHBvcywgZGlyKTsgfTtcbiAgICB2YXIgcHJlcDtcbiAgICB2YXIgZ2V0V3JhcHBlZExpbmVFeHRlbnQgPSBmdW5jdGlvbiAoY2gpIHtcbiAgICAgIGlmICghY20ub3B0aW9ucy5saW5lV3JhcHBpbmcpIHsgcmV0dXJuIHtiZWdpbjogMCwgZW5kOiBsaW5lLnRleHQubGVuZ3RofSB9XG4gICAgICBwcmVwID0gcHJlcCB8fCBwcmVwYXJlTWVhc3VyZUZvckxpbmUoY20sIGxpbmUpO1xuICAgICAgcmV0dXJuIHdyYXBwZWRMaW5lRXh0ZW50Q2hhcihjbSwgbGluZSwgcHJlcCwgY2gpXG4gICAgfTtcbiAgICB2YXIgd3JhcHBlZExpbmVFeHRlbnQgPSBnZXRXcmFwcGVkTGluZUV4dGVudChzdGFydC5zdGlja3kgPT0gXCJiZWZvcmVcIiA/IG12KHN0YXJ0LCAtMSkgOiBzdGFydC5jaCk7XG5cbiAgICBpZiAoY20uZG9jLmRpcmVjdGlvbiA9PSBcInJ0bFwiIHx8IHBhcnQubGV2ZWwgPT0gMSkge1xuICAgICAgdmFyIG1vdmVJblN0b3JhZ2VPcmRlciA9IChwYXJ0LmxldmVsID09IDEpID09IChkaXIgPCAwKTtcbiAgICAgIHZhciBjaCA9IG12KHN0YXJ0LCBtb3ZlSW5TdG9yYWdlT3JkZXIgPyAxIDogLTEpO1xuICAgICAgaWYgKGNoICE9IG51bGwgJiYgKCFtb3ZlSW5TdG9yYWdlT3JkZXIgPyBjaCA+PSBwYXJ0LmZyb20gJiYgY2ggPj0gd3JhcHBlZExpbmVFeHRlbnQuYmVnaW4gOiBjaCA8PSBwYXJ0LnRvICYmIGNoIDw9IHdyYXBwZWRMaW5lRXh0ZW50LmVuZCkpIHtcbiAgICAgICAgLy8gQ2FzZSAyOiBXZSBtb3ZlIHdpdGhpbiBhbiBydGwgcGFydCBvciBpbiBhbiBydGwgZWRpdG9yIG9uIHRoZSBzYW1lIHZpc3VhbCBsaW5lXG4gICAgICAgIHZhciBzdGlja3kgPSBtb3ZlSW5TdG9yYWdlT3JkZXIgPyBcImJlZm9yZVwiIDogXCJhZnRlclwiO1xuICAgICAgICByZXR1cm4gbmV3IFBvcyhzdGFydC5saW5lLCBjaCwgc3RpY2t5KVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENhc2UgMzogQ291bGQgbm90IG1vdmUgd2l0aGluIHRoaXMgYmlkaSBwYXJ0IGluIHRoaXMgdmlzdWFsIGxpbmUsIHNvIGxlYXZlXG4gICAgLy8gdGhlIGN1cnJlbnQgYmlkaSBwYXJ0XG5cbiAgICB2YXIgc2VhcmNoSW5WaXN1YWxMaW5lID0gZnVuY3Rpb24gKHBhcnRQb3MsIGRpciwgd3JhcHBlZExpbmVFeHRlbnQpIHtcbiAgICAgIHZhciBnZXRSZXMgPSBmdW5jdGlvbiAoY2gsIG1vdmVJblN0b3JhZ2VPcmRlcikgeyByZXR1cm4gbW92ZUluU3RvcmFnZU9yZGVyXG4gICAgICAgID8gbmV3IFBvcyhzdGFydC5saW5lLCBtdihjaCwgMSksIFwiYmVmb3JlXCIpXG4gICAgICAgIDogbmV3IFBvcyhzdGFydC5saW5lLCBjaCwgXCJhZnRlclwiKTsgfTtcblxuICAgICAgZm9yICg7IHBhcnRQb3MgPj0gMCAmJiBwYXJ0UG9zIDwgYmlkaS5sZW5ndGg7IHBhcnRQb3MgKz0gZGlyKSB7XG4gICAgICAgIHZhciBwYXJ0ID0gYmlkaVtwYXJ0UG9zXTtcbiAgICAgICAgdmFyIG1vdmVJblN0b3JhZ2VPcmRlciA9IChkaXIgPiAwKSA9PSAocGFydC5sZXZlbCAhPSAxKTtcbiAgICAgICAgdmFyIGNoID0gbW92ZUluU3RvcmFnZU9yZGVyID8gd3JhcHBlZExpbmVFeHRlbnQuYmVnaW4gOiBtdih3cmFwcGVkTGluZUV4dGVudC5lbmQsIC0xKTtcbiAgICAgICAgaWYgKHBhcnQuZnJvbSA8PSBjaCAmJiBjaCA8IHBhcnQudG8pIHsgcmV0dXJuIGdldFJlcyhjaCwgbW92ZUluU3RvcmFnZU9yZGVyKSB9XG4gICAgICAgIGNoID0gbW92ZUluU3RvcmFnZU9yZGVyID8gcGFydC5mcm9tIDogbXYocGFydC50bywgLTEpO1xuICAgICAgICBpZiAod3JhcHBlZExpbmVFeHRlbnQuYmVnaW4gPD0gY2ggJiYgY2ggPCB3cmFwcGVkTGluZUV4dGVudC5lbmQpIHsgcmV0dXJuIGdldFJlcyhjaCwgbW92ZUluU3RvcmFnZU9yZGVyKSB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIENhc2UgM2E6IExvb2sgZm9yIG90aGVyIGJpZGkgcGFydHMgb24gdGhlIHNhbWUgdmlzdWFsIGxpbmVcbiAgICB2YXIgcmVzID0gc2VhcmNoSW5WaXN1YWxMaW5lKHBhcnRQb3MgKyBkaXIsIGRpciwgd3JhcHBlZExpbmVFeHRlbnQpO1xuICAgIGlmIChyZXMpIHsgcmV0dXJuIHJlcyB9XG5cbiAgICAvLyBDYXNlIDNiOiBMb29rIGZvciBvdGhlciBiaWRpIHBhcnRzIG9uIHRoZSBuZXh0IHZpc3VhbCBsaW5lXG4gICAgdmFyIG5leHRDaCA9IGRpciA+IDAgPyB3cmFwcGVkTGluZUV4dGVudC5lbmQgOiBtdih3cmFwcGVkTGluZUV4dGVudC5iZWdpbiwgLTEpO1xuICAgIGlmIChuZXh0Q2ggIT0gbnVsbCAmJiAhKGRpciA+IDAgJiYgbmV4dENoID09IGxpbmUudGV4dC5sZW5ndGgpKSB7XG4gICAgICByZXMgPSBzZWFyY2hJblZpc3VhbExpbmUoZGlyID4gMCA/IDAgOiBiaWRpLmxlbmd0aCAtIDEsIGRpciwgZ2V0V3JhcHBlZExpbmVFeHRlbnQobmV4dENoKSk7XG4gICAgICBpZiAocmVzKSB7IHJldHVybiByZXMgfVxuICAgIH1cblxuICAgIC8vIENhc2UgNDogTm93aGVyZSB0byBtb3ZlXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8vIENvbW1hbmRzIGFyZSBwYXJhbWV0ZXItbGVzcyBhY3Rpb25zIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBvbiBhblxuICAvLyBlZGl0b3IsIG1vc3RseSB1c2VkIGZvciBrZXliaW5kaW5ncy5cbiAgdmFyIGNvbW1hbmRzID0ge1xuICAgIHNlbGVjdEFsbDogc2VsZWN0QWxsLFxuICAgIHNpbmdsZVNlbGVjdGlvbjogZnVuY3Rpb24gKGNtKSB7IHJldHVybiBjbS5zZXRTZWxlY3Rpb24oY20uZ2V0Q3Vyc29yKFwiYW5jaG9yXCIpLCBjbS5nZXRDdXJzb3IoXCJoZWFkXCIpLCBzZWxfZG9udFNjcm9sbCk7IH0sXG4gICAga2lsbExpbmU6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gZGVsZXRlTmVhclNlbGVjdGlvbihjbSwgZnVuY3Rpb24gKHJhbmdlKSB7XG4gICAgICBpZiAocmFuZ2UuZW1wdHkoKSkge1xuICAgICAgICB2YXIgbGVuID0gZ2V0TGluZShjbS5kb2MsIHJhbmdlLmhlYWQubGluZSkudGV4dC5sZW5ndGg7XG4gICAgICAgIGlmIChyYW5nZS5oZWFkLmNoID09IGxlbiAmJiByYW5nZS5oZWFkLmxpbmUgPCBjbS5sYXN0TGluZSgpKVxuICAgICAgICAgIHsgcmV0dXJuIHtmcm9tOiByYW5nZS5oZWFkLCB0bzogUG9zKHJhbmdlLmhlYWQubGluZSArIDEsIDApfSB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB7IHJldHVybiB7ZnJvbTogcmFuZ2UuaGVhZCwgdG86IFBvcyhyYW5nZS5oZWFkLmxpbmUsIGxlbil9IH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7ZnJvbTogcmFuZ2UuZnJvbSgpLCB0bzogcmFuZ2UudG8oKX1cbiAgICAgIH1cbiAgICB9KTsgfSxcbiAgICBkZWxldGVMaW5lOiBmdW5jdGlvbiAoY20pIHsgcmV0dXJuIGRlbGV0ZU5lYXJTZWxlY3Rpb24oY20sIGZ1bmN0aW9uIChyYW5nZSkgeyByZXR1cm4gKHtcbiAgICAgIGZyb206IFBvcyhyYW5nZS5mcm9tKCkubGluZSwgMCksXG4gICAgICB0bzogY2xpcFBvcyhjbS5kb2MsIFBvcyhyYW5nZS50bygpLmxpbmUgKyAxLCAwKSlcbiAgICB9KTsgfSk7IH0sXG4gICAgZGVsTGluZUxlZnQ6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gZGVsZXRlTmVhclNlbGVjdGlvbihjbSwgZnVuY3Rpb24gKHJhbmdlKSB7IHJldHVybiAoe1xuICAgICAgZnJvbTogUG9zKHJhbmdlLmZyb20oKS5saW5lLCAwKSwgdG86IHJhbmdlLmZyb20oKVxuICAgIH0pOyB9KTsgfSxcbiAgICBkZWxXcmFwcGVkTGluZUxlZnQ6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gZGVsZXRlTmVhclNlbGVjdGlvbihjbSwgZnVuY3Rpb24gKHJhbmdlKSB7XG4gICAgICB2YXIgdG9wID0gY20uY2hhckNvb3JkcyhyYW5nZS5oZWFkLCBcImRpdlwiKS50b3AgKyA1O1xuICAgICAgdmFyIGxlZnRQb3MgPSBjbS5jb29yZHNDaGFyKHtsZWZ0OiAwLCB0b3A6IHRvcH0sIFwiZGl2XCIpO1xuICAgICAgcmV0dXJuIHtmcm9tOiBsZWZ0UG9zLCB0bzogcmFuZ2UuZnJvbSgpfVxuICAgIH0pOyB9LFxuICAgIGRlbFdyYXBwZWRMaW5lUmlnaHQ6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gZGVsZXRlTmVhclNlbGVjdGlvbihjbSwgZnVuY3Rpb24gKHJhbmdlKSB7XG4gICAgICB2YXIgdG9wID0gY20uY2hhckNvb3JkcyhyYW5nZS5oZWFkLCBcImRpdlwiKS50b3AgKyA1O1xuICAgICAgdmFyIHJpZ2h0UG9zID0gY20uY29vcmRzQ2hhcih7bGVmdDogY20uZGlzcGxheS5saW5lRGl2Lm9mZnNldFdpZHRoICsgMTAwLCB0b3A6IHRvcH0sIFwiZGl2XCIpO1xuICAgICAgcmV0dXJuIHtmcm9tOiByYW5nZS5mcm9tKCksIHRvOiByaWdodFBvcyB9XG4gICAgfSk7IH0sXG4gICAgdW5kbzogZnVuY3Rpb24gKGNtKSB7IHJldHVybiBjbS51bmRvKCk7IH0sXG4gICAgcmVkbzogZnVuY3Rpb24gKGNtKSB7IHJldHVybiBjbS5yZWRvKCk7IH0sXG4gICAgdW5kb1NlbGVjdGlvbjogZnVuY3Rpb24gKGNtKSB7IHJldHVybiBjbS51bmRvU2VsZWN0aW9uKCk7IH0sXG4gICAgcmVkb1NlbGVjdGlvbjogZnVuY3Rpb24gKGNtKSB7IHJldHVybiBjbS5yZWRvU2VsZWN0aW9uKCk7IH0sXG4gICAgZ29Eb2NTdGFydDogZnVuY3Rpb24gKGNtKSB7IHJldHVybiBjbS5leHRlbmRTZWxlY3Rpb24oUG9zKGNtLmZpcnN0TGluZSgpLCAwKSk7IH0sXG4gICAgZ29Eb2NFbmQ6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gY20uZXh0ZW5kU2VsZWN0aW9uKFBvcyhjbS5sYXN0TGluZSgpKSk7IH0sXG4gICAgZ29MaW5lU3RhcnQ6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gY20uZXh0ZW5kU2VsZWN0aW9uc0J5KGZ1bmN0aW9uIChyYW5nZSkgeyByZXR1cm4gbGluZVN0YXJ0KGNtLCByYW5nZS5oZWFkLmxpbmUpOyB9LFxuICAgICAge29yaWdpbjogXCIrbW92ZVwiLCBiaWFzOiAxfVxuICAgICk7IH0sXG4gICAgZ29MaW5lU3RhcnRTbWFydDogZnVuY3Rpb24gKGNtKSB7IHJldHVybiBjbS5leHRlbmRTZWxlY3Rpb25zQnkoZnVuY3Rpb24gKHJhbmdlKSB7IHJldHVybiBsaW5lU3RhcnRTbWFydChjbSwgcmFuZ2UuaGVhZCk7IH0sXG4gICAgICB7b3JpZ2luOiBcIittb3ZlXCIsIGJpYXM6IDF9XG4gICAgKTsgfSxcbiAgICBnb0xpbmVFbmQ6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gY20uZXh0ZW5kU2VsZWN0aW9uc0J5KGZ1bmN0aW9uIChyYW5nZSkgeyByZXR1cm4gbGluZUVuZChjbSwgcmFuZ2UuaGVhZC5saW5lKTsgfSxcbiAgICAgIHtvcmlnaW46IFwiK21vdmVcIiwgYmlhczogLTF9XG4gICAgKTsgfSxcbiAgICBnb0xpbmVSaWdodDogZnVuY3Rpb24gKGNtKSB7IHJldHVybiBjbS5leHRlbmRTZWxlY3Rpb25zQnkoZnVuY3Rpb24gKHJhbmdlKSB7XG4gICAgICB2YXIgdG9wID0gY20uY3Vyc29yQ29vcmRzKHJhbmdlLmhlYWQsIFwiZGl2XCIpLnRvcCArIDU7XG4gICAgICByZXR1cm4gY20uY29vcmRzQ2hhcih7bGVmdDogY20uZGlzcGxheS5saW5lRGl2Lm9mZnNldFdpZHRoICsgMTAwLCB0b3A6IHRvcH0sIFwiZGl2XCIpXG4gICAgfSwgc2VsX21vdmUpOyB9LFxuICAgIGdvTGluZUxlZnQ6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gY20uZXh0ZW5kU2VsZWN0aW9uc0J5KGZ1bmN0aW9uIChyYW5nZSkge1xuICAgICAgdmFyIHRvcCA9IGNtLmN1cnNvckNvb3JkcyhyYW5nZS5oZWFkLCBcImRpdlwiKS50b3AgKyA1O1xuICAgICAgcmV0dXJuIGNtLmNvb3Jkc0NoYXIoe2xlZnQ6IDAsIHRvcDogdG9wfSwgXCJkaXZcIilcbiAgICB9LCBzZWxfbW92ZSk7IH0sXG4gICAgZ29MaW5lTGVmdFNtYXJ0OiBmdW5jdGlvbiAoY20pIHsgcmV0dXJuIGNtLmV4dGVuZFNlbGVjdGlvbnNCeShmdW5jdGlvbiAocmFuZ2UpIHtcbiAgICAgIHZhciB0b3AgPSBjbS5jdXJzb3JDb29yZHMocmFuZ2UuaGVhZCwgXCJkaXZcIikudG9wICsgNTtcbiAgICAgIHZhciBwb3MgPSBjbS5jb29yZHNDaGFyKHtsZWZ0OiAwLCB0b3A6IHRvcH0sIFwiZGl2XCIpO1xuICAgICAgaWYgKHBvcy5jaCA8IGNtLmdldExpbmUocG9zLmxpbmUpLnNlYXJjaCgvXFxTLykpIHsgcmV0dXJuIGxpbmVTdGFydFNtYXJ0KGNtLCByYW5nZS5oZWFkKSB9XG4gICAgICByZXR1cm4gcG9zXG4gICAgfSwgc2VsX21vdmUpOyB9LFxuICAgIGdvTGluZVVwOiBmdW5jdGlvbiAoY20pIHsgcmV0dXJuIGNtLm1vdmVWKC0xLCBcImxpbmVcIik7IH0sXG4gICAgZ29MaW5lRG93bjogZnVuY3Rpb24gKGNtKSB7IHJldHVybiBjbS5tb3ZlVigxLCBcImxpbmVcIik7IH0sXG4gICAgZ29QYWdlVXA6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gY20ubW92ZVYoLTEsIFwicGFnZVwiKTsgfSxcbiAgICBnb1BhZ2VEb3duOiBmdW5jdGlvbiAoY20pIHsgcmV0dXJuIGNtLm1vdmVWKDEsIFwicGFnZVwiKTsgfSxcbiAgICBnb0NoYXJMZWZ0OiBmdW5jdGlvbiAoY20pIHsgcmV0dXJuIGNtLm1vdmVIKC0xLCBcImNoYXJcIik7IH0sXG4gICAgZ29DaGFyUmlnaHQ6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gY20ubW92ZUgoMSwgXCJjaGFyXCIpOyB9LFxuICAgIGdvQ29sdW1uTGVmdDogZnVuY3Rpb24gKGNtKSB7IHJldHVybiBjbS5tb3ZlSCgtMSwgXCJjb2x1bW5cIik7IH0sXG4gICAgZ29Db2x1bW5SaWdodDogZnVuY3Rpb24gKGNtKSB7IHJldHVybiBjbS5tb3ZlSCgxLCBcImNvbHVtblwiKTsgfSxcbiAgICBnb1dvcmRMZWZ0OiBmdW5jdGlvbiAoY20pIHsgcmV0dXJuIGNtLm1vdmVIKC0xLCBcIndvcmRcIik7IH0sXG4gICAgZ29Hcm91cFJpZ2h0OiBmdW5jdGlvbiAoY20pIHsgcmV0dXJuIGNtLm1vdmVIKDEsIFwiZ3JvdXBcIik7IH0sXG4gICAgZ29Hcm91cExlZnQ6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gY20ubW92ZUgoLTEsIFwiZ3JvdXBcIik7IH0sXG4gICAgZ29Xb3JkUmlnaHQ6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gY20ubW92ZUgoMSwgXCJ3b3JkXCIpOyB9LFxuICAgIGRlbENoYXJCZWZvcmU6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gY20uZGVsZXRlSCgtMSwgXCJjaGFyXCIpOyB9LFxuICAgIGRlbENoYXJBZnRlcjogZnVuY3Rpb24gKGNtKSB7IHJldHVybiBjbS5kZWxldGVIKDEsIFwiY2hhclwiKTsgfSxcbiAgICBkZWxXb3JkQmVmb3JlOiBmdW5jdGlvbiAoY20pIHsgcmV0dXJuIGNtLmRlbGV0ZUgoLTEsIFwid29yZFwiKTsgfSxcbiAgICBkZWxXb3JkQWZ0ZXI6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gY20uZGVsZXRlSCgxLCBcIndvcmRcIik7IH0sXG4gICAgZGVsR3JvdXBCZWZvcmU6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gY20uZGVsZXRlSCgtMSwgXCJncm91cFwiKTsgfSxcbiAgICBkZWxHcm91cEFmdGVyOiBmdW5jdGlvbiAoY20pIHsgcmV0dXJuIGNtLmRlbGV0ZUgoMSwgXCJncm91cFwiKTsgfSxcbiAgICBpbmRlbnRBdXRvOiBmdW5jdGlvbiAoY20pIHsgcmV0dXJuIGNtLmluZGVudFNlbGVjdGlvbihcInNtYXJ0XCIpOyB9LFxuICAgIGluZGVudE1vcmU6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gY20uaW5kZW50U2VsZWN0aW9uKFwiYWRkXCIpOyB9LFxuICAgIGluZGVudExlc3M6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gY20uaW5kZW50U2VsZWN0aW9uKFwic3VidHJhY3RcIik7IH0sXG4gICAgaW5zZXJ0VGFiOiBmdW5jdGlvbiAoY20pIHsgcmV0dXJuIGNtLnJlcGxhY2VTZWxlY3Rpb24oXCJcXHRcIik7IH0sXG4gICAgaW5zZXJ0U29mdFRhYjogZnVuY3Rpb24gKGNtKSB7XG4gICAgICB2YXIgc3BhY2VzID0gW10sIHJhbmdlcyA9IGNtLmxpc3RTZWxlY3Rpb25zKCksIHRhYlNpemUgPSBjbS5vcHRpb25zLnRhYlNpemU7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcG9zID0gcmFuZ2VzW2ldLmZyb20oKTtcbiAgICAgICAgdmFyIGNvbCA9IGNvdW50Q29sdW1uKGNtLmdldExpbmUocG9zLmxpbmUpLCBwb3MuY2gsIHRhYlNpemUpO1xuICAgICAgICBzcGFjZXMucHVzaChzcGFjZVN0cih0YWJTaXplIC0gY29sICUgdGFiU2l6ZSkpO1xuICAgICAgfVxuICAgICAgY20ucmVwbGFjZVNlbGVjdGlvbnMoc3BhY2VzKTtcbiAgICB9LFxuICAgIGRlZmF1bHRUYWI6IGZ1bmN0aW9uIChjbSkge1xuICAgICAgaWYgKGNtLnNvbWV0aGluZ1NlbGVjdGVkKCkpIHsgY20uaW5kZW50U2VsZWN0aW9uKFwiYWRkXCIpOyB9XG4gICAgICBlbHNlIHsgY20uZXhlY0NvbW1hbmQoXCJpbnNlcnRUYWJcIik7IH1cbiAgICB9LFxuICAgIC8vIFN3YXAgdGhlIHR3byBjaGFycyBsZWZ0IGFuZCByaWdodCBvZiBlYWNoIHNlbGVjdGlvbidzIGhlYWQuXG4gICAgLy8gTW92ZSBjdXJzb3IgYmVoaW5kIHRoZSB0d28gc3dhcHBlZCBjaGFyYWN0ZXJzIGFmdGVyd2FyZHMuXG4gICAgLy9cbiAgICAvLyBEb2Vzbid0IGNvbnNpZGVyIGxpbmUgZmVlZHMgYSBjaGFyYWN0ZXIuXG4gICAgLy8gRG9lc24ndCBzY2FuIG1vcmUgdGhhbiBvbmUgbGluZSBhYm92ZSB0byBmaW5kIGEgY2hhcmFjdGVyLlxuICAgIC8vIERvZXNuJ3QgZG8gYW55dGhpbmcgb24gYW4gZW1wdHkgbGluZS5cbiAgICAvLyBEb2Vzbid0IGRvIGFueXRoaW5nIHdpdGggbm9uLWVtcHR5IHNlbGVjdGlvbnMuXG4gICAgdHJhbnNwb3NlQ2hhcnM6IGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gcnVuSW5PcChjbSwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHJhbmdlcyA9IGNtLmxpc3RTZWxlY3Rpb25zKCksIG5ld1NlbCA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFyYW5nZXNbaV0uZW1wdHkoKSkgeyBjb250aW51ZSB9XG4gICAgICAgIHZhciBjdXIgPSByYW5nZXNbaV0uaGVhZCwgbGluZSA9IGdldExpbmUoY20uZG9jLCBjdXIubGluZSkudGV4dDtcbiAgICAgICAgaWYgKGxpbmUpIHtcbiAgICAgICAgICBpZiAoY3VyLmNoID09IGxpbmUubGVuZ3RoKSB7IGN1ciA9IG5ldyBQb3MoY3VyLmxpbmUsIGN1ci5jaCAtIDEpOyB9XG4gICAgICAgICAgaWYgKGN1ci5jaCA+IDApIHtcbiAgICAgICAgICAgIGN1ciA9IG5ldyBQb3MoY3VyLmxpbmUsIGN1ci5jaCArIDEpO1xuICAgICAgICAgICAgY20ucmVwbGFjZVJhbmdlKGxpbmUuY2hhckF0KGN1ci5jaCAtIDEpICsgbGluZS5jaGFyQXQoY3VyLmNoIC0gMiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zKGN1ci5saW5lLCBjdXIuY2ggLSAyKSwgY3VyLCBcIit0cmFuc3Bvc2VcIik7XG4gICAgICAgICAgfSBlbHNlIGlmIChjdXIubGluZSA+IGNtLmRvYy5maXJzdCkge1xuICAgICAgICAgICAgdmFyIHByZXYgPSBnZXRMaW5lKGNtLmRvYywgY3VyLmxpbmUgLSAxKS50ZXh0O1xuICAgICAgICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgICAgICAgY3VyID0gbmV3IFBvcyhjdXIubGluZSwgMSk7XG4gICAgICAgICAgICAgIGNtLnJlcGxhY2VSYW5nZShsaW5lLmNoYXJBdCgwKSArIGNtLmRvYy5saW5lU2VwYXJhdG9yKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldi5jaGFyQXQocHJldi5sZW5ndGggLSAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcyhjdXIubGluZSAtIDEsIHByZXYubGVuZ3RoIC0gMSksIGN1ciwgXCIrdHJhbnNwb3NlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBuZXdTZWwucHVzaChuZXcgUmFuZ2UoY3VyLCBjdXIpKTtcbiAgICAgIH1cbiAgICAgIGNtLnNldFNlbGVjdGlvbnMobmV3U2VsKTtcbiAgICB9KTsgfSxcbiAgICBuZXdsaW5lQW5kSW5kZW50OiBmdW5jdGlvbiAoY20pIHsgcmV0dXJuIHJ1bkluT3AoY20sIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzZWxzID0gY20ubGlzdFNlbGVjdGlvbnMoKTtcbiAgICAgIGZvciAodmFyIGkgPSBzZWxzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKVxuICAgICAgICB7IGNtLnJlcGxhY2VSYW5nZShjbS5kb2MubGluZVNlcGFyYXRvcigpLCBzZWxzW2ldLmFuY2hvciwgc2Vsc1tpXS5oZWFkLCBcIitpbnB1dFwiKTsgfVxuICAgICAgc2VscyA9IGNtLmxpc3RTZWxlY3Rpb25zKCk7XG4gICAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCBzZWxzLmxlbmd0aDsgaSQxKyspXG4gICAgICAgIHsgY20uaW5kZW50TGluZShzZWxzW2kkMV0uZnJvbSgpLmxpbmUsIG51bGwsIHRydWUpOyB9XG4gICAgICBlbnN1cmVDdXJzb3JWaXNpYmxlKGNtKTtcbiAgICB9KTsgfSxcbiAgICBvcGVuTGluZTogZnVuY3Rpb24gKGNtKSB7IHJldHVybiBjbS5yZXBsYWNlU2VsZWN0aW9uKFwiXFxuXCIsIFwic3RhcnRcIik7IH0sXG4gICAgdG9nZ2xlT3ZlcndyaXRlOiBmdW5jdGlvbiAoY20pIHsgcmV0dXJuIGNtLnRvZ2dsZU92ZXJ3cml0ZSgpOyB9XG4gIH07XG5cblxuICBmdW5jdGlvbiBsaW5lU3RhcnQoY20sIGxpbmVOKSB7XG4gICAgdmFyIGxpbmUgPSBnZXRMaW5lKGNtLmRvYywgbGluZU4pO1xuICAgIHZhciB2aXN1YWwgPSB2aXN1YWxMaW5lKGxpbmUpO1xuICAgIGlmICh2aXN1YWwgIT0gbGluZSkgeyBsaW5lTiA9IGxpbmVObyh2aXN1YWwpOyB9XG4gICAgcmV0dXJuIGVuZE9mTGluZSh0cnVlLCBjbSwgdmlzdWFsLCBsaW5lTiwgMSlcbiAgfVxuICBmdW5jdGlvbiBsaW5lRW5kKGNtLCBsaW5lTikge1xuICAgIHZhciBsaW5lID0gZ2V0TGluZShjbS5kb2MsIGxpbmVOKTtcbiAgICB2YXIgdmlzdWFsID0gdmlzdWFsTGluZUVuZChsaW5lKTtcbiAgICBpZiAodmlzdWFsICE9IGxpbmUpIHsgbGluZU4gPSBsaW5lTm8odmlzdWFsKTsgfVxuICAgIHJldHVybiBlbmRPZkxpbmUodHJ1ZSwgY20sIGxpbmUsIGxpbmVOLCAtMSlcbiAgfVxuICBmdW5jdGlvbiBsaW5lU3RhcnRTbWFydChjbSwgcG9zKSB7XG4gICAgdmFyIHN0YXJ0ID0gbGluZVN0YXJ0KGNtLCBwb3MubGluZSk7XG4gICAgdmFyIGxpbmUgPSBnZXRMaW5lKGNtLmRvYywgc3RhcnQubGluZSk7XG4gICAgdmFyIG9yZGVyID0gZ2V0T3JkZXIobGluZSwgY20uZG9jLmRpcmVjdGlvbik7XG4gICAgaWYgKCFvcmRlciB8fCBvcmRlclswXS5sZXZlbCA9PSAwKSB7XG4gICAgICB2YXIgZmlyc3ROb25XUyA9IE1hdGgubWF4KHN0YXJ0LmNoLCBsaW5lLnRleHQuc2VhcmNoKC9cXFMvKSk7XG4gICAgICB2YXIgaW5XUyA9IHBvcy5saW5lID09IHN0YXJ0LmxpbmUgJiYgcG9zLmNoIDw9IGZpcnN0Tm9uV1MgJiYgcG9zLmNoO1xuICAgICAgcmV0dXJuIFBvcyhzdGFydC5saW5lLCBpbldTID8gMCA6IGZpcnN0Tm9uV1MsIHN0YXJ0LnN0aWNreSlcbiAgICB9XG4gICAgcmV0dXJuIHN0YXJ0XG4gIH1cblxuICAvLyBSdW4gYSBoYW5kbGVyIHRoYXQgd2FzIGJvdW5kIHRvIGEga2V5LlxuICBmdW5jdGlvbiBkb0hhbmRsZUJpbmRpbmcoY20sIGJvdW5kLCBkcm9wU2hpZnQpIHtcbiAgICBpZiAodHlwZW9mIGJvdW5kID09IFwic3RyaW5nXCIpIHtcbiAgICAgIGJvdW5kID0gY29tbWFuZHNbYm91bmRdO1xuICAgICAgaWYgKCFib3VuZCkgeyByZXR1cm4gZmFsc2UgfVxuICAgIH1cbiAgICAvLyBFbnN1cmUgcHJldmlvdXMgaW5wdXQgaGFzIGJlZW4gcmVhZCwgc28gdGhhdCB0aGUgaGFuZGxlciBzZWVzIGFcbiAgICAvLyBjb25zaXN0ZW50IHZpZXcgb2YgdGhlIGRvY3VtZW50XG4gICAgY20uZGlzcGxheS5pbnB1dC5lbnN1cmVQb2xsZWQoKTtcbiAgICB2YXIgcHJldlNoaWZ0ID0gY20uZGlzcGxheS5zaGlmdCwgZG9uZSA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBpZiAoY20uaXNSZWFkT25seSgpKSB7IGNtLnN0YXRlLnN1cHByZXNzRWRpdHMgPSB0cnVlOyB9XG4gICAgICBpZiAoZHJvcFNoaWZ0KSB7IGNtLmRpc3BsYXkuc2hpZnQgPSBmYWxzZTsgfVxuICAgICAgZG9uZSA9IGJvdW5kKGNtKSAhPSBQYXNzO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBjbS5kaXNwbGF5LnNoaWZ0ID0gcHJldlNoaWZ0O1xuICAgICAgY20uc3RhdGUuc3VwcHJlc3NFZGl0cyA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZG9uZVxuICB9XG5cbiAgZnVuY3Rpb24gbG9va3VwS2V5Rm9yRWRpdG9yKGNtLCBuYW1lLCBoYW5kbGUpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNtLnN0YXRlLmtleU1hcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciByZXN1bHQgPSBsb29rdXBLZXkobmFtZSwgY20uc3RhdGUua2V5TWFwc1tpXSwgaGFuZGxlLCBjbSk7XG4gICAgICBpZiAocmVzdWx0KSB7IHJldHVybiByZXN1bHQgfVxuICAgIH1cbiAgICByZXR1cm4gKGNtLm9wdGlvbnMuZXh0cmFLZXlzICYmIGxvb2t1cEtleShuYW1lLCBjbS5vcHRpb25zLmV4dHJhS2V5cywgaGFuZGxlLCBjbSkpXG4gICAgICB8fCBsb29rdXBLZXkobmFtZSwgY20ub3B0aW9ucy5rZXlNYXAsIGhhbmRsZSwgY20pXG4gIH1cblxuICAvLyBOb3RlIHRoYXQsIGRlc3BpdGUgdGhlIG5hbWUsIHRoaXMgZnVuY3Rpb24gaXMgYWxzbyB1c2VkIHRvIGNoZWNrXG4gIC8vIGZvciBib3VuZCBtb3VzZSBjbGlja3MuXG5cbiAgdmFyIHN0b3BTZXEgPSBuZXcgRGVsYXllZDtcblxuICBmdW5jdGlvbiBkaXNwYXRjaEtleShjbSwgbmFtZSwgZSwgaGFuZGxlKSB7XG4gICAgdmFyIHNlcSA9IGNtLnN0YXRlLmtleVNlcTtcbiAgICBpZiAoc2VxKSB7XG4gICAgICBpZiAoaXNNb2RpZmllcktleShuYW1lKSkgeyByZXR1cm4gXCJoYW5kbGVkXCIgfVxuICAgICAgaWYgKC9cXCckLy50ZXN0KG5hbWUpKVxuICAgICAgICB7IGNtLnN0YXRlLmtleVNlcSA9IG51bGw7IH1cbiAgICAgIGVsc2VcbiAgICAgICAgeyBzdG9wU2VxLnNldCg1MCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChjbS5zdGF0ZS5rZXlTZXEgPT0gc2VxKSB7XG4gICAgICAgICAgICBjbS5zdGF0ZS5rZXlTZXEgPSBudWxsO1xuICAgICAgICAgICAgY20uZGlzcGxheS5pbnB1dC5yZXNldCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7IH1cbiAgICAgIGlmIChkaXNwYXRjaEtleUlubmVyKGNtLCBzZXEgKyBcIiBcIiArIG5hbWUsIGUsIGhhbmRsZSkpIHsgcmV0dXJuIHRydWUgfVxuICAgIH1cbiAgICByZXR1cm4gZGlzcGF0Y2hLZXlJbm5lcihjbSwgbmFtZSwgZSwgaGFuZGxlKVxuICB9XG5cbiAgZnVuY3Rpb24gZGlzcGF0Y2hLZXlJbm5lcihjbSwgbmFtZSwgZSwgaGFuZGxlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGxvb2t1cEtleUZvckVkaXRvcihjbSwgbmFtZSwgaGFuZGxlKTtcblxuICAgIGlmIChyZXN1bHQgPT0gXCJtdWx0aVwiKVxuICAgICAgeyBjbS5zdGF0ZS5rZXlTZXEgPSBuYW1lOyB9XG4gICAgaWYgKHJlc3VsdCA9PSBcImhhbmRsZWRcIilcbiAgICAgIHsgc2lnbmFsTGF0ZXIoY20sIFwia2V5SGFuZGxlZFwiLCBjbSwgbmFtZSwgZSk7IH1cblxuICAgIGlmIChyZXN1bHQgPT0gXCJoYW5kbGVkXCIgfHwgcmVzdWx0ID09IFwibXVsdGlcIikge1xuICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTtcbiAgICAgIHJlc3RhcnRCbGluayhjbSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhcmVzdWx0XG4gIH1cblxuICAvLyBIYW5kbGUgYSBrZXkgZnJvbSB0aGUga2V5ZG93biBldmVudC5cbiAgZnVuY3Rpb24gaGFuZGxlS2V5QmluZGluZyhjbSwgZSkge1xuICAgIHZhciBuYW1lID0ga2V5TmFtZShlLCB0cnVlKTtcbiAgICBpZiAoIW5hbWUpIHsgcmV0dXJuIGZhbHNlIH1cblxuICAgIGlmIChlLnNoaWZ0S2V5ICYmICFjbS5zdGF0ZS5rZXlTZXEpIHtcbiAgICAgIC8vIEZpcnN0IHRyeSB0byByZXNvbHZlIGZ1bGwgbmFtZSAoaW5jbHVkaW5nICdTaGlmdC0nKS4gRmFpbGluZ1xuICAgICAgLy8gdGhhdCwgc2VlIGlmIHRoZXJlIGlzIGEgY3Vyc29yLW1vdGlvbiBjb21tYW5kIChzdGFydGluZyB3aXRoXG4gICAgICAvLyAnZ28nKSBib3VuZCB0byB0aGUga2V5bmFtZSB3aXRob3V0ICdTaGlmdC0nLlxuICAgICAgcmV0dXJuIGRpc3BhdGNoS2V5KGNtLCBcIlNoaWZ0LVwiICsgbmFtZSwgZSwgZnVuY3Rpb24gKGIpIHsgcmV0dXJuIGRvSGFuZGxlQmluZGluZyhjbSwgYiwgdHJ1ZSk7IH0pXG4gICAgICAgICAgfHwgZGlzcGF0Y2hLZXkoY20sIG5hbWUsIGUsIGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICAgICBpZiAodHlwZW9mIGIgPT0gXCJzdHJpbmdcIiA/IC9eZ29bQS1aXS8udGVzdChiKSA6IGIubW90aW9uKVxuICAgICAgICAgICAgICAgICB7IHJldHVybiBkb0hhbmRsZUJpbmRpbmcoY20sIGIpIH1cbiAgICAgICAgICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZGlzcGF0Y2hLZXkoY20sIG5hbWUsIGUsIGZ1bmN0aW9uIChiKSB7IHJldHVybiBkb0hhbmRsZUJpbmRpbmcoY20sIGIpOyB9KVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBhIGtleSBmcm9tIHRoZSBrZXlwcmVzcyBldmVudFxuICBmdW5jdGlvbiBoYW5kbGVDaGFyQmluZGluZyhjbSwgZSwgY2gpIHtcbiAgICByZXR1cm4gZGlzcGF0Y2hLZXkoY20sIFwiJ1wiICsgY2ggKyBcIidcIiwgZSwgZnVuY3Rpb24gKGIpIHsgcmV0dXJuIGRvSGFuZGxlQmluZGluZyhjbSwgYiwgdHJ1ZSk7IH0pXG4gIH1cblxuICB2YXIgbGFzdFN0b3BwZWRLZXkgPSBudWxsO1xuICBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgIHZhciBjbSA9IHRoaXM7XG4gICAgaWYgKGUudGFyZ2V0ICYmIGUudGFyZ2V0ICE9IGNtLmRpc3BsYXkuaW5wdXQuZ2V0RmllbGQoKSkgeyByZXR1cm4gfVxuICAgIGNtLmN1ck9wLmZvY3VzID0gYWN0aXZlRWx0KCk7XG4gICAgaWYgKHNpZ25hbERPTUV2ZW50KGNtLCBlKSkgeyByZXR1cm4gfVxuICAgIC8vIElFIGRvZXMgc3RyYW5nZSB0aGluZ3Mgd2l0aCBlc2NhcGUuXG4gICAgaWYgKGllICYmIGllX3ZlcnNpb24gPCAxMSAmJiBlLmtleUNvZGUgPT0gMjcpIHsgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlOyB9XG4gICAgdmFyIGNvZGUgPSBlLmtleUNvZGU7XG4gICAgY20uZGlzcGxheS5zaGlmdCA9IGNvZGUgPT0gMTYgfHwgZS5zaGlmdEtleTtcbiAgICB2YXIgaGFuZGxlZCA9IGhhbmRsZUtleUJpbmRpbmcoY20sIGUpO1xuICAgIGlmIChwcmVzdG8pIHtcbiAgICAgIGxhc3RTdG9wcGVkS2V5ID0gaGFuZGxlZCA/IGNvZGUgOiBudWxsO1xuICAgICAgLy8gT3BlcmEgaGFzIG5vIGN1dCBldmVudC4uLiB3ZSB0cnkgdG8gYXQgbGVhc3QgY2F0Y2ggdGhlIGtleSBjb21ib1xuICAgICAgaWYgKCFoYW5kbGVkICYmIGNvZGUgPT0gODggJiYgIWhhc0NvcHlFdmVudCAmJiAobWFjID8gZS5tZXRhS2V5IDogZS5jdHJsS2V5KSlcbiAgICAgICAgeyBjbS5yZXBsYWNlU2VsZWN0aW9uKFwiXCIsIG51bGwsIFwiY3V0XCIpOyB9XG4gICAgfVxuICAgIGlmIChnZWNrbyAmJiAhbWFjICYmICFoYW5kbGVkICYmIGNvZGUgPT0gNDYgJiYgZS5zaGlmdEtleSAmJiAhZS5jdHJsS2V5ICYmIGRvY3VtZW50LmV4ZWNDb21tYW5kKVxuICAgICAgeyBkb2N1bWVudC5leGVjQ29tbWFuZChcImN1dFwiKTsgfVxuXG4gICAgLy8gVHVybiBtb3VzZSBpbnRvIGNyb3NzaGFpciB3aGVuIEFsdCBpcyBoZWxkIG9uIE1hYy5cbiAgICBpZiAoY29kZSA9PSAxOCAmJiAhL1xcYkNvZGVNaXJyb3ItY3Jvc3NoYWlyXFxiLy50ZXN0KGNtLmRpc3BsYXkubGluZURpdi5jbGFzc05hbWUpKVxuICAgICAgeyBzaG93Q3Jvc3NIYWlyKGNtKTsgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2hvd0Nyb3NzSGFpcihjbSkge1xuICAgIHZhciBsaW5lRGl2ID0gY20uZGlzcGxheS5saW5lRGl2O1xuICAgIGFkZENsYXNzKGxpbmVEaXYsIFwiQ29kZU1pcnJvci1jcm9zc2hhaXJcIik7XG5cbiAgICBmdW5jdGlvbiB1cChlKSB7XG4gICAgICBpZiAoZS5rZXlDb2RlID09IDE4IHx8ICFlLmFsdEtleSkge1xuICAgICAgICBybUNsYXNzKGxpbmVEaXYsIFwiQ29kZU1pcnJvci1jcm9zc2hhaXJcIik7XG4gICAgICAgIG9mZihkb2N1bWVudCwgXCJrZXl1cFwiLCB1cCk7XG4gICAgICAgIG9mZihkb2N1bWVudCwgXCJtb3VzZW92ZXJcIiwgdXApO1xuICAgICAgfVxuICAgIH1cbiAgICBvbihkb2N1bWVudCwgXCJrZXl1cFwiLCB1cCk7XG4gICAgb24oZG9jdW1lbnQsIFwibW91c2VvdmVyXCIsIHVwKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uS2V5VXAoZSkge1xuICAgIGlmIChlLmtleUNvZGUgPT0gMTYpIHsgdGhpcy5kb2Muc2VsLnNoaWZ0ID0gZmFsc2U7IH1cbiAgICBzaWduYWxET01FdmVudCh0aGlzLCBlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uS2V5UHJlc3MoZSkge1xuICAgIHZhciBjbSA9IHRoaXM7XG4gICAgaWYgKGUudGFyZ2V0ICYmIGUudGFyZ2V0ICE9IGNtLmRpc3BsYXkuaW5wdXQuZ2V0RmllbGQoKSkgeyByZXR1cm4gfVxuICAgIGlmIChldmVudEluV2lkZ2V0KGNtLmRpc3BsYXksIGUpIHx8IHNpZ25hbERPTUV2ZW50KGNtLCBlKSB8fCBlLmN0cmxLZXkgJiYgIWUuYWx0S2V5IHx8IG1hYyAmJiBlLm1ldGFLZXkpIHsgcmV0dXJuIH1cbiAgICB2YXIga2V5Q29kZSA9IGUua2V5Q29kZSwgY2hhckNvZGUgPSBlLmNoYXJDb2RlO1xuICAgIGlmIChwcmVzdG8gJiYga2V5Q29kZSA9PSBsYXN0U3RvcHBlZEtleSkge2xhc3RTdG9wcGVkS2V5ID0gbnVsbDsgZV9wcmV2ZW50RGVmYXVsdChlKTsgcmV0dXJufVxuICAgIGlmICgocHJlc3RvICYmICghZS53aGljaCB8fCBlLndoaWNoIDwgMTApKSAmJiBoYW5kbGVLZXlCaW5kaW5nKGNtLCBlKSkgeyByZXR1cm4gfVxuICAgIHZhciBjaCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUgPT0gbnVsbCA/IGtleUNvZGUgOiBjaGFyQ29kZSk7XG4gICAgLy8gU29tZSBicm93c2VycyBmaXJlIGtleXByZXNzIGV2ZW50cyBmb3IgYmFja3NwYWNlXG4gICAgaWYgKGNoID09IFwiXFx4MDhcIikgeyByZXR1cm4gfVxuICAgIGlmIChoYW5kbGVDaGFyQmluZGluZyhjbSwgZSwgY2gpKSB7IHJldHVybiB9XG4gICAgY20uZGlzcGxheS5pbnB1dC5vbktleVByZXNzKGUpO1xuICB9XG5cbiAgdmFyIERPVUJMRUNMSUNLX0RFTEFZID0gNDAwO1xuXG4gIHZhciBQYXN0Q2xpY2sgPSBmdW5jdGlvbih0aW1lLCBwb3MsIGJ1dHRvbikge1xuICAgIHRoaXMudGltZSA9IHRpbWU7XG4gICAgdGhpcy5wb3MgPSBwb3M7XG4gICAgdGhpcy5idXR0b24gPSBidXR0b247XG4gIH07XG5cbiAgUGFzdENsaWNrLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHRpbWUsIHBvcywgYnV0dG9uKSB7XG4gICAgcmV0dXJuIHRoaXMudGltZSArIERPVUJMRUNMSUNLX0RFTEFZID4gdGltZSAmJlxuICAgICAgY21wKHBvcywgdGhpcy5wb3MpID09IDAgJiYgYnV0dG9uID09IHRoaXMuYnV0dG9uXG4gIH07XG5cbiAgdmFyIGxhc3RDbGljaywgbGFzdERvdWJsZUNsaWNrO1xuICBmdW5jdGlvbiBjbGlja1JlcGVhdChwb3MsIGJ1dHRvbikge1xuICAgIHZhciBub3cgPSArbmV3IERhdGU7XG4gICAgaWYgKGxhc3REb3VibGVDbGljayAmJiBsYXN0RG91YmxlQ2xpY2suY29tcGFyZShub3csIHBvcywgYnV0dG9uKSkge1xuICAgICAgbGFzdENsaWNrID0gbGFzdERvdWJsZUNsaWNrID0gbnVsbDtcbiAgICAgIHJldHVybiBcInRyaXBsZVwiXG4gICAgfSBlbHNlIGlmIChsYXN0Q2xpY2sgJiYgbGFzdENsaWNrLmNvbXBhcmUobm93LCBwb3MsIGJ1dHRvbikpIHtcbiAgICAgIGxhc3REb3VibGVDbGljayA9IG5ldyBQYXN0Q2xpY2sobm93LCBwb3MsIGJ1dHRvbik7XG4gICAgICBsYXN0Q2xpY2sgPSBudWxsO1xuICAgICAgcmV0dXJuIFwiZG91YmxlXCJcbiAgICB9IGVsc2Uge1xuICAgICAgbGFzdENsaWNrID0gbmV3IFBhc3RDbGljayhub3csIHBvcywgYnV0dG9uKTtcbiAgICAgIGxhc3REb3VibGVDbGljayA9IG51bGw7XG4gICAgICByZXR1cm4gXCJzaW5nbGVcIlxuICAgIH1cbiAgfVxuXG4gIC8vIEEgbW91c2UgZG93biBjYW4gYmUgYSBzaW5nbGUgY2xpY2ssIGRvdWJsZSBjbGljaywgdHJpcGxlIGNsaWNrLFxuICAvLyBzdGFydCBvZiBzZWxlY3Rpb24gZHJhZywgc3RhcnQgb2YgdGV4dCBkcmFnLCBuZXcgY3Vyc29yXG4gIC8vIChjdHJsLWNsaWNrKSwgcmVjdGFuZ2xlIGRyYWcgKGFsdC1kcmFnKSwgb3IgeHdpblxuICAvLyBtaWRkbGUtY2xpY2stcGFzdGUuIE9yIGl0IG1pZ2h0IGJlIGEgY2xpY2sgb24gc29tZXRoaW5nIHdlIHNob3VsZFxuICAvLyBub3QgaW50ZXJmZXJlIHdpdGgsIHN1Y2ggYXMgYSBzY3JvbGxiYXIgb3Igd2lkZ2V0LlxuICBmdW5jdGlvbiBvbk1vdXNlRG93bihlKSB7XG4gICAgdmFyIGNtID0gdGhpcywgZGlzcGxheSA9IGNtLmRpc3BsYXk7XG4gICAgaWYgKHNpZ25hbERPTUV2ZW50KGNtLCBlKSB8fCBkaXNwbGF5LmFjdGl2ZVRvdWNoICYmIGRpc3BsYXkuaW5wdXQuc3VwcG9ydHNUb3VjaCgpKSB7IHJldHVybiB9XG4gICAgZGlzcGxheS5pbnB1dC5lbnN1cmVQb2xsZWQoKTtcbiAgICBkaXNwbGF5LnNoaWZ0ID0gZS5zaGlmdEtleTtcblxuICAgIGlmIChldmVudEluV2lkZ2V0KGRpc3BsYXksIGUpKSB7XG4gICAgICBpZiAoIXdlYmtpdCkge1xuICAgICAgICAvLyBCcmllZmx5IHR1cm4gb2ZmIGRyYWdnYWJpbGl0eSwgdG8gYWxsb3cgd2lkZ2V0cyB0byBkb1xuICAgICAgICAvLyBub3JtYWwgZHJhZ2dpbmcgdGhpbmdzLlxuICAgICAgICBkaXNwbGF5LnNjcm9sbGVyLmRyYWdnYWJsZSA9IGZhbHNlO1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRpc3BsYXkuc2Nyb2xsZXIuZHJhZ2dhYmxlID0gdHJ1ZTsgfSwgMTAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoY2xpY2tJbkd1dHRlcihjbSwgZSkpIHsgcmV0dXJuIH1cbiAgICB2YXIgcG9zID0gcG9zRnJvbU1vdXNlKGNtLCBlKSwgYnV0dG9uID0gZV9idXR0b24oZSksIHJlcGVhdCA9IHBvcyA/IGNsaWNrUmVwZWF0KHBvcywgYnV0dG9uKSA6IFwic2luZ2xlXCI7XG4gICAgd2luZG93LmZvY3VzKCk7XG5cbiAgICAvLyAjMzI2MTogbWFrZSBzdXJlLCB0aGF0IHdlJ3JlIG5vdCBzdGFydGluZyBhIHNlY29uZCBzZWxlY3Rpb25cbiAgICBpZiAoYnV0dG9uID09IDEgJiYgY20uc3RhdGUuc2VsZWN0aW5nVGV4dClcbiAgICAgIHsgY20uc3RhdGUuc2VsZWN0aW5nVGV4dChlKTsgfVxuXG4gICAgaWYgKHBvcyAmJiBoYW5kbGVNYXBwZWRCdXR0b24oY20sIGJ1dHRvbiwgcG9zLCByZXBlYXQsIGUpKSB7IHJldHVybiB9XG5cbiAgICBpZiAoYnV0dG9uID09IDEpIHtcbiAgICAgIGlmIChwb3MpIHsgbGVmdEJ1dHRvbkRvd24oY20sIHBvcywgcmVwZWF0LCBlKTsgfVxuICAgICAgZWxzZSBpZiAoZV90YXJnZXQoZSkgPT0gZGlzcGxheS5zY3JvbGxlcikgeyBlX3ByZXZlbnREZWZhdWx0KGUpOyB9XG4gICAgfSBlbHNlIGlmIChidXR0b24gPT0gMikge1xuICAgICAgaWYgKHBvcykgeyBleHRlbmRTZWxlY3Rpb24oY20uZG9jLCBwb3MpOyB9XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRpc3BsYXkuaW5wdXQuZm9jdXMoKTsgfSwgMjApO1xuICAgIH0gZWxzZSBpZiAoYnV0dG9uID09IDMpIHtcbiAgICAgIGlmIChjYXB0dXJlUmlnaHRDbGljaykgeyBjbS5kaXNwbGF5LmlucHV0Lm9uQ29udGV4dE1lbnUoZSk7IH1cbiAgICAgIGVsc2UgeyBkZWxheUJsdXJFdmVudChjbSk7IH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVNYXBwZWRCdXR0b24oY20sIGJ1dHRvbiwgcG9zLCByZXBlYXQsIGV2ZW50KSB7XG4gICAgdmFyIG5hbWUgPSBcIkNsaWNrXCI7XG4gICAgaWYgKHJlcGVhdCA9PSBcImRvdWJsZVwiKSB7IG5hbWUgPSBcIkRvdWJsZVwiICsgbmFtZTsgfVxuICAgIGVsc2UgaWYgKHJlcGVhdCA9PSBcInRyaXBsZVwiKSB7IG5hbWUgPSBcIlRyaXBsZVwiICsgbmFtZTsgfVxuICAgIG5hbWUgPSAoYnV0dG9uID09IDEgPyBcIkxlZnRcIiA6IGJ1dHRvbiA9PSAyID8gXCJNaWRkbGVcIiA6IFwiUmlnaHRcIikgKyBuYW1lO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoS2V5KGNtLCAgYWRkTW9kaWZpZXJOYW1lcyhuYW1lLCBldmVudCksIGV2ZW50LCBmdW5jdGlvbiAoYm91bmQpIHtcbiAgICAgIGlmICh0eXBlb2YgYm91bmQgPT0gXCJzdHJpbmdcIikgeyBib3VuZCA9IGNvbW1hbmRzW2JvdW5kXTsgfVxuICAgICAgaWYgKCFib3VuZCkgeyByZXR1cm4gZmFsc2UgfVxuICAgICAgdmFyIGRvbmUgPSBmYWxzZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChjbS5pc1JlYWRPbmx5KCkpIHsgY20uc3RhdGUuc3VwcHJlc3NFZGl0cyA9IHRydWU7IH1cbiAgICAgICAgZG9uZSA9IGJvdW5kKGNtLCBwb3MpICE9IFBhc3M7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBjbS5zdGF0ZS5zdXBwcmVzc0VkaXRzID0gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gZG9uZVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBjb25maWd1cmVNb3VzZShjbSwgcmVwZWF0LCBldmVudCkge1xuICAgIHZhciBvcHRpb24gPSBjbS5nZXRPcHRpb24oXCJjb25maWd1cmVNb3VzZVwiKTtcbiAgICB2YXIgdmFsdWUgPSBvcHRpb24gPyBvcHRpb24oY20sIHJlcGVhdCwgZXZlbnQpIDoge307XG4gICAgaWYgKHZhbHVlLnVuaXQgPT0gbnVsbCkge1xuICAgICAgdmFyIHJlY3QgPSBjaHJvbWVPUyA/IGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50Lm1ldGFLZXkgOiBldmVudC5hbHRLZXk7XG4gICAgICB2YWx1ZS51bml0ID0gcmVjdCA/IFwicmVjdGFuZ2xlXCIgOiByZXBlYXQgPT0gXCJzaW5nbGVcIiA/IFwiY2hhclwiIDogcmVwZWF0ID09IFwiZG91YmxlXCIgPyBcIndvcmRcIiA6IFwibGluZVwiO1xuICAgIH1cbiAgICBpZiAodmFsdWUuZXh0ZW5kID09IG51bGwgfHwgY20uZG9jLmV4dGVuZCkgeyB2YWx1ZS5leHRlbmQgPSBjbS5kb2MuZXh0ZW5kIHx8IGV2ZW50LnNoaWZ0S2V5OyB9XG4gICAgaWYgKHZhbHVlLmFkZE5ldyA9PSBudWxsKSB7IHZhbHVlLmFkZE5ldyA9IG1hYyA/IGV2ZW50Lm1ldGFLZXkgOiBldmVudC5jdHJsS2V5OyB9XG4gICAgaWYgKHZhbHVlLm1vdmVPbkRyYWcgPT0gbnVsbCkgeyB2YWx1ZS5tb3ZlT25EcmFnID0gIShtYWMgPyBldmVudC5hbHRLZXkgOiBldmVudC5jdHJsS2V5KTsgfVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgZnVuY3Rpb24gbGVmdEJ1dHRvbkRvd24oY20sIHBvcywgcmVwZWF0LCBldmVudCkge1xuICAgIGlmIChpZSkgeyBzZXRUaW1lb3V0KGJpbmQoZW5zdXJlRm9jdXMsIGNtKSwgMCk7IH1cbiAgICBlbHNlIHsgY20uY3VyT3AuZm9jdXMgPSBhY3RpdmVFbHQoKTsgfVxuXG4gICAgdmFyIGJlaGF2aW9yID0gY29uZmlndXJlTW91c2UoY20sIHJlcGVhdCwgZXZlbnQpO1xuXG4gICAgdmFyIHNlbCA9IGNtLmRvYy5zZWwsIGNvbnRhaW5lZDtcbiAgICBpZiAoY20ub3B0aW9ucy5kcmFnRHJvcCAmJiBkcmFnQW5kRHJvcCAmJiAhY20uaXNSZWFkT25seSgpICYmXG4gICAgICAgIHJlcGVhdCA9PSBcInNpbmdsZVwiICYmIChjb250YWluZWQgPSBzZWwuY29udGFpbnMocG9zKSkgPiAtMSAmJlxuICAgICAgICAoY21wKChjb250YWluZWQgPSBzZWwucmFuZ2VzW2NvbnRhaW5lZF0pLmZyb20oKSwgcG9zKSA8IDAgfHwgcG9zLnhSZWwgPiAwKSAmJlxuICAgICAgICAoY21wKGNvbnRhaW5lZC50bygpLCBwb3MpID4gMCB8fCBwb3MueFJlbCA8IDApKVxuICAgICAgeyBsZWZ0QnV0dG9uU3RhcnREcmFnKGNtLCBldmVudCwgcG9zLCBiZWhhdmlvcik7IH1cbiAgICBlbHNlXG4gICAgICB7IGxlZnRCdXR0b25TZWxlY3QoY20sIGV2ZW50LCBwb3MsIGJlaGF2aW9yKTsgfVxuICB9XG5cbiAgLy8gU3RhcnQgYSB0ZXh0IGRyYWcuIFdoZW4gaXQgZW5kcywgc2VlIGlmIGFueSBkcmFnZ2luZyBhY3R1YWxseVxuICAvLyBoYXBwZW4sIGFuZCB0cmVhdCBhcyBhIGNsaWNrIGlmIGl0IGRpZG4ndC5cbiAgZnVuY3Rpb24gbGVmdEJ1dHRvblN0YXJ0RHJhZyhjbSwgZXZlbnQsIHBvcywgYmVoYXZpb3IpIHtcbiAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXksIG1vdmVkID0gZmFsc2U7XG4gICAgdmFyIGRyYWdFbmQgPSBvcGVyYXRpb24oY20sIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAod2Via2l0KSB7IGRpc3BsYXkuc2Nyb2xsZXIuZHJhZ2dhYmxlID0gZmFsc2U7IH1cbiAgICAgIGNtLnN0YXRlLmRyYWdnaW5nVGV4dCA9IGZhbHNlO1xuICAgICAgb2ZmKGRpc3BsYXkud3JhcHBlci5vd25lckRvY3VtZW50LCBcIm1vdXNldXBcIiwgZHJhZ0VuZCk7XG4gICAgICBvZmYoZGlzcGxheS53cmFwcGVyLm93bmVyRG9jdW1lbnQsIFwibW91c2Vtb3ZlXCIsIG1vdXNlTW92ZSk7XG4gICAgICBvZmYoZGlzcGxheS5zY3JvbGxlciwgXCJkcmFnc3RhcnRcIiwgZHJhZ1N0YXJ0KTtcbiAgICAgIG9mZihkaXNwbGF5LnNjcm9sbGVyLCBcImRyb3BcIiwgZHJhZ0VuZCk7XG4gICAgICBpZiAoIW1vdmVkKSB7XG4gICAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7XG4gICAgICAgIGlmICghYmVoYXZpb3IuYWRkTmV3KVxuICAgICAgICAgIHsgZXh0ZW5kU2VsZWN0aW9uKGNtLmRvYywgcG9zLCBudWxsLCBudWxsLCBiZWhhdmlvci5leHRlbmQpOyB9XG4gICAgICAgIC8vIFdvcmsgYXJvdW5kIHVuZXhwbGFpbmFibGUgZm9jdXMgcHJvYmxlbSBpbiBJRTkgKCMyMTI3KSBhbmQgQ2hyb21lICgjMzA4MSlcbiAgICAgICAgaWYgKCh3ZWJraXQgJiYgIXNhZmFyaSkgfHwgaWUgJiYgaWVfdmVyc2lvbiA9PSA5KVxuICAgICAgICAgIHsgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7ZGlzcGxheS53cmFwcGVyLm93bmVyRG9jdW1lbnQuYm9keS5mb2N1cyh7cHJldmVudFNjcm9sbDogdHJ1ZX0pOyBkaXNwbGF5LmlucHV0LmZvY3VzKCk7fSwgMjApOyB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB7IGRpc3BsYXkuaW5wdXQuZm9jdXMoKTsgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBtb3VzZU1vdmUgPSBmdW5jdGlvbihlMikge1xuICAgICAgbW92ZWQgPSBtb3ZlZCB8fCBNYXRoLmFicyhldmVudC5jbGllbnRYIC0gZTIuY2xpZW50WCkgKyBNYXRoLmFicyhldmVudC5jbGllbnRZIC0gZTIuY2xpZW50WSkgPj0gMTA7XG4gICAgfTtcbiAgICB2YXIgZHJhZ1N0YXJ0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbW92ZWQgPSB0cnVlOyB9O1xuICAgIC8vIExldCB0aGUgZHJhZyBoYW5kbGVyIGhhbmRsZSB0aGlzLlxuICAgIGlmICh3ZWJraXQpIHsgZGlzcGxheS5zY3JvbGxlci5kcmFnZ2FibGUgPSB0cnVlOyB9XG4gICAgY20uc3RhdGUuZHJhZ2dpbmdUZXh0ID0gZHJhZ0VuZDtcbiAgICBkcmFnRW5kLmNvcHkgPSAhYmVoYXZpb3IubW92ZU9uRHJhZztcbiAgICAvLyBJRSdzIGFwcHJvYWNoIHRvIGRyYWdnYWJsZVxuICAgIGlmIChkaXNwbGF5LnNjcm9sbGVyLmRyYWdEcm9wKSB7IGRpc3BsYXkuc2Nyb2xsZXIuZHJhZ0Ryb3AoKTsgfVxuICAgIG9uKGRpc3BsYXkud3JhcHBlci5vd25lckRvY3VtZW50LCBcIm1vdXNldXBcIiwgZHJhZ0VuZCk7XG4gICAgb24oZGlzcGxheS53cmFwcGVyLm93bmVyRG9jdW1lbnQsIFwibW91c2Vtb3ZlXCIsIG1vdXNlTW92ZSk7XG4gICAgb24oZGlzcGxheS5zY3JvbGxlciwgXCJkcmFnc3RhcnRcIiwgZHJhZ1N0YXJ0KTtcbiAgICBvbihkaXNwbGF5LnNjcm9sbGVyLCBcImRyb3BcIiwgZHJhZ0VuZCk7XG5cbiAgICBkZWxheUJsdXJFdmVudChjbSk7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiBkaXNwbGF5LmlucHV0LmZvY3VzKCk7IH0sIDIwKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJhbmdlRm9yVW5pdChjbSwgcG9zLCB1bml0KSB7XG4gICAgaWYgKHVuaXQgPT0gXCJjaGFyXCIpIHsgcmV0dXJuIG5ldyBSYW5nZShwb3MsIHBvcykgfVxuICAgIGlmICh1bml0ID09IFwid29yZFwiKSB7IHJldHVybiBjbS5maW5kV29yZEF0KHBvcykgfVxuICAgIGlmICh1bml0ID09IFwibGluZVwiKSB7IHJldHVybiBuZXcgUmFuZ2UoUG9zKHBvcy5saW5lLCAwKSwgY2xpcFBvcyhjbS5kb2MsIFBvcyhwb3MubGluZSArIDEsIDApKSkgfVxuICAgIHZhciByZXN1bHQgPSB1bml0KGNtLCBwb3MpO1xuICAgIHJldHVybiBuZXcgUmFuZ2UocmVzdWx0LmZyb20sIHJlc3VsdC50bylcbiAgfVxuXG4gIC8vIE5vcm1hbCBzZWxlY3Rpb24sIGFzIG9wcG9zZWQgdG8gdGV4dCBkcmFnZ2luZy5cbiAgZnVuY3Rpb24gbGVmdEJ1dHRvblNlbGVjdChjbSwgZXZlbnQsIHN0YXJ0LCBiZWhhdmlvcikge1xuICAgIHZhciBkaXNwbGF5ID0gY20uZGlzcGxheSwgZG9jID0gY20uZG9jO1xuICAgIGVfcHJldmVudERlZmF1bHQoZXZlbnQpO1xuXG4gICAgdmFyIG91clJhbmdlLCBvdXJJbmRleCwgc3RhcnRTZWwgPSBkb2Muc2VsLCByYW5nZXMgPSBzdGFydFNlbC5yYW5nZXM7XG4gICAgaWYgKGJlaGF2aW9yLmFkZE5ldyAmJiAhYmVoYXZpb3IuZXh0ZW5kKSB7XG4gICAgICBvdXJJbmRleCA9IGRvYy5zZWwuY29udGFpbnMoc3RhcnQpO1xuICAgICAgaWYgKG91ckluZGV4ID4gLTEpXG4gICAgICAgIHsgb3VyUmFuZ2UgPSByYW5nZXNbb3VySW5kZXhdOyB9XG4gICAgICBlbHNlXG4gICAgICAgIHsgb3VyUmFuZ2UgPSBuZXcgUmFuZ2Uoc3RhcnQsIHN0YXJ0KTsgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXJSYW5nZSA9IGRvYy5zZWwucHJpbWFyeSgpO1xuICAgICAgb3VySW5kZXggPSBkb2Muc2VsLnByaW1JbmRleDtcbiAgICB9XG5cbiAgICBpZiAoYmVoYXZpb3IudW5pdCA9PSBcInJlY3RhbmdsZVwiKSB7XG4gICAgICBpZiAoIWJlaGF2aW9yLmFkZE5ldykgeyBvdXJSYW5nZSA9IG5ldyBSYW5nZShzdGFydCwgc3RhcnQpOyB9XG4gICAgICBzdGFydCA9IHBvc0Zyb21Nb3VzZShjbSwgZXZlbnQsIHRydWUsIHRydWUpO1xuICAgICAgb3VySW5kZXggPSAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHJhbmdlID0gcmFuZ2VGb3JVbml0KGNtLCBzdGFydCwgYmVoYXZpb3IudW5pdCk7XG4gICAgICBpZiAoYmVoYXZpb3IuZXh0ZW5kKVxuICAgICAgICB7IG91clJhbmdlID0gZXh0ZW5kUmFuZ2Uob3VyUmFuZ2UsIHJhbmdlLmFuY2hvciwgcmFuZ2UuaGVhZCwgYmVoYXZpb3IuZXh0ZW5kKTsgfVxuICAgICAgZWxzZVxuICAgICAgICB7IG91clJhbmdlID0gcmFuZ2U7IH1cbiAgICB9XG5cbiAgICBpZiAoIWJlaGF2aW9yLmFkZE5ldykge1xuICAgICAgb3VySW5kZXggPSAwO1xuICAgICAgc2V0U2VsZWN0aW9uKGRvYywgbmV3IFNlbGVjdGlvbihbb3VyUmFuZ2VdLCAwKSwgc2VsX21vdXNlKTtcbiAgICAgIHN0YXJ0U2VsID0gZG9jLnNlbDtcbiAgICB9IGVsc2UgaWYgKG91ckluZGV4ID09IC0xKSB7XG4gICAgICBvdXJJbmRleCA9IHJhbmdlcy5sZW5ndGg7XG4gICAgICBzZXRTZWxlY3Rpb24oZG9jLCBub3JtYWxpemVTZWxlY3Rpb24oY20sIHJhbmdlcy5jb25jYXQoW291clJhbmdlXSksIG91ckluZGV4KSxcbiAgICAgICAgICAgICAgICAgICB7c2Nyb2xsOiBmYWxzZSwgb3JpZ2luOiBcIiptb3VzZVwifSk7XG4gICAgfSBlbHNlIGlmIChyYW5nZXMubGVuZ3RoID4gMSAmJiByYW5nZXNbb3VySW5kZXhdLmVtcHR5KCkgJiYgYmVoYXZpb3IudW5pdCA9PSBcImNoYXJcIiAmJiAhYmVoYXZpb3IuZXh0ZW5kKSB7XG4gICAgICBzZXRTZWxlY3Rpb24oZG9jLCBub3JtYWxpemVTZWxlY3Rpb24oY20sIHJhbmdlcy5zbGljZSgwLCBvdXJJbmRleCkuY29uY2F0KHJhbmdlcy5zbGljZShvdXJJbmRleCArIDEpKSwgMCksXG4gICAgICAgICAgICAgICAgICAge3Njcm9sbDogZmFsc2UsIG9yaWdpbjogXCIqbW91c2VcIn0pO1xuICAgICAgc3RhcnRTZWwgPSBkb2Muc2VsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXBsYWNlT25lU2VsZWN0aW9uKGRvYywgb3VySW5kZXgsIG91clJhbmdlLCBzZWxfbW91c2UpO1xuICAgIH1cblxuICAgIHZhciBsYXN0UG9zID0gc3RhcnQ7XG4gICAgZnVuY3Rpb24gZXh0ZW5kVG8ocG9zKSB7XG4gICAgICBpZiAoY21wKGxhc3RQb3MsIHBvcykgPT0gMCkgeyByZXR1cm4gfVxuICAgICAgbGFzdFBvcyA9IHBvcztcblxuICAgICAgaWYgKGJlaGF2aW9yLnVuaXQgPT0gXCJyZWN0YW5nbGVcIikge1xuICAgICAgICB2YXIgcmFuZ2VzID0gW10sIHRhYlNpemUgPSBjbS5vcHRpb25zLnRhYlNpemU7XG4gICAgICAgIHZhciBzdGFydENvbCA9IGNvdW50Q29sdW1uKGdldExpbmUoZG9jLCBzdGFydC5saW5lKS50ZXh0LCBzdGFydC5jaCwgdGFiU2l6ZSk7XG4gICAgICAgIHZhciBwb3NDb2wgPSBjb3VudENvbHVtbihnZXRMaW5lKGRvYywgcG9zLmxpbmUpLnRleHQsIHBvcy5jaCwgdGFiU2l6ZSk7XG4gICAgICAgIHZhciBsZWZ0ID0gTWF0aC5taW4oc3RhcnRDb2wsIHBvc0NvbCksIHJpZ2h0ID0gTWF0aC5tYXgoc3RhcnRDb2wsIHBvc0NvbCk7XG4gICAgICAgIGZvciAodmFyIGxpbmUgPSBNYXRoLm1pbihzdGFydC5saW5lLCBwb3MubGluZSksIGVuZCA9IE1hdGgubWluKGNtLmxhc3RMaW5lKCksIE1hdGgubWF4KHN0YXJ0LmxpbmUsIHBvcy5saW5lKSk7XG4gICAgICAgICAgICAgbGluZSA8PSBlbmQ7IGxpbmUrKykge1xuICAgICAgICAgIHZhciB0ZXh0ID0gZ2V0TGluZShkb2MsIGxpbmUpLnRleHQsIGxlZnRQb3MgPSBmaW5kQ29sdW1uKHRleHQsIGxlZnQsIHRhYlNpemUpO1xuICAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0KVxuICAgICAgICAgICAgeyByYW5nZXMucHVzaChuZXcgUmFuZ2UoUG9zKGxpbmUsIGxlZnRQb3MpLCBQb3MobGluZSwgbGVmdFBvcykpKTsgfVxuICAgICAgICAgIGVsc2UgaWYgKHRleHQubGVuZ3RoID4gbGVmdFBvcylcbiAgICAgICAgICAgIHsgcmFuZ2VzLnB1c2gobmV3IFJhbmdlKFBvcyhsaW5lLCBsZWZ0UG9zKSwgUG9zKGxpbmUsIGZpbmRDb2x1bW4odGV4dCwgcmlnaHQsIHRhYlNpemUpKSkpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyYW5nZXMubGVuZ3RoKSB7IHJhbmdlcy5wdXNoKG5ldyBSYW5nZShzdGFydCwgc3RhcnQpKTsgfVxuICAgICAgICBzZXRTZWxlY3Rpb24oZG9jLCBub3JtYWxpemVTZWxlY3Rpb24oY20sIHN0YXJ0U2VsLnJhbmdlcy5zbGljZSgwLCBvdXJJbmRleCkuY29uY2F0KHJhbmdlcyksIG91ckluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgIHtvcmlnaW46IFwiKm1vdXNlXCIsIHNjcm9sbDogZmFsc2V9KTtcbiAgICAgICAgY20uc2Nyb2xsSW50b1ZpZXcocG9zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBvbGRSYW5nZSA9IG91clJhbmdlO1xuICAgICAgICB2YXIgcmFuZ2UgPSByYW5nZUZvclVuaXQoY20sIHBvcywgYmVoYXZpb3IudW5pdCk7XG4gICAgICAgIHZhciBhbmNob3IgPSBvbGRSYW5nZS5hbmNob3IsIGhlYWQ7XG4gICAgICAgIGlmIChjbXAocmFuZ2UuYW5jaG9yLCBhbmNob3IpID4gMCkge1xuICAgICAgICAgIGhlYWQgPSByYW5nZS5oZWFkO1xuICAgICAgICAgIGFuY2hvciA9IG1pblBvcyhvbGRSYW5nZS5mcm9tKCksIHJhbmdlLmFuY2hvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaGVhZCA9IHJhbmdlLmFuY2hvcjtcbiAgICAgICAgICBhbmNob3IgPSBtYXhQb3Mob2xkUmFuZ2UudG8oKSwgcmFuZ2UuaGVhZCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJhbmdlcyQxID0gc3RhcnRTZWwucmFuZ2VzLnNsaWNlKDApO1xuICAgICAgICByYW5nZXMkMVtvdXJJbmRleF0gPSBiaWRpU2ltcGxpZnkoY20sIG5ldyBSYW5nZShjbGlwUG9zKGRvYywgYW5jaG9yKSwgaGVhZCkpO1xuICAgICAgICBzZXRTZWxlY3Rpb24oZG9jLCBub3JtYWxpemVTZWxlY3Rpb24oY20sIHJhbmdlcyQxLCBvdXJJbmRleCksIHNlbF9tb3VzZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGVkaXRvclNpemUgPSBkaXNwbGF5LndyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgLy8gVXNlZCB0byBlbnN1cmUgdGltZW91dCByZS10cmllcyBkb24ndCBmaXJlIHdoZW4gYW5vdGhlciBleHRlbmRcbiAgICAvLyBoYXBwZW5lZCBpbiB0aGUgbWVhbnRpbWUgKGNsZWFyVGltZW91dCBpc24ndCByZWxpYWJsZSAtLSBhdFxuICAgIC8vIGxlYXN0IG9uIENocm9tZSwgdGhlIHRpbWVvdXRzIHN0aWxsIGhhcHBlbiBldmVuIHdoZW4gY2xlYXJlZCxcbiAgICAvLyBpZiB0aGUgY2xlYXIgaGFwcGVucyBhZnRlciB0aGVpciBzY2hlZHVsZWQgZmlyaW5nIHRpbWUpLlxuICAgIHZhciBjb3VudGVyID0gMDtcblxuICAgIGZ1bmN0aW9uIGV4dGVuZChlKSB7XG4gICAgICB2YXIgY3VyQ291bnQgPSArK2NvdW50ZXI7XG4gICAgICB2YXIgY3VyID0gcG9zRnJvbU1vdXNlKGNtLCBlLCB0cnVlLCBiZWhhdmlvci51bml0ID09IFwicmVjdGFuZ2xlXCIpO1xuICAgICAgaWYgKCFjdXIpIHsgcmV0dXJuIH1cbiAgICAgIGlmIChjbXAoY3VyLCBsYXN0UG9zKSAhPSAwKSB7XG4gICAgICAgIGNtLmN1ck9wLmZvY3VzID0gYWN0aXZlRWx0KCk7XG4gICAgICAgIGV4dGVuZFRvKGN1cik7XG4gICAgICAgIHZhciB2aXNpYmxlID0gdmlzaWJsZUxpbmVzKGRpc3BsYXksIGRvYyk7XG4gICAgICAgIGlmIChjdXIubGluZSA+PSB2aXNpYmxlLnRvIHx8IGN1ci5saW5lIDwgdmlzaWJsZS5mcm9tKVxuICAgICAgICAgIHsgc2V0VGltZW91dChvcGVyYXRpb24oY20sIGZ1bmN0aW9uICgpIHtpZiAoY291bnRlciA9PSBjdXJDb3VudCkgeyBleHRlbmQoZSk7IH19KSwgMTUwKTsgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG91dHNpZGUgPSBlLmNsaWVudFkgPCBlZGl0b3JTaXplLnRvcCA/IC0yMCA6IGUuY2xpZW50WSA+IGVkaXRvclNpemUuYm90dG9tID8gMjAgOiAwO1xuICAgICAgICBpZiAob3V0c2lkZSkgeyBzZXRUaW1lb3V0KG9wZXJhdGlvbihjbSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChjb3VudGVyICE9IGN1ckNvdW50KSB7IHJldHVybiB9XG4gICAgICAgICAgZGlzcGxheS5zY3JvbGxlci5zY3JvbGxUb3AgKz0gb3V0c2lkZTtcbiAgICAgICAgICBleHRlbmQoZSk7XG4gICAgICAgIH0pLCA1MCk7IH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkb25lKGUpIHtcbiAgICAgIGNtLnN0YXRlLnNlbGVjdGluZ1RleHQgPSBmYWxzZTtcbiAgICAgIGNvdW50ZXIgPSBJbmZpbml0eTtcbiAgICAgIC8vIElmIGUgaXMgbnVsbCBvciB1bmRlZmluZWQgd2UgaW50ZXJwcmV0IHRoaXMgYXMgc29tZW9uZSB0cnlpbmdcbiAgICAgIC8vIHRvIGV4cGxpY2l0bHkgY2FuY2VsIHRoZSBzZWxlY3Rpb24gcmF0aGVyIHRoYW4gdGhlIHVzZXJcbiAgICAgIC8vIGxldHRpbmcgZ28gb2YgdGhlIG1vdXNlIGJ1dHRvbi5cbiAgICAgIGlmIChlKSB7XG4gICAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7XG4gICAgICAgIGRpc3BsYXkuaW5wdXQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICAgIG9mZihkaXNwbGF5LndyYXBwZXIub3duZXJEb2N1bWVudCwgXCJtb3VzZW1vdmVcIiwgbW92ZSk7XG4gICAgICBvZmYoZGlzcGxheS53cmFwcGVyLm93bmVyRG9jdW1lbnQsIFwibW91c2V1cFwiLCB1cCk7XG4gICAgICBkb2MuaGlzdG9yeS5sYXN0U2VsT3JpZ2luID0gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgbW92ZSA9IG9wZXJhdGlvbihjbSwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChlLmJ1dHRvbnMgPT09IDAgfHwgIWVfYnV0dG9uKGUpKSB7IGRvbmUoZSk7IH1cbiAgICAgIGVsc2UgeyBleHRlbmQoZSk7IH1cbiAgICB9KTtcbiAgICB2YXIgdXAgPSBvcGVyYXRpb24oY20sIGRvbmUpO1xuICAgIGNtLnN0YXRlLnNlbGVjdGluZ1RleHQgPSB1cDtcbiAgICBvbihkaXNwbGF5LndyYXBwZXIub3duZXJEb2N1bWVudCwgXCJtb3VzZW1vdmVcIiwgbW92ZSk7XG4gICAgb24oZGlzcGxheS53cmFwcGVyLm93bmVyRG9jdW1lbnQsIFwibW91c2V1cFwiLCB1cCk7XG4gIH1cblxuICAvLyBVc2VkIHdoZW4gbW91c2Utc2VsZWN0aW5nIHRvIGFkanVzdCB0aGUgYW5jaG9yIHRvIHRoZSBwcm9wZXIgc2lkZVxuICAvLyBvZiBhIGJpZGkganVtcCBkZXBlbmRpbmcgb24gdGhlIHZpc3VhbCBwb3NpdGlvbiBvZiB0aGUgaGVhZC5cbiAgZnVuY3Rpb24gYmlkaVNpbXBsaWZ5KGNtLCByYW5nZSkge1xuICAgIHZhciBhbmNob3IgPSByYW5nZS5hbmNob3I7XG4gICAgdmFyIGhlYWQgPSByYW5nZS5oZWFkO1xuICAgIHZhciBhbmNob3JMaW5lID0gZ2V0TGluZShjbS5kb2MsIGFuY2hvci5saW5lKTtcbiAgICBpZiAoY21wKGFuY2hvciwgaGVhZCkgPT0gMCAmJiBhbmNob3Iuc3RpY2t5ID09IGhlYWQuc3RpY2t5KSB7IHJldHVybiByYW5nZSB9XG4gICAgdmFyIG9yZGVyID0gZ2V0T3JkZXIoYW5jaG9yTGluZSk7XG4gICAgaWYgKCFvcmRlcikgeyByZXR1cm4gcmFuZ2UgfVxuICAgIHZhciBpbmRleCA9IGdldEJpZGlQYXJ0QXQob3JkZXIsIGFuY2hvci5jaCwgYW5jaG9yLnN0aWNreSksIHBhcnQgPSBvcmRlcltpbmRleF07XG4gICAgaWYgKHBhcnQuZnJvbSAhPSBhbmNob3IuY2ggJiYgcGFydC50byAhPSBhbmNob3IuY2gpIHsgcmV0dXJuIHJhbmdlIH1cbiAgICB2YXIgYm91bmRhcnkgPSBpbmRleCArICgocGFydC5mcm9tID09IGFuY2hvci5jaCkgPT0gKHBhcnQubGV2ZWwgIT0gMSkgPyAwIDogMSk7XG4gICAgaWYgKGJvdW5kYXJ5ID09IDAgfHwgYm91bmRhcnkgPT0gb3JkZXIubGVuZ3RoKSB7IHJldHVybiByYW5nZSB9XG5cbiAgICAvLyBDb21wdXRlIHRoZSByZWxhdGl2ZSB2aXN1YWwgcG9zaXRpb24gb2YgdGhlIGhlYWQgY29tcGFyZWQgdG8gdGhlXG4gICAgLy8gYW5jaG9yICg8MCBpcyB0byB0aGUgbGVmdCwgPjAgdG8gdGhlIHJpZ2h0KVxuICAgIHZhciBsZWZ0U2lkZTtcbiAgICBpZiAoaGVhZC5saW5lICE9IGFuY2hvci5saW5lKSB7XG4gICAgICBsZWZ0U2lkZSA9IChoZWFkLmxpbmUgLSBhbmNob3IubGluZSkgKiAoY20uZG9jLmRpcmVjdGlvbiA9PSBcImx0clwiID8gMSA6IC0xKSA+IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBoZWFkSW5kZXggPSBnZXRCaWRpUGFydEF0KG9yZGVyLCBoZWFkLmNoLCBoZWFkLnN0aWNreSk7XG4gICAgICB2YXIgZGlyID0gaGVhZEluZGV4IC0gaW5kZXggfHwgKGhlYWQuY2ggLSBhbmNob3IuY2gpICogKHBhcnQubGV2ZWwgPT0gMSA/IC0xIDogMSk7XG4gICAgICBpZiAoaGVhZEluZGV4ID09IGJvdW5kYXJ5IC0gMSB8fCBoZWFkSW5kZXggPT0gYm91bmRhcnkpXG4gICAgICAgIHsgbGVmdFNpZGUgPSBkaXIgPCAwOyB9XG4gICAgICBlbHNlXG4gICAgICAgIHsgbGVmdFNpZGUgPSBkaXIgPiAwOyB9XG4gICAgfVxuXG4gICAgdmFyIHVzZVBhcnQgPSBvcmRlcltib3VuZGFyeSArIChsZWZ0U2lkZSA/IC0xIDogMCldO1xuICAgIHZhciBmcm9tID0gbGVmdFNpZGUgPT0gKHVzZVBhcnQubGV2ZWwgPT0gMSk7XG4gICAgdmFyIGNoID0gZnJvbSA/IHVzZVBhcnQuZnJvbSA6IHVzZVBhcnQudG8sIHN0aWNreSA9IGZyb20gPyBcImFmdGVyXCIgOiBcImJlZm9yZVwiO1xuICAgIHJldHVybiBhbmNob3IuY2ggPT0gY2ggJiYgYW5jaG9yLnN0aWNreSA9PSBzdGlja3kgPyByYW5nZSA6IG5ldyBSYW5nZShuZXcgUG9zKGFuY2hvci5saW5lLCBjaCwgc3RpY2t5KSwgaGVhZClcbiAgfVxuXG5cbiAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGV2ZW50IGhhcHBlbmVkIGluIHRoZSBndXR0ZXIsIGFuZCBmaXJlcyB0aGVcbiAgLy8gaGFuZGxlcnMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGV2ZW50LlxuICBmdW5jdGlvbiBndXR0ZXJFdmVudChjbSwgZSwgdHlwZSwgcHJldmVudCkge1xuICAgIHZhciBtWCwgbVk7XG4gICAgaWYgKGUudG91Y2hlcykge1xuICAgICAgbVggPSBlLnRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICAgIG1ZID0gZS50b3VjaGVzWzBdLmNsaWVudFk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7IG1YID0gZS5jbGllbnRYOyBtWSA9IGUuY2xpZW50WTsgfVxuICAgICAgY2F0Y2goZSQxKSB7IHJldHVybiBmYWxzZSB9XG4gICAgfVxuICAgIGlmIChtWCA+PSBNYXRoLmZsb29yKGNtLmRpc3BsYXkuZ3V0dGVycy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCkpIHsgcmV0dXJuIGZhbHNlIH1cbiAgICBpZiAocHJldmVudCkgeyBlX3ByZXZlbnREZWZhdWx0KGUpOyB9XG5cbiAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXk7XG4gICAgdmFyIGxpbmVCb3ggPSBkaXNwbGF5LmxpbmVEaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBpZiAobVkgPiBsaW5lQm94LmJvdHRvbSB8fCAhaGFzSGFuZGxlcihjbSwgdHlwZSkpIHsgcmV0dXJuIGVfZGVmYXVsdFByZXZlbnRlZChlKSB9XG4gICAgbVkgLT0gbGluZUJveC50b3AgLSBkaXNwbGF5LnZpZXdPZmZzZXQ7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNtLmRpc3BsYXkuZ3V0dGVyU3BlY3MubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBnID0gZGlzcGxheS5ndXR0ZXJzLmNoaWxkTm9kZXNbaV07XG4gICAgICBpZiAoZyAmJiBnLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0ID49IG1YKSB7XG4gICAgICAgIHZhciBsaW5lID0gbGluZUF0SGVpZ2h0KGNtLmRvYywgbVkpO1xuICAgICAgICB2YXIgZ3V0dGVyID0gY20uZGlzcGxheS5ndXR0ZXJTcGVjc1tpXTtcbiAgICAgICAgc2lnbmFsKGNtLCB0eXBlLCBjbSwgbGluZSwgZ3V0dGVyLmNsYXNzTmFtZSwgZSk7XG4gICAgICAgIHJldHVybiBlX2RlZmF1bHRQcmV2ZW50ZWQoZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjbGlja0luR3V0dGVyKGNtLCBlKSB7XG4gICAgcmV0dXJuIGd1dHRlckV2ZW50KGNtLCBlLCBcImd1dHRlckNsaWNrXCIsIHRydWUpXG4gIH1cblxuICAvLyBDT05URVhUIE1FTlUgSEFORExJTkdcblxuICAvLyBUbyBtYWtlIHRoZSBjb250ZXh0IG1lbnUgd29yaywgd2UgbmVlZCB0byBicmllZmx5IHVuaGlkZSB0aGVcbiAgLy8gdGV4dGFyZWEgKG1ha2luZyBpdCBhcyB1bm9idHJ1c2l2ZSBhcyBwb3NzaWJsZSkgdG8gbGV0IHRoZVxuICAvLyByaWdodC1jbGljayB0YWtlIGVmZmVjdCBvbiBpdC5cbiAgZnVuY3Rpb24gb25Db250ZXh0TWVudShjbSwgZSkge1xuICAgIGlmIChldmVudEluV2lkZ2V0KGNtLmRpc3BsYXksIGUpIHx8IGNvbnRleHRNZW51SW5HdXR0ZXIoY20sIGUpKSB7IHJldHVybiB9XG4gICAgaWYgKHNpZ25hbERPTUV2ZW50KGNtLCBlLCBcImNvbnRleHRtZW51XCIpKSB7IHJldHVybiB9XG4gICAgaWYgKCFjYXB0dXJlUmlnaHRDbGljaykgeyBjbS5kaXNwbGF5LmlucHV0Lm9uQ29udGV4dE1lbnUoZSk7IH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbnRleHRNZW51SW5HdXR0ZXIoY20sIGUpIHtcbiAgICBpZiAoIWhhc0hhbmRsZXIoY20sIFwiZ3V0dGVyQ29udGV4dE1lbnVcIikpIHsgcmV0dXJuIGZhbHNlIH1cbiAgICByZXR1cm4gZ3V0dGVyRXZlbnQoY20sIGUsIFwiZ3V0dGVyQ29udGV4dE1lbnVcIiwgZmFsc2UpXG4gIH1cblxuICBmdW5jdGlvbiB0aGVtZUNoYW5nZWQoY20pIHtcbiAgICBjbS5kaXNwbGF5LndyYXBwZXIuY2xhc3NOYW1lID0gY20uZGlzcGxheS53cmFwcGVyLmNsYXNzTmFtZS5yZXBsYWNlKC9cXHMqY20tcy1cXFMrL2csIFwiXCIpICtcbiAgICAgIGNtLm9wdGlvbnMudGhlbWUucmVwbGFjZSgvKF58XFxzKVxccyovZywgXCIgY20tcy1cIik7XG4gICAgY2xlYXJDYWNoZXMoY20pO1xuICB9XG5cbiAgdmFyIEluaXQgPSB7dG9TdHJpbmc6IGZ1bmN0aW9uKCl7cmV0dXJuIFwiQ29kZU1pcnJvci5Jbml0XCJ9fTtcblxuICB2YXIgZGVmYXVsdHMgPSB7fTtcbiAgdmFyIG9wdGlvbkhhbmRsZXJzID0ge307XG5cbiAgZnVuY3Rpb24gZGVmaW5lT3B0aW9ucyhDb2RlTWlycm9yKSB7XG4gICAgdmFyIG9wdGlvbkhhbmRsZXJzID0gQ29kZU1pcnJvci5vcHRpb25IYW5kbGVycztcblxuICAgIGZ1bmN0aW9uIG9wdGlvbihuYW1lLCBkZWZsdCwgaGFuZGxlLCBub3RPbkluaXQpIHtcbiAgICAgIENvZGVNaXJyb3IuZGVmYXVsdHNbbmFtZV0gPSBkZWZsdDtcbiAgICAgIGlmIChoYW5kbGUpIHsgb3B0aW9uSGFuZGxlcnNbbmFtZV0gPVxuICAgICAgICBub3RPbkluaXQgPyBmdW5jdGlvbiAoY20sIHZhbCwgb2xkKSB7aWYgKG9sZCAhPSBJbml0KSB7IGhhbmRsZShjbSwgdmFsLCBvbGQpOyB9fSA6IGhhbmRsZTsgfVxuICAgIH1cblxuICAgIENvZGVNaXJyb3IuZGVmaW5lT3B0aW9uID0gb3B0aW9uO1xuXG4gICAgLy8gUGFzc2VkIHRvIG9wdGlvbiBoYW5kbGVycyB3aGVuIHRoZXJlIGlzIG5vIG9sZCB2YWx1ZS5cbiAgICBDb2RlTWlycm9yLkluaXQgPSBJbml0O1xuXG4gICAgLy8gVGhlc2UgdHdvIGFyZSwgb24gaW5pdCwgY2FsbGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yIGJlY2F1c2UgdGhleVxuICAgIC8vIGhhdmUgdG8gYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBlZGl0b3IgY2FuIHN0YXJ0IGF0IGFsbC5cbiAgICBvcHRpb24oXCJ2YWx1ZVwiLCBcIlwiLCBmdW5jdGlvbiAoY20sIHZhbCkgeyByZXR1cm4gY20uc2V0VmFsdWUodmFsKTsgfSwgdHJ1ZSk7XG4gICAgb3B0aW9uKFwibW9kZVwiLCBudWxsLCBmdW5jdGlvbiAoY20sIHZhbCkge1xuICAgICAgY20uZG9jLm1vZGVPcHRpb24gPSB2YWw7XG4gICAgICBsb2FkTW9kZShjbSk7XG4gICAgfSwgdHJ1ZSk7XG5cbiAgICBvcHRpb24oXCJpbmRlbnRVbml0XCIsIDIsIGxvYWRNb2RlLCB0cnVlKTtcbiAgICBvcHRpb24oXCJpbmRlbnRXaXRoVGFic1wiLCBmYWxzZSk7XG4gICAgb3B0aW9uKFwic21hcnRJbmRlbnRcIiwgdHJ1ZSk7XG4gICAgb3B0aW9uKFwidGFiU2l6ZVwiLCA0LCBmdW5jdGlvbiAoY20pIHtcbiAgICAgIHJlc2V0TW9kZVN0YXRlKGNtKTtcbiAgICAgIGNsZWFyQ2FjaGVzKGNtKTtcbiAgICAgIHJlZ0NoYW5nZShjbSk7XG4gICAgfSwgdHJ1ZSk7XG5cbiAgICBvcHRpb24oXCJsaW5lU2VwYXJhdG9yXCIsIG51bGwsIGZ1bmN0aW9uIChjbSwgdmFsKSB7XG4gICAgICBjbS5kb2MubGluZVNlcCA9IHZhbDtcbiAgICAgIGlmICghdmFsKSB7IHJldHVybiB9XG4gICAgICB2YXIgbmV3QnJlYWtzID0gW10sIGxpbmVObyA9IGNtLmRvYy5maXJzdDtcbiAgICAgIGNtLmRvYy5pdGVyKGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICAgIGZvciAodmFyIHBvcyA9IDA7Oykge1xuICAgICAgICAgIHZhciBmb3VuZCA9IGxpbmUudGV4dC5pbmRleE9mKHZhbCwgcG9zKTtcbiAgICAgICAgICBpZiAoZm91bmQgPT0gLTEpIHsgYnJlYWsgfVxuICAgICAgICAgIHBvcyA9IGZvdW5kICsgdmFsLmxlbmd0aDtcbiAgICAgICAgICBuZXdCcmVha3MucHVzaChQb3MobGluZU5vLCBmb3VuZCkpO1xuICAgICAgICB9XG4gICAgICAgIGxpbmVObysrO1xuICAgICAgfSk7XG4gICAgICBmb3IgKHZhciBpID0gbmV3QnJlYWtzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKVxuICAgICAgICB7IHJlcGxhY2VSYW5nZShjbS5kb2MsIHZhbCwgbmV3QnJlYWtzW2ldLCBQb3MobmV3QnJlYWtzW2ldLmxpbmUsIG5ld0JyZWFrc1tpXS5jaCArIHZhbC5sZW5ndGgpKTsgfVxuICAgIH0pO1xuICAgIG9wdGlvbihcInNwZWNpYWxDaGFyc1wiLCAvW1xcdTAwMDAtXFx1MDAxZlxcdTAwN2YtXFx1MDA5ZlxcdTAwYWRcXHUwNjFjXFx1MjAwYi1cXHUyMDBjXFx1MjAwZVxcdTIwMGZcXHUyMDI4XFx1MjAyOVxcdWZlZmZcXHVmZmY5LVxcdWZmZmNdL2csIGZ1bmN0aW9uIChjbSwgdmFsLCBvbGQpIHtcbiAgICAgIGNtLnN0YXRlLnNwZWNpYWxDaGFycyA9IG5ldyBSZWdFeHAodmFsLnNvdXJjZSArICh2YWwudGVzdChcIlxcdFwiKSA/IFwiXCIgOiBcInxcXHRcIiksIFwiZ1wiKTtcbiAgICAgIGlmIChvbGQgIT0gSW5pdCkgeyBjbS5yZWZyZXNoKCk7IH1cbiAgICB9KTtcbiAgICBvcHRpb24oXCJzcGVjaWFsQ2hhclBsYWNlaG9sZGVyXCIsIGRlZmF1bHRTcGVjaWFsQ2hhclBsYWNlaG9sZGVyLCBmdW5jdGlvbiAoY20pIHsgcmV0dXJuIGNtLnJlZnJlc2goKTsgfSwgdHJ1ZSk7XG4gICAgb3B0aW9uKFwiZWxlY3RyaWNDaGFyc1wiLCB0cnVlKTtcbiAgICBvcHRpb24oXCJpbnB1dFN0eWxlXCIsIG1vYmlsZSA/IFwiY29udGVudGVkaXRhYmxlXCIgOiBcInRleHRhcmVhXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlucHV0U3R5bGUgY2FuIG5vdCAoeWV0KSBiZSBjaGFuZ2VkIGluIGEgcnVubmluZyBlZGl0b3JcIikgLy8gRklYTUVcbiAgICB9LCB0cnVlKTtcbiAgICBvcHRpb24oXCJzcGVsbGNoZWNrXCIsIGZhbHNlLCBmdW5jdGlvbiAoY20sIHZhbCkgeyByZXR1cm4gY20uZ2V0SW5wdXRGaWVsZCgpLnNwZWxsY2hlY2sgPSB2YWw7IH0sIHRydWUpO1xuICAgIG9wdGlvbihcImF1dG9jb3JyZWN0XCIsIGZhbHNlLCBmdW5jdGlvbiAoY20sIHZhbCkgeyByZXR1cm4gY20uZ2V0SW5wdXRGaWVsZCgpLmF1dG9jb3JyZWN0ID0gdmFsOyB9LCB0cnVlKTtcbiAgICBvcHRpb24oXCJhdXRvY2FwaXRhbGl6ZVwiLCBmYWxzZSwgZnVuY3Rpb24gKGNtLCB2YWwpIHsgcmV0dXJuIGNtLmdldElucHV0RmllbGQoKS5hdXRvY2FwaXRhbGl6ZSA9IHZhbDsgfSwgdHJ1ZSk7XG4gICAgb3B0aW9uKFwicnRsTW92ZVZpc3VhbGx5XCIsICF3aW5kb3dzKTtcbiAgICBvcHRpb24oXCJ3aG9sZUxpbmVVcGRhdGVCZWZvcmVcIiwgdHJ1ZSk7XG5cbiAgICBvcHRpb24oXCJ0aGVtZVwiLCBcImRlZmF1bHRcIiwgZnVuY3Rpb24gKGNtKSB7XG4gICAgICB0aGVtZUNoYW5nZWQoY20pO1xuICAgICAgdXBkYXRlR3V0dGVycyhjbSk7XG4gICAgfSwgdHJ1ZSk7XG4gICAgb3B0aW9uKFwia2V5TWFwXCIsIFwiZGVmYXVsdFwiLCBmdW5jdGlvbiAoY20sIHZhbCwgb2xkKSB7XG4gICAgICB2YXIgbmV4dCA9IGdldEtleU1hcCh2YWwpO1xuICAgICAgdmFyIHByZXYgPSBvbGQgIT0gSW5pdCAmJiBnZXRLZXlNYXAob2xkKTtcbiAgICAgIGlmIChwcmV2ICYmIHByZXYuZGV0YWNoKSB7IHByZXYuZGV0YWNoKGNtLCBuZXh0KTsgfVxuICAgICAgaWYgKG5leHQuYXR0YWNoKSB7IG5leHQuYXR0YWNoKGNtLCBwcmV2IHx8IG51bGwpOyB9XG4gICAgfSk7XG4gICAgb3B0aW9uKFwiZXh0cmFLZXlzXCIsIG51bGwpO1xuICAgIG9wdGlvbihcImNvbmZpZ3VyZU1vdXNlXCIsIG51bGwpO1xuXG4gICAgb3B0aW9uKFwibGluZVdyYXBwaW5nXCIsIGZhbHNlLCB3cmFwcGluZ0NoYW5nZWQsIHRydWUpO1xuICAgIG9wdGlvbihcImd1dHRlcnNcIiwgW10sIGZ1bmN0aW9uIChjbSwgdmFsKSB7XG4gICAgICBjbS5kaXNwbGF5Lmd1dHRlclNwZWNzID0gZ2V0R3V0dGVycyh2YWwsIGNtLm9wdGlvbnMubGluZU51bWJlcnMpO1xuICAgICAgdXBkYXRlR3V0dGVycyhjbSk7XG4gICAgfSwgdHJ1ZSk7XG4gICAgb3B0aW9uKFwiZml4ZWRHdXR0ZXJcIiwgdHJ1ZSwgZnVuY3Rpb24gKGNtLCB2YWwpIHtcbiAgICAgIGNtLmRpc3BsYXkuZ3V0dGVycy5zdHlsZS5sZWZ0ID0gdmFsID8gY29tcGVuc2F0ZUZvckhTY3JvbGwoY20uZGlzcGxheSkgKyBcInB4XCIgOiBcIjBcIjtcbiAgICAgIGNtLnJlZnJlc2goKTtcbiAgICB9LCB0cnVlKTtcbiAgICBvcHRpb24oXCJjb3Zlckd1dHRlck5leHRUb1Njcm9sbGJhclwiLCBmYWxzZSwgZnVuY3Rpb24gKGNtKSB7IHJldHVybiB1cGRhdGVTY3JvbGxiYXJzKGNtKTsgfSwgdHJ1ZSk7XG4gICAgb3B0aW9uKFwic2Nyb2xsYmFyU3R5bGVcIiwgXCJuYXRpdmVcIiwgZnVuY3Rpb24gKGNtKSB7XG4gICAgICBpbml0U2Nyb2xsYmFycyhjbSk7XG4gICAgICB1cGRhdGVTY3JvbGxiYXJzKGNtKTtcbiAgICAgIGNtLmRpc3BsYXkuc2Nyb2xsYmFycy5zZXRTY3JvbGxUb3AoY20uZG9jLnNjcm9sbFRvcCk7XG4gICAgICBjbS5kaXNwbGF5LnNjcm9sbGJhcnMuc2V0U2Nyb2xsTGVmdChjbS5kb2Muc2Nyb2xsTGVmdCk7XG4gICAgfSwgdHJ1ZSk7XG4gICAgb3B0aW9uKFwibGluZU51bWJlcnNcIiwgZmFsc2UsIGZ1bmN0aW9uIChjbSwgdmFsKSB7XG4gICAgICBjbS5kaXNwbGF5Lmd1dHRlclNwZWNzID0gZ2V0R3V0dGVycyhjbS5vcHRpb25zLmd1dHRlcnMsIHZhbCk7XG4gICAgICB1cGRhdGVHdXR0ZXJzKGNtKTtcbiAgICB9LCB0cnVlKTtcbiAgICBvcHRpb24oXCJmaXJzdExpbmVOdW1iZXJcIiwgMSwgdXBkYXRlR3V0dGVycywgdHJ1ZSk7XG4gICAgb3B0aW9uKFwibGluZU51bWJlckZvcm1hdHRlclwiLCBmdW5jdGlvbiAoaW50ZWdlcikgeyByZXR1cm4gaW50ZWdlcjsgfSwgdXBkYXRlR3V0dGVycywgdHJ1ZSk7XG4gICAgb3B0aW9uKFwic2hvd0N1cnNvcldoZW5TZWxlY3RpbmdcIiwgZmFsc2UsIHVwZGF0ZVNlbGVjdGlvbiwgdHJ1ZSk7XG5cbiAgICBvcHRpb24oXCJyZXNldFNlbGVjdGlvbk9uQ29udGV4dE1lbnVcIiwgdHJ1ZSk7XG4gICAgb3B0aW9uKFwibGluZVdpc2VDb3B5Q3V0XCIsIHRydWUpO1xuICAgIG9wdGlvbihcInBhc3RlTGluZXNQZXJTZWxlY3Rpb25cIiwgdHJ1ZSk7XG4gICAgb3B0aW9uKFwic2VsZWN0aW9uc01heVRvdWNoXCIsIGZhbHNlKTtcblxuICAgIG9wdGlvbihcInJlYWRPbmx5XCIsIGZhbHNlLCBmdW5jdGlvbiAoY20sIHZhbCkge1xuICAgICAgaWYgKHZhbCA9PSBcIm5vY3Vyc29yXCIpIHtcbiAgICAgICAgb25CbHVyKGNtKTtcbiAgICAgICAgY20uZGlzcGxheS5pbnB1dC5ibHVyKCk7XG4gICAgICB9XG4gICAgICBjbS5kaXNwbGF5LmlucHV0LnJlYWRPbmx5Q2hhbmdlZCh2YWwpO1xuICAgIH0pO1xuXG4gICAgb3B0aW9uKFwic2NyZWVuUmVhZGVyTGFiZWxcIiwgbnVsbCwgZnVuY3Rpb24gKGNtLCB2YWwpIHtcbiAgICAgIHZhbCA9ICh2YWwgPT09ICcnKSA/IG51bGwgOiB2YWw7XG4gICAgICBjbS5kaXNwbGF5LmlucHV0LnNjcmVlblJlYWRlckxhYmVsQ2hhbmdlZCh2YWwpO1xuICAgIH0pO1xuXG4gICAgb3B0aW9uKFwiZGlzYWJsZUlucHV0XCIsIGZhbHNlLCBmdW5jdGlvbiAoY20sIHZhbCkge2lmICghdmFsKSB7IGNtLmRpc3BsYXkuaW5wdXQucmVzZXQoKTsgfX0sIHRydWUpO1xuICAgIG9wdGlvbihcImRyYWdEcm9wXCIsIHRydWUsIGRyYWdEcm9wQ2hhbmdlZCk7XG4gICAgb3B0aW9uKFwiYWxsb3dEcm9wRmlsZVR5cGVzXCIsIG51bGwpO1xuXG4gICAgb3B0aW9uKFwiY3Vyc29yQmxpbmtSYXRlXCIsIDUzMCk7XG4gICAgb3B0aW9uKFwiY3Vyc29yU2Nyb2xsTWFyZ2luXCIsIDApO1xuICAgIG9wdGlvbihcImN1cnNvckhlaWdodFwiLCAxLCB1cGRhdGVTZWxlY3Rpb24sIHRydWUpO1xuICAgIG9wdGlvbihcInNpbmdsZUN1cnNvckhlaWdodFBlckxpbmVcIiwgdHJ1ZSwgdXBkYXRlU2VsZWN0aW9uLCB0cnVlKTtcbiAgICBvcHRpb24oXCJ3b3JrVGltZVwiLCAxMDApO1xuICAgIG9wdGlvbihcIndvcmtEZWxheVwiLCAxMDApO1xuICAgIG9wdGlvbihcImZsYXR0ZW5TcGFuc1wiLCB0cnVlLCByZXNldE1vZGVTdGF0ZSwgdHJ1ZSk7XG4gICAgb3B0aW9uKFwiYWRkTW9kZUNsYXNzXCIsIGZhbHNlLCByZXNldE1vZGVTdGF0ZSwgdHJ1ZSk7XG4gICAgb3B0aW9uKFwicG9sbEludGVydmFsXCIsIDEwMCk7XG4gICAgb3B0aW9uKFwidW5kb0RlcHRoXCIsIDIwMCwgZnVuY3Rpb24gKGNtLCB2YWwpIHsgcmV0dXJuIGNtLmRvYy5oaXN0b3J5LnVuZG9EZXB0aCA9IHZhbDsgfSk7XG4gICAgb3B0aW9uKFwiaGlzdG9yeUV2ZW50RGVsYXlcIiwgMTI1MCk7XG4gICAgb3B0aW9uKFwidmlld3BvcnRNYXJnaW5cIiwgMTAsIGZ1bmN0aW9uIChjbSkgeyByZXR1cm4gY20ucmVmcmVzaCgpOyB9LCB0cnVlKTtcbiAgICBvcHRpb24oXCJtYXhIaWdobGlnaHRMZW5ndGhcIiwgMTAwMDAsIHJlc2V0TW9kZVN0YXRlLCB0cnVlKTtcbiAgICBvcHRpb24oXCJtb3ZlSW5wdXRXaXRoQ3Vyc29yXCIsIHRydWUsIGZ1bmN0aW9uIChjbSwgdmFsKSB7XG4gICAgICBpZiAoIXZhbCkgeyBjbS5kaXNwbGF5LmlucHV0LnJlc2V0UG9zaXRpb24oKTsgfVxuICAgIH0pO1xuXG4gICAgb3B0aW9uKFwidGFiaW5kZXhcIiwgbnVsbCwgZnVuY3Rpb24gKGNtLCB2YWwpIHsgcmV0dXJuIGNtLmRpc3BsYXkuaW5wdXQuZ2V0RmllbGQoKS50YWJJbmRleCA9IHZhbCB8fCBcIlwiOyB9KTtcbiAgICBvcHRpb24oXCJhdXRvZm9jdXNcIiwgbnVsbCk7XG4gICAgb3B0aW9uKFwiZGlyZWN0aW9uXCIsIFwibHRyXCIsIGZ1bmN0aW9uIChjbSwgdmFsKSB7IHJldHVybiBjbS5kb2Muc2V0RGlyZWN0aW9uKHZhbCk7IH0sIHRydWUpO1xuICAgIG9wdGlvbihcInBocmFzZXNcIiwgbnVsbCk7XG4gIH1cblxuICBmdW5jdGlvbiBkcmFnRHJvcENoYW5nZWQoY20sIHZhbHVlLCBvbGQpIHtcbiAgICB2YXIgd2FzT24gPSBvbGQgJiYgb2xkICE9IEluaXQ7XG4gICAgaWYgKCF2YWx1ZSAhPSAhd2FzT24pIHtcbiAgICAgIHZhciBmdW5jcyA9IGNtLmRpc3BsYXkuZHJhZ0Z1bmN0aW9ucztcbiAgICAgIHZhciB0b2dnbGUgPSB2YWx1ZSA/IG9uIDogb2ZmO1xuICAgICAgdG9nZ2xlKGNtLmRpc3BsYXkuc2Nyb2xsZXIsIFwiZHJhZ3N0YXJ0XCIsIGZ1bmNzLnN0YXJ0KTtcbiAgICAgIHRvZ2dsZShjbS5kaXNwbGF5LnNjcm9sbGVyLCBcImRyYWdlbnRlclwiLCBmdW5jcy5lbnRlcik7XG4gICAgICB0b2dnbGUoY20uZGlzcGxheS5zY3JvbGxlciwgXCJkcmFnb3ZlclwiLCBmdW5jcy5vdmVyKTtcbiAgICAgIHRvZ2dsZShjbS5kaXNwbGF5LnNjcm9sbGVyLCBcImRyYWdsZWF2ZVwiLCBmdW5jcy5sZWF2ZSk7XG4gICAgICB0b2dnbGUoY20uZGlzcGxheS5zY3JvbGxlciwgXCJkcm9wXCIsIGZ1bmNzLmRyb3ApO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHdyYXBwaW5nQ2hhbmdlZChjbSkge1xuICAgIGlmIChjbS5vcHRpb25zLmxpbmVXcmFwcGluZykge1xuICAgICAgYWRkQ2xhc3MoY20uZGlzcGxheS53cmFwcGVyLCBcIkNvZGVNaXJyb3Itd3JhcFwiKTtcbiAgICAgIGNtLmRpc3BsYXkuc2l6ZXIuc3R5bGUubWluV2lkdGggPSBcIlwiO1xuICAgICAgY20uZGlzcGxheS5zaXplcldpZHRoID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcm1DbGFzcyhjbS5kaXNwbGF5LndyYXBwZXIsIFwiQ29kZU1pcnJvci13cmFwXCIpO1xuICAgICAgZmluZE1heExpbmUoY20pO1xuICAgIH1cbiAgICBlc3RpbWF0ZUxpbmVIZWlnaHRzKGNtKTtcbiAgICByZWdDaGFuZ2UoY20pO1xuICAgIGNsZWFyQ2FjaGVzKGNtKTtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVwZGF0ZVNjcm9sbGJhcnMoY20pOyB9LCAxMDApO1xuICB9XG5cbiAgLy8gQSBDb2RlTWlycm9yIGluc3RhbmNlIHJlcHJlc2VudHMgYW4gZWRpdG9yLiBUaGlzIGlzIHRoZSBvYmplY3RcbiAgLy8gdGhhdCB1c2VyIGNvZGUgaXMgdXN1YWxseSBkZWFsaW5nIHdpdGguXG5cbiAgZnVuY3Rpb24gQ29kZU1pcnJvcihwbGFjZSwgb3B0aW9ucykge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIENvZGVNaXJyb3IpKSB7IHJldHVybiBuZXcgQ29kZU1pcnJvcihwbGFjZSwgb3B0aW9ucykgfVxuXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyA9IG9wdGlvbnMgPyBjb3B5T2JqKG9wdGlvbnMpIDoge307XG4gICAgLy8gRGV0ZXJtaW5lIGVmZmVjdGl2ZSBvcHRpb25zIGJhc2VkIG9uIGdpdmVuIHZhbHVlcyBhbmQgZGVmYXVsdHMuXG4gICAgY29weU9iaihkZWZhdWx0cywgb3B0aW9ucywgZmFsc2UpO1xuXG4gICAgdmFyIGRvYyA9IG9wdGlvbnMudmFsdWU7XG4gICAgaWYgKHR5cGVvZiBkb2MgPT0gXCJzdHJpbmdcIikgeyBkb2MgPSBuZXcgRG9jKGRvYywgb3B0aW9ucy5tb2RlLCBudWxsLCBvcHRpb25zLmxpbmVTZXBhcmF0b3IsIG9wdGlvbnMuZGlyZWN0aW9uKTsgfVxuICAgIGVsc2UgaWYgKG9wdGlvbnMubW9kZSkgeyBkb2MubW9kZU9wdGlvbiA9IG9wdGlvbnMubW9kZTsgfVxuICAgIHRoaXMuZG9jID0gZG9jO1xuXG4gICAgdmFyIGlucHV0ID0gbmV3IENvZGVNaXJyb3IuaW5wdXRTdHlsZXNbb3B0aW9ucy5pbnB1dFN0eWxlXSh0aGlzKTtcbiAgICB2YXIgZGlzcGxheSA9IHRoaXMuZGlzcGxheSA9IG5ldyBEaXNwbGF5KHBsYWNlLCBkb2MsIGlucHV0LCBvcHRpb25zKTtcbiAgICBkaXNwbGF5LndyYXBwZXIuQ29kZU1pcnJvciA9IHRoaXM7XG4gICAgdGhlbWVDaGFuZ2VkKHRoaXMpO1xuICAgIGlmIChvcHRpb25zLmxpbmVXcmFwcGluZylcbiAgICAgIHsgdGhpcy5kaXNwbGF5LndyYXBwZXIuY2xhc3NOYW1lICs9IFwiIENvZGVNaXJyb3Itd3JhcFwiOyB9XG4gICAgaW5pdFNjcm9sbGJhcnModGhpcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAga2V5TWFwczogW10sICAvLyBzdG9yZXMgbWFwcyBhZGRlZCBieSBhZGRLZXlNYXBcbiAgICAgIG92ZXJsYXlzOiBbXSwgLy8gaGlnaGxpZ2h0aW5nIG92ZXJsYXlzLCBhcyBhZGRlZCBieSBhZGRPdmVybGF5XG4gICAgICBtb2RlR2VuOiAwLCAgIC8vIGJ1bXBlZCB3aGVuIG1vZGUvb3ZlcmxheSBjaGFuZ2VzLCB1c2VkIHRvIGludmFsaWRhdGUgaGlnaGxpZ2h0aW5nIGluZm9cbiAgICAgIG92ZXJ3cml0ZTogZmFsc2UsXG4gICAgICBkZWxheWluZ0JsdXJFdmVudDogZmFsc2UsXG4gICAgICBmb2N1c2VkOiBmYWxzZSxcbiAgICAgIHN1cHByZXNzRWRpdHM6IGZhbHNlLCAvLyB1c2VkIHRvIGRpc2FibGUgZWRpdGluZyBkdXJpbmcga2V5IGhhbmRsZXJzIHdoZW4gaW4gcmVhZE9ubHkgbW9kZVxuICAgICAgcGFzdGVJbmNvbWluZzogLTEsIGN1dEluY29taW5nOiAtMSwgLy8gaGVscCByZWNvZ25pemUgcGFzdGUvY3V0IGVkaXRzIGluIGlucHV0LnBvbGxcbiAgICAgIHNlbGVjdGluZ1RleHQ6IGZhbHNlLFxuICAgICAgZHJhZ2dpbmdUZXh0OiBmYWxzZSxcbiAgICAgIGhpZ2hsaWdodDogbmV3IERlbGF5ZWQoKSwgLy8gc3RvcmVzIGhpZ2hsaWdodCB3b3JrZXIgdGltZW91dFxuICAgICAga2V5U2VxOiBudWxsLCAgLy8gVW5maW5pc2hlZCBrZXkgc2VxdWVuY2VcbiAgICAgIHNwZWNpYWxDaGFyczogbnVsbFxuICAgIH07XG5cbiAgICBpZiAob3B0aW9ucy5hdXRvZm9jdXMgJiYgIW1vYmlsZSkgeyBkaXNwbGF5LmlucHV0LmZvY3VzKCk7IH1cblxuICAgIC8vIE92ZXJyaWRlIG1hZ2ljIHRleHRhcmVhIGNvbnRlbnQgcmVzdG9yZSB0aGF0IElFIHNvbWV0aW1lcyBkb2VzXG4gICAgLy8gb24gb3VyIGhpZGRlbiB0ZXh0YXJlYSBvbiByZWxvYWRcbiAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA8IDExKSB7IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLmRpc3BsYXkuaW5wdXQucmVzZXQodHJ1ZSk7IH0sIDIwKTsgfVxuXG4gICAgcmVnaXN0ZXJFdmVudEhhbmRsZXJzKHRoaXMpO1xuICAgIGVuc3VyZUdsb2JhbEhhbmRsZXJzKCk7XG5cbiAgICBzdGFydE9wZXJhdGlvbih0aGlzKTtcbiAgICB0aGlzLmN1ck9wLmZvcmNlVXBkYXRlID0gdHJ1ZTtcbiAgICBhdHRhY2hEb2ModGhpcywgZG9jKTtcblxuICAgIGlmICgob3B0aW9ucy5hdXRvZm9jdXMgJiYgIW1vYmlsZSkgfHwgdGhpcy5oYXNGb2N1cygpKVxuICAgICAgeyBzZXRUaW1lb3V0KGJpbmQob25Gb2N1cywgdGhpcyksIDIwKTsgfVxuICAgIGVsc2VcbiAgICAgIHsgb25CbHVyKHRoaXMpOyB9XG5cbiAgICBmb3IgKHZhciBvcHQgaW4gb3B0aW9uSGFuZGxlcnMpIHsgaWYgKG9wdGlvbkhhbmRsZXJzLmhhc093blByb3BlcnR5KG9wdCkpXG4gICAgICB7IG9wdGlvbkhhbmRsZXJzW29wdF0odGhpcywgb3B0aW9uc1tvcHRdLCBJbml0KTsgfSB9XG4gICAgbWF5YmVVcGRhdGVMaW5lTnVtYmVyV2lkdGgodGhpcyk7XG4gICAgaWYgKG9wdGlvbnMuZmluaXNoSW5pdCkgeyBvcHRpb25zLmZpbmlzaEluaXQodGhpcyk7IH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRIb29rcy5sZW5ndGg7ICsraSkgeyBpbml0SG9va3NbaV0odGhpcyk7IH1cbiAgICBlbmRPcGVyYXRpb24odGhpcyk7XG4gICAgLy8gU3VwcHJlc3Mgb3B0aW1pemVsZWdpYmlsaXR5IGluIFdlYmtpdCwgc2luY2UgaXQgYnJlYWtzIHRleHRcbiAgICAvLyBtZWFzdXJpbmcgb24gbGluZSB3cmFwcGluZyBib3VuZGFyaWVzLlxuICAgIGlmICh3ZWJraXQgJiYgb3B0aW9ucy5saW5lV3JhcHBpbmcgJiZcbiAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShkaXNwbGF5LmxpbmVEaXYpLnRleHRSZW5kZXJpbmcgPT0gXCJvcHRpbWl6ZWxlZ2liaWxpdHlcIilcbiAgICAgIHsgZGlzcGxheS5saW5lRGl2LnN0eWxlLnRleHRSZW5kZXJpbmcgPSBcImF1dG9cIjsgfVxuICB9XG5cbiAgLy8gVGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICBDb2RlTWlycm9yLmRlZmF1bHRzID0gZGVmYXVsdHM7XG4gIC8vIEZ1bmN0aW9ucyB0byBydW4gd2hlbiBvcHRpb25zIGFyZSBjaGFuZ2VkLlxuICBDb2RlTWlycm9yLm9wdGlvbkhhbmRsZXJzID0gb3B0aW9uSGFuZGxlcnM7XG5cbiAgLy8gQXR0YWNoIHRoZSBuZWNlc3NhcnkgZXZlbnQgaGFuZGxlcnMgd2hlbiBpbml0aWFsaXppbmcgdGhlIGVkaXRvclxuICBmdW5jdGlvbiByZWdpc3RlckV2ZW50SGFuZGxlcnMoY20pIHtcbiAgICB2YXIgZCA9IGNtLmRpc3BsYXk7XG4gICAgb24oZC5zY3JvbGxlciwgXCJtb3VzZWRvd25cIiwgb3BlcmF0aW9uKGNtLCBvbk1vdXNlRG93bikpO1xuICAgIC8vIE9sZGVyIElFJ3Mgd2lsbCBub3QgZmlyZSBhIHNlY29uZCBtb3VzZWRvd24gZm9yIGEgZG91YmxlIGNsaWNrXG4gICAgaWYgKGllICYmIGllX3ZlcnNpb24gPCAxMSlcbiAgICAgIHsgb24oZC5zY3JvbGxlciwgXCJkYmxjbGlja1wiLCBvcGVyYXRpb24oY20sIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmIChzaWduYWxET01FdmVudChjbSwgZSkpIHsgcmV0dXJuIH1cbiAgICAgICAgdmFyIHBvcyA9IHBvc0Zyb21Nb3VzZShjbSwgZSk7XG4gICAgICAgIGlmICghcG9zIHx8IGNsaWNrSW5HdXR0ZXIoY20sIGUpIHx8IGV2ZW50SW5XaWRnZXQoY20uZGlzcGxheSwgZSkpIHsgcmV0dXJuIH1cbiAgICAgICAgZV9wcmV2ZW50RGVmYXVsdChlKTtcbiAgICAgICAgdmFyIHdvcmQgPSBjbS5maW5kV29yZEF0KHBvcyk7XG4gICAgICAgIGV4dGVuZFNlbGVjdGlvbihjbS5kb2MsIHdvcmQuYW5jaG9yLCB3b3JkLmhlYWQpO1xuICAgICAgfSkpOyB9XG4gICAgZWxzZVxuICAgICAgeyBvbihkLnNjcm9sbGVyLCBcImRibGNsaWNrXCIsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBzaWduYWxET01FdmVudChjbSwgZSkgfHwgZV9wcmV2ZW50RGVmYXVsdChlKTsgfSk7IH1cbiAgICAvLyBTb21lIGJyb3dzZXJzIGZpcmUgY29udGV4dG1lbnUgKmFmdGVyKiBvcGVuaW5nIHRoZSBtZW51LCBhdFxuICAgIC8vIHdoaWNoIHBvaW50IHdlIGNhbid0IG1lc3Mgd2l0aCBpdCBhbnltb3JlLiBDb250ZXh0IG1lbnUgaXNcbiAgICAvLyBoYW5kbGVkIGluIG9uTW91c2VEb3duIGZvciB0aGVzZSBicm93c2Vycy5cbiAgICBvbihkLnNjcm9sbGVyLCBcImNvbnRleHRtZW51XCIsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBvbkNvbnRleHRNZW51KGNtLCBlKTsgfSk7XG4gICAgb24oZC5pbnB1dC5nZXRGaWVsZCgpLCBcImNvbnRleHRtZW51XCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoIWQuc2Nyb2xsZXIuY29udGFpbnMoZS50YXJnZXQpKSB7IG9uQ29udGV4dE1lbnUoY20sIGUpOyB9XG4gICAgfSk7XG5cbiAgICAvLyBVc2VkIHRvIHN1cHByZXNzIG1vdXNlIGV2ZW50IGhhbmRsaW5nIHdoZW4gYSB0b3VjaCBoYXBwZW5zXG4gICAgdmFyIHRvdWNoRmluaXNoZWQsIHByZXZUb3VjaCA9IHtlbmQ6IDB9O1xuICAgIGZ1bmN0aW9uIGZpbmlzaFRvdWNoKCkge1xuICAgICAgaWYgKGQuYWN0aXZlVG91Y2gpIHtcbiAgICAgICAgdG91Y2hGaW5pc2hlZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gZC5hY3RpdmVUb3VjaCA9IG51bGw7IH0sIDEwMDApO1xuICAgICAgICBwcmV2VG91Y2ggPSBkLmFjdGl2ZVRvdWNoO1xuICAgICAgICBwcmV2VG91Y2guZW5kID0gK25ldyBEYXRlO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpc01vdXNlTGlrZVRvdWNoRXZlbnQoZSkge1xuICAgICAgaWYgKGUudG91Y2hlcy5sZW5ndGggIT0gMSkgeyByZXR1cm4gZmFsc2UgfVxuICAgICAgdmFyIHRvdWNoID0gZS50b3VjaGVzWzBdO1xuICAgICAgcmV0dXJuIHRvdWNoLnJhZGl1c1ggPD0gMSAmJiB0b3VjaC5yYWRpdXNZIDw9IDFcbiAgICB9XG4gICAgZnVuY3Rpb24gZmFyQXdheSh0b3VjaCwgb3RoZXIpIHtcbiAgICAgIGlmIChvdGhlci5sZWZ0ID09IG51bGwpIHsgcmV0dXJuIHRydWUgfVxuICAgICAgdmFyIGR4ID0gb3RoZXIubGVmdCAtIHRvdWNoLmxlZnQsIGR5ID0gb3RoZXIudG9wIC0gdG91Y2gudG9wO1xuICAgICAgcmV0dXJuIGR4ICogZHggKyBkeSAqIGR5ID4gMjAgKiAyMFxuICAgIH1cbiAgICBvbihkLnNjcm9sbGVyLCBcInRvdWNoc3RhcnRcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmICghc2lnbmFsRE9NRXZlbnQoY20sIGUpICYmICFpc01vdXNlTGlrZVRvdWNoRXZlbnQoZSkgJiYgIWNsaWNrSW5HdXR0ZXIoY20sIGUpKSB7XG4gICAgICAgIGQuaW5wdXQuZW5zdXJlUG9sbGVkKCk7XG4gICAgICAgIGNsZWFyVGltZW91dCh0b3VjaEZpbmlzaGVkKTtcbiAgICAgICAgdmFyIG5vdyA9ICtuZXcgRGF0ZTtcbiAgICAgICAgZC5hY3RpdmVUb3VjaCA9IHtzdGFydDogbm93LCBtb3ZlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgcHJldjogbm93IC0gcHJldlRvdWNoLmVuZCA8PSAzMDAgPyBwcmV2VG91Y2ggOiBudWxsfTtcbiAgICAgICAgaWYgKGUudG91Y2hlcy5sZW5ndGggPT0gMSkge1xuICAgICAgICAgIGQuYWN0aXZlVG91Y2gubGVmdCA9IGUudG91Y2hlc1swXS5wYWdlWDtcbiAgICAgICAgICBkLmFjdGl2ZVRvdWNoLnRvcCA9IGUudG91Y2hlc1swXS5wYWdlWTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIG9uKGQuc2Nyb2xsZXIsIFwidG91Y2htb3ZlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChkLmFjdGl2ZVRvdWNoKSB7IGQuYWN0aXZlVG91Y2gubW92ZWQgPSB0cnVlOyB9XG4gICAgfSk7XG4gICAgb24oZC5zY3JvbGxlciwgXCJ0b3VjaGVuZFwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIHRvdWNoID0gZC5hY3RpdmVUb3VjaDtcbiAgICAgIGlmICh0b3VjaCAmJiAhZXZlbnRJbldpZGdldChkLCBlKSAmJiB0b3VjaC5sZWZ0ICE9IG51bGwgJiZcbiAgICAgICAgICAhdG91Y2gubW92ZWQgJiYgbmV3IERhdGUgLSB0b3VjaC5zdGFydCA8IDMwMCkge1xuICAgICAgICB2YXIgcG9zID0gY20uY29vcmRzQ2hhcihkLmFjdGl2ZVRvdWNoLCBcInBhZ2VcIiksIHJhbmdlO1xuICAgICAgICBpZiAoIXRvdWNoLnByZXYgfHwgZmFyQXdheSh0b3VjaCwgdG91Y2gucHJldikpIC8vIFNpbmdsZSB0YXBcbiAgICAgICAgICB7IHJhbmdlID0gbmV3IFJhbmdlKHBvcywgcG9zKTsgfVxuICAgICAgICBlbHNlIGlmICghdG91Y2gucHJldi5wcmV2IHx8IGZhckF3YXkodG91Y2gsIHRvdWNoLnByZXYucHJldikpIC8vIERvdWJsZSB0YXBcbiAgICAgICAgICB7IHJhbmdlID0gY20uZmluZFdvcmRBdChwb3MpOyB9XG4gICAgICAgIGVsc2UgLy8gVHJpcGxlIHRhcFxuICAgICAgICAgIHsgcmFuZ2UgPSBuZXcgUmFuZ2UoUG9zKHBvcy5saW5lLCAwKSwgY2xpcFBvcyhjbS5kb2MsIFBvcyhwb3MubGluZSArIDEsIDApKSk7IH1cbiAgICAgICAgY20uc2V0U2VsZWN0aW9uKHJhbmdlLmFuY2hvciwgcmFuZ2UuaGVhZCk7XG4gICAgICAgIGNtLmZvY3VzKCk7XG4gICAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7XG4gICAgICB9XG4gICAgICBmaW5pc2hUb3VjaCgpO1xuICAgIH0pO1xuICAgIG9uKGQuc2Nyb2xsZXIsIFwidG91Y2hjYW5jZWxcIiwgZmluaXNoVG91Y2gpO1xuXG4gICAgLy8gU3luYyBzY3JvbGxpbmcgYmV0d2VlbiBmYWtlIHNjcm9sbGJhcnMgYW5kIHJlYWwgc2Nyb2xsYWJsZVxuICAgIC8vIGFyZWEsIGVuc3VyZSB2aWV3cG9ydCBpcyB1cGRhdGVkIHdoZW4gc2Nyb2xsaW5nLlxuICAgIG9uKGQuc2Nyb2xsZXIsIFwic2Nyb2xsXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChkLnNjcm9sbGVyLmNsaWVudEhlaWdodCkge1xuICAgICAgICB1cGRhdGVTY3JvbGxUb3AoY20sIGQuc2Nyb2xsZXIuc2Nyb2xsVG9wKTtcbiAgICAgICAgc2V0U2Nyb2xsTGVmdChjbSwgZC5zY3JvbGxlci5zY3JvbGxMZWZ0LCB0cnVlKTtcbiAgICAgICAgc2lnbmFsKGNtLCBcInNjcm9sbFwiLCBjbSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBMaXN0ZW4gdG8gd2hlZWwgZXZlbnRzIGluIG9yZGVyIHRvIHRyeSBhbmQgdXBkYXRlIHRoZSB2aWV3cG9ydCBvbiB0aW1lLlxuICAgIG9uKGQuc2Nyb2xsZXIsIFwibW91c2V3aGVlbFwiLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gb25TY3JvbGxXaGVlbChjbSwgZSk7IH0pO1xuICAgIG9uKGQuc2Nyb2xsZXIsIFwiRE9NTW91c2VTY3JvbGxcIiwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIG9uU2Nyb2xsV2hlZWwoY20sIGUpOyB9KTtcblxuICAgIC8vIFByZXZlbnQgd3JhcHBlciBmcm9tIGV2ZXIgc2Nyb2xsaW5nXG4gICAgb24oZC53cmFwcGVyLCBcInNjcm9sbFwiLCBmdW5jdGlvbiAoKSB7IHJldHVybiBkLndyYXBwZXIuc2Nyb2xsVG9wID0gZC53cmFwcGVyLnNjcm9sbExlZnQgPSAwOyB9KTtcblxuICAgIGQuZHJhZ0Z1bmN0aW9ucyA9IHtcbiAgICAgIGVudGVyOiBmdW5jdGlvbiAoZSkge2lmICghc2lnbmFsRE9NRXZlbnQoY20sIGUpKSB7IGVfc3RvcChlKTsgfX0sXG4gICAgICBvdmVyOiBmdW5jdGlvbiAoZSkge2lmICghc2lnbmFsRE9NRXZlbnQoY20sIGUpKSB7IG9uRHJhZ092ZXIoY20sIGUpOyBlX3N0b3AoZSk7IH19LFxuICAgICAgc3RhcnQ6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBvbkRyYWdTdGFydChjbSwgZSk7IH0sXG4gICAgICBkcm9wOiBvcGVyYXRpb24oY20sIG9uRHJvcCksXG4gICAgICBsZWF2ZTogZnVuY3Rpb24gKGUpIHtpZiAoIXNpZ25hbERPTUV2ZW50KGNtLCBlKSkgeyBjbGVhckRyYWdDdXJzb3IoY20pOyB9fVxuICAgIH07XG5cbiAgICB2YXIgaW5wID0gZC5pbnB1dC5nZXRGaWVsZCgpO1xuICAgIG9uKGlucCwgXCJrZXl1cFwiLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gb25LZXlVcC5jYWxsKGNtLCBlKTsgfSk7XG4gICAgb24oaW5wLCBcImtleWRvd25cIiwgb3BlcmF0aW9uKGNtLCBvbktleURvd24pKTtcbiAgICBvbihpbnAsIFwia2V5cHJlc3NcIiwgb3BlcmF0aW9uKGNtLCBvbktleVByZXNzKSk7XG4gICAgb24oaW5wLCBcImZvY3VzXCIsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBvbkZvY3VzKGNtLCBlKTsgfSk7XG4gICAgb24oaW5wLCBcImJsdXJcIiwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIG9uQmx1cihjbSwgZSk7IH0pO1xuICB9XG5cbiAgdmFyIGluaXRIb29rcyA9IFtdO1xuICBDb2RlTWlycm9yLmRlZmluZUluaXRIb29rID0gZnVuY3Rpb24gKGYpIHsgcmV0dXJuIGluaXRIb29rcy5wdXNoKGYpOyB9O1xuXG4gIC8vIEluZGVudCB0aGUgZ2l2ZW4gbGluZS4gVGhlIGhvdyBwYXJhbWV0ZXIgY2FuIGJlIFwic21hcnRcIixcbiAgLy8gXCJhZGRcIi9udWxsLCBcInN1YnRyYWN0XCIsIG9yIFwicHJldlwiLiBXaGVuIGFnZ3Jlc3NpdmUgaXMgZmFsc2VcbiAgLy8gKHR5cGljYWxseSBzZXQgdG8gdHJ1ZSBmb3IgZm9yY2VkIHNpbmdsZS1saW5lIGluZGVudHMpLCBlbXB0eVxuICAvLyBsaW5lcyBhcmUgbm90IGluZGVudGVkLCBhbmQgcGxhY2VzIHdoZXJlIHRoZSBtb2RlIHJldHVybnMgUGFzc1xuICAvLyBhcmUgbGVmdCBhbG9uZS5cbiAgZnVuY3Rpb24gaW5kZW50TGluZShjbSwgbiwgaG93LCBhZ2dyZXNzaXZlKSB7XG4gICAgdmFyIGRvYyA9IGNtLmRvYywgc3RhdGU7XG4gICAgaWYgKGhvdyA9PSBudWxsKSB7IGhvdyA9IFwiYWRkXCI7IH1cbiAgICBpZiAoaG93ID09IFwic21hcnRcIikge1xuICAgICAgLy8gRmFsbCBiYWNrIHRvIFwicHJldlwiIHdoZW4gdGhlIG1vZGUgZG9lc24ndCBoYXZlIGFuIGluZGVudGF0aW9uXG4gICAgICAvLyBtZXRob2QuXG4gICAgICBpZiAoIWRvYy5tb2RlLmluZGVudCkgeyBob3cgPSBcInByZXZcIjsgfVxuICAgICAgZWxzZSB7IHN0YXRlID0gZ2V0Q29udGV4dEJlZm9yZShjbSwgbikuc3RhdGU7IH1cbiAgICB9XG5cbiAgICB2YXIgdGFiU2l6ZSA9IGNtLm9wdGlvbnMudGFiU2l6ZTtcbiAgICB2YXIgbGluZSA9IGdldExpbmUoZG9jLCBuKSwgY3VyU3BhY2UgPSBjb3VudENvbHVtbihsaW5lLnRleHQsIG51bGwsIHRhYlNpemUpO1xuICAgIGlmIChsaW5lLnN0YXRlQWZ0ZXIpIHsgbGluZS5zdGF0ZUFmdGVyID0gbnVsbDsgfVxuICAgIHZhciBjdXJTcGFjZVN0cmluZyA9IGxpbmUudGV4dC5tYXRjaCgvXlxccyovKVswXSwgaW5kZW50YXRpb247XG4gICAgaWYgKCFhZ2dyZXNzaXZlICYmICEvXFxTLy50ZXN0KGxpbmUudGV4dCkpIHtcbiAgICAgIGluZGVudGF0aW9uID0gMDtcbiAgICAgIGhvdyA9IFwibm90XCI7XG4gICAgfSBlbHNlIGlmIChob3cgPT0gXCJzbWFydFwiKSB7XG4gICAgICBpbmRlbnRhdGlvbiA9IGRvYy5tb2RlLmluZGVudChzdGF0ZSwgbGluZS50ZXh0LnNsaWNlKGN1clNwYWNlU3RyaW5nLmxlbmd0aCksIGxpbmUudGV4dCk7XG4gICAgICBpZiAoaW5kZW50YXRpb24gPT0gUGFzcyB8fCBpbmRlbnRhdGlvbiA+IDE1MCkge1xuICAgICAgICBpZiAoIWFnZ3Jlc3NpdmUpIHsgcmV0dXJuIH1cbiAgICAgICAgaG93ID0gXCJwcmV2XCI7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChob3cgPT0gXCJwcmV2XCIpIHtcbiAgICAgIGlmIChuID4gZG9jLmZpcnN0KSB7IGluZGVudGF0aW9uID0gY291bnRDb2x1bW4oZ2V0TGluZShkb2MsIG4tMSkudGV4dCwgbnVsbCwgdGFiU2l6ZSk7IH1cbiAgICAgIGVsc2UgeyBpbmRlbnRhdGlvbiA9IDA7IH1cbiAgICB9IGVsc2UgaWYgKGhvdyA9PSBcImFkZFwiKSB7XG4gICAgICBpbmRlbnRhdGlvbiA9IGN1clNwYWNlICsgY20ub3B0aW9ucy5pbmRlbnRVbml0O1xuICAgIH0gZWxzZSBpZiAoaG93ID09IFwic3VidHJhY3RcIikge1xuICAgICAgaW5kZW50YXRpb24gPSBjdXJTcGFjZSAtIGNtLm9wdGlvbnMuaW5kZW50VW5pdDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBob3cgPT0gXCJudW1iZXJcIikge1xuICAgICAgaW5kZW50YXRpb24gPSBjdXJTcGFjZSArIGhvdztcbiAgICB9XG4gICAgaW5kZW50YXRpb24gPSBNYXRoLm1heCgwLCBpbmRlbnRhdGlvbik7XG5cbiAgICB2YXIgaW5kZW50U3RyaW5nID0gXCJcIiwgcG9zID0gMDtcbiAgICBpZiAoY20ub3B0aW9ucy5pbmRlbnRXaXRoVGFicylcbiAgICAgIHsgZm9yICh2YXIgaSA9IE1hdGguZmxvb3IoaW5kZW50YXRpb24gLyB0YWJTaXplKTsgaTsgLS1pKSB7cG9zICs9IHRhYlNpemU7IGluZGVudFN0cmluZyArPSBcIlxcdFwiO30gfVxuICAgIGlmIChwb3MgPCBpbmRlbnRhdGlvbikgeyBpbmRlbnRTdHJpbmcgKz0gc3BhY2VTdHIoaW5kZW50YXRpb24gLSBwb3MpOyB9XG5cbiAgICBpZiAoaW5kZW50U3RyaW5nICE9IGN1clNwYWNlU3RyaW5nKSB7XG4gICAgICByZXBsYWNlUmFuZ2UoZG9jLCBpbmRlbnRTdHJpbmcsIFBvcyhuLCAwKSwgUG9zKG4sIGN1clNwYWNlU3RyaW5nLmxlbmd0aCksIFwiK2lucHV0XCIpO1xuICAgICAgbGluZS5zdGF0ZUFmdGVyID0gbnVsbDtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEVuc3VyZSB0aGF0LCBpZiB0aGUgY3Vyc29yIHdhcyBpbiB0aGUgd2hpdGVzcGFjZSBhdCB0aGUgc3RhcnRcbiAgICAgIC8vIG9mIHRoZSBsaW5lLCBpdCBpcyBtb3ZlZCB0byB0aGUgZW5kIG9mIHRoYXQgc3BhY2UuXG4gICAgICBmb3IgKHZhciBpJDEgPSAwOyBpJDEgPCBkb2Muc2VsLnJhbmdlcy5sZW5ndGg7IGkkMSsrKSB7XG4gICAgICAgIHZhciByYW5nZSA9IGRvYy5zZWwucmFuZ2VzW2kkMV07XG4gICAgICAgIGlmIChyYW5nZS5oZWFkLmxpbmUgPT0gbiAmJiByYW5nZS5oZWFkLmNoIDwgY3VyU3BhY2VTdHJpbmcubGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIHBvcyQxID0gUG9zKG4sIGN1clNwYWNlU3RyaW5nLmxlbmd0aCk7XG4gICAgICAgICAgcmVwbGFjZU9uZVNlbGVjdGlvbihkb2MsIGkkMSwgbmV3IFJhbmdlKHBvcyQxLCBwb3MkMSkpO1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIHdpbGwgYmUgc2V0IHRvIGEge2xpbmVXaXNlOiBib29sLCB0ZXh0OiBbc3RyaW5nXX0gb2JqZWN0LCBzb1xuICAvLyB0aGF0LCB3aGVuIHBhc3RpbmcsIHdlIGtub3cgd2hhdCBraW5kIG9mIHNlbGVjdGlvbnMgdGhlIGNvcGllZFxuICAvLyB0ZXh0IHdhcyBtYWRlIG91dCBvZi5cbiAgdmFyIGxhc3RDb3BpZWQgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIHNldExhc3RDb3BpZWQobmV3TGFzdENvcGllZCkge1xuICAgIGxhc3RDb3BpZWQgPSBuZXdMYXN0Q29waWVkO1xuICB9XG5cbiAgZnVuY3Rpb24gYXBwbHlUZXh0SW5wdXQoY20sIGluc2VydGVkLCBkZWxldGVkLCBzZWwsIG9yaWdpbikge1xuICAgIHZhciBkb2MgPSBjbS5kb2M7XG4gICAgY20uZGlzcGxheS5zaGlmdCA9IGZhbHNlO1xuICAgIGlmICghc2VsKSB7IHNlbCA9IGRvYy5zZWw7IH1cblxuICAgIHZhciByZWNlbnQgPSArbmV3IERhdGUgLSAyMDA7XG4gICAgdmFyIHBhc3RlID0gb3JpZ2luID09IFwicGFzdGVcIiB8fCBjbS5zdGF0ZS5wYXN0ZUluY29taW5nID4gcmVjZW50O1xuICAgIHZhciB0ZXh0TGluZXMgPSBzcGxpdExpbmVzQXV0byhpbnNlcnRlZCksIG11bHRpUGFzdGUgPSBudWxsO1xuICAgIC8vIFdoZW4gcGFzdGluZyBOIGxpbmVzIGludG8gTiBzZWxlY3Rpb25zLCBpbnNlcnQgb25lIGxpbmUgcGVyIHNlbGVjdGlvblxuICAgIGlmIChwYXN0ZSAmJiBzZWwucmFuZ2VzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGlmIChsYXN0Q29waWVkICYmIGxhc3RDb3BpZWQudGV4dC5qb2luKFwiXFxuXCIpID09IGluc2VydGVkKSB7XG4gICAgICAgIGlmIChzZWwucmFuZ2VzLmxlbmd0aCAlIGxhc3RDb3BpZWQudGV4dC5sZW5ndGggPT0gMCkge1xuICAgICAgICAgIG11bHRpUGFzdGUgPSBbXTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RDb3BpZWQudGV4dC5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHsgbXVsdGlQYXN0ZS5wdXNoKGRvYy5zcGxpdExpbmVzKGxhc3RDb3BpZWQudGV4dFtpXSkpOyB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGV4dExpbmVzLmxlbmd0aCA9PSBzZWwucmFuZ2VzLmxlbmd0aCAmJiBjbS5vcHRpb25zLnBhc3RlTGluZXNQZXJTZWxlY3Rpb24pIHtcbiAgICAgICAgbXVsdGlQYXN0ZSA9IG1hcCh0ZXh0TGluZXMsIGZ1bmN0aW9uIChsKSB7IHJldHVybiBbbF07IH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciB1cGRhdGVJbnB1dCA9IGNtLmN1ck9wLnVwZGF0ZUlucHV0O1xuICAgIC8vIE5vcm1hbCBiZWhhdmlvciBpcyB0byBpbnNlcnQgdGhlIG5ldyB0ZXh0IGludG8gZXZlcnkgc2VsZWN0aW9uXG4gICAgZm9yICh2YXIgaSQxID0gc2VsLnJhbmdlcy5sZW5ndGggLSAxOyBpJDEgPj0gMDsgaSQxLS0pIHtcbiAgICAgIHZhciByYW5nZSA9IHNlbC5yYW5nZXNbaSQxXTtcbiAgICAgIHZhciBmcm9tID0gcmFuZ2UuZnJvbSgpLCB0byA9IHJhbmdlLnRvKCk7XG4gICAgICBpZiAocmFuZ2UuZW1wdHkoKSkge1xuICAgICAgICBpZiAoZGVsZXRlZCAmJiBkZWxldGVkID4gMCkgLy8gSGFuZGxlIGRlbGV0aW9uXG4gICAgICAgICAgeyBmcm9tID0gUG9zKGZyb20ubGluZSwgZnJvbS5jaCAtIGRlbGV0ZWQpOyB9XG4gICAgICAgIGVsc2UgaWYgKGNtLnN0YXRlLm92ZXJ3cml0ZSAmJiAhcGFzdGUpIC8vIEhhbmRsZSBvdmVyd3JpdGVcbiAgICAgICAgICB7IHRvID0gUG9zKHRvLmxpbmUsIE1hdGgubWluKGdldExpbmUoZG9jLCB0by5saW5lKS50ZXh0Lmxlbmd0aCwgdG8uY2ggKyBsc3QodGV4dExpbmVzKS5sZW5ndGgpKTsgfVxuICAgICAgICBlbHNlIGlmIChwYXN0ZSAmJiBsYXN0Q29waWVkICYmIGxhc3RDb3BpZWQubGluZVdpc2UgJiYgbGFzdENvcGllZC50ZXh0LmpvaW4oXCJcXG5cIikgPT0gdGV4dExpbmVzLmpvaW4oXCJcXG5cIikpXG4gICAgICAgICAgeyBmcm9tID0gdG8gPSBQb3MoZnJvbS5saW5lLCAwKTsgfVxuICAgICAgfVxuICAgICAgdmFyIGNoYW5nZUV2ZW50ID0ge2Zyb206IGZyb20sIHRvOiB0bywgdGV4dDogbXVsdGlQYXN0ZSA/IG11bHRpUGFzdGVbaSQxICUgbXVsdGlQYXN0ZS5sZW5ndGhdIDogdGV4dExpbmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjogb3JpZ2luIHx8IChwYXN0ZSA/IFwicGFzdGVcIiA6IGNtLnN0YXRlLmN1dEluY29taW5nID4gcmVjZW50ID8gXCJjdXRcIiA6IFwiK2lucHV0XCIpfTtcbiAgICAgIG1ha2VDaGFuZ2UoY20uZG9jLCBjaGFuZ2VFdmVudCk7XG4gICAgICBzaWduYWxMYXRlcihjbSwgXCJpbnB1dFJlYWRcIiwgY20sIGNoYW5nZUV2ZW50KTtcbiAgICB9XG4gICAgaWYgKGluc2VydGVkICYmICFwYXN0ZSlcbiAgICAgIHsgdHJpZ2dlckVsZWN0cmljKGNtLCBpbnNlcnRlZCk7IH1cblxuICAgIGVuc3VyZUN1cnNvclZpc2libGUoY20pO1xuICAgIGlmIChjbS5jdXJPcC51cGRhdGVJbnB1dCA8IDIpIHsgY20uY3VyT3AudXBkYXRlSW5wdXQgPSB1cGRhdGVJbnB1dDsgfVxuICAgIGNtLmN1ck9wLnR5cGluZyA9IHRydWU7XG4gICAgY20uc3RhdGUucGFzdGVJbmNvbWluZyA9IGNtLnN0YXRlLmN1dEluY29taW5nID0gLTE7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVQYXN0ZShlLCBjbSkge1xuICAgIHZhciBwYXN0ZWQgPSBlLmNsaXBib2FyZERhdGEgJiYgZS5jbGlwYm9hcmREYXRhLmdldERhdGEoXCJUZXh0XCIpO1xuICAgIGlmIChwYXN0ZWQpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmICghY20uaXNSZWFkT25seSgpICYmICFjbS5vcHRpb25zLmRpc2FibGVJbnB1dClcbiAgICAgICAgeyBydW5Jbk9wKGNtLCBmdW5jdGlvbiAoKSB7IHJldHVybiBhcHBseVRleHRJbnB1dChjbSwgcGFzdGVkLCAwLCBudWxsLCBcInBhc3RlXCIpOyB9KTsgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB0cmlnZ2VyRWxlY3RyaWMoY20sIGluc2VydGVkKSB7XG4gICAgLy8gV2hlbiBhbiAnZWxlY3RyaWMnIGNoYXJhY3RlciBpcyBpbnNlcnRlZCwgaW1tZWRpYXRlbHkgdHJpZ2dlciBhIHJlaW5kZW50XG4gICAgaWYgKCFjbS5vcHRpb25zLmVsZWN0cmljQ2hhcnMgfHwgIWNtLm9wdGlvbnMuc21hcnRJbmRlbnQpIHsgcmV0dXJuIH1cbiAgICB2YXIgc2VsID0gY20uZG9jLnNlbDtcblxuICAgIGZvciAodmFyIGkgPSBzZWwucmFuZ2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgcmFuZ2UgPSBzZWwucmFuZ2VzW2ldO1xuICAgICAgaWYgKHJhbmdlLmhlYWQuY2ggPiAxMDAgfHwgKGkgJiYgc2VsLnJhbmdlc1tpIC0gMV0uaGVhZC5saW5lID09IHJhbmdlLmhlYWQubGluZSkpIHsgY29udGludWUgfVxuICAgICAgdmFyIG1vZGUgPSBjbS5nZXRNb2RlQXQocmFuZ2UuaGVhZCk7XG4gICAgICB2YXIgaW5kZW50ZWQgPSBmYWxzZTtcbiAgICAgIGlmIChtb2RlLmVsZWN0cmljQ2hhcnMpIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtb2RlLmVsZWN0cmljQ2hhcnMubGVuZ3RoOyBqKyspXG4gICAgICAgICAgeyBpZiAoaW5zZXJ0ZWQuaW5kZXhPZihtb2RlLmVsZWN0cmljQ2hhcnMuY2hhckF0KGopKSA+IC0xKSB7XG4gICAgICAgICAgICBpbmRlbnRlZCA9IGluZGVudExpbmUoY20sIHJhbmdlLmhlYWQubGluZSwgXCJzbWFydFwiKTtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfSB9XG4gICAgICB9IGVsc2UgaWYgKG1vZGUuZWxlY3RyaWNJbnB1dCkge1xuICAgICAgICBpZiAobW9kZS5lbGVjdHJpY0lucHV0LnRlc3QoZ2V0TGluZShjbS5kb2MsIHJhbmdlLmhlYWQubGluZSkudGV4dC5zbGljZSgwLCByYW5nZS5oZWFkLmNoKSkpXG4gICAgICAgICAgeyBpbmRlbnRlZCA9IGluZGVudExpbmUoY20sIHJhbmdlLmhlYWQubGluZSwgXCJzbWFydFwiKTsgfVxuICAgICAgfVxuICAgICAgaWYgKGluZGVudGVkKSB7IHNpZ25hbExhdGVyKGNtLCBcImVsZWN0cmljSW5wdXRcIiwgY20sIHJhbmdlLmhlYWQubGluZSk7IH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjb3B5YWJsZVJhbmdlcyhjbSkge1xuICAgIHZhciB0ZXh0ID0gW10sIHJhbmdlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY20uZG9jLnNlbC5yYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBsaW5lID0gY20uZG9jLnNlbC5yYW5nZXNbaV0uaGVhZC5saW5lO1xuICAgICAgdmFyIGxpbmVSYW5nZSA9IHthbmNob3I6IFBvcyhsaW5lLCAwKSwgaGVhZDogUG9zKGxpbmUgKyAxLCAwKX07XG4gICAgICByYW5nZXMucHVzaChsaW5lUmFuZ2UpO1xuICAgICAgdGV4dC5wdXNoKGNtLmdldFJhbmdlKGxpbmVSYW5nZS5hbmNob3IsIGxpbmVSYW5nZS5oZWFkKSk7XG4gICAgfVxuICAgIHJldHVybiB7dGV4dDogdGV4dCwgcmFuZ2VzOiByYW5nZXN9XG4gIH1cblxuICBmdW5jdGlvbiBkaXNhYmxlQnJvd3Nlck1hZ2ljKGZpZWxkLCBzcGVsbGNoZWNrLCBhdXRvY29ycmVjdCwgYXV0b2NhcGl0YWxpemUpIHtcbiAgICBmaWVsZC5zZXRBdHRyaWJ1dGUoXCJhdXRvY29ycmVjdFwiLCBhdXRvY29ycmVjdCA/IFwiXCIgOiBcIm9mZlwiKTtcbiAgICBmaWVsZC5zZXRBdHRyaWJ1dGUoXCJhdXRvY2FwaXRhbGl6ZVwiLCBhdXRvY2FwaXRhbGl6ZSA/IFwiXCIgOiBcIm9mZlwiKTtcbiAgICBmaWVsZC5zZXRBdHRyaWJ1dGUoXCJzcGVsbGNoZWNrXCIsICEhc3BlbGxjaGVjayk7XG4gIH1cblxuICBmdW5jdGlvbiBoaWRkZW5UZXh0YXJlYSgpIHtcbiAgICB2YXIgdGUgPSBlbHQoXCJ0ZXh0YXJlYVwiLCBudWxsLCBudWxsLCBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgYm90dG9tOiAtMWVtOyBwYWRkaW5nOiAwOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFlbTsgb3V0bGluZTogbm9uZVwiKTtcbiAgICB2YXIgZGl2ID0gZWx0KFwiZGl2XCIsIFt0ZV0sIG51bGwsIFwib3ZlcmZsb3c6IGhpZGRlbjsgcG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogM3B4OyBoZWlnaHQ6IDBweDtcIik7XG4gICAgLy8gVGhlIHRleHRhcmVhIGlzIGtlcHQgcG9zaXRpb25lZCBuZWFyIHRoZSBjdXJzb3IgdG8gcHJldmVudCB0aGVcbiAgICAvLyBmYWN0IHRoYXQgaXQnbGwgYmUgc2Nyb2xsZWQgaW50byB2aWV3IG9uIGlucHV0IGZyb20gc2Nyb2xsaW5nXG4gICAgLy8gb3VyIGZha2UgY3Vyc29yIG91dCBvZiB2aWV3LiBPbiB3ZWJraXQsIHdoZW4gd3JhcD1vZmYsIHBhc3RlIGlzXG4gICAgLy8gdmVyeSBzbG93LiBTbyBtYWtlIHRoZSBhcmVhIHdpZGUgaW5zdGVhZC5cbiAgICBpZiAod2Via2l0KSB7IHRlLnN0eWxlLndpZHRoID0gXCIxMDAwcHhcIjsgfVxuICAgIGVsc2UgeyB0ZS5zZXRBdHRyaWJ1dGUoXCJ3cmFwXCIsIFwib2ZmXCIpOyB9XG4gICAgLy8gSWYgYm9yZGVyOiAwOyAtLSBpT1MgZmFpbHMgdG8gb3BlbiBrZXlib2FyZCAoaXNzdWUgIzEyODcpXG4gICAgaWYgKGlvcykgeyB0ZS5zdHlsZS5ib3JkZXIgPSBcIjFweCBzb2xpZCBibGFja1wiOyB9XG4gICAgZGlzYWJsZUJyb3dzZXJNYWdpYyh0ZSk7XG4gICAgcmV0dXJuIGRpdlxuICB9XG5cbiAgLy8gVGhlIHB1YmxpY2x5IHZpc2libGUgQVBJLiBOb3RlIHRoYXQgbWV0aG9kT3AoZikgbWVhbnNcbiAgLy8gJ3dyYXAgZiBpbiBhbiBvcGVyYXRpb24sIHBlcmZvcm1lZCBvbiBpdHMgYHRoaXNgIHBhcmFtZXRlcicuXG5cbiAgLy8gVGhpcyBpcyBub3QgdGhlIGNvbXBsZXRlIHNldCBvZiBlZGl0b3IgbWV0aG9kcy4gTW9zdCBvZiB0aGVcbiAgLy8gbWV0aG9kcyBkZWZpbmVkIG9uIHRoZSBEb2MgdHlwZSBhcmUgYWxzbyBpbmplY3RlZCBpbnRvXG4gIC8vIENvZGVNaXJyb3IucHJvdG90eXBlLCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYW5kXG4gIC8vIGNvbnZlbmllbmNlLlxuXG4gIGZ1bmN0aW9uIGFkZEVkaXRvck1ldGhvZHMoQ29kZU1pcnJvcikge1xuICAgIHZhciBvcHRpb25IYW5kbGVycyA9IENvZGVNaXJyb3Iub3B0aW9uSGFuZGxlcnM7XG5cbiAgICB2YXIgaGVscGVycyA9IENvZGVNaXJyb3IuaGVscGVycyA9IHt9O1xuXG4gICAgQ29kZU1pcnJvci5wcm90b3R5cGUgPSB7XG4gICAgICBjb25zdHJ1Y3RvcjogQ29kZU1pcnJvcixcbiAgICAgIGZvY3VzOiBmdW5jdGlvbigpe3dpbmRvdy5mb2N1cygpOyB0aGlzLmRpc3BsYXkuaW5wdXQuZm9jdXMoKTt9LFxuXG4gICAgICBzZXRPcHRpb246IGZ1bmN0aW9uKG9wdGlvbiwgdmFsdWUpIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsIG9sZCA9IG9wdGlvbnNbb3B0aW9uXTtcbiAgICAgICAgaWYgKG9wdGlvbnNbb3B0aW9uXSA9PSB2YWx1ZSAmJiBvcHRpb24gIT0gXCJtb2RlXCIpIHsgcmV0dXJuIH1cbiAgICAgICAgb3B0aW9uc1tvcHRpb25dID0gdmFsdWU7XG4gICAgICAgIGlmIChvcHRpb25IYW5kbGVycy5oYXNPd25Qcm9wZXJ0eShvcHRpb24pKVxuICAgICAgICAgIHsgb3BlcmF0aW9uKHRoaXMsIG9wdGlvbkhhbmRsZXJzW29wdGlvbl0pKHRoaXMsIHZhbHVlLCBvbGQpOyB9XG4gICAgICAgIHNpZ25hbCh0aGlzLCBcIm9wdGlvbkNoYW5nZVwiLCB0aGlzLCBvcHRpb24pO1xuICAgICAgfSxcblxuICAgICAgZ2V0T3B0aW9uOiBmdW5jdGlvbihvcHRpb24pIHtyZXR1cm4gdGhpcy5vcHRpb25zW29wdGlvbl19LFxuICAgICAgZ2V0RG9jOiBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5kb2N9LFxuXG4gICAgICBhZGRLZXlNYXA6IGZ1bmN0aW9uKG1hcCwgYm90dG9tKSB7XG4gICAgICAgIHRoaXMuc3RhdGUua2V5TWFwc1tib3R0b20gPyBcInB1c2hcIiA6IFwidW5zaGlmdFwiXShnZXRLZXlNYXAobWFwKSk7XG4gICAgICB9LFxuICAgICAgcmVtb3ZlS2V5TWFwOiBmdW5jdGlvbihtYXApIHtcbiAgICAgICAgdmFyIG1hcHMgPSB0aGlzLnN0YXRlLmtleU1hcHM7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFwcy5sZW5ndGg7ICsraSlcbiAgICAgICAgICB7IGlmIChtYXBzW2ldID09IG1hcCB8fCBtYXBzW2ldLm5hbWUgPT0gbWFwKSB7XG4gICAgICAgICAgICBtYXBzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfSB9XG4gICAgICB9LFxuXG4gICAgICBhZGRPdmVybGF5OiBtZXRob2RPcChmdW5jdGlvbihzcGVjLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBtb2RlID0gc3BlYy50b2tlbiA/IHNwZWMgOiBDb2RlTWlycm9yLmdldE1vZGUodGhpcy5vcHRpb25zLCBzcGVjKTtcbiAgICAgICAgaWYgKG1vZGUuc3RhcnRTdGF0ZSkgeyB0aHJvdyBuZXcgRXJyb3IoXCJPdmVybGF5cyBtYXkgbm90IGJlIHN0YXRlZnVsLlwiKSB9XG4gICAgICAgIGluc2VydFNvcnRlZCh0aGlzLnN0YXRlLm92ZXJsYXlzLFxuICAgICAgICAgICAgICAgICAgICAge21vZGU6IG1vZGUsIG1vZGVTcGVjOiBzcGVjLCBvcGFxdWU6IG9wdGlvbnMgJiYgb3B0aW9ucy5vcGFxdWUsXG4gICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk6IChvcHRpb25zICYmIG9wdGlvbnMucHJpb3JpdHkpIHx8IDB9LFxuICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKG92ZXJsYXkpIHsgcmV0dXJuIG92ZXJsYXkucHJpb3JpdHk7IH0pO1xuICAgICAgICB0aGlzLnN0YXRlLm1vZGVHZW4rKztcbiAgICAgICAgcmVnQ2hhbmdlKHRoaXMpO1xuICAgICAgfSksXG4gICAgICByZW1vdmVPdmVybGF5OiBtZXRob2RPcChmdW5jdGlvbihzcGVjKSB7XG4gICAgICAgIHZhciBvdmVybGF5cyA9IHRoaXMuc3RhdGUub3ZlcmxheXM7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3ZlcmxheXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICB2YXIgY3VyID0gb3ZlcmxheXNbaV0ubW9kZVNwZWM7XG4gICAgICAgICAgaWYgKGN1ciA9PSBzcGVjIHx8IHR5cGVvZiBzcGVjID09IFwic3RyaW5nXCIgJiYgY3VyLm5hbWUgPT0gc3BlYykge1xuICAgICAgICAgICAgb3ZlcmxheXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5tb2RlR2VuKys7XG4gICAgICAgICAgICByZWdDaGFuZ2UodGhpcyk7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLFxuXG4gICAgICBpbmRlbnRMaW5lOiBtZXRob2RPcChmdW5jdGlvbihuLCBkaXIsIGFnZ3Jlc3NpdmUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkaXIgIT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgZGlyICE9IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICBpZiAoZGlyID09IG51bGwpIHsgZGlyID0gdGhpcy5vcHRpb25zLnNtYXJ0SW5kZW50ID8gXCJzbWFydFwiIDogXCJwcmV2XCI7IH1cbiAgICAgICAgICBlbHNlIHsgZGlyID0gZGlyID8gXCJhZGRcIiA6IFwic3VidHJhY3RcIjsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc0xpbmUodGhpcy5kb2MsIG4pKSB7IGluZGVudExpbmUodGhpcywgbiwgZGlyLCBhZ2dyZXNzaXZlKTsgfVxuICAgICAgfSksXG4gICAgICBpbmRlbnRTZWxlY3Rpb246IG1ldGhvZE9wKGZ1bmN0aW9uKGhvdykge1xuICAgICAgICB2YXIgcmFuZ2VzID0gdGhpcy5kb2Muc2VsLnJhbmdlcywgZW5kID0gLTE7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIHJhbmdlID0gcmFuZ2VzW2ldO1xuICAgICAgICAgIGlmICghcmFuZ2UuZW1wdHkoKSkge1xuICAgICAgICAgICAgdmFyIGZyb20gPSByYW5nZS5mcm9tKCksIHRvID0gcmFuZ2UudG8oKTtcbiAgICAgICAgICAgIHZhciBzdGFydCA9IE1hdGgubWF4KGVuZCwgZnJvbS5saW5lKTtcbiAgICAgICAgICAgIGVuZCA9IE1hdGgubWluKHRoaXMubGFzdExpbmUoKSwgdG8ubGluZSAtICh0by5jaCA/IDAgOiAxKSkgKyAxO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IHN0YXJ0OyBqIDwgZW5kOyArK2opXG4gICAgICAgICAgICAgIHsgaW5kZW50TGluZSh0aGlzLCBqLCBob3cpOyB9XG4gICAgICAgICAgICB2YXIgbmV3UmFuZ2VzID0gdGhpcy5kb2Muc2VsLnJhbmdlcztcbiAgICAgICAgICAgIGlmIChmcm9tLmNoID09IDAgJiYgcmFuZ2VzLmxlbmd0aCA9PSBuZXdSYW5nZXMubGVuZ3RoICYmIG5ld1Jhbmdlc1tpXS5mcm9tKCkuY2ggPiAwKVxuICAgICAgICAgICAgICB7IHJlcGxhY2VPbmVTZWxlY3Rpb24odGhpcy5kb2MsIGksIG5ldyBSYW5nZShmcm9tLCBuZXdSYW5nZXNbaV0udG8oKSksIHNlbF9kb250U2Nyb2xsKTsgfVxuICAgICAgICAgIH0gZWxzZSBpZiAocmFuZ2UuaGVhZC5saW5lID4gZW5kKSB7XG4gICAgICAgICAgICBpbmRlbnRMaW5lKHRoaXMsIHJhbmdlLmhlYWQubGluZSwgaG93LCB0cnVlKTtcbiAgICAgICAgICAgIGVuZCA9IHJhbmdlLmhlYWQubGluZTtcbiAgICAgICAgICAgIGlmIChpID09IHRoaXMuZG9jLnNlbC5wcmltSW5kZXgpIHsgZW5zdXJlQ3Vyc29yVmlzaWJsZSh0aGlzKTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSksXG5cbiAgICAgIC8vIEZldGNoIHRoZSBwYXJzZXIgdG9rZW4gZm9yIGEgZ2l2ZW4gY2hhcmFjdGVyLiBVc2VmdWwgZm9yIGhhY2tzXG4gICAgICAvLyB0aGF0IHdhbnQgdG8gaW5zcGVjdCB0aGUgbW9kZSBzdGF0ZSAoc2F5LCBmb3IgY29tcGxldGlvbikuXG4gICAgICBnZXRUb2tlbkF0OiBmdW5jdGlvbihwb3MsIHByZWNpc2UpIHtcbiAgICAgICAgcmV0dXJuIHRha2VUb2tlbih0aGlzLCBwb3MsIHByZWNpc2UpXG4gICAgICB9LFxuXG4gICAgICBnZXRMaW5lVG9rZW5zOiBmdW5jdGlvbihsaW5lLCBwcmVjaXNlKSB7XG4gICAgICAgIHJldHVybiB0YWtlVG9rZW4odGhpcywgUG9zKGxpbmUpLCBwcmVjaXNlLCB0cnVlKVxuICAgICAgfSxcblxuICAgICAgZ2V0VG9rZW5UeXBlQXQ6IGZ1bmN0aW9uKHBvcykge1xuICAgICAgICBwb3MgPSBjbGlwUG9zKHRoaXMuZG9jLCBwb3MpO1xuICAgICAgICB2YXIgc3R5bGVzID0gZ2V0TGluZVN0eWxlcyh0aGlzLCBnZXRMaW5lKHRoaXMuZG9jLCBwb3MubGluZSkpO1xuICAgICAgICB2YXIgYmVmb3JlID0gMCwgYWZ0ZXIgPSAoc3R5bGVzLmxlbmd0aCAtIDEpIC8gMiwgY2ggPSBwb3MuY2g7XG4gICAgICAgIHZhciB0eXBlO1xuICAgICAgICBpZiAoY2ggPT0gMCkgeyB0eXBlID0gc3R5bGVzWzJdOyB9XG4gICAgICAgIGVsc2UgeyBmb3IgKDs7KSB7XG4gICAgICAgICAgdmFyIG1pZCA9IChiZWZvcmUgKyBhZnRlcikgPj4gMTtcbiAgICAgICAgICBpZiAoKG1pZCA/IHN0eWxlc1ttaWQgKiAyIC0gMV0gOiAwKSA+PSBjaCkgeyBhZnRlciA9IG1pZDsgfVxuICAgICAgICAgIGVsc2UgaWYgKHN0eWxlc1ttaWQgKiAyICsgMV0gPCBjaCkgeyBiZWZvcmUgPSBtaWQgKyAxOyB9XG4gICAgICAgICAgZWxzZSB7IHR5cGUgPSBzdHlsZXNbbWlkICogMiArIDJdOyBicmVhayB9XG4gICAgICAgIH0gfVxuICAgICAgICB2YXIgY3V0ID0gdHlwZSA/IHR5cGUuaW5kZXhPZihcIm92ZXJsYXkgXCIpIDogLTE7XG4gICAgICAgIHJldHVybiBjdXQgPCAwID8gdHlwZSA6IGN1dCA9PSAwID8gbnVsbCA6IHR5cGUuc2xpY2UoMCwgY3V0IC0gMSlcbiAgICAgIH0sXG5cbiAgICAgIGdldE1vZGVBdDogZnVuY3Rpb24ocG9zKSB7XG4gICAgICAgIHZhciBtb2RlID0gdGhpcy5kb2MubW9kZTtcbiAgICAgICAgaWYgKCFtb2RlLmlubmVyTW9kZSkgeyByZXR1cm4gbW9kZSB9XG4gICAgICAgIHJldHVybiBDb2RlTWlycm9yLmlubmVyTW9kZShtb2RlLCB0aGlzLmdldFRva2VuQXQocG9zKS5zdGF0ZSkubW9kZVxuICAgICAgfSxcblxuICAgICAgZ2V0SGVscGVyOiBmdW5jdGlvbihwb3MsIHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SGVscGVycyhwb3MsIHR5cGUpWzBdXG4gICAgICB9LFxuXG4gICAgICBnZXRIZWxwZXJzOiBmdW5jdGlvbihwb3MsIHR5cGUpIHtcbiAgICAgICAgdmFyIGZvdW5kID0gW107XG4gICAgICAgIGlmICghaGVscGVycy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgeyByZXR1cm4gZm91bmQgfVxuICAgICAgICB2YXIgaGVscCA9IGhlbHBlcnNbdHlwZV0sIG1vZGUgPSB0aGlzLmdldE1vZGVBdChwb3MpO1xuICAgICAgICBpZiAodHlwZW9mIG1vZGVbdHlwZV0gPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIGlmIChoZWxwW21vZGVbdHlwZV1dKSB7IGZvdW5kLnB1c2goaGVscFttb2RlW3R5cGVdXSk7IH1cbiAgICAgICAgfSBlbHNlIGlmIChtb2RlW3R5cGVdKSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtb2RlW3R5cGVdLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgdmFsID0gaGVscFttb2RlW3R5cGVdW2ldXTtcbiAgICAgICAgICAgIGlmICh2YWwpIHsgZm91bmQucHVzaCh2YWwpOyB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG1vZGUuaGVscGVyVHlwZSAmJiBoZWxwW21vZGUuaGVscGVyVHlwZV0pIHtcbiAgICAgICAgICBmb3VuZC5wdXNoKGhlbHBbbW9kZS5oZWxwZXJUeXBlXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaGVscFttb2RlLm5hbWVdKSB7XG4gICAgICAgICAgZm91bmQucHVzaChoZWxwW21vZGUubmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGhlbHAuX2dsb2JhbC5sZW5ndGg7IGkkMSsrKSB7XG4gICAgICAgICAgdmFyIGN1ciA9IGhlbHAuX2dsb2JhbFtpJDFdO1xuICAgICAgICAgIGlmIChjdXIucHJlZChtb2RlLCB0aGlzKSAmJiBpbmRleE9mKGZvdW5kLCBjdXIudmFsKSA9PSAtMSlcbiAgICAgICAgICAgIHsgZm91bmQucHVzaChjdXIudmFsKTsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3VuZFxuICAgICAgfSxcblxuICAgICAgZ2V0U3RhdGVBZnRlcjogZnVuY3Rpb24obGluZSwgcHJlY2lzZSkge1xuICAgICAgICB2YXIgZG9jID0gdGhpcy5kb2M7XG4gICAgICAgIGxpbmUgPSBjbGlwTGluZShkb2MsIGxpbmUgPT0gbnVsbCA/IGRvYy5maXJzdCArIGRvYy5zaXplIC0gMTogbGluZSk7XG4gICAgICAgIHJldHVybiBnZXRDb250ZXh0QmVmb3JlKHRoaXMsIGxpbmUgKyAxLCBwcmVjaXNlKS5zdGF0ZVxuICAgICAgfSxcblxuICAgICAgY3Vyc29yQ29vcmRzOiBmdW5jdGlvbihzdGFydCwgbW9kZSkge1xuICAgICAgICB2YXIgcG9zLCByYW5nZSA9IHRoaXMuZG9jLnNlbC5wcmltYXJ5KCk7XG4gICAgICAgIGlmIChzdGFydCA9PSBudWxsKSB7IHBvcyA9IHJhbmdlLmhlYWQ7IH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHN0YXJ0ID09IFwib2JqZWN0XCIpIHsgcG9zID0gY2xpcFBvcyh0aGlzLmRvYywgc3RhcnQpOyB9XG4gICAgICAgIGVsc2UgeyBwb3MgPSBzdGFydCA/IHJhbmdlLmZyb20oKSA6IHJhbmdlLnRvKCk7IH1cbiAgICAgICAgcmV0dXJuIGN1cnNvckNvb3Jkcyh0aGlzLCBwb3MsIG1vZGUgfHwgXCJwYWdlXCIpXG4gICAgICB9LFxuXG4gICAgICBjaGFyQ29vcmRzOiBmdW5jdGlvbihwb3MsIG1vZGUpIHtcbiAgICAgICAgcmV0dXJuIGNoYXJDb29yZHModGhpcywgY2xpcFBvcyh0aGlzLmRvYywgcG9zKSwgbW9kZSB8fCBcInBhZ2VcIilcbiAgICAgIH0sXG5cbiAgICAgIGNvb3Jkc0NoYXI6IGZ1bmN0aW9uKGNvb3JkcywgbW9kZSkge1xuICAgICAgICBjb29yZHMgPSBmcm9tQ29vcmRTeXN0ZW0odGhpcywgY29vcmRzLCBtb2RlIHx8IFwicGFnZVwiKTtcbiAgICAgICAgcmV0dXJuIGNvb3Jkc0NoYXIodGhpcywgY29vcmRzLmxlZnQsIGNvb3Jkcy50b3ApXG4gICAgICB9LFxuXG4gICAgICBsaW5lQXRIZWlnaHQ6IGZ1bmN0aW9uKGhlaWdodCwgbW9kZSkge1xuICAgICAgICBoZWlnaHQgPSBmcm9tQ29vcmRTeXN0ZW0odGhpcywge3RvcDogaGVpZ2h0LCBsZWZ0OiAwfSwgbW9kZSB8fCBcInBhZ2VcIikudG9wO1xuICAgICAgICByZXR1cm4gbGluZUF0SGVpZ2h0KHRoaXMuZG9jLCBoZWlnaHQgKyB0aGlzLmRpc3BsYXkudmlld09mZnNldClcbiAgICAgIH0sXG4gICAgICBoZWlnaHRBdExpbmU6IGZ1bmN0aW9uKGxpbmUsIG1vZGUsIGluY2x1ZGVXaWRnZXRzKSB7XG4gICAgICAgIHZhciBlbmQgPSBmYWxzZSwgbGluZU9iajtcbiAgICAgICAgaWYgKHR5cGVvZiBsaW5lID09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICB2YXIgbGFzdCA9IHRoaXMuZG9jLmZpcnN0ICsgdGhpcy5kb2Muc2l6ZSAtIDE7XG4gICAgICAgICAgaWYgKGxpbmUgPCB0aGlzLmRvYy5maXJzdCkgeyBsaW5lID0gdGhpcy5kb2MuZmlyc3Q7IH1cbiAgICAgICAgICBlbHNlIGlmIChsaW5lID4gbGFzdCkgeyBsaW5lID0gbGFzdDsgZW5kID0gdHJ1ZTsgfVxuICAgICAgICAgIGxpbmVPYmogPSBnZXRMaW5lKHRoaXMuZG9jLCBsaW5lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsaW5lT2JqID0gbGluZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW50b0Nvb3JkU3lzdGVtKHRoaXMsIGxpbmVPYmosIHt0b3A6IDAsIGxlZnQ6IDB9LCBtb2RlIHx8IFwicGFnZVwiLCBpbmNsdWRlV2lkZ2V0cyB8fCBlbmQpLnRvcCArXG4gICAgICAgICAgKGVuZCA/IHRoaXMuZG9jLmhlaWdodCAtIGhlaWdodEF0TGluZShsaW5lT2JqKSA6IDApXG4gICAgICB9LFxuXG4gICAgICBkZWZhdWx0VGV4dEhlaWdodDogZnVuY3Rpb24oKSB7IHJldHVybiB0ZXh0SGVpZ2h0KHRoaXMuZGlzcGxheSkgfSxcbiAgICAgIGRlZmF1bHRDaGFyV2lkdGg6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hhcldpZHRoKHRoaXMuZGlzcGxheSkgfSxcblxuICAgICAgZ2V0Vmlld3BvcnQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4ge2Zyb206IHRoaXMuZGlzcGxheS52aWV3RnJvbSwgdG86IHRoaXMuZGlzcGxheS52aWV3VG99fSxcblxuICAgICAgYWRkV2lkZ2V0OiBmdW5jdGlvbihwb3MsIG5vZGUsIHNjcm9sbCwgdmVydCwgaG9yaXopIHtcbiAgICAgICAgdmFyIGRpc3BsYXkgPSB0aGlzLmRpc3BsYXk7XG4gICAgICAgIHBvcyA9IGN1cnNvckNvb3Jkcyh0aGlzLCBjbGlwUG9zKHRoaXMuZG9jLCBwb3MpKTtcbiAgICAgICAgdmFyIHRvcCA9IHBvcy5ib3R0b20sIGxlZnQgPSBwb3MubGVmdDtcbiAgICAgICAgbm9kZS5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJjbS1pZ25vcmUtZXZlbnRzXCIsIFwidHJ1ZVwiKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5LmlucHV0LnNldFVuZWRpdGFibGUobm9kZSk7XG4gICAgICAgIGRpc3BsYXkuc2l6ZXIuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICAgIGlmICh2ZXJ0ID09IFwib3ZlclwiKSB7XG4gICAgICAgICAgdG9wID0gcG9zLnRvcDtcbiAgICAgICAgfSBlbHNlIGlmICh2ZXJ0ID09IFwiYWJvdmVcIiB8fCB2ZXJ0ID09IFwibmVhclwiKSB7XG4gICAgICAgICAgdmFyIHZzcGFjZSA9IE1hdGgubWF4KGRpc3BsYXkud3JhcHBlci5jbGllbnRIZWlnaHQsIHRoaXMuZG9jLmhlaWdodCksXG4gICAgICAgICAgaHNwYWNlID0gTWF0aC5tYXgoZGlzcGxheS5zaXplci5jbGllbnRXaWR0aCwgZGlzcGxheS5saW5lU3BhY2UuY2xpZW50V2lkdGgpO1xuICAgICAgICAgIC8vIERlZmF1bHQgdG8gcG9zaXRpb25pbmcgYWJvdmUgKGlmIHNwZWNpZmllZCBhbmQgcG9zc2libGUpOyBvdGhlcndpc2UgZGVmYXVsdCB0byBwb3NpdGlvbmluZyBiZWxvd1xuICAgICAgICAgIGlmICgodmVydCA9PSAnYWJvdmUnIHx8IHBvcy5ib3R0b20gKyBub2RlLm9mZnNldEhlaWdodCA+IHZzcGFjZSkgJiYgcG9zLnRvcCA+IG5vZGUub2Zmc2V0SGVpZ2h0KVxuICAgICAgICAgICAgeyB0b3AgPSBwb3MudG9wIC0gbm9kZS5vZmZzZXRIZWlnaHQ7IH1cbiAgICAgICAgICBlbHNlIGlmIChwb3MuYm90dG9tICsgbm9kZS5vZmZzZXRIZWlnaHQgPD0gdnNwYWNlKVxuICAgICAgICAgICAgeyB0b3AgPSBwb3MuYm90dG9tOyB9XG4gICAgICAgICAgaWYgKGxlZnQgKyBub2RlLm9mZnNldFdpZHRoID4gaHNwYWNlKVxuICAgICAgICAgICAgeyBsZWZ0ID0gaHNwYWNlIC0gbm9kZS5vZmZzZXRXaWR0aDsgfVxuICAgICAgICB9XG4gICAgICAgIG5vZGUuc3R5bGUudG9wID0gdG9wICsgXCJweFwiO1xuICAgICAgICBub2RlLnN0eWxlLmxlZnQgPSBub2RlLnN0eWxlLnJpZ2h0ID0gXCJcIjtcbiAgICAgICAgaWYgKGhvcml6ID09IFwicmlnaHRcIikge1xuICAgICAgICAgIGxlZnQgPSBkaXNwbGF5LnNpemVyLmNsaWVudFdpZHRoIC0gbm9kZS5vZmZzZXRXaWR0aDtcbiAgICAgICAgICBub2RlLnN0eWxlLnJpZ2h0ID0gXCIwcHhcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaG9yaXogPT0gXCJsZWZ0XCIpIHsgbGVmdCA9IDA7IH1cbiAgICAgICAgICBlbHNlIGlmIChob3JpeiA9PSBcIm1pZGRsZVwiKSB7IGxlZnQgPSAoZGlzcGxheS5zaXplci5jbGllbnRXaWR0aCAtIG5vZGUub2Zmc2V0V2lkdGgpIC8gMjsgfVxuICAgICAgICAgIG5vZGUuc3R5bGUubGVmdCA9IGxlZnQgKyBcInB4XCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNjcm9sbClcbiAgICAgICAgICB7IHNjcm9sbEludG9WaWV3KHRoaXMsIHtsZWZ0OiBsZWZ0LCB0b3A6IHRvcCwgcmlnaHQ6IGxlZnQgKyBub2RlLm9mZnNldFdpZHRoLCBib3R0b206IHRvcCArIG5vZGUub2Zmc2V0SGVpZ2h0fSk7IH1cbiAgICAgIH0sXG5cbiAgICAgIHRyaWdnZXJPbktleURvd246IG1ldGhvZE9wKG9uS2V5RG93biksXG4gICAgICB0cmlnZ2VyT25LZXlQcmVzczogbWV0aG9kT3Aob25LZXlQcmVzcyksXG4gICAgICB0cmlnZ2VyT25LZXlVcDogb25LZXlVcCxcbiAgICAgIHRyaWdnZXJPbk1vdXNlRG93bjogbWV0aG9kT3Aob25Nb3VzZURvd24pLFxuXG4gICAgICBleGVjQ29tbWFuZDogZnVuY3Rpb24oY21kKSB7XG4gICAgICAgIGlmIChjb21tYW5kcy5oYXNPd25Qcm9wZXJ0eShjbWQpKVxuICAgICAgICAgIHsgcmV0dXJuIGNvbW1hbmRzW2NtZF0uY2FsbChudWxsLCB0aGlzKSB9XG4gICAgICB9LFxuXG4gICAgICB0cmlnZ2VyRWxlY3RyaWM6IG1ldGhvZE9wKGZ1bmN0aW9uKHRleHQpIHsgdHJpZ2dlckVsZWN0cmljKHRoaXMsIHRleHQpOyB9KSxcblxuICAgICAgZmluZFBvc0g6IGZ1bmN0aW9uKGZyb20sIGFtb3VudCwgdW5pdCwgdmlzdWFsbHkpIHtcbiAgICAgICAgdmFyIGRpciA9IDE7XG4gICAgICAgIGlmIChhbW91bnQgPCAwKSB7IGRpciA9IC0xOyBhbW91bnQgPSAtYW1vdW50OyB9XG4gICAgICAgIHZhciBjdXIgPSBjbGlwUG9zKHRoaXMuZG9jLCBmcm9tKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbW91bnQ7ICsraSkge1xuICAgICAgICAgIGN1ciA9IGZpbmRQb3NIKHRoaXMuZG9jLCBjdXIsIGRpciwgdW5pdCwgdmlzdWFsbHkpO1xuICAgICAgICAgIGlmIChjdXIuaGl0U2lkZSkgeyBicmVhayB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGN1clxuICAgICAgfSxcblxuICAgICAgbW92ZUg6IG1ldGhvZE9wKGZ1bmN0aW9uKGRpciwgdW5pdCkge1xuICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICB0aGlzLmV4dGVuZFNlbGVjdGlvbnNCeShmdW5jdGlvbiAocmFuZ2UpIHtcbiAgICAgICAgICBpZiAodGhpcyQxLmRpc3BsYXkuc2hpZnQgfHwgdGhpcyQxLmRvYy5leHRlbmQgfHwgcmFuZ2UuZW1wdHkoKSlcbiAgICAgICAgICAgIHsgcmV0dXJuIGZpbmRQb3NIKHRoaXMkMS5kb2MsIHJhbmdlLmhlYWQsIGRpciwgdW5pdCwgdGhpcyQxLm9wdGlvbnMucnRsTW92ZVZpc3VhbGx5KSB9XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgeyByZXR1cm4gZGlyIDwgMCA/IHJhbmdlLmZyb20oKSA6IHJhbmdlLnRvKCkgfVxuICAgICAgICB9LCBzZWxfbW92ZSk7XG4gICAgICB9KSxcblxuICAgICAgZGVsZXRlSDogbWV0aG9kT3AoZnVuY3Rpb24oZGlyLCB1bml0KSB7XG4gICAgICAgIHZhciBzZWwgPSB0aGlzLmRvYy5zZWwsIGRvYyA9IHRoaXMuZG9jO1xuICAgICAgICBpZiAoc2VsLnNvbWV0aGluZ1NlbGVjdGVkKCkpXG4gICAgICAgICAgeyBkb2MucmVwbGFjZVNlbGVjdGlvbihcIlwiLCBudWxsLCBcIitkZWxldGVcIik7IH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIHsgZGVsZXRlTmVhclNlbGVjdGlvbih0aGlzLCBmdW5jdGlvbiAocmFuZ2UpIHtcbiAgICAgICAgICAgIHZhciBvdGhlciA9IGZpbmRQb3NIKGRvYywgcmFuZ2UuaGVhZCwgZGlyLCB1bml0LCBmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm4gZGlyIDwgMCA/IHtmcm9tOiBvdGhlciwgdG86IHJhbmdlLmhlYWR9IDoge2Zyb206IHJhbmdlLmhlYWQsIHRvOiBvdGhlcn1cbiAgICAgICAgICB9KTsgfVxuICAgICAgfSksXG5cbiAgICAgIGZpbmRQb3NWOiBmdW5jdGlvbihmcm9tLCBhbW91bnQsIHVuaXQsIGdvYWxDb2x1bW4pIHtcbiAgICAgICAgdmFyIGRpciA9IDEsIHggPSBnb2FsQ29sdW1uO1xuICAgICAgICBpZiAoYW1vdW50IDwgMCkgeyBkaXIgPSAtMTsgYW1vdW50ID0gLWFtb3VudDsgfVxuICAgICAgICB2YXIgY3VyID0gY2xpcFBvcyh0aGlzLmRvYywgZnJvbSk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYW1vdW50OyArK2kpIHtcbiAgICAgICAgICB2YXIgY29vcmRzID0gY3Vyc29yQ29vcmRzKHRoaXMsIGN1ciwgXCJkaXZcIik7XG4gICAgICAgICAgaWYgKHggPT0gbnVsbCkgeyB4ID0gY29vcmRzLmxlZnQ7IH1cbiAgICAgICAgICBlbHNlIHsgY29vcmRzLmxlZnQgPSB4OyB9XG4gICAgICAgICAgY3VyID0gZmluZFBvc1YodGhpcywgY29vcmRzLCBkaXIsIHVuaXQpO1xuICAgICAgICAgIGlmIChjdXIuaGl0U2lkZSkgeyBicmVhayB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGN1clxuICAgICAgfSxcblxuICAgICAgbW92ZVY6IG1ldGhvZE9wKGZ1bmN0aW9uKGRpciwgdW5pdCkge1xuICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICB2YXIgZG9jID0gdGhpcy5kb2MsIGdvYWxzID0gW107XG4gICAgICAgIHZhciBjb2xsYXBzZSA9ICF0aGlzLmRpc3BsYXkuc2hpZnQgJiYgIWRvYy5leHRlbmQgJiYgZG9jLnNlbC5zb21ldGhpbmdTZWxlY3RlZCgpO1xuICAgICAgICBkb2MuZXh0ZW5kU2VsZWN0aW9uc0J5KGZ1bmN0aW9uIChyYW5nZSkge1xuICAgICAgICAgIGlmIChjb2xsYXBzZSlcbiAgICAgICAgICAgIHsgcmV0dXJuIGRpciA8IDAgPyByYW5nZS5mcm9tKCkgOiByYW5nZS50bygpIH1cbiAgICAgICAgICB2YXIgaGVhZFBvcyA9IGN1cnNvckNvb3Jkcyh0aGlzJDEsIHJhbmdlLmhlYWQsIFwiZGl2XCIpO1xuICAgICAgICAgIGlmIChyYW5nZS5nb2FsQ29sdW1uICE9IG51bGwpIHsgaGVhZFBvcy5sZWZ0ID0gcmFuZ2UuZ29hbENvbHVtbjsgfVxuICAgICAgICAgIGdvYWxzLnB1c2goaGVhZFBvcy5sZWZ0KTtcbiAgICAgICAgICB2YXIgcG9zID0gZmluZFBvc1YodGhpcyQxLCBoZWFkUG9zLCBkaXIsIHVuaXQpO1xuICAgICAgICAgIGlmICh1bml0ID09IFwicGFnZVwiICYmIHJhbmdlID09IGRvYy5zZWwucHJpbWFyeSgpKVxuICAgICAgICAgICAgeyBhZGRUb1Njcm9sbFRvcCh0aGlzJDEsIGNoYXJDb29yZHModGhpcyQxLCBwb3MsIFwiZGl2XCIpLnRvcCAtIGhlYWRQb3MudG9wKTsgfVxuICAgICAgICAgIHJldHVybiBwb3NcbiAgICAgICAgfSwgc2VsX21vdmUpO1xuICAgICAgICBpZiAoZ29hbHMubGVuZ3RoKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgZG9jLnNlbC5yYW5nZXMubGVuZ3RoOyBpKyspXG4gICAgICAgICAgeyBkb2Muc2VsLnJhbmdlc1tpXS5nb2FsQ29sdW1uID0gZ29hbHNbaV07IH0gfVxuICAgICAgfSksXG5cbiAgICAgIC8vIEZpbmQgdGhlIHdvcmQgYXQgdGhlIGdpdmVuIHBvc2l0aW9uIChhcyByZXR1cm5lZCBieSBjb29yZHNDaGFyKS5cbiAgICAgIGZpbmRXb3JkQXQ6IGZ1bmN0aW9uKHBvcykge1xuICAgICAgICB2YXIgZG9jID0gdGhpcy5kb2MsIGxpbmUgPSBnZXRMaW5lKGRvYywgcG9zLmxpbmUpLnRleHQ7XG4gICAgICAgIHZhciBzdGFydCA9IHBvcy5jaCwgZW5kID0gcG9zLmNoO1xuICAgICAgICBpZiAobGluZSkge1xuICAgICAgICAgIHZhciBoZWxwZXIgPSB0aGlzLmdldEhlbHBlcihwb3MsIFwid29yZENoYXJzXCIpO1xuICAgICAgICAgIGlmICgocG9zLnN0aWNreSA9PSBcImJlZm9yZVwiIHx8IGVuZCA9PSBsaW5lLmxlbmd0aCkgJiYgc3RhcnQpIHsgLS1zdGFydDsgfSBlbHNlIHsgKytlbmQ7IH1cbiAgICAgICAgICB2YXIgc3RhcnRDaGFyID0gbGluZS5jaGFyQXQoc3RhcnQpO1xuICAgICAgICAgIHZhciBjaGVjayA9IGlzV29yZENoYXIoc3RhcnRDaGFyLCBoZWxwZXIpXG4gICAgICAgICAgICA/IGZ1bmN0aW9uIChjaCkgeyByZXR1cm4gaXNXb3JkQ2hhcihjaCwgaGVscGVyKTsgfVxuICAgICAgICAgICAgOiAvXFxzLy50ZXN0KHN0YXJ0Q2hhcikgPyBmdW5jdGlvbiAoY2gpIHsgcmV0dXJuIC9cXHMvLnRlc3QoY2gpOyB9XG4gICAgICAgICAgICA6IGZ1bmN0aW9uIChjaCkgeyByZXR1cm4gKCEvXFxzLy50ZXN0KGNoKSAmJiAhaXNXb3JkQ2hhcihjaCkpOyB9O1xuICAgICAgICAgIHdoaWxlIChzdGFydCA+IDAgJiYgY2hlY2sobGluZS5jaGFyQXQoc3RhcnQgLSAxKSkpIHsgLS1zdGFydDsgfVxuICAgICAgICAgIHdoaWxlIChlbmQgPCBsaW5lLmxlbmd0aCAmJiBjaGVjayhsaW5lLmNoYXJBdChlbmQpKSkgeyArK2VuZDsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUmFuZ2UoUG9zKHBvcy5saW5lLCBzdGFydCksIFBvcyhwb3MubGluZSwgZW5kKSlcbiAgICAgIH0sXG5cbiAgICAgIHRvZ2dsZU92ZXJ3cml0ZTogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUgPT0gdGhpcy5zdGF0ZS5vdmVyd3JpdGUpIHsgcmV0dXJuIH1cbiAgICAgICAgaWYgKHRoaXMuc3RhdGUub3ZlcndyaXRlID0gIXRoaXMuc3RhdGUub3ZlcndyaXRlKVxuICAgICAgICAgIHsgYWRkQ2xhc3ModGhpcy5kaXNwbGF5LmN1cnNvckRpdiwgXCJDb2RlTWlycm9yLW92ZXJ3cml0ZVwiKTsgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgeyBybUNsYXNzKHRoaXMuZGlzcGxheS5jdXJzb3JEaXYsIFwiQ29kZU1pcnJvci1vdmVyd3JpdGVcIik7IH1cblxuICAgICAgICBzaWduYWwodGhpcywgXCJvdmVyd3JpdGVUb2dnbGVcIiwgdGhpcywgdGhpcy5zdGF0ZS5vdmVyd3JpdGUpO1xuICAgICAgfSxcbiAgICAgIGhhc0ZvY3VzOiBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMuZGlzcGxheS5pbnB1dC5nZXRGaWVsZCgpID09IGFjdGl2ZUVsdCgpIH0sXG4gICAgICBpc1JlYWRPbmx5OiBmdW5jdGlvbigpIHsgcmV0dXJuICEhKHRoaXMub3B0aW9ucy5yZWFkT25seSB8fCB0aGlzLmRvYy5jYW50RWRpdCkgfSxcblxuICAgICAgc2Nyb2xsVG86IG1ldGhvZE9wKGZ1bmN0aW9uICh4LCB5KSB7IHNjcm9sbFRvQ29vcmRzKHRoaXMsIHgsIHkpOyB9KSxcbiAgICAgIGdldFNjcm9sbEluZm86IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc2Nyb2xsZXIgPSB0aGlzLmRpc3BsYXkuc2Nyb2xsZXI7XG4gICAgICAgIHJldHVybiB7bGVmdDogc2Nyb2xsZXIuc2Nyb2xsTGVmdCwgdG9wOiBzY3JvbGxlci5zY3JvbGxUb3AsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBzY3JvbGxlci5zY3JvbGxIZWlnaHQgLSBzY3JvbGxHYXAodGhpcykgLSB0aGlzLmRpc3BsYXkuYmFySGVpZ2h0LFxuICAgICAgICAgICAgICAgIHdpZHRoOiBzY3JvbGxlci5zY3JvbGxXaWR0aCAtIHNjcm9sbEdhcCh0aGlzKSAtIHRoaXMuZGlzcGxheS5iYXJXaWR0aCxcbiAgICAgICAgICAgICAgICBjbGllbnRIZWlnaHQ6IGRpc3BsYXlIZWlnaHQodGhpcyksIGNsaWVudFdpZHRoOiBkaXNwbGF5V2lkdGgodGhpcyl9XG4gICAgICB9LFxuXG4gICAgICBzY3JvbGxJbnRvVmlldzogbWV0aG9kT3AoZnVuY3Rpb24ocmFuZ2UsIG1hcmdpbikge1xuICAgICAgICBpZiAocmFuZ2UgPT0gbnVsbCkge1xuICAgICAgICAgIHJhbmdlID0ge2Zyb206IHRoaXMuZG9jLnNlbC5wcmltYXJ5KCkuaGVhZCwgdG86IG51bGx9O1xuICAgICAgICAgIGlmIChtYXJnaW4gPT0gbnVsbCkgeyBtYXJnaW4gPSB0aGlzLm9wdGlvbnMuY3Vyc29yU2Nyb2xsTWFyZ2luOyB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJhbmdlID09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICByYW5nZSA9IHtmcm9tOiBQb3MocmFuZ2UsIDApLCB0bzogbnVsbH07XG4gICAgICAgIH0gZWxzZSBpZiAocmFuZ2UuZnJvbSA9PSBudWxsKSB7XG4gICAgICAgICAgcmFuZ2UgPSB7ZnJvbTogcmFuZ2UsIHRvOiBudWxsfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJhbmdlLnRvKSB7IHJhbmdlLnRvID0gcmFuZ2UuZnJvbTsgfVxuICAgICAgICByYW5nZS5tYXJnaW4gPSBtYXJnaW4gfHwgMDtcblxuICAgICAgICBpZiAocmFuZ2UuZnJvbS5saW5lICE9IG51bGwpIHtcbiAgICAgICAgICBzY3JvbGxUb1JhbmdlKHRoaXMsIHJhbmdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzY3JvbGxUb0Nvb3Jkc1JhbmdlKHRoaXMsIHJhbmdlLmZyb20sIHJhbmdlLnRvLCByYW5nZS5tYXJnaW4pO1xuICAgICAgICB9XG4gICAgICB9KSxcblxuICAgICAgc2V0U2l6ZTogbWV0aG9kT3AoZnVuY3Rpb24od2lkdGgsIGhlaWdodCkge1xuICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICB2YXIgaW50ZXJwcmV0ID0gZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gdHlwZW9mIHZhbCA9PSBcIm51bWJlclwiIHx8IC9eXFxkKyQvLnRlc3QoU3RyaW5nKHZhbCkpID8gdmFsICsgXCJweFwiIDogdmFsOyB9O1xuICAgICAgICBpZiAod2lkdGggIT0gbnVsbCkgeyB0aGlzLmRpc3BsYXkud3JhcHBlci5zdHlsZS53aWR0aCA9IGludGVycHJldCh3aWR0aCk7IH1cbiAgICAgICAgaWYgKGhlaWdodCAhPSBudWxsKSB7IHRoaXMuZGlzcGxheS53cmFwcGVyLnN0eWxlLmhlaWdodCA9IGludGVycHJldChoZWlnaHQpOyB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMubGluZVdyYXBwaW5nKSB7IGNsZWFyTGluZU1lYXN1cmVtZW50Q2FjaGUodGhpcyk7IH1cbiAgICAgICAgdmFyIGxpbmVObyA9IHRoaXMuZGlzcGxheS52aWV3RnJvbTtcbiAgICAgICAgdGhpcy5kb2MuaXRlcihsaW5lTm8sIHRoaXMuZGlzcGxheS52aWV3VG8sIGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICAgICAgaWYgKGxpbmUud2lkZ2V0cykgeyBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmUud2lkZ2V0cy5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHsgaWYgKGxpbmUud2lkZ2V0c1tpXS5ub0hTY3JvbGwpIHsgcmVnTGluZUNoYW5nZSh0aGlzJDEsIGxpbmVObywgXCJ3aWRnZXRcIik7IGJyZWFrIH0gfSB9XG4gICAgICAgICAgKytsaW5lTm87XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmN1ck9wLmZvcmNlVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgc2lnbmFsKHRoaXMsIFwicmVmcmVzaFwiLCB0aGlzKTtcbiAgICAgIH0pLFxuXG4gICAgICBvcGVyYXRpb246IGZ1bmN0aW9uKGYpe3JldHVybiBydW5Jbk9wKHRoaXMsIGYpfSxcbiAgICAgIHN0YXJ0T3BlcmF0aW9uOiBmdW5jdGlvbigpe3JldHVybiBzdGFydE9wZXJhdGlvbih0aGlzKX0sXG4gICAgICBlbmRPcGVyYXRpb246IGZ1bmN0aW9uKCl7cmV0dXJuIGVuZE9wZXJhdGlvbih0aGlzKX0sXG5cbiAgICAgIHJlZnJlc2g6IG1ldGhvZE9wKGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgb2xkSGVpZ2h0ID0gdGhpcy5kaXNwbGF5LmNhY2hlZFRleHRIZWlnaHQ7XG4gICAgICAgIHJlZ0NoYW5nZSh0aGlzKTtcbiAgICAgICAgdGhpcy5jdXJPcC5mb3JjZVVwZGF0ZSA9IHRydWU7XG4gICAgICAgIGNsZWFyQ2FjaGVzKHRoaXMpO1xuICAgICAgICBzY3JvbGxUb0Nvb3Jkcyh0aGlzLCB0aGlzLmRvYy5zY3JvbGxMZWZ0LCB0aGlzLmRvYy5zY3JvbGxUb3ApO1xuICAgICAgICB1cGRhdGVHdXR0ZXJTcGFjZSh0aGlzLmRpc3BsYXkpO1xuICAgICAgICBpZiAob2xkSGVpZ2h0ID09IG51bGwgfHwgTWF0aC5hYnMob2xkSGVpZ2h0IC0gdGV4dEhlaWdodCh0aGlzLmRpc3BsYXkpKSA+IC41IHx8IHRoaXMub3B0aW9ucy5saW5lV3JhcHBpbmcpXG4gICAgICAgICAgeyBlc3RpbWF0ZUxpbmVIZWlnaHRzKHRoaXMpOyB9XG4gICAgICAgIHNpZ25hbCh0aGlzLCBcInJlZnJlc2hcIiwgdGhpcyk7XG4gICAgICB9KSxcblxuICAgICAgc3dhcERvYzogbWV0aG9kT3AoZnVuY3Rpb24oZG9jKSB7XG4gICAgICAgIHZhciBvbGQgPSB0aGlzLmRvYztcbiAgICAgICAgb2xkLmNtID0gbnVsbDtcbiAgICAgICAgLy8gQ2FuY2VsIHRoZSBjdXJyZW50IHRleHQgc2VsZWN0aW9uIGlmIGFueSAoIzU4MjEpXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnNlbGVjdGluZ1RleHQpIHsgdGhpcy5zdGF0ZS5zZWxlY3RpbmdUZXh0KCk7IH1cbiAgICAgICAgYXR0YWNoRG9jKHRoaXMsIGRvYyk7XG4gICAgICAgIGNsZWFyQ2FjaGVzKHRoaXMpO1xuICAgICAgICB0aGlzLmRpc3BsYXkuaW5wdXQucmVzZXQoKTtcbiAgICAgICAgc2Nyb2xsVG9Db29yZHModGhpcywgZG9jLnNjcm9sbExlZnQsIGRvYy5zY3JvbGxUb3ApO1xuICAgICAgICB0aGlzLmN1ck9wLmZvcmNlU2Nyb2xsID0gdHJ1ZTtcbiAgICAgICAgc2lnbmFsTGF0ZXIodGhpcywgXCJzd2FwRG9jXCIsIHRoaXMsIG9sZCk7XG4gICAgICAgIHJldHVybiBvbGRcbiAgICAgIH0pLFxuXG4gICAgICBwaHJhc2U6IGZ1bmN0aW9uKHBocmFzZVRleHQpIHtcbiAgICAgICAgdmFyIHBocmFzZXMgPSB0aGlzLm9wdGlvbnMucGhyYXNlcztcbiAgICAgICAgcmV0dXJuIHBocmFzZXMgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBocmFzZXMsIHBocmFzZVRleHQpID8gcGhyYXNlc1twaHJhc2VUZXh0XSA6IHBocmFzZVRleHRcbiAgICAgIH0sXG5cbiAgICAgIGdldElucHV0RmllbGQ6IGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzcGxheS5pbnB1dC5nZXRGaWVsZCgpfSxcbiAgICAgIGdldFdyYXBwZXJFbGVtZW50OiBmdW5jdGlvbigpe3JldHVybiB0aGlzLmRpc3BsYXkud3JhcHBlcn0sXG4gICAgICBnZXRTY3JvbGxlckVsZW1lbnQ6IGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzcGxheS5zY3JvbGxlcn0sXG4gICAgICBnZXRHdXR0ZXJFbGVtZW50OiBmdW5jdGlvbigpe3JldHVybiB0aGlzLmRpc3BsYXkuZ3V0dGVyc31cbiAgICB9O1xuICAgIGV2ZW50TWl4aW4oQ29kZU1pcnJvcik7XG5cbiAgICBDb2RlTWlycm9yLnJlZ2lzdGVySGVscGVyID0gZnVuY3Rpb24odHlwZSwgbmFtZSwgdmFsdWUpIHtcbiAgICAgIGlmICghaGVscGVycy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgeyBoZWxwZXJzW3R5cGVdID0gQ29kZU1pcnJvclt0eXBlXSA9IHtfZ2xvYmFsOiBbXX07IH1cbiAgICAgIGhlbHBlcnNbdHlwZV1bbmFtZV0gPSB2YWx1ZTtcbiAgICB9O1xuICAgIENvZGVNaXJyb3IucmVnaXN0ZXJHbG9iYWxIZWxwZXIgPSBmdW5jdGlvbih0eXBlLCBuYW1lLCBwcmVkaWNhdGUsIHZhbHVlKSB7XG4gICAgICBDb2RlTWlycm9yLnJlZ2lzdGVySGVscGVyKHR5cGUsIG5hbWUsIHZhbHVlKTtcbiAgICAgIGhlbHBlcnNbdHlwZV0uX2dsb2JhbC5wdXNoKHtwcmVkOiBwcmVkaWNhdGUsIHZhbDogdmFsdWV9KTtcbiAgICB9O1xuICB9XG5cbiAgLy8gVXNlZCBmb3IgaG9yaXpvbnRhbCByZWxhdGl2ZSBtb3Rpb24uIERpciBpcyAtMSBvciAxIChsZWZ0IG9yXG4gIC8vIHJpZ2h0KSwgdW5pdCBjYW4gYmUgXCJjaGFyXCIsIFwiY29sdW1uXCIgKGxpa2UgY2hhciwgYnV0IGRvZXNuJ3RcbiAgLy8gY3Jvc3MgbGluZSBib3VuZGFyaWVzKSwgXCJ3b3JkXCIgKGFjcm9zcyBuZXh0IHdvcmQpLCBvciBcImdyb3VwXCIgKHRvXG4gIC8vIHRoZSBzdGFydCBvZiBuZXh0IGdyb3VwIG9mIHdvcmQgb3Igbm9uLXdvcmQtbm9uLXdoaXRlc3BhY2VcbiAgLy8gY2hhcnMpLiBUaGUgdmlzdWFsbHkgcGFyYW0gY29udHJvbHMgd2hldGhlciwgaW4gcmlnaHQtdG8tbGVmdFxuICAvLyB0ZXh0LCBkaXJlY3Rpb24gMSBtZWFucyB0byBtb3ZlIHRvd2FyZHMgdGhlIG5leHQgaW5kZXggaW4gdGhlXG4gIC8vIHN0cmluZywgb3IgdG93YXJkcyB0aGUgY2hhcmFjdGVyIHRvIHRoZSByaWdodCBvZiB0aGUgY3VycmVudFxuICAvLyBwb3NpdGlvbi4gVGhlIHJlc3VsdGluZyBwb3NpdGlvbiB3aWxsIGhhdmUgYSBoaXRTaWRlPXRydWVcbiAgLy8gcHJvcGVydHkgaWYgaXQgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudC5cbiAgZnVuY3Rpb24gZmluZFBvc0goZG9jLCBwb3MsIGRpciwgdW5pdCwgdmlzdWFsbHkpIHtcbiAgICB2YXIgb2xkUG9zID0gcG9zO1xuICAgIHZhciBvcmlnRGlyID0gZGlyO1xuICAgIHZhciBsaW5lT2JqID0gZ2V0TGluZShkb2MsIHBvcy5saW5lKTtcbiAgICB2YXIgbGluZURpciA9IHZpc3VhbGx5ICYmIGRvYy5kaXJlY3Rpb24gPT0gXCJydGxcIiA/IC1kaXIgOiBkaXI7XG4gICAgZnVuY3Rpb24gZmluZE5leHRMaW5lKCkge1xuICAgICAgdmFyIGwgPSBwb3MubGluZSArIGxpbmVEaXI7XG4gICAgICBpZiAobCA8IGRvYy5maXJzdCB8fCBsID49IGRvYy5maXJzdCArIGRvYy5zaXplKSB7IHJldHVybiBmYWxzZSB9XG4gICAgICBwb3MgPSBuZXcgUG9zKGwsIHBvcy5jaCwgcG9zLnN0aWNreSk7XG4gICAgICByZXR1cm4gbGluZU9iaiA9IGdldExpbmUoZG9jLCBsKVxuICAgIH1cbiAgICBmdW5jdGlvbiBtb3ZlT25jZShib3VuZFRvTGluZSkge1xuICAgICAgdmFyIG5leHQ7XG4gICAgICBpZiAodmlzdWFsbHkpIHtcbiAgICAgICAgbmV4dCA9IG1vdmVWaXN1YWxseShkb2MuY20sIGxpbmVPYmosIHBvcywgZGlyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHQgPSBtb3ZlTG9naWNhbGx5KGxpbmVPYmosIHBvcywgZGlyKTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0ID09IG51bGwpIHtcbiAgICAgICAgaWYgKCFib3VuZFRvTGluZSAmJiBmaW5kTmV4dExpbmUoKSlcbiAgICAgICAgICB7IHBvcyA9IGVuZE9mTGluZSh2aXN1YWxseSwgZG9jLmNtLCBsaW5lT2JqLCBwb3MubGluZSwgbGluZURpcik7IH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIHsgcmV0dXJuIGZhbHNlIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBvcyA9IG5leHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGlmICh1bml0ID09IFwiY2hhclwiKSB7XG4gICAgICBtb3ZlT25jZSgpO1xuICAgIH0gZWxzZSBpZiAodW5pdCA9PSBcImNvbHVtblwiKSB7XG4gICAgICBtb3ZlT25jZSh0cnVlKTtcbiAgICB9IGVsc2UgaWYgKHVuaXQgPT0gXCJ3b3JkXCIgfHwgdW5pdCA9PSBcImdyb3VwXCIpIHtcbiAgICAgIHZhciBzYXdUeXBlID0gbnVsbCwgZ3JvdXAgPSB1bml0ID09IFwiZ3JvdXBcIjtcbiAgICAgIHZhciBoZWxwZXIgPSBkb2MuY20gJiYgZG9jLmNtLmdldEhlbHBlcihwb3MsIFwid29yZENoYXJzXCIpO1xuICAgICAgZm9yICh2YXIgZmlyc3QgPSB0cnVlOzsgZmlyc3QgPSBmYWxzZSkge1xuICAgICAgICBpZiAoZGlyIDwgMCAmJiAhbW92ZU9uY2UoIWZpcnN0KSkgeyBicmVhayB9XG4gICAgICAgIHZhciBjdXIgPSBsaW5lT2JqLnRleHQuY2hhckF0KHBvcy5jaCkgfHwgXCJcXG5cIjtcbiAgICAgICAgdmFyIHR5cGUgPSBpc1dvcmRDaGFyKGN1ciwgaGVscGVyKSA/IFwid1wiXG4gICAgICAgICAgOiBncm91cCAmJiBjdXIgPT0gXCJcXG5cIiA/IFwiblwiXG4gICAgICAgICAgOiAhZ3JvdXAgfHwgL1xccy8udGVzdChjdXIpID8gbnVsbFxuICAgICAgICAgIDogXCJwXCI7XG4gICAgICAgIGlmIChncm91cCAmJiAhZmlyc3QgJiYgIXR5cGUpIHsgdHlwZSA9IFwic1wiOyB9XG4gICAgICAgIGlmIChzYXdUeXBlICYmIHNhd1R5cGUgIT0gdHlwZSkge1xuICAgICAgICAgIGlmIChkaXIgPCAwKSB7ZGlyID0gMTsgbW92ZU9uY2UoKTsgcG9zLnN0aWNreSA9IFwiYWZ0ZXJcIjt9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlKSB7IHNhd1R5cGUgPSB0eXBlOyB9XG4gICAgICAgIGlmIChkaXIgPiAwICYmICFtb3ZlT25jZSghZmlyc3QpKSB7IGJyZWFrIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IHNraXBBdG9taWMoZG9jLCBwb3MsIG9sZFBvcywgb3JpZ0RpciwgdHJ1ZSk7XG4gICAgaWYgKGVxdWFsQ3Vyc29yUG9zKG9sZFBvcywgcmVzdWx0KSkgeyByZXN1bHQuaGl0U2lkZSA9IHRydWU7IH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvLyBGb3IgcmVsYXRpdmUgdmVydGljYWwgbW92ZW1lbnQuIERpciBtYXkgYmUgLTEgb3IgMS4gVW5pdCBjYW4gYmVcbiAgLy8gXCJwYWdlXCIgb3IgXCJsaW5lXCIuIFRoZSByZXN1bHRpbmcgcG9zaXRpb24gd2lsbCBoYXZlIGEgaGl0U2lkZT10cnVlXG4gIC8vIHByb3BlcnR5IGlmIGl0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuXG4gIGZ1bmN0aW9uIGZpbmRQb3NWKGNtLCBwb3MsIGRpciwgdW5pdCkge1xuICAgIHZhciBkb2MgPSBjbS5kb2MsIHggPSBwb3MubGVmdCwgeTtcbiAgICBpZiAodW5pdCA9PSBcInBhZ2VcIikge1xuICAgICAgdmFyIHBhZ2VTaXplID0gTWF0aC5taW4oY20uZGlzcGxheS53cmFwcGVyLmNsaWVudEhlaWdodCwgd2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpO1xuICAgICAgdmFyIG1vdmVBbW91bnQgPSBNYXRoLm1heChwYWdlU2l6ZSAtIC41ICogdGV4dEhlaWdodChjbS5kaXNwbGF5KSwgMyk7XG4gICAgICB5ID0gKGRpciA+IDAgPyBwb3MuYm90dG9tIDogcG9zLnRvcCkgKyBkaXIgKiBtb3ZlQW1vdW50O1xuXG4gICAgfSBlbHNlIGlmICh1bml0ID09IFwibGluZVwiKSB7XG4gICAgICB5ID0gZGlyID4gMCA/IHBvcy5ib3R0b20gKyAzIDogcG9zLnRvcCAtIDM7XG4gICAgfVxuICAgIHZhciB0YXJnZXQ7XG4gICAgZm9yICg7Oykge1xuICAgICAgdGFyZ2V0ID0gY29vcmRzQ2hhcihjbSwgeCwgeSk7XG4gICAgICBpZiAoIXRhcmdldC5vdXRzaWRlKSB7IGJyZWFrIH1cbiAgICAgIGlmIChkaXIgPCAwID8geSA8PSAwIDogeSA+PSBkb2MuaGVpZ2h0KSB7IHRhcmdldC5oaXRTaWRlID0gdHJ1ZTsgYnJlYWsgfVxuICAgICAgeSArPSBkaXIgKiA1O1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0XG4gIH1cblxuICAvLyBDT05URU5URURJVEFCTEUgSU5QVVQgU1RZTEVcblxuICB2YXIgQ29udGVudEVkaXRhYmxlSW5wdXQgPSBmdW5jdGlvbihjbSkge1xuICAgIHRoaXMuY20gPSBjbTtcbiAgICB0aGlzLmxhc3RBbmNob3JOb2RlID0gdGhpcy5sYXN0QW5jaG9yT2Zmc2V0ID0gdGhpcy5sYXN0Rm9jdXNOb2RlID0gdGhpcy5sYXN0Rm9jdXNPZmZzZXQgPSBudWxsO1xuICAgIHRoaXMucG9sbGluZyA9IG5ldyBEZWxheWVkKCk7XG4gICAgdGhpcy5jb21wb3NpbmcgPSBudWxsO1xuICAgIHRoaXMuZ3JhY2VQZXJpb2QgPSBmYWxzZTtcbiAgICB0aGlzLnJlYWRET01UaW1lb3V0ID0gbnVsbDtcbiAgfTtcblxuICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uIChkaXNwbGF5KSB7XG4gICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciBpbnB1dCA9IHRoaXMsIGNtID0gaW5wdXQuY207XG4gICAgdmFyIGRpdiA9IGlucHV0LmRpdiA9IGRpc3BsYXkubGluZURpdjtcbiAgICBkaXNhYmxlQnJvd3Nlck1hZ2ljKGRpdiwgY20ub3B0aW9ucy5zcGVsbGNoZWNrLCBjbS5vcHRpb25zLmF1dG9jb3JyZWN0LCBjbS5vcHRpb25zLmF1dG9jYXBpdGFsaXplKTtcblxuICAgIGZ1bmN0aW9uIGJlbG9uZ3NUb0lucHV0KGUpIHtcbiAgICAgIGZvciAodmFyIHQgPSBlLnRhcmdldDsgdDsgdCA9IHQucGFyZW50Tm9kZSkge1xuICAgICAgICBpZiAodCA9PSBkaXYpIHsgcmV0dXJuIHRydWUgfVxuICAgICAgICBpZiAoL1xcYkNvZGVNaXJyb3ItKD86bGluZSk/d2lkZ2V0XFxiLy50ZXN0KHQuY2xhc3NOYW1lKSkgeyBicmVhayB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBvbihkaXYsIFwicGFzdGVcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmICghYmVsb25nc1RvSW5wdXQoZSkgfHwgc2lnbmFsRE9NRXZlbnQoY20sIGUpIHx8IGhhbmRsZVBhc3RlKGUsIGNtKSkgeyByZXR1cm4gfVxuICAgICAgLy8gSUUgZG9lc24ndCBmaXJlIGlucHV0IGV2ZW50cywgc28gd2Ugc2NoZWR1bGUgYSByZWFkIGZvciB0aGUgcGFzdGVkIGNvbnRlbnQgaW4gdGhpcyB3YXlcbiAgICAgIGlmIChpZV92ZXJzaW9uIDw9IDExKSB7IHNldFRpbWVvdXQob3BlcmF0aW9uKGNtLCBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEudXBkYXRlRnJvbURPTSgpOyB9KSwgMjApOyB9XG4gICAgfSk7XG5cbiAgICBvbihkaXYsIFwiY29tcG9zaXRpb25zdGFydFwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgdGhpcyQxLmNvbXBvc2luZyA9IHtkYXRhOiBlLmRhdGEsIGRvbmU6IGZhbHNlfTtcbiAgICB9KTtcbiAgICBvbihkaXYsIFwiY29tcG9zaXRpb251cGRhdGVcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmICghdGhpcyQxLmNvbXBvc2luZykgeyB0aGlzJDEuY29tcG9zaW5nID0ge2RhdGE6IGUuZGF0YSwgZG9uZTogZmFsc2V9OyB9XG4gICAgfSk7XG4gICAgb24oZGl2LCBcImNvbXBvc2l0aW9uZW5kXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAodGhpcyQxLmNvbXBvc2luZykge1xuICAgICAgICBpZiAoZS5kYXRhICE9IHRoaXMkMS5jb21wb3NpbmcuZGF0YSkgeyB0aGlzJDEucmVhZEZyb21ET01Tb29uKCk7IH1cbiAgICAgICAgdGhpcyQxLmNvbXBvc2luZy5kb25lID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG9uKGRpdiwgXCJ0b3VjaHN0YXJ0XCIsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGlucHV0LmZvcmNlQ29tcG9zaXRpb25FbmQoKTsgfSk7XG5cbiAgICBvbihkaXYsIFwiaW5wdXRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCF0aGlzJDEuY29tcG9zaW5nKSB7IHRoaXMkMS5yZWFkRnJvbURPTVNvb24oKTsgfVxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gb25Db3B5Q3V0KGUpIHtcbiAgICAgIGlmICghYmVsb25nc1RvSW5wdXQoZSkgfHwgc2lnbmFsRE9NRXZlbnQoY20sIGUpKSB7IHJldHVybiB9XG4gICAgICBpZiAoY20uc29tZXRoaW5nU2VsZWN0ZWQoKSkge1xuICAgICAgICBzZXRMYXN0Q29waWVkKHtsaW5lV2lzZTogZmFsc2UsIHRleHQ6IGNtLmdldFNlbGVjdGlvbnMoKX0pO1xuICAgICAgICBpZiAoZS50eXBlID09IFwiY3V0XCIpIHsgY20ucmVwbGFjZVNlbGVjdGlvbihcIlwiLCBudWxsLCBcImN1dFwiKTsgfVxuICAgICAgfSBlbHNlIGlmICghY20ub3B0aW9ucy5saW5lV2lzZUNvcHlDdXQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmFuZ2VzID0gY29weWFibGVSYW5nZXMoY20pO1xuICAgICAgICBzZXRMYXN0Q29waWVkKHtsaW5lV2lzZTogdHJ1ZSwgdGV4dDogcmFuZ2VzLnRleHR9KTtcbiAgICAgICAgaWYgKGUudHlwZSA9PSBcImN1dFwiKSB7XG4gICAgICAgICAgY20ub3BlcmF0aW9uKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNtLnNldFNlbGVjdGlvbnMocmFuZ2VzLnJhbmdlcywgMCwgc2VsX2RvbnRTY3JvbGwpO1xuICAgICAgICAgICAgY20ucmVwbGFjZVNlbGVjdGlvbihcIlwiLCBudWxsLCBcImN1dFwiKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGUuY2xpcGJvYXJkRGF0YSkge1xuICAgICAgICBlLmNsaXBib2FyZERhdGEuY2xlYXJEYXRhKCk7XG4gICAgICAgIHZhciBjb250ZW50ID0gbGFzdENvcGllZC50ZXh0LmpvaW4oXCJcXG5cIik7XG4gICAgICAgIC8vIGlPUyBleHBvc2VzIHRoZSBjbGlwYm9hcmQgQVBJLCBidXQgc2VlbXMgdG8gZGlzY2FyZCBjb250ZW50IGluc2VydGVkIGludG8gaXRcbiAgICAgICAgZS5jbGlwYm9hcmREYXRhLnNldERhdGEoXCJUZXh0XCIsIGNvbnRlbnQpO1xuICAgICAgICBpZiAoZS5jbGlwYm9hcmREYXRhLmdldERhdGEoXCJUZXh0XCIpID09IGNvbnRlbnQpIHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIE9sZC1mYXNoaW9uZWQgYnJpZWZseS1mb2N1cy1hLXRleHRhcmVhIGhhY2tcbiAgICAgIHZhciBrbHVkZ2UgPSBoaWRkZW5UZXh0YXJlYSgpLCB0ZSA9IGtsdWRnZS5maXJzdENoaWxkO1xuICAgICAgY20uZGlzcGxheS5saW5lU3BhY2UuaW5zZXJ0QmVmb3JlKGtsdWRnZSwgY20uZGlzcGxheS5saW5lU3BhY2UuZmlyc3RDaGlsZCk7XG4gICAgICB0ZS52YWx1ZSA9IGxhc3RDb3BpZWQudGV4dC5qb2luKFwiXFxuXCIpO1xuICAgICAgdmFyIGhhZEZvY3VzID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgIHNlbGVjdElucHV0KHRlKTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBjbS5kaXNwbGF5LmxpbmVTcGFjZS5yZW1vdmVDaGlsZChrbHVkZ2UpO1xuICAgICAgICBoYWRGb2N1cy5mb2N1cygpO1xuICAgICAgICBpZiAoaGFkRm9jdXMgPT0gZGl2KSB7IGlucHV0LnNob3dQcmltYXJ5U2VsZWN0aW9uKCk7IH1cbiAgICAgIH0sIDUwKTtcbiAgICB9XG4gICAgb24oZGl2LCBcImNvcHlcIiwgb25Db3B5Q3V0KTtcbiAgICBvbihkaXYsIFwiY3V0XCIsIG9uQ29weUN1dCk7XG4gIH07XG5cbiAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnNjcmVlblJlYWRlckxhYmVsQ2hhbmdlZCA9IGZ1bmN0aW9uIChsYWJlbCkge1xuICAgIC8vIExhYmVsIGZvciBzY3JlZW5yZWFkZXJzLCBhY2Nlc3NpYmlsaXR5XG4gICAgaWYobGFiZWwpIHtcbiAgICAgIHRoaXMuZGl2LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIGxhYmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXYucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWxhYmVsJyk7XG4gICAgfVxuICB9O1xuXG4gIENvbnRlbnRFZGl0YWJsZUlucHV0LnByb3RvdHlwZS5wcmVwYXJlU2VsZWN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHQgPSBwcmVwYXJlU2VsZWN0aW9uKHRoaXMuY20sIGZhbHNlKTtcbiAgICByZXN1bHQuZm9jdXMgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IHRoaXMuZGl2O1xuICAgIHJldHVybiByZXN1bHRcbiAgfTtcblxuICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUuc2hvd1NlbGVjdGlvbiA9IGZ1bmN0aW9uIChpbmZvLCB0YWtlRm9jdXMpIHtcbiAgICBpZiAoIWluZm8gfHwgIXRoaXMuY20uZGlzcGxheS52aWV3Lmxlbmd0aCkgeyByZXR1cm4gfVxuICAgIGlmIChpbmZvLmZvY3VzIHx8IHRha2VGb2N1cykgeyB0aGlzLnNob3dQcmltYXJ5U2VsZWN0aW9uKCk7IH1cbiAgICB0aGlzLnNob3dNdWx0aXBsZVNlbGVjdGlvbnMoaW5mbyk7XG4gIH07XG5cbiAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLmdldFNlbGVjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbS5kaXNwbGF5LndyYXBwZXIub3duZXJEb2N1bWVudC5nZXRTZWxlY3Rpb24oKVxuICB9O1xuXG4gIENvbnRlbnRFZGl0YWJsZUlucHV0LnByb3RvdHlwZS5zaG93UHJpbWFyeVNlbGVjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsID0gdGhpcy5nZXRTZWxlY3Rpb24oKSwgY20gPSB0aGlzLmNtLCBwcmltID0gY20uZG9jLnNlbC5wcmltYXJ5KCk7XG4gICAgdmFyIGZyb20gPSBwcmltLmZyb20oKSwgdG8gPSBwcmltLnRvKCk7XG5cbiAgICBpZiAoY20uZGlzcGxheS52aWV3VG8gPT0gY20uZGlzcGxheS52aWV3RnJvbSB8fCBmcm9tLmxpbmUgPj0gY20uZGlzcGxheS52aWV3VG8gfHwgdG8ubGluZSA8IGNtLmRpc3BsYXkudmlld0Zyb20pIHtcbiAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBjdXJBbmNob3IgPSBkb21Ub1BvcyhjbSwgc2VsLmFuY2hvck5vZGUsIHNlbC5hbmNob3JPZmZzZXQpO1xuICAgIHZhciBjdXJGb2N1cyA9IGRvbVRvUG9zKGNtLCBzZWwuZm9jdXNOb2RlLCBzZWwuZm9jdXNPZmZzZXQpO1xuICAgIGlmIChjdXJBbmNob3IgJiYgIWN1ckFuY2hvci5iYWQgJiYgY3VyRm9jdXMgJiYgIWN1ckZvY3VzLmJhZCAmJlxuICAgICAgICBjbXAobWluUG9zKGN1ckFuY2hvciwgY3VyRm9jdXMpLCBmcm9tKSA9PSAwICYmXG4gICAgICAgIGNtcChtYXhQb3MoY3VyQW5jaG9yLCBjdXJGb2N1cyksIHRvKSA9PSAwKVxuICAgICAgeyByZXR1cm4gfVxuXG4gICAgdmFyIHZpZXcgPSBjbS5kaXNwbGF5LnZpZXc7XG4gICAgdmFyIHN0YXJ0ID0gKGZyb20ubGluZSA+PSBjbS5kaXNwbGF5LnZpZXdGcm9tICYmIHBvc1RvRE9NKGNtLCBmcm9tKSkgfHxcbiAgICAgICAge25vZGU6IHZpZXdbMF0ubWVhc3VyZS5tYXBbMl0sIG9mZnNldDogMH07XG4gICAgdmFyIGVuZCA9IHRvLmxpbmUgPCBjbS5kaXNwbGF5LnZpZXdUbyAmJiBwb3NUb0RPTShjbSwgdG8pO1xuICAgIGlmICghZW5kKSB7XG4gICAgICB2YXIgbWVhc3VyZSA9IHZpZXdbdmlldy5sZW5ndGggLSAxXS5tZWFzdXJlO1xuICAgICAgdmFyIG1hcCA9IG1lYXN1cmUubWFwcyA/IG1lYXN1cmUubWFwc1ttZWFzdXJlLm1hcHMubGVuZ3RoIC0gMV0gOiBtZWFzdXJlLm1hcDtcbiAgICAgIGVuZCA9IHtub2RlOiBtYXBbbWFwLmxlbmd0aCAtIDFdLCBvZmZzZXQ6IG1hcFttYXAubGVuZ3RoIC0gMl0gLSBtYXBbbWFwLmxlbmd0aCAtIDNdfTtcbiAgICB9XG5cbiAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpIHtcbiAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBvbGQgPSBzZWwucmFuZ2VDb3VudCAmJiBzZWwuZ2V0UmFuZ2VBdCgwKSwgcm5nO1xuICAgIHRyeSB7IHJuZyA9IHJhbmdlKHN0YXJ0Lm5vZGUsIHN0YXJ0Lm9mZnNldCwgZW5kLm9mZnNldCwgZW5kLm5vZGUpOyB9XG4gICAgY2F0Y2goZSkge30gLy8gT3VyIG1vZGVsIG9mIHRoZSBET00gbWlnaHQgYmUgb3V0ZGF0ZWQsIGluIHdoaWNoIGNhc2UgdGhlIHJhbmdlIHdlIHRyeSB0byBzZXQgY2FuIGJlIGltcG9zc2libGVcbiAgICBpZiAocm5nKSB7XG4gICAgICBpZiAoIWdlY2tvICYmIGNtLnN0YXRlLmZvY3VzZWQpIHtcbiAgICAgICAgc2VsLmNvbGxhcHNlKHN0YXJ0Lm5vZGUsIHN0YXJ0Lm9mZnNldCk7XG4gICAgICAgIGlmICghcm5nLmNvbGxhcHNlZCkge1xuICAgICAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgICAgICBzZWwuYWRkUmFuZ2Uocm5nKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgICBzZWwuYWRkUmFuZ2Uocm5nKTtcbiAgICAgIH1cbiAgICAgIGlmIChvbGQgJiYgc2VsLmFuY2hvck5vZGUgPT0gbnVsbCkgeyBzZWwuYWRkUmFuZ2Uob2xkKTsgfVxuICAgICAgZWxzZSBpZiAoZ2Vja28pIHsgdGhpcy5zdGFydEdyYWNlUGVyaW9kKCk7IH1cbiAgICB9XG4gICAgdGhpcy5yZW1lbWJlclNlbGVjdGlvbigpO1xuICB9O1xuXG4gIENvbnRlbnRFZGl0YWJsZUlucHV0LnByb3RvdHlwZS5zdGFydEdyYWNlUGVyaW9kID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICBjbGVhclRpbWVvdXQodGhpcy5ncmFjZVBlcmlvZCk7XG4gICAgdGhpcy5ncmFjZVBlcmlvZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcyQxLmdyYWNlUGVyaW9kID0gZmFsc2U7XG4gICAgICBpZiAodGhpcyQxLnNlbGVjdGlvbkNoYW5nZWQoKSlcbiAgICAgICAgeyB0aGlzJDEuY20ub3BlcmF0aW9uKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS5jbS5jdXJPcC5zZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTsgfSk7IH1cbiAgICB9LCAyMCk7XG4gIH07XG5cbiAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnNob3dNdWx0aXBsZVNlbGVjdGlvbnMgPSBmdW5jdGlvbiAoaW5mbykge1xuICAgIHJlbW92ZUNoaWxkcmVuQW5kQWRkKHRoaXMuY20uZGlzcGxheS5jdXJzb3JEaXYsIGluZm8uY3Vyc29ycyk7XG4gICAgcmVtb3ZlQ2hpbGRyZW5BbmRBZGQodGhpcy5jbS5kaXNwbGF5LnNlbGVjdGlvbkRpdiwgaW5mby5zZWxlY3Rpb24pO1xuICB9O1xuXG4gIENvbnRlbnRFZGl0YWJsZUlucHV0LnByb3RvdHlwZS5yZW1lbWJlclNlbGVjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICB0aGlzLmxhc3RBbmNob3JOb2RlID0gc2VsLmFuY2hvck5vZGU7IHRoaXMubGFzdEFuY2hvck9mZnNldCA9IHNlbC5hbmNob3JPZmZzZXQ7XG4gICAgdGhpcy5sYXN0Rm9jdXNOb2RlID0gc2VsLmZvY3VzTm9kZTsgdGhpcy5sYXN0Rm9jdXNPZmZzZXQgPSBzZWwuZm9jdXNPZmZzZXQ7XG4gIH07XG5cbiAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnNlbGVjdGlvbkluRWRpdG9yID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWwgPSB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsLnJhbmdlQ291bnQpIHsgcmV0dXJuIGZhbHNlIH1cbiAgICB2YXIgbm9kZSA9IHNlbC5nZXRSYW5nZUF0KDApLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyO1xuICAgIHJldHVybiBjb250YWlucyh0aGlzLmRpdiwgbm9kZSlcbiAgfTtcblxuICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuY20ub3B0aW9ucy5yZWFkT25seSAhPSBcIm5vY3Vyc29yXCIpIHtcbiAgICAgIGlmICghdGhpcy5zZWxlY3Rpb25JbkVkaXRvcigpIHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT0gdGhpcy5kaXYpXG4gICAgICAgIHsgdGhpcy5zaG93U2VsZWN0aW9uKHRoaXMucHJlcGFyZVNlbGVjdGlvbigpLCB0cnVlKTsgfVxuICAgICAgdGhpcy5kaXYuZm9jdXMoKTtcbiAgICB9XG4gIH07XG4gIENvbnRlbnRFZGl0YWJsZUlucHV0LnByb3RvdHlwZS5ibHVyID0gZnVuY3Rpb24gKCkgeyB0aGlzLmRpdi5ibHVyKCk7IH07XG4gIENvbnRlbnRFZGl0YWJsZUlucHV0LnByb3RvdHlwZS5nZXRGaWVsZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuZGl2IH07XG5cbiAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnN1cHBvcnRzVG91Y2ggPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlIH07XG5cbiAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnJlY2VpdmVkRm9jdXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGlucHV0ID0gdGhpcztcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25JbkVkaXRvcigpKVxuICAgICAgeyB0aGlzLnBvbGxTZWxlY3Rpb24oKTsgfVxuICAgIGVsc2VcbiAgICAgIHsgcnVuSW5PcCh0aGlzLmNtLCBmdW5jdGlvbiAoKSB7IHJldHVybiBpbnB1dC5jbS5jdXJPcC5zZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTsgfSk7IH1cblxuICAgIGZ1bmN0aW9uIHBvbGwoKSB7XG4gICAgICBpZiAoaW5wdXQuY20uc3RhdGUuZm9jdXNlZCkge1xuICAgICAgICBpbnB1dC5wb2xsU2VsZWN0aW9uKCk7XG4gICAgICAgIGlucHV0LnBvbGxpbmcuc2V0KGlucHV0LmNtLm9wdGlvbnMucG9sbEludGVydmFsLCBwb2xsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wb2xsaW5nLnNldCh0aGlzLmNtLm9wdGlvbnMucG9sbEludGVydmFsLCBwb2xsKTtcbiAgfTtcblxuICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUuc2VsZWN0aW9uQ2hhbmdlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICByZXR1cm4gc2VsLmFuY2hvck5vZGUgIT0gdGhpcy5sYXN0QW5jaG9yTm9kZSB8fCBzZWwuYW5jaG9yT2Zmc2V0ICE9IHRoaXMubGFzdEFuY2hvck9mZnNldCB8fFxuICAgICAgc2VsLmZvY3VzTm9kZSAhPSB0aGlzLmxhc3RGb2N1c05vZGUgfHwgc2VsLmZvY3VzT2Zmc2V0ICE9IHRoaXMubGFzdEZvY3VzT2Zmc2V0XG4gIH07XG5cbiAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnBvbGxTZWxlY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMucmVhZERPTVRpbWVvdXQgIT0gbnVsbCB8fCB0aGlzLmdyYWNlUGVyaW9kIHx8ICF0aGlzLnNlbGVjdGlvbkNoYW5nZWQoKSkgeyByZXR1cm4gfVxuICAgIHZhciBzZWwgPSB0aGlzLmdldFNlbGVjdGlvbigpLCBjbSA9IHRoaXMuY207XG4gICAgLy8gT24gQW5kcm9pZCBDaHJvbWUgKHZlcnNpb24gNTYsIGF0IGxlYXN0KSwgYmFja3NwYWNpbmcgaW50byBhblxuICAgIC8vIHVuZWRpdGFibGUgYmxvY2sgZWxlbWVudCB3aWxsIHB1dCB0aGUgY3Vyc29yIGluIHRoYXQgZWxlbWVudCxcbiAgICAvLyBhbmQgdGhlbiwgYmVjYXVzZSBpdCdzIG5vdCBlZGl0YWJsZSwgaGlkZSB0aGUgdmlydHVhbCBrZXlib2FyZC5cbiAgICAvLyBCZWNhdXNlIEFuZHJvaWQgZG9lc24ndCBhbGxvdyB1cyB0byBhY3R1YWxseSBkZXRlY3QgYmFja3NwYWNlXG4gICAgLy8gcHJlc3NlcyBpbiBhIHNhbmUgd2F5LCB0aGlzIGNvZGUgY2hlY2tzIGZvciB3aGVuIHRoYXQgaGFwcGVuc1xuICAgIC8vIGFuZCBzaW11bGF0ZXMgYSBiYWNrc3BhY2UgcHJlc3MgaW4gdGhpcyBjYXNlLlxuICAgIGlmIChhbmRyb2lkICYmIGNocm9tZSAmJiB0aGlzLmNtLmRpc3BsYXkuZ3V0dGVyU3BlY3MubGVuZ3RoICYmIGlzSW5HdXR0ZXIoc2VsLmFuY2hvck5vZGUpKSB7XG4gICAgICB0aGlzLmNtLnRyaWdnZXJPbktleURvd24oe3R5cGU6IFwia2V5ZG93blwiLCBrZXlDb2RlOiA4LCBwcmV2ZW50RGVmYXVsdDogTWF0aC5hYnN9KTtcbiAgICAgIHRoaXMuYmx1cigpO1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmICh0aGlzLmNvbXBvc2luZykgeyByZXR1cm4gfVxuICAgIHRoaXMucmVtZW1iZXJTZWxlY3Rpb24oKTtcbiAgICB2YXIgYW5jaG9yID0gZG9tVG9Qb3MoY20sIHNlbC5hbmNob3JOb2RlLCBzZWwuYW5jaG9yT2Zmc2V0KTtcbiAgICB2YXIgaGVhZCA9IGRvbVRvUG9zKGNtLCBzZWwuZm9jdXNOb2RlLCBzZWwuZm9jdXNPZmZzZXQpO1xuICAgIGlmIChhbmNob3IgJiYgaGVhZCkgeyBydW5Jbk9wKGNtLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZXRTZWxlY3Rpb24oY20uZG9jLCBzaW1wbGVTZWxlY3Rpb24oYW5jaG9yLCBoZWFkKSwgc2VsX2RvbnRTY3JvbGwpO1xuICAgICAgaWYgKGFuY2hvci5iYWQgfHwgaGVhZC5iYWQpIHsgY20uY3VyT3Auc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7IH1cbiAgICB9KTsgfVxuICB9O1xuXG4gIENvbnRlbnRFZGl0YWJsZUlucHV0LnByb3RvdHlwZS5wb2xsQ29udGVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5yZWFkRE9NVGltZW91dCAhPSBudWxsKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWFkRE9NVGltZW91dCk7XG4gICAgICB0aGlzLnJlYWRET01UaW1lb3V0ID0gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgY20gPSB0aGlzLmNtLCBkaXNwbGF5ID0gY20uZGlzcGxheSwgc2VsID0gY20uZG9jLnNlbC5wcmltYXJ5KCk7XG4gICAgdmFyIGZyb20gPSBzZWwuZnJvbSgpLCB0byA9IHNlbC50bygpO1xuICAgIGlmIChmcm9tLmNoID09IDAgJiYgZnJvbS5saW5lID4gY20uZmlyc3RMaW5lKCkpXG4gICAgICB7IGZyb20gPSBQb3MoZnJvbS5saW5lIC0gMSwgZ2V0TGluZShjbS5kb2MsIGZyb20ubGluZSAtIDEpLmxlbmd0aCk7IH1cbiAgICBpZiAodG8uY2ggPT0gZ2V0TGluZShjbS5kb2MsIHRvLmxpbmUpLnRleHQubGVuZ3RoICYmIHRvLmxpbmUgPCBjbS5sYXN0TGluZSgpKVxuICAgICAgeyB0byA9IFBvcyh0by5saW5lICsgMSwgMCk7IH1cbiAgICBpZiAoZnJvbS5saW5lIDwgZGlzcGxheS52aWV3RnJvbSB8fCB0by5saW5lID4gZGlzcGxheS52aWV3VG8gLSAxKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgICB2YXIgZnJvbUluZGV4LCBmcm9tTGluZSwgZnJvbU5vZGU7XG4gICAgaWYgKGZyb20ubGluZSA9PSBkaXNwbGF5LnZpZXdGcm9tIHx8IChmcm9tSW5kZXggPSBmaW5kVmlld0luZGV4KGNtLCBmcm9tLmxpbmUpKSA9PSAwKSB7XG4gICAgICBmcm9tTGluZSA9IGxpbmVObyhkaXNwbGF5LnZpZXdbMF0ubGluZSk7XG4gICAgICBmcm9tTm9kZSA9IGRpc3BsYXkudmlld1swXS5ub2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBmcm9tTGluZSA9IGxpbmVObyhkaXNwbGF5LnZpZXdbZnJvbUluZGV4XS5saW5lKTtcbiAgICAgIGZyb21Ob2RlID0gZGlzcGxheS52aWV3W2Zyb21JbmRleCAtIDFdLm5vZGUubmV4dFNpYmxpbmc7XG4gICAgfVxuICAgIHZhciB0b0luZGV4ID0gZmluZFZpZXdJbmRleChjbSwgdG8ubGluZSk7XG4gICAgdmFyIHRvTGluZSwgdG9Ob2RlO1xuICAgIGlmICh0b0luZGV4ID09IGRpc3BsYXkudmlldy5sZW5ndGggLSAxKSB7XG4gICAgICB0b0xpbmUgPSBkaXNwbGF5LnZpZXdUbyAtIDE7XG4gICAgICB0b05vZGUgPSBkaXNwbGF5LmxpbmVEaXYubGFzdENoaWxkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b0xpbmUgPSBsaW5lTm8oZGlzcGxheS52aWV3W3RvSW5kZXggKyAxXS5saW5lKSAtIDE7XG4gICAgICB0b05vZGUgPSBkaXNwbGF5LnZpZXdbdG9JbmRleCArIDFdLm5vZGUucHJldmlvdXNTaWJsaW5nO1xuICAgIH1cblxuICAgIGlmICghZnJvbU5vZGUpIHsgcmV0dXJuIGZhbHNlIH1cbiAgICB2YXIgbmV3VGV4dCA9IGNtLmRvYy5zcGxpdExpbmVzKGRvbVRleHRCZXR3ZWVuKGNtLCBmcm9tTm9kZSwgdG9Ob2RlLCBmcm9tTGluZSwgdG9MaW5lKSk7XG4gICAgdmFyIG9sZFRleHQgPSBnZXRCZXR3ZWVuKGNtLmRvYywgUG9zKGZyb21MaW5lLCAwKSwgUG9zKHRvTGluZSwgZ2V0TGluZShjbS5kb2MsIHRvTGluZSkudGV4dC5sZW5ndGgpKTtcbiAgICB3aGlsZSAobmV3VGV4dC5sZW5ndGggPiAxICYmIG9sZFRleHQubGVuZ3RoID4gMSkge1xuICAgICAgaWYgKGxzdChuZXdUZXh0KSA9PSBsc3Qob2xkVGV4dCkpIHsgbmV3VGV4dC5wb3AoKTsgb2xkVGV4dC5wb3AoKTsgdG9MaW5lLS07IH1cbiAgICAgIGVsc2UgaWYgKG5ld1RleHRbMF0gPT0gb2xkVGV4dFswXSkgeyBuZXdUZXh0LnNoaWZ0KCk7IG9sZFRleHQuc2hpZnQoKTsgZnJvbUxpbmUrKzsgfVxuICAgICAgZWxzZSB7IGJyZWFrIH1cbiAgICB9XG5cbiAgICB2YXIgY3V0RnJvbnQgPSAwLCBjdXRFbmQgPSAwO1xuICAgIHZhciBuZXdUb3AgPSBuZXdUZXh0WzBdLCBvbGRUb3AgPSBvbGRUZXh0WzBdLCBtYXhDdXRGcm9udCA9IE1hdGgubWluKG5ld1RvcC5sZW5ndGgsIG9sZFRvcC5sZW5ndGgpO1xuICAgIHdoaWxlIChjdXRGcm9udCA8IG1heEN1dEZyb250ICYmIG5ld1RvcC5jaGFyQ29kZUF0KGN1dEZyb250KSA9PSBvbGRUb3AuY2hhckNvZGVBdChjdXRGcm9udCkpXG4gICAgICB7ICsrY3V0RnJvbnQ7IH1cbiAgICB2YXIgbmV3Qm90ID0gbHN0KG5ld1RleHQpLCBvbGRCb3QgPSBsc3Qob2xkVGV4dCk7XG4gICAgdmFyIG1heEN1dEVuZCA9IE1hdGgubWluKG5ld0JvdC5sZW5ndGggLSAobmV3VGV4dC5sZW5ndGggPT0gMSA/IGN1dEZyb250IDogMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZEJvdC5sZW5ndGggLSAob2xkVGV4dC5sZW5ndGggPT0gMSA/IGN1dEZyb250IDogMCkpO1xuICAgIHdoaWxlIChjdXRFbmQgPCBtYXhDdXRFbmQgJiZcbiAgICAgICAgICAgbmV3Qm90LmNoYXJDb2RlQXQobmV3Qm90Lmxlbmd0aCAtIGN1dEVuZCAtIDEpID09IG9sZEJvdC5jaGFyQ29kZUF0KG9sZEJvdC5sZW5ndGggLSBjdXRFbmQgLSAxKSlcbiAgICAgIHsgKytjdXRFbmQ7IH1cbiAgICAvLyBUcnkgdG8gbW92ZSBzdGFydCBvZiBjaGFuZ2UgdG8gc3RhcnQgb2Ygc2VsZWN0aW9uIGlmIGFtYmlndW91c1xuICAgIGlmIChuZXdUZXh0Lmxlbmd0aCA9PSAxICYmIG9sZFRleHQubGVuZ3RoID09IDEgJiYgZnJvbUxpbmUgPT0gZnJvbS5saW5lKSB7XG4gICAgICB3aGlsZSAoY3V0RnJvbnQgJiYgY3V0RnJvbnQgPiBmcm9tLmNoICYmXG4gICAgICAgICAgICAgbmV3Qm90LmNoYXJDb2RlQXQobmV3Qm90Lmxlbmd0aCAtIGN1dEVuZCAtIDEpID09IG9sZEJvdC5jaGFyQ29kZUF0KG9sZEJvdC5sZW5ndGggLSBjdXRFbmQgLSAxKSkge1xuICAgICAgICBjdXRGcm9udC0tO1xuICAgICAgICBjdXRFbmQrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBuZXdUZXh0W25ld1RleHQubGVuZ3RoIC0gMV0gPSBuZXdCb3Quc2xpY2UoMCwgbmV3Qm90Lmxlbmd0aCAtIGN1dEVuZCkucmVwbGFjZSgvXlxcdTIwMGIrLywgXCJcIik7XG4gICAgbmV3VGV4dFswXSA9IG5ld1RleHRbMF0uc2xpY2UoY3V0RnJvbnQpLnJlcGxhY2UoL1xcdTIwMGIrJC8sIFwiXCIpO1xuXG4gICAgdmFyIGNoRnJvbSA9IFBvcyhmcm9tTGluZSwgY3V0RnJvbnQpO1xuICAgIHZhciBjaFRvID0gUG9zKHRvTGluZSwgb2xkVGV4dC5sZW5ndGggPyBsc3Qob2xkVGV4dCkubGVuZ3RoIC0gY3V0RW5kIDogMCk7XG4gICAgaWYgKG5ld1RleHQubGVuZ3RoID4gMSB8fCBuZXdUZXh0WzBdIHx8IGNtcChjaEZyb20sIGNoVG8pKSB7XG4gICAgICByZXBsYWNlUmFuZ2UoY20uZG9jLCBuZXdUZXh0LCBjaEZyb20sIGNoVG8sIFwiK2lucHV0XCIpO1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH07XG5cbiAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLmVuc3VyZVBvbGxlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZvcmNlQ29tcG9zaXRpb25FbmQoKTtcbiAgfTtcbiAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZm9yY2VDb21wb3NpdGlvbkVuZCgpO1xuICB9O1xuICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUuZm9yY2VDb21wb3NpdGlvbkVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuY29tcG9zaW5nKSB7IHJldHVybiB9XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMucmVhZERPTVRpbWVvdXQpO1xuICAgIHRoaXMuY29tcG9zaW5nID0gbnVsbDtcbiAgICB0aGlzLnVwZGF0ZUZyb21ET00oKTtcbiAgICB0aGlzLmRpdi5ibHVyKCk7XG4gICAgdGhpcy5kaXYuZm9jdXMoKTtcbiAgfTtcbiAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnJlYWRGcm9tRE9NU29vbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgaWYgKHRoaXMucmVhZERPTVRpbWVvdXQgIT0gbnVsbCkgeyByZXR1cm4gfVxuICAgIHRoaXMucmVhZERPTVRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMkMS5yZWFkRE9NVGltZW91dCA9IG51bGw7XG4gICAgICBpZiAodGhpcyQxLmNvbXBvc2luZykge1xuICAgICAgICBpZiAodGhpcyQxLmNvbXBvc2luZy5kb25lKSB7IHRoaXMkMS5jb21wb3NpbmcgPSBudWxsOyB9XG4gICAgICAgIGVsc2UgeyByZXR1cm4gfVxuICAgICAgfVxuICAgICAgdGhpcyQxLnVwZGF0ZUZyb21ET00oKTtcbiAgICB9LCA4MCk7XG4gIH07XG5cbiAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnVwZGF0ZUZyb21ET00gPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIGlmICh0aGlzLmNtLmlzUmVhZE9ubHkoKSB8fCAhdGhpcy5wb2xsQ29udGVudCgpKVxuICAgICAgeyBydW5Jbk9wKHRoaXMuY20sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlZ0NoYW5nZSh0aGlzJDEuY20pOyB9KTsgfVxuICB9O1xuXG4gIENvbnRlbnRFZGl0YWJsZUlucHV0LnByb3RvdHlwZS5zZXRVbmVkaXRhYmxlID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBub2RlLmNvbnRlbnRFZGl0YWJsZSA9IFwiZmFsc2VcIjtcbiAgfTtcblxuICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUub25LZXlQcmVzcyA9IGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKGUuY2hhckNvZGUgPT0gMCB8fCB0aGlzLmNvbXBvc2luZykgeyByZXR1cm4gfVxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoIXRoaXMuY20uaXNSZWFkT25seSgpKVxuICAgICAgeyBvcGVyYXRpb24odGhpcy5jbSwgYXBwbHlUZXh0SW5wdXQpKHRoaXMuY20sIFN0cmluZy5mcm9tQ2hhckNvZGUoZS5jaGFyQ29kZSA9PSBudWxsID8gZS5rZXlDb2RlIDogZS5jaGFyQ29kZSksIDApOyB9XG4gIH07XG5cbiAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnJlYWRPbmx5Q2hhbmdlZCA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICB0aGlzLmRpdi5jb250ZW50RWRpdGFibGUgPSBTdHJpbmcodmFsICE9IFwibm9jdXJzb3JcIik7XG4gIH07XG5cbiAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLm9uQ29udGV4dE1lbnUgPSBmdW5jdGlvbiAoKSB7fTtcbiAgQ29udGVudEVkaXRhYmxlSW5wdXQucHJvdG90eXBlLnJlc2V0UG9zaXRpb24gPSBmdW5jdGlvbiAoKSB7fTtcblxuICBDb250ZW50RWRpdGFibGVJbnB1dC5wcm90b3R5cGUubmVlZHNDb250ZW50QXR0cmlidXRlID0gdHJ1ZTtcblxuICBmdW5jdGlvbiBwb3NUb0RPTShjbSwgcG9zKSB7XG4gICAgdmFyIHZpZXcgPSBmaW5kVmlld0ZvckxpbmUoY20sIHBvcy5saW5lKTtcbiAgICBpZiAoIXZpZXcgfHwgdmlldy5oaWRkZW4pIHsgcmV0dXJuIG51bGwgfVxuICAgIHZhciBsaW5lID0gZ2V0TGluZShjbS5kb2MsIHBvcy5saW5lKTtcbiAgICB2YXIgaW5mbyA9IG1hcEZyb21MaW5lVmlldyh2aWV3LCBsaW5lLCBwb3MubGluZSk7XG5cbiAgICB2YXIgb3JkZXIgPSBnZXRPcmRlcihsaW5lLCBjbS5kb2MuZGlyZWN0aW9uKSwgc2lkZSA9IFwibGVmdFwiO1xuICAgIGlmIChvcmRlcikge1xuICAgICAgdmFyIHBhcnRQb3MgPSBnZXRCaWRpUGFydEF0KG9yZGVyLCBwb3MuY2gpO1xuICAgICAgc2lkZSA9IHBhcnRQb3MgJSAyID8gXCJyaWdodFwiIDogXCJsZWZ0XCI7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBub2RlQW5kT2Zmc2V0SW5MaW5lTWFwKGluZm8ubWFwLCBwb3MuY2gsIHNpZGUpO1xuICAgIHJlc3VsdC5vZmZzZXQgPSByZXN1bHQuY29sbGFwc2UgPT0gXCJyaWdodFwiID8gcmVzdWx0LmVuZCA6IHJlc3VsdC5zdGFydDtcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBmdW5jdGlvbiBpc0luR3V0dGVyKG5vZGUpIHtcbiAgICBmb3IgKHZhciBzY2FuID0gbm9kZTsgc2Nhbjsgc2NhbiA9IHNjYW4ucGFyZW50Tm9kZSlcbiAgICAgIHsgaWYgKC9Db2RlTWlycm9yLWd1dHRlci13cmFwcGVyLy50ZXN0KHNjYW4uY2xhc3NOYW1lKSkgeyByZXR1cm4gdHJ1ZSB9IH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGZ1bmN0aW9uIGJhZFBvcyhwb3MsIGJhZCkgeyBpZiAoYmFkKSB7IHBvcy5iYWQgPSB0cnVlOyB9IHJldHVybiBwb3MgfVxuXG4gIGZ1bmN0aW9uIGRvbVRleHRCZXR3ZWVuKGNtLCBmcm9tLCB0bywgZnJvbUxpbmUsIHRvTGluZSkge1xuICAgIHZhciB0ZXh0ID0gXCJcIiwgY2xvc2luZyA9IGZhbHNlLCBsaW5lU2VwID0gY20uZG9jLmxpbmVTZXBhcmF0b3IoKSwgZXh0cmFMaW5lYnJlYWsgPSBmYWxzZTtcbiAgICBmdW5jdGlvbiByZWNvZ25pemVNYXJrZXIoaWQpIHsgcmV0dXJuIGZ1bmN0aW9uIChtYXJrZXIpIHsgcmV0dXJuIG1hcmtlci5pZCA9PSBpZDsgfSB9XG4gICAgZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICBpZiAoY2xvc2luZykge1xuICAgICAgICB0ZXh0ICs9IGxpbmVTZXA7XG4gICAgICAgIGlmIChleHRyYUxpbmVicmVhaykgeyB0ZXh0ICs9IGxpbmVTZXA7IH1cbiAgICAgICAgY2xvc2luZyA9IGV4dHJhTGluZWJyZWFrID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFkZFRleHQoc3RyKSB7XG4gICAgICBpZiAoc3RyKSB7XG4gICAgICAgIGNsb3NlKCk7XG4gICAgICAgIHRleHQgKz0gc3RyO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB3YWxrKG5vZGUpIHtcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEpIHtcbiAgICAgICAgdmFyIGNtVGV4dCA9IG5vZGUuZ2V0QXR0cmlidXRlKFwiY20tdGV4dFwiKTtcbiAgICAgICAgaWYgKGNtVGV4dCkge1xuICAgICAgICAgIGFkZFRleHQoY21UZXh0KTtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICB2YXIgbWFya2VySUQgPSBub2RlLmdldEF0dHJpYnV0ZShcImNtLW1hcmtlclwiKSwgcmFuZ2U7XG4gICAgICAgIGlmIChtYXJrZXJJRCkge1xuICAgICAgICAgIHZhciBmb3VuZCA9IGNtLmZpbmRNYXJrcyhQb3MoZnJvbUxpbmUsIDApLCBQb3ModG9MaW5lICsgMSwgMCksIHJlY29nbml6ZU1hcmtlcigrbWFya2VySUQpKTtcbiAgICAgICAgICBpZiAoZm91bmQubGVuZ3RoICYmIChyYW5nZSA9IGZvdW5kWzBdLmZpbmQoMCkpKVxuICAgICAgICAgICAgeyBhZGRUZXh0KGdldEJldHdlZW4oY20uZG9jLCByYW5nZS5mcm9tLCByYW5nZS50bykuam9pbihsaW5lU2VwKSk7IH1cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5nZXRBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIikgPT0gXCJmYWxzZVwiKSB7IHJldHVybiB9XG4gICAgICAgIHZhciBpc0Jsb2NrID0gL14ocHJlfGRpdnxwfGxpfHRhYmxlfGJyKSQvaS50ZXN0KG5vZGUubm9kZU5hbWUpO1xuICAgICAgICBpZiAoIS9eYnIkL2kudGVzdChub2RlLm5vZGVOYW1lKSAmJiBub2RlLnRleHRDb250ZW50Lmxlbmd0aCA9PSAwKSB7IHJldHVybiB9XG5cbiAgICAgICAgaWYgKGlzQmxvY2spIHsgY2xvc2UoKTsgfVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKylcbiAgICAgICAgICB7IHdhbGsobm9kZS5jaGlsZE5vZGVzW2ldKTsgfVxuXG4gICAgICAgIGlmICgvXihwcmV8cCkkL2kudGVzdChub2RlLm5vZGVOYW1lKSkgeyBleHRyYUxpbmVicmVhayA9IHRydWU7IH1cbiAgICAgICAgaWYgKGlzQmxvY2spIHsgY2xvc2luZyA9IHRydWU7IH1cbiAgICAgIH0gZWxzZSBpZiAobm9kZS5ub2RlVHlwZSA9PSAzKSB7XG4gICAgICAgIGFkZFRleHQobm9kZS5ub2RlVmFsdWUucmVwbGFjZSgvXFx1MjAwYi9nLCBcIlwiKS5yZXBsYWNlKC9cXHUwMGEwL2csIFwiIFwiKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoOzspIHtcbiAgICAgIHdhbGsoZnJvbSk7XG4gICAgICBpZiAoZnJvbSA9PSB0bykgeyBicmVhayB9XG4gICAgICBmcm9tID0gZnJvbS5uZXh0U2libGluZztcbiAgICAgIGV4dHJhTGluZWJyZWFrID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0ZXh0XG4gIH1cblxuICBmdW5jdGlvbiBkb21Ub1BvcyhjbSwgbm9kZSwgb2Zmc2V0KSB7XG4gICAgdmFyIGxpbmVOb2RlO1xuICAgIGlmIChub2RlID09IGNtLmRpc3BsYXkubGluZURpdikge1xuICAgICAgbGluZU5vZGUgPSBjbS5kaXNwbGF5LmxpbmVEaXYuY2hpbGROb2Rlc1tvZmZzZXRdO1xuICAgICAgaWYgKCFsaW5lTm9kZSkgeyByZXR1cm4gYmFkUG9zKGNtLmNsaXBQb3MoUG9zKGNtLmRpc3BsYXkudmlld1RvIC0gMSkpLCB0cnVlKSB9XG4gICAgICBub2RlID0gbnVsbDsgb2Zmc2V0ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsaW5lTm9kZSA9IG5vZGU7OyBsaW5lTm9kZSA9IGxpbmVOb2RlLnBhcmVudE5vZGUpIHtcbiAgICAgICAgaWYgKCFsaW5lTm9kZSB8fCBsaW5lTm9kZSA9PSBjbS5kaXNwbGF5LmxpbmVEaXYpIHsgcmV0dXJuIG51bGwgfVxuICAgICAgICBpZiAobGluZU5vZGUucGFyZW50Tm9kZSAmJiBsaW5lTm9kZS5wYXJlbnROb2RlID09IGNtLmRpc3BsYXkubGluZURpdikgeyBicmVhayB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY20uZGlzcGxheS52aWV3Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbGluZVZpZXcgPSBjbS5kaXNwbGF5LnZpZXdbaV07XG4gICAgICBpZiAobGluZVZpZXcubm9kZSA9PSBsaW5lTm9kZSlcbiAgICAgICAgeyByZXR1cm4gbG9jYXRlTm9kZUluTGluZVZpZXcobGluZVZpZXcsIG5vZGUsIG9mZnNldCkgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxvY2F0ZU5vZGVJbkxpbmVWaWV3KGxpbmVWaWV3LCBub2RlLCBvZmZzZXQpIHtcbiAgICB2YXIgd3JhcHBlciA9IGxpbmVWaWV3LnRleHQuZmlyc3RDaGlsZCwgYmFkID0gZmFsc2U7XG4gICAgaWYgKCFub2RlIHx8ICFjb250YWlucyh3cmFwcGVyLCBub2RlKSkgeyByZXR1cm4gYmFkUG9zKFBvcyhsaW5lTm8obGluZVZpZXcubGluZSksIDApLCB0cnVlKSB9XG4gICAgaWYgKG5vZGUgPT0gd3JhcHBlcikge1xuICAgICAgYmFkID0gdHJ1ZTtcbiAgICAgIG5vZGUgPSB3cmFwcGVyLmNoaWxkTm9kZXNbb2Zmc2V0XTtcbiAgICAgIG9mZnNldCA9IDA7XG4gICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgdmFyIGxpbmUgPSBsaW5lVmlldy5yZXN0ID8gbHN0KGxpbmVWaWV3LnJlc3QpIDogbGluZVZpZXcubGluZTtcbiAgICAgICAgcmV0dXJuIGJhZFBvcyhQb3MobGluZU5vKGxpbmUpLCBsaW5lLnRleHQubGVuZ3RoKSwgYmFkKVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciB0ZXh0Tm9kZSA9IG5vZGUubm9kZVR5cGUgPT0gMyA/IG5vZGUgOiBudWxsLCB0b3BOb2RlID0gbm9kZTtcbiAgICBpZiAoIXRleHROb2RlICYmIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGggPT0gMSAmJiBub2RlLmZpcnN0Q2hpbGQubm9kZVR5cGUgPT0gMykge1xuICAgICAgdGV4dE5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7XG4gICAgICBpZiAob2Zmc2V0KSB7IG9mZnNldCA9IHRleHROb2RlLm5vZGVWYWx1ZS5sZW5ndGg7IH1cbiAgICB9XG4gICAgd2hpbGUgKHRvcE5vZGUucGFyZW50Tm9kZSAhPSB3cmFwcGVyKSB7IHRvcE5vZGUgPSB0b3BOb2RlLnBhcmVudE5vZGU7IH1cbiAgICB2YXIgbWVhc3VyZSA9IGxpbmVWaWV3Lm1lYXN1cmUsIG1hcHMgPSBtZWFzdXJlLm1hcHM7XG5cbiAgICBmdW5jdGlvbiBmaW5kKHRleHROb2RlLCB0b3BOb2RlLCBvZmZzZXQpIHtcbiAgICAgIGZvciAodmFyIGkgPSAtMTsgaSA8IChtYXBzID8gbWFwcy5sZW5ndGggOiAwKTsgaSsrKSB7XG4gICAgICAgIHZhciBtYXAgPSBpIDwgMCA/IG1lYXN1cmUubWFwIDogbWFwc1tpXTtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtYXAubGVuZ3RoOyBqICs9IDMpIHtcbiAgICAgICAgICB2YXIgY3VyTm9kZSA9IG1hcFtqICsgMl07XG4gICAgICAgICAgaWYgKGN1ck5vZGUgPT0gdGV4dE5vZGUgfHwgY3VyTm9kZSA9PSB0b3BOb2RlKSB7XG4gICAgICAgICAgICB2YXIgbGluZSA9IGxpbmVObyhpIDwgMCA/IGxpbmVWaWV3LmxpbmUgOiBsaW5lVmlldy5yZXN0W2ldKTtcbiAgICAgICAgICAgIHZhciBjaCA9IG1hcFtqXSArIG9mZnNldDtcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IGN1ck5vZGUgIT0gdGV4dE5vZGUpIHsgY2ggPSBtYXBbaiArIChvZmZzZXQgPyAxIDogMCldOyB9XG4gICAgICAgICAgICByZXR1cm4gUG9zKGxpbmUsIGNoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB2YXIgZm91bmQgPSBmaW5kKHRleHROb2RlLCB0b3BOb2RlLCBvZmZzZXQpO1xuICAgIGlmIChmb3VuZCkgeyByZXR1cm4gYmFkUG9zKGZvdW5kLCBiYWQpIH1cblxuICAgIC8vIEZJWE1FIHRoaXMgaXMgYWxsIHJlYWxseSBzaGFreS4gbWlnaHQgaGFuZGxlIHRoZSBmZXcgY2FzZXMgaXQgbmVlZHMgdG8gaGFuZGxlLCBidXQgbGlrZWx5IHRvIGNhdXNlIHByb2JsZW1zXG4gICAgZm9yICh2YXIgYWZ0ZXIgPSB0b3BOb2RlLm5leHRTaWJsaW5nLCBkaXN0ID0gdGV4dE5vZGUgPyB0ZXh0Tm9kZS5ub2RlVmFsdWUubGVuZ3RoIC0gb2Zmc2V0IDogMDsgYWZ0ZXI7IGFmdGVyID0gYWZ0ZXIubmV4dFNpYmxpbmcpIHtcbiAgICAgIGZvdW5kID0gZmluZChhZnRlciwgYWZ0ZXIuZmlyc3RDaGlsZCwgMCk7XG4gICAgICBpZiAoZm91bmQpXG4gICAgICAgIHsgcmV0dXJuIGJhZFBvcyhQb3MoZm91bmQubGluZSwgZm91bmQuY2ggLSBkaXN0KSwgYmFkKSB9XG4gICAgICBlbHNlXG4gICAgICAgIHsgZGlzdCArPSBhZnRlci50ZXh0Q29udGVudC5sZW5ndGg7IH1cbiAgICB9XG4gICAgZm9yICh2YXIgYmVmb3JlID0gdG9wTm9kZS5wcmV2aW91c1NpYmxpbmcsIGRpc3QkMSA9IG9mZnNldDsgYmVmb3JlOyBiZWZvcmUgPSBiZWZvcmUucHJldmlvdXNTaWJsaW5nKSB7XG4gICAgICBmb3VuZCA9IGZpbmQoYmVmb3JlLCBiZWZvcmUuZmlyc3RDaGlsZCwgLTEpO1xuICAgICAgaWYgKGZvdW5kKVxuICAgICAgICB7IHJldHVybiBiYWRQb3MoUG9zKGZvdW5kLmxpbmUsIGZvdW5kLmNoICsgZGlzdCQxKSwgYmFkKSB9XG4gICAgICBlbHNlXG4gICAgICAgIHsgZGlzdCQxICs9IGJlZm9yZS50ZXh0Q29udGVudC5sZW5ndGg7IH1cbiAgICB9XG4gIH1cblxuICAvLyBURVhUQVJFQSBJTlBVVCBTVFlMRVxuXG4gIHZhciBUZXh0YXJlYUlucHV0ID0gZnVuY3Rpb24oY20pIHtcbiAgICB0aGlzLmNtID0gY207XG4gICAgLy8gU2VlIGlucHV0LnBvbGwgYW5kIGlucHV0LnJlc2V0XG4gICAgdGhpcy5wcmV2SW5wdXQgPSBcIlwiO1xuXG4gICAgLy8gRmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHdlIGV4cGVjdCBpbnB1dCB0byBhcHBlYXIgcmVhbCBzb29uXG4gICAgLy8gbm93IChhZnRlciBzb21lIGV2ZW50IGxpa2UgJ2tleXByZXNzJyBvciAnaW5wdXQnKSBhbmQgYXJlXG4gICAgLy8gcG9sbGluZyBpbnRlbnNpdmVseS5cbiAgICB0aGlzLnBvbGxpbmdGYXN0ID0gZmFsc2U7XG4gICAgLy8gU2VsZi1yZXNldHRpbmcgdGltZW91dCBmb3IgdGhlIHBvbGxlclxuICAgIHRoaXMucG9sbGluZyA9IG5ldyBEZWxheWVkKCk7XG4gICAgLy8gVXNlZCB0byB3b3JrIGFyb3VuZCBJRSBpc3N1ZSB3aXRoIHNlbGVjdGlvbiBiZWluZyBmb3Jnb3R0ZW4gd2hlbiBmb2N1cyBtb3ZlcyBhd2F5IGZyb20gdGV4dGFyZWFcbiAgICB0aGlzLmhhc1NlbGVjdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuY29tcG9zaW5nID0gbnVsbDtcbiAgfTtcblxuICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKGRpc3BsYXkpIHtcbiAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIGlucHV0ID0gdGhpcywgY20gPSB0aGlzLmNtO1xuICAgIHRoaXMuY3JlYXRlRmllbGQoZGlzcGxheSk7XG4gICAgdmFyIHRlID0gdGhpcy50ZXh0YXJlYTtcblxuICAgIGRpc3BsYXkud3JhcHBlci5pbnNlcnRCZWZvcmUodGhpcy53cmFwcGVyLCBkaXNwbGF5LndyYXBwZXIuZmlyc3RDaGlsZCk7XG5cbiAgICAvLyBOZWVkZWQgdG8gaGlkZSBiaWcgYmx1ZSBibGlua2luZyBjdXJzb3Igb24gTW9iaWxlIFNhZmFyaSAoZG9lc24ndCBzZWVtIHRvIHdvcmsgaW4gaU9TIDggYW55bW9yZSlcbiAgICBpZiAoaW9zKSB7IHRlLnN0eWxlLndpZHRoID0gXCIwcHhcIjsgfVxuXG4gICAgb24odGUsIFwiaW5wdXRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGllICYmIGllX3ZlcnNpb24gPj0gOSAmJiB0aGlzJDEuaGFzU2VsZWN0aW9uKSB7IHRoaXMkMS5oYXNTZWxlY3Rpb24gPSBudWxsOyB9XG4gICAgICBpbnB1dC5wb2xsKCk7XG4gICAgfSk7XG5cbiAgICBvbih0ZSwgXCJwYXN0ZVwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKHNpZ25hbERPTUV2ZW50KGNtLCBlKSB8fCBoYW5kbGVQYXN0ZShlLCBjbSkpIHsgcmV0dXJuIH1cblxuICAgICAgY20uc3RhdGUucGFzdGVJbmNvbWluZyA9ICtuZXcgRGF0ZTtcbiAgICAgIGlucHV0LmZhc3RQb2xsKCk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBwcmVwYXJlQ29weUN1dChlKSB7XG4gICAgICBpZiAoc2lnbmFsRE9NRXZlbnQoY20sIGUpKSB7IHJldHVybiB9XG4gICAgICBpZiAoY20uc29tZXRoaW5nU2VsZWN0ZWQoKSkge1xuICAgICAgICBzZXRMYXN0Q29waWVkKHtsaW5lV2lzZTogZmFsc2UsIHRleHQ6IGNtLmdldFNlbGVjdGlvbnMoKX0pO1xuICAgICAgfSBlbHNlIGlmICghY20ub3B0aW9ucy5saW5lV2lzZUNvcHlDdXQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmFuZ2VzID0gY29weWFibGVSYW5nZXMoY20pO1xuICAgICAgICBzZXRMYXN0Q29waWVkKHtsaW5lV2lzZTogdHJ1ZSwgdGV4dDogcmFuZ2VzLnRleHR9KTtcbiAgICAgICAgaWYgKGUudHlwZSA9PSBcImN1dFwiKSB7XG4gICAgICAgICAgY20uc2V0U2VsZWN0aW9ucyhyYW5nZXMucmFuZ2VzLCBudWxsLCBzZWxfZG9udFNjcm9sbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5wdXQucHJldklucHV0ID0gXCJcIjtcbiAgICAgICAgICB0ZS52YWx1ZSA9IHJhbmdlcy50ZXh0LmpvaW4oXCJcXG5cIik7XG4gICAgICAgICAgc2VsZWN0SW5wdXQodGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZS50eXBlID09IFwiY3V0XCIpIHsgY20uc3RhdGUuY3V0SW5jb21pbmcgPSArbmV3IERhdGU7IH1cbiAgICB9XG4gICAgb24odGUsIFwiY3V0XCIsIHByZXBhcmVDb3B5Q3V0KTtcbiAgICBvbih0ZSwgXCJjb3B5XCIsIHByZXBhcmVDb3B5Q3V0KTtcblxuICAgIG9uKGRpc3BsYXkuc2Nyb2xsZXIsIFwicGFzdGVcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChldmVudEluV2lkZ2V0KGRpc3BsYXksIGUpIHx8IHNpZ25hbERPTUV2ZW50KGNtLCBlKSkgeyByZXR1cm4gfVxuICAgICAgaWYgKCF0ZS5kaXNwYXRjaEV2ZW50KSB7XG4gICAgICAgIGNtLnN0YXRlLnBhc3RlSW5jb21pbmcgPSArbmV3IERhdGU7XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBQYXNzIHRoZSBgcGFzdGVgIGV2ZW50IHRvIHRoZSB0ZXh0YXJlYSBzbyBpdCdzIGhhbmRsZWQgYnkgaXRzIGV2ZW50IGxpc3RlbmVyLlxuICAgICAgdmFyIGV2ZW50ID0gbmV3IEV2ZW50KFwicGFzdGVcIik7XG4gICAgICBldmVudC5jbGlwYm9hcmREYXRhID0gZS5jbGlwYm9hcmREYXRhO1xuICAgICAgdGUuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgfSk7XG5cbiAgICAvLyBQcmV2ZW50IG5vcm1hbCBzZWxlY3Rpb24gaW4gdGhlIGVkaXRvciAod2UgaGFuZGxlIG91ciBvd24pXG4gICAgb24oZGlzcGxheS5saW5lU3BhY2UsIFwic2VsZWN0c3RhcnRcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmICghZXZlbnRJbldpZGdldChkaXNwbGF5LCBlKSkgeyBlX3ByZXZlbnREZWZhdWx0KGUpOyB9XG4gICAgfSk7XG5cbiAgICBvbih0ZSwgXCJjb21wb3NpdGlvbnN0YXJ0XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzdGFydCA9IGNtLmdldEN1cnNvcihcImZyb21cIik7XG4gICAgICBpZiAoaW5wdXQuY29tcG9zaW5nKSB7IGlucHV0LmNvbXBvc2luZy5yYW5nZS5jbGVhcigpOyB9XG4gICAgICBpbnB1dC5jb21wb3NpbmcgPSB7XG4gICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgcmFuZ2U6IGNtLm1hcmtUZXh0KHN0YXJ0LCBjbS5nZXRDdXJzb3IoXCJ0b1wiKSwge2NsYXNzTmFtZTogXCJDb2RlTWlycm9yLWNvbXBvc2luZ1wifSlcbiAgICAgIH07XG4gICAgfSk7XG4gICAgb24odGUsIFwiY29tcG9zaXRpb25lbmRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGlucHV0LmNvbXBvc2luZykge1xuICAgICAgICBpbnB1dC5wb2xsKCk7XG4gICAgICAgIGlucHV0LmNvbXBvc2luZy5yYW5nZS5jbGVhcigpO1xuICAgICAgICBpbnB1dC5jb21wb3NpbmcgPSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIFRleHRhcmVhSW5wdXQucHJvdG90eXBlLmNyZWF0ZUZpZWxkID0gZnVuY3Rpb24gKF9kaXNwbGF5KSB7XG4gICAgLy8gV3JhcHMgYW5kIGhpZGVzIGlucHV0IHRleHRhcmVhXG4gICAgdGhpcy53cmFwcGVyID0gaGlkZGVuVGV4dGFyZWEoKTtcbiAgICAvLyBUaGUgc2VtaWhpZGRlbiB0ZXh0YXJlYSB0aGF0IGlzIGZvY3VzZWQgd2hlbiB0aGUgZWRpdG9yIGlzXG4gICAgLy8gZm9jdXNlZCwgYW5kIHJlY2VpdmVzIGlucHV0LlxuICAgIHRoaXMudGV4dGFyZWEgPSB0aGlzLndyYXBwZXIuZmlyc3RDaGlsZDtcbiAgfTtcblxuICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5zY3JlZW5SZWFkZXJMYWJlbENoYW5nZWQgPSBmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAvLyBMYWJlbCBmb3Igc2NyZWVucmVhZGVycywgYWNjZXNzaWJpbGl0eVxuICAgIGlmKGxhYmVsKSB7XG4gICAgICB0aGlzLnRleHRhcmVhLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIGxhYmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZXh0YXJlYS5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKTtcbiAgICB9XG4gIH07XG5cbiAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUucHJlcGFyZVNlbGVjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBSZWRyYXcgdGhlIHNlbGVjdGlvbiBhbmQvb3IgY3Vyc29yXG4gICAgdmFyIGNtID0gdGhpcy5jbSwgZGlzcGxheSA9IGNtLmRpc3BsYXksIGRvYyA9IGNtLmRvYztcbiAgICB2YXIgcmVzdWx0ID0gcHJlcGFyZVNlbGVjdGlvbihjbSk7XG5cbiAgICAvLyBNb3ZlIHRoZSBoaWRkZW4gdGV4dGFyZWEgbmVhciB0aGUgY3Vyc29yIHRvIHByZXZlbnQgc2Nyb2xsaW5nIGFydGlmYWN0c1xuICAgIGlmIChjbS5vcHRpb25zLm1vdmVJbnB1dFdpdGhDdXJzb3IpIHtcbiAgICAgIHZhciBoZWFkUG9zID0gY3Vyc29yQ29vcmRzKGNtLCBkb2Muc2VsLnByaW1hcnkoKS5oZWFkLCBcImRpdlwiKTtcbiAgICAgIHZhciB3cmFwT2ZmID0gZGlzcGxheS53cmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCBsaW5lT2ZmID0gZGlzcGxheS5saW5lRGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgcmVzdWx0LnRlVG9wID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oZGlzcGxheS53cmFwcGVyLmNsaWVudEhlaWdodCAtIDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZFBvcy50b3AgKyBsaW5lT2ZmLnRvcCAtIHdyYXBPZmYudG9wKSk7XG4gICAgICByZXN1bHQudGVMZWZ0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oZGlzcGxheS53cmFwcGVyLmNsaWVudFdpZHRoIC0gMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZFBvcy5sZWZ0ICsgbGluZU9mZi5sZWZ0IC0gd3JhcE9mZi5sZWZ0KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9O1xuXG4gIFRleHRhcmVhSW5wdXQucHJvdG90eXBlLnNob3dTZWxlY3Rpb24gPSBmdW5jdGlvbiAoZHJhd24pIHtcbiAgICB2YXIgY20gPSB0aGlzLmNtLCBkaXNwbGF5ID0gY20uZGlzcGxheTtcbiAgICByZW1vdmVDaGlsZHJlbkFuZEFkZChkaXNwbGF5LmN1cnNvckRpdiwgZHJhd24uY3Vyc29ycyk7XG4gICAgcmVtb3ZlQ2hpbGRyZW5BbmRBZGQoZGlzcGxheS5zZWxlY3Rpb25EaXYsIGRyYXduLnNlbGVjdGlvbik7XG4gICAgaWYgKGRyYXduLnRlVG9wICE9IG51bGwpIHtcbiAgICAgIHRoaXMud3JhcHBlci5zdHlsZS50b3AgPSBkcmF3bi50ZVRvcCArIFwicHhcIjtcbiAgICAgIHRoaXMud3JhcHBlci5zdHlsZS5sZWZ0ID0gZHJhd24udGVMZWZ0ICsgXCJweFwiO1xuICAgIH1cbiAgfTtcblxuICAvLyBSZXNldCB0aGUgaW5wdXQgdG8gY29ycmVzcG9uZCB0byB0aGUgc2VsZWN0aW9uIChvciB0byBiZSBlbXB0eSxcbiAgLy8gd2hlbiBub3QgdHlwaW5nIGFuZCBub3RoaW5nIGlzIHNlbGVjdGVkKVxuICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICh0eXBpbmcpIHtcbiAgICBpZiAodGhpcy5jb250ZXh0TWVudVBlbmRpbmcgfHwgdGhpcy5jb21wb3NpbmcpIHsgcmV0dXJuIH1cbiAgICB2YXIgY20gPSB0aGlzLmNtO1xuICAgIGlmIChjbS5zb21ldGhpbmdTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLnByZXZJbnB1dCA9IFwiXCI7XG4gICAgICB2YXIgY29udGVudCA9IGNtLmdldFNlbGVjdGlvbigpO1xuICAgICAgdGhpcy50ZXh0YXJlYS52YWx1ZSA9IGNvbnRlbnQ7XG4gICAgICBpZiAoY20uc3RhdGUuZm9jdXNlZCkgeyBzZWxlY3RJbnB1dCh0aGlzLnRleHRhcmVhKTsgfVxuICAgICAgaWYgKGllICYmIGllX3ZlcnNpb24gPj0gOSkgeyB0aGlzLmhhc1NlbGVjdGlvbiA9IGNvbnRlbnQ7IH1cbiAgICB9IGVsc2UgaWYgKCF0eXBpbmcpIHtcbiAgICAgIHRoaXMucHJldklucHV0ID0gdGhpcy50ZXh0YXJlYS52YWx1ZSA9IFwiXCI7XG4gICAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA+PSA5KSB7IHRoaXMuaGFzU2VsZWN0aW9uID0gbnVsbDsgfVxuICAgIH1cbiAgfTtcblxuICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5nZXRGaWVsZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMudGV4dGFyZWEgfTtcblxuICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5zdXBwb3J0c1RvdWNoID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZmFsc2UgfTtcblxuICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5mb2N1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5jbS5vcHRpb25zLnJlYWRPbmx5ICE9IFwibm9jdXJzb3JcIiAmJiAoIW1vYmlsZSB8fCBhY3RpdmVFbHQoKSAhPSB0aGlzLnRleHRhcmVhKSkge1xuICAgICAgdHJ5IHsgdGhpcy50ZXh0YXJlYS5mb2N1cygpOyB9XG4gICAgICBjYXRjaCAoZSkge30gLy8gSUU4IHdpbGwgdGhyb3cgaWYgdGhlIHRleHRhcmVhIGlzIGRpc3BsYXk6IG5vbmUgb3Igbm90IGluIERPTVxuICAgIH1cbiAgfTtcblxuICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5ibHVyID0gZnVuY3Rpb24gKCkgeyB0aGlzLnRleHRhcmVhLmJsdXIoKTsgfTtcblxuICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5yZXNldFBvc2l0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMud3JhcHBlci5zdHlsZS50b3AgPSB0aGlzLndyYXBwZXIuc3R5bGUubGVmdCA9IDA7XG4gIH07XG5cbiAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUucmVjZWl2ZWRGb2N1cyA9IGZ1bmN0aW9uICgpIHsgdGhpcy5zbG93UG9sbCgpOyB9O1xuXG4gIC8vIFBvbGwgZm9yIGlucHV0IGNoYW5nZXMsIHVzaW5nIHRoZSBub3JtYWwgcmF0ZSBvZiBwb2xsaW5nLiBUaGlzXG4gIC8vIHJ1bnMgYXMgbG9uZyBhcyB0aGUgZWRpdG9yIGlzIGZvY3VzZWQuXG4gIFRleHRhcmVhSW5wdXQucHJvdG90eXBlLnNsb3dQb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICBpZiAodGhpcy5wb2xsaW5nRmFzdCkgeyByZXR1cm4gfVxuICAgIHRoaXMucG9sbGluZy5zZXQodGhpcy5jbS5vcHRpb25zLnBvbGxJbnRlcnZhbCwgZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcyQxLnBvbGwoKTtcbiAgICAgIGlmICh0aGlzJDEuY20uc3RhdGUuZm9jdXNlZCkgeyB0aGlzJDEuc2xvd1BvbGwoKTsgfVxuICAgIH0pO1xuICB9O1xuXG4gIC8vIFdoZW4gYW4gZXZlbnQgaGFzIGp1c3QgY29tZSBpbiB0aGF0IGlzIGxpa2VseSB0byBhZGQgb3IgY2hhbmdlXG4gIC8vIHNvbWV0aGluZyBpbiB0aGUgaW5wdXQgdGV4dGFyZWEsIHdlIHBvbGwgZmFzdGVyLCB0byBlbnN1cmUgdGhhdFxuICAvLyB0aGUgY2hhbmdlIGFwcGVhcnMgb24gdGhlIHNjcmVlbiBxdWlja2x5LlxuICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5mYXN0UG9sbCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWlzc2VkID0gZmFsc2UsIGlucHV0ID0gdGhpcztcbiAgICBpbnB1dC5wb2xsaW5nRmFzdCA9IHRydWU7XG4gICAgZnVuY3Rpb24gcCgpIHtcbiAgICAgIHZhciBjaGFuZ2VkID0gaW5wdXQucG9sbCgpO1xuICAgICAgaWYgKCFjaGFuZ2VkICYmICFtaXNzZWQpIHttaXNzZWQgPSB0cnVlOyBpbnB1dC5wb2xsaW5nLnNldCg2MCwgcCk7fVxuICAgICAgZWxzZSB7aW5wdXQucG9sbGluZ0Zhc3QgPSBmYWxzZTsgaW5wdXQuc2xvd1BvbGwoKTt9XG4gICAgfVxuICAgIGlucHV0LnBvbGxpbmcuc2V0KDIwLCBwKTtcbiAgfTtcblxuICAvLyBSZWFkIGlucHV0IGZyb20gdGhlIHRleHRhcmVhLCBhbmQgdXBkYXRlIHRoZSBkb2N1bWVudCB0byBtYXRjaC5cbiAgLy8gV2hlbiBzb21ldGhpbmcgaXMgc2VsZWN0ZWQsIGl0IGlzIHByZXNlbnQgaW4gdGhlIHRleHRhcmVhLCBhbmRcbiAgLy8gc2VsZWN0ZWQgKHVubGVzcyBpdCBpcyBodWdlLCBpbiB3aGljaCBjYXNlIGEgcGxhY2Vob2xkZXIgaXNcbiAgLy8gdXNlZCkuIFdoZW4gbm90aGluZyBpcyBzZWxlY3RlZCwgdGhlIGN1cnNvciBzaXRzIGFmdGVyIHByZXZpb3VzbHlcbiAgLy8gc2VlbiB0ZXh0IChjYW4gYmUgZW1wdHkpLCB3aGljaCBpcyBzdG9yZWQgaW4gcHJldklucHV0ICh3ZSBtdXN0XG4gIC8vIG5vdCByZXNldCB0aGUgdGV4dGFyZWEgd2hlbiB0eXBpbmcsIGJlY2F1c2UgdGhhdCBicmVha3MgSU1FKS5cbiAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUucG9sbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIGNtID0gdGhpcy5jbSwgaW5wdXQgPSB0aGlzLnRleHRhcmVhLCBwcmV2SW5wdXQgPSB0aGlzLnByZXZJbnB1dDtcbiAgICAvLyBTaW5jZSB0aGlzIGlzIGNhbGxlZCBhICpsb3QqLCB0cnkgdG8gYmFpbCBvdXQgYXMgY2hlYXBseSBhc1xuICAgIC8vIHBvc3NpYmxlIHdoZW4gaXQgaXMgY2xlYXIgdGhhdCBub3RoaW5nIGhhcHBlbmVkLiBoYXNTZWxlY3Rpb25cbiAgICAvLyB3aWxsIGJlIHRoZSBjYXNlIHdoZW4gdGhlcmUgaXMgYSBsb3Qgb2YgdGV4dCBpbiB0aGUgdGV4dGFyZWEsXG4gICAgLy8gaW4gd2hpY2ggY2FzZSByZWFkaW5nIGl0cyB2YWx1ZSB3b3VsZCBiZSBleHBlbnNpdmUuXG4gICAgaWYgKHRoaXMuY29udGV4dE1lbnVQZW5kaW5nIHx8ICFjbS5zdGF0ZS5mb2N1c2VkIHx8XG4gICAgICAgIChoYXNTZWxlY3Rpb24oaW5wdXQpICYmICFwcmV2SW5wdXQgJiYgIXRoaXMuY29tcG9zaW5nKSB8fFxuICAgICAgICBjbS5pc1JlYWRPbmx5KCkgfHwgY20ub3B0aW9ucy5kaXNhYmxlSW5wdXQgfHwgY20uc3RhdGUua2V5U2VxKVxuICAgICAgeyByZXR1cm4gZmFsc2UgfVxuXG4gICAgdmFyIHRleHQgPSBpbnB1dC52YWx1ZTtcbiAgICAvLyBJZiBub3RoaW5nIGNoYW5nZWQsIGJhaWwuXG4gICAgaWYgKHRleHQgPT0gcHJldklucHV0ICYmICFjbS5zb21ldGhpbmdTZWxlY3RlZCgpKSB7IHJldHVybiBmYWxzZSB9XG4gICAgLy8gV29yayBhcm91bmQgbm9uc2Vuc2ljYWwgc2VsZWN0aW9uIHJlc2V0dGluZyBpbiBJRTkvMTAsIGFuZFxuICAgIC8vIGluZXhwbGljYWJsZSBhcHBlYXJhbmNlIG9mIHByaXZhdGUgYXJlYSB1bmljb2RlIGNoYXJhY3RlcnMgb25cbiAgICAvLyBzb21lIGtleSBjb21ib3MgaW4gTWFjICgjMjY4OSkuXG4gICAgaWYgKGllICYmIGllX3ZlcnNpb24gPj0gOSAmJiB0aGlzLmhhc1NlbGVjdGlvbiA9PT0gdGV4dCB8fFxuICAgICAgICBtYWMgJiYgL1tcXHVmNzAwLVxcdWY3ZmZdLy50ZXN0KHRleHQpKSB7XG4gICAgICBjbS5kaXNwbGF5LmlucHV0LnJlc2V0KCk7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoY20uZG9jLnNlbCA9PSBjbS5kaXNwbGF5LnNlbEZvckNvbnRleHRNZW51KSB7XG4gICAgICB2YXIgZmlyc3QgPSB0ZXh0LmNoYXJDb2RlQXQoMCk7XG4gICAgICBpZiAoZmlyc3QgPT0gMHgyMDBiICYmICFwcmV2SW5wdXQpIHsgcHJldklucHV0ID0gXCJcXHUyMDBiXCI7IH1cbiAgICAgIGlmIChmaXJzdCA9PSAweDIxZGEpIHsgdGhpcy5yZXNldCgpOyByZXR1cm4gdGhpcy5jbS5leGVjQ29tbWFuZChcInVuZG9cIikgfVxuICAgIH1cbiAgICAvLyBGaW5kIHRoZSBwYXJ0IG9mIHRoZSBpbnB1dCB0aGF0IGlzIGFjdHVhbGx5IG5ld1xuICAgIHZhciBzYW1lID0gMCwgbCA9IE1hdGgubWluKHByZXZJbnB1dC5sZW5ndGgsIHRleHQubGVuZ3RoKTtcbiAgICB3aGlsZSAoc2FtZSA8IGwgJiYgcHJldklucHV0LmNoYXJDb2RlQXQoc2FtZSkgPT0gdGV4dC5jaGFyQ29kZUF0KHNhbWUpKSB7ICsrc2FtZTsgfVxuXG4gICAgcnVuSW5PcChjbSwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBwbHlUZXh0SW5wdXQoY20sIHRleHQuc2xpY2Uoc2FtZSksIHByZXZJbnB1dC5sZW5ndGggLSBzYW1lLFxuICAgICAgICAgICAgICAgICAgICAgbnVsbCwgdGhpcyQxLmNvbXBvc2luZyA/IFwiKmNvbXBvc2VcIiA6IG51bGwpO1xuXG4gICAgICAvLyBEb24ndCBsZWF2ZSBsb25nIHRleHQgaW4gdGhlIHRleHRhcmVhLCBzaW5jZSBpdCBtYWtlcyBmdXJ0aGVyIHBvbGxpbmcgc2xvd1xuICAgICAgaWYgKHRleHQubGVuZ3RoID4gMTAwMCB8fCB0ZXh0LmluZGV4T2YoXCJcXG5cIikgPiAtMSkgeyBpbnB1dC52YWx1ZSA9IHRoaXMkMS5wcmV2SW5wdXQgPSBcIlwiOyB9XG4gICAgICBlbHNlIHsgdGhpcyQxLnByZXZJbnB1dCA9IHRleHQ7IH1cblxuICAgICAgaWYgKHRoaXMkMS5jb21wb3NpbmcpIHtcbiAgICAgICAgdGhpcyQxLmNvbXBvc2luZy5yYW5nZS5jbGVhcigpO1xuICAgICAgICB0aGlzJDEuY29tcG9zaW5nLnJhbmdlID0gY20ubWFya1RleHQodGhpcyQxLmNvbXBvc2luZy5zdGFydCwgY20uZ2V0Q3Vyc29yKFwidG9cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NsYXNzTmFtZTogXCJDb2RlTWlycm9yLWNvbXBvc2luZ1wifSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRydWVcbiAgfTtcblxuICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5lbnN1cmVQb2xsZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMucG9sbGluZ0Zhc3QgJiYgdGhpcy5wb2xsKCkpIHsgdGhpcy5wb2xsaW5nRmFzdCA9IGZhbHNlOyB9XG4gIH07XG5cbiAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUub25LZXlQcmVzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA+PSA5KSB7IHRoaXMuaGFzU2VsZWN0aW9uID0gbnVsbDsgfVxuICAgIHRoaXMuZmFzdFBvbGwoKTtcbiAgfTtcblxuICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5vbkNvbnRleHRNZW51ID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgaW5wdXQgPSB0aGlzLCBjbSA9IGlucHV0LmNtLCBkaXNwbGF5ID0gY20uZGlzcGxheSwgdGUgPSBpbnB1dC50ZXh0YXJlYTtcbiAgICBpZiAoaW5wdXQuY29udGV4dE1lbnVQZW5kaW5nKSB7IGlucHV0LmNvbnRleHRNZW51UGVuZGluZygpOyB9XG4gICAgdmFyIHBvcyA9IHBvc0Zyb21Nb3VzZShjbSwgZSksIHNjcm9sbFBvcyA9IGRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsVG9wO1xuICAgIGlmICghcG9zIHx8IHByZXN0bykgeyByZXR1cm4gfSAvLyBPcGVyYSBpcyBkaWZmaWN1bHQuXG5cbiAgICAvLyBSZXNldCB0aGUgY3VycmVudCB0ZXh0IHNlbGVjdGlvbiBvbmx5IGlmIHRoZSBjbGljayBpcyBkb25lIG91dHNpZGUgb2YgdGhlIHNlbGVjdGlvblxuICAgIC8vIGFuZCAncmVzZXRTZWxlY3Rpb25PbkNvbnRleHRNZW51JyBvcHRpb24gaXMgdHJ1ZS5cbiAgICB2YXIgcmVzZXQgPSBjbS5vcHRpb25zLnJlc2V0U2VsZWN0aW9uT25Db250ZXh0TWVudTtcbiAgICBpZiAocmVzZXQgJiYgY20uZG9jLnNlbC5jb250YWlucyhwb3MpID09IC0xKVxuICAgICAgeyBvcGVyYXRpb24oY20sIHNldFNlbGVjdGlvbikoY20uZG9jLCBzaW1wbGVTZWxlY3Rpb24ocG9zKSwgc2VsX2RvbnRTY3JvbGwpOyB9XG5cbiAgICB2YXIgb2xkQ1NTID0gdGUuc3R5bGUuY3NzVGV4dCwgb2xkV3JhcHBlckNTUyA9IGlucHV0LndyYXBwZXIuc3R5bGUuY3NzVGV4dDtcbiAgICB2YXIgd3JhcHBlckJveCA9IGlucHV0LndyYXBwZXIub2Zmc2V0UGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlucHV0LndyYXBwZXIuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246IHN0YXRpY1wiO1xuICAgIHRlLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDMwcHg7IGhlaWdodDogMzBweDtcXG4gICAgICB0b3A6IFwiICsgKGUuY2xpZW50WSAtIHdyYXBwZXJCb3gudG9wIC0gNSkgKyBcInB4OyBsZWZ0OiBcIiArIChlLmNsaWVudFggLSB3cmFwcGVyQm94LmxlZnQgLSA1KSArIFwicHg7XFxuICAgICAgei1pbmRleDogMTAwMDsgYmFja2dyb3VuZDogXCIgKyAoaWUgPyBcInJnYmEoMjU1LCAyNTUsIDI1NSwgLjA1KVwiIDogXCJ0cmFuc3BhcmVudFwiKSArIFwiO1xcbiAgICAgIG91dGxpbmU6IG5vbmU7IGJvcmRlci13aWR0aDogMDsgb3V0bGluZTogbm9uZTsgb3ZlcmZsb3c6IGhpZGRlbjsgb3BhY2l0eTogLjA1OyBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NSk7XCI7XG4gICAgdmFyIG9sZFNjcm9sbFk7XG4gICAgaWYgKHdlYmtpdCkgeyBvbGRTY3JvbGxZID0gd2luZG93LnNjcm9sbFk7IH0gLy8gV29yayBhcm91bmQgQ2hyb21lIGlzc3VlICgjMjcxMilcbiAgICBkaXNwbGF5LmlucHV0LmZvY3VzKCk7XG4gICAgaWYgKHdlYmtpdCkgeyB3aW5kb3cuc2Nyb2xsVG8obnVsbCwgb2xkU2Nyb2xsWSk7IH1cbiAgICBkaXNwbGF5LmlucHV0LnJlc2V0KCk7XG4gICAgLy8gQWRkcyBcIlNlbGVjdCBhbGxcIiB0byBjb250ZXh0IG1lbnUgaW4gRkZcbiAgICBpZiAoIWNtLnNvbWV0aGluZ1NlbGVjdGVkKCkpIHsgdGUudmFsdWUgPSBpbnB1dC5wcmV2SW5wdXQgPSBcIiBcIjsgfVxuICAgIGlucHV0LmNvbnRleHRNZW51UGVuZGluZyA9IHJlaGlkZTtcbiAgICBkaXNwbGF5LnNlbEZvckNvbnRleHRNZW51ID0gY20uZG9jLnNlbDtcbiAgICBjbGVhclRpbWVvdXQoZGlzcGxheS5kZXRlY3RpbmdTZWxlY3RBbGwpO1xuXG4gICAgLy8gU2VsZWN0LWFsbCB3aWxsIGJlIGdyZXllZCBvdXQgaWYgdGhlcmUncyBub3RoaW5nIHRvIHNlbGVjdCwgc29cbiAgICAvLyB0aGlzIGFkZHMgYSB6ZXJvLXdpZHRoIHNwYWNlIHNvIHRoYXQgd2UgY2FuIGxhdGVyIGNoZWNrIHdoZXRoZXJcbiAgICAvLyBpdCBnb3Qgc2VsZWN0ZWQuXG4gICAgZnVuY3Rpb24gcHJlcGFyZVNlbGVjdEFsbEhhY2soKSB7XG4gICAgICBpZiAodGUuc2VsZWN0aW9uU3RhcnQgIT0gbnVsbCkge1xuICAgICAgICB2YXIgc2VsZWN0ZWQgPSBjbS5zb21ldGhpbmdTZWxlY3RlZCgpO1xuICAgICAgICB2YXIgZXh0dmFsID0gXCJcXHUyMDBiXCIgKyAoc2VsZWN0ZWQgPyB0ZS52YWx1ZSA6IFwiXCIpO1xuICAgICAgICB0ZS52YWx1ZSA9IFwiXFx1MjFkYVwiOyAvLyBVc2VkIHRvIGNhdGNoIGNvbnRleHQtbWVudSB1bmRvXG4gICAgICAgIHRlLnZhbHVlID0gZXh0dmFsO1xuICAgICAgICBpbnB1dC5wcmV2SW5wdXQgPSBzZWxlY3RlZCA/IFwiXCIgOiBcIlxcdTIwMGJcIjtcbiAgICAgICAgdGUuc2VsZWN0aW9uU3RhcnQgPSAxOyB0ZS5zZWxlY3Rpb25FbmQgPSBleHR2YWwubGVuZ3RoO1xuICAgICAgICAvLyBSZS1zZXQgdGhpcywgaW4gY2FzZSBzb21lIG90aGVyIGhhbmRsZXIgdG91Y2hlZCB0aGVcbiAgICAgICAgLy8gc2VsZWN0aW9uIGluIHRoZSBtZWFudGltZS5cbiAgICAgICAgZGlzcGxheS5zZWxGb3JDb250ZXh0TWVudSA9IGNtLmRvYy5zZWw7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlaGlkZSgpIHtcbiAgICAgIGlmIChpbnB1dC5jb250ZXh0TWVudVBlbmRpbmcgIT0gcmVoaWRlKSB7IHJldHVybiB9XG4gICAgICBpbnB1dC5jb250ZXh0TWVudVBlbmRpbmcgPSBmYWxzZTtcbiAgICAgIGlucHV0LndyYXBwZXIuc3R5bGUuY3NzVGV4dCA9IG9sZFdyYXBwZXJDU1M7XG4gICAgICB0ZS5zdHlsZS5jc3NUZXh0ID0gb2xkQ1NTO1xuICAgICAgaWYgKGllICYmIGllX3ZlcnNpb24gPCA5KSB7IGRpc3BsYXkuc2Nyb2xsYmFycy5zZXRTY3JvbGxUb3AoZGlzcGxheS5zY3JvbGxlci5zY3JvbGxUb3AgPSBzY3JvbGxQb3MpOyB9XG5cbiAgICAgIC8vIFRyeSB0byBkZXRlY3QgdGhlIHVzZXIgY2hvb3Npbmcgc2VsZWN0LWFsbFxuICAgICAgaWYgKHRlLnNlbGVjdGlvblN0YXJ0ICE9IG51bGwpIHtcbiAgICAgICAgaWYgKCFpZSB8fCAoaWUgJiYgaWVfdmVyc2lvbiA8IDkpKSB7IHByZXBhcmVTZWxlY3RBbGxIYWNrKCk7IH1cbiAgICAgICAgdmFyIGkgPSAwLCBwb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChkaXNwbGF5LnNlbEZvckNvbnRleHRNZW51ID09IGNtLmRvYy5zZWwgJiYgdGUuc2VsZWN0aW9uU3RhcnQgPT0gMCAmJlxuICAgICAgICAgICAgICB0ZS5zZWxlY3Rpb25FbmQgPiAwICYmIGlucHV0LnByZXZJbnB1dCA9PSBcIlxcdTIwMGJcIikge1xuICAgICAgICAgICAgb3BlcmF0aW9uKGNtLCBzZWxlY3RBbGwpKGNtKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGkrKyA8IDEwKSB7XG4gICAgICAgICAgICBkaXNwbGF5LmRldGVjdGluZ1NlbGVjdEFsbCA9IHNldFRpbWVvdXQocG9sbCwgNTAwKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGlzcGxheS5zZWxGb3JDb250ZXh0TWVudSA9IG51bGw7XG4gICAgICAgICAgICBkaXNwbGF5LmlucHV0LnJlc2V0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBkaXNwbGF5LmRldGVjdGluZ1NlbGVjdEFsbCA9IHNldFRpbWVvdXQocG9sbCwgMjAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaWUgJiYgaWVfdmVyc2lvbiA+PSA5KSB7IHByZXBhcmVTZWxlY3RBbGxIYWNrKCk7IH1cbiAgICBpZiAoY2FwdHVyZVJpZ2h0Q2xpY2spIHtcbiAgICAgIGVfc3RvcChlKTtcbiAgICAgIHZhciBtb3VzZXVwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBvZmYod2luZG93LCBcIm1vdXNldXBcIiwgbW91c2V1cCk7XG4gICAgICAgIHNldFRpbWVvdXQocmVoaWRlLCAyMCk7XG4gICAgICB9O1xuICAgICAgb24od2luZG93LCBcIm1vdXNldXBcIiwgbW91c2V1cCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQocmVoaWRlLCA1MCk7XG4gICAgfVxuICB9O1xuXG4gIFRleHRhcmVhSW5wdXQucHJvdG90eXBlLnJlYWRPbmx5Q2hhbmdlZCA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICBpZiAoIXZhbCkgeyB0aGlzLnJlc2V0KCk7IH1cbiAgICB0aGlzLnRleHRhcmVhLmRpc2FibGVkID0gdmFsID09IFwibm9jdXJzb3JcIjtcbiAgfTtcblxuICBUZXh0YXJlYUlucHV0LnByb3RvdHlwZS5zZXRVbmVkaXRhYmxlID0gZnVuY3Rpb24gKCkge307XG5cbiAgVGV4dGFyZWFJbnB1dC5wcm90b3R5cGUubmVlZHNDb250ZW50QXR0cmlidXRlID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gZnJvbVRleHRBcmVhKHRleHRhcmVhLCBvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgPyBjb3B5T2JqKG9wdGlvbnMpIDoge307XG4gICAgb3B0aW9ucy52YWx1ZSA9IHRleHRhcmVhLnZhbHVlO1xuICAgIGlmICghb3B0aW9ucy50YWJpbmRleCAmJiB0ZXh0YXJlYS50YWJJbmRleClcbiAgICAgIHsgb3B0aW9ucy50YWJpbmRleCA9IHRleHRhcmVhLnRhYkluZGV4OyB9XG4gICAgaWYgKCFvcHRpb25zLnBsYWNlaG9sZGVyICYmIHRleHRhcmVhLnBsYWNlaG9sZGVyKVxuICAgICAgeyBvcHRpb25zLnBsYWNlaG9sZGVyID0gdGV4dGFyZWEucGxhY2Vob2xkZXI7IH1cbiAgICAvLyBTZXQgYXV0b2ZvY3VzIHRvIHRydWUgaWYgdGhpcyB0ZXh0YXJlYSBpcyBmb2N1c2VkLCBvciBpZiBpdCBoYXNcbiAgICAvLyBhdXRvZm9jdXMgYW5kIG5vIG90aGVyIGVsZW1lbnQgaXMgZm9jdXNlZC5cbiAgICBpZiAob3B0aW9ucy5hdXRvZm9jdXMgPT0gbnVsbCkge1xuICAgICAgdmFyIGhhc0ZvY3VzID0gYWN0aXZlRWx0KCk7XG4gICAgICBvcHRpb25zLmF1dG9mb2N1cyA9IGhhc0ZvY3VzID09IHRleHRhcmVhIHx8XG4gICAgICAgIHRleHRhcmVhLmdldEF0dHJpYnV0ZShcImF1dG9mb2N1c1wiKSAhPSBudWxsICYmIGhhc0ZvY3VzID09IGRvY3VtZW50LmJvZHk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2F2ZSgpIHt0ZXh0YXJlYS52YWx1ZSA9IGNtLmdldFZhbHVlKCk7fVxuXG4gICAgdmFyIHJlYWxTdWJtaXQ7XG4gICAgaWYgKHRleHRhcmVhLmZvcm0pIHtcbiAgICAgIG9uKHRleHRhcmVhLmZvcm0sIFwic3VibWl0XCIsIHNhdmUpO1xuICAgICAgLy8gRGVwbG9yYWJsZSBoYWNrIHRvIG1ha2UgdGhlIHN1Ym1pdCBtZXRob2QgZG8gdGhlIHJpZ2h0IHRoaW5nLlxuICAgICAgaWYgKCFvcHRpb25zLmxlYXZlU3VibWl0TWV0aG9kQWxvbmUpIHtcbiAgICAgICAgdmFyIGZvcm0gPSB0ZXh0YXJlYS5mb3JtO1xuICAgICAgICByZWFsU3VibWl0ID0gZm9ybS5zdWJtaXQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdmFyIHdyYXBwZWRTdWJtaXQgPSBmb3JtLnN1Ym1pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNhdmUoKTtcbiAgICAgICAgICAgIGZvcm0uc3VibWl0ID0gcmVhbFN1Ym1pdDtcbiAgICAgICAgICAgIGZvcm0uc3VibWl0KCk7XG4gICAgICAgICAgICBmb3JtLnN1Ym1pdCA9IHdyYXBwZWRTdWJtaXQ7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSBjYXRjaChlKSB7fVxuICAgICAgfVxuICAgIH1cblxuICAgIG9wdGlvbnMuZmluaXNoSW5pdCA9IGZ1bmN0aW9uIChjbSkge1xuICAgICAgY20uc2F2ZSA9IHNhdmU7XG4gICAgICBjbS5nZXRUZXh0QXJlYSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRleHRhcmVhOyB9O1xuICAgICAgY20udG9UZXh0QXJlYSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY20udG9UZXh0QXJlYSA9IGlzTmFOOyAvLyBQcmV2ZW50IHRoaXMgZnJvbSBiZWluZyByYW4gdHdpY2VcbiAgICAgICAgc2F2ZSgpO1xuICAgICAgICB0ZXh0YXJlYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNtLmdldFdyYXBwZXJFbGVtZW50KCkpO1xuICAgICAgICB0ZXh0YXJlYS5zdHlsZS5kaXNwbGF5ID0gXCJcIjtcbiAgICAgICAgaWYgKHRleHRhcmVhLmZvcm0pIHtcbiAgICAgICAgICBvZmYodGV4dGFyZWEuZm9ybSwgXCJzdWJtaXRcIiwgc2F2ZSk7XG4gICAgICAgICAgaWYgKCFvcHRpb25zLmxlYXZlU3VibWl0TWV0aG9kQWxvbmUgJiYgdHlwZW9mIHRleHRhcmVhLmZvcm0uc3VibWl0ID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgIHsgdGV4dGFyZWEuZm9ybS5zdWJtaXQgPSByZWFsU3VibWl0OyB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcblxuICAgIHRleHRhcmVhLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICB2YXIgY20gPSBDb2RlTWlycm9yKGZ1bmN0aW9uIChub2RlKSB7IHJldHVybiB0ZXh0YXJlYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlLCB0ZXh0YXJlYS5uZXh0U2libGluZyk7IH0sXG4gICAgICBvcHRpb25zKTtcbiAgICByZXR1cm4gY21cbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZExlZ2FjeVByb3BzKENvZGVNaXJyb3IpIHtcbiAgICBDb2RlTWlycm9yLm9mZiA9IG9mZjtcbiAgICBDb2RlTWlycm9yLm9uID0gb247XG4gICAgQ29kZU1pcnJvci53aGVlbEV2ZW50UGl4ZWxzID0gd2hlZWxFdmVudFBpeGVscztcbiAgICBDb2RlTWlycm9yLkRvYyA9IERvYztcbiAgICBDb2RlTWlycm9yLnNwbGl0TGluZXMgPSBzcGxpdExpbmVzQXV0bztcbiAgICBDb2RlTWlycm9yLmNvdW50Q29sdW1uID0gY291bnRDb2x1bW47XG4gICAgQ29kZU1pcnJvci5maW5kQ29sdW1uID0gZmluZENvbHVtbjtcbiAgICBDb2RlTWlycm9yLmlzV29yZENoYXIgPSBpc1dvcmRDaGFyQmFzaWM7XG4gICAgQ29kZU1pcnJvci5QYXNzID0gUGFzcztcbiAgICBDb2RlTWlycm9yLnNpZ25hbCA9IHNpZ25hbDtcbiAgICBDb2RlTWlycm9yLkxpbmUgPSBMaW5lO1xuICAgIENvZGVNaXJyb3IuY2hhbmdlRW5kID0gY2hhbmdlRW5kO1xuICAgIENvZGVNaXJyb3Iuc2Nyb2xsYmFyTW9kZWwgPSBzY3JvbGxiYXJNb2RlbDtcbiAgICBDb2RlTWlycm9yLlBvcyA9IFBvcztcbiAgICBDb2RlTWlycm9yLmNtcFBvcyA9IGNtcDtcbiAgICBDb2RlTWlycm9yLm1vZGVzID0gbW9kZXM7XG4gICAgQ29kZU1pcnJvci5taW1lTW9kZXMgPSBtaW1lTW9kZXM7XG4gICAgQ29kZU1pcnJvci5yZXNvbHZlTW9kZSA9IHJlc29sdmVNb2RlO1xuICAgIENvZGVNaXJyb3IuZ2V0TW9kZSA9IGdldE1vZGU7XG4gICAgQ29kZU1pcnJvci5tb2RlRXh0ZW5zaW9ucyA9IG1vZGVFeHRlbnNpb25zO1xuICAgIENvZGVNaXJyb3IuZXh0ZW5kTW9kZSA9IGV4dGVuZE1vZGU7XG4gICAgQ29kZU1pcnJvci5jb3B5U3RhdGUgPSBjb3B5U3RhdGU7XG4gICAgQ29kZU1pcnJvci5zdGFydFN0YXRlID0gc3RhcnRTdGF0ZTtcbiAgICBDb2RlTWlycm9yLmlubmVyTW9kZSA9IGlubmVyTW9kZTtcbiAgICBDb2RlTWlycm9yLmNvbW1hbmRzID0gY29tbWFuZHM7XG4gICAgQ29kZU1pcnJvci5rZXlNYXAgPSBrZXlNYXA7XG4gICAgQ29kZU1pcnJvci5rZXlOYW1lID0ga2V5TmFtZTtcbiAgICBDb2RlTWlycm9yLmlzTW9kaWZpZXJLZXkgPSBpc01vZGlmaWVyS2V5O1xuICAgIENvZGVNaXJyb3IubG9va3VwS2V5ID0gbG9va3VwS2V5O1xuICAgIENvZGVNaXJyb3Iubm9ybWFsaXplS2V5TWFwID0gbm9ybWFsaXplS2V5TWFwO1xuICAgIENvZGVNaXJyb3IuU3RyaW5nU3RyZWFtID0gU3RyaW5nU3RyZWFtO1xuICAgIENvZGVNaXJyb3IuU2hhcmVkVGV4dE1hcmtlciA9IFNoYXJlZFRleHRNYXJrZXI7XG4gICAgQ29kZU1pcnJvci5UZXh0TWFya2VyID0gVGV4dE1hcmtlcjtcbiAgICBDb2RlTWlycm9yLkxpbmVXaWRnZXQgPSBMaW5lV2lkZ2V0O1xuICAgIENvZGVNaXJyb3IuZV9wcmV2ZW50RGVmYXVsdCA9IGVfcHJldmVudERlZmF1bHQ7XG4gICAgQ29kZU1pcnJvci5lX3N0b3BQcm9wYWdhdGlvbiA9IGVfc3RvcFByb3BhZ2F0aW9uO1xuICAgIENvZGVNaXJyb3IuZV9zdG9wID0gZV9zdG9wO1xuICAgIENvZGVNaXJyb3IuYWRkQ2xhc3MgPSBhZGRDbGFzcztcbiAgICBDb2RlTWlycm9yLmNvbnRhaW5zID0gY29udGFpbnM7XG4gICAgQ29kZU1pcnJvci5ybUNsYXNzID0gcm1DbGFzcztcbiAgICBDb2RlTWlycm9yLmtleU5hbWVzID0ga2V5TmFtZXM7XG4gIH1cblxuICAvLyBFRElUT1IgQ09OU1RSVUNUT1JcblxuICBkZWZpbmVPcHRpb25zKENvZGVNaXJyb3IpO1xuXG4gIGFkZEVkaXRvck1ldGhvZHMoQ29kZU1pcnJvcik7XG5cbiAgLy8gU2V0IHVwIG1ldGhvZHMgb24gQ29kZU1pcnJvcidzIHByb3RvdHlwZSB0byByZWRpcmVjdCB0byB0aGUgZWRpdG9yJ3MgZG9jdW1lbnQuXG4gIHZhciBkb250RGVsZWdhdGUgPSBcIml0ZXIgaW5zZXJ0IHJlbW92ZSBjb3B5IGdldEVkaXRvciBjb25zdHJ1Y3RvclwiLnNwbGl0KFwiIFwiKTtcbiAgZm9yICh2YXIgcHJvcCBpbiBEb2MucHJvdG90eXBlKSB7IGlmIChEb2MucHJvdG90eXBlLmhhc093blByb3BlcnR5KHByb3ApICYmIGluZGV4T2YoZG9udERlbGVnYXRlLCBwcm9wKSA8IDApXG4gICAgeyBDb2RlTWlycm9yLnByb3RvdHlwZVtwcm9wXSA9IChmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtyZXR1cm4gbWV0aG9kLmFwcGx5KHRoaXMuZG9jLCBhcmd1bWVudHMpfVxuICAgIH0pKERvYy5wcm90b3R5cGVbcHJvcF0pOyB9IH1cblxuICBldmVudE1peGluKERvYyk7XG4gIENvZGVNaXJyb3IuaW5wdXRTdHlsZXMgPSB7XCJ0ZXh0YXJlYVwiOiBUZXh0YXJlYUlucHV0LCBcImNvbnRlbnRlZGl0YWJsZVwiOiBDb250ZW50RWRpdGFibGVJbnB1dH07XG5cbiAgLy8gRXh0cmEgYXJndW1lbnRzIGFyZSBzdG9yZWQgYXMgdGhlIG1vZGUncyBkZXBlbmRlbmNpZXMsIHdoaWNoIGlzXG4gIC8vIHVzZWQgYnkgKGxlZ2FjeSkgbWVjaGFuaXNtcyBsaWtlIGxvYWRtb2RlLmpzIHRvIGF1dG9tYXRpY2FsbHlcbiAgLy8gbG9hZCBhIG1vZGUuIChQcmVmZXJyZWQgbWVjaGFuaXNtIGlzIHRoZSByZXF1aXJlL2RlZmluZSBjYWxscy4pXG4gIENvZGVNaXJyb3IuZGVmaW5lTW9kZSA9IGZ1bmN0aW9uKG5hbWUvKiwgbW9kZSwg4oCmKi8pIHtcbiAgICBpZiAoIUNvZGVNaXJyb3IuZGVmYXVsdHMubW9kZSAmJiBuYW1lICE9IFwibnVsbFwiKSB7IENvZGVNaXJyb3IuZGVmYXVsdHMubW9kZSA9IG5hbWU7IH1cbiAgICBkZWZpbmVNb2RlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH07XG5cbiAgQ29kZU1pcnJvci5kZWZpbmVNSU1FID0gZGVmaW5lTUlNRTtcblxuICAvLyBNaW5pbWFsIGRlZmF1bHQgbW9kZS5cbiAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKFwibnVsbFwiLCBmdW5jdGlvbiAoKSB7IHJldHVybiAoe3Rva2VuOiBmdW5jdGlvbiAoc3RyZWFtKSB7IHJldHVybiBzdHJlYW0uc2tpcFRvRW5kKCk7IH19KTsgfSk7XG4gIENvZGVNaXJyb3IuZGVmaW5lTUlNRShcInRleHQvcGxhaW5cIiwgXCJudWxsXCIpO1xuXG4gIC8vIEVYVEVOU0lPTlNcblxuICBDb2RlTWlycm9yLmRlZmluZUV4dGVuc2lvbiA9IGZ1bmN0aW9uIChuYW1lLCBmdW5jKSB7XG4gICAgQ29kZU1pcnJvci5wcm90b3R5cGVbbmFtZV0gPSBmdW5jO1xuICB9O1xuICBDb2RlTWlycm9yLmRlZmluZURvY0V4dGVuc2lvbiA9IGZ1bmN0aW9uIChuYW1lLCBmdW5jKSB7XG4gICAgRG9jLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmM7XG4gIH07XG5cbiAgQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEgPSBmcm9tVGV4dEFyZWE7XG5cbiAgYWRkTGVnYWN5UHJvcHMoQ29kZU1pcnJvcik7XG5cbiAgQ29kZU1pcnJvci52ZXJzaW9uID0gXCI1LjU3LjBcIjtcblxuICByZXR1cm4gQ29kZU1pcnJvcjtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBSEE7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUhBO0FBS0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUZBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUtBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVEE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFoQkE7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUFBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBSUE7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFVQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBTkE7QUFDQTtBQU9BO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFEQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQUtBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBL0JBO0FBQ0E7QUFpQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUExRkE7QUFDQTtBQThGQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFGQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBSEE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWxZQTtBQUNBO0FBcVlBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFIQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUkE7QUFDQTtBQVdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFOQTtBQVNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBUkE7QUFDQTtBQVVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUxBO0FBT0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVJBO0FBVUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFHQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQURBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUF6SUE7QUFDQTtBQTRJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUlBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFiQTtBQUNBO0FBZUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFMQTtBQVFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUhBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQTVaQTtBQThaQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/codemirror/lib/codemirror.js\n");
253
254/***/ }),
255
256/***/ "../../../node_modules/codemirror/mode/javascript/javascript.js":
257/*!*************************************************************************************************!*\
258 !*** /home/runner/work/graphiql/graphiql/node_modules/codemirror/mode/javascript/javascript.js ***!
259 \*************************************************************************************************/
260/*! no static exports found */
261/***/ (function(module, exports, __webpack_require__) {
262
263eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n // CodeMirror, copyright (c) by Marijn Haverbeke and others\n // Distributed under an MIT license: https://codemirror.net/LICENSE\n (function (mod) {\n if (true) // CommonJS\n mod(__webpack_require__(/*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));else {}\n })(function (CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineMode(\"javascript\", function (config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/; // Tokenizer\n\n var keywords = function () {\n function kw(type) {\n return {\n type: type,\n style: \"keyword\"\n };\n }\n\n var A = kw(\"keyword a\"),\n B = kw(\"keyword b\"),\n C = kw(\"keyword c\"),\n D = kw(\"keyword d\");\n var operator = kw(\"operator\"),\n atom = {\n type: \"atom\",\n style: \"atom\"\n };\n return {\n \"if\": kw(\"if\"),\n \"while\": A,\n \"with\": A,\n \"else\": B,\n \"do\": B,\n \"try\": B,\n \"finally\": B,\n \"return\": D,\n \"break\": D,\n \"continue\": D,\n \"new\": kw(\"new\"),\n \"delete\": C,\n \"void\": C,\n \"throw\": C,\n \"debugger\": kw(\"debugger\"),\n \"var\": kw(\"var\"),\n \"const\": kw(\"var\"),\n \"let\": kw(\"var\"),\n \"function\": kw(\"function\"),\n \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"),\n \"switch\": kw(\"switch\"),\n \"case\": kw(\"case\"),\n \"default\": kw(\"default\"),\n \"in\": operator,\n \"typeof\": operator,\n \"instanceof\": operator,\n \"true\": atom,\n \"false\": atom,\n \"null\": atom,\n \"undefined\": atom,\n \"NaN\": atom,\n \"Infinity\": atom,\n \"this\": kw(\"this\"),\n \"class\": kw(\"class\"),\n \"super\": kw(\"atom\"),\n \"yield\": C,\n \"export\": kw(\"export\"),\n \"import\": kw(\"import\"),\n \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false,\n next,\n inSet = false;\n\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;else if (inSet && next == \"]\") inSet = false;\n }\n\n escaped = !escaped && next == \"\\\\\";\n }\n } // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n\n\n var type, content;\n\n function ret(tp, style, cont) {\n type = tp;\n content = cont;\n return style;\n }\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\");\n } else if (ch == \"<\" && stream.match(\"!--\") || ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start))) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\");\n } else if (/[<>*+\\-]/.test(ch)) {\n stream.eat(ch);\n if (ch == \">\") stream.eat(ch);\n }\n }\n\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\");\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current();\n\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word];\n return ret(kw.type, kw.style, word);\n }\n\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*.*?\\*\\/)*[\\[\\(\\w]/, false)) return ret(\"async\", \"keyword\", word);\n }\n\n return ret(\"variable\", \"variable\", word);\n }\n }\n\n function tokenString(quote) {\n return function (stream, state) {\n var escaped = false,\n next;\n\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)) {\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false,\n ch;\n\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n\n maybeEnd = ch == \"*\";\n }\n\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false,\n next;\n\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n\n escaped = !escaped && next == \"\\\\\";\n }\n\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\"; // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) {\n // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow));\n if (m) arrow = m.index;\n }\n\n var depth = 0,\n sawSomething = false;\n\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n\n if (bracket >= 0 && bracket < 3) {\n if (!depth) {\n ++pos;\n break;\n }\n\n if (--depth == 0) {\n if (ch == \"(\") sawSomething = true;\n break;\n }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return;\n var next = stream.string.charAt(pos - 1);\n\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") {\n pos--;\n break;\n }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n\n if (sawSomething && !depth) state.fatArrowAt = pos;\n } // Parser\n\n\n var atomicTypes = {\n \"atom\": true,\n \"number\": true,\n \"variable\": true,\n \"string\": true,\n \"regexp\": true,\n \"this\": true,\n \"jsonld-keyword\": true\n };\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n for (var v = state.localVars; v; v = v.next) if (v.name == varname) return true;\n\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next) if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc; // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n\n cx.state = state;\n cx.stream = stream;\n cx.marked = null, cx.cc = cc;\n cx.style = style;\n if (!state.lexical.hasOwnProperty(\"align\")) state.lexical.align = true;\n\n while (true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n\n if (combinator(type, content)) {\n while (cc.length && cc[cc.length - 1].lex) cc.pop()();\n\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n } // Combinator utils\n\n\n var cx = {\n state: null,\n column: null,\n marked: null,\n cc: null\n };\n\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true;\n\n return false;\n }\n\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context);\n\n if (newContext != null) {\n state.context = newContext;\n return;\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars);\n return;\n }\n } // Fall through means this is global\n\n\n if (parserConfig.globalVars && !inList(varname, state.globalVars)) state.globalVars = new Var(varname, state.globalVars);\n }\n\n function registerVarScoped(varname, context) {\n if (!context) {\n return null;\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev);\n if (!inner) return null;\n if (inner == context.prev) return context;\n return new Context(inner, context.vars, true);\n } else if (inList(varname, context.vars)) {\n return context;\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false);\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\";\n } // Combinators\n\n\n function Context(prev, vars, block) {\n this.prev = prev;\n this.vars = vars;\n this.block = block;\n }\n\n function Var(name, next) {\n this.name = name;\n this.next = next;\n }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null));\n\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false);\n cx.state.localVars = defaultVars;\n }\n\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true);\n cx.state.localVars = null;\n }\n\n function popcontext() {\n cx.state.localVars = cx.state.context.vars;\n cx.state.context = cx.state.context.prev;\n }\n\n popcontext.lex = true;\n\n function pushlex(type, info) {\n var result = function () {\n var state = cx.state,\n indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev) indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n\n result.lex = true;\n return result;\n }\n\n function poplex() {\n var state = cx.state;\n\n if (state.lexical.prev) {\n if (state.lexical.type == \")\") state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();else return cont(exp);\n }\n\n ;\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex) cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), forspec, statement, poplex);\n\n if (type == \"class\" || isTS && value == \"interface\") {\n cx.marked = \"keyword\";\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex);\n }\n\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\";\n return cont(statement);\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\";\n if (value == \"enum\") return cont(enumdef);else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex);\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\";\n return cont(pushlex(\"form\"), expression, statement, poplex);\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\";\n return cont(statement);\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext, block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement);\n if (value == \"@\") return cont(expression, statement);\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"));\n }\n\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n\n function parenExpr(type) {\n if (type != \"(\") return pass();\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex);\n }\n\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n\n if (type == \"class\" || isTS && value == \"interface\") {\n cx.marked = \"keyword\";\n return cont(pushlex(\"form\"), classExpression, poplex);\n }\n\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n if (type == \"import\") return cont(expression);\n return cont();\n }\n\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false)) return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n\n if (type == \"quasi\") {\n return pass(quasi, me);\n }\n\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n\n if (isTS && value == \"as\") {\n cx.marked = \"keyword\";\n return cont(typeexpr, me);\n }\n\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\";\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1);\n return cont(expr);\n }\n }\n\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(expression, continueQuasi);\n }\n\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n\n function maybeTarget(noComma) {\n return function (type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma);else return pass(noComma ? expressionNoComma : expression);\n };\n }\n\n function target(_, value) {\n if (value == \"target\") {\n cx.marked = \"keyword\";\n return cont(maybeoperatorComma);\n }\n }\n\n function targetNoComma(_, value) {\n if (value == \"target\") {\n cx.marked = \"keyword\";\n return cont(maybeoperatorNoComma);\n }\n }\n\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n\n function property(type) {\n if (type == \"variable\") {\n cx.marked = \"property\";\n return cont();\n }\n }\n\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m; // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false))) cx.state.fatArrowAt = cx.stream.pos + m[0].length;\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : cx.style + \" property\";\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop);\n }\n }\n\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function (type, value) {\n if (type == end || value == end) return pass();\n return pass(what);\n }, proceed);\n }\n\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what);\n return cont(expect(end));\n }\n\n return function (type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++) cx.cc.push(arguments[i]);\n\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr);\n }\n\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr);else return cont(typeexpr);\n }\n }\n\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\";\n return cont();\n }\n }\n\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\") {\n cx.marked = \"keyword\";\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr);\n }\n\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\";\n return cont(afterType);\n }\n\n if (value == \"|\" || value == \"&\") return cont(typeexpr);\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType);\n if (type == \"{\") return cont(pushlex(\"}\"), commasep(typeprop, \"}\", \",;\"), poplex, afterType);\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType);\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr);\n }\n\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr);\n }\n\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(typeprop);\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop);\n } else if (type == \":\") {\n return cont(typeexpr);\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop);\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop);\n }\n }\n\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg);\n if (type == \":\") return cont(typeexpr);\n if (type == \"spread\") return cont(typearg);\n return pass(typeexpr);\n }\n\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType);\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr);\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType);\n\n if (value == \"extends\" || value == \"implements\") {\n cx.marked = \"keyword\";\n return cont(typeexpr);\n }\n\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr);\n }\n\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType);\n }\n\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault);\n }\n\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr);\n }\n\n function vardef(_, value) {\n if (value == \"enum\") {\n cx.marked = \"keyword\";\n return cont(enumdef);\n }\n\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n\n function pattern(type, value) {\n if (isTS && isModifier(value)) {\n cx.marked = \"keyword\";\n return cont(pattern);\n }\n\n if (type == \"variable\") {\n register(value);\n return cont();\n }\n\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n\n function eltpattern() {\n return pass(pattern, maybeAssign);\n }\n\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2);\n }\n\n function forspec2(type, value) {\n if (type == \")\") return cont();\n if (type == \";\") return cont(forspec2);\n\n if (value == \"in\" || value == \"of\") {\n cx.marked = \"keyword\";\n return cont(expression, forspec2);\n }\n\n return pass(expression, forspec2);\n }\n\n function functiondef(type, value) {\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(functiondef);\n }\n\n if (type == \"variable\") {\n register(value);\n return cont(functiondef);\n }\n\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef);\n }\n\n function functiondecl(type, value) {\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(functiondecl);\n }\n\n if (type == \"variable\") {\n register(value);\n return cont(functiondecl);\n }\n\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl);\n }\n\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\";\n return cont(typename);\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex);\n }\n }\n\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg);\n if (type == \"spread\") return cont(funarg);\n\n if (isTS && isModifier(value)) {\n cx.marked = \"keyword\";\n return cont(funarg);\n }\n\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign);\n return pass(pattern, maybetype, maybeAssign);\n }\n\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n\n function className(type, value) {\n if (type == \"variable\") {\n register(value);\n return cont(classNameAfter);\n }\n }\n\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter);\n\n if (value == \"extends\" || value == \"implements\" || isTS && type == \",\") {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n\n function classBody(type, value) {\n if (type == \"async\" || type == \"variable\" && (value == \"static\" || value == \"get\" || value == \"set\" || isTS && isModifier(value)) && cx.stream.match(/^\\s+[\\w$\\xa1-\\uffff]/, false)) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\") return cont(expression, maybetype, expect(\"]\"), classfield, classBody);\n\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n\n if (isTS && type == \"(\") return pass(functiondecl, classBody);\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody);\n }\n\n function classfield(type, value) {\n if (value == \"?\") return cont(classfield);\n if (type == \":\") return cont(typeexpr, maybeAssign);\n if (value == \"=\") return cont(expressionNoComma);\n var context = cx.state.lexical.prev,\n isInterface = context && context.info == \"interface\";\n return pass(isInterface ? functiondecl : functiondef);\n }\n\n function afterExport(type, value) {\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(maybeFrom, expect(\";\"));\n }\n\n if (value == \"default\") {\n cx.marked = \"keyword\";\n return cont(expression, expect(\";\"));\n }\n\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n\n function exportField(type, value) {\n if (value == \"as\") {\n cx.marked = \"keyword\";\n return cont(expect(\"variable\"));\n }\n\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports);\n }\n\n function maybeAs(_type, value) {\n if (value == \"as\") {\n cx.marked = \"keyword\";\n return cont(importSpec);\n }\n }\n\n function maybeFrom(_type, value) {\n if (value == \"from\") {\n cx.marked = \"keyword\";\n return cont(expression);\n }\n }\n\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex);\n }\n\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" || isOperatorChar.test(textAfter.charAt(0)) || /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase && /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) || state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0)));\n } // Interface\n\n\n return {\n startState: function (basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\") state.globalVars = parserConfig.globalVars;\n return state;\n },\n token: function (stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\")) state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n indent: function (state, textAfter) {\n if (state.tokenize == tokenComment) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0),\n lexical = state.lexical,\n top; // Kludge to prevent 'maybelse' from blocking lexical scope pops\n\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;else if (c != maybeelse) break;\n }\n\n while ((lexical.type == \"stat\" || lexical.type == \"form\") && (firstChar == \"}\" || (top = state.cc[state.cc.length - 1]) && (top == maybeoperatorComma || top == maybeoperatorNoComma) && !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))) lexical = lexical.prev;\n\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\") lexical = lexical.prev;\n var type = lexical.type,\n closing = firstChar == type;\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);else if (type == \"form\" && firstChar == \"{\") return lexical.indented;else if (type == \"form\") return lexical.indented + indentUnit;else if (type == \"stat\") return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false) return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);else if (lexical.align) return lexical.column + (closing ? 0 : 1);else return lexical.indented + (closing ? 0 : indentUnit);\n },\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n expressionAllowed: expressionAllowed,\n skipExpression: function (state) {\n var top = state.cc[state.cc.length - 1];\n if (top == expression || top == expressionNoComma) state.cc.pop();\n }\n };\n });\n CodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n CodeMirror.defineMIME(\"text/javascript\", \"javascript\");\n CodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\n CodeMirror.defineMIME(\"application/javascript\", \"javascript\");\n CodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\n CodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\n CodeMirror.defineMIME(\"application/json\", {\n name: \"javascript\",\n json: true\n });\n CodeMirror.defineMIME(\"application/x-json\", {\n name: \"javascript\",\n json: true\n });\n CodeMirror.defineMIME(\"application/ld+json\", {\n name: \"javascript\",\n jsonld: true\n });\n CodeMirror.defineMIME(\"text/typescript\", {\n name: \"javascript\",\n typescript: true\n });\n CodeMirror.defineMIME(\"application/typescript\", {\n name: \"javascript\",\n typescript: true\n });\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvZGVtaXJyb3IvbW9kZS9qYXZhc2NyaXB0L2phdmFzY3JpcHQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvY29kZW1pcnJvci9tb2RlL2phdmFzY3JpcHQvamF2YXNjcmlwdC5qcz84NDNhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvZGVNaXJyb3IsIGNvcHlyaWdodCAoYykgYnkgTWFyaWpuIEhhdmVyYmVrZSBhbmQgb3RoZXJzXG4vLyBEaXN0cmlidXRlZCB1bmRlciBhbiBNSVQgbGljZW5zZTogaHR0cHM6Ly9jb2RlbWlycm9yLm5ldC9MSUNFTlNFXG5cbihmdW5jdGlvbihtb2QpIHtcbiAgaWYgKHR5cGVvZiBleHBvcnRzID09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG1vZHVsZSA9PSBcIm9iamVjdFwiKSAvLyBDb21tb25KU1xuICAgIG1vZChyZXF1aXJlKFwiLi4vLi4vbGliL2NvZGVtaXJyb3JcIikpO1xuICBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSAvLyBBTURcbiAgICBkZWZpbmUoW1wiLi4vLi4vbGliL2NvZGVtaXJyb3JcIl0sIG1vZCk7XG4gIGVsc2UgLy8gUGxhaW4gYnJvd3NlciBlbnZcbiAgICBtb2QoQ29kZU1pcnJvcik7XG59KShmdW5jdGlvbihDb2RlTWlycm9yKSB7XG5cInVzZSBzdHJpY3RcIjtcblxuQ29kZU1pcnJvci5kZWZpbmVNb2RlKFwiamF2YXNjcmlwdFwiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykge1xuICB2YXIgaW5kZW50VW5pdCA9IGNvbmZpZy5pbmRlbnRVbml0O1xuICB2YXIgc3RhdGVtZW50SW5kZW50ID0gcGFyc2VyQ29uZmlnLnN0YXRlbWVudEluZGVudDtcbiAgdmFyIGpzb25sZE1vZGUgPSBwYXJzZXJDb25maWcuanNvbmxkO1xuICB2YXIganNvbk1vZGUgPSBwYXJzZXJDb25maWcuanNvbiB8fCBqc29ubGRNb2RlO1xuICB2YXIgaXNUUyA9IHBhcnNlckNvbmZpZy50eXBlc2NyaXB0O1xuICB2YXIgd29yZFJFID0gcGFyc2VyQ29uZmlnLndvcmRDaGFyYWN0ZXJzIHx8IC9bXFx3JFxceGExLVxcdWZmZmZdLztcblxuICAvLyBUb2tlbml6ZXJcblxuICB2YXIga2V5d29yZHMgPSBmdW5jdGlvbigpe1xuICAgIGZ1bmN0aW9uIGt3KHR5cGUpIHtyZXR1cm4ge3R5cGU6IHR5cGUsIHN0eWxlOiBcImtleXdvcmRcIn07fVxuICAgIHZhciBBID0ga3coXCJrZXl3b3JkIGFcIiksIEIgPSBrdyhcImtleXdvcmQgYlwiKSwgQyA9IGt3KFwia2V5d29yZCBjXCIpLCBEID0ga3coXCJrZXl3b3JkIGRcIik7XG4gICAgdmFyIG9wZXJhdG9yID0ga3coXCJvcGVyYXRvclwiKSwgYXRvbSA9IHt0eXBlOiBcImF0b21cIiwgc3R5bGU6IFwiYXRvbVwifTtcblxuICAgIHJldHVybiB7XG4gICAgICBcImlmXCI6IGt3KFwiaWZcIiksIFwid2hpbGVcIjogQSwgXCJ3aXRoXCI6IEEsIFwiZWxzZVwiOiBCLCBcImRvXCI6IEIsIFwidHJ5XCI6IEIsIFwiZmluYWxseVwiOiBCLFxuICAgICAgXCJyZXR1cm5cIjogRCwgXCJicmVha1wiOiBELCBcImNvbnRpbnVlXCI6IEQsIFwibmV3XCI6IGt3KFwibmV3XCIpLCBcImRlbGV0ZVwiOiBDLCBcInZvaWRcIjogQywgXCJ0aHJvd1wiOiBDLFxuICAgICAgXCJkZWJ1Z2dlclwiOiBrdyhcImRlYnVnZ2VyXCIpLCBcInZhclwiOiBrdyhcInZhclwiKSwgXCJjb25zdFwiOiBrdyhcInZhclwiKSwgXCJsZXRcIjoga3coXCJ2YXJcIiksXG4gICAgICBcImZ1bmN0aW9uXCI6IGt3KFwiZnVuY3Rpb25cIiksIFwiY2F0Y2hcIjoga3coXCJjYXRjaFwiKSxcbiAgICAgIFwiZm9yXCI6IGt3KFwiZm9yXCIpLCBcInN3aXRjaFwiOiBrdyhcInN3aXRjaFwiKSwgXCJjYXNlXCI6IGt3KFwiY2FzZVwiKSwgXCJkZWZhdWx0XCI6IGt3KFwiZGVmYXVsdFwiKSxcbiAgICAgIFwiaW5cIjogb3BlcmF0b3IsIFwidHlwZW9mXCI6IG9wZXJhdG9yLCBcImluc3RhbmNlb2ZcIjogb3BlcmF0b3IsXG4gICAgICBcInRydWVcIjogYXRvbSwgXCJmYWxzZVwiOiBhdG9tLCBcIm51bGxcIjogYXRvbSwgXCJ1bmRlZmluZWRcIjogYXRvbSwgXCJOYU5cIjogYXRvbSwgXCJJbmZpbml0eVwiOiBhdG9tLFxuICAgICAgXCJ0aGlzXCI6IGt3KFwidGhpc1wiKSwgXCJjbGFzc1wiOiBrdyhcImNsYXNzXCIpLCBcInN1cGVyXCI6IGt3KFwiYXRvbVwiKSxcbiAgICAgIFwieWllbGRcIjogQywgXCJleHBvcnRcIjoga3coXCJleHBvcnRcIiksIFwiaW1wb3J0XCI6IGt3KFwiaW1wb3J0XCIpLCBcImV4dGVuZHNcIjogQyxcbiAgICAgIFwiYXdhaXRcIjogQ1xuICAgIH07XG4gIH0oKTtcblxuICB2YXIgaXNPcGVyYXRvckNoYXIgPSAvWytcXC0qJiU9PD4hP3x+XkBdLztcbiAgdmFyIGlzSnNvbmxkS2V5d29yZCA9IC9eQChjb250ZXh0fGlkfHZhbHVlfGxhbmd1YWdlfHR5cGV8Y29udGFpbmVyfGxpc3R8c2V0fHJldmVyc2V8aW5kZXh8YmFzZXx2b2NhYnxncmFwaClcIi87XG5cbiAgZnVuY3Rpb24gcmVhZFJlZ2V4cChzdHJlYW0pIHtcbiAgICB2YXIgZXNjYXBlZCA9IGZhbHNlLCBuZXh0LCBpblNldCA9IGZhbHNlO1xuICAgIHdoaWxlICgobmV4dCA9IHN0cmVhbS5uZXh0KCkpICE9IG51bGwpIHtcbiAgICAgIGlmICghZXNjYXBlZCkge1xuICAgICAgICBpZiAobmV4dCA9PSBcIi9cIiAmJiAhaW5TZXQpIHJldHVybjtcbiAgICAgICAgaWYgKG5leHQgPT0gXCJbXCIpIGluU2V0ID0gdHJ1ZTtcbiAgICAgICAgZWxzZSBpZiAoaW5TZXQgJiYgbmV4dCA9PSBcIl1cIikgaW5TZXQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZCAmJiBuZXh0ID09IFwiXFxcXFwiO1xuICAgIH1cbiAgfVxuXG4gIC8vIFVzZWQgYXMgc2NyYXRjaCB2YXJpYWJsZXMgdG8gY29tbXVuaWNhdGUgbXVsdGlwbGUgdmFsdWVzIHdpdGhvdXRcbiAgLy8gY29uc2luZyB1cCB0b25zIG9mIG9iamVjdHMuXG4gIHZhciB0eXBlLCBjb250ZW50O1xuICBmdW5jdGlvbiByZXQodHAsIHN0eWxlLCBjb250KSB7XG4gICAgdHlwZSA9IHRwOyBjb250ZW50ID0gY29udDtcbiAgICByZXR1cm4gc3R5bGU7XG4gIH1cbiAgZnVuY3Rpb24gdG9rZW5CYXNlKHN0cmVhbSwgc3RhdGUpIHtcbiAgICB2YXIgY2ggPSBzdHJlYW0ubmV4dCgpO1xuICAgIGlmIChjaCA9PSAnXCInIHx8IGNoID09IFwiJ1wiKSB7XG4gICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuU3RyaW5nKGNoKTtcbiAgICAgIHJldHVybiBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRlKTtcbiAgICB9IGVsc2UgaWYgKGNoID09IFwiLlwiICYmIHN0cmVhbS5tYXRjaCgvXlxcZFtcXGRfXSooPzpbZUVdWytcXC1dP1tcXGRfXSspPy8pKSB7XG4gICAgICByZXR1cm4gcmV0KFwibnVtYmVyXCIsIFwibnVtYmVyXCIpO1xuICAgIH0gZWxzZSBpZiAoY2ggPT0gXCIuXCIgJiYgc3RyZWFtLm1hdGNoKFwiLi5cIikpIHtcbiAgICAgIHJldHVybiByZXQoXCJzcHJlYWRcIiwgXCJtZXRhXCIpO1xuICAgIH0gZWxzZSBpZiAoL1tcXFtcXF17fVxcKFxcKSw7XFw6XFwuXS8udGVzdChjaCkpIHtcbiAgICAgIHJldHVybiByZXQoY2gpO1xuICAgIH0gZWxzZSBpZiAoY2ggPT0gXCI9XCIgJiYgc3RyZWFtLmVhdChcIj5cIikpIHtcbiAgICAgIHJldHVybiByZXQoXCI9PlwiLCBcIm9wZXJhdG9yXCIpO1xuICAgIH0gZWxzZSBpZiAoY2ggPT0gXCIwXCIgJiYgc3RyZWFtLm1hdGNoKC9eKD86eFtcXGRBLUZhLWZfXSt8b1swLTdfXSt8YlswMV9dKyluPy8pKSB7XG4gICAgICByZXR1cm4gcmV0KFwibnVtYmVyXCIsIFwibnVtYmVyXCIpO1xuICAgIH0gZWxzZSBpZiAoL1xcZC8udGVzdChjaCkpIHtcbiAgICAgIHN0cmVhbS5tYXRjaCgvXltcXGRfXSooPzpufCg/OlxcLltcXGRfXSopPyg/OltlRV1bK1xcLV0/W1xcZF9dKyk/KT8vKTtcbiAgICAgIHJldHVybiByZXQoXCJudW1iZXJcIiwgXCJudW1iZXJcIik7XG4gICAgfSBlbHNlIGlmIChjaCA9PSBcIi9cIikge1xuICAgICAgaWYgKHN0cmVhbS5lYXQoXCIqXCIpKSB7XG4gICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5Db21tZW50O1xuICAgICAgICByZXR1cm4gdG9rZW5Db21tZW50KHN0cmVhbSwgc3RhdGUpO1xuICAgICAgfSBlbHNlIGlmIChzdHJlYW0uZWF0KFwiL1wiKSkge1xuICAgICAgICBzdHJlYW0uc2tpcFRvRW5kKCk7XG4gICAgICAgIHJldHVybiByZXQoXCJjb21tZW50XCIsIFwiY29tbWVudFwiKTtcbiAgICAgIH0gZWxzZSBpZiAoZXhwcmVzc2lvbkFsbG93ZWQoc3RyZWFtLCBzdGF0ZSwgMSkpIHtcbiAgICAgICAgcmVhZFJlZ2V4cChzdHJlYW0pO1xuICAgICAgICBzdHJlYW0ubWF0Y2goL15cXGIoKFtnaW15dXNdKSg/IVtnaW15dXNdKlxcMikpK1xcYi8pO1xuICAgICAgICByZXR1cm4gcmV0KFwicmVnZXhwXCIsIFwic3RyaW5nLTJcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHJlYW0uZWF0KFwiPVwiKTtcbiAgICAgICAgcmV0dXJuIHJldChcIm9wZXJhdG9yXCIsIFwib3BlcmF0b3JcIiwgc3RyZWFtLmN1cnJlbnQoKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjaCA9PSBcImBcIikge1xuICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlblF1YXNpO1xuICAgICAgcmV0dXJuIHRva2VuUXVhc2koc3RyZWFtLCBzdGF0ZSk7XG4gICAgfSBlbHNlIGlmIChjaCA9PSBcIiNcIiAmJiBzdHJlYW0ucGVlaygpID09IFwiIVwiKSB7XG4gICAgICBzdHJlYW0uc2tpcFRvRW5kKCk7XG4gICAgICByZXR1cm4gcmV0KFwibWV0YVwiLCBcIm1ldGFcIik7XG4gICAgfSBlbHNlIGlmIChjaCA9PSBcIiNcIiAmJiBzdHJlYW0uZWF0V2hpbGUod29yZFJFKSkge1xuICAgICAgcmV0dXJuIHJldChcInZhcmlhYmxlXCIsIFwicHJvcGVydHlcIilcbiAgICB9IGVsc2UgaWYgKGNoID09IFwiPFwiICYmIHN0cmVhbS5tYXRjaChcIiEtLVwiKSB8fFxuICAgICAgICAgICAgICAgKGNoID09IFwiLVwiICYmIHN0cmVhbS5tYXRjaChcIi0+XCIpICYmICEvXFxTLy50ZXN0KHN0cmVhbS5zdHJpbmcuc2xpY2UoMCwgc3RyZWFtLnN0YXJ0KSkpKSB7XG4gICAgICBzdHJlYW0uc2tpcFRvRW5kKClcbiAgICAgIHJldHVybiByZXQoXCJjb21tZW50XCIsIFwiY29tbWVudFwiKVxuICAgIH0gZWxzZSBpZiAoaXNPcGVyYXRvckNoYXIudGVzdChjaCkpIHtcbiAgICAgIGlmIChjaCAhPSBcIj5cIiB8fCAhc3RhdGUubGV4aWNhbCB8fCBzdGF0ZS5sZXhpY2FsLnR5cGUgIT0gXCI+XCIpIHtcbiAgICAgICAgaWYgKHN0cmVhbS5lYXQoXCI9XCIpKSB7XG4gICAgICAgICAgaWYgKGNoID09IFwiIVwiIHx8IGNoID09IFwiPVwiKSBzdHJlYW0uZWF0KFwiPVwiKVxuICAgICAgICB9IGVsc2UgaWYgKC9bPD4qK1xcLV0vLnRlc3QoY2gpKSB7XG4gICAgICAgICAgc3RyZWFtLmVhdChjaClcbiAgICAgICAgICBpZiAoY2ggPT0gXCI+XCIpIHN0cmVhbS5lYXQoY2gpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjaCA9PSBcIj9cIiAmJiBzdHJlYW0uZWF0KFwiLlwiKSkgcmV0dXJuIHJldChcIi5cIilcbiAgICAgIHJldHVybiByZXQoXCJvcGVyYXRvclwiLCBcIm9wZXJhdG9yXCIsIHN0cmVhbS5jdXJyZW50KCkpO1xuICAgIH0gZWxzZSBpZiAod29yZFJFLnRlc3QoY2gpKSB7XG4gICAgICBzdHJlYW0uZWF0V2hpbGUod29yZFJFKTtcbiAgICAgIHZhciB3b3JkID0gc3RyZWFtLmN1cnJlbnQoKVxuICAgICAgaWYgKHN0YXRlLmxhc3RUeXBlICE9IFwiLlwiKSB7XG4gICAgICAgIGlmIChrZXl3b3Jkcy5wcm9wZXJ0eUlzRW51bWVyYWJsZSh3b3JkKSkge1xuICAgICAgICAgIHZhciBrdyA9IGtleXdvcmRzW3dvcmRdXG4gICAgICAgICAgcmV0dXJuIHJldChrdy50eXBlLCBrdy5zdHlsZSwgd29yZClcbiAgICAgICAgfVxuICAgICAgICBpZiAod29yZCA9PSBcImFzeW5jXCIgJiYgc3RyZWFtLm1hdGNoKC9eKFxcc3xcXC9cXCouKj9cXCpcXC8pKltcXFtcXChcXHddLywgZmFsc2UpKVxuICAgICAgICAgIHJldHVybiByZXQoXCJhc3luY1wiLCBcImtleXdvcmRcIiwgd29yZClcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXQoXCJ2YXJpYWJsZVwiLCBcInZhcmlhYmxlXCIsIHdvcmQpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdG9rZW5TdHJpbmcocXVvdGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkge1xuICAgICAgdmFyIGVzY2FwZWQgPSBmYWxzZSwgbmV4dDtcbiAgICAgIGlmIChqc29ubGRNb2RlICYmIHN0cmVhbS5wZWVrKCkgPT0gXCJAXCIgJiYgc3RyZWFtLm1hdGNoKGlzSnNvbmxkS2V5d29yZCkpe1xuICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuQmFzZTtcbiAgICAgICAgcmV0dXJuIHJldChcImpzb25sZC1rZXl3b3JkXCIsIFwibWV0YVwiKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICgobmV4dCA9IHN0cmVhbS5uZXh0KCkpICE9IG51bGwpIHtcbiAgICAgICAgaWYgKG5leHQgPT0gcXVvdGUgJiYgIWVzY2FwZWQpIGJyZWFrO1xuICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWQgJiYgbmV4dCA9PSBcIlxcXFxcIjtcbiAgICAgIH1cbiAgICAgIGlmICghZXNjYXBlZCkgc3RhdGUudG9rZW5pemUgPSB0b2tlbkJhc2U7XG4gICAgICByZXR1cm4gcmV0KFwic3RyaW5nXCIsIFwic3RyaW5nXCIpO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiB0b2tlbkNvbW1lbnQoc3RyZWFtLCBzdGF0ZSkge1xuICAgIHZhciBtYXliZUVuZCA9IGZhbHNlLCBjaDtcbiAgICB3aGlsZSAoY2ggPSBzdHJlYW0ubmV4dCgpKSB7XG4gICAgICBpZiAoY2ggPT0gXCIvXCIgJiYgbWF5YmVFbmQpIHtcbiAgICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkJhc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbWF5YmVFbmQgPSAoY2ggPT0gXCIqXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcmV0KFwiY29tbWVudFwiLCBcImNvbW1lbnRcIik7XG4gIH1cblxuICBmdW5jdGlvbiB0b2tlblF1YXNpKHN0cmVhbSwgc3RhdGUpIHtcbiAgICB2YXIgZXNjYXBlZCA9IGZhbHNlLCBuZXh0O1xuICAgIHdoaWxlICgobmV4dCA9IHN0cmVhbS5uZXh0KCkpICE9IG51bGwpIHtcbiAgICAgIGlmICghZXNjYXBlZCAmJiAobmV4dCA9PSBcImBcIiB8fCBuZXh0ID09IFwiJFwiICYmIHN0cmVhbS5lYXQoXCJ7XCIpKSkge1xuICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuQmFzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBlc2NhcGVkID0gIWVzY2FwZWQgJiYgbmV4dCA9PSBcIlxcXFxcIjtcbiAgICB9XG4gICAgcmV0dXJuIHJldChcInF1YXNpXCIsIFwic3RyaW5nLTJcIiwgc3RyZWFtLmN1cnJlbnQoKSk7XG4gIH1cblxuICB2YXIgYnJhY2tldHMgPSBcIihbe31dKVwiO1xuICAvLyBUaGlzIGlzIGEgY3J1ZGUgbG9va2FoZWFkIHRyaWNrIHRvIHRyeSBhbmQgbm90aWNlIHRoYXQgd2UncmVcbiAgLy8gcGFyc2luZyB0aGUgYXJndW1lbnQgcGF0dGVybnMgZm9yIGEgZmF0LWFycm93IGZ1bmN0aW9uIGJlZm9yZSB3ZVxuICAvLyBhY3R1YWxseSBoaXQgdGhlIGFycm93IHRva2VuLiBJdCBvbmx5IHdvcmtzIGlmIHRoZSBhcnJvdyBpcyBvblxuICAvLyB0aGUgc2FtZSBsaW5lIGFzIHRoZSBhcmd1bWVudHMgYW5kIHRoZXJlJ3Mgbm8gc3RyYW5nZSBub2lzZVxuICAvLyAoY29tbWVudHMpIGluIGJldHdlZW4uIEZhbGxiYWNrIGlzIHRvIG9ubHkgbm90aWNlIHdoZW4gd2UgaGl0IHRoZVxuICAvLyBhcnJvdywgYW5kIG5vdCBkZWNsYXJlIHRoZSBhcmd1bWVudHMgYXMgbG9jYWxzIGZvciB0aGUgYXJyb3dcbiAgLy8gYm9keS5cbiAgZnVuY3Rpb24gZmluZEZhdEFycm93KHN0cmVhbSwgc3RhdGUpIHtcbiAgICBpZiAoc3RhdGUuZmF0QXJyb3dBdCkgc3RhdGUuZmF0QXJyb3dBdCA9IG51bGw7XG4gICAgdmFyIGFycm93ID0gc3RyZWFtLnN0cmluZy5pbmRleE9mKFwiPT5cIiwgc3RyZWFtLnN0YXJ0KTtcbiAgICBpZiAoYXJyb3cgPCAwKSByZXR1cm47XG5cbiAgICBpZiAoaXNUUykgeyAvLyBUcnkgdG8gc2tpcCBUeXBlU2NyaXB0IHJldHVybiB0eXBlIGRlY2xhcmF0aW9ucyBhZnRlciB0aGUgYXJndW1lbnRzXG4gICAgICB2YXIgbSA9IC86XFxzKig/OlxcdysoPzo8W14+XSo+fFxcW1xcXSk/fFxce1tefV0qXFx9KVxccyokLy5leGVjKHN0cmVhbS5zdHJpbmcuc2xpY2Uoc3RyZWFtLnN0YXJ0LCBhcnJvdykpXG4gICAgICBpZiAobSkgYXJyb3cgPSBtLmluZGV4XG4gICAgfVxuXG4gICAgdmFyIGRlcHRoID0gMCwgc2F3U29tZXRoaW5nID0gZmFsc2U7XG4gICAgZm9yICh2YXIgcG9zID0gYXJyb3cgLSAxOyBwb3MgPj0gMDsgLS1wb3MpIHtcbiAgICAgIHZhciBjaCA9IHN0cmVhbS5zdHJpbmcuY2hhckF0KHBvcyk7XG4gICAgICB2YXIgYnJhY2tldCA9IGJyYWNrZXRzLmluZGV4T2YoY2gpO1xuICAgICAgaWYgKGJyYWNrZXQgPj0gMCAmJiBicmFja2V0IDwgMykge1xuICAgICAgICBpZiAoIWRlcHRoKSB7ICsrcG9zOyBicmVhazsgfVxuICAgICAgICBpZiAoLS1kZXB0aCA9PSAwKSB7IGlmIChjaCA9PSBcIihcIikgc2F3U29tZXRoaW5nID0gdHJ1ZTsgYnJlYWs7IH1cbiAgICAgIH0gZWxzZSBpZiAoYnJhY2tldCA+PSAzICYmIGJyYWNrZXQgPCA2KSB7XG4gICAgICAgICsrZGVwdGg7XG4gICAgICB9IGVsc2UgaWYgKHdvcmRSRS50ZXN0KGNoKSkge1xuICAgICAgICBzYXdTb21ldGhpbmcgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICgvW1wiJ1xcL2BdLy50ZXN0KGNoKSkge1xuICAgICAgICBmb3IgKDs7IC0tcG9zKSB7XG4gICAgICAgICAgaWYgKHBvcyA9PSAwKSByZXR1cm5cbiAgICAgICAgICB2YXIgbmV4dCA9IHN0cmVhbS5zdHJpbmcuY2hhckF0KHBvcyAtIDEpXG4gICAgICAgICAgaWYgKG5leHQgPT0gY2ggJiYgc3RyZWFtLnN0cmluZy5jaGFyQXQocG9zIC0gMikgIT0gXCJcXFxcXCIpIHsgcG9zLS07IGJyZWFrIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzYXdTb21ldGhpbmcgJiYgIWRlcHRoKSB7XG4gICAgICAgICsrcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNhd1NvbWV0aGluZyAmJiAhZGVwdGgpIHN0YXRlLmZhdEFycm93QXQgPSBwb3M7XG4gIH1cblxuICAvLyBQYXJzZXJcblxuICB2YXIgYXRvbWljVHlwZXMgPSB7XCJhdG9tXCI6IHRydWUsIFwibnVtYmVyXCI6IHRydWUsIFwidmFyaWFibGVcIjogdHJ1ZSwgXCJzdHJpbmdcIjogdHJ1ZSwgXCJyZWdleHBcIjogdHJ1ZSwgXCJ0aGlzXCI6IHRydWUsIFwianNvbmxkLWtleXdvcmRcIjogdHJ1ZX07XG5cbiAgZnVuY3Rpb24gSlNMZXhpY2FsKGluZGVudGVkLCBjb2x1bW4sIHR5cGUsIGFsaWduLCBwcmV2LCBpbmZvKSB7XG4gICAgdGhpcy5pbmRlbnRlZCA9IGluZGVudGVkO1xuICAgIHRoaXMuY29sdW1uID0gY29sdW1uO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5wcmV2ID0gcHJldjtcbiAgICB0aGlzLmluZm8gPSBpbmZvO1xuICAgIGlmIChhbGlnbiAhPSBudWxsKSB0aGlzLmFsaWduID0gYWxpZ247XG4gIH1cblxuICBmdW5jdGlvbiBpblNjb3BlKHN0YXRlLCB2YXJuYW1lKSB7XG4gICAgZm9yICh2YXIgdiA9IHN0YXRlLmxvY2FsVmFyczsgdjsgdiA9IHYubmV4dClcbiAgICAgIGlmICh2Lm5hbWUgPT0gdmFybmFtZSkgcmV0dXJuIHRydWU7XG4gICAgZm9yICh2YXIgY3ggPSBzdGF0ZS5jb250ZXh0OyBjeDsgY3ggPSBjeC5wcmV2KSB7XG4gICAgICBmb3IgKHZhciB2ID0gY3gudmFyczsgdjsgdiA9IHYubmV4dClcbiAgICAgICAgaWYgKHYubmFtZSA9PSB2YXJuYW1lKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUpTKHN0YXRlLCBzdHlsZSwgdHlwZSwgY29udGVudCwgc3RyZWFtKSB7XG4gICAgdmFyIGNjID0gc3RhdGUuY2M7XG4gICAgLy8gQ29tbXVuaWNhdGUgb3VyIGNvbnRleHQgdG8gdGhlIGNvbWJpbmF0b3JzLlxuICAgIC8vIChMZXNzIHdhc3RlZnVsIHRoYW4gY29uc2luZyB1cCBhIGh1bmRyZWQgY2xvc3VyZXMgb24gZXZlcnkgY2FsbC4pXG4gICAgY3guc3RhdGUgPSBzdGF0ZTsgY3guc3RyZWFtID0gc3RyZWFtOyBjeC5tYXJrZWQgPSBudWxsLCBjeC5jYyA9IGNjOyBjeC5zdHlsZSA9IHN0eWxlO1xuXG4gICAgaWYgKCFzdGF0ZS5sZXhpY2FsLmhhc093blByb3BlcnR5KFwiYWxpZ25cIikpXG4gICAgICBzdGF0ZS5sZXhpY2FsLmFsaWduID0gdHJ1ZTtcblxuICAgIHdoaWxlKHRydWUpIHtcbiAgICAgIHZhciBjb21iaW5hdG9yID0gY2MubGVuZ3RoID8gY2MucG9wKCkgOiBqc29uTW9kZSA/IGV4cHJlc3Npb24gOiBzdGF0ZW1lbnQ7XG4gICAgICBpZiAoY29tYmluYXRvcih0eXBlLCBjb250ZW50KSkge1xuICAgICAgICB3aGlsZShjYy5sZW5ndGggJiYgY2NbY2MubGVuZ3RoIC0gMV0ubGV4KVxuICAgICAgICAgIGNjLnBvcCgpKCk7XG4gICAgICAgIGlmIChjeC5tYXJrZWQpIHJldHVybiBjeC5tYXJrZWQ7XG4gICAgICAgIGlmICh0eXBlID09IFwidmFyaWFibGVcIiAmJiBpblNjb3BlKHN0YXRlLCBjb250ZW50KSkgcmV0dXJuIFwidmFyaWFibGUtMlwiO1xuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ29tYmluYXRvciB1dGlsc1xuXG4gIHZhciBjeCA9IHtzdGF0ZTogbnVsbCwgY29sdW1uOiBudWxsLCBtYXJrZWQ6IG51bGwsIGNjOiBudWxsfTtcbiAgZnVuY3Rpb24gcGFzcygpIHtcbiAgICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBjeC5jYy5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gIH1cbiAgZnVuY3Rpb24gY29udCgpIHtcbiAgICBwYXNzLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgZnVuY3Rpb24gaW5MaXN0KG5hbWUsIGxpc3QpIHtcbiAgICBmb3IgKHZhciB2ID0gbGlzdDsgdjsgdiA9IHYubmV4dCkgaWYgKHYubmFtZSA9PSBuYW1lKSByZXR1cm4gdHJ1ZVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBmdW5jdGlvbiByZWdpc3Rlcih2YXJuYW1lKSB7XG4gICAgdmFyIHN0YXRlID0gY3guc3RhdGU7XG4gICAgY3gubWFya2VkID0gXCJkZWZcIjtcbiAgICBpZiAoc3RhdGUuY29udGV4dCkge1xuICAgICAgaWYgKHN0YXRlLmxleGljYWwuaW5mbyA9PSBcInZhclwiICYmIHN0YXRlLmNvbnRleHQgJiYgc3RhdGUuY29udGV4dC5ibG9jaykge1xuICAgICAgICAvLyBGSVhNRSBmdW5jdGlvbiBkZWNscyBhcmUgYWxzbyBub3QgYmxvY2sgc2NvcGVkXG4gICAgICAgIHZhciBuZXdDb250ZXh0ID0gcmVnaXN0ZXJWYXJTY29wZWQodmFybmFtZSwgc3RhdGUuY29udGV4dClcbiAgICAgICAgaWYgKG5ld0NvbnRleHQgIT0gbnVsbCkge1xuICAgICAgICAgIHN0YXRlLmNvbnRleHQgPSBuZXdDb250ZXh0XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWluTGlzdCh2YXJuYW1lLCBzdGF0ZS5sb2NhbFZhcnMpKSB7XG4gICAgICAgIHN0YXRlLmxvY2FsVmFycyA9IG5ldyBWYXIodmFybmFtZSwgc3RhdGUubG9jYWxWYXJzKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRmFsbCB0aHJvdWdoIG1lYW5zIHRoaXMgaXMgZ2xvYmFsXG4gICAgaWYgKHBhcnNlckNvbmZpZy5nbG9iYWxWYXJzICYmICFpbkxpc3QodmFybmFtZSwgc3RhdGUuZ2xvYmFsVmFycykpXG4gICAgICBzdGF0ZS5nbG9iYWxWYXJzID0gbmV3IFZhcih2YXJuYW1lLCBzdGF0ZS5nbG9iYWxWYXJzKVxuICB9XG4gIGZ1bmN0aW9uIHJlZ2lzdGVyVmFyU2NvcGVkKHZhcm5hbWUsIGNvbnRleHQpIHtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfSBlbHNlIGlmIChjb250ZXh0LmJsb2NrKSB7XG4gICAgICB2YXIgaW5uZXIgPSByZWdpc3RlclZhclNjb3BlZCh2YXJuYW1lLCBjb250ZXh0LnByZXYpXG4gICAgICBpZiAoIWlubmVyKSByZXR1cm4gbnVsbFxuICAgICAgaWYgKGlubmVyID09IGNvbnRleHQucHJldikgcmV0dXJuIGNvbnRleHRcbiAgICAgIHJldHVybiBuZXcgQ29udGV4dChpbm5lciwgY29udGV4dC52YXJzLCB0cnVlKVxuICAgIH0gZWxzZSBpZiAoaW5MaXN0KHZhcm5hbWUsIGNvbnRleHQudmFycykpIHtcbiAgICAgIHJldHVybiBjb250ZXh0XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgQ29udGV4dChjb250ZXh0LnByZXYsIG5ldyBWYXIodmFybmFtZSwgY29udGV4dC52YXJzKSwgZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaXNNb2RpZmllcihuYW1lKSB7XG4gICAgcmV0dXJuIG5hbWUgPT0gXCJwdWJsaWNcIiB8fCBuYW1lID09IFwicHJpdmF0ZVwiIHx8IG5hbWUgPT0gXCJwcm90ZWN0ZWRcIiB8fCBuYW1lID09IFwiYWJzdHJhY3RcIiB8fCBuYW1lID09IFwicmVhZG9ubHlcIlxuICB9XG5cbiAgLy8gQ29tYmluYXRvcnNcblxuICBmdW5jdGlvbiBDb250ZXh0KHByZXYsIHZhcnMsIGJsb2NrKSB7IHRoaXMucHJldiA9IHByZXY7IHRoaXMudmFycyA9IHZhcnM7IHRoaXMuYmxvY2sgPSBibG9jayB9XG4gIGZ1bmN0aW9uIFZhcihuYW1lLCBuZXh0KSB7IHRoaXMubmFtZSA9IG5hbWU7IHRoaXMubmV4dCA9IG5leHQgfVxuXG4gIHZhciBkZWZhdWx0VmFycyA9IG5ldyBWYXIoXCJ0aGlzXCIsIG5ldyBWYXIoXCJhcmd1bWVudHNcIiwgbnVsbCkpXG4gIGZ1bmN0aW9uIHB1c2hjb250ZXh0KCkge1xuICAgIGN4LnN0YXRlLmNvbnRleHQgPSBuZXcgQ29udGV4dChjeC5zdGF0ZS5jb250ZXh0LCBjeC5zdGF0ZS5sb2NhbFZhcnMsIGZhbHNlKVxuICAgIGN4LnN0YXRlLmxvY2FsVmFycyA9IGRlZmF1bHRWYXJzXG4gIH1cbiAgZnVuY3Rpb24gcHVzaGJsb2NrY29udGV4dCgpIHtcbiAgICBjeC5zdGF0ZS5jb250ZXh0ID0gbmV3IENvbnRleHQoY3guc3RhdGUuY29udGV4dCwgY3guc3RhdGUubG9jYWxWYXJzLCB0cnVlKVxuICAgIGN4LnN0YXRlLmxvY2FsVmFycyA9IG51bGxcbiAgfVxuICBmdW5jdGlvbiBwb3Bjb250ZXh0KCkge1xuICAgIGN4LnN0YXRlLmxvY2FsVmFycyA9IGN4LnN0YXRlLmNvbnRleHQudmFyc1xuICAgIGN4LnN0YXRlLmNvbnRleHQgPSBjeC5zdGF0ZS5jb250ZXh0LnByZXZcbiAgfVxuICBwb3Bjb250ZXh0LmxleCA9IHRydWVcbiAgZnVuY3Rpb24gcHVzaGxleCh0eXBlLCBpbmZvKSB7XG4gICAgdmFyIHJlc3VsdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHN0YXRlID0gY3guc3RhdGUsIGluZGVudCA9IHN0YXRlLmluZGVudGVkO1xuICAgICAgaWYgKHN0YXRlLmxleGljYWwudHlwZSA9PSBcInN0YXRcIikgaW5kZW50ID0gc3RhdGUubGV4aWNhbC5pbmRlbnRlZDtcbiAgICAgIGVsc2UgZm9yICh2YXIgb3V0ZXIgPSBzdGF0ZS5sZXhpY2FsOyBvdXRlciAmJiBvdXRlci50eXBlID09IFwiKVwiICYmIG91dGVyLmFsaWduOyBvdXRlciA9IG91dGVyLnByZXYpXG4gICAgICAgIGluZGVudCA9IG91dGVyLmluZGVudGVkO1xuICAgICAgc3RhdGUubGV4aWNhbCA9IG5ldyBKU0xleGljYWwoaW5kZW50LCBjeC5zdHJlYW0uY29sdW1uKCksIHR5cGUsIG51bGwsIHN0YXRlLmxleGljYWwsIGluZm8pO1xuICAgIH07XG4gICAgcmVzdWx0LmxleCA9IHRydWU7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBmdW5jdGlvbiBwb3BsZXgoKSB7XG4gICAgdmFyIHN0YXRlID0gY3guc3RhdGU7XG4gICAgaWYgKHN0YXRlLmxleGljYWwucHJldikge1xuICAgICAgaWYgKHN0YXRlLmxleGljYWwudHlwZSA9PSBcIilcIilcbiAgICAgICAgc3RhdGUuaW5kZW50ZWQgPSBzdGF0ZS5sZXhpY2FsLmluZGVudGVkO1xuICAgICAgc3RhdGUubGV4aWNhbCA9IHN0YXRlLmxleGljYWwucHJldjtcbiAgICB9XG4gIH1cbiAgcG9wbGV4LmxleCA9IHRydWU7XG5cbiAgZnVuY3Rpb24gZXhwZWN0KHdhbnRlZCkge1xuICAgIGZ1bmN0aW9uIGV4cCh0eXBlKSB7XG4gICAgICBpZiAodHlwZSA9PSB3YW50ZWQpIHJldHVybiBjb250KCk7XG4gICAgICBlbHNlIGlmICh3YW50ZWQgPT0gXCI7XCIgfHwgdHlwZSA9PSBcIn1cIiB8fCB0eXBlID09IFwiKVwiIHx8IHR5cGUgPT0gXCJdXCIpIHJldHVybiBwYXNzKCk7XG4gICAgICBlbHNlIHJldHVybiBjb250KGV4cCk7XG4gICAgfTtcbiAgICByZXR1cm4gZXhwO1xuICB9XG5cbiAgZnVuY3Rpb24gc3RhdGVtZW50KHR5cGUsIHZhbHVlKSB7XG4gICAgaWYgKHR5cGUgPT0gXCJ2YXJcIikgcmV0dXJuIGNvbnQocHVzaGxleChcInZhcmRlZlwiLCB2YWx1ZSksIHZhcmRlZiwgZXhwZWN0KFwiO1wiKSwgcG9wbGV4KTtcbiAgICBpZiAodHlwZSA9PSBcImtleXdvcmQgYVwiKSByZXR1cm4gY29udChwdXNobGV4KFwiZm9ybVwiKSwgcGFyZW5FeHByLCBzdGF0ZW1lbnQsIHBvcGxleCk7XG4gICAgaWYgKHR5cGUgPT0gXCJrZXl3b3JkIGJcIikgcmV0dXJuIGNvbnQocHVzaGxleChcImZvcm1cIiksIHN0YXRlbWVudCwgcG9wbGV4KTtcbiAgICBpZiAodHlwZSA9PSBcImtleXdvcmQgZFwiKSByZXR1cm4gY3guc3RyZWFtLm1hdGNoKC9eXFxzKiQvLCBmYWxzZSkgPyBjb250KCkgOiBjb250KHB1c2hsZXgoXCJzdGF0XCIpLCBtYXliZWV4cHJlc3Npb24sIGV4cGVjdChcIjtcIiksIHBvcGxleCk7XG4gICAgaWYgKHR5cGUgPT0gXCJkZWJ1Z2dlclwiKSByZXR1cm4gY29udChleHBlY3QoXCI7XCIpKTtcbiAgICBpZiAodHlwZSA9PSBcIntcIikgcmV0dXJuIGNvbnQocHVzaGxleChcIn1cIiksIHB1c2hibG9ja2NvbnRleHQsIGJsb2NrLCBwb3BsZXgsIHBvcGNvbnRleHQpO1xuICAgIGlmICh0eXBlID09IFwiO1wiKSByZXR1cm4gY29udCgpO1xuICAgIGlmICh0eXBlID09IFwiaWZcIikge1xuICAgICAgaWYgKGN4LnN0YXRlLmxleGljYWwuaW5mbyA9PSBcImVsc2VcIiAmJiBjeC5zdGF0ZS5jY1tjeC5zdGF0ZS5jYy5sZW5ndGggLSAxXSA9PSBwb3BsZXgpXG4gICAgICAgIGN4LnN0YXRlLmNjLnBvcCgpKCk7XG4gICAgICByZXR1cm4gY29udChwdXNobGV4KFwiZm9ybVwiKSwgcGFyZW5FeHByLCBzdGF0ZW1lbnQsIHBvcGxleCwgbWF5YmVlbHNlKTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gY29udChmdW5jdGlvbmRlZik7XG4gICAgaWYgKHR5cGUgPT0gXCJmb3JcIikgcmV0dXJuIGNvbnQocHVzaGxleChcImZvcm1cIiksIGZvcnNwZWMsIHN0YXRlbWVudCwgcG9wbGV4KTtcbiAgICBpZiAodHlwZSA9PSBcImNsYXNzXCIgfHwgKGlzVFMgJiYgdmFsdWUgPT0gXCJpbnRlcmZhY2VcIikpIHtcbiAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiXG4gICAgICByZXR1cm4gY29udChwdXNobGV4KFwiZm9ybVwiLCB0eXBlID09IFwiY2xhc3NcIiA/IHR5cGUgOiB2YWx1ZSksIGNsYXNzTmFtZSwgcG9wbGV4KVxuICAgIH1cbiAgICBpZiAodHlwZSA9PSBcInZhcmlhYmxlXCIpIHtcbiAgICAgIGlmIChpc1RTICYmIHZhbHVlID09IFwiZGVjbGFyZVwiKSB7XG4gICAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiXG4gICAgICAgIHJldHVybiBjb250KHN0YXRlbWVudClcbiAgICAgIH0gZWxzZSBpZiAoaXNUUyAmJiAodmFsdWUgPT0gXCJtb2R1bGVcIiB8fCB2YWx1ZSA9PSBcImVudW1cIiB8fCB2YWx1ZSA9PSBcInR5cGVcIikgJiYgY3guc3RyZWFtLm1hdGNoKC9eXFxzKlxcdy8sIGZhbHNlKSkge1xuICAgICAgICBjeC5tYXJrZWQgPSBcImtleXdvcmRcIlxuICAgICAgICBpZiAodmFsdWUgPT0gXCJlbnVtXCIpIHJldHVybiBjb250KGVudW1kZWYpO1xuICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBcInR5cGVcIikgcmV0dXJuIGNvbnQodHlwZW5hbWUsIGV4cGVjdChcIm9wZXJhdG9yXCIpLCB0eXBlZXhwciwgZXhwZWN0KFwiO1wiKSk7XG4gICAgICAgIGVsc2UgcmV0dXJuIGNvbnQocHVzaGxleChcImZvcm1cIiksIHBhdHRlcm4sIGV4cGVjdChcIntcIiksIHB1c2hsZXgoXCJ9XCIpLCBibG9jaywgcG9wbGV4LCBwb3BsZXgpXG4gICAgICB9IGVsc2UgaWYgKGlzVFMgJiYgdmFsdWUgPT0gXCJuYW1lc3BhY2VcIikge1xuICAgICAgICBjeC5tYXJrZWQgPSBcImtleXdvcmRcIlxuICAgICAgICByZXR1cm4gY29udChwdXNobGV4KFwiZm9ybVwiKSwgZXhwcmVzc2lvbiwgc3RhdGVtZW50LCBwb3BsZXgpXG4gICAgICB9IGVsc2UgaWYgKGlzVFMgJiYgdmFsdWUgPT0gXCJhYnN0cmFjdFwiKSB7XG4gICAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiXG4gICAgICAgIHJldHVybiBjb250KHN0YXRlbWVudClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjb250KHB1c2hsZXgoXCJzdGF0XCIpLCBtYXliZWxhYmVsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGUgPT0gXCJzd2l0Y2hcIikgcmV0dXJuIGNvbnQocHVzaGxleChcImZvcm1cIiksIHBhcmVuRXhwciwgZXhwZWN0KFwie1wiKSwgcHVzaGxleChcIn1cIiwgXCJzd2l0Y2hcIiksIHB1c2hibG9ja2NvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLCBwb3BsZXgsIHBvcGxleCwgcG9wY29udGV4dCk7XG4gICAgaWYgKHR5cGUgPT0gXCJjYXNlXCIpIHJldHVybiBjb250KGV4cHJlc3Npb24sIGV4cGVjdChcIjpcIikpO1xuICAgIGlmICh0eXBlID09IFwiZGVmYXVsdFwiKSByZXR1cm4gY29udChleHBlY3QoXCI6XCIpKTtcbiAgICBpZiAodHlwZSA9PSBcImNhdGNoXCIpIHJldHVybiBjb250KHB1c2hsZXgoXCJmb3JtXCIpLCBwdXNoY29udGV4dCwgbWF5YmVDYXRjaEJpbmRpbmcsIHN0YXRlbWVudCwgcG9wbGV4LCBwb3Bjb250ZXh0KTtcbiAgICBpZiAodHlwZSA9PSBcImV4cG9ydFwiKSByZXR1cm4gY29udChwdXNobGV4KFwic3RhdFwiKSwgYWZ0ZXJFeHBvcnQsIHBvcGxleCk7XG4gICAgaWYgKHR5cGUgPT0gXCJpbXBvcnRcIikgcmV0dXJuIGNvbnQocHVzaGxleChcInN0YXRcIiksIGFmdGVySW1wb3J0LCBwb3BsZXgpO1xuICAgIGlmICh0eXBlID09IFwiYXN5bmNcIikgcmV0dXJuIGNvbnQoc3RhdGVtZW50KVxuICAgIGlmICh2YWx1ZSA9PSBcIkBcIikgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbiwgc3RhdGVtZW50KVxuICAgIHJldHVybiBwYXNzKHB1c2hsZXgoXCJzdGF0XCIpLCBleHByZXNzaW9uLCBleHBlY3QoXCI7XCIpLCBwb3BsZXgpO1xuICB9XG4gIGZ1bmN0aW9uIG1heWJlQ2F0Y2hCaW5kaW5nKHR5cGUpIHtcbiAgICBpZiAodHlwZSA9PSBcIihcIikgcmV0dXJuIGNvbnQoZnVuYXJnLCBleHBlY3QoXCIpXCIpKVxuICB9XG4gIGZ1bmN0aW9uIGV4cHJlc3Npb24odHlwZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gZXhwcmVzc2lvbklubmVyKHR5cGUsIHZhbHVlLCBmYWxzZSk7XG4gIH1cbiAgZnVuY3Rpb24gZXhwcmVzc2lvbk5vQ29tbWEodHlwZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gZXhwcmVzc2lvbklubmVyKHR5cGUsIHZhbHVlLCB0cnVlKTtcbiAgfVxuICBmdW5jdGlvbiBwYXJlbkV4cHIodHlwZSkge1xuICAgIGlmICh0eXBlICE9IFwiKFwiKSByZXR1cm4gcGFzcygpXG4gICAgcmV0dXJuIGNvbnQocHVzaGxleChcIilcIiksIG1heWJlZXhwcmVzc2lvbiwgZXhwZWN0KFwiKVwiKSwgcG9wbGV4KVxuICB9XG4gIGZ1bmN0aW9uIGV4cHJlc3Npb25Jbm5lcih0eXBlLCB2YWx1ZSwgbm9Db21tYSkge1xuICAgIGlmIChjeC5zdGF0ZS5mYXRBcnJvd0F0ID09IGN4LnN0cmVhbS5zdGFydCkge1xuICAgICAgdmFyIGJvZHkgPSBub0NvbW1hID8gYXJyb3dCb2R5Tm9Db21tYSA6IGFycm93Qm9keTtcbiAgICAgIGlmICh0eXBlID09IFwiKFwiKSByZXR1cm4gY29udChwdXNoY29udGV4dCwgcHVzaGxleChcIilcIiksIGNvbW1hc2VwKGZ1bmFyZywgXCIpXCIpLCBwb3BsZXgsIGV4cGVjdChcIj0+XCIpLCBib2R5LCBwb3Bjb250ZXh0KTtcbiAgICAgIGVsc2UgaWYgKHR5cGUgPT0gXCJ2YXJpYWJsZVwiKSByZXR1cm4gcGFzcyhwdXNoY29udGV4dCwgcGF0dGVybiwgZXhwZWN0KFwiPT5cIiksIGJvZHksIHBvcGNvbnRleHQpO1xuICAgIH1cblxuICAgIHZhciBtYXliZW9wID0gbm9Db21tYSA/IG1heWJlb3BlcmF0b3JOb0NvbW1hIDogbWF5YmVvcGVyYXRvckNvbW1hO1xuICAgIGlmIChhdG9taWNUeXBlcy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgcmV0dXJuIGNvbnQobWF5YmVvcCk7XG4gICAgaWYgKHR5cGUgPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gY29udChmdW5jdGlvbmRlZiwgbWF5YmVvcCk7XG4gICAgaWYgKHR5cGUgPT0gXCJjbGFzc1wiIHx8IChpc1RTICYmIHZhbHVlID09IFwiaW50ZXJmYWNlXCIpKSB7IGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiOyByZXR1cm4gY29udChwdXNobGV4KFwiZm9ybVwiKSwgY2xhc3NFeHByZXNzaW9uLCBwb3BsZXgpOyB9XG4gICAgaWYgKHR5cGUgPT0gXCJrZXl3b3JkIGNcIiB8fCB0eXBlID09IFwiYXN5bmNcIikgcmV0dXJuIGNvbnQobm9Db21tYSA/IGV4cHJlc3Npb25Ob0NvbW1hIDogZXhwcmVzc2lvbik7XG4gICAgaWYgKHR5cGUgPT0gXCIoXCIpIHJldHVybiBjb250KHB1c2hsZXgoXCIpXCIpLCBtYXliZWV4cHJlc3Npb24sIGV4cGVjdChcIilcIiksIHBvcGxleCwgbWF5YmVvcCk7XG4gICAgaWYgKHR5cGUgPT0gXCJvcGVyYXRvclwiIHx8IHR5cGUgPT0gXCJzcHJlYWRcIikgcmV0dXJuIGNvbnQobm9Db21tYSA/IGV4cHJlc3Npb25Ob0NvbW1hIDogZXhwcmVzc2lvbik7XG4gICAgaWYgKHR5cGUgPT0gXCJbXCIpIHJldHVybiBjb250KHB1c2hsZXgoXCJdXCIpLCBhcnJheUxpdGVyYWwsIHBvcGxleCwgbWF5YmVvcCk7XG4gICAgaWYgKHR5cGUgPT0gXCJ7XCIpIHJldHVybiBjb250Q29tbWFzZXAob2JqcHJvcCwgXCJ9XCIsIG51bGwsIG1heWJlb3ApO1xuICAgIGlmICh0eXBlID09IFwicXVhc2lcIikgcmV0dXJuIHBhc3MocXVhc2ksIG1heWJlb3ApO1xuICAgIGlmICh0eXBlID09IFwibmV3XCIpIHJldHVybiBjb250KG1heWJlVGFyZ2V0KG5vQ29tbWEpKTtcbiAgICBpZiAodHlwZSA9PSBcImltcG9ydFwiKSByZXR1cm4gY29udChleHByZXNzaW9uKTtcbiAgICByZXR1cm4gY29udCgpO1xuICB9XG4gIGZ1bmN0aW9uIG1heWJlZXhwcmVzc2lvbih0eXBlKSB7XG4gICAgaWYgKHR5cGUubWF0Y2goL1s7XFx9XFwpXFxdLF0vKSkgcmV0dXJuIHBhc3MoKTtcbiAgICByZXR1cm4gcGFzcyhleHByZXNzaW9uKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1heWJlb3BlcmF0b3JDb21tYSh0eXBlLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlID09IFwiLFwiKSByZXR1cm4gY29udChtYXliZWV4cHJlc3Npb24pO1xuICAgIHJldHVybiBtYXliZW9wZXJhdG9yTm9Db21tYSh0eXBlLCB2YWx1ZSwgZmFsc2UpO1xuICB9XG4gIGZ1bmN0aW9uIG1heWJlb3BlcmF0b3JOb0NvbW1hKHR5cGUsIHZhbHVlLCBub0NvbW1hKSB7XG4gICAgdmFyIG1lID0gbm9Db21tYSA9PSBmYWxzZSA/IG1heWJlb3BlcmF0b3JDb21tYSA6IG1heWJlb3BlcmF0b3JOb0NvbW1hO1xuICAgIHZhciBleHByID0gbm9Db21tYSA9PSBmYWxzZSA/IGV4cHJlc3Npb24gOiBleHByZXNzaW9uTm9Db21tYTtcbiAgICBpZiAodHlwZSA9PSBcIj0+XCIpIHJldHVybiBjb250KHB1c2hjb250ZXh0LCBub0NvbW1hID8gYXJyb3dCb2R5Tm9Db21tYSA6IGFycm93Qm9keSwgcG9wY29udGV4dCk7XG4gICAgaWYgKHR5cGUgPT0gXCJvcGVyYXRvclwiKSB7XG4gICAgICBpZiAoL1xcK1xcK3wtLS8udGVzdCh2YWx1ZSkgfHwgaXNUUyAmJiB2YWx1ZSA9PSBcIiFcIikgcmV0dXJuIGNvbnQobWUpO1xuICAgICAgaWYgKGlzVFMgJiYgdmFsdWUgPT0gXCI8XCIgJiYgY3guc3RyZWFtLm1hdGNoKC9eKFtePD5dfDxbXjw+XSo+KSo+XFxzKlxcKC8sIGZhbHNlKSlcbiAgICAgICAgcmV0dXJuIGNvbnQocHVzaGxleChcIj5cIiksIGNvbW1hc2VwKHR5cGVleHByLCBcIj5cIiksIHBvcGxleCwgbWUpO1xuICAgICAgaWYgKHZhbHVlID09IFwiP1wiKSByZXR1cm4gY29udChleHByZXNzaW9uLCBleHBlY3QoXCI6XCIpLCBleHByKTtcbiAgICAgIHJldHVybiBjb250KGV4cHIpO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PSBcInF1YXNpXCIpIHsgcmV0dXJuIHBhc3MocXVhc2ksIG1lKTsgfVxuICAgIGlmICh0eXBlID09IFwiO1wiKSByZXR1cm47XG4gICAgaWYgKHR5cGUgPT0gXCIoXCIpIHJldHVybiBjb250Q29tbWFzZXAoZXhwcmVzc2lvbk5vQ29tbWEsIFwiKVwiLCBcImNhbGxcIiwgbWUpO1xuICAgIGlmICh0eXBlID09IFwiLlwiKSByZXR1cm4gY29udChwcm9wZXJ0eSwgbWUpO1xuICAgIGlmICh0eXBlID09IFwiW1wiKSByZXR1cm4gY29udChwdXNobGV4KFwiXVwiKSwgbWF5YmVleHByZXNzaW9uLCBleHBlY3QoXCJdXCIpLCBwb3BsZXgsIG1lKTtcbiAgICBpZiAoaXNUUyAmJiB2YWx1ZSA9PSBcImFzXCIpIHsgY3gubWFya2VkID0gXCJrZXl3b3JkXCI7IHJldHVybiBjb250KHR5cGVleHByLCBtZSkgfVxuICAgIGlmICh0eXBlID09IFwicmVnZXhwXCIpIHtcbiAgICAgIGN4LnN0YXRlLmxhc3RUeXBlID0gY3gubWFya2VkID0gXCJvcGVyYXRvclwiXG4gICAgICBjeC5zdHJlYW0uYmFja1VwKGN4LnN0cmVhbS5wb3MgLSBjeC5zdHJlYW0uc3RhcnQgLSAxKVxuICAgICAgcmV0dXJuIGNvbnQoZXhwcilcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcXVhc2kodHlwZSwgdmFsdWUpIHtcbiAgICBpZiAodHlwZSAhPSBcInF1YXNpXCIpIHJldHVybiBwYXNzKCk7XG4gICAgaWYgKHZhbHVlLnNsaWNlKHZhbHVlLmxlbmd0aCAtIDIpICE9IFwiJHtcIikgcmV0dXJuIGNvbnQocXVhc2kpO1xuICAgIHJldHVybiBjb250KGV4cHJlc3Npb24sIGNvbnRpbnVlUXVhc2kpO1xuICB9XG4gIGZ1bmN0aW9uIGNvbnRpbnVlUXVhc2kodHlwZSkge1xuICAgIGlmICh0eXBlID09IFwifVwiKSB7XG4gICAgICBjeC5tYXJrZWQgPSBcInN0cmluZy0yXCI7XG4gICAgICBjeC5zdGF0ZS50b2tlbml6ZSA9IHRva2VuUXVhc2k7XG4gICAgICByZXR1cm4gY29udChxdWFzaSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGFycm93Qm9keSh0eXBlKSB7XG4gICAgZmluZEZhdEFycm93KGN4LnN0cmVhbSwgY3guc3RhdGUpO1xuICAgIHJldHVybiBwYXNzKHR5cGUgPT0gXCJ7XCIgPyBzdGF0ZW1lbnQgOiBleHByZXNzaW9uKTtcbiAgfVxuICBmdW5jdGlvbiBhcnJvd0JvZHlOb0NvbW1hKHR5cGUpIHtcbiAgICBmaW5kRmF0QXJyb3coY3guc3RyZWFtLCBjeC5zdGF0ZSk7XG4gICAgcmV0dXJuIHBhc3ModHlwZSA9PSBcIntcIiA/IHN0YXRlbWVudCA6IGV4cHJlc3Npb25Ob0NvbW1hKTtcbiAgfVxuICBmdW5jdGlvbiBtYXliZVRhcmdldChub0NvbW1hKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHR5cGUpIHtcbiAgICAgIGlmICh0eXBlID09IFwiLlwiKSByZXR1cm4gY29udChub0NvbW1hID8gdGFyZ2V0Tm9Db21tYSA6IHRhcmdldCk7XG4gICAgICBlbHNlIGlmICh0eXBlID09IFwidmFyaWFibGVcIiAmJiBpc1RTKSByZXR1cm4gY29udChtYXliZVR5cGVBcmdzLCBub0NvbW1hID8gbWF5YmVvcGVyYXRvck5vQ29tbWEgOiBtYXliZW9wZXJhdG9yQ29tbWEpXG4gICAgICBlbHNlIHJldHVybiBwYXNzKG5vQ29tbWEgPyBleHByZXNzaW9uTm9Db21tYSA6IGV4cHJlc3Npb24pO1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gdGFyZ2V0KF8sIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09IFwidGFyZ2V0XCIpIHsgY3gubWFya2VkID0gXCJrZXl3b3JkXCI7IHJldHVybiBjb250KG1heWJlb3BlcmF0b3JDb21tYSk7IH1cbiAgfVxuICBmdW5jdGlvbiB0YXJnZXROb0NvbW1hKF8sIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09IFwidGFyZ2V0XCIpIHsgY3gubWFya2VkID0gXCJrZXl3b3JkXCI7IHJldHVybiBjb250KG1heWJlb3BlcmF0b3JOb0NvbW1hKTsgfVxuICB9XG4gIGZ1bmN0aW9uIG1heWJlbGFiZWwodHlwZSkge1xuICAgIGlmICh0eXBlID09IFwiOlwiKSByZXR1cm4gY29udChwb3BsZXgsIHN0YXRlbWVudCk7XG4gICAgcmV0dXJuIHBhc3MobWF5YmVvcGVyYXRvckNvbW1hLCBleHBlY3QoXCI7XCIpLCBwb3BsZXgpO1xuICB9XG4gIGZ1bmN0aW9uIHByb3BlcnR5KHR5cGUpIHtcbiAgICBpZiAodHlwZSA9PSBcInZhcmlhYmxlXCIpIHtjeC5tYXJrZWQgPSBcInByb3BlcnR5XCI7IHJldHVybiBjb250KCk7fVxuICB9XG4gIGZ1bmN0aW9uIG9ianByb3AodHlwZSwgdmFsdWUpIHtcbiAgICBpZiAodHlwZSA9PSBcImFzeW5jXCIpIHtcbiAgICAgIGN4Lm1hcmtlZCA9IFwicHJvcGVydHlcIjtcbiAgICAgIHJldHVybiBjb250KG9ianByb3ApO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcInZhcmlhYmxlXCIgfHwgY3guc3R5bGUgPT0gXCJrZXl3b3JkXCIpIHtcbiAgICAgIGN4Lm1hcmtlZCA9IFwicHJvcGVydHlcIjtcbiAgICAgIGlmICh2YWx1ZSA9PSBcImdldFwiIHx8IHZhbHVlID09IFwic2V0XCIpIHJldHVybiBjb250KGdldHRlclNldHRlcik7XG4gICAgICB2YXIgbSAvLyBXb3JrIGFyb3VuZCBmYXQtYXJyb3ctZGV0ZWN0aW9uIGNvbXBsaWNhdGlvbiBmb3IgZGV0ZWN0aW5nIHR5cGVzY3JpcHQgdHlwZWQgYXJyb3cgcGFyYW1zXG4gICAgICBpZiAoaXNUUyAmJiBjeC5zdGF0ZS5mYXRBcnJvd0F0ID09IGN4LnN0cmVhbS5zdGFydCAmJiAobSA9IGN4LnN0cmVhbS5tYXRjaCgvXlxccyo6XFxzKi8sIGZhbHNlKSkpXG4gICAgICAgIGN4LnN0YXRlLmZhdEFycm93QXQgPSBjeC5zdHJlYW0ucG9zICsgbVswXS5sZW5ndGhcbiAgICAgIHJldHVybiBjb250KGFmdGVycHJvcCk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09IFwibnVtYmVyXCIgfHwgdHlwZSA9PSBcInN0cmluZ1wiKSB7XG4gICAgICBjeC5tYXJrZWQgPSBqc29ubGRNb2RlID8gXCJwcm9wZXJ0eVwiIDogKGN4LnN0eWxlICsgXCIgcHJvcGVydHlcIik7XG4gICAgICByZXR1cm4gY29udChhZnRlcnByb3ApO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcImpzb25sZC1rZXl3b3JkXCIpIHtcbiAgICAgIHJldHVybiBjb250KGFmdGVycHJvcCk7XG4gICAgfSBlbHNlIGlmIChpc1RTICYmIGlzTW9kaWZpZXIodmFsdWUpKSB7XG4gICAgICBjeC5tYXJrZWQgPSBcImtleXdvcmRcIlxuICAgICAgcmV0dXJuIGNvbnQob2JqcHJvcClcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJbXCIpIHtcbiAgICAgIHJldHVybiBjb250KGV4cHJlc3Npb24sIG1heWJldHlwZSwgZXhwZWN0KFwiXVwiKSwgYWZ0ZXJwcm9wKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJzcHJlYWRcIikge1xuICAgICAgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbk5vQ29tbWEsIGFmdGVycHJvcCk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PSBcIipcIikge1xuICAgICAgY3gubWFya2VkID0gXCJrZXl3b3JkXCI7XG4gICAgICByZXR1cm4gY29udChvYmpwcm9wKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCI6XCIpIHtcbiAgICAgIHJldHVybiBwYXNzKGFmdGVycHJvcClcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gZ2V0dGVyU2V0dGVyKHR5cGUpIHtcbiAgICBpZiAodHlwZSAhPSBcInZhcmlhYmxlXCIpIHJldHVybiBwYXNzKGFmdGVycHJvcCk7XG4gICAgY3gubWFya2VkID0gXCJwcm9wZXJ0eVwiO1xuICAgIHJldHVybiBjb250KGZ1bmN0aW9uZGVmKTtcbiAgfVxuICBmdW5jdGlvbiBhZnRlcnByb3AodHlwZSkge1xuICAgIGlmICh0eXBlID09IFwiOlwiKSByZXR1cm4gY29udChleHByZXNzaW9uTm9Db21tYSk7XG4gICAgaWYgKHR5cGUgPT0gXCIoXCIpIHJldHVybiBwYXNzKGZ1bmN0aW9uZGVmKTtcbiAgfVxuICBmdW5jdGlvbiBjb21tYXNlcCh3aGF0LCBlbmQsIHNlcCkge1xuICAgIGZ1bmN0aW9uIHByb2NlZWQodHlwZSwgdmFsdWUpIHtcbiAgICAgIGlmIChzZXAgPyBzZXAuaW5kZXhPZih0eXBlKSA+IC0xIDogdHlwZSA9PSBcIixcIikge1xuICAgICAgICB2YXIgbGV4ID0gY3guc3RhdGUubGV4aWNhbDtcbiAgICAgICAgaWYgKGxleC5pbmZvID09IFwiY2FsbFwiKSBsZXgucG9zID0gKGxleC5wb3MgfHwgMCkgKyAxO1xuICAgICAgICByZXR1cm4gY29udChmdW5jdGlvbih0eXBlLCB2YWx1ZSkge1xuICAgICAgICAgIGlmICh0eXBlID09IGVuZCB8fCB2YWx1ZSA9PSBlbmQpIHJldHVybiBwYXNzKClcbiAgICAgICAgICByZXR1cm4gcGFzcyh3aGF0KVxuICAgICAgICB9LCBwcm9jZWVkKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09IGVuZCB8fCB2YWx1ZSA9PSBlbmQpIHJldHVybiBjb250KCk7XG4gICAgICBpZiAoc2VwICYmIHNlcC5pbmRleE9mKFwiO1wiKSA+IC0xKSByZXR1cm4gcGFzcyh3aGF0KVxuICAgICAgcmV0dXJuIGNvbnQoZXhwZWN0KGVuZCkpO1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24odHlwZSwgdmFsdWUpIHtcbiAgICAgIGlmICh0eXBlID09IGVuZCB8fCB2YWx1ZSA9PSBlbmQpIHJldHVybiBjb250KCk7XG4gICAgICByZXR1cm4gcGFzcyh3aGF0LCBwcm9jZWVkKTtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGNvbnRDb21tYXNlcCh3aGF0LCBlbmQsIGluZm8pIHtcbiAgICBmb3IgKHZhciBpID0gMzsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcbiAgICAgIGN4LmNjLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICByZXR1cm4gY29udChwdXNobGV4KGVuZCwgaW5mbyksIGNvbW1hc2VwKHdoYXQsIGVuZCksIHBvcGxleCk7XG4gIH1cbiAgZnVuY3Rpb24gYmxvY2sodHlwZSkge1xuICAgIGlmICh0eXBlID09IFwifVwiKSByZXR1cm4gY29udCgpO1xuICAgIHJldHVybiBwYXNzKHN0YXRlbWVudCwgYmxvY2spO1xuICB9XG4gIGZ1bmN0aW9uIG1heWJldHlwZSh0eXBlLCB2YWx1ZSkge1xuICAgIGlmIChpc1RTKSB7XG4gICAgICBpZiAodHlwZSA9PSBcIjpcIikgcmV0dXJuIGNvbnQodHlwZWV4cHIpO1xuICAgICAgaWYgKHZhbHVlID09IFwiP1wiKSByZXR1cm4gY29udChtYXliZXR5cGUpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBtYXliZXR5cGVPckluKHR5cGUsIHZhbHVlKSB7XG4gICAgaWYgKGlzVFMgJiYgKHR5cGUgPT0gXCI6XCIgfHwgdmFsdWUgPT0gXCJpblwiKSkgcmV0dXJuIGNvbnQodHlwZWV4cHIpXG4gIH1cbiAgZnVuY3Rpb24gbWF5YmVyZXR0eXBlKHR5cGUpIHtcbiAgICBpZiAoaXNUUyAmJiB0eXBlID09IFwiOlwiKSB7XG4gICAgICBpZiAoY3guc3RyZWFtLm1hdGNoKC9eXFxzKlxcdytcXHMraXNcXGIvLCBmYWxzZSkpIHJldHVybiBjb250KGV4cHJlc3Npb24sIGlzS1csIHR5cGVleHByKVxuICAgICAgZWxzZSByZXR1cm4gY29udCh0eXBlZXhwcilcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gaXNLVyhfLCB2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PSBcImlzXCIpIHtcbiAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiXG4gICAgICByZXR1cm4gY29udCgpXG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHR5cGVleHByKHR5cGUsIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09IFwia2V5b2ZcIiB8fCB2YWx1ZSA9PSBcInR5cGVvZlwiIHx8IHZhbHVlID09IFwiaW5mZXJcIikge1xuICAgICAgY3gubWFya2VkID0gXCJrZXl3b3JkXCJcbiAgICAgIHJldHVybiBjb250KHZhbHVlID09IFwidHlwZW9mXCIgPyBleHByZXNzaW9uTm9Db21tYSA6IHR5cGVleHByKVxuICAgIH1cbiAgICBpZiAodHlwZSA9PSBcInZhcmlhYmxlXCIgfHwgdmFsdWUgPT0gXCJ2b2lkXCIpIHtcbiAgICAgIGN4Lm1hcmtlZCA9IFwidHlwZVwiXG4gICAgICByZXR1cm4gY29udChhZnRlclR5cGUpXG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PSBcInxcIiB8fCB2YWx1ZSA9PSBcIiZcIikgcmV0dXJuIGNvbnQodHlwZWV4cHIpXG4gICAgaWYgKHR5cGUgPT0gXCJzdHJpbmdcIiB8fCB0eXBlID09IFwibnVtYmVyXCIgfHwgdHlwZSA9PSBcImF0b21cIikgcmV0dXJuIGNvbnQoYWZ0ZXJUeXBlKTtcbiAgICBpZiAodHlwZSA9PSBcIltcIikgcmV0dXJuIGNvbnQocHVzaGxleChcIl1cIiksIGNvbW1hc2VwKHR5cGVleHByLCBcIl1cIiwgXCIsXCIpLCBwb3BsZXgsIGFmdGVyVHlwZSlcbiAgICBpZiAodHlwZSA9PSBcIntcIikgcmV0dXJuIGNvbnQocHVzaGxleChcIn1cIiksIGNvbW1hc2VwKHR5cGVwcm9wLCBcIn1cIiwgXCIsO1wiKSwgcG9wbGV4LCBhZnRlclR5cGUpXG4gICAgaWYgKHR5cGUgPT0gXCIoXCIpIHJldHVybiBjb250KGNvbW1hc2VwKHR5cGVhcmcsIFwiKVwiKSwgbWF5YmVSZXR1cm5UeXBlLCBhZnRlclR5cGUpXG4gICAgaWYgKHR5cGUgPT0gXCI8XCIpIHJldHVybiBjb250KGNvbW1hc2VwKHR5cGVleHByLCBcIj5cIiksIHR5cGVleHByKVxuICB9XG4gIGZ1bmN0aW9uIG1heWJlUmV0dXJuVHlwZSh0eXBlKSB7XG4gICAgaWYgKHR5cGUgPT0gXCI9PlwiKSByZXR1cm4gY29udCh0eXBlZXhwcilcbiAgfVxuICBmdW5jdGlvbiB0eXBlcHJvcCh0eXBlLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlID09IFwidmFyaWFibGVcIiB8fCBjeC5zdHlsZSA9PSBcImtleXdvcmRcIikge1xuICAgICAgY3gubWFya2VkID0gXCJwcm9wZXJ0eVwiXG4gICAgICByZXR1cm4gY29udCh0eXBlcHJvcClcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09IFwiP1wiIHx8IHR5cGUgPT0gXCJudW1iZXJcIiB8fCB0eXBlID09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiBjb250KHR5cGVwcm9wKVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcIjpcIikge1xuICAgICAgcmV0dXJuIGNvbnQodHlwZWV4cHIpXG4gICAgfSBlbHNlIGlmICh0eXBlID09IFwiW1wiKSB7XG4gICAgICByZXR1cm4gY29udChleHBlY3QoXCJ2YXJpYWJsZVwiKSwgbWF5YmV0eXBlT3JJbiwgZXhwZWN0KFwiXVwiKSwgdHlwZXByb3ApXG4gICAgfSBlbHNlIGlmICh0eXBlID09IFwiKFwiKSB7XG4gICAgICByZXR1cm4gcGFzcyhmdW5jdGlvbmRlY2wsIHR5cGVwcm9wKVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiB0eXBlYXJnKHR5cGUsIHZhbHVlKSB7XG4gICAgaWYgKHR5cGUgPT0gXCJ2YXJpYWJsZVwiICYmIGN4LnN0cmVhbS5tYXRjaCgvXlxccypbPzpdLywgZmFsc2UpIHx8IHZhbHVlID09IFwiP1wiKSByZXR1cm4gY29udCh0eXBlYXJnKVxuICAgIGlmICh0eXBlID09IFwiOlwiKSByZXR1cm4gY29udCh0eXBlZXhwcilcbiAgICBpZiAodHlwZSA9PSBcInNwcmVhZFwiKSByZXR1cm4gY29udCh0eXBlYXJnKVxuICAgIHJldHVybiBwYXNzKHR5cGVleHByKVxuICB9XG4gIGZ1bmN0aW9uIGFmdGVyVHlwZSh0eXBlLCB2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PSBcIjxcIikgcmV0dXJuIGNvbnQocHVzaGxleChcIj5cIiksIGNvbW1hc2VwKHR5cGVleHByLCBcIj5cIiksIHBvcGxleCwgYWZ0ZXJUeXBlKVxuICAgIGlmICh2YWx1ZSA9PSBcInxcIiB8fCB0eXBlID09IFwiLlwiIHx8IHZhbHVlID09IFwiJlwiKSByZXR1cm4gY29udCh0eXBlZXhwcilcbiAgICBpZiAodHlwZSA9PSBcIltcIikgcmV0dXJuIGNvbnQodHlwZWV4cHIsIGV4cGVjdChcIl1cIiksIGFmdGVyVHlwZSlcbiAgICBpZiAodmFsdWUgPT0gXCJleHRlbmRzXCIgfHwgdmFsdWUgPT0gXCJpbXBsZW1lbnRzXCIpIHsgY3gubWFya2VkID0gXCJrZXl3b3JkXCI7IHJldHVybiBjb250KHR5cGVleHByKSB9XG4gICAgaWYgKHZhbHVlID09IFwiP1wiKSByZXR1cm4gY29udCh0eXBlZXhwciwgZXhwZWN0KFwiOlwiKSwgdHlwZWV4cHIpXG4gIH1cbiAgZnVuY3Rpb24gbWF5YmVUeXBlQXJncyhfLCB2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PSBcIjxcIikgcmV0dXJuIGNvbnQocHVzaGxleChcIj5cIiksIGNvbW1hc2VwKHR5cGVleHByLCBcIj5cIiksIHBvcGxleCwgYWZ0ZXJUeXBlKVxuICB9XG4gIGZ1bmN0aW9uIHR5cGVwYXJhbSgpIHtcbiAgICByZXR1cm4gcGFzcyh0eXBlZXhwciwgbWF5YmVUeXBlRGVmYXVsdClcbiAgfVxuICBmdW5jdGlvbiBtYXliZVR5cGVEZWZhdWx0KF8sIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09IFwiPVwiKSByZXR1cm4gY29udCh0eXBlZXhwcilcbiAgfVxuICBmdW5jdGlvbiB2YXJkZWYoXywgdmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT0gXCJlbnVtXCIpIHtjeC5tYXJrZWQgPSBcImtleXdvcmRcIjsgcmV0dXJuIGNvbnQoZW51bWRlZil9XG4gICAgcmV0dXJuIHBhc3MocGF0dGVybiwgbWF5YmV0eXBlLCBtYXliZUFzc2lnbiwgdmFyZGVmQ29udCk7XG4gIH1cbiAgZnVuY3Rpb24gcGF0dGVybih0eXBlLCB2YWx1ZSkge1xuICAgIGlmIChpc1RTICYmIGlzTW9kaWZpZXIodmFsdWUpKSB7IGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiOyByZXR1cm4gY29udChwYXR0ZXJuKSB9XG4gICAgaWYgKHR5cGUgPT0gXCJ2YXJpYWJsZVwiKSB7IHJlZ2lzdGVyKHZhbHVlKTsgcmV0dXJuIGNvbnQoKTsgfVxuICAgIGlmICh0eXBlID09IFwic3ByZWFkXCIpIHJldHVybiBjb250KHBhdHRlcm4pO1xuICAgIGlmICh0eXBlID09IFwiW1wiKSByZXR1cm4gY29udENvbW1hc2VwKGVsdHBhdHRlcm4sIFwiXVwiKTtcbiAgICBpZiAodHlwZSA9PSBcIntcIikgcmV0dXJuIGNvbnRDb21tYXNlcChwcm9wcGF0dGVybiwgXCJ9XCIpO1xuICB9XG4gIGZ1bmN0aW9uIHByb3BwYXR0ZXJuKHR5cGUsIHZhbHVlKSB7XG4gICAgaWYgKHR5cGUgPT0gXCJ2YXJpYWJsZVwiICYmICFjeC5zdHJlYW0ubWF0Y2goL15cXHMqOi8sIGZhbHNlKSkge1xuICAgICAgcmVnaXN0ZXIodmFsdWUpO1xuICAgICAgcmV0dXJuIGNvbnQobWF5YmVBc3NpZ24pO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PSBcInZhcmlhYmxlXCIpIGN4Lm1hcmtlZCA9IFwicHJvcGVydHlcIjtcbiAgICBpZiAodHlwZSA9PSBcInNwcmVhZFwiKSByZXR1cm4gY29udChwYXR0ZXJuKTtcbiAgICBpZiAodHlwZSA9PSBcIn1cIikgcmV0dXJuIHBhc3MoKTtcbiAgICBpZiAodHlwZSA9PSBcIltcIikgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbiwgZXhwZWN0KCddJyksIGV4cGVjdCgnOicpLCBwcm9wcGF0dGVybik7XG4gICAgcmV0dXJuIGNvbnQoZXhwZWN0KFwiOlwiKSwgcGF0dGVybiwgbWF5YmVBc3NpZ24pO1xuICB9XG4gIGZ1bmN0aW9uIGVsdHBhdHRlcm4oKSB7XG4gICAgcmV0dXJuIHBhc3MocGF0dGVybiwgbWF5YmVBc3NpZ24pXG4gIH1cbiAgZnVuY3Rpb24gbWF5YmVBc3NpZ24oX3R5cGUsIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09IFwiPVwiKSByZXR1cm4gY29udChleHByZXNzaW9uTm9Db21tYSk7XG4gIH1cbiAgZnVuY3Rpb24gdmFyZGVmQ29udCh0eXBlKSB7XG4gICAgaWYgKHR5cGUgPT0gXCIsXCIpIHJldHVybiBjb250KHZhcmRlZik7XG4gIH1cbiAgZnVuY3Rpb24gbWF5YmVlbHNlKHR5cGUsIHZhbHVlKSB7XG4gICAgaWYgKHR5cGUgPT0gXCJrZXl3b3JkIGJcIiAmJiB2YWx1ZSA9PSBcImVsc2VcIikgcmV0dXJuIGNvbnQocHVzaGxleChcImZvcm1cIiwgXCJlbHNlXCIpLCBzdGF0ZW1lbnQsIHBvcGxleCk7XG4gIH1cbiAgZnVuY3Rpb24gZm9yc3BlYyh0eXBlLCB2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PSBcImF3YWl0XCIpIHJldHVybiBjb250KGZvcnNwZWMpO1xuICAgIGlmICh0eXBlID09IFwiKFwiKSByZXR1cm4gY29udChwdXNobGV4KFwiKVwiKSwgZm9yc3BlYzEsIHBvcGxleCk7XG4gIH1cbiAgZnVuY3Rpb24gZm9yc3BlYzEodHlwZSkge1xuICAgIGlmICh0eXBlID09IFwidmFyXCIpIHJldHVybiBjb250KHZhcmRlZiwgZm9yc3BlYzIpO1xuICAgIGlmICh0eXBlID09IFwidmFyaWFibGVcIikgcmV0dXJuIGNvbnQoZm9yc3BlYzIpO1xuICAgIHJldHVybiBwYXNzKGZvcnNwZWMyKVxuICB9XG4gIGZ1bmN0aW9uIGZvcnNwZWMyKHR5cGUsIHZhbHVlKSB7XG4gICAgaWYgKHR5cGUgPT0gXCIpXCIpIHJldHVybiBjb250KClcbiAgICBpZiAodHlwZSA9PSBcIjtcIikgcmV0dXJuIGNvbnQoZm9yc3BlYzIpXG4gICAgaWYgKHZhbHVlID09IFwiaW5cIiB8fCB2YWx1ZSA9PSBcIm9mXCIpIHsgY3gubWFya2VkID0gXCJrZXl3b3JkXCI7IHJldHVybiBjb250KGV4cHJlc3Npb24sIGZvcnNwZWMyKSB9XG4gICAgcmV0dXJuIHBhc3MoZXhwcmVzc2lvbiwgZm9yc3BlYzIpXG4gIH1cbiAgZnVuY3Rpb24gZnVuY3Rpb25kZWYodHlwZSwgdmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT0gXCIqXCIpIHtjeC5tYXJrZWQgPSBcImtleXdvcmRcIjsgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYpO31cbiAgICBpZiAodHlwZSA9PSBcInZhcmlhYmxlXCIpIHtyZWdpc3Rlcih2YWx1ZSk7IHJldHVybiBjb250KGZ1bmN0aW9uZGVmKTt9XG4gICAgaWYgKHR5cGUgPT0gXCIoXCIpIHJldHVybiBjb250KHB1c2hjb250ZXh0LCBwdXNobGV4KFwiKVwiKSwgY29tbWFzZXAoZnVuYXJnLCBcIilcIiksIHBvcGxleCwgbWF5YmVyZXR0eXBlLCBzdGF0ZW1lbnQsIHBvcGNvbnRleHQpO1xuICAgIGlmIChpc1RTICYmIHZhbHVlID09IFwiPFwiKSByZXR1cm4gY29udChwdXNobGV4KFwiPlwiKSwgY29tbWFzZXAodHlwZXBhcmFtLCBcIj5cIiksIHBvcGxleCwgZnVuY3Rpb25kZWYpXG4gIH1cbiAgZnVuY3Rpb24gZnVuY3Rpb25kZWNsKHR5cGUsIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09IFwiKlwiKSB7Y3gubWFya2VkID0gXCJrZXl3b3JkXCI7IHJldHVybiBjb250KGZ1bmN0aW9uZGVjbCk7fVxuICAgIGlmICh0eXBlID09IFwidmFyaWFibGVcIikge3JlZ2lzdGVyKHZhbHVlKTsgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWNsKTt9XG4gICAgaWYgKHR5cGUgPT0gXCIoXCIpIHJldHVybiBjb250KHB1c2hjb250ZXh0LCBwdXNobGV4KFwiKVwiKSwgY29tbWFzZXAoZnVuYXJnLCBcIilcIiksIHBvcGxleCwgbWF5YmVyZXR0eXBlLCBwb3Bjb250ZXh0KTtcbiAgICBpZiAoaXNUUyAmJiB2YWx1ZSA9PSBcIjxcIikgcmV0dXJuIGNvbnQocHVzaGxleChcIj5cIiksIGNvbW1hc2VwKHR5cGVwYXJhbSwgXCI+XCIpLCBwb3BsZXgsIGZ1bmN0aW9uZGVjbClcbiAgfVxuICBmdW5jdGlvbiB0eXBlbmFtZSh0eXBlLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlID09IFwia2V5d29yZFwiIHx8IHR5cGUgPT0gXCJ2YXJpYWJsZVwiKSB7XG4gICAgICBjeC5tYXJrZWQgPSBcInR5cGVcIlxuICAgICAgcmV0dXJuIGNvbnQodHlwZW5hbWUpXG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PSBcIjxcIikge1xuICAgICAgcmV0dXJuIGNvbnQocHVzaGxleChcIj5cIiksIGNvbW1hc2VwKHR5cGVwYXJhbSwgXCI+XCIpLCBwb3BsZXgpXG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGZ1bmFyZyh0eXBlLCB2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PSBcIkBcIikgY29udChleHByZXNzaW9uLCBmdW5hcmcpXG4gICAgaWYgKHR5cGUgPT0gXCJzcHJlYWRcIikgcmV0dXJuIGNvbnQoZnVuYXJnKTtcbiAgICBpZiAoaXNUUyAmJiBpc01vZGlmaWVyKHZhbHVlKSkgeyBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjsgcmV0dXJuIGNvbnQoZnVuYXJnKTsgfVxuICAgIGlmIChpc1RTICYmIHR5cGUgPT0gXCJ0aGlzXCIpIHJldHVybiBjb250KG1heWJldHlwZSwgbWF5YmVBc3NpZ24pXG4gICAgcmV0dXJuIHBhc3MocGF0dGVybiwgbWF5YmV0eXBlLCBtYXliZUFzc2lnbik7XG4gIH1cbiAgZnVuY3Rpb24gY2xhc3NFeHByZXNzaW9uKHR5cGUsIHZhbHVlKSB7XG4gICAgLy8gQ2xhc3MgZXhwcmVzc2lvbnMgbWF5IGhhdmUgYW4gb3B0aW9uYWwgbmFtZS5cbiAgICBpZiAodHlwZSA9PSBcInZhcmlhYmxlXCIpIHJldHVybiBjbGFzc05hbWUodHlwZSwgdmFsdWUpO1xuICAgIHJldHVybiBjbGFzc05hbWVBZnRlcih0eXBlLCB2YWx1ZSk7XG4gIH1cbiAgZnVuY3Rpb24gY2xhc3NOYW1lKHR5cGUsIHZhbHVlKSB7XG4gICAgaWYgKHR5cGUgPT0gXCJ2YXJpYWJsZVwiKSB7cmVnaXN0ZXIodmFsdWUpOyByZXR1cm4gY29udChjbGFzc05hbWVBZnRlcik7fVxuICB9XG4gIGZ1bmN0aW9uIGNsYXNzTmFtZUFmdGVyKHR5cGUsIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09IFwiPFwiKSByZXR1cm4gY29udChwdXNobGV4KFwiPlwiKSwgY29tbWFzZXAodHlwZXBhcmFtLCBcIj5cIiksIHBvcGxleCwgY2xhc3NOYW1lQWZ0ZXIpXG4gICAgaWYgKHZhbHVlID09IFwiZXh0ZW5kc1wiIHx8IHZhbHVlID09IFwiaW1wbGVtZW50c1wiIHx8IChpc1RTICYmIHR5cGUgPT0gXCIsXCIpKSB7XG4gICAgICBpZiAodmFsdWUgPT0gXCJpbXBsZW1lbnRzXCIpIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiO1xuICAgICAgcmV0dXJuIGNvbnQoaXNUUyA/IHR5cGVleHByIDogZXhwcmVzc2lvbiwgY2xhc3NOYW1lQWZ0ZXIpO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PSBcIntcIikgcmV0dXJuIGNvbnQocHVzaGxleChcIn1cIiksIGNsYXNzQm9keSwgcG9wbGV4KTtcbiAgfVxuICBmdW5jdGlvbiBjbGFzc0JvZHkodHlwZSwgdmFsdWUpIHtcbiAgICBpZiAodHlwZSA9PSBcImFzeW5jXCIgfHxcbiAgICAgICAgKHR5cGUgPT0gXCJ2YXJpYWJsZVwiICYmXG4gICAgICAgICAodmFsdWUgPT0gXCJzdGF0aWNcIiB8fCB2YWx1ZSA9PSBcImdldFwiIHx8IHZhbHVlID09IFwic2V0XCIgfHwgKGlzVFMgJiYgaXNNb2RpZmllcih2YWx1ZSkpKSAmJlxuICAgICAgICAgY3guc3RyZWFtLm1hdGNoKC9eXFxzK1tcXHckXFx4YTEtXFx1ZmZmZl0vLCBmYWxzZSkpKSB7XG4gICAgICBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjtcbiAgICAgIHJldHVybiBjb250KGNsYXNzQm9keSk7XG4gICAgfVxuICAgIGlmICh0eXBlID09IFwidmFyaWFibGVcIiB8fCBjeC5zdHlsZSA9PSBcImtleXdvcmRcIikge1xuICAgICAgY3gubWFya2VkID0gXCJwcm9wZXJ0eVwiO1xuICAgICAgcmV0dXJuIGNvbnQoY2xhc3NmaWVsZCwgY2xhc3NCb2R5KTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT0gXCJudW1iZXJcIiB8fCB0eXBlID09IFwic3RyaW5nXCIpIHJldHVybiBjb250KGNsYXNzZmllbGQsIGNsYXNzQm9keSk7XG4gICAgaWYgKHR5cGUgPT0gXCJbXCIpXG4gICAgICByZXR1cm4gY29udChleHByZXNzaW9uLCBtYXliZXR5cGUsIGV4cGVjdChcIl1cIiksIGNsYXNzZmllbGQsIGNsYXNzQm9keSlcbiAgICBpZiAodmFsdWUgPT0gXCIqXCIpIHtcbiAgICAgIGN4Lm1hcmtlZCA9IFwia2V5d29yZFwiO1xuICAgICAgcmV0dXJuIGNvbnQoY2xhc3NCb2R5KTtcbiAgICB9XG4gICAgaWYgKGlzVFMgJiYgdHlwZSA9PSBcIihcIikgcmV0dXJuIHBhc3MoZnVuY3Rpb25kZWNsLCBjbGFzc0JvZHkpXG4gICAgaWYgKHR5cGUgPT0gXCI7XCIgfHwgdHlwZSA9PSBcIixcIikgcmV0dXJuIGNvbnQoY2xhc3NCb2R5KTtcbiAgICBpZiAodHlwZSA9PSBcIn1cIikgcmV0dXJuIGNvbnQoKTtcbiAgICBpZiAodmFsdWUgPT0gXCJAXCIpIHJldHVybiBjb250KGV4cHJlc3Npb24sIGNsYXNzQm9keSlcbiAgfVxuICBmdW5jdGlvbiBjbGFzc2ZpZWxkKHR5cGUsIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09IFwiP1wiKSByZXR1cm4gY29udChjbGFzc2ZpZWxkKVxuICAgIGlmICh0eXBlID09IFwiOlwiKSByZXR1cm4gY29udCh0eXBlZXhwciwgbWF5YmVBc3NpZ24pXG4gICAgaWYgKHZhbHVlID09IFwiPVwiKSByZXR1cm4gY29udChleHByZXNzaW9uTm9Db21tYSlcbiAgICB2YXIgY29udGV4dCA9IGN4LnN0YXRlLmxleGljYWwucHJldiwgaXNJbnRlcmZhY2UgPSBjb250ZXh0ICYmIGNvbnRleHQuaW5mbyA9PSBcImludGVyZmFjZVwiXG4gICAgcmV0dXJuIHBhc3MoaXNJbnRlcmZhY2UgPyBmdW5jdGlvbmRlY2wgOiBmdW5jdGlvbmRlZilcbiAgfVxuICBmdW5jdGlvbiBhZnRlckV4cG9ydCh0eXBlLCB2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PSBcIipcIikgeyBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjsgcmV0dXJuIGNvbnQobWF5YmVGcm9tLCBleHBlY3QoXCI7XCIpKTsgfVxuICAgIGlmICh2YWx1ZSA9PSBcImRlZmF1bHRcIikgeyBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjsgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbiwgZXhwZWN0KFwiO1wiKSk7IH1cbiAgICBpZiAodHlwZSA9PSBcIntcIikgcmV0dXJuIGNvbnQoY29tbWFzZXAoZXhwb3J0RmllbGQsIFwifVwiKSwgbWF5YmVGcm9tLCBleHBlY3QoXCI7XCIpKTtcbiAgICByZXR1cm4gcGFzcyhzdGF0ZW1lbnQpO1xuICB9XG4gIGZ1bmN0aW9uIGV4cG9ydEZpZWxkKHR5cGUsIHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09IFwiYXNcIikgeyBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjsgcmV0dXJuIGNvbnQoZXhwZWN0KFwidmFyaWFibGVcIikpOyB9XG4gICAgaWYgKHR5cGUgPT0gXCJ2YXJpYWJsZVwiKSByZXR1cm4gcGFzcyhleHByZXNzaW9uTm9Db21tYSwgZXhwb3J0RmllbGQpO1xuICB9XG4gIGZ1bmN0aW9uIGFmdGVySW1wb3J0KHR5cGUpIHtcbiAgICBpZiAodHlwZSA9PSBcInN0cmluZ1wiKSByZXR1cm4gY29udCgpO1xuICAgIGlmICh0eXBlID09IFwiKFwiKSByZXR1cm4gcGFzcyhleHByZXNzaW9uKTtcbiAgICByZXR1cm4gcGFzcyhpbXBvcnRTcGVjLCBtYXliZU1vcmVJbXBvcnRzLCBtYXliZUZyb20pO1xuICB9XG4gIGZ1bmN0aW9uIGltcG9ydFNwZWModHlwZSwgdmFsdWUpIHtcbiAgICBpZiAodHlwZSA9PSBcIntcIikgcmV0dXJuIGNvbnRDb21tYXNlcChpbXBvcnRTcGVjLCBcIn1cIik7XG4gICAgaWYgKHR5cGUgPT0gXCJ2YXJpYWJsZVwiKSByZWdpc3Rlcih2YWx1ZSk7XG4gICAgaWYgKHZhbHVlID09IFwiKlwiKSBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjtcbiAgICByZXR1cm4gY29udChtYXliZUFzKTtcbiAgfVxuICBmdW5jdGlvbiBtYXliZU1vcmVJbXBvcnRzKHR5cGUpIHtcbiAgICBpZiAodHlwZSA9PSBcIixcIikgcmV0dXJuIGNvbnQoaW1wb3J0U3BlYywgbWF5YmVNb3JlSW1wb3J0cylcbiAgfVxuICBmdW5jdGlvbiBtYXliZUFzKF90eXBlLCB2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PSBcImFzXCIpIHsgY3gubWFya2VkID0gXCJrZXl3b3JkXCI7IHJldHVybiBjb250KGltcG9ydFNwZWMpOyB9XG4gIH1cbiAgZnVuY3Rpb24gbWF5YmVGcm9tKF90eXBlLCB2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PSBcImZyb21cIikgeyBjeC5tYXJrZWQgPSBcImtleXdvcmRcIjsgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbik7IH1cbiAgfVxuICBmdW5jdGlvbiBhcnJheUxpdGVyYWwodHlwZSkge1xuICAgIGlmICh0eXBlID09IFwiXVwiKSByZXR1cm4gY29udCgpO1xuICAgIHJldHVybiBwYXNzKGNvbW1hc2VwKGV4cHJlc3Npb25Ob0NvbW1hLCBcIl1cIikpO1xuICB9XG4gIGZ1bmN0aW9uIGVudW1kZWYoKSB7XG4gICAgcmV0dXJuIHBhc3MocHVzaGxleChcImZvcm1cIiksIHBhdHRlcm4sIGV4cGVjdChcIntcIiksIHB1c2hsZXgoXCJ9XCIpLCBjb21tYXNlcChlbnVtbWVtYmVyLCBcIn1cIiksIHBvcGxleCwgcG9wbGV4KVxuICB9XG4gIGZ1bmN0aW9uIGVudW1tZW1iZXIoKSB7XG4gICAgcmV0dXJuIHBhc3MocGF0dGVybiwgbWF5YmVBc3NpZ24pO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNDb250aW51ZWRTdGF0ZW1lbnQoc3RhdGUsIHRleHRBZnRlcikge1xuICAgIHJldHVybiBzdGF0ZS5sYXN0VHlwZSA9PSBcIm9wZXJhdG9yXCIgfHwgc3RhdGUubGFzdFR5cGUgPT0gXCIsXCIgfHxcbiAgICAgIGlzT3BlcmF0b3JDaGFyLnRlc3QodGV4dEFmdGVyLmNoYXJBdCgwKSkgfHxcbiAgICAgIC9bLC5dLy50ZXN0KHRleHRBZnRlci5jaGFyQXQoMCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gZXhwcmVzc2lvbkFsbG93ZWQoc3RyZWFtLCBzdGF0ZSwgYmFja1VwKSB7XG4gICAgcmV0dXJuIHN0YXRlLnRva2VuaXplID09IHRva2VuQmFzZSAmJlxuICAgICAgL14oPzpvcGVyYXRvcnxzb2Z8a2V5d29yZCBbYmNkXXxjYXNlfG5ld3xleHBvcnR8ZGVmYXVsdHxzcHJlYWR8W1xcW3t9XFwoLDs6XXw9PikkLy50ZXN0KHN0YXRlLmxhc3RUeXBlKSB8fFxuICAgICAgKHN0YXRlLmxhc3RUeXBlID09IFwicXVhc2lcIiAmJiAvXFx7XFxzKiQvLnRlc3Qoc3RyZWFtLnN0cmluZy5zbGljZSgwLCBzdHJlYW0ucG9zIC0gKGJhY2tVcCB8fCAwKSkpKVxuICB9XG5cbiAgLy8gSW50ZXJmYWNlXG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydFN0YXRlOiBmdW5jdGlvbihiYXNlY29sdW1uKSB7XG4gICAgICB2YXIgc3RhdGUgPSB7XG4gICAgICAgIHRva2VuaXplOiB0b2tlbkJhc2UsXG4gICAgICAgIGxhc3RUeXBlOiBcInNvZlwiLFxuICAgICAgICBjYzogW10sXG4gICAgICAgIGxleGljYWw6IG5ldyBKU0xleGljYWwoKGJhc2Vjb2x1bW4gfHwgMCkgLSBpbmRlbnRVbml0LCAwLCBcImJsb2NrXCIsIGZhbHNlKSxcbiAgICAgICAgbG9jYWxWYXJzOiBwYXJzZXJDb25maWcubG9jYWxWYXJzLFxuICAgICAgICBjb250ZXh0OiBwYXJzZXJDb25maWcubG9jYWxWYXJzICYmIG5ldyBDb250ZXh0KG51bGwsIG51bGwsIGZhbHNlKSxcbiAgICAgICAgaW5kZW50ZWQ6IGJhc2Vjb2x1bW4gfHwgMFxuICAgICAgfTtcbiAgICAgIGlmIChwYXJzZXJDb25maWcuZ2xvYmFsVmFycyAmJiB0eXBlb2YgcGFyc2VyQ29uZmlnLmdsb2JhbFZhcnMgPT0gXCJvYmplY3RcIilcbiAgICAgICAgc3RhdGUuZ2xvYmFsVmFycyA9IHBhcnNlckNvbmZpZy5nbG9iYWxWYXJzO1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH0sXG5cbiAgICB0b2tlbjogZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkge1xuICAgICAgaWYgKHN0cmVhbS5zb2woKSkge1xuICAgICAgICBpZiAoIXN0YXRlLmxleGljYWwuaGFzT3duUHJvcGVydHkoXCJhbGlnblwiKSlcbiAgICAgICAgICBzdGF0ZS5sZXhpY2FsLmFsaWduID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLmluZGVudGVkID0gc3RyZWFtLmluZGVudGF0aW9uKCk7XG4gICAgICAgIGZpbmRGYXRBcnJvdyhzdHJlYW0sIHN0YXRlKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZS50b2tlbml6ZSAhPSB0b2tlbkNvbW1lbnQgJiYgc3RyZWFtLmVhdFNwYWNlKCkpIHJldHVybiBudWxsO1xuICAgICAgdmFyIHN0eWxlID0gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7XG4gICAgICBpZiAodHlwZSA9PSBcImNvbW1lbnRcIikgcmV0dXJuIHN0eWxlO1xuICAgICAgc3RhdGUubGFzdFR5cGUgPSB0eXBlID09IFwib3BlcmF0b3JcIiAmJiAoY29udGVudCA9PSBcIisrXCIgfHwgY29udGVudCA9PSBcIi0tXCIpID8gXCJpbmNkZWNcIiA6IHR5cGU7XG4gICAgICByZXR1cm4gcGFyc2VKUyhzdGF0ZSwgc3R5bGUsIHR5cGUsIGNvbnRlbnQsIHN0cmVhbSk7XG4gICAgfSxcblxuICAgIGluZGVudDogZnVuY3Rpb24oc3RhdGUsIHRleHRBZnRlcikge1xuICAgICAgaWYgKHN0YXRlLnRva2VuaXplID09IHRva2VuQ29tbWVudCkgcmV0dXJuIENvZGVNaXJyb3IuUGFzcztcbiAgICAgIGlmIChzdGF0ZS50b2tlbml6ZSAhPSB0b2tlbkJhc2UpIHJldHVybiAwO1xuICAgICAgdmFyIGZpcnN0Q2hhciA9IHRleHRBZnRlciAmJiB0ZXh0QWZ0ZXIuY2hhckF0KDApLCBsZXhpY2FsID0gc3RhdGUubGV4aWNhbCwgdG9wXG4gICAgICAvLyBLbHVkZ2UgdG8gcHJldmVudCAnbWF5YmVsc2UnIGZyb20gYmxvY2tpbmcgbGV4aWNhbCBzY29wZSBwb3BzXG4gICAgICBpZiAoIS9eXFxzKmVsc2VcXGIvLnRlc3QodGV4dEFmdGVyKSkgZm9yICh2YXIgaSA9IHN0YXRlLmNjLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBjID0gc3RhdGUuY2NbaV07XG4gICAgICAgIGlmIChjID09IHBvcGxleCkgbGV4aWNhbCA9IGxleGljYWwucHJldjtcbiAgICAgICAgZWxzZSBpZiAoYyAhPSBtYXliZWVsc2UpIGJyZWFrO1xuICAgICAgfVxuICAgICAgd2hpbGUgKChsZXhpY2FsLnR5cGUgPT0gXCJzdGF0XCIgfHwgbGV4aWNhbC50eXBlID09IFwiZm9ybVwiKSAmJlxuICAgICAgICAgICAgIChmaXJzdENoYXIgPT0gXCJ9XCIgfHwgKCh0b3AgPSBzdGF0ZS5jY1tzdGF0ZS5jYy5sZW5ndGggLSAxXSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvcCA9PSBtYXliZW9wZXJhdG9yQ29tbWEgfHwgdG9wID09IG1heWJlb3BlcmF0b3JOb0NvbW1hKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhL15bLFxcLj0rXFwtKjo/W1xcKF0vLnRlc3QodGV4dEFmdGVyKSkpKVxuICAgICAgICBsZXhpY2FsID0gbGV4aWNhbC5wcmV2O1xuICAgICAgaWYgKHN0YXRlbWVudEluZGVudCAmJiBsZXhpY2FsLnR5cGUgPT0gXCIpXCIgJiYgbGV4aWNhbC5wcmV2LnR5cGUgPT0gXCJzdGF0XCIpXG4gICAgICAgIGxleGljYWwgPSBsZXhpY2FsLnByZXY7XG4gICAgICB2YXIgdHlwZSA9IGxleGljYWwudHlwZSwgY2xvc2luZyA9IGZpcnN0Q2hhciA9PSB0eXBlO1xuXG4gICAgICBpZiAodHlwZSA9PSBcInZhcmRlZlwiKSByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIChzdGF0ZS5sYXN0VHlwZSA9PSBcIm9wZXJhdG9yXCIgfHwgc3RhdGUubGFzdFR5cGUgPT0gXCIsXCIgPyBsZXhpY2FsLmluZm8ubGVuZ3RoICsgMSA6IDApO1xuICAgICAgZWxzZSBpZiAodHlwZSA9PSBcImZvcm1cIiAmJiBmaXJzdENoYXIgPT0gXCJ7XCIpIHJldHVybiBsZXhpY2FsLmluZGVudGVkO1xuICAgICAgZWxzZSBpZiAodHlwZSA9PSBcImZvcm1cIikgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQgKyBpbmRlbnRVbml0O1xuICAgICAgZWxzZSBpZiAodHlwZSA9PSBcInN0YXRcIilcbiAgICAgICAgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQgKyAoaXNDb250aW51ZWRTdGF0ZW1lbnQoc3RhdGUsIHRleHRBZnRlcikgPyBzdGF0ZW1lbnRJbmRlbnQgfHwgaW5kZW50VW5pdCA6IDApO1xuICAgICAgZWxzZSBpZiAobGV4aWNhbC5pbmZvID09IFwic3dpdGNoXCIgJiYgIWNsb3NpbmcgJiYgcGFyc2VyQ29uZmlnLmRvdWJsZUluZGVudFN3aXRjaCAhPSBmYWxzZSlcbiAgICAgICAgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQgKyAoL14oPzpjYXNlfGRlZmF1bHQpXFxiLy50ZXN0KHRleHRBZnRlcikgPyBpbmRlbnRVbml0IDogMiAqIGluZGVudFVuaXQpO1xuICAgICAgZWxzZSBpZiAobGV4aWNhbC5hbGlnbikgcmV0dXJuIGxleGljYWwuY29sdW1uICsgKGNsb3NpbmcgPyAwIDogMSk7XG4gICAgICBlbHNlIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgKGNsb3NpbmcgPyAwIDogaW5kZW50VW5pdCk7XG4gICAgfSxcblxuICAgIGVsZWN0cmljSW5wdXQ6IC9eXFxzKig/OmNhc2UgLio/OnxkZWZhdWx0OnxcXHt8XFx9KSQvLFxuICAgIGJsb2NrQ29tbWVudFN0YXJ0OiBqc29uTW9kZSA/IG51bGwgOiBcIi8qXCIsXG4gICAgYmxvY2tDb21tZW50RW5kOiBqc29uTW9kZSA/IG51bGwgOiBcIiovXCIsXG4gICAgYmxvY2tDb21tZW50Q29udGludWU6IGpzb25Nb2RlID8gbnVsbCA6IFwiICogXCIsXG4gICAgbGluZUNvbW1lbnQ6IGpzb25Nb2RlID8gbnVsbCA6IFwiLy9cIixcbiAgICBmb2xkOiBcImJyYWNlXCIsXG4gICAgY2xvc2VCcmFja2V0czogXCIoKVtde30nJ1xcXCJcXFwiYGBcIixcblxuICAgIGhlbHBlclR5cGU6IGpzb25Nb2RlID8gXCJqc29uXCIgOiBcImphdmFzY3JpcHRcIixcbiAgICBqc29ubGRNb2RlOiBqc29ubGRNb2RlLFxuICAgIGpzb25Nb2RlOiBqc29uTW9kZSxcblxuICAgIGV4cHJlc3Npb25BbGxvd2VkOiBleHByZXNzaW9uQWxsb3dlZCxcblxuICAgIHNraXBFeHByZXNzaW9uOiBmdW5jdGlvbihzdGF0ZSkge1xuICAgICAgdmFyIHRvcCA9IHN0YXRlLmNjW3N0YXRlLmNjLmxlbmd0aCAtIDFdXG4gICAgICBpZiAodG9wID09IGV4cHJlc3Npb24gfHwgdG9wID09IGV4cHJlc3Npb25Ob0NvbW1hKSBzdGF0ZS5jYy5wb3AoKVxuICAgIH1cbiAgfTtcbn0pO1xuXG5Db2RlTWlycm9yLnJlZ2lzdGVySGVscGVyKFwid29yZENoYXJzXCIsIFwiamF2YXNjcmlwdFwiLCAvW1xcdyRdLyk7XG5cbkNvZGVNaXJyb3IuZGVmaW5lTUlNRShcInRleHQvamF2YXNjcmlwdFwiLCBcImphdmFzY3JpcHRcIik7XG5Db2RlTWlycm9yLmRlZmluZU1JTUUoXCJ0ZXh0L2VjbWFzY3JpcHRcIiwgXCJqYXZhc2NyaXB0XCIpO1xuQ29kZU1pcnJvci5kZWZpbmVNSU1FKFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiLCBcImphdmFzY3JpcHRcIik7XG5Db2RlTWlycm9yLmRlZmluZU1JTUUoXCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHRcIiwgXCJqYXZhc2NyaXB0XCIpO1xuQ29kZU1pcnJvci5kZWZpbmVNSU1FKFwiYXBwbGljYXRpb24vZWNtYXNjcmlwdFwiLCBcImphdmFzY3JpcHRcIik7XG5Db2RlTWlycm9yLmRlZmluZU1JTUUoXCJhcHBsaWNhdGlvbi9qc29uXCIsIHtuYW1lOiBcImphdmFzY3JpcHRcIiwganNvbjogdHJ1ZX0pO1xuQ29kZU1pcnJvci5kZWZpbmVNSU1FKFwiYXBwbGljYXRpb24veC1qc29uXCIsIHtuYW1lOiBcImphdmFzY3JpcHRcIiwganNvbjogdHJ1ZX0pO1xuQ29kZU1pcnJvci5kZWZpbmVNSU1FKFwiYXBwbGljYXRpb24vbGQranNvblwiLCB7bmFtZTogXCJqYXZhc2NyaXB0XCIsIGpzb25sZDogdHJ1ZX0pO1xuQ29kZU1pcnJvci5kZWZpbmVNSU1FKFwidGV4dC90eXBlc2NyaXB0XCIsIHsgbmFtZTogXCJqYXZhc2NyaXB0XCIsIHR5cGVzY3JpcHQ6IHRydWUgfSk7XG5Db2RlTWlycm9yLmRlZmluZU1JTUUoXCJhcHBsaWNhdGlvbi90eXBlc2NyaXB0XCIsIHsgbmFtZTogXCJqYXZhc2NyaXB0XCIsIHR5cGVzY3JpcHQ6IHRydWUgfSk7XG5cbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQSx3SEFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBVkE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBU0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBSUE7QUFFQTtBQUFBO0FBRUE7QUFTQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQTdFQTtBQStFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/codemirror/mode/javascript/javascript.js\n");
264
265/***/ }),
266
267/***/ "../../../node_modules/copy-to-clipboard/index.js":
268/*!***********************************************************************************!*\
269 !*** /home/runner/work/graphiql/graphiql/node_modules/copy-to-clipboard/index.js ***!
270 \***********************************************************************************/
271/*! no static exports found */
272/***/ (function(module, exports, __webpack_require__) {
273
274eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n var deselectCurrent = __webpack_require__(/*! toggle-selection */ \"../../../node_modules/toggle-selection/index.js\");\n\n var clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n };\n var defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\n function format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n }\n\n function copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n\n if (!options) {\n options = {};\n }\n\n debug = options.debug || false;\n\n try {\n reselectPrevious = deselectCurrent();\n range = document.createRange();\n selection = document.getSelection();\n mark = document.createElement(\"span\");\n mark.textContent = text; // reset user styles for span element\n\n mark.style.all = \"unset\"; // prevents scrolling to the end of the page\n\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\"; // used to preserve spaces and line breaks\n\n mark.style.whiteSpace = \"pre\"; // do not inherit user-select (it may be `none`)\n\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function (e) {\n e.stopPropagation();\n\n if (options.format) {\n e.preventDefault();\n\n if (typeof e.clipboardData === \"undefined\") {\n // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"];\n window.clipboardData.setData(format, text);\n } else {\n // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n document.body.appendChild(mark);\n range.selectNodeContents(mark);\n selection.addRange(range);\n var successful = document.execCommand(\"copy\");\n\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n\n reselectPrevious();\n }\n\n return success;\n }\n\n module.exports = copy;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcHktdG8tY2xpcGJvYXJkL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2NvcHktdG8tY2xpcGJvYXJkL2luZGV4LmpzPzkyNjEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBkZXNlbGVjdEN1cnJlbnQgPSByZXF1aXJlKFwidG9nZ2xlLXNlbGVjdGlvblwiKTtcblxudmFyIGNsaXBib2FyZFRvSUUxMUZvcm1hdHRpbmcgPSB7XG4gIFwidGV4dC9wbGFpblwiOiBcIlRleHRcIixcbiAgXCJ0ZXh0L2h0bWxcIjogXCJVcmxcIixcbiAgXCJkZWZhdWx0XCI6IFwiVGV4dFwiXG59XG5cbnZhciBkZWZhdWx0TWVzc2FnZSA9IFwiQ29weSB0byBjbGlwYm9hcmQ6ICN7a2V5fSwgRW50ZXJcIjtcblxuZnVuY3Rpb24gZm9ybWF0KG1lc3NhZ2UpIHtcbiAgdmFyIGNvcHlLZXkgPSAoL21hYyBvcyB4L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSA/IFwi4oyYXCIgOiBcIkN0cmxcIikgKyBcIitDXCI7XG4gIHJldHVybiBtZXNzYWdlLnJlcGxhY2UoLyN7XFxzKmtleVxccyp9L2csIGNvcHlLZXkpO1xufVxuXG5mdW5jdGlvbiBjb3B5KHRleHQsIG9wdGlvbnMpIHtcbiAgdmFyIGRlYnVnLFxuICAgIG1lc3NhZ2UsXG4gICAgcmVzZWxlY3RQcmV2aW91cyxcbiAgICByYW5nZSxcbiAgICBzZWxlY3Rpb24sXG4gICAgbWFyayxcbiAgICBzdWNjZXNzID0gZmFsc2U7XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBkZWJ1ZyA9IG9wdGlvbnMuZGVidWcgfHwgZmFsc2U7XG4gIHRyeSB7XG4gICAgcmVzZWxlY3RQcmV2aW91cyA9IGRlc2VsZWN0Q3VycmVudCgpO1xuXG4gICAgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgIHNlbGVjdGlvbiA9IGRvY3VtZW50LmdldFNlbGVjdGlvbigpO1xuXG4gICAgbWFyayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgIG1hcmsudGV4dENvbnRlbnQgPSB0ZXh0O1xuICAgIC8vIHJlc2V0IHVzZXIgc3R5bGVzIGZvciBzcGFuIGVsZW1lbnRcbiAgICBtYXJrLnN0eWxlLmFsbCA9IFwidW5zZXRcIjtcbiAgICAvLyBwcmV2ZW50cyBzY3JvbGxpbmcgdG8gdGhlIGVuZCBvZiB0aGUgcGFnZVxuICAgIG1hcmsuc3R5bGUucG9zaXRpb24gPSBcImZpeGVkXCI7XG4gICAgbWFyay5zdHlsZS50b3AgPSAwO1xuICAgIG1hcmsuc3R5bGUuY2xpcCA9IFwicmVjdCgwLCAwLCAwLCAwKVwiO1xuICAgIC8vIHVzZWQgdG8gcHJlc2VydmUgc3BhY2VzIGFuZCBsaW5lIGJyZWFrc1xuICAgIG1hcmsuc3R5bGUud2hpdGVTcGFjZSA9IFwicHJlXCI7XG4gICAgLy8gZG8gbm90IGluaGVyaXQgdXNlci1zZWxlY3QgKGl0IG1heSBiZSBgbm9uZWApXG4gICAgbWFyay5zdHlsZS53ZWJraXRVc2VyU2VsZWN0ID0gXCJ0ZXh0XCI7XG4gICAgbWFyay5zdHlsZS5Nb3pVc2VyU2VsZWN0ID0gXCJ0ZXh0XCI7XG4gICAgbWFyay5zdHlsZS5tc1VzZXJTZWxlY3QgPSBcInRleHRcIjtcbiAgICBtYXJrLnN0eWxlLnVzZXJTZWxlY3QgPSBcInRleHRcIjtcbiAgICBtYXJrLmFkZEV2ZW50TGlzdGVuZXIoXCJjb3B5XCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBpZiAob3B0aW9ucy5mb3JtYXQpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAodHlwZW9mIGUuY2xpcGJvYXJkRGF0YSA9PT0gXCJ1bmRlZmluZWRcIikgeyAvLyBJRSAxMVxuICAgICAgICAgIGRlYnVnICYmIGNvbnNvbGUud2FybihcInVuYWJsZSB0byB1c2UgZS5jbGlwYm9hcmREYXRhXCIpO1xuICAgICAgICAgIGRlYnVnICYmIGNvbnNvbGUud2FybihcInRyeWluZyBJRSBzcGVjaWZpYyBzdHVmZlwiKTtcbiAgICAgICAgICB3aW5kb3cuY2xpcGJvYXJkRGF0YS5jbGVhckRhdGEoKTtcbiAgICAgICAgICB2YXIgZm9ybWF0ID0gY2xpcGJvYXJkVG9JRTExRm9ybWF0dGluZ1tvcHRpb25zLmZvcm1hdF0gfHwgY2xpcGJvYXJkVG9JRTExRm9ybWF0dGluZ1tcImRlZmF1bHRcIl1cbiAgICAgICAgICB3aW5kb3cuY2xpcGJvYXJkRGF0YS5zZXREYXRhKGZvcm1hdCwgdGV4dCk7XG4gICAgICAgIH0gZWxzZSB7IC8vIGFsbCBvdGhlciBicm93c2Vyc1xuICAgICAgICAgIGUuY2xpcGJvYXJkRGF0YS5jbGVhckRhdGEoKTtcbiAgICAgICAgICBlLmNsaXBib2FyZERhdGEuc2V0RGF0YShvcHRpb25zLmZvcm1hdCwgdGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLm9uQ29weSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9wdGlvbnMub25Db3B5KGUuY2xpcGJvYXJkRGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1hcmspO1xuXG4gICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKG1hcmspO1xuICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG5cbiAgICB2YXIgc3VjY2Vzc2Z1bCA9IGRvY3VtZW50LmV4ZWNDb21tYW5kKFwiY29weVwiKTtcbiAgICBpZiAoIXN1Y2Nlc3NmdWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImNvcHkgY29tbWFuZCB3YXMgdW5zdWNjZXNzZnVsXCIpO1xuICAgIH1cbiAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZGVidWcgJiYgY29uc29sZS5lcnJvcihcInVuYWJsZSB0byBjb3B5IHVzaW5nIGV4ZWNDb21tYW5kOiBcIiwgZXJyKTtcbiAgICBkZWJ1ZyAmJiBjb25zb2xlLndhcm4oXCJ0cnlpbmcgSUUgc3BlY2lmaWMgc3R1ZmZcIik7XG4gICAgdHJ5IHtcbiAgICAgIHdpbmRvdy5jbGlwYm9hcmREYXRhLnNldERhdGEob3B0aW9ucy5mb3JtYXQgfHwgXCJ0ZXh0XCIsIHRleHQpO1xuICAgICAgb3B0aW9ucy5vbkNvcHkgJiYgb3B0aW9ucy5vbkNvcHkod2luZG93LmNsaXBib2FyZERhdGEpO1xuICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBkZWJ1ZyAmJiBjb25zb2xlLmVycm9yKFwidW5hYmxlIHRvIGNvcHkgdXNpbmcgY2xpcGJvYXJkRGF0YTogXCIsIGVycik7XG4gICAgICBkZWJ1ZyAmJiBjb25zb2xlLmVycm9yKFwiZmFsbGluZyBiYWNrIHRvIHByb21wdFwiKTtcbiAgICAgIG1lc3NhZ2UgPSBmb3JtYXQoXCJtZXNzYWdlXCIgaW4gb3B0aW9ucyA/IG9wdGlvbnMubWVzc2FnZSA6IGRlZmF1bHRNZXNzYWdlKTtcbiAgICAgIHdpbmRvdy5wcm9tcHQobWVzc2FnZSwgdGV4dCk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgIGlmICh0eXBlb2Ygc2VsZWN0aW9uLnJlbW92ZVJhbmdlID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlUmFuZ2UocmFuZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtYXJrKSB7XG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKG1hcmspO1xuICAgIH1cbiAgICByZXNlbGVjdFByZXZpb3VzKCk7XG4gIH1cblxuICByZXR1cm4gc3VjY2Vzcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/copy-to-clipboard/index.js\n");
275
276/***/ }),
277
278/***/ "../../../node_modules/dset/merge/index.mjs":
279/*!*****************************************************************************!*\
280 !*** /home/runner/work/graphiql/graphiql/node_modules/dset/merge/index.mjs ***!
281 \*****************************************************************************/
282/*! exports provided: merge, dset */
283/***/ (function(module, __webpack_exports__, __webpack_require__) {
284
285"use strict";
286eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dset\", function() { return dset; });\nfunction merge(a, b, k) {\n\tif (typeof a === 'object' && typeof b === 'object')  {\n\t\tif (Array.isArray(a) && Array.isArray(b)) {\n\t\t\tfor (k=0; k < b.length; k++) {\n\t\t\t\ta[k] = merge(a[k], b[k]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in b) {\n\t\t\t\ta[k] = merge(a[k], b[k]);\n\t\t\t}\n\t\t}\n\t\treturn a;\n\t}\n\treturn b;\n}\n\nfunction dset(obj, keys, val) {\n\tkeys.split && (keys=keys.split('.'));\n\tvar i=0, l=keys.length, t=obj, x, k;\n\tfor (; i < l;) {\n\t\tk = keys[i++];\n\t\tif (k === '__proto__' || k === 'constructor' || k === 'prototype') break;\n\t\tt = t[k] = (i === l) ? merge(t[k],val) : (typeof(x=t[k])===typeof keys) ? x : (keys[i]*0 !== 0 || !!~(''+keys[i]).indexOf('.')) ? {} : [];\n\t}\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RzZXQvbWVyZ2UvaW5kZXgubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2RzZXQvbWVyZ2UvaW5kZXgubWpzP2NhNWQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIG1lcmdlKGEsIGIsIGspIHtcblx0aWYgKHR5cGVvZiBhID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgYiA9PT0gJ29iamVjdCcpIMKge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGEpICYmIEFycmF5LmlzQXJyYXkoYikpIHtcblx0XHRcdGZvciAoaz0wOyBrIDwgYi5sZW5ndGg7IGsrKykge1xuXHRcdFx0XHRhW2tdID0gbWVyZ2UoYVtrXSwgYltrXSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoayBpbiBiKSB7XG5cdFx0XHRcdGFba10gPSBtZXJnZShhW2tdLCBiW2tdKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGE7XG5cdH1cblx0cmV0dXJuIGI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkc2V0KG9iaiwga2V5cywgdmFsKSB7XG5cdGtleXMuc3BsaXQgJiYgKGtleXM9a2V5cy5zcGxpdCgnLicpKTtcblx0dmFyIGk9MCwgbD1rZXlzLmxlbmd0aCwgdD1vYmosIHgsIGs7XG5cdGZvciAoOyBpIDwgbDspIHtcblx0XHRrID0ga2V5c1tpKytdO1xuXHRcdGlmIChrID09PSAnX19wcm90b19fJyB8fCBrID09PSAnY29uc3RydWN0b3InIHx8IGsgPT09ICdwcm90b3R5cGUnKSBicmVhaztcblx0XHR0ID0gdFtrXSA9IChpID09PSBsKSA/IG1lcmdlKHRba10sdmFsKSA6ICh0eXBlb2YoeD10W2tdKT09PXR5cGVvZiBrZXlzKSA/IHggOiAoa2V5c1tpXSowICE9PSAwIHx8ICEhfignJytrZXlzW2ldKS5pbmRleE9mKCcuJykpID8ge30gOiBbXTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dset/merge/index.mjs\n");
287
288/***/ }),
289
290/***/ "../../../node_modules/entities/lib/maps/entities.json":
291/*!****************************************************************************************!*\
292 !*** /home/runner/work/graphiql/graphiql/node_modules/entities/lib/maps/entities.json ***!
293 \****************************************************************************************/
294/*! exports provided: Aacute, aacute, Abreve, abreve, ac, acd, acE, Acirc, acirc, acute, Acy, acy, AElig, aelig, af, Afr, afr, Agrave, agrave, alefsym, aleph, Alpha, alpha, Amacr, amacr, amalg, amp, AMP, andand, And, and, andd, andslope, andv, ang, ange, angle, angmsdaa, angmsdab, angmsdac, angmsdad, angmsdae, angmsdaf, angmsdag, angmsdah, angmsd, angrt, angrtvb, angrtvbd, angsph, angst, angzarr, Aogon, aogon, Aopf, aopf, apacir, ap, apE, ape, apid, apos, ApplyFunction, approx, approxeq, Aring, aring, Ascr, ascr, Assign, ast, asymp, asympeq, Atilde, atilde, Auml, auml, awconint, awint, backcong, backepsilon, backprime, backsim, backsimeq, Backslash, Barv, barvee, barwed, Barwed, barwedge, bbrk, bbrktbrk, bcong, Bcy, bcy, bdquo, becaus, because, Because, bemptyv, bepsi, bernou, Bernoullis, Beta, beta, beth, between, Bfr, bfr, bigcap, bigcirc, bigcup, bigodot, bigoplus, bigotimes, bigsqcup, bigstar, bigtriangledown, bigtriangleup, biguplus, bigvee, bigwedge, bkarow, blacklozenge, blacksquare, blacktriangle, blacktriangledown, blacktriangleleft, blacktriangleright, blank, blk12, blk14, blk34, block, bne, bnequiv, bNot, bnot, Bopf, bopf, bot, bottom, bowtie, boxbox, boxdl, boxdL, boxDl, boxDL, boxdr, boxdR, boxDr, boxDR, boxh, boxH, boxhd, boxHd, boxhD, boxHD, boxhu, boxHu, boxhU, boxHU, boxminus, boxplus, boxtimes, boxul, boxuL, boxUl, boxUL, boxur, boxuR, boxUr, boxUR, boxv, boxV, boxvh, boxvH, boxVh, boxVH, boxvl, boxvL, boxVl, boxVL, boxvr, boxvR, boxVr, boxVR, bprime, breve, Breve, brvbar, bscr, Bscr, bsemi, bsim, bsime, bsolb, bsol, bsolhsub, bull, bullet, bump, bumpE, bumpe, Bumpeq, bumpeq, Cacute, cacute, capand, capbrcup, capcap, cap, Cap, capcup, capdot, CapitalDifferentialD, caps, caret, caron, Cayleys, ccaps, Ccaron, ccaron, Ccedil, ccedil, Ccirc, ccirc, Cconint, ccups, ccupssm, Cdot, cdot, cedil, Cedilla, cemptyv, cent, centerdot, CenterDot, cfr, Cfr, CHcy, chcy, check, checkmark, Chi, chi, circ, circeq, circlearrowleft, circlearrowright, circledast, circledcirc, circleddash, CircleDot, circledR, circledS, CircleMinus, CirclePlus, CircleTimes, cir, cirE, cire, cirfnint, cirmid, cirscir, ClockwiseContourIntegral, CloseCurlyDoubleQuote, CloseCurlyQuote, clubs, clubsuit, colon, Colon, Colone, colone, coloneq, comma, commat, comp, compfn, complement, complexes, cong, congdot, Congruent, conint, Conint, ContourIntegral, copf, Copf, coprod, Coproduct, copy, COPY, copysr, CounterClockwiseContourIntegral, crarr, cross, Cross, Cscr, cscr, csub, csube, csup, csupe, ctdot, cudarrl, cudarrr, cuepr, cuesc, cularr, cularrp, cupbrcap, cupcap, CupCap, cup, Cup, cupcup, cupdot, cupor, cups, curarr, curarrm, curlyeqprec, curlyeqsucc, curlyvee, curlywedge, curren, curvearrowleft, curvearrowright, cuvee, cuwed, cwconint, cwint, cylcty, dagger, Dagger, daleth, darr, Darr, dArr, dash, Dashv, dashv, dbkarow, dblac, Dcaron, dcaron, Dcy, dcy, ddagger, ddarr, DD, dd, DDotrahd, ddotseq, deg, Del, Delta, delta, demptyv, dfisht, Dfr, dfr, dHar, dharl, dharr, DiacriticalAcute, DiacriticalDot, DiacriticalDoubleAcute, DiacriticalGrave, DiacriticalTilde, diam, diamond, Diamond, diamondsuit, diams, die, DifferentialD, digamma, disin, div, divide, divideontimes, divonx, DJcy, djcy, dlcorn, dlcrop, dollar, Dopf, dopf, Dot, dot, DotDot, doteq, doteqdot, DotEqual, dotminus, dotplus, dotsquare, doublebarwedge, DoubleContourIntegral, DoubleDot, DoubleDownArrow, DoubleLeftArrow, DoubleLeftRightArrow, DoubleLeftTee, DoubleLongLeftArrow, DoubleLongLeftRightArrow, DoubleLongRightArrow, DoubleRightArrow, DoubleRightTee, DoubleUpArrow, DoubleUpDownArrow, DoubleVerticalBar, DownArrowBar, downarrow, DownArrow, Downarrow, DownArrowUpArrow, DownBreve, downdownarrows, downharpoonleft, downharpoonright, DownLeftRightVector, DownLeftTeeVector, DownLeftVectorBar, DownLeftVector, DownRightTeeVector, DownRightVectorBar, DownRightVector, DownTeeArrow, DownTee, drbkarow, drcorn, drcrop, Dscr, dscr, DScy, dscy, dsol, Dstrok, dstrok, dtdot, dtri, dtrif, duarr, duhar, dwangle, DZcy, dzcy, dzigrarr, Eacute, eacute, easter, Ecaron, ecaron, Ecirc, ecirc, ecir, ecolon, Ecy, ecy, eDDot, Edot, edot, eDot, ee, efDot, Efr, efr, eg, Egrave, egrave, egs, egsdot, el, Element, elinters, ell, els, elsdot, Emacr, emacr, empty, emptyset, EmptySmallSquare, emptyv, EmptyVerySmallSquare, emsp13, emsp14, emsp, ENG, eng, ensp, Eogon, eogon, Eopf, eopf, epar, eparsl, eplus, epsi, Epsilon, epsilon, epsiv, eqcirc, eqcolon, eqsim, eqslantgtr, eqslantless, Equal, equals, EqualTilde, equest, Equilibrium, equiv, equivDD, eqvparsl, erarr, erDot, escr, Escr, esdot, Esim, esim, Eta, eta, ETH, eth, Euml, euml, euro, excl, exist, Exists, expectation, exponentiale, ExponentialE, fallingdotseq, Fcy, fcy, female, ffilig, fflig, ffllig, Ffr, ffr, filig, FilledSmallSquare, FilledVerySmallSquare, fjlig, flat, fllig, fltns, fnof, Fopf, fopf, forall, ForAll, fork, forkv, Fouriertrf, fpartint, frac12, frac13, frac14, frac15, frac16, frac18, frac23, frac25, frac34, frac35, frac38, frac45, frac56, frac58, frac78, frasl, frown, fscr, Fscr, gacute, Gamma, gamma, Gammad, gammad, gap, Gbreve, gbreve, Gcedil, Gcirc, gcirc, Gcy, gcy, Gdot, gdot, ge, gE, gEl, gel, geq, geqq, geqslant, gescc, ges, gesdot, gesdoto, gesdotol, gesl, gesles, Gfr, gfr, gg, Gg, ggg, gimel, GJcy, gjcy, gla, gl, glE, glj, gnap, gnapprox, gne, gnE, gneq, gneqq, gnsim, Gopf, gopf, grave, GreaterEqual, GreaterEqualLess, GreaterFullEqual, GreaterGreater, GreaterLess, GreaterSlantEqual, GreaterTilde, Gscr, gscr, gsim, gsime, gsiml, gtcc, gtcir, gt, GT, Gt, gtdot, gtlPar, gtquest, gtrapprox, gtrarr, gtrdot, gtreqless, gtreqqless, gtrless, gtrsim, gvertneqq, gvnE, Hacek, hairsp, half, hamilt, HARDcy, hardcy, harrcir, harr, hArr, harrw, Hat, hbar, Hcirc, hcirc, hearts, heartsuit, hellip, hercon, hfr, Hfr, HilbertSpace, hksearow, hkswarow, hoarr, homtht, hookleftarrow, hookrightarrow, hopf, Hopf, horbar, HorizontalLine, hscr, Hscr, hslash, Hstrok, hstrok, HumpDownHump, HumpEqual, hybull, hyphen, Iacute, iacute, ic, Icirc, icirc, Icy, icy, Idot, IEcy, iecy, iexcl, iff, ifr, Ifr, Igrave, igrave, ii, iiiint, iiint, iinfin, iiota, IJlig, ijlig, Imacr, imacr, image, ImaginaryI, imagline, imagpart, imath, Im, imof, imped, Implies, incare, in, infin, infintie, inodot, intcal, int, Int, integers, Integral, intercal, Intersection, intlarhk, intprod, InvisibleComma, InvisibleTimes, IOcy, iocy, Iogon, iogon, Iopf, iopf, Iota, iota, iprod, iquest, iscr, Iscr, isin, isindot, isinE, isins, isinsv, isinv, it, Itilde, itilde, Iukcy, iukcy, Iuml, iuml, Jcirc, jcirc, Jcy, jcy, Jfr, jfr, jmath, Jopf, jopf, Jscr, jscr, Jsercy, jsercy, Jukcy, jukcy, Kappa, kappa, kappav, Kcedil, kcedil, Kcy, kcy, Kfr, kfr, kgreen, KHcy, khcy, KJcy, kjcy, Kopf, kopf, Kscr, kscr, lAarr, Lacute, lacute, laemptyv, lagran, Lambda, lambda, lang, Lang, langd, langle, lap, Laplacetrf, laquo, larrb, larrbfs, larr, Larr, lArr, larrfs, larrhk, larrlp, larrpl, larrsim, larrtl, latail, lAtail, lat, late, lates, lbarr, lBarr, lbbrk, lbrace, lbrack, lbrke, lbrksld, lbrkslu, Lcaron, lcaron, Lcedil, lcedil, lceil, lcub, Lcy, lcy, ldca, ldquo, ldquor, ldrdhar, ldrushar, ldsh, le, lE, LeftAngleBracket, LeftArrowBar, leftarrow, LeftArrow, Leftarrow, LeftArrowRightArrow, leftarrowtail, LeftCeiling, LeftDoubleBracket, LeftDownTeeVector, LeftDownVectorBar, LeftDownVector, LeftFloor, leftharpoondown, leftharpoonup, leftleftarrows, leftrightarrow, LeftRightArrow, Leftrightarrow, leftrightarrows, leftrightharpoons, leftrightsquigarrow, LeftRightVector, LeftTeeArrow, LeftTee, LeftTeeVector, leftthreetimes, LeftTriangleBar, LeftTriangle, LeftTriangleEqual, LeftUpDownVector, LeftUpTeeVector, LeftUpVectorBar, LeftUpVector, LeftVectorBar, LeftVector, lEg, leg, leq, leqq, leqslant, lescc, les, lesdot, lesdoto, lesdotor, lesg, lesges, lessapprox, lessdot, lesseqgtr, lesseqqgtr, LessEqualGreater, LessFullEqual, LessGreater, lessgtr, LessLess, lesssim, LessSlantEqual, LessTilde, lfisht, lfloor, Lfr, lfr, lg, lgE, lHar, lhard, lharu, lharul, lhblk, LJcy, ljcy, llarr, ll, Ll, llcorner, Lleftarrow, llhard, lltri, Lmidot, lmidot, lmoustache, lmoust, lnap, lnapprox, lne, lnE, lneq, lneqq, lnsim, loang, loarr, lobrk, longleftarrow, LongLeftArrow, Longleftarrow, longleftrightarrow, LongLeftRightArrow, Longleftrightarrow, longmapsto, longrightarrow, LongRightArrow, Longrightarrow, looparrowleft, looparrowright, lopar, Lopf, lopf, loplus, lotimes, lowast, lowbar, LowerLeftArrow, LowerRightArrow, loz, lozenge, lozf, lpar, lparlt, lrarr, lrcorner, lrhar, lrhard, lrm, lrtri, lsaquo, lscr, Lscr, lsh, Lsh, lsim, lsime, lsimg, lsqb, lsquo, lsquor, Lstrok, lstrok, ltcc, ltcir, lt, LT, Lt, ltdot, lthree, ltimes, ltlarr, ltquest, ltri, ltrie, ltrif, ltrPar, lurdshar, luruhar, lvertneqq, lvnE, macr, male, malt, maltese, Map, map, mapsto, mapstodown, mapstoleft, mapstoup, marker, mcomma, Mcy, mcy, mdash, mDDot, measuredangle, MediumSpace, Mellintrf, Mfr, mfr, mho, micro, midast, midcir, mid, middot, minusb, minus, minusd, minusdu, MinusPlus, mlcp, mldr, mnplus, models, Mopf, mopf, mp, mscr, Mscr, mstpos, Mu, mu, multimap, mumap, nabla, Nacute, nacute, nang, nap, napE, napid, napos, napprox, natural, naturals, natur, nbsp, nbump, nbumpe, ncap, Ncaron, ncaron, Ncedil, ncedil, ncong, ncongdot, ncup, Ncy, ncy, ndash, nearhk, nearr, neArr, nearrow, ne, nedot, NegativeMediumSpace, NegativeThickSpace, NegativeThinSpace, NegativeVeryThinSpace, nequiv, nesear, nesim, NestedGreaterGreater, NestedLessLess, NewLine, nexist, nexists, Nfr, nfr, ngE, nge, ngeq, ngeqq, ngeqslant, nges, nGg, ngsim, nGt, ngt, ngtr, nGtv, nharr, nhArr, nhpar, ni, nis, nisd, niv, NJcy, njcy, nlarr, nlArr, nldr, nlE, nle, nleftarrow, nLeftarrow, nleftrightarrow, nLeftrightarrow, nleq, nleqq, nleqslant, nles, nless, nLl, nlsim, nLt, nlt, nltri, nltrie, nLtv, nmid, NoBreak, NonBreakingSpace, nopf, Nopf, Not, not, NotCongruent, NotCupCap, NotDoubleVerticalBar, NotElement, NotEqual, NotEqualTilde, NotExists, NotGreater, NotGreaterEqual, NotGreaterFullEqual, NotGreaterGreater, NotGreaterLess, NotGreaterSlantEqual, NotGreaterTilde, NotHumpDownHump, NotHumpEqual, notin, notindot, notinE, notinva, notinvb, notinvc, NotLeftTriangleBar, NotLeftTriangle, NotLeftTriangleEqual, NotLess, NotLessEqual, NotLessGreater, NotLessLess, NotLessSlantEqual, NotLessTilde, NotNestedGreaterGreater, NotNestedLessLess, notni, notniva, notnivb, notnivc, NotPrecedes, NotPrecedesEqual, NotPrecedesSlantEqual, NotReverseElement, NotRightTriangleBar, NotRightTriangle, NotRightTriangleEqual, NotSquareSubset, NotSquareSubsetEqual, NotSquareSuperset, NotSquareSupersetEqual, NotSubset, NotSubsetEqual, NotSucceeds, NotSucceedsEqual, NotSucceedsSlantEqual, NotSucceedsTilde, NotSuperset, NotSupersetEqual, NotTilde, NotTildeEqual, NotTildeFullEqual, NotTildeTilde, NotVerticalBar, nparallel, npar, nparsl, npart, npolint, npr, nprcue, nprec, npreceq, npre, nrarrc, nrarr, nrArr, nrarrw, nrightarrow, nRightarrow, nrtri, nrtrie, nsc, nsccue, nsce, Nscr, nscr, nshortmid, nshortparallel, nsim, nsime, nsimeq, nsmid, nspar, nsqsube, nsqsupe, nsub, nsubE, nsube, nsubset, nsubseteq, nsubseteqq, nsucc, nsucceq, nsup, nsupE, nsupe, nsupset, nsupseteq, nsupseteqq, ntgl, Ntilde, ntilde, ntlg, ntriangleleft, ntrianglelefteq, ntriangleright, ntrianglerighteq, Nu, nu, num, numero, numsp, nvap, nvdash, nvDash, nVdash, nVDash, nvge, nvgt, nvHarr, nvinfin, nvlArr, nvle, nvlt, nvltrie, nvrArr, nvrtrie, nvsim, nwarhk, nwarr, nwArr, nwarrow, nwnear, Oacute, oacute, oast, Ocirc, ocirc, ocir, Ocy, ocy, odash, Odblac, odblac, odiv, odot, odsold, OElig, oelig, ofcir, Ofr, ofr, ogon, Ograve, ograve, ogt, ohbar, ohm, oint, olarr, olcir, olcross, oline, olt, Omacr, omacr, Omega, omega, Omicron, omicron, omid, ominus, Oopf, oopf, opar, OpenCurlyDoubleQuote, OpenCurlyQuote, operp, oplus, orarr, Or, or, ord, order, orderof, ordf, ordm, origof, oror, orslope, orv, oS, Oscr, oscr, Oslash, oslash, osol, Otilde, otilde, otimesas, Otimes, otimes, Ouml, ouml, ovbar, OverBar, OverBrace, OverBracket, OverParenthesis, para, parallel, par, parsim, parsl, part, PartialD, Pcy, pcy, percnt, period, permil, perp, pertenk, Pfr, pfr, Phi, phi, phiv, phmmat, phone, Pi, pi, pitchfork, piv, planck, planckh, plankv, plusacir, plusb, pluscir, plus, plusdo, plusdu, pluse, PlusMinus, plusmn, plussim, plustwo, pm, Poincareplane, pointint, popf, Popf, pound, prap, Pr, pr, prcue, precapprox, prec, preccurlyeq, Precedes, PrecedesEqual, PrecedesSlantEqual, PrecedesTilde, preceq, precnapprox, precneqq, precnsim, pre, prE, precsim, prime, Prime, primes, prnap, prnE, prnsim, prod, Product, profalar, profline, profsurf, prop, Proportional, Proportion, propto, prsim, prurel, Pscr, pscr, Psi, psi, puncsp, Qfr, qfr, qint, qopf, Qopf, qprime, Qscr, qscr, quaternions, quatint, quest, questeq, quot, QUOT, rAarr, race, Racute, racute, radic, raemptyv, rang, Rang, rangd, range, rangle, raquo, rarrap, rarrb, rarrbfs, rarrc, rarr, Rarr, rArr, rarrfs, rarrhk, rarrlp, rarrpl, rarrsim, Rarrtl, rarrtl, rarrw, ratail, rAtail, ratio, rationals, rbarr, rBarr, RBarr, rbbrk, rbrace, rbrack, rbrke, rbrksld, rbrkslu, Rcaron, rcaron, Rcedil, rcedil, rceil, rcub, Rcy, rcy, rdca, rdldhar, rdquo, rdquor, rdsh, real, realine, realpart, reals, Re, rect, reg, REG, ReverseElement, ReverseEquilibrium, ReverseUpEquilibrium, rfisht, rfloor, rfr, Rfr, rHar, rhard, rharu, rharul, Rho, rho, rhov, RightAngleBracket, RightArrowBar, rightarrow, RightArrow, Rightarrow, RightArrowLeftArrow, rightarrowtail, RightCeiling, RightDoubleBracket, RightDownTeeVector, RightDownVectorBar, RightDownVector, RightFloor, rightharpoondown, rightharpoonup, rightleftarrows, rightleftharpoons, rightrightarrows, rightsquigarrow, RightTeeArrow, RightTee, RightTeeVector, rightthreetimes, RightTriangleBar, RightTriangle, RightTriangleEqual, RightUpDownVector, RightUpTeeVector, RightUpVectorBar, RightUpVector, RightVectorBar, RightVector, ring, risingdotseq, rlarr, rlhar, rlm, rmoustache, rmoust, rnmid, roang, roarr, robrk, ropar, ropf, Ropf, roplus, rotimes, RoundImplies, rpar, rpargt, rppolint, rrarr, Rrightarrow, rsaquo, rscr, Rscr, rsh, Rsh, rsqb, rsquo, rsquor, rthree, rtimes, rtri, rtrie, rtrif, rtriltri, RuleDelayed, ruluhar, rx, Sacute, sacute, sbquo, scap, Scaron, scaron, Sc, sc, sccue, sce, scE, Scedil, scedil, Scirc, scirc, scnap, scnE, scnsim, scpolint, scsim, Scy, scy, sdotb, sdot, sdote, searhk, searr, seArr, searrow, sect, semi, seswar, setminus, setmn, sext, Sfr, sfr, sfrown, sharp, SHCHcy, shchcy, SHcy, shcy, ShortDownArrow, ShortLeftArrow, shortmid, shortparallel, ShortRightArrow, ShortUpArrow, shy, Sigma, sigma, sigmaf, sigmav, sim, simdot, sime, simeq, simg, simgE, siml, simlE, simne, simplus, simrarr, slarr, SmallCircle, smallsetminus, smashp, smeparsl, smid, smile, smt, smte, smtes, SOFTcy, softcy, solbar, solb, sol, Sopf, sopf, spades, spadesuit, spar, sqcap, sqcaps, sqcup, sqcups, Sqrt, sqsub, sqsube, sqsubset, sqsubseteq, sqsup, sqsupe, sqsupset, sqsupseteq, square, Square, SquareIntersection, SquareSubset, SquareSubsetEqual, SquareSuperset, SquareSupersetEqual, SquareUnion, squarf, squ, squf, srarr, Sscr, sscr, ssetmn, ssmile, sstarf, Star, star, starf, straightepsilon, straightphi, strns, sub, Sub, subdot, subE, sube, subedot, submult, subnE, subne, subplus, subrarr, subset, Subset, subseteq, subseteqq, SubsetEqual, subsetneq, subsetneqq, subsim, subsub, subsup, succapprox, succ, succcurlyeq, Succeeds, SucceedsEqual, SucceedsSlantEqual, SucceedsTilde, succeq, succnapprox, succneqq, succnsim, succsim, SuchThat, sum, Sum, sung, sup1, sup2, sup3, sup, Sup, supdot, supdsub, supE, supe, supedot, Superset, SupersetEqual, suphsol, suphsub, suplarr, supmult, supnE, supne, supplus, supset, Supset, supseteq, supseteqq, supsetneq, supsetneqq, supsim, supsub, supsup, swarhk, swarr, swArr, swarrow, swnwar, szlig, Tab, target, Tau, tau, tbrk, Tcaron, tcaron, Tcedil, tcedil, Tcy, tcy, tdot, telrec, Tfr, tfr, there4, therefore, Therefore, Theta, theta, thetasym, thetav, thickapprox, thicksim, ThickSpace, ThinSpace, thinsp, thkap, thksim, THORN, thorn, tilde, Tilde, TildeEqual, TildeFullEqual, TildeTilde, timesbar, timesb, times, timesd, tint, toea, topbot, topcir, top, Topf, topf, topfork, tosa, tprime, trade, TRADE, triangle, triangledown, triangleleft, trianglelefteq, triangleq, triangleright, trianglerighteq, tridot, trie, triminus, TripleDot, triplus, trisb, tritime, trpezium, Tscr, tscr, TScy, tscy, TSHcy, tshcy, Tstrok, tstrok, twixt, twoheadleftarrow, twoheadrightarrow, Uacute, uacute, uarr, Uarr, uArr, Uarrocir, Ubrcy, ubrcy, Ubreve, ubreve, Ucirc, ucirc, Ucy, ucy, udarr, Udblac, udblac, udhar, ufisht, Ufr, ufr, Ugrave, ugrave, uHar, uharl, uharr, uhblk, ulcorn, ulcorner, ulcrop, ultri, Umacr, umacr, uml, UnderBar, UnderBrace, UnderBracket, UnderParenthesis, Union, UnionPlus, Uogon, uogon, Uopf, uopf, UpArrowBar, uparrow, UpArrow, Uparrow, UpArrowDownArrow, updownarrow, UpDownArrow, Updownarrow, UpEquilibrium, upharpoonleft, upharpoonright, uplus, UpperLeftArrow, UpperRightArrow, upsi, Upsi, upsih, Upsilon, upsilon, UpTeeArrow, UpTee, upuparrows, urcorn, urcorner, urcrop, Uring, uring, urtri, Uscr, uscr, utdot, Utilde, utilde, utri, utrif, uuarr, Uuml, uuml, uwangle, vangrt, varepsilon, varkappa, varnothing, varphi, varpi, varpropto, varr, vArr, varrho, varsigma, varsubsetneq, varsubsetneqq, varsupsetneq, varsupsetneqq, vartheta, vartriangleleft, vartriangleright, vBar, Vbar, vBarv, Vcy, vcy, vdash, vDash, Vdash, VDash, Vdashl, veebar, vee, Vee, veeeq, vellip, verbar, Verbar, vert, Vert, VerticalBar, VerticalLine, VerticalSeparator, VerticalTilde, VeryThinSpace, Vfr, vfr, vltri, vnsub, vnsup, Vopf, vopf, vprop, vrtri, Vscr, vscr, vsubnE, vsubne, vsupnE, vsupne, Vvdash, vzigzag, Wcirc, wcirc, wedbar, wedge, Wedge, wedgeq, weierp, Wfr, wfr, Wopf, wopf, wp, wr, wreath, Wscr, wscr, xcap, xcirc, xcup, xdtri, Xfr, xfr, xharr, xhArr, Xi, xi, xlarr, xlArr, xmap, xnis, xodot, Xopf, xopf, xoplus, xotime, xrarr, xrArr, Xscr, xscr, xsqcup, xuplus, xutri, xvee, xwedge, Yacute, yacute, YAcy, yacy, Ycirc, ycirc, Ycy, ycy, yen, Yfr, yfr, YIcy, yicy, Yopf, yopf, Yscr, yscr, YUcy, yucy, yuml, Yuml, Zacute, zacute, Zcaron, zcaron, Zcy, zcy, Zdot, zdot, zeetrf, ZeroWidthSpace, Zeta, zeta, zfr, Zfr, ZHcy, zhcy, zigrarr, zopf, Zopf, Zscr, zscr, zwj, zwnj, default */
295/***/ (function(module) {
296
297eval("module.exports = JSON.parse(\"{\\\"Aacute\\\":\\\"Á\\\",\\\"aacute\\\":\\\"á\\\",\\\"Abreve\\\":\\\"Ă\\\",\\\"abreve\\\":\\\"ă\\\",\\\"ac\\\":\\\"∾\\\",\\\"acd\\\":\\\"∿\\\",\\\"acE\\\":\\\"∾̳\\\",\\\"Acirc\\\":\\\"Â\\\",\\\"acirc\\\":\\\"â\\\",\\\"acute\\\":\\\"´\\\",\\\"Acy\\\":\\\"А\\\",\\\"acy\\\":\\\"а\\\",\\\"AElig\\\":\\\"Æ\\\",\\\"aelig\\\":\\\"æ\\\",\\\"af\\\":\\\"⁡\\\",\\\"Afr\\\":\\\"𝔄\\\",\\\"afr\\\":\\\"𝔞\\\",\\\"Agrave\\\":\\\"À\\\",\\\"agrave\\\":\\\"à\\\",\\\"alefsym\\\":\\\"ℵ\\\",\\\"aleph\\\":\\\"ℵ\\\",\\\"Alpha\\\":\\\"Α\\\",\\\"alpha\\\":\\\"α\\\",\\\"Amacr\\\":\\\"Ā\\\",\\\"amacr\\\":\\\"ā\\\",\\\"amalg\\\":\\\"⨿\\\",\\\"amp\\\":\\\"&\\\",\\\"AMP\\\":\\\"&\\\",\\\"andand\\\":\\\"⩕\\\",\\\"And\\\":\\\"⩓\\\",\\\"and\\\":\\\"∧\\\",\\\"andd\\\":\\\"⩜\\\",\\\"andslope\\\":\\\"⩘\\\",\\\"andv\\\":\\\"⩚\\\",\\\"ang\\\":\\\"∠\\\",\\\"ange\\\":\\\"⦤\\\",\\\"angle\\\":\\\"∠\\\",\\\"angmsdaa\\\":\\\"⦨\\\",\\\"angmsdab\\\":\\\"⦩\\\",\\\"angmsdac\\\":\\\"⦪\\\",\\\"angmsdad\\\":\\\"⦫\\\",\\\"angmsdae\\\":\\\"⦬\\\",\\\"angmsdaf\\\":\\\"⦭\\\",\\\"angmsdag\\\":\\\"⦮\\\",\\\"angmsdah\\\":\\\"⦯\\\",\\\"angmsd\\\":\\\"∡\\\",\\\"angrt\\\":\\\"∟\\\",\\\"angrtvb\\\":\\\"⊾\\\",\\\"angrtvbd\\\":\\\"⦝\\\",\\\"angsph\\\":\\\"∢\\\",\\\"angst\\\":\\\"Å\\\",\\\"angzarr\\\":\\\"⍼\\\",\\\"Aogon\\\":\\\"Ą\\\",\\\"aogon\\\":\\\"ą\\\",\\\"Aopf\\\":\\\"𝔸\\\",\\\"aopf\\\":\\\"𝕒\\\",\\\"apacir\\\":\\\"⩯\\\",\\\"ap\\\":\\\"≈\\\",\\\"apE\\\":\\\"⩰\\\",\\\"ape\\\":\\\"≊\\\",\\\"apid\\\":\\\"≋\\\",\\\"apos\\\":\\\"'\\\",\\\"ApplyFunction\\\":\\\"⁡\\\",\\\"approx\\\":\\\"≈\\\",\\\"approxeq\\\":\\\"≊\\\",\\\"Aring\\\":\\\"Å\\\",\\\"aring\\\":\\\"å\\\",\\\"Ascr\\\":\\\"𝒜\\\",\\\"ascr\\\":\\\"𝒶\\\",\\\"Assign\\\":\\\"≔\\\",\\\"ast\\\":\\\"*\\\",\\\"asymp\\\":\\\"≈\\\",\\\"asympeq\\\":\\\"≍\\\",\\\"Atilde\\\":\\\"Ã\\\",\\\"atilde\\\":\\\"ã\\\",\\\"Auml\\\":\\\"Ä\\\",\\\"auml\\\":\\\"ä\\\",\\\"awconint\\\":\\\"∳\\\",\\\"awint\\\":\\\"⨑\\\",\\\"backcong\\\":\\\"≌\\\",\\\"backepsilon\\\":\\\"϶\\\",\\\"backprime\\\":\\\"‵\\\",\\\"backsim\\\":\\\"∽\\\",\\\"backsimeq\\\":\\\"⋍\\\",\\\"Backslash\\\":\\\"∖\\\",\\\"Barv\\\":\\\"⫧\\\",\\\"barvee\\\":\\\"⊽\\\",\\\"barwed\\\":\\\"⌅\\\",\\\"Barwed\\\":\\\"⌆\\\",\\\"barwedge\\\":\\\"⌅\\\",\\\"bbrk\\\":\\\"⎵\\\",\\\"bbrktbrk\\\":\\\"⎶\\\",\\\"bcong\\\":\\\"≌\\\",\\\"Bcy\\\":\\\"Б\\\",\\\"bcy\\\":\\\"б\\\",\\\"bdquo\\\":\\\"„\\\",\\\"becaus\\\":\\\"∵\\\",\\\"because\\\":\\\"∵\\\",\\\"Because\\\":\\\"∵\\\",\\\"bemptyv\\\":\\\"⦰\\\",\\\"bepsi\\\":\\\"϶\\\",\\\"bernou\\\":\\\"ℬ\\\",\\\"Bernoullis\\\":\\\"ℬ\\\",\\\"Beta\\\":\\\"Β\\\",\\\"beta\\\":\\\"β\\\",\\\"beth\\\":\\\"ℶ\\\",\\\"between\\\":\\\"≬\\\",\\\"Bfr\\\":\\\"𝔅\\\",\\\"bfr\\\":\\\"𝔟\\\",\\\"bigcap\\\":\\\"⋂\\\",\\\"bigcirc\\\":\\\"◯\\\",\\\"bigcup\\\":\\\"⋃\\\",\\\"bigodot\\\":\\\"⨀\\\",\\\"bigoplus\\\":\\\"⨁\\\",\\\"bigotimes\\\":\\\"⨂\\\",\\\"bigsqcup\\\":\\\"⨆\\\",\\\"bigstar\\\":\\\"★\\\",\\\"bigtriangledown\\\":\\\"▽\\\",\\\"bigtriangleup\\\":\\\"△\\\",\\\"biguplus\\\":\\\"⨄\\\",\\\"bigvee\\\":\\\"⋁\\\",\\\"bigwedge\\\":\\\"⋀\\\",\\\"bkarow\\\":\\\"⤍\\\",\\\"blacklozenge\\\":\\\"⧫\\\",\\\"blacksquare\\\":\\\"▪\\\",\\\"blacktriangle\\\":\\\"▴\\\",\\\"blacktriangledown\\\":\\\"▾\\\",\\\"blacktriangleleft\\\":\\\"◂\\\",\\\"blacktriangleright\\\":\\\"▸\\\",\\\"blank\\\":\\\"␣\\\",\\\"blk12\\\":\\\"▒\\\",\\\"blk14\\\":\\\"░\\\",\\\"blk34\\\":\\\"▓\\\",\\\"block\\\":\\\"█\\\",\\\"bne\\\":\\\"=⃥\\\",\\\"bnequiv\\\":\\\"≡⃥\\\",\\\"bNot\\\":\\\"⫭\\\",\\\"bnot\\\":\\\"⌐\\\",\\\"Bopf\\\":\\\"𝔹\\\",\\\"bopf\\\":\\\"𝕓\\\",\\\"bot\\\":\\\"⊥\\\",\\\"bottom\\\":\\\"⊥\\\",\\\"bowtie\\\":\\\"⋈\\\",\\\"boxbox\\\":\\\"⧉\\\",\\\"boxdl\\\":\\\"┐\\\",\\\"boxdL\\\":\\\"╕\\\",\\\"boxDl\\\":\\\"╖\\\",\\\"boxDL\\\":\\\"╗\\\",\\\"boxdr\\\":\\\"┌\\\",\\\"boxdR\\\":\\\"╒\\\",\\\"boxDr\\\":\\\"╓\\\",\\\"boxDR\\\":\\\"╔\\\",\\\"boxh\\\":\\\"─\\\",\\\"boxH\\\":\\\"═\\\",\\\"boxhd\\\":\\\"┬\\\",\\\"boxHd\\\":\\\"╤\\\",\\\"boxhD\\\":\\\"╥\\\",\\\"boxHD\\\":\\\"╦\\\",\\\"boxhu\\\":\\\"┴\\\",\\\"boxHu\\\":\\\"╧\\\",\\\"boxhU\\\":\\\"╨\\\",\\\"boxHU\\\":\\\"╩\\\",\\\"boxminus\\\":\\\"⊟\\\",\\\"boxplus\\\":\\\"⊞\\\",\\\"boxtimes\\\":\\\"⊠\\\",\\\"boxul\\\":\\\"┘\\\",\\\"boxuL\\\":\\\"╛\\\",\\\"boxUl\\\":\\\"╜\\\",\\\"boxUL\\\":\\\"╝\\\",\\\"boxur\\\":\\\"└\\\",\\\"boxuR\\\":\\\"╘\\\",\\\"boxUr\\\":\\\"╙\\\",\\\"boxUR\\\":\\\"╚\\\",\\\"boxv\\\":\\\"│\\\",\\\"boxV\\\":\\\"║\\\",\\\"boxvh\\\":\\\"┼\\\",\\\"boxvH\\\":\\\"╪\\\",\\\"boxVh\\\":\\\"╫\\\",\\\"boxVH\\\":\\\"╬\\\",\\\"boxvl\\\":\\\"┤\\\",\\\"boxvL\\\":\\\"╡\\\",\\\"boxVl\\\":\\\"╢\\\",\\\"boxVL\\\":\\\"╣\\\",\\\"boxvr\\\":\\\"├\\\",\\\"boxvR\\\":\\\"╞\\\",\\\"boxVr\\\":\\\"╟\\\",\\\"boxVR\\\":\\\"╠\\\",\\\"bprime\\\":\\\"‵\\\",\\\"breve\\\":\\\"˘\\\",\\\"Breve\\\":\\\"˘\\\",\\\"brvbar\\\":\\\"¦\\\",\\\"bscr\\\":\\\"𝒷\\\",\\\"Bscr\\\":\\\"ℬ\\\",\\\"bsemi\\\":\\\"⁏\\\",\\\"bsim\\\":\\\"∽\\\",\\\"bsime\\\":\\\"⋍\\\",\\\"bsolb\\\":\\\"⧅\\\",\\\"bsol\\\":\\\"\\\\\\\\\\\",\\\"bsolhsub\\\":\\\"⟈\\\",\\\"bull\\\":\\\"•\\\",\\\"bullet\\\":\\\"•\\\",\\\"bump\\\":\\\"≎\\\",\\\"bumpE\\\":\\\"⪮\\\",\\\"bumpe\\\":\\\"≏\\\",\\\"Bumpeq\\\":\\\"≎\\\",\\\"bumpeq\\\":\\\"≏\\\",\\\"Cacute\\\":\\\"Ć\\\",\\\"cacute\\\":\\\"ć\\\",\\\"capand\\\":\\\"⩄\\\",\\\"capbrcup\\\":\\\"⩉\\\",\\\"capcap\\\":\\\"⩋\\\",\\\"cap\\\":\\\"∩\\\",\\\"Cap\\\":\\\"⋒\\\",\\\"capcup\\\":\\\"⩇\\\",\\\"capdot\\\":\\\"⩀\\\",\\\"CapitalDifferentialD\\\":\\\"ⅅ\\\",\\\"caps\\\":\\\"∩︀\\\",\\\"caret\\\":\\\"⁁\\\",\\\"caron\\\":\\\"ˇ\\\",\\\"Cayleys\\\":\\\"ℭ\\\",\\\"ccaps\\\":\\\"⩍\\\",\\\"Ccaron\\\":\\\"Č\\\",\\\"ccaron\\\":\\\"č\\\",\\\"Ccedil\\\":\\\"Ç\\\",\\\"ccedil\\\":\\\"ç\\\",\\\"Ccirc\\\":\\\"Ĉ\\\",\\\"ccirc\\\":\\\"ĉ\\\",\\\"Cconint\\\":\\\"∰\\\",\\\"ccups\\\":\\\"⩌\\\",\\\"ccupssm\\\":\\\"⩐\\\",\\\"Cdot\\\":\\\"Ċ\\\",\\\"cdot\\\":\\\"ċ\\\",\\\"cedil\\\":\\\"¸\\\",\\\"Cedilla\\\":\\\"¸\\\",\\\"cemptyv\\\":\\\"⦲\\\",\\\"cent\\\":\\\"¢\\\",\\\"centerdot\\\":\\\"·\\\",\\\"CenterDot\\\":\\\"·\\\",\\\"cfr\\\":\\\"𝔠\\\",\\\"Cfr\\\":\\\"ℭ\\\",\\\"CHcy\\\":\\\"Ч\\\",\\\"chcy\\\":\\\"ч\\\",\\\"check\\\":\\\"✓\\\",\\\"checkmark\\\":\\\"✓\\\",\\\"Chi\\\":\\\"Χ\\\",\\\"chi\\\":\\\"χ\\\",\\\"circ\\\":\\\"ˆ\\\",\\\"circeq\\\":\\\"≗\\\",\\\"circlearrowleft\\\":\\\"↺\\\",\\\"circlearrowright\\\":\\\"↻\\\",\\\"circledast\\\":\\\"⊛\\\",\\\"circledcirc\\\":\\\"⊚\\\",\\\"circleddash\\\":\\\"⊝\\\",\\\"CircleDot\\\":\\\"⊙\\\",\\\"circledR\\\":\\\"®\\\",\\\"circledS\\\":\\\"Ⓢ\\\",\\\"CircleMinus\\\":\\\"⊖\\\",\\\"CirclePlus\\\":\\\"⊕\\\",\\\"CircleTimes\\\":\\\"⊗\\\",\\\"cir\\\":\\\"○\\\",\\\"cirE\\\":\\\"⧃\\\",\\\"cire\\\":\\\"≗\\\",\\\"cirfnint\\\":\\\"⨐\\\",\\\"cirmid\\\":\\\"⫯\\\",\\\"cirscir\\\":\\\"⧂\\\",\\\"ClockwiseContourIntegral\\\":\\\"∲\\\",\\\"CloseCurlyDoubleQuote\\\":\\\"”\\\",\\\"CloseCurlyQuote\\\":\\\"’\\\",\\\"clubs\\\":\\\"♣\\\",\\\"clubsuit\\\":\\\"♣\\\",\\\"colon\\\":\\\":\\\",\\\"Colon\\\":\\\"∷\\\",\\\"Colone\\\":\\\"⩴\\\",\\\"colone\\\":\\\"≔\\\",\\\"coloneq\\\":\\\"≔\\\",\\\"comma\\\":\\\",\\\",\\\"commat\\\":\\\"@\\\",\\\"comp\\\":\\\"∁\\\",\\\"compfn\\\":\\\"∘\\\",\\\"complement\\\":\\\"∁\\\",\\\"complexes\\\":\\\"ℂ\\\",\\\"cong\\\":\\\"≅\\\",\\\"congdot\\\":\\\"⩭\\\",\\\"Congruent\\\":\\\"≡\\\",\\\"conint\\\":\\\"∮\\\",\\\"Conint\\\":\\\"∯\\\",\\\"ContourIntegral\\\":\\\"∮\\\",\\\"copf\\\":\\\"𝕔\\\",\\\"Copf\\\":\\\"ℂ\\\",\\\"coprod\\\":\\\"∐\\\",\\\"Coproduct\\\":\\\"∐\\\",\\\"copy\\\":\\\"©\\\",\\\"COPY\\\":\\\"©\\\",\\\"copysr\\\":\\\"℗\\\",\\\"CounterClockwiseContourIntegral\\\":\\\"∳\\\",\\\"crarr\\\":\\\"↵\\\",\\\"cross\\\":\\\"✗\\\",\\\"Cross\\\":\\\"⨯\\\",\\\"Cscr\\\":\\\"𝒞\\\",\\\"cscr\\\":\\\"𝒸\\\",\\\"csub\\\":\\\"⫏\\\",\\\"csube\\\":\\\"⫑\\\",\\\"csup\\\":\\\"⫐\\\",\\\"csupe\\\":\\\"⫒\\\",\\\"ctdot\\\":\\\"⋯\\\",\\\"cudarrl\\\":\\\"⤸\\\",\\\"cudarrr\\\":\\\"⤵\\\",\\\"cuepr\\\":\\\"⋞\\\",\\\"cuesc\\\":\\\"⋟\\\",\\\"cularr\\\":\\\"↶\\\",\\\"cularrp\\\":\\\"⤽\\\",\\\"cupbrcap\\\":\\\"⩈\\\",\\\"cupcap\\\":\\\"⩆\\\",\\\"CupCap\\\":\\\"≍\\\",\\\"cup\\\":\\\"∪\\\",\\\"Cup\\\":\\\"⋓\\\",\\\"cupcup\\\":\\\"⩊\\\",\\\"cupdot\\\":\\\"⊍\\\",\\\"cupor\\\":\\\"⩅\\\",\\\"cups\\\":\\\"∪︀\\\",\\\"curarr\\\":\\\"↷\\\",\\\"curarrm\\\":\\\"⤼\\\",\\\"curlyeqprec\\\":\\\"⋞\\\",\\\"curlyeqsucc\\\":\\\"⋟\\\",\\\"curlyvee\\\":\\\"⋎\\\",\\\"curlywedge\\\":\\\"⋏\\\",\\\"curren\\\":\\\"¤\\\",\\\"curvearrowleft\\\":\\\"↶\\\",\\\"curvearrowright\\\":\\\"↷\\\",\\\"cuvee\\\":\\\"⋎\\\",\\\"cuwed\\\":\\\"⋏\\\",\\\"cwconint\\\":\\\"∲\\\",\\\"cwint\\\":\\\"∱\\\",\\\"cylcty\\\":\\\"⌭\\\",\\\"dagger\\\":\\\"†\\\",\\\"Dagger\\\":\\\"‡\\\",\\\"daleth\\\":\\\"ℸ\\\",\\\"darr\\\":\\\"↓\\\",\\\"Darr\\\":\\\"↡\\\",\\\"dArr\\\":\\\"⇓\\\",\\\"dash\\\":\\\"‐\\\",\\\"Dashv\\\":\\\"⫤\\\",\\\"dashv\\\":\\\"⊣\\\",\\\"dbkarow\\\":\\\"⤏\\\",\\\"dblac\\\":\\\"˝\\\",\\\"Dcaron\\\":\\\"Ď\\\",\\\"dcaron\\\":\\\"ď\\\",\\\"Dcy\\\":\\\"Д\\\",\\\"dcy\\\":\\\"д\\\",\\\"ddagger\\\":\\\"‡\\\",\\\"ddarr\\\":\\\"⇊\\\",\\\"DD\\\":\\\"ⅅ\\\",\\\"dd\\\":\\\"ⅆ\\\",\\\"DDotrahd\\\":\\\"⤑\\\",\\\"ddotseq\\\":\\\"⩷\\\",\\\"deg\\\":\\\"°\\\",\\\"Del\\\":\\\"∇\\\",\\\"Delta\\\":\\\"Δ\\\",\\\"delta\\\":\\\"δ\\\",\\\"demptyv\\\":\\\"⦱\\\",\\\"dfisht\\\":\\\"⥿\\\",\\\"Dfr\\\":\\\"𝔇\\\",\\\"dfr\\\":\\\"𝔡\\\",\\\"dHar\\\":\\\"⥥\\\",\\\"dharl\\\":\\\"⇃\\\",\\\"dharr\\\":\\\"⇂\\\",\\\"DiacriticalAcute\\\":\\\"´\\\",\\\"DiacriticalDot\\\":\\\"˙\\\",\\\"DiacriticalDoubleAcute\\\":\\\"˝\\\",\\\"DiacriticalGrave\\\":\\\"`\\\",\\\"DiacriticalTilde\\\":\\\"˜\\\",\\\"diam\\\":\\\"⋄\\\",\\\"diamond\\\":\\\"⋄\\\",\\\"Diamond\\\":\\\"⋄\\\",\\\"diamondsuit\\\":\\\"♦\\\",\\\"diams\\\":\\\"♦\\\",\\\"die\\\":\\\"¨\\\",\\\"DifferentialD\\\":\\\"ⅆ\\\",\\\"digamma\\\":\\\"ϝ\\\",\\\"disin\\\":\\\"⋲\\\",\\\"div\\\":\\\"÷\\\",\\\"divide\\\":\\\"÷\\\",\\\"divideontimes\\\":\\\"⋇\\\",\\\"divonx\\\":\\\"⋇\\\",\\\"DJcy\\\":\\\"Ђ\\\",\\\"djcy\\\":\\\"ђ\\\",\\\"dlcorn\\\":\\\"⌞\\\",\\\"dlcrop\\\":\\\"⌍\\\",\\\"dollar\\\":\\\"$\\\",\\\"Dopf\\\":\\\"𝔻\\\",\\\"dopf\\\":\\\"𝕕\\\",\\\"Dot\\\":\\\"¨\\\",\\\"dot\\\":\\\"˙\\\",\\\"DotDot\\\":\\\"⃜\\\",\\\"doteq\\\":\\\"≐\\\",\\\"doteqdot\\\":\\\"≑\\\",\\\"DotEqual\\\":\\\"≐\\\",\\\"dotminus\\\":\\\"∸\\\",\\\"dotplus\\\":\\\"∔\\\",\\\"dotsquare\\\":\\\"⊡\\\",\\\"doublebarwedge\\\":\\\"⌆\\\",\\\"DoubleContourIntegral\\\":\\\"∯\\\",\\\"DoubleDot\\\":\\\"¨\\\",\\\"DoubleDownArrow\\\":\\\"⇓\\\",\\\"DoubleLeftArrow\\\":\\\"⇐\\\",\\\"DoubleLeftRightArrow\\\":\\\"⇔\\\",\\\"DoubleLeftTee\\\":\\\"⫤\\\",\\\"DoubleLongLeftArrow\\\":\\\"⟸\\\",\\\"DoubleLongLeftRightArrow\\\":\\\"⟺\\\",\\\"DoubleLongRightArrow\\\":\\\"⟹\\\",\\\"DoubleRightArrow\\\":\\\"⇒\\\",\\\"DoubleRightTee\\\":\\\"⊨\\\",\\\"DoubleUpArrow\\\":\\\"⇑\\\",\\\"DoubleUpDownArrow\\\":\\\"⇕\\\",\\\"DoubleVerticalBar\\\":\\\"∥\\\",\\\"DownArrowBar\\\":\\\"⤓\\\",\\\"downarrow\\\":\\\"↓\\\",\\\"DownArrow\\\":\\\"↓\\\",\\\"Downarrow\\\":\\\"⇓\\\",\\\"DownArrowUpArrow\\\":\\\"⇵\\\",\\\"DownBreve\\\":\\\"̑\\\",\\\"downdownarrows\\\":\\\"⇊\\\",\\\"downharpoonleft\\\":\\\"⇃\\\",\\\"downharpoonright\\\":\\\"⇂\\\",\\\"DownLeftRightVector\\\":\\\"⥐\\\",\\\"DownLeftTeeVector\\\":\\\"⥞\\\",\\\"DownLeftVectorBar\\\":\\\"⥖\\\",\\\"DownLeftVector\\\":\\\"↽\\\",\\\"DownRightTeeVector\\\":\\\"⥟\\\",\\\"DownRightVectorBar\\\":\\\"⥗\\\",\\\"DownRightVector\\\":\\\"⇁\\\",\\\"DownTeeArrow\\\":\\\"↧\\\",\\\"DownTee\\\":\\\"⊤\\\",\\\"drbkarow\\\":\\\"⤐\\\",\\\"drcorn\\\":\\\"⌟\\\",\\\"drcrop\\\":\\\"⌌\\\",\\\"Dscr\\\":\\\"𝒟\\\",\\\"dscr\\\":\\\"𝒹\\\",\\\"DScy\\\":\\\"Ѕ\\\",\\\"dscy\\\":\\\"ѕ\\\",\\\"dsol\\\":\\\"⧶\\\",\\\"Dstrok\\\":\\\"Đ\\\",\\\"dstrok\\\":\\\"đ\\\",\\\"dtdot\\\":\\\"⋱\\\",\\\"dtri\\\":\\\"▿\\\",\\\"dtrif\\\":\\\"▾\\\",\\\"duarr\\\":\\\"⇵\\\",\\\"duhar\\\":\\\"⥯\\\",\\\"dwangle\\\":\\\"⦦\\\",\\\"DZcy\\\":\\\"Џ\\\",\\\"dzcy\\\":\\\"џ\\\",\\\"dzigrarr\\\":\\\"⟿\\\",\\\"Eacute\\\":\\\"É\\\",\\\"eacute\\\":\\\"é\\\",\\\"easter\\\":\\\"⩮\\\",\\\"Ecaron\\\":\\\"Ě\\\",\\\"ecaron\\\":\\\"ě\\\",\\\"Ecirc\\\":\\\"Ê\\\",\\\"ecirc\\\":\\\"ê\\\",\\\"ecir\\\":\\\"≖\\\",\\\"ecolon\\\":\\\"≕\\\",\\\"Ecy\\\":\\\"Э\\\",\\\"ecy\\\":\\\"э\\\",\\\"eDDot\\\":\\\"⩷\\\",\\\"Edot\\\":\\\"Ė\\\",\\\"edot\\\":\\\"ė\\\",\\\"eDot\\\":\\\"≑\\\",\\\"ee\\\":\\\"ⅇ\\\",\\\"efDot\\\":\\\"≒\\\",\\\"Efr\\\":\\\"𝔈\\\",\\\"efr\\\":\\\"𝔢\\\",\\\"eg\\\":\\\"⪚\\\",\\\"Egrave\\\":\\\"È\\\",\\\"egrave\\\":\\\"è\\\",\\\"egs\\\":\\\"⪖\\\",\\\"egsdot\\\":\\\"⪘\\\",\\\"el\\\":\\\"⪙\\\",\\\"Element\\\":\\\"∈\\\",\\\"elinters\\\":\\\"⏧\\\",\\\"ell\\\":\\\"ℓ\\\",\\\"els\\\":\\\"⪕\\\",\\\"elsdot\\\":\\\"⪗\\\",\\\"Emacr\\\":\\\"Ē\\\",\\\"emacr\\\":\\\"ē\\\",\\\"empty\\\":\\\"∅\\\",\\\"emptyset\\\":\\\"∅\\\",\\\"EmptySmallSquare\\\":\\\"◻\\\",\\\"emptyv\\\":\\\"∅\\\",\\\"EmptyVerySmallSquare\\\":\\\"▫\\\",\\\"emsp13\\\":\\\" \\\",\\\"emsp14\\\":\\\" \\\",\\\"emsp\\\":\\\" \\\",\\\"ENG\\\":\\\"Ŋ\\\",\\\"eng\\\":\\\"ŋ\\\",\\\"ensp\\\":\\\" \\\",\\\"Eogon\\\":\\\"Ę\\\",\\\"eogon\\\":\\\"ę\\\",\\\"Eopf\\\":\\\"𝔼\\\",\\\"eopf\\\":\\\"𝕖\\\",\\\"epar\\\":\\\"⋕\\\",\\\"eparsl\\\":\\\"⧣\\\",\\\"eplus\\\":\\\"⩱\\\",\\\"epsi\\\":\\\"ε\\\",\\\"Epsilon\\\":\\\"Ε\\\",\\\"epsilon\\\":\\\"ε\\\",\\\"epsiv\\\":\\\"ϵ\\\",\\\"eqcirc\\\":\\\"≖\\\",\\\"eqcolon\\\":\\\"≕\\\",\\\"eqsim\\\":\\\"≂\\\",\\\"eqslantgtr\\\":\\\"⪖\\\",\\\"eqslantless\\\":\\\"⪕\\\",\\\"Equal\\\":\\\"⩵\\\",\\\"equals\\\":\\\"=\\\",\\\"EqualTilde\\\":\\\"≂\\\",\\\"equest\\\":\\\"≟\\\",\\\"Equilibrium\\\":\\\"⇌\\\",\\\"equiv\\\":\\\"≡\\\",\\\"equivDD\\\":\\\"⩸\\\",\\\"eqvparsl\\\":\\\"⧥\\\",\\\"erarr\\\":\\\"⥱\\\",\\\"erDot\\\":\\\"≓\\\",\\\"escr\\\":\\\"ℯ\\\",\\\"Escr\\\":\\\"ℰ\\\",\\\"esdot\\\":\\\"≐\\\",\\\"Esim\\\":\\\"⩳\\\",\\\"esim\\\":\\\"≂\\\",\\\"Eta\\\":\\\"Η\\\",\\\"eta\\\":\\\"η\\\",\\\"ETH\\\":\\\"Ð\\\",\\\"eth\\\":\\\"ð\\\",\\\"Euml\\\":\\\"Ë\\\",\\\"euml\\\":\\\"ë\\\",\\\"euro\\\":\\\"€\\\",\\\"excl\\\":\\\"!\\\",\\\"exist\\\":\\\"∃\\\",\\\"Exists\\\":\\\"∃\\\",\\\"expectation\\\":\\\"ℰ\\\",\\\"exponentiale\\\":\\\"ⅇ\\\",\\\"ExponentialE\\\":\\\"ⅇ\\\",\\\"fallingdotseq\\\":\\\"≒\\\",\\\"Fcy\\\":\\\"Ф\\\",\\\"fcy\\\":\\\"ф\\\",\\\"female\\\":\\\"♀\\\",\\\"ffilig\\\":\\\"ffi\\\",\\\"fflig\\\":\\\"ff\\\",\\\"ffllig\\\":\\\"ffl\\\",\\\"Ffr\\\":\\\"𝔉\\\",\\\"ffr\\\":\\\"𝔣\\\",\\\"filig\\\":\\\"fi\\\",\\\"FilledSmallSquare\\\":\\\"◼\\\",\\\"FilledVerySmallSquare\\\":\\\"▪\\\",\\\"fjlig\\\":\\\"fj\\\",\\\"flat\\\":\\\"♭\\\",\\\"fllig\\\":\\\"fl\\\",\\\"fltns\\\":\\\"▱\\\",\\\"fnof\\\":\\\"ƒ\\\",\\\"Fopf\\\":\\\"𝔽\\\",\\\"fopf\\\":\\\"𝕗\\\",\\\"forall\\\":\\\"∀\\\",\\\"ForAll\\\":\\\"∀\\\",\\\"fork\\\":\\\"⋔\\\",\\\"forkv\\\":\\\"⫙\\\",\\\"Fouriertrf\\\":\\\"ℱ\\\",\\\"fpartint\\\":\\\"⨍\\\",\\\"frac12\\\":\\\"½\\\",\\\"frac13\\\":\\\"⅓\\\",\\\"frac14\\\":\\\"¼\\\",\\\"frac15\\\":\\\"⅕\\\",\\\"frac16\\\":\\\"⅙\\\",\\\"frac18\\\":\\\"⅛\\\",\\\"frac23\\\":\\\"⅔\\\",\\\"frac25\\\":\\\"⅖\\\",\\\"frac34\\\":\\\"¾\\\",\\\"frac35\\\":\\\"⅗\\\",\\\"frac38\\\":\\\"⅜\\\",\\\"frac45\\\":\\\"⅘\\\",\\\"frac56\\\":\\\"⅚\\\",\\\"frac58\\\":\\\"⅝\\\",\\\"frac78\\\":\\\"⅞\\\",\\\"frasl\\\":\\\"⁄\\\",\\\"frown\\\":\\\"⌢\\\",\\\"fscr\\\":\\\"𝒻\\\",\\\"Fscr\\\":\\\"ℱ\\\",\\\"gacute\\\":\\\"ǵ\\\",\\\"Gamma\\\":\\\"Γ\\\",\\\"gamma\\\":\\\"γ\\\",\\\"Gammad\\\":\\\"Ϝ\\\",\\\"gammad\\\":\\\"ϝ\\\",\\\"gap\\\":\\\"⪆\\\",\\\"Gbreve\\\":\\\"Ğ\\\",\\\"gbreve\\\":\\\"ğ\\\",\\\"Gcedil\\\":\\\"Ģ\\\",\\\"Gcirc\\\":\\\"Ĝ\\\",\\\"gcirc\\\":\\\"ĝ\\\",\\\"Gcy\\\":\\\"Г\\\",\\\"gcy\\\":\\\"г\\\",\\\"Gdot\\\":\\\"Ġ\\\",\\\"gdot\\\":\\\"ġ\\\",\\\"ge\\\":\\\"≥\\\",\\\"gE\\\":\\\"≧\\\",\\\"gEl\\\":\\\"⪌\\\",\\\"gel\\\":\\\"⋛\\\",\\\"geq\\\":\\\"≥\\\",\\\"geqq\\\":\\\"≧\\\",\\\"geqslant\\\":\\\"⩾\\\",\\\"gescc\\\":\\\"⪩\\\",\\\"ges\\\":\\\"⩾\\\",\\\"gesdot\\\":\\\"⪀\\\",\\\"gesdoto\\\":\\\"⪂\\\",\\\"gesdotol\\\":\\\"⪄\\\",\\\"gesl\\\":\\\"⋛︀\\\",\\\"gesles\\\":\\\"⪔\\\",\\\"Gfr\\\":\\\"𝔊\\\",\\\"gfr\\\":\\\"𝔤\\\",\\\"gg\\\":\\\"≫\\\",\\\"Gg\\\":\\\"⋙\\\",\\\"ggg\\\":\\\"⋙\\\",\\\"gimel\\\":\\\"ℷ\\\",\\\"GJcy\\\":\\\"Ѓ\\\",\\\"gjcy\\\":\\\"ѓ\\\",\\\"gla\\\":\\\"⪥\\\",\\\"gl\\\":\\\"≷\\\",\\\"glE\\\":\\\"⪒\\\",\\\"glj\\\":\\\"⪤\\\",\\\"gnap\\\":\\\"⪊\\\",\\\"gnapprox\\\":\\\"⪊\\\",\\\"gne\\\":\\\"⪈\\\",\\\"gnE\\\":\\\"≩\\\",\\\"gneq\\\":\\\"⪈\\\",\\\"gneqq\\\":\\\"≩\\\",\\\"gnsim\\\":\\\"⋧\\\",\\\"Gopf\\\":\\\"𝔾\\\",\\\"gopf\\\":\\\"𝕘\\\",\\\"grave\\\":\\\"`\\\",\\\"GreaterEqual\\\":\\\"≥\\\",\\\"GreaterEqualLess\\\":\\\"⋛\\\",\\\"GreaterFullEqual\\\":\\\"≧\\\",\\\"GreaterGreater\\\":\\\"⪢\\\",\\\"GreaterLess\\\":\\\"≷\\\",\\\"GreaterSlantEqual\\\":\\\"⩾\\\",\\\"GreaterTilde\\\":\\\"≳\\\",\\\"Gscr\\\":\\\"𝒢\\\",\\\"gscr\\\":\\\"ℊ\\\",\\\"gsim\\\":\\\"≳\\\",\\\"gsime\\\":\\\"⪎\\\",\\\"gsiml\\\":\\\"⪐\\\",\\\"gtcc\\\":\\\"⪧\\\",\\\"gtcir\\\":\\\"⩺\\\",\\\"gt\\\":\\\">\\\",\\\"GT\\\":\\\">\\\",\\\"Gt\\\":\\\"≫\\\",\\\"gtdot\\\":\\\"⋗\\\",\\\"gtlPar\\\":\\\"⦕\\\",\\\"gtquest\\\":\\\"⩼\\\",\\\"gtrapprox\\\":\\\"⪆\\\",\\\"gtrarr\\\":\\\"⥸\\\",\\\"gtrdot\\\":\\\"⋗\\\",\\\"gtreqless\\\":\\\"⋛\\\",\\\"gtreqqless\\\":\\\"⪌\\\",\\\"gtrless\\\":\\\"≷\\\",\\\"gtrsim\\\":\\\"≳\\\",\\\"gvertneqq\\\":\\\"≩︀\\\",\\\"gvnE\\\":\\\"≩︀\\\",\\\"Hacek\\\":\\\"ˇ\\\",\\\"hairsp\\\":\\\" \\\",\\\"half\\\":\\\"½\\\",\\\"hamilt\\\":\\\"ℋ\\\",\\\"HARDcy\\\":\\\"Ъ\\\",\\\"hardcy\\\":\\\"ъ\\\",\\\"harrcir\\\":\\\"⥈\\\",\\\"harr\\\":\\\"↔\\\",\\\"hArr\\\":\\\"⇔\\\",\\\"harrw\\\":\\\"↭\\\",\\\"Hat\\\":\\\"^\\\",\\\"hbar\\\":\\\"ℏ\\\",\\\"Hcirc\\\":\\\"Ĥ\\\",\\\"hcirc\\\":\\\"ĥ\\\",\\\"hearts\\\":\\\"♥\\\",\\\"heartsuit\\\":\\\"♥\\\",\\\"hellip\\\":\\\"…\\\",\\\"hercon\\\":\\\"⊹\\\",\\\"hfr\\\":\\\"𝔥\\\",\\\"Hfr\\\":\\\"ℌ\\\",\\\"HilbertSpace\\\":\\\"ℋ\\\",\\\"hksearow\\\":\\\"⤥\\\",\\\"hkswarow\\\":\\\"⤦\\\",\\\"hoarr\\\":\\\"⇿\\\",\\\"homtht\\\":\\\"∻\\\",\\\"hookleftarrow\\\":\\\"↩\\\",\\\"hookrightarrow\\\":\\\"↪\\\",\\\"hopf\\\":\\\"𝕙\\\",\\\"Hopf\\\":\\\"ℍ\\\",\\\"horbar\\\":\\\"―\\\",\\\"HorizontalLine\\\":\\\"─\\\",\\\"hscr\\\":\\\"𝒽\\\",\\\"Hscr\\\":\\\"ℋ\\\",\\\"hslash\\\":\\\"ℏ\\\",\\\"Hstrok\\\":\\\"Ħ\\\",\\\"hstrok\\\":\\\"ħ\\\",\\\"HumpDownHump\\\":\\\"≎\\\",\\\"HumpEqual\\\":\\\"≏\\\",\\\"hybull\\\":\\\"⁃\\\",\\\"hyphen\\\":\\\"‐\\\",\\\"Iacute\\\":\\\"Í\\\",\\\"iacute\\\":\\\"í\\\",\\\"ic\\\":\\\"⁣\\\",\\\"Icirc\\\":\\\"Î\\\",\\\"icirc\\\":\\\"î\\\",\\\"Icy\\\":\\\"И\\\",\\\"icy\\\":\\\"и\\\",\\\"Idot\\\":\\\"İ\\\",\\\"IEcy\\\":\\\"Е\\\",\\\"iecy\\\":\\\"е\\\",\\\"iexcl\\\":\\\"¡\\\",\\\"iff\\\":\\\"⇔\\\",\\\"ifr\\\":\\\"𝔦\\\",\\\"Ifr\\\":\\\"ℑ\\\",\\\"Igrave\\\":\\\"Ì\\\",\\\"igrave\\\":\\\"ì\\\",\\\"ii\\\":\\\"ⅈ\\\",\\\"iiiint\\\":\\\"⨌\\\",\\\"iiint\\\":\\\"∭\\\",\\\"iinfin\\\":\\\"⧜\\\",\\\"iiota\\\":\\\"℩\\\",\\\"IJlig\\\":\\\"IJ\\\",\\\"ijlig\\\":\\\"ij\\\",\\\"Imacr\\\":\\\"Ī\\\",\\\"imacr\\\":\\\"ī\\\",\\\"image\\\":\\\"ℑ\\\",\\\"ImaginaryI\\\":\\\"ⅈ\\\",\\\"imagline\\\":\\\"ℐ\\\",\\\"imagpart\\\":\\\"ℑ\\\",\\\"imath\\\":\\\"ı\\\",\\\"Im\\\":\\\"ℑ\\\",\\\"imof\\\":\\\"⊷\\\",\\\"imped\\\":\\\"Ƶ\\\",\\\"Implies\\\":\\\"⇒\\\",\\\"incare\\\":\\\"℅\\\",\\\"in\\\":\\\"∈\\\",\\\"infin\\\":\\\"∞\\\",\\\"infintie\\\":\\\"⧝\\\",\\\"inodot\\\":\\\"ı\\\",\\\"intcal\\\":\\\"⊺\\\",\\\"int\\\":\\\"∫\\\",\\\"Int\\\":\\\"∬\\\",\\\"integers\\\":\\\"ℤ\\\",\\\"Integral\\\":\\\"∫\\\",\\\"intercal\\\":\\\"⊺\\\",\\\"Intersection\\\":\\\"⋂\\\",\\\"intlarhk\\\":\\\"⨗\\\",\\\"intprod\\\":\\\"⨼\\\",\\\"InvisibleComma\\\":\\\"⁣\\\",\\\"InvisibleTimes\\\":\\\"⁢\\\",\\\"IOcy\\\":\\\"Ё\\\",\\\"iocy\\\":\\\"ё\\\",\\\"Iogon\\\":\\\"Į\\\",\\\"iogon\\\":\\\"į\\\",\\\"Iopf\\\":\\\"𝕀\\\",\\\"iopf\\\":\\\"𝕚\\\",\\\"Iota\\\":\\\"Ι\\\",\\\"iota\\\":\\\"ι\\\",\\\"iprod\\\":\\\"⨼\\\",\\\"iquest\\\":\\\"¿\\\",\\\"iscr\\\":\\\"𝒾\\\",\\\"Iscr\\\":\\\"ℐ\\\",\\\"isin\\\":\\\"∈\\\",\\\"isindot\\\":\\\"⋵\\\",\\\"isinE\\\":\\\"⋹\\\",\\\"isins\\\":\\\"⋴\\\",\\\"isinsv\\\":\\\"⋳\\\",\\\"isinv\\\":\\\"∈\\\",\\\"it\\\":\\\"⁢\\\",\\\"Itilde\\\":\\\"Ĩ\\\",\\\"itilde\\\":\\\"ĩ\\\",\\\"Iukcy\\\":\\\"І\\\",\\\"iukcy\\\":\\\"і\\\",\\\"Iuml\\\":\\\"Ï\\\",\\\"iuml\\\":\\\"ï\\\",\\\"Jcirc\\\":\\\"Ĵ\\\",\\\"jcirc\\\":\\\"ĵ\\\",\\\"Jcy\\\":\\\"Й\\\",\\\"jcy\\\":\\\"й\\\",\\\"Jfr\\\":\\\"𝔍\\\",\\\"jfr\\\":\\\"𝔧\\\",\\\"jmath\\\":\\\"ȷ\\\",\\\"Jopf\\\":\\\"𝕁\\\",\\\"jopf\\\":\\\"𝕛\\\",\\\"Jscr\\\":\\\"𝒥\\\",\\\"jscr\\\":\\\"𝒿\\\",\\\"Jsercy\\\":\\\"Ј\\\",\\\"jsercy\\\":\\\"ј\\\",\\\"Jukcy\\\":\\\"Є\\\",\\\"jukcy\\\":\\\"є\\\",\\\"Kappa\\\":\\\"Κ\\\",\\\"kappa\\\":\\\"κ\\\",\\\"kappav\\\":\\\"ϰ\\\",\\\"Kcedil\\\":\\\"Ķ\\\",\\\"kcedil\\\":\\\"ķ\\\",\\\"Kcy\\\":\\\"К\\\",\\\"kcy\\\":\\\"к\\\",\\\"Kfr\\\":\\\"𝔎\\\",\\\"kfr\\\":\\\"𝔨\\\",\\\"kgreen\\\":\\\"ĸ\\\",\\\"KHcy\\\":\\\"Х\\\",\\\"khcy\\\":\\\"х\\\",\\\"KJcy\\\":\\\"Ќ\\\",\\\"kjcy\\\":\\\"ќ\\\",\\\"Kopf\\\":\\\"𝕂\\\",\\\"kopf\\\":\\\"𝕜\\\",\\\"Kscr\\\":\\\"𝒦\\\",\\\"kscr\\\":\\\"𝓀\\\",\\\"lAarr\\\":\\\"⇚\\\",\\\"Lacute\\\":\\\"Ĺ\\\",\\\"lacute\\\":\\\"ĺ\\\",\\\"laemptyv\\\":\\\"⦴\\\",\\\"lagran\\\":\\\"ℒ\\\",\\\"Lambda\\\":\\\"Λ\\\",\\\"lambda\\\":\\\"λ\\\",\\\"lang\\\":\\\"⟨\\\",\\\"Lang\\\":\\\"⟪\\\",\\\"langd\\\":\\\"⦑\\\",\\\"langle\\\":\\\"⟨\\\",\\\"lap\\\":\\\"⪅\\\",\\\"Laplacetrf\\\":\\\"ℒ\\\",\\\"laquo\\\":\\\"«\\\",\\\"larrb\\\":\\\"⇤\\\",\\\"larrbfs\\\":\\\"⤟\\\",\\\"larr\\\":\\\"←\\\",\\\"Larr\\\":\\\"↞\\\",\\\"lArr\\\":\\\"⇐\\\",\\\"larrfs\\\":\\\"⤝\\\",\\\"larrhk\\\":\\\"↩\\\",\\\"larrlp\\\":\\\"↫\\\",\\\"larrpl\\\":\\\"⤹\\\",\\\"larrsim\\\":\\\"⥳\\\",\\\"larrtl\\\":\\\"↢\\\",\\\"latail\\\":\\\"⤙\\\",\\\"lAtail\\\":\\\"⤛\\\",\\\"lat\\\":\\\"⪫\\\",\\\"late\\\":\\\"⪭\\\",\\\"lates\\\":\\\"⪭︀\\\",\\\"lbarr\\\":\\\"⤌\\\",\\\"lBarr\\\":\\\"⤎\\\",\\\"lbbrk\\\":\\\"❲\\\",\\\"lbrace\\\":\\\"{\\\",\\\"lbrack\\\":\\\"[\\\",\\\"lbrke\\\":\\\"⦋\\\",\\\"lbrksld\\\":\\\"⦏\\\",\\\"lbrkslu\\\":\\\"⦍\\\",\\\"Lcaron\\\":\\\"Ľ\\\",\\\"lcaron\\\":\\\"ľ\\\",\\\"Lcedil\\\":\\\"Ļ\\\",\\\"lcedil\\\":\\\"ļ\\\",\\\"lceil\\\":\\\"⌈\\\",\\\"lcub\\\":\\\"{\\\",\\\"Lcy\\\":\\\"Л\\\",\\\"lcy\\\":\\\"л\\\",\\\"ldca\\\":\\\"⤶\\\",\\\"ldquo\\\":\\\"“\\\",\\\"ldquor\\\":\\\"„\\\",\\\"ldrdhar\\\":\\\"⥧\\\",\\\"ldrushar\\\":\\\"⥋\\\",\\\"ldsh\\\":\\\"↲\\\",\\\"le\\\":\\\"≤\\\",\\\"lE\\\":\\\"≦\\\",\\\"LeftAngleBracket\\\":\\\"⟨\\\",\\\"LeftArrowBar\\\":\\\"⇤\\\",\\\"leftarrow\\\":\\\"←\\\",\\\"LeftArrow\\\":\\\"←\\\",\\\"Leftarrow\\\":\\\"⇐\\\",\\\"LeftArrowRightArrow\\\":\\\"⇆\\\",\\\"leftarrowtail\\\":\\\"↢\\\",\\\"LeftCeiling\\\":\\\"⌈\\\",\\\"LeftDoubleBracket\\\":\\\"⟦\\\",\\\"LeftDownTeeVector\\\":\\\"⥡\\\",\\\"LeftDownVectorBar\\\":\\\"⥙\\\",\\\"LeftDownVector\\\":\\\"⇃\\\",\\\"LeftFloor\\\":\\\"⌊\\\",\\\"leftharpoondown\\\":\\\"↽\\\",\\\"leftharpoonup\\\":\\\"↼\\\",\\\"leftleftarrows\\\":\\\"⇇\\\",\\\"leftrightarrow\\\":\\\"↔\\\",\\\"LeftRightArrow\\\":\\\"↔\\\",\\\"Leftrightarrow\\\":\\\"⇔\\\",\\\"leftrightarrows\\\":\\\"⇆\\\",\\\"leftrightharpoons\\\":\\\"⇋\\\",\\\"leftrightsquigarrow\\\":\\\"↭\\\",\\\"LeftRightVector\\\":\\\"⥎\\\",\\\"LeftTeeArrow\\\":\\\"↤\\\",\\\"LeftTee\\\":\\\"⊣\\\",\\\"LeftTeeVector\\\":\\\"⥚\\\",\\\"leftthreetimes\\\":\\\"⋋\\\",\\\"LeftTriangleBar\\\":\\\"⧏\\\",\\\"LeftTriangle\\\":\\\"⊲\\\",\\\"LeftTriangleEqual\\\":\\\"⊴\\\",\\\"LeftUpDownVector\\\":\\\"⥑\\\",\\\"LeftUpTeeVector\\\":\\\"⥠\\\",\\\"LeftUpVectorBar\\\":\\\"⥘\\\",\\\"LeftUpVector\\\":\\\"↿\\\",\\\"LeftVectorBar\\\":\\\"⥒\\\",\\\"LeftVector\\\":\\\"↼\\\",\\\"lEg\\\":\\\"⪋\\\",\\\"leg\\\":\\\"⋚\\\",\\\"leq\\\":\\\"≤\\\",\\\"leqq\\\":\\\"≦\\\",\\\"leqslant\\\":\\\"⩽\\\",\\\"lescc\\\":\\\"⪨\\\",\\\"les\\\":\\\"⩽\\\",\\\"lesdot\\\":\\\"⩿\\\",\\\"lesdoto\\\":\\\"⪁\\\",\\\"lesdotor\\\":\\\"⪃\\\",\\\"lesg\\\":\\\"⋚︀\\\",\\\"lesges\\\":\\\"⪓\\\",\\\"lessapprox\\\":\\\"⪅\\\",\\\"lessdot\\\":\\\"⋖\\\",\\\"lesseqgtr\\\":\\\"⋚\\\",\\\"lesseqqgtr\\\":\\\"⪋\\\",\\\"LessEqualGreater\\\":\\\"⋚\\\",\\\"LessFullEqual\\\":\\\"≦\\\",\\\"LessGreater\\\":\\\"≶\\\",\\\"lessgtr\\\":\\\"≶\\\",\\\"LessLess\\\":\\\"⪡\\\",\\\"lesssim\\\":\\\"≲\\\",\\\"LessSlantEqual\\\":\\\"⩽\\\",\\\"LessTilde\\\":\\\"≲\\\",\\\"lfisht\\\":\\\"⥼\\\",\\\"lfloor\\\":\\\"⌊\\\",\\\"Lfr\\\":\\\"𝔏\\\",\\\"lfr\\\":\\\"𝔩\\\",\\\"lg\\\":\\\"≶\\\",\\\"lgE\\\":\\\"⪑\\\",\\\"lHar\\\":\\\"⥢\\\",\\\"lhard\\\":\\\"↽\\\",\\\"lharu\\\":\\\"↼\\\",\\\"lharul\\\":\\\"⥪\\\",\\\"lhblk\\\":\\\"▄\\\",\\\"LJcy\\\":\\\"Љ\\\",\\\"ljcy\\\":\\\"љ\\\",\\\"llarr\\\":\\\"⇇\\\",\\\"ll\\\":\\\"≪\\\",\\\"Ll\\\":\\\"⋘\\\",\\\"llcorner\\\":\\\"⌞\\\",\\\"Lleftarrow\\\":\\\"⇚\\\",\\\"llhard\\\":\\\"⥫\\\",\\\"lltri\\\":\\\"◺\\\",\\\"Lmidot\\\":\\\"Ŀ\\\",\\\"lmidot\\\":\\\"ŀ\\\",\\\"lmoustache\\\":\\\"⎰\\\",\\\"lmoust\\\":\\\"⎰\\\",\\\"lnap\\\":\\\"⪉\\\",\\\"lnapprox\\\":\\\"⪉\\\",\\\"lne\\\":\\\"⪇\\\",\\\"lnE\\\":\\\"≨\\\",\\\"lneq\\\":\\\"⪇\\\",\\\"lneqq\\\":\\\"≨\\\",\\\"lnsim\\\":\\\"⋦\\\",\\\"loang\\\":\\\"⟬\\\",\\\"loarr\\\":\\\"⇽\\\",\\\"lobrk\\\":\\\"⟦\\\",\\\"longleftarrow\\\":\\\"⟵\\\",\\\"LongLeftArrow\\\":\\\"⟵\\\",\\\"Longleftarrow\\\":\\\"⟸\\\",\\\"longleftrightarrow\\\":\\\"⟷\\\",\\\"LongLeftRightArrow\\\":\\\"⟷\\\",\\\"Longleftrightarrow\\\":\\\"⟺\\\",\\\"longmapsto\\\":\\\"⟼\\\",\\\"longrightarrow\\\":\\\"⟶\\\",\\\"LongRightArrow\\\":\\\"⟶\\\",\\\"Longrightarrow\\\":\\\"⟹\\\",\\\"looparrowleft\\\":\\\"↫\\\",\\\"looparrowright\\\":\\\"↬\\\",\\\"lopar\\\":\\\"⦅\\\",\\\"Lopf\\\":\\\"𝕃\\\",\\\"lopf\\\":\\\"𝕝\\\",\\\"loplus\\\":\\\"⨭\\\",\\\"lotimes\\\":\\\"⨴\\\",\\\"lowast\\\":\\\"∗\\\",\\\"lowbar\\\":\\\"_\\\",\\\"LowerLeftArrow\\\":\\\"↙\\\",\\\"LowerRightArrow\\\":\\\"↘\\\",\\\"loz\\\":\\\"◊\\\",\\\"lozenge\\\":\\\"◊\\\",\\\"lozf\\\":\\\"⧫\\\",\\\"lpar\\\":\\\"(\\\",\\\"lparlt\\\":\\\"⦓\\\",\\\"lrarr\\\":\\\"⇆\\\",\\\"lrcorner\\\":\\\"⌟\\\",\\\"lrhar\\\":\\\"⇋\\\",\\\"lrhard\\\":\\\"⥭\\\",\\\"lrm\\\":\\\"‎\\\",\\\"lrtri\\\":\\\"⊿\\\",\\\"lsaquo\\\":\\\"‹\\\",\\\"lscr\\\":\\\"𝓁\\\",\\\"Lscr\\\":\\\"ℒ\\\",\\\"lsh\\\":\\\"↰\\\",\\\"Lsh\\\":\\\"↰\\\",\\\"lsim\\\":\\\"≲\\\",\\\"lsime\\\":\\\"⪍\\\",\\\"lsimg\\\":\\\"⪏\\\",\\\"lsqb\\\":\\\"[\\\",\\\"lsquo\\\":\\\"‘\\\",\\\"lsquor\\\":\\\"‚\\\",\\\"Lstrok\\\":\\\"Ł\\\",\\\"lstrok\\\":\\\"ł\\\",\\\"ltcc\\\":\\\"⪦\\\",\\\"ltcir\\\":\\\"⩹\\\",\\\"lt\\\":\\\"<\\\",\\\"LT\\\":\\\"<\\\",\\\"Lt\\\":\\\"≪\\\",\\\"ltdot\\\":\\\"⋖\\\",\\\"lthree\\\":\\\"⋋\\\",\\\"ltimes\\\":\\\"⋉\\\",\\\"ltlarr\\\":\\\"⥶\\\",\\\"ltquest\\\":\\\"⩻\\\",\\\"ltri\\\":\\\"◃\\\",\\\"ltrie\\\":\\\"⊴\\\",\\\"ltrif\\\":\\\"◂\\\",\\\"ltrPar\\\":\\\"⦖\\\",\\\"lurdshar\\\":\\\"⥊\\\",\\\"luruhar\\\":\\\"⥦\\\",\\\"lvertneqq\\\":\\\"≨︀\\\",\\\"lvnE\\\":\\\"≨︀\\\",\\\"macr\\\":\\\"¯\\\",\\\"male\\\":\\\"♂\\\",\\\"malt\\\":\\\"✠\\\",\\\"maltese\\\":\\\"✠\\\",\\\"Map\\\":\\\"⤅\\\",\\\"map\\\":\\\"↦\\\",\\\"mapsto\\\":\\\"↦\\\",\\\"mapstodown\\\":\\\"↧\\\",\\\"mapstoleft\\\":\\\"↤\\\",\\\"mapstoup\\\":\\\"↥\\\",\\\"marker\\\":\\\"▮\\\",\\\"mcomma\\\":\\\"⨩\\\",\\\"Mcy\\\":\\\"М\\\",\\\"mcy\\\":\\\"м\\\",\\\"mdash\\\":\\\"—\\\",\\\"mDDot\\\":\\\"∺\\\",\\\"measuredangle\\\":\\\"∡\\\",\\\"MediumSpace\\\":\\\" \\\",\\\"Mellintrf\\\":\\\"ℳ\\\",\\\"Mfr\\\":\\\"𝔐\\\",\\\"mfr\\\":\\\"𝔪\\\",\\\"mho\\\":\\\"℧\\\",\\\"micro\\\":\\\"µ\\\",\\\"midast\\\":\\\"*\\\",\\\"midcir\\\":\\\"⫰\\\",\\\"mid\\\":\\\"∣\\\",\\\"middot\\\":\\\"·\\\",\\\"minusb\\\":\\\"⊟\\\",\\\"minus\\\":\\\"−\\\",\\\"minusd\\\":\\\"∸\\\",\\\"minusdu\\\":\\\"⨪\\\",\\\"MinusPlus\\\":\\\"∓\\\",\\\"mlcp\\\":\\\"⫛\\\",\\\"mldr\\\":\\\"…\\\",\\\"mnplus\\\":\\\"∓\\\",\\\"models\\\":\\\"⊧\\\",\\\"Mopf\\\":\\\"𝕄\\\",\\\"mopf\\\":\\\"𝕞\\\",\\\"mp\\\":\\\"∓\\\",\\\"mscr\\\":\\\"𝓂\\\",\\\"Mscr\\\":\\\"ℳ\\\",\\\"mstpos\\\":\\\"∾\\\",\\\"Mu\\\":\\\"Μ\\\",\\\"mu\\\":\\\"μ\\\",\\\"multimap\\\":\\\"⊸\\\",\\\"mumap\\\":\\\"⊸\\\",\\\"nabla\\\":\\\"∇\\\",\\\"Nacute\\\":\\\"Ń\\\",\\\"nacute\\\":\\\"ń\\\",\\\"nang\\\":\\\"∠⃒\\\",\\\"nap\\\":\\\"≉\\\",\\\"napE\\\":\\\"⩰̸\\\",\\\"napid\\\":\\\"≋̸\\\",\\\"napos\\\":\\\"ʼn\\\",\\\"napprox\\\":\\\"≉\\\",\\\"natural\\\":\\\"♮\\\",\\\"naturals\\\":\\\"ℕ\\\",\\\"natur\\\":\\\"♮\\\",\\\"nbsp\\\":\\\" \\\",\\\"nbump\\\":\\\"≎̸\\\",\\\"nbumpe\\\":\\\"≏̸\\\",\\\"ncap\\\":\\\"⩃\\\",\\\"Ncaron\\\":\\\"Ň\\\",\\\"ncaron\\\":\\\"ň\\\",\\\"Ncedil\\\":\\\"Ņ\\\",\\\"ncedil\\\":\\\"ņ\\\",\\\"ncong\\\":\\\"≇\\\",\\\"ncongdot\\\":\\\"⩭̸\\\",\\\"ncup\\\":\\\"⩂\\\",\\\"Ncy\\\":\\\"Н\\\",\\\"ncy\\\":\\\"н\\\",\\\"ndash\\\":\\\"–\\\",\\\"nearhk\\\":\\\"⤤\\\",\\\"nearr\\\":\\\"↗\\\",\\\"neArr\\\":\\\"⇗\\\",\\\"nearrow\\\":\\\"↗\\\",\\\"ne\\\":\\\"≠\\\",\\\"nedot\\\":\\\"≐̸\\\",\\\"NegativeMediumSpace\\\":\\\"​\\\",\\\"NegativeThickSpace\\\":\\\"​\\\",\\\"NegativeThinSpace\\\":\\\"​\\\",\\\"NegativeVeryThinSpace\\\":\\\"​\\\",\\\"nequiv\\\":\\\"≢\\\",\\\"nesear\\\":\\\"⤨\\\",\\\"nesim\\\":\\\"≂̸\\\",\\\"NestedGreaterGreater\\\":\\\"≫\\\",\\\"NestedLessLess\\\":\\\"≪\\\",\\\"NewLine\\\":\\\"\\\\n\\\",\\\"nexist\\\":\\\"∄\\\",\\\"nexists\\\":\\\"∄\\\",\\\"Nfr\\\":\\\"𝔑\\\",\\\"nfr\\\":\\\"𝔫\\\",\\\"ngE\\\":\\\"≧̸\\\",\\\"nge\\\":\\\"≱\\\",\\\"ngeq\\\":\\\"≱\\\",\\\"ngeqq\\\":\\\"≧̸\\\",\\\"ngeqslant\\\":\\\"⩾̸\\\",\\\"nges\\\":\\\"⩾̸\\\",\\\"nGg\\\":\\\"⋙̸\\\",\\\"ngsim\\\":\\\"≵\\\",\\\"nGt\\\":\\\"≫⃒\\\",\\\"ngt\\\":\\\"≯\\\",\\\"ngtr\\\":\\\"≯\\\",\\\"nGtv\\\":\\\"≫̸\\\",\\\"nharr\\\":\\\"↮\\\",\\\"nhArr\\\":\\\"⇎\\\",\\\"nhpar\\\":\\\"⫲\\\",\\\"ni\\\":\\\"∋\\\",\\\"nis\\\":\\\"⋼\\\",\\\"nisd\\\":\\\"⋺\\\",\\\"niv\\\":\\\"∋\\\",\\\"NJcy\\\":\\\"Њ\\\",\\\"njcy\\\":\\\"њ\\\",\\\"nlarr\\\":\\\"↚\\\",\\\"nlArr\\\":\\\"⇍\\\",\\\"nldr\\\":\\\"‥\\\",\\\"nlE\\\":\\\"≦̸\\\",\\\"nle\\\":\\\"≰\\\",\\\"nleftarrow\\\":\\\"↚\\\",\\\"nLeftarrow\\\":\\\"⇍\\\",\\\"nleftrightarrow\\\":\\\"↮\\\",\\\"nLeftrightarrow\\\":\\\"⇎\\\",\\\"nleq\\\":\\\"≰\\\",\\\"nleqq\\\":\\\"≦̸\\\",\\\"nleqslant\\\":\\\"⩽̸\\\",\\\"nles\\\":\\\"⩽̸\\\",\\\"nless\\\":\\\"≮\\\",\\\"nLl\\\":\\\"⋘̸\\\",\\\"nlsim\\\":\\\"≴\\\",\\\"nLt\\\":\\\"≪⃒\\\",\\\"nlt\\\":\\\"≮\\\",\\\"nltri\\\":\\\"⋪\\\",\\\"nltrie\\\":\\\"⋬\\\",\\\"nLtv\\\":\\\"≪̸\\\",\\\"nmid\\\":\\\"∤\\\",\\\"NoBreak\\\":\\\"⁠\\\",\\\"NonBreakingSpace\\\":\\\" \\\",\\\"nopf\\\":\\\"𝕟\\\",\\\"Nopf\\\":\\\"ℕ\\\",\\\"Not\\\":\\\"⫬\\\",\\\"not\\\":\\\"¬\\\",\\\"NotCongruent\\\":\\\"≢\\\",\\\"NotCupCap\\\":\\\"≭\\\",\\\"NotDoubleVerticalBar\\\":\\\"∦\\\",\\\"NotElement\\\":\\\"∉\\\",\\\"NotEqual\\\":\\\"≠\\\",\\\"NotEqualTilde\\\":\\\"≂̸\\\",\\\"NotExists\\\":\\\"∄\\\",\\\"NotGreater\\\":\\\"≯\\\",\\\"NotGreaterEqual\\\":\\\"≱\\\",\\\"NotGreaterFullEqual\\\":\\\"≧̸\\\",\\\"NotGreaterGreater\\\":\\\"≫̸\\\",\\\"NotGreaterLess\\\":\\\"≹\\\",\\\"NotGreaterSlantEqual\\\":\\\"⩾̸\\\",\\\"NotGreaterTilde\\\":\\\"≵\\\",\\\"NotHumpDownHump\\\":\\\"≎̸\\\",\\\"NotHumpEqual\\\":\\\"≏̸\\\",\\\"notin\\\":\\\"∉\\\",\\\"notindot\\\":\\\"⋵̸\\\",\\\"notinE\\\":\\\"⋹̸\\\",\\\"notinva\\\":\\\"∉\\\",\\\"notinvb\\\":\\\"⋷\\\",\\\"notinvc\\\":\\\"⋶\\\",\\\"NotLeftTriangleBar\\\":\\\"⧏̸\\\",\\\"NotLeftTriangle\\\":\\\"⋪\\\",\\\"NotLeftTriangleEqual\\\":\\\"⋬\\\",\\\"NotLess\\\":\\\"≮\\\",\\\"NotLessEqual\\\":\\\"≰\\\",\\\"NotLessGreater\\\":\\\"≸\\\",\\\"NotLessLess\\\":\\\"≪̸\\\",\\\"NotLessSlantEqual\\\":\\\"⩽̸\\\",\\\"NotLessTilde\\\":\\\"≴\\\",\\\"NotNestedGreaterGreater\\\":\\\"⪢̸\\\",\\\"NotNestedLessLess\\\":\\\"⪡̸\\\",\\\"notni\\\":\\\"∌\\\",\\\"notniva\\\":\\\"∌\\\",\\\"notnivb\\\":\\\"⋾\\\",\\\"notnivc\\\":\\\"⋽\\\",\\\"NotPrecedes\\\":\\\"⊀\\\",\\\"NotPrecedesEqual\\\":\\\"⪯̸\\\",\\\"NotPrecedesSlantEqual\\\":\\\"⋠\\\",\\\"NotReverseElement\\\":\\\"∌\\\",\\\"NotRightTriangleBar\\\":\\\"⧐̸\\\",\\\"NotRightTriangle\\\":\\\"⋫\\\",\\\"NotRightTriangleEqual\\\":\\\"⋭\\\",\\\"NotSquareSubset\\\":\\\"⊏̸\\\",\\\"NotSquareSubsetEqual\\\":\\\"⋢\\\",\\\"NotSquareSuperset\\\":\\\"⊐̸\\\",\\\"NotSquareSupersetEqual\\\":\\\"⋣\\\",\\\"NotSubset\\\":\\\"⊂⃒\\\",\\\"NotSubsetEqual\\\":\\\"⊈\\\",\\\"NotSucceeds\\\":\\\"⊁\\\",\\\"NotSucceedsEqual\\\":\\\"⪰̸\\\",\\\"NotSucceedsSlantEqual\\\":\\\"⋡\\\",\\\"NotSucceedsTilde\\\":\\\"≿̸\\\",\\\"NotSuperset\\\":\\\"⊃⃒\\\",\\\"NotSupersetEqual\\\":\\\"⊉\\\",\\\"NotTilde\\\":\\\"≁\\\",\\\"NotTildeEqual\\\":\\\"≄\\\",\\\"NotTildeFullEqual\\\":\\\"≇\\\",\\\"NotTildeTilde\\\":\\\"≉\\\",\\\"NotVerticalBar\\\":\\\"∤\\\",\\\"nparallel\\\":\\\"∦\\\",\\\"npar\\\":\\\"∦\\\",\\\"nparsl\\\":\\\"⫽⃥\\\",\\\"npart\\\":\\\"∂̸\\\",\\\"npolint\\\":\\\"⨔\\\",\\\"npr\\\":\\\"⊀\\\",\\\"nprcue\\\":\\\"⋠\\\",\\\"nprec\\\":\\\"⊀\\\",\\\"npreceq\\\":\\\"⪯̸\\\",\\\"npre\\\":\\\"⪯̸\\\",\\\"nrarrc\\\":\\\"⤳̸\\\",\\\"nrarr\\\":\\\"↛\\\",\\\"nrArr\\\":\\\"⇏\\\",\\\"nrarrw\\\":\\\"↝̸\\\",\\\"nrightarrow\\\":\\\"↛\\\",\\\"nRightarrow\\\":\\\"⇏\\\",\\\"nrtri\\\":\\\"⋫\\\",\\\"nrtrie\\\":\\\"⋭\\\",\\\"nsc\\\":\\\"⊁\\\",\\\"nsccue\\\":\\\"⋡\\\",\\\"nsce\\\":\\\"⪰̸\\\",\\\"Nscr\\\":\\\"𝒩\\\",\\\"nscr\\\":\\\"𝓃\\\",\\\"nshortmid\\\":\\\"∤\\\",\\\"nshortparallel\\\":\\\"∦\\\",\\\"nsim\\\":\\\"≁\\\",\\\"nsime\\\":\\\"≄\\\",\\\"nsimeq\\\":\\\"≄\\\",\\\"nsmid\\\":\\\"∤\\\",\\\"nspar\\\":\\\"∦\\\",\\\"nsqsube\\\":\\\"⋢\\\",\\\"nsqsupe\\\":\\\"⋣\\\",\\\"nsub\\\":\\\"⊄\\\",\\\"nsubE\\\":\\\"⫅̸\\\",\\\"nsube\\\":\\\"⊈\\\",\\\"nsubset\\\":\\\"⊂⃒\\\",\\\"nsubseteq\\\":\\\"⊈\\\",\\\"nsubseteqq\\\":\\\"⫅̸\\\",\\\"nsucc\\\":\\\"⊁\\\",\\\"nsucceq\\\":\\\"⪰̸\\\",\\\"nsup\\\":\\\"⊅\\\",\\\"nsupE\\\":\\\"⫆̸\\\",\\\"nsupe\\\":\\\"⊉\\\",\\\"nsupset\\\":\\\"⊃⃒\\\",\\\"nsupseteq\\\":\\\"⊉\\\",\\\"nsupseteqq\\\":\\\"⫆̸\\\",\\\"ntgl\\\":\\\"≹\\\",\\\"Ntilde\\\":\\\"Ñ\\\",\\\"ntilde\\\":\\\"ñ\\\",\\\"ntlg\\\":\\\"≸\\\",\\\"ntriangleleft\\\":\\\"⋪\\\",\\\"ntrianglelefteq\\\":\\\"⋬\\\",\\\"ntriangleright\\\":\\\"⋫\\\",\\\"ntrianglerighteq\\\":\\\"⋭\\\",\\\"Nu\\\":\\\"Ν\\\",\\\"nu\\\":\\\"ν\\\",\\\"num\\\":\\\"#\\\",\\\"numero\\\":\\\"№\\\",\\\"numsp\\\":\\\" \\\",\\\"nvap\\\":\\\"≍⃒\\\",\\\"nvdash\\\":\\\"⊬\\\",\\\"nvDash\\\":\\\"⊭\\\",\\\"nVdash\\\":\\\"⊮\\\",\\\"nVDash\\\":\\\"⊯\\\",\\\"nvge\\\":\\\"≥⃒\\\",\\\"nvgt\\\":\\\">⃒\\\",\\\"nvHarr\\\":\\\"⤄\\\",\\\"nvinfin\\\":\\\"⧞\\\",\\\"nvlArr\\\":\\\"⤂\\\",\\\"nvle\\\":\\\"≤⃒\\\",\\\"nvlt\\\":\\\"<⃒\\\",\\\"nvltrie\\\":\\\"⊴⃒\\\",\\\"nvrArr\\\":\\\"⤃\\\",\\\"nvrtrie\\\":\\\"⊵⃒\\\",\\\"nvsim\\\":\\\"∼⃒\\\",\\\"nwarhk\\\":\\\"⤣\\\",\\\"nwarr\\\":\\\"↖\\\",\\\"nwArr\\\":\\\"⇖\\\",\\\"nwarrow\\\":\\\"↖\\\",\\\"nwnear\\\":\\\"⤧\\\",\\\"Oacute\\\":\\\"Ó\\\",\\\"oacute\\\":\\\"ó\\\",\\\"oast\\\":\\\"⊛\\\",\\\"Ocirc\\\":\\\"Ô\\\",\\\"ocirc\\\":\\\"ô\\\",\\\"ocir\\\":\\\"⊚\\\",\\\"Ocy\\\":\\\"О\\\",\\\"ocy\\\":\\\"о\\\",\\\"odash\\\":\\\"⊝\\\",\\\"Odblac\\\":\\\"Ő\\\",\\\"odblac\\\":\\\"ő\\\",\\\"odiv\\\":\\\"⨸\\\",\\\"odot\\\":\\\"⊙\\\",\\\"odsold\\\":\\\"⦼\\\",\\\"OElig\\\":\\\"Œ\\\",\\\"oelig\\\":\\\"œ\\\",\\\"ofcir\\\":\\\"⦿\\\",\\\"Ofr\\\":\\\"𝔒\\\",\\\"ofr\\\":\\\"𝔬\\\",\\\"ogon\\\":\\\"˛\\\",\\\"Ograve\\\":\\\"Ò\\\",\\\"ograve\\\":\\\"ò\\\",\\\"ogt\\\":\\\"⧁\\\",\\\"ohbar\\\":\\\"⦵\\\",\\\"ohm\\\":\\\"Ω\\\",\\\"oint\\\":\\\"∮\\\",\\\"olarr\\\":\\\"↺\\\",\\\"olcir\\\":\\\"⦾\\\",\\\"olcross\\\":\\\"⦻\\\",\\\"oline\\\":\\\"‾\\\",\\\"olt\\\":\\\"⧀\\\",\\\"Omacr\\\":\\\"Ō\\\",\\\"omacr\\\":\\\"ō\\\",\\\"Omega\\\":\\\"Ω\\\",\\\"omega\\\":\\\"ω\\\",\\\"Omicron\\\":\\\"Ο\\\",\\\"omicron\\\":\\\"ο\\\",\\\"omid\\\":\\\"⦶\\\",\\\"ominus\\\":\\\"⊖\\\",\\\"Oopf\\\":\\\"𝕆\\\",\\\"oopf\\\":\\\"𝕠\\\",\\\"opar\\\":\\\"⦷\\\",\\\"OpenCurlyDoubleQuote\\\":\\\"“\\\",\\\"OpenCurlyQuote\\\":\\\"‘\\\",\\\"operp\\\":\\\"⦹\\\",\\\"oplus\\\":\\\"⊕\\\",\\\"orarr\\\":\\\"↻\\\",\\\"Or\\\":\\\"⩔\\\",\\\"or\\\":\\\"∨\\\",\\\"ord\\\":\\\"⩝\\\",\\\"order\\\":\\\"ℴ\\\",\\\"orderof\\\":\\\"ℴ\\\",\\\"ordf\\\":\\\"ª\\\",\\\"ordm\\\":\\\"º\\\",\\\"origof\\\":\\\"⊶\\\",\\\"oror\\\":\\\"⩖\\\",\\\"orslope\\\":\\\"⩗\\\",\\\"orv\\\":\\\"⩛\\\",\\\"oS\\\":\\\"Ⓢ\\\",\\\"Oscr\\\":\\\"𝒪\\\",\\\"oscr\\\":\\\"ℴ\\\",\\\"Oslash\\\":\\\"Ø\\\",\\\"oslash\\\":\\\"ø\\\",\\\"osol\\\":\\\"⊘\\\",\\\"Otilde\\\":\\\"Õ\\\",\\\"otilde\\\":\\\"õ\\\",\\\"otimesas\\\":\\\"⨶\\\",\\\"Otimes\\\":\\\"⨷\\\",\\\"otimes\\\":\\\"⊗\\\",\\\"Ouml\\\":\\\"Ö\\\",\\\"ouml\\\":\\\"ö\\\",\\\"ovbar\\\":\\\"⌽\\\",\\\"OverBar\\\":\\\"‾\\\",\\\"OverBrace\\\":\\\"⏞\\\",\\\"OverBracket\\\":\\\"⎴\\\",\\\"OverParenthesis\\\":\\\"⏜\\\",\\\"para\\\":\\\"¶\\\",\\\"parallel\\\":\\\"∥\\\",\\\"par\\\":\\\"∥\\\",\\\"parsim\\\":\\\"⫳\\\",\\\"parsl\\\":\\\"⫽\\\",\\\"part\\\":\\\"∂\\\",\\\"PartialD\\\":\\\"∂\\\",\\\"Pcy\\\":\\\"П\\\",\\\"pcy\\\":\\\"п\\\",\\\"percnt\\\":\\\"%\\\",\\\"period\\\":\\\".\\\",\\\"permil\\\":\\\"‰\\\",\\\"perp\\\":\\\"⊥\\\",\\\"pertenk\\\":\\\"‱\\\",\\\"Pfr\\\":\\\"𝔓\\\",\\\"pfr\\\":\\\"𝔭\\\",\\\"Phi\\\":\\\"Φ\\\",\\\"phi\\\":\\\"φ\\\",\\\"phiv\\\":\\\"ϕ\\\",\\\"phmmat\\\":\\\"ℳ\\\",\\\"phone\\\":\\\"☎\\\",\\\"Pi\\\":\\\"Π\\\",\\\"pi\\\":\\\"π\\\",\\\"pitchfork\\\":\\\"⋔\\\",\\\"piv\\\":\\\"ϖ\\\",\\\"planck\\\":\\\"ℏ\\\",\\\"planckh\\\":\\\"ℎ\\\",\\\"plankv\\\":\\\"ℏ\\\",\\\"plusacir\\\":\\\"⨣\\\",\\\"plusb\\\":\\\"⊞\\\",\\\"pluscir\\\":\\\"⨢\\\",\\\"plus\\\":\\\"+\\\",\\\"plusdo\\\":\\\"∔\\\",\\\"plusdu\\\":\\\"⨥\\\",\\\"pluse\\\":\\\"⩲\\\",\\\"PlusMinus\\\":\\\"±\\\",\\\"plusmn\\\":\\\"±\\\",\\\"plussim\\\":\\\"⨦\\\",\\\"plustwo\\\":\\\"⨧\\\",\\\"pm\\\":\\\"±\\\",\\\"Poincareplane\\\":\\\"ℌ\\\",\\\"pointint\\\":\\\"⨕\\\",\\\"popf\\\":\\\"𝕡\\\",\\\"Popf\\\":\\\"ℙ\\\",\\\"pound\\\":\\\"£\\\",\\\"prap\\\":\\\"⪷\\\",\\\"Pr\\\":\\\"⪻\\\",\\\"pr\\\":\\\"≺\\\",\\\"prcue\\\":\\\"≼\\\",\\\"precapprox\\\":\\\"⪷\\\",\\\"prec\\\":\\\"≺\\\",\\\"preccurlyeq\\\":\\\"≼\\\",\\\"Precedes\\\":\\\"≺\\\",\\\"PrecedesEqual\\\":\\\"⪯\\\",\\\"PrecedesSlantEqual\\\":\\\"≼\\\",\\\"PrecedesTilde\\\":\\\"≾\\\",\\\"preceq\\\":\\\"⪯\\\",\\\"precnapprox\\\":\\\"⪹\\\",\\\"precneqq\\\":\\\"⪵\\\",\\\"precnsim\\\":\\\"⋨\\\",\\\"pre\\\":\\\"⪯\\\",\\\"prE\\\":\\\"⪳\\\",\\\"precsim\\\":\\\"≾\\\",\\\"prime\\\":\\\"′\\\",\\\"Prime\\\":\\\"″\\\",\\\"primes\\\":\\\"ℙ\\\",\\\"prnap\\\":\\\"⪹\\\",\\\"prnE\\\":\\\"⪵\\\",\\\"prnsim\\\":\\\"⋨\\\",\\\"prod\\\":\\\"∏\\\",\\\"Product\\\":\\\"∏\\\",\\\"profalar\\\":\\\"⌮\\\",\\\"profline\\\":\\\"⌒\\\",\\\"profsurf\\\":\\\"⌓\\\",\\\"prop\\\":\\\"∝\\\",\\\"Proportional\\\":\\\"∝\\\",\\\"Proportion\\\":\\\"∷\\\",\\\"propto\\\":\\\"∝\\\",\\\"prsim\\\":\\\"≾\\\",\\\"prurel\\\":\\\"⊰\\\",\\\"Pscr\\\":\\\"𝒫\\\",\\\"pscr\\\":\\\"𝓅\\\",\\\"Psi\\\":\\\"Ψ\\\",\\\"psi\\\":\\\"ψ\\\",\\\"puncsp\\\":\\\" \\\",\\\"Qfr\\\":\\\"𝔔\\\",\\\"qfr\\\":\\\"𝔮\\\",\\\"qint\\\":\\\"⨌\\\",\\\"qopf\\\":\\\"𝕢\\\",\\\"Qopf\\\":\\\"ℚ\\\",\\\"qprime\\\":\\\"⁗\\\",\\\"Qscr\\\":\\\"𝒬\\\",\\\"qscr\\\":\\\"𝓆\\\",\\\"quaternions\\\":\\\"ℍ\\\",\\\"quatint\\\":\\\"⨖\\\",\\\"quest\\\":\\\"?\\\",\\\"questeq\\\":\\\"≟\\\",\\\"quot\\\":\\\"\\\\\\\"\\\",\\\"QUOT\\\":\\\"\\\\\\\"\\\",\\\"rAarr\\\":\\\"⇛\\\",\\\"race\\\":\\\"∽̱\\\",\\\"Racute\\\":\\\"Ŕ\\\",\\\"racute\\\":\\\"ŕ\\\",\\\"radic\\\":\\\"√\\\",\\\"raemptyv\\\":\\\"⦳\\\",\\\"rang\\\":\\\"⟩\\\",\\\"Rang\\\":\\\"⟫\\\",\\\"rangd\\\":\\\"⦒\\\",\\\"range\\\":\\\"⦥\\\",\\\"rangle\\\":\\\"⟩\\\",\\\"raquo\\\":\\\"»\\\",\\\"rarrap\\\":\\\"⥵\\\",\\\"rarrb\\\":\\\"⇥\\\",\\\"rarrbfs\\\":\\\"⤠\\\",\\\"rarrc\\\":\\\"⤳\\\",\\\"rarr\\\":\\\"→\\\",\\\"Rarr\\\":\\\"↠\\\",\\\"rArr\\\":\\\"⇒\\\",\\\"rarrfs\\\":\\\"⤞\\\",\\\"rarrhk\\\":\\\"↪\\\",\\\"rarrlp\\\":\\\"↬\\\",\\\"rarrpl\\\":\\\"⥅\\\",\\\"rarrsim\\\":\\\"⥴\\\",\\\"Rarrtl\\\":\\\"⤖\\\",\\\"rarrtl\\\":\\\"↣\\\",\\\"rarrw\\\":\\\"↝\\\",\\\"ratail\\\":\\\"⤚\\\",\\\"rAtail\\\":\\\"⤜\\\",\\\"ratio\\\":\\\"∶\\\",\\\"rationals\\\":\\\"ℚ\\\",\\\"rbarr\\\":\\\"⤍\\\",\\\"rBarr\\\":\\\"⤏\\\",\\\"RBarr\\\":\\\"⤐\\\",\\\"rbbrk\\\":\\\"❳\\\",\\\"rbrace\\\":\\\"}\\\",\\\"rbrack\\\":\\\"]\\\",\\\"rbrke\\\":\\\"⦌\\\",\\\"rbrksld\\\":\\\"⦎\\\",\\\"rbrkslu\\\":\\\"⦐\\\",\\\"Rcaron\\\":\\\"Ř\\\",\\\"rcaron\\\":\\\"ř\\\",\\\"Rcedil\\\":\\\"Ŗ\\\",\\\"rcedil\\\":\\\"ŗ\\\",\\\"rceil\\\":\\\"⌉\\\",\\\"rcub\\\":\\\"}\\\",\\\"Rcy\\\":\\\"Р\\\",\\\"rcy\\\":\\\"р\\\",\\\"rdca\\\":\\\"⤷\\\",\\\"rdldhar\\\":\\\"⥩\\\",\\\"rdquo\\\":\\\"”\\\",\\\"rdquor\\\":\\\"”\\\",\\\"rdsh\\\":\\\"↳\\\",\\\"real\\\":\\\"ℜ\\\",\\\"realine\\\":\\\"ℛ\\\",\\\"realpart\\\":\\\"ℜ\\\",\\\"reals\\\":\\\"ℝ\\\",\\\"Re\\\":\\\"ℜ\\\",\\\"rect\\\":\\\"▭\\\",\\\"reg\\\":\\\"®\\\",\\\"REG\\\":\\\"®\\\",\\\"ReverseElement\\\":\\\"∋\\\",\\\"ReverseEquilibrium\\\":\\\"⇋\\\",\\\"ReverseUpEquilibrium\\\":\\\"⥯\\\",\\\"rfisht\\\":\\\"⥽\\\",\\\"rfloor\\\":\\\"⌋\\\",\\\"rfr\\\":\\\"𝔯\\\",\\\"Rfr\\\":\\\"ℜ\\\",\\\"rHar\\\":\\\"⥤\\\",\\\"rhard\\\":\\\"⇁\\\",\\\"rharu\\\":\\\"⇀\\\",\\\"rharul\\\":\\\"⥬\\\",\\\"Rho\\\":\\\"Ρ\\\",\\\"rho\\\":\\\"ρ\\\",\\\"rhov\\\":\\\"ϱ\\\",\\\"RightAngleBracket\\\":\\\"⟩\\\",\\\"RightArrowBar\\\":\\\"⇥\\\",\\\"rightarrow\\\":\\\"→\\\",\\\"RightArrow\\\":\\\"→\\\",\\\"Rightarrow\\\":\\\"⇒\\\",\\\"RightArrowLeftArrow\\\":\\\"⇄\\\",\\\"rightarrowtail\\\":\\\"↣\\\",\\\"RightCeiling\\\":\\\"⌉\\\",\\\"RightDoubleBracket\\\":\\\"⟧\\\",\\\"RightDownTeeVector\\\":\\\"⥝\\\",\\\"RightDownVectorBar\\\":\\\"⥕\\\",\\\"RightDownVector\\\":\\\"⇂\\\",\\\"RightFloor\\\":\\\"⌋\\\",\\\"rightharpoondown\\\":\\\"⇁\\\",\\\"rightharpoonup\\\":\\\"⇀\\\",\\\"rightleftarrows\\\":\\\"⇄\\\",\\\"rightleftharpoons\\\":\\\"⇌\\\",\\\"rightrightarrows\\\":\\\"⇉\\\",\\\"rightsquigarrow\\\":\\\"↝\\\",\\\"RightTeeArrow\\\":\\\"↦\\\",\\\"RightTee\\\":\\\"⊢\\\",\\\"RightTeeVector\\\":\\\"⥛\\\",\\\"rightthreetimes\\\":\\\"⋌\\\",\\\"RightTriangleBar\\\":\\\"⧐\\\",\\\"RightTriangle\\\":\\\"⊳\\\",\\\"RightTriangleEqual\\\":\\\"⊵\\\",\\\"RightUpDownVector\\\":\\\"⥏\\\",\\\"RightUpTeeVector\\\":\\\"⥜\\\",\\\"RightUpVectorBar\\\":\\\"⥔\\\",\\\"RightUpVector\\\":\\\"↾\\\",\\\"RightVectorBar\\\":\\\"⥓\\\",\\\"RightVector\\\":\\\"⇀\\\",\\\"ring\\\":\\\"˚\\\",\\\"risingdotseq\\\":\\\"≓\\\",\\\"rlarr\\\":\\\"⇄\\\",\\\"rlhar\\\":\\\"⇌\\\",\\\"rlm\\\":\\\"‏\\\",\\\"rmoustache\\\":\\\"⎱\\\",\\\"rmoust\\\":\\\"⎱\\\",\\\"rnmid\\\":\\\"⫮\\\",\\\"roang\\\":\\\"⟭\\\",\\\"roarr\\\":\\\"⇾\\\",\\\"robrk\\\":\\\"⟧\\\",\\\"ropar\\\":\\\"⦆\\\",\\\"ropf\\\":\\\"𝕣\\\",\\\"Ropf\\\":\\\"ℝ\\\",\\\"roplus\\\":\\\"⨮\\\",\\\"rotimes\\\":\\\"⨵\\\",\\\"RoundImplies\\\":\\\"⥰\\\",\\\"rpar\\\":\\\")\\\",\\\"rpargt\\\":\\\"⦔\\\",\\\"rppolint\\\":\\\"⨒\\\",\\\"rrarr\\\":\\\"⇉\\\",\\\"Rrightarrow\\\":\\\"⇛\\\",\\\"rsaquo\\\":\\\"›\\\",\\\"rscr\\\":\\\"𝓇\\\",\\\"Rscr\\\":\\\"ℛ\\\",\\\"rsh\\\":\\\"↱\\\",\\\"Rsh\\\":\\\"↱\\\",\\\"rsqb\\\":\\\"]\\\",\\\"rsquo\\\":\\\"’\\\",\\\"rsquor\\\":\\\"’\\\",\\\"rthree\\\":\\\"⋌\\\",\\\"rtimes\\\":\\\"⋊\\\",\\\"rtri\\\":\\\"▹\\\",\\\"rtrie\\\":\\\"⊵\\\",\\\"rtrif\\\":\\\"▸\\\",\\\"rtriltri\\\":\\\"⧎\\\",\\\"RuleDelayed\\\":\\\"⧴\\\",\\\"ruluhar\\\":\\\"⥨\\\",\\\"rx\\\":\\\"℞\\\",\\\"Sacute\\\":\\\"Ś\\\",\\\"sacute\\\":\\\"ś\\\",\\\"sbquo\\\":\\\"‚\\\",\\\"scap\\\":\\\"⪸\\\",\\\"Scaron\\\":\\\"Š\\\",\\\"scaron\\\":\\\"š\\\",\\\"Sc\\\":\\\"⪼\\\",\\\"sc\\\":\\\"≻\\\",\\\"sccue\\\":\\\"≽\\\",\\\"sce\\\":\\\"⪰\\\",\\\"scE\\\":\\\"⪴\\\",\\\"Scedil\\\":\\\"Ş\\\",\\\"scedil\\\":\\\"ş\\\",\\\"Scirc\\\":\\\"Ŝ\\\",\\\"scirc\\\":\\\"ŝ\\\",\\\"scnap\\\":\\\"⪺\\\",\\\"scnE\\\":\\\"⪶\\\",\\\"scnsim\\\":\\\"⋩\\\",\\\"scpolint\\\":\\\"⨓\\\",\\\"scsim\\\":\\\"≿\\\",\\\"Scy\\\":\\\"С\\\",\\\"scy\\\":\\\"с\\\",\\\"sdotb\\\":\\\"⊡\\\",\\\"sdot\\\":\\\"⋅\\\",\\\"sdote\\\":\\\"⩦\\\",\\\"searhk\\\":\\\"⤥\\\",\\\"searr\\\":\\\"↘\\\",\\\"seArr\\\":\\\"⇘\\\",\\\"searrow\\\":\\\"↘\\\",\\\"sect\\\":\\\"§\\\",\\\"semi\\\":\\\";\\\",\\\"seswar\\\":\\\"⤩\\\",\\\"setminus\\\":\\\"∖\\\",\\\"setmn\\\":\\\"∖\\\",\\\"sext\\\":\\\"✶\\\",\\\"Sfr\\\":\\\"𝔖\\\",\\\"sfr\\\":\\\"𝔰\\\",\\\"sfrown\\\":\\\"⌢\\\",\\\"sharp\\\":\\\"♯\\\",\\\"SHCHcy\\\":\\\"Щ\\\",\\\"shchcy\\\":\\\"щ\\\",\\\"SHcy\\\":\\\"Ш\\\",\\\"shcy\\\":\\\"ш\\\",\\\"ShortDownArrow\\\":\\\"↓\\\",\\\"ShortLeftArrow\\\":\\\"←\\\",\\\"shortmid\\\":\\\"∣\\\",\\\"shortparallel\\\":\\\"∥\\\",\\\"ShortRightArrow\\\":\\\"→\\\",\\\"ShortUpArrow\\\":\\\"↑\\\",\\\"shy\\\":\\\"­\\\",\\\"Sigma\\\":\\\"Σ\\\",\\\"sigma\\\":\\\"σ\\\",\\\"sigmaf\\\":\\\"ς\\\",\\\"sigmav\\\":\\\"ς\\\",\\\"sim\\\":\\\"∼\\\",\\\"simdot\\\":\\\"⩪\\\",\\\"sime\\\":\\\"≃\\\",\\\"simeq\\\":\\\"≃\\\",\\\"simg\\\":\\\"⪞\\\",\\\"simgE\\\":\\\"⪠\\\",\\\"siml\\\":\\\"⪝\\\",\\\"simlE\\\":\\\"⪟\\\",\\\"simne\\\":\\\"≆\\\",\\\"simplus\\\":\\\"⨤\\\",\\\"simrarr\\\":\\\"⥲\\\",\\\"slarr\\\":\\\"←\\\",\\\"SmallCircle\\\":\\\"∘\\\",\\\"smallsetminus\\\":\\\"∖\\\",\\\"smashp\\\":\\\"⨳\\\",\\\"smeparsl\\\":\\\"⧤\\\",\\\"smid\\\":\\\"∣\\\",\\\"smile\\\":\\\"⌣\\\",\\\"smt\\\":\\\"⪪\\\",\\\"smte\\\":\\\"⪬\\\",\\\"smtes\\\":\\\"⪬︀\\\",\\\"SOFTcy\\\":\\\"Ь\\\",\\\"softcy\\\":\\\"ь\\\",\\\"solbar\\\":\\\"⌿\\\",\\\"solb\\\":\\\"⧄\\\",\\\"sol\\\":\\\"/\\\",\\\"Sopf\\\":\\\"𝕊\\\",\\\"sopf\\\":\\\"𝕤\\\",\\\"spades\\\":\\\"♠\\\",\\\"spadesuit\\\":\\\"♠\\\",\\\"spar\\\":\\\"∥\\\",\\\"sqcap\\\":\\\"⊓\\\",\\\"sqcaps\\\":\\\"⊓︀\\\",\\\"sqcup\\\":\\\"⊔\\\",\\\"sqcups\\\":\\\"⊔︀\\\",\\\"Sqrt\\\":\\\"√\\\",\\\"sqsub\\\":\\\"⊏\\\",\\\"sqsube\\\":\\\"⊑\\\",\\\"sqsubset\\\":\\\"⊏\\\",\\\"sqsubseteq\\\":\\\"⊑\\\",\\\"sqsup\\\":\\\"⊐\\\",\\\"sqsupe\\\":\\\"⊒\\\",\\\"sqsupset\\\":\\\"⊐\\\",\\\"sqsupseteq\\\":\\\"⊒\\\",\\\"square\\\":\\\"□\\\",\\\"Square\\\":\\\"□\\\",\\\"SquareIntersection\\\":\\\"⊓\\\",\\\"SquareSubset\\\":\\\"⊏\\\",\\\"SquareSubsetEqual\\\":\\\"⊑\\\",\\\"SquareSuperset\\\":\\\"⊐\\\",\\\"SquareSupersetEqual\\\":\\\"⊒\\\",\\\"SquareUnion\\\":\\\"⊔\\\",\\\"squarf\\\":\\\"▪\\\",\\\"squ\\\":\\\"□\\\",\\\"squf\\\":\\\"▪\\\",\\\"srarr\\\":\\\"→\\\",\\\"Sscr\\\":\\\"𝒮\\\",\\\"sscr\\\":\\\"𝓈\\\",\\\"ssetmn\\\":\\\"∖\\\",\\\"ssmile\\\":\\\"⌣\\\",\\\"sstarf\\\":\\\"⋆\\\",\\\"Star\\\":\\\"⋆\\\",\\\"star\\\":\\\"☆\\\",\\\"starf\\\":\\\"★\\\",\\\"straightepsilon\\\":\\\"ϵ\\\",\\\"straightphi\\\":\\\"ϕ\\\",\\\"strns\\\":\\\"¯\\\",\\\"sub\\\":\\\"⊂\\\",\\\"Sub\\\":\\\"⋐\\\",\\\"subdot\\\":\\\"⪽\\\",\\\"subE\\\":\\\"⫅\\\",\\\"sube\\\":\\\"⊆\\\",\\\"subedot\\\":\\\"⫃\\\",\\\"submult\\\":\\\"⫁\\\",\\\"subnE\\\":\\\"⫋\\\",\\\"subne\\\":\\\"⊊\\\",\\\"subplus\\\":\\\"⪿\\\",\\\"subrarr\\\":\\\"⥹\\\",\\\"subset\\\":\\\"⊂\\\",\\\"Subset\\\":\\\"⋐\\\",\\\"subseteq\\\":\\\"⊆\\\",\\\"subseteqq\\\":\\\"⫅\\\",\\\"SubsetEqual\\\":\\\"⊆\\\",\\\"subsetneq\\\":\\\"⊊\\\",\\\"subsetneqq\\\":\\\"⫋\\\",\\\"subsim\\\":\\\"⫇\\\",\\\"subsub\\\":\\\"⫕\\\",\\\"subsup\\\":\\\"⫓\\\",\\\"succapprox\\\":\\\"⪸\\\",\\\"succ\\\":\\\"≻\\\",\\\"succcurlyeq\\\":\\\"≽\\\",\\\"Succeeds\\\":\\\"≻\\\",\\\"SucceedsEqual\\\":\\\"⪰\\\",\\\"SucceedsSlantEqual\\\":\\\"≽\\\",\\\"SucceedsTilde\\\":\\\"≿\\\",\\\"succeq\\\":\\\"⪰\\\",\\\"succnapprox\\\":\\\"⪺\\\",\\\"succneqq\\\":\\\"⪶\\\",\\\"succnsim\\\":\\\"⋩\\\",\\\"succsim\\\":\\\"≿\\\",\\\"SuchThat\\\":\\\"∋\\\",\\\"sum\\\":\\\"∑\\\",\\\"Sum\\\":\\\"∑\\\",\\\"sung\\\":\\\"♪\\\",\\\"sup1\\\":\\\"¹\\\",\\\"sup2\\\":\\\"²\\\",\\\"sup3\\\":\\\"³\\\",\\\"sup\\\":\\\"⊃\\\",\\\"Sup\\\":\\\"⋑\\\",\\\"supdot\\\":\\\"⪾\\\",\\\"supdsub\\\":\\\"⫘\\\",\\\"supE\\\":\\\"⫆\\\",\\\"supe\\\":\\\"⊇\\\",\\\"supedot\\\":\\\"⫄\\\",\\\"Superset\\\":\\\"⊃\\\",\\\"SupersetEqual\\\":\\\"⊇\\\",\\\"suphsol\\\":\\\"⟉\\\",\\\"suphsub\\\":\\\"⫗\\\",\\\"suplarr\\\":\\\"⥻\\\",\\\"supmult\\\":\\\"⫂\\\",\\\"supnE\\\":\\\"⫌\\\",\\\"supne\\\":\\\"⊋\\\",\\\"supplus\\\":\\\"⫀\\\",\\\"supset\\\":\\\"⊃\\\",\\\"Supset\\\":\\\"⋑\\\",\\\"supseteq\\\":\\\"⊇\\\",\\\"supseteqq\\\":\\\"⫆\\\",\\\"supsetneq\\\":\\\"⊋\\\",\\\"supsetneqq\\\":\\\"⫌\\\",\\\"supsim\\\":\\\"⫈\\\",\\\"supsub\\\":\\\"⫔\\\",\\\"supsup\\\":\\\"⫖\\\",\\\"swarhk\\\":\\\"⤦\\\",\\\"swarr\\\":\\\"↙\\\",\\\"swArr\\\":\\\"⇙\\\",\\\"swarrow\\\":\\\"↙\\\",\\\"swnwar\\\":\\\"⤪\\\",\\\"szlig\\\":\\\"ß\\\",\\\"Tab\\\":\\\"\\\\t\\\",\\\"target\\\":\\\"⌖\\\",\\\"Tau\\\":\\\"Τ\\\",\\\"tau\\\":\\\"τ\\\",\\\"tbrk\\\":\\\"⎴\\\",\\\"Tcaron\\\":\\\"Ť\\\",\\\"tcaron\\\":\\\"ť\\\",\\\"Tcedil\\\":\\\"Ţ\\\",\\\"tcedil\\\":\\\"ţ\\\",\\\"Tcy\\\":\\\"Т\\\",\\\"tcy\\\":\\\"т\\\",\\\"tdot\\\":\\\"⃛\\\",\\\"telrec\\\":\\\"⌕\\\",\\\"Tfr\\\":\\\"𝔗\\\",\\\"tfr\\\":\\\"𝔱\\\",\\\"there4\\\":\\\"∴\\\",\\\"therefore\\\":\\\"∴\\\",\\\"Therefore\\\":\\\"∴\\\",\\\"Theta\\\":\\\"Θ\\\",\\\"theta\\\":\\\"θ\\\",\\\"thetasym\\\":\\\"ϑ\\\",\\\"thetav\\\":\\\"ϑ\\\",\\\"thickapprox\\\":\\\"≈\\\",\\\"thicksim\\\":\\\"∼\\\",\\\"ThickSpace\\\":\\\"  \\\",\\\"ThinSpace\\\":\\\" \\\",\\\"thinsp\\\":\\\" \\\",\\\"thkap\\\":\\\"≈\\\",\\\"thksim\\\":\\\"∼\\\",\\\"THORN\\\":\\\"Þ\\\",\\\"thorn\\\":\\\"þ\\\",\\\"tilde\\\":\\\"˜\\\",\\\"Tilde\\\":\\\"∼\\\",\\\"TildeEqual\\\":\\\"≃\\\",\\\"TildeFullEqual\\\":\\\"≅\\\",\\\"TildeTilde\\\":\\\"≈\\\",\\\"timesbar\\\":\\\"⨱\\\",\\\"timesb\\\":\\\"⊠\\\",\\\"times\\\":\\\"×\\\",\\\"timesd\\\":\\\"⨰\\\",\\\"tint\\\":\\\"∭\\\",\\\"toea\\\":\\\"⤨\\\",\\\"topbot\\\":\\\"⌶\\\",\\\"topcir\\\":\\\"⫱\\\",\\\"top\\\":\\\"⊤\\\",\\\"Topf\\\":\\\"𝕋\\\",\\\"topf\\\":\\\"𝕥\\\",\\\"topfork\\\":\\\"⫚\\\",\\\"tosa\\\":\\\"⤩\\\",\\\"tprime\\\":\\\"‴\\\",\\\"trade\\\":\\\"™\\\",\\\"TRADE\\\":\\\"™\\\",\\\"triangle\\\":\\\"▵\\\",\\\"triangledown\\\":\\\"▿\\\",\\\"triangleleft\\\":\\\"◃\\\",\\\"trianglelefteq\\\":\\\"⊴\\\",\\\"triangleq\\\":\\\"≜\\\",\\\"triangleright\\\":\\\"▹\\\",\\\"trianglerighteq\\\":\\\"⊵\\\",\\\"tridot\\\":\\\"◬\\\",\\\"trie\\\":\\\"≜\\\",\\\"triminus\\\":\\\"⨺\\\",\\\"TripleDot\\\":\\\"⃛\\\",\\\"triplus\\\":\\\"⨹\\\",\\\"trisb\\\":\\\"⧍\\\",\\\"tritime\\\":\\\"⨻\\\",\\\"trpezium\\\":\\\"⏢\\\",\\\"Tscr\\\":\\\"𝒯\\\",\\\"tscr\\\":\\\"𝓉\\\",\\\"TScy\\\":\\\"Ц\\\",\\\"tscy\\\":\\\"ц\\\",\\\"TSHcy\\\":\\\"Ћ\\\",\\\"tshcy\\\":\\\"ћ\\\",\\\"Tstrok\\\":\\\"Ŧ\\\",\\\"tstrok\\\":\\\"ŧ\\\",\\\"twixt\\\":\\\"≬\\\",\\\"twoheadleftarrow\\\":\\\"↞\\\",\\\"twoheadrightarrow\\\":\\\"↠\\\",\\\"Uacute\\\":\\\"Ú\\\",\\\"uacute\\\":\\\"ú\\\",\\\"uarr\\\":\\\"↑\\\",\\\"Uarr\\\":\\\"↟\\\",\\\"uArr\\\":\\\"⇑\\\",\\\"Uarrocir\\\":\\\"⥉\\\",\\\"Ubrcy\\\":\\\"Ў\\\",\\\"ubrcy\\\":\\\"ў\\\",\\\"Ubreve\\\":\\\"Ŭ\\\",\\\"ubreve\\\":\\\"ŭ\\\",\\\"Ucirc\\\":\\\"Û\\\",\\\"ucirc\\\":\\\"û\\\",\\\"Ucy\\\":\\\"У\\\",\\\"ucy\\\":\\\"у\\\",\\\"udarr\\\":\\\"⇅\\\",\\\"Udblac\\\":\\\"Ű\\\",\\\"udblac\\\":\\\"ű\\\",\\\"udhar\\\":\\\"⥮\\\",\\\"ufisht\\\":\\\"⥾\\\",\\\"Ufr\\\":\\\"𝔘\\\",\\\"ufr\\\":\\\"𝔲\\\",\\\"Ugrave\\\":\\\"Ù\\\",\\\"ugrave\\\":\\\"ù\\\",\\\"uHar\\\":\\\"⥣\\\",\\\"uharl\\\":\\\"↿\\\",\\\"uharr\\\":\\\"↾\\\",\\\"uhblk\\\":\\\"▀\\\",\\\"ulcorn\\\":\\\"⌜\\\",\\\"ulcorner\\\":\\\"⌜\\\",\\\"ulcrop\\\":\\\"⌏\\\",\\\"ultri\\\":\\\"◸\\\",\\\"Umacr\\\":\\\"Ū\\\",\\\"umacr\\\":\\\"ū\\\",\\\"uml\\\":\\\"¨\\\",\\\"UnderBar\\\":\\\"_\\\",\\\"UnderBrace\\\":\\\"⏟\\\",\\\"UnderBracket\\\":\\\"⎵\\\",\\\"UnderParenthesis\\\":\\\"⏝\\\",\\\"Union\\\":\\\"⋃\\\",\\\"UnionPlus\\\":\\\"⊎\\\",\\\"Uogon\\\":\\\"Ų\\\",\\\"uogon\\\":\\\"ų\\\",\\\"Uopf\\\":\\\"𝕌\\\",\\\"uopf\\\":\\\"𝕦\\\",\\\"UpArrowBar\\\":\\\"⤒\\\",\\\"uparrow\\\":\\\"↑\\\",\\\"UpArrow\\\":\\\"↑\\\",\\\"Uparrow\\\":\\\"⇑\\\",\\\"UpArrowDownArrow\\\":\\\"⇅\\\",\\\"updownarrow\\\":\\\"↕\\\",\\\"UpDownArrow\\\":\\\"↕\\\",\\\"Updownarrow\\\":\\\"⇕\\\",\\\"UpEquilibrium\\\":\\\"⥮\\\",\\\"upharpoonleft\\\":\\\"↿\\\",\\\"upharpoonright\\\":\\\"↾\\\",\\\"uplus\\\":\\\"⊎\\\",\\\"UpperLeftArrow\\\":\\\"↖\\\",\\\"UpperRightArrow\\\":\\\"↗\\\",\\\"upsi\\\":\\\"υ\\\",\\\"Upsi\\\":\\\"ϒ\\\",\\\"upsih\\\":\\\"ϒ\\\",\\\"Upsilon\\\":\\\"Υ\\\",\\\"upsilon\\\":\\\"υ\\\",\\\"UpTeeArrow\\\":\\\"↥\\\",\\\"UpTee\\\":\\\"⊥\\\",\\\"upuparrows\\\":\\\"⇈\\\",\\\"urcorn\\\":\\\"⌝\\\",\\\"urcorner\\\":\\\"⌝\\\",\\\"urcrop\\\":\\\"⌎\\\",\\\"Uring\\\":\\\"Ů\\\",\\\"uring\\\":\\\"ů\\\",\\\"urtri\\\":\\\"◹\\\",\\\"Uscr\\\":\\\"𝒰\\\",\\\"uscr\\\":\\\"𝓊\\\",\\\"utdot\\\":\\\"⋰\\\",\\\"Utilde\\\":\\\"Ũ\\\",\\\"utilde\\\":\\\"ũ\\\",\\\"utri\\\":\\\"▵\\\",\\\"utrif\\\":\\\"▴\\\",\\\"uuarr\\\":\\\"⇈\\\",\\\"Uuml\\\":\\\"Ü\\\",\\\"uuml\\\":\\\"ü\\\",\\\"uwangle\\\":\\\"⦧\\\",\\\"vangrt\\\":\\\"⦜\\\",\\\"varepsilon\\\":\\\"ϵ\\\",\\\"varkappa\\\":\\\"ϰ\\\",\\\"varnothing\\\":\\\"∅\\\",\\\"varphi\\\":\\\"ϕ\\\",\\\"varpi\\\":\\\"ϖ\\\",\\\"varpropto\\\":\\\"∝\\\",\\\"varr\\\":\\\"↕\\\",\\\"vArr\\\":\\\"⇕\\\",\\\"varrho\\\":\\\"ϱ\\\",\\\"varsigma\\\":\\\"ς\\\",\\\"varsubsetneq\\\":\\\"⊊︀\\\",\\\"varsubsetneqq\\\":\\\"⫋︀\\\",\\\"varsupsetneq\\\":\\\"⊋︀\\\",\\\"varsupsetneqq\\\":\\\"⫌︀\\\",\\\"vartheta\\\":\\\"ϑ\\\",\\\"vartriangleleft\\\":\\\"⊲\\\",\\\"vartriangleright\\\":\\\"⊳\\\",\\\"vBar\\\":\\\"⫨\\\",\\\"Vbar\\\":\\\"⫫\\\",\\\"vBarv\\\":\\\"⫩\\\",\\\"Vcy\\\":\\\"В\\\",\\\"vcy\\\":\\\"в\\\",\\\"vdash\\\":\\\"⊢\\\",\\\"vDash\\\":\\\"⊨\\\",\\\"Vdash\\\":\\\"⊩\\\",\\\"VDash\\\":\\\"⊫\\\",\\\"Vdashl\\\":\\\"⫦\\\",\\\"veebar\\\":\\\"⊻\\\",\\\"vee\\\":\\\"∨\\\",\\\"Vee\\\":\\\"⋁\\\",\\\"veeeq\\\":\\\"≚\\\",\\\"vellip\\\":\\\"⋮\\\",\\\"verbar\\\":\\\"|\\\",\\\"Verbar\\\":\\\"‖\\\",\\\"vert\\\":\\\"|\\\",\\\"Vert\\\":\\\"‖\\\",\\\"VerticalBar\\\":\\\"∣\\\",\\\"VerticalLine\\\":\\\"|\\\",\\\"VerticalSeparator\\\":\\\"❘\\\",\\\"VerticalTilde\\\":\\\"≀\\\",\\\"VeryThinSpace\\\":\\\" \\\",\\\"Vfr\\\":\\\"𝔙\\\",\\\"vfr\\\":\\\"𝔳\\\",\\\"vltri\\\":\\\"⊲\\\",\\\"vnsub\\\":\\\"⊂⃒\\\",\\\"vnsup\\\":\\\"⊃⃒\\\",\\\"Vopf\\\":\\\"𝕍\\\",\\\"vopf\\\":\\\"𝕧\\\",\\\"vprop\\\":\\\"∝\\\",\\\"vrtri\\\":\\\"⊳\\\",\\\"Vscr\\\":\\\"𝒱\\\",\\\"vscr\\\":\\\"𝓋\\\",\\\"vsubnE\\\":\\\"⫋︀\\\",\\\"vsubne\\\":\\\"⊊︀\\\",\\\"vsupnE\\\":\\\"⫌︀\\\",\\\"vsupne\\\":\\\"⊋︀\\\",\\\"Vvdash\\\":\\\"⊪\\\",\\\"vzigzag\\\":\\\"⦚\\\",\\\"Wcirc\\\":\\\"Ŵ\\\",\\\"wcirc\\\":\\\"ŵ\\\",\\\"wedbar\\\":\\\"⩟\\\",\\\"wedge\\\":\\\"∧\\\",\\\"Wedge\\\":\\\"⋀\\\",\\\"wedgeq\\\":\\\"≙\\\",\\\"weierp\\\":\\\"℘\\\",\\\"Wfr\\\":\\\"𝔚\\\",\\\"wfr\\\":\\\"𝔴\\\",\\\"Wopf\\\":\\\"𝕎\\\",\\\"wopf\\\":\\\"𝕨\\\",\\\"wp\\\":\\\"℘\\\",\\\"wr\\\":\\\"≀\\\",\\\"wreath\\\":\\\"≀\\\",\\\"Wscr\\\":\\\"𝒲\\\",\\\"wscr\\\":\\\"𝓌\\\",\\\"xcap\\\":\\\"⋂\\\",\\\"xcirc\\\":\\\"◯\\\",\\\"xcup\\\":\\\"⋃\\\",\\\"xdtri\\\":\\\"▽\\\",\\\"Xfr\\\":\\\"𝔛\\\",\\\"xfr\\\":\\\"𝔵\\\",\\\"xharr\\\":\\\"⟷\\\",\\\"xhArr\\\":\\\"⟺\\\",\\\"Xi\\\":\\\"Ξ\\\",\\\"xi\\\":\\\"ξ\\\",\\\"xlarr\\\":\\\"⟵\\\",\\\"xlArr\\\":\\\"⟸\\\",\\\"xmap\\\":\\\"⟼\\\",\\\"xnis\\\":\\\"⋻\\\",\\\"xodot\\\":\\\"⨀\\\",\\\"Xopf\\\":\\\"𝕏\\\",\\\"xopf\\\":\\\"𝕩\\\",\\\"xoplus\\\":\\\"⨁\\\",\\\"xotime\\\":\\\"⨂\\\",\\\"xrarr\\\":\\\"⟶\\\",\\\"xrArr\\\":\\\"⟹\\\",\\\"Xscr\\\":\\\"𝒳\\\",\\\"xscr\\\":\\\"𝓍\\\",\\\"xsqcup\\\":\\\"⨆\\\",\\\"xuplus\\\":\\\"⨄\\\",\\\"xutri\\\":\\\"△\\\",\\\"xvee\\\":\\\"⋁\\\",\\\"xwedge\\\":\\\"⋀\\\",\\\"Yacute\\\":\\\"Ý\\\",\\\"yacute\\\":\\\"ý\\\",\\\"YAcy\\\":\\\"Я\\\",\\\"yacy\\\":\\\"я\\\",\\\"Ycirc\\\":\\\"Ŷ\\\",\\\"ycirc\\\":\\\"ŷ\\\",\\\"Ycy\\\":\\\"Ы\\\",\\\"ycy\\\":\\\"ы\\\",\\\"yen\\\":\\\"¥\\\",\\\"Yfr\\\":\\\"𝔜\\\",\\\"yfr\\\":\\\"𝔶\\\",\\\"YIcy\\\":\\\"Ї\\\",\\\"yicy\\\":\\\"ї\\\",\\\"Yopf\\\":\\\"𝕐\\\",\\\"yopf\\\":\\\"𝕪\\\",\\\"Yscr\\\":\\\"𝒴\\\",\\\"yscr\\\":\\\"𝓎\\\",\\\"YUcy\\\":\\\"Ю\\\",\\\"yucy\\\":\\\"ю\\\",\\\"yuml\\\":\\\"ÿ\\\",\\\"Yuml\\\":\\\"Ÿ\\\",\\\"Zacute\\\":\\\"Ź\\\",\\\"zacute\\\":\\\"ź\\\",\\\"Zcaron\\\":\\\"Ž\\\",\\\"zcaron\\\":\\\"ž\\\",\\\"Zcy\\\":\\\"З\\\",\\\"zcy\\\":\\\"з\\\",\\\"Zdot\\\":\\\"Ż\\\",\\\"zdot\\\":\\\"ż\\\",\\\"zeetrf\\\":\\\"ℨ\\\",\\\"ZeroWidthSpace\\\":\\\"​\\\",\\\"Zeta\\\":\\\"Ζ\\\",\\\"zeta\\\":\\\"ζ\\\",\\\"zfr\\\":\\\"𝔷\\\",\\\"Zfr\\\":\\\"ℨ\\\",\\\"ZHcy\\\":\\\"Ж\\\",\\\"zhcy\\\":\\\"ж\\\",\\\"zigrarr\\\":\\\"⇝\\\",\\\"zopf\\\":\\\"𝕫\\\",\\\"Zopf\\\":\\\"ℤ\\\",\\\"Zscr\\\":\\\"𝒵\\\",\\\"zscr\\\":\\\"𝓏\\\",\\\"zwj\\\":\\\"‍\\\",\\\"zwnj\\\":\\\"‌\\\"}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2VudGl0aWVzL2xpYi9tYXBzL2VudGl0aWVzLmpzb24uanMiLCJzb3VyY2VzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/entities/lib/maps/entities.json\n");
298
299/***/ }),
300
301/***/ "../../../node_modules/graphql-ws/umd/graphql-ws.js":
302/*!*************************************************************************************!*\
303 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql-ws/umd/graphql-ws.js ***!
304 \*************************************************************************************/
305/*! no static exports found */
306/***/ (function(module, exports, __webpack_require__) {
307
308eval("/* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n (function (global, factory) {\n true ? factory(exports) : undefined;\n })(void 0, function (exports) {\n 'use strict';\n /**\n *\n * protocol\n *\n */\n\n /** The WebSocket sub-protocol used for the [GraphQL over WebSocket Protocol](/PROTOCOL.md). */\n\n const GRAPHQL_TRANSPORT_WS_PROTOCOL = 'graphql-transport-ws'; // Extremely small optimisation, reduces runtime prototype traversal\n\n const baseHasOwnProperty = Object.prototype.hasOwnProperty;\n\n function isObject(val) {\n return typeof val === 'object' && val !== null;\n }\n\n function areGraphQLErrors(obj) {\n return Array.isArray(obj) && // must be at least one error\n obj.length > 0 && // error has at least a message\n obj.every(ob => 'message' in ob);\n }\n\n function hasOwnProperty(obj, prop) {\n return baseHasOwnProperty.call(obj, prop);\n }\n\n function hasOwnObjectProperty(obj, prop) {\n return baseHasOwnProperty.call(obj, prop) && isObject(obj[prop]);\n }\n\n function hasOwnStringProperty(obj, prop) {\n return baseHasOwnProperty.call(obj, prop) && typeof obj[prop] === 'string';\n }\n /**\n *\n * message\n *\n */\n\n /** Types of messages allowed to be sent by the client/server over the WS protocol. */\n\n\n exports.MessageType = void 0;\n\n (function (MessageType) {\n MessageType[\"ConnectionInit\"] = \"connection_init\";\n MessageType[\"ConnectionAck\"] = \"connection_ack\";\n MessageType[\"Subscribe\"] = \"subscribe\";\n MessageType[\"Next\"] = \"next\";\n MessageType[\"Error\"] = \"error\";\n MessageType[\"Complete\"] = \"complete\";\n })(exports.MessageType || (exports.MessageType = {}));\n /** Checks if the provided value is a message. */\n\n\n function isMessage(val) {\n if (isObject(val)) {\n // all messages must have the `type` prop\n if (!hasOwnStringProperty(val, 'type')) {\n return false;\n } // validate other properties depending on the `type`\n\n\n switch (val.type) {\n case exports.MessageType.ConnectionInit:\n // the connection init message can have optional payload object\n return !hasOwnProperty(val, 'payload') || val.payload === undefined || isObject(val.payload);\n\n case exports.MessageType.ConnectionAck:\n // the connection ack message can have optional payload object too\n return !hasOwnProperty(val, 'payload') || val.payload === undefined || isObject(val.payload);\n\n case exports.MessageType.Subscribe:\n return hasOwnStringProperty(val, 'id') && hasOwnObjectProperty(val, 'payload') && (!hasOwnProperty(val.payload, 'operationName') || val.payload.operationName === undefined || val.payload.operationName === null || typeof val.payload.operationName === 'string') && hasOwnStringProperty(val.payload, 'query') && (!hasOwnProperty(val.payload, 'variables') || val.payload.variables === undefined || val.payload.variables === null || hasOwnObjectProperty(val.payload, 'variables'));\n\n case exports.MessageType.Next:\n return hasOwnStringProperty(val, 'id') && hasOwnObjectProperty(val, 'payload');\n\n case exports.MessageType.Error:\n return hasOwnStringProperty(val, 'id') && areGraphQLErrors(val.payload);\n\n case exports.MessageType.Complete:\n return hasOwnStringProperty(val, 'id');\n\n default:\n return false;\n }\n }\n\n return false;\n }\n /** Parses the raw websocket message data to a valid message. */\n\n\n function parseMessage(data) {\n if (isMessage(data)) {\n return data;\n }\n\n if (typeof data !== 'string') {\n throw new Error('Message not parsable');\n }\n\n const message = JSON.parse(data);\n\n if (!isMessage(message)) {\n throw new Error('Invalid message');\n }\n\n return message;\n }\n /** Stringifies a valid message ready to be sent through the socket. */\n\n\n function stringifyMessage(msg) {\n if (!isMessage(msg)) {\n throw new Error('Cannot stringify invalid message');\n }\n\n return JSON.stringify(msg);\n }\n /**\n *\n * client\n *\n */\n\n /** Creates a disposable GraphQL over WebSocket client. */\n\n\n function createClient(options) {\n const {\n url,\n connectionParams,\n lazy = true,\n onNonLazyError = console.error,\n keepAlive = 0,\n retryAttempts = 5,\n retryWait = async function randomisedExponentialBackoff(retries) {\n let retryDelay = 1000; // start with 1s delay\n\n for (let i = 0; i < retries; i++) {\n retryDelay *= 2;\n }\n\n await new Promise(resolve => setTimeout(resolve, retryDelay + // add random timeout from 300ms to 3s\n Math.floor(Math.random() * (3000 - 300) + 300)));\n },\n isFatalConnectionProblem = errOrCloseEvent => // non `CloseEvent`s are fatal by default\n !isLikeCloseEvent(errOrCloseEvent),\n on,\n webSocketImpl,\n\n /**\n * Generates a v4 UUID to be used as the ID using `Math`\n * as the random number generator. Supply your own generator\n * in case you need more uniqueness.\n *\n * Reference: https://gist.github.com/jed/982883\n */\n generateID = function generateUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = Math.random() * 16 | 0,\n v = c == 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n }\n } = options;\n let ws;\n\n if (webSocketImpl) {\n if (!isWebSocket(webSocketImpl)) {\n throw new Error('Invalid WebSocket implementation provided');\n }\n\n ws = webSocketImpl;\n } else if (typeof WebSocket !== 'undefined') {\n ws = WebSocket;\n } else if (typeof global !== 'undefined') {\n ws = global.WebSocket || // @ts-expect-error: Support more browsers\n global.MozWebSocket;\n } else if (typeof window !== 'undefined') {\n ws = window.WebSocket || // @ts-expect-error: Support more browsers\n window.MozWebSocket;\n }\n\n if (!ws) throw new Error('WebSocket implementation missing');\n const WebSocketImpl = ws; // websocket status emitter, subscriptions are handled differently\n\n const emitter = (() => {\n const message = (() => {\n const listeners = {};\n return {\n on(id, listener) {\n listeners[id] = listener;\n return () => {\n delete listeners[id];\n };\n },\n\n emit(message) {\n var _a;\n\n if ('id' in message) (_a = listeners[message.id]) === null || _a === void 0 ? void 0 : _a.call(listeners, message);\n }\n\n };\n })();\n\n const listeners = {\n connecting: (on === null || on === void 0 ? void 0 : on.connecting) ? [on.connecting] : [],\n connected: (on === null || on === void 0 ? void 0 : on.connected) ? [on.connected] : [],\n message: (on === null || on === void 0 ? void 0 : on.message) ? [message.emit, on.message] : [message.emit],\n closed: (on === null || on === void 0 ? void 0 : on.closed) ? [on.closed] : [],\n error: (on === null || on === void 0 ? void 0 : on.error) ? [on.error] : []\n };\n return {\n onMessage: message.on,\n\n on(event, listener) {\n const l = listeners[event];\n l.push(listener);\n return () => {\n l.splice(l.indexOf(listener), 1);\n };\n },\n\n emit(event, ...args) {\n for (const listener of listeners[event]) {\n // @ts-expect-error: The args should fit\n listener(...args);\n }\n }\n\n };\n })();\n\n let connecting,\n locks = 0,\n retrying = false,\n retries = 0,\n disposed = false;\n\n async function connect() {\n locks++;\n const [socket, throwOnClose] = await (connecting !== null && connecting !== void 0 ? connecting : connecting = new Promise((connected, denied) => (async () => {\n if (retrying) {\n await retryWait(retries);\n retries++;\n }\n\n emitter.emit('connecting');\n const socket = new WebSocketImpl(typeof url === 'function' ? await url() : url, GRAPHQL_TRANSPORT_WS_PROTOCOL);\n\n socket.onerror = err => {\n // we let the onclose reject the promise for correct retry handling\n emitter.emit('error', err);\n };\n\n socket.onclose = event => {\n connecting = undefined;\n emitter.emit('closed', event);\n denied(event);\n };\n\n socket.onopen = async () => {\n try {\n socket.send(stringifyMessage({\n type: exports.MessageType.ConnectionInit,\n payload: typeof connectionParams === 'function' ? await connectionParams() : connectionParams\n }));\n } catch (err) {\n socket.close(4400, err instanceof Error ? err.message : new Error(err).message);\n }\n };\n\n let acknowledged = false;\n\n socket.onmessage = ({\n data\n }) => {\n try {\n const message = parseMessage(data);\n emitter.emit('message', message);\n if (acknowledged) return; // already connected and acknowledged\n\n if (message.type !== exports.MessageType.ConnectionAck) throw new Error(`First message cannot be of type ${message.type}`);\n acknowledged = true;\n emitter.emit('connected', socket, message.payload); // connected = socket opened + acknowledged\n\n retries = 0; // reset the retries on connect\n\n connected([socket, new Promise((_, closed) => socket.addEventListener('close', closed))]);\n } catch (err) {\n socket.close(4400, err instanceof Error ? err.message : new Error(err).message);\n }\n };\n })()));\n\n let release = () => {// releases this connection lock\n };\n\n const released = new Promise(resolve => release = resolve);\n return [socket, release, Promise.race([// wait for\n released.then(() => {\n if (! --locks) {\n // if no more connection locks are present, complete the connection\n const complete = () => socket.close(1000, 'Normal Closure');\n\n if (isFinite(keepAlive) && keepAlive > 0) {\n // if the keepalive is set, allow for the specified calmdown time and\n // then complete. but only if no lock got created in the meantime and\n // if the socket is still open\n setTimeout(() => {\n if (!locks && socket.readyState === WebSocketImpl.OPEN) complete();\n }, keepAlive);\n } else {\n // otherwise complete immediately\n complete();\n }\n }\n }), // or\n throwOnClose])];\n }\n /**\n * Checks the `connect` problem and evaluates if the client should retry.\n */\n\n\n function shouldRetryConnectOrThrow(errOrCloseEvent) {\n // some close codes are worth reporting immediately\n if (isLikeCloseEvent(errOrCloseEvent) && [1002, 1011, 4400, 4401, 4409, 4429 // Too many initialisation requests\n ].includes(errOrCloseEvent.code)) throw errOrCloseEvent; // disposed or normal closure (completed), shouldnt try again\n\n if (disposed || isLikeCloseEvent(errOrCloseEvent) && errOrCloseEvent.code === 1000) return false; // retries are not allowed or we tried to many times, report error\n\n if (!retryAttempts || retries >= retryAttempts) throw errOrCloseEvent; // throw fatal connection problems immediately\n\n if (isFatalConnectionProblem(errOrCloseEvent)) throw errOrCloseEvent; // looks good, start retrying\n\n return retrying = true;\n } // in non-lazy (hot?) mode always hold one connection lock to persist the socket\n\n\n if (!lazy) {\n (async () => {\n for (;;) {\n try {\n const [,, throwOnClose] = await connect();\n await throwOnClose; // will always throw because releaser is not used\n } catch (errOrCloseEvent) {\n try {\n if (!shouldRetryConnectOrThrow(errOrCloseEvent)) return;\n } catch (errOrCloseEvent) {\n // report thrown error, no further retries\n return onNonLazyError === null || onNonLazyError === void 0 ? void 0 : onNonLazyError(errOrCloseEvent);\n }\n }\n }\n })();\n }\n\n return {\n on: emitter.on,\n\n subscribe(payload, sink) {\n const id = generateID();\n\n let completed = false,\n releaser = () => {\n // for handling completions before connect\n completed = true;\n };\n\n (async () => {\n for (;;) {\n try {\n const [socket, release, waitForReleaseOrThrowOnClose] = await connect(); // if completed while waiting for connect, release the connection lock right away\n\n if (completed) return release();\n const unlisten = emitter.onMessage(id, message => {\n switch (message.type) {\n case exports.MessageType.Next:\n {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sink.next(message.payload);\n return;\n }\n\n case exports.MessageType.Error:\n {\n completed = true;\n sink.error(message.payload);\n releaser(); // TODO-db-201025 calling releaser will complete the sink, meaning that both the `error` and `complete` will be\n // called. neither promises or observables care; once they settle, additional calls to the resolvers will be ignored\n\n return;\n }\n\n case exports.MessageType.Complete:\n {\n completed = true;\n releaser(); // release completes the sink\n\n return;\n }\n }\n });\n socket.send(stringifyMessage({\n id,\n type: exports.MessageType.Subscribe,\n payload\n }));\n\n releaser = () => {\n if (!completed && socket.readyState === WebSocketImpl.OPEN) // if not completed already and socket is open, send complete message to server on release\n socket.send(stringifyMessage({\n id,\n type: exports.MessageType.Complete\n }));\n release();\n }; // either the releaser will be called, connection completed and\n // the promise resolved or the socket closed and the promise rejected.\n // whatever happens though, we want to stop listening for messages\n\n\n await waitForReleaseOrThrowOnClose.finally(unlisten);\n return; // completed, shouldnt try again\n } catch (errOrCloseEvent) {\n if (!shouldRetryConnectOrThrow(errOrCloseEvent)) return;\n }\n }\n })().catch(sink.error) // rejects on close events and errors\n .then(sink.complete); // resolves on release or normal closure\n\n return () => releaser();\n },\n\n async dispose() {\n disposed = true;\n\n if (connecting) {\n // if there is a connection, close it\n const [socket] = await connecting;\n socket.close(1000, 'Normal Closure');\n }\n }\n\n };\n }\n\n function isLikeCloseEvent(val) {\n return isObject(val) && 'code' in val && 'reason' in val;\n }\n\n function isWebSocket(val) {\n return typeof val === 'function' && 'constructor' in val && 'CLOSED' in val && 'CLOSING' in val && 'CONNECTING' in val && 'OPEN' in val;\n }\n\n exports.GRAPHQL_TRANSPORT_WS_PROTOCOL = GRAPHQL_TRANSPORT_WS_PROTOCOL;\n exports.createClient = createClient;\n exports.isMessage = isMessage;\n exports.parseMessage = parseMessage;\n exports.stringifyMessage = stringifyMessage;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n });\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"../../../node_modules/webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwtd3MvdW1kL2dyYXBocWwtd3MuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC13cy91bWQvZ3JhcGhxbC13cy5qcz9jZTA4Il0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gZmFjdG9yeShleHBvcnRzKSA6XG4gICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnZXhwb3J0cyddLCBmYWN0b3J5KSA6XG4gICAgKGdsb2JhbCA9IHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgOiBnbG9iYWwgfHwgc2VsZiwgZmFjdG9yeShnbG9iYWwuZ3JhcGhxbFdzID0ge30pKTtcbn0odGhpcywgKGZ1bmN0aW9uIChleHBvcnRzKSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogcHJvdG9jb2xcbiAgICAgKlxuICAgICAqL1xuICAgIC8qKiBUaGUgV2ViU29ja2V0IHN1Yi1wcm90b2NvbCB1c2VkIGZvciB0aGUgW0dyYXBoUUwgb3ZlciBXZWJTb2NrZXQgUHJvdG9jb2xdKC9QUk9UT0NPTC5tZCkuICovXG4gICAgY29uc3QgR1JBUEhRTF9UUkFOU1BPUlRfV1NfUFJPVE9DT0wgPSAnZ3JhcGhxbC10cmFuc3BvcnQtd3MnO1xuXG4gICAgLy8gRXh0cmVtZWx5IHNtYWxsIG9wdGltaXNhdGlvbiwgcmVkdWNlcyBydW50aW1lIHByb3RvdHlwZSB0cmF2ZXJzYWxcbiAgICBjb25zdCBiYXNlSGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuICAgIGZ1bmN0aW9uIGlzT2JqZWN0KHZhbCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsICE9PSBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBhcmVHcmFwaFFMRXJyb3JzKG9iaikge1xuICAgICAgICByZXR1cm4gKEFycmF5LmlzQXJyYXkob2JqKSAmJlxuICAgICAgICAgICAgLy8gbXVzdCBiZSBhdCBsZWFzdCBvbmUgZXJyb3JcbiAgICAgICAgICAgIG9iai5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAvLyBlcnJvciBoYXMgYXQgbGVhc3QgYSBtZXNzYWdlXG4gICAgICAgICAgICBvYmouZXZlcnkoKG9iKSA9PiAnbWVzc2FnZScgaW4gb2IpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzT3duUHJvcGVydHkob2JqLCBwcm9wKSB7XG4gICAgICAgIHJldHVybiBiYXNlSGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYXNPd25PYmplY3RQcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIGJhc2VIYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkgJiYgaXNPYmplY3Qob2JqW3Byb3BdKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzT3duU3RyaW5nUHJvcGVydHkob2JqLCBwcm9wKSB7XG4gICAgICAgIHJldHVybiBiYXNlSGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApICYmIHR5cGVvZiBvYmpbcHJvcF0gPT09ICdzdHJpbmcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogbWVzc2FnZVxuICAgICAqXG4gICAgICovXG4gICAgLyoqIFR5cGVzIG9mIG1lc3NhZ2VzIGFsbG93ZWQgdG8gYmUgc2VudCBieSB0aGUgY2xpZW50L3NlcnZlciBvdmVyIHRoZSBXUyBwcm90b2NvbC4gKi9cbiAgICBleHBvcnRzLk1lc3NhZ2VUeXBlID0gdm9pZCAwO1xuICAgIChmdW5jdGlvbiAoTWVzc2FnZVR5cGUpIHtcbiAgICAgICAgTWVzc2FnZVR5cGVbXCJDb25uZWN0aW9uSW5pdFwiXSA9IFwiY29ubmVjdGlvbl9pbml0XCI7XG4gICAgICAgIE1lc3NhZ2VUeXBlW1wiQ29ubmVjdGlvbkFja1wiXSA9IFwiY29ubmVjdGlvbl9hY2tcIjtcbiAgICAgICAgTWVzc2FnZVR5cGVbXCJTdWJzY3JpYmVcIl0gPSBcInN1YnNjcmliZVwiO1xuICAgICAgICBNZXNzYWdlVHlwZVtcIk5leHRcIl0gPSBcIm5leHRcIjtcbiAgICAgICAgTWVzc2FnZVR5cGVbXCJFcnJvclwiXSA9IFwiZXJyb3JcIjtcbiAgICAgICAgTWVzc2FnZVR5cGVbXCJDb21wbGV0ZVwiXSA9IFwiY29tcGxldGVcIjtcbiAgICB9KShleHBvcnRzLk1lc3NhZ2VUeXBlIHx8IChleHBvcnRzLk1lc3NhZ2VUeXBlID0ge30pKTtcbiAgICAvKiogQ2hlY2tzIGlmIHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBhIG1lc3NhZ2UuICovXG4gICAgZnVuY3Rpb24gaXNNZXNzYWdlKHZhbCkge1xuICAgICAgICBpZiAoaXNPYmplY3QodmFsKSkge1xuICAgICAgICAgICAgLy8gYWxsIG1lc3NhZ2VzIG11c3QgaGF2ZSB0aGUgYHR5cGVgIHByb3BcbiAgICAgICAgICAgIGlmICghaGFzT3duU3RyaW5nUHJvcGVydHkodmFsLCAndHlwZScpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdmFsaWRhdGUgb3RoZXIgcHJvcGVydGllcyBkZXBlbmRpbmcgb24gdGhlIGB0eXBlYFxuICAgICAgICAgICAgc3dpdGNoICh2YWwudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgZXhwb3J0cy5NZXNzYWdlVHlwZS5Db25uZWN0aW9uSW5pdDpcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNvbm5lY3Rpb24gaW5pdCBtZXNzYWdlIGNhbiBoYXZlIG9wdGlvbmFsIHBheWxvYWQgb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoIWhhc093blByb3BlcnR5KHZhbCwgJ3BheWxvYWQnKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnBheWxvYWQgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPYmplY3QodmFsLnBheWxvYWQpKTtcbiAgICAgICAgICAgICAgICBjYXNlIGV4cG9ydHMuTWVzc2FnZVR5cGUuQ29ubmVjdGlvbkFjazpcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNvbm5lY3Rpb24gYWNrIG1lc3NhZ2UgY2FuIGhhdmUgb3B0aW9uYWwgcGF5bG9hZCBvYmplY3QgdG9vXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoIWhhc093blByb3BlcnR5KHZhbCwgJ3BheWxvYWQnKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnBheWxvYWQgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPYmplY3QodmFsLnBheWxvYWQpKTtcbiAgICAgICAgICAgICAgICBjYXNlIGV4cG9ydHMuTWVzc2FnZVR5cGUuU3Vic2NyaWJlOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGhhc093blN0cmluZ1Byb3BlcnR5KHZhbCwgJ2lkJykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093bk9iamVjdFByb3BlcnR5KHZhbCwgJ3BheWxvYWQnKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKCFoYXNPd25Qcm9wZXJ0eSh2YWwucGF5bG9hZCwgJ29wZXJhdGlvbk5hbWUnKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5wYXlsb2FkLm9wZXJhdGlvbk5hbWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5wYXlsb2FkLm9wZXJhdGlvbk5hbWUgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdmFsLnBheWxvYWQub3BlcmF0aW9uTmFtZSA9PT0gJ3N0cmluZycpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNPd25TdHJpbmdQcm9wZXJ0eSh2YWwucGF5bG9hZCwgJ3F1ZXJ5JykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICghaGFzT3duUHJvcGVydHkodmFsLnBheWxvYWQsICd2YXJpYWJsZXMnKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5wYXlsb2FkLnZhcmlhYmxlcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnBheWxvYWQudmFyaWFibGVzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duT2JqZWN0UHJvcGVydHkodmFsLnBheWxvYWQsICd2YXJpYWJsZXMnKSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgZXhwb3J0cy5NZXNzYWdlVHlwZS5OZXh0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGhhc093blN0cmluZ1Byb3BlcnR5KHZhbCwgJ2lkJykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093bk9iamVjdFByb3BlcnR5KHZhbCwgJ3BheWxvYWQnKSk7XG4gICAgICAgICAgICAgICAgY2FzZSBleHBvcnRzLk1lc3NhZ2VUeXBlLkVycm9yOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzT3duU3RyaW5nUHJvcGVydHkodmFsLCAnaWQnKSAmJiBhcmVHcmFwaFFMRXJyb3JzKHZhbC5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICBjYXNlIGV4cG9ydHMuTWVzc2FnZVR5cGUuQ29tcGxldGU6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNPd25TdHJpbmdQcm9wZXJ0eSh2YWwsICdpZCcpO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8qKiBQYXJzZXMgdGhlIHJhdyB3ZWJzb2NrZXQgbWVzc2FnZSBkYXRhIHRvIGEgdmFsaWQgbWVzc2FnZS4gKi9cbiAgICBmdW5jdGlvbiBwYXJzZU1lc3NhZ2UoZGF0YSkge1xuICAgICAgICBpZiAoaXNNZXNzYWdlKGRhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGRhdGEgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01lc3NhZ2Ugbm90IHBhcnNhYmxlJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICAgIGlmICghaXNNZXNzYWdlKG1lc3NhZ2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbWVzc2FnZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cbiAgICAvKiogU3RyaW5naWZpZXMgYSB2YWxpZCBtZXNzYWdlIHJlYWR5IHRvIGJlIHNlbnQgdGhyb3VnaCB0aGUgc29ja2V0LiAqL1xuICAgIGZ1bmN0aW9uIHN0cmluZ2lmeU1lc3NhZ2UobXNnKSB7XG4gICAgICAgIGlmICghaXNNZXNzYWdlKG1zZykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHN0cmluZ2lmeSBpbnZhbGlkIG1lc3NhZ2UnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobXNnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIGNsaWVudFxuICAgICAqXG4gICAgICovXG4gICAgLyoqIENyZWF0ZXMgYSBkaXNwb3NhYmxlIEdyYXBoUUwgb3ZlciBXZWJTb2NrZXQgY2xpZW50LiAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUNsaWVudChvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHsgdXJsLCBjb25uZWN0aW9uUGFyYW1zLCBsYXp5ID0gdHJ1ZSwgb25Ob25MYXp5RXJyb3IgPSBjb25zb2xlLmVycm9yLCBrZWVwQWxpdmUgPSAwLCByZXRyeUF0dGVtcHRzID0gNSwgcmV0cnlXYWl0ID0gYXN5bmMgZnVuY3Rpb24gcmFuZG9taXNlZEV4cG9uZW50aWFsQmFja29mZihyZXRyaWVzKSB7XG4gICAgICAgICAgICBsZXQgcmV0cnlEZWxheSA9IDEwMDA7IC8vIHN0YXJ0IHdpdGggMXMgZGVsYXlcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0cmllczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmV0cnlEZWxheSAqPSAyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgcmV0cnlEZWxheSArXG4gICAgICAgICAgICAgICAgLy8gYWRkIHJhbmRvbSB0aW1lb3V0IGZyb20gMzAwbXMgdG8gM3NcbiAgICAgICAgICAgICAgICBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoMzAwMCAtIDMwMCkgKyAzMDApKSk7XG4gICAgICAgIH0sIGlzRmF0YWxDb25uZWN0aW9uUHJvYmxlbSA9IChlcnJPckNsb3NlRXZlbnQpID0+IFxuICAgICAgICAvLyBub24gYENsb3NlRXZlbnRgcyBhcmUgZmF0YWwgYnkgZGVmYXVsdFxuICAgICAgICAhaXNMaWtlQ2xvc2VFdmVudChlcnJPckNsb3NlRXZlbnQpLCBvbiwgd2ViU29ja2V0SW1wbCwgXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZW5lcmF0ZXMgYSB2NCBVVUlEIHRvIGJlIHVzZWQgYXMgdGhlIElEIHVzaW5nIGBNYXRoYFxuICAgICAgICAgKiBhcyB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuIFN1cHBseSB5b3VyIG93biBnZW5lcmF0b3JcbiAgICAgICAgICogaW4gY2FzZSB5b3UgbmVlZCBtb3JlIHVuaXF1ZW5lc3MuXG4gICAgICAgICAqXG4gICAgICAgICAqIFJlZmVyZW5jZTogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vamVkLzk4Mjg4M1xuICAgICAgICAgKi9cbiAgICAgICAgZ2VuZXJhdGVJRCA9IGZ1bmN0aW9uIGdlbmVyYXRlVVVJRCgpIHtcbiAgICAgICAgICAgIHJldHVybiAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIChjKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgciA9IChNYXRoLnJhbmRvbSgpICogMTYpIHwgMCwgdiA9IGMgPT0gJ3gnID8gciA6IChyICYgMHgzKSB8IDB4ODtcbiAgICAgICAgICAgICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgfSA9IG9wdGlvbnM7XG4gICAgICAgIGxldCB3cztcbiAgICAgICAgaWYgKHdlYlNvY2tldEltcGwpIHtcbiAgICAgICAgICAgIGlmICghaXNXZWJTb2NrZXQod2ViU29ja2V0SW1wbCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgV2ViU29ja2V0IGltcGxlbWVudGF0aW9uIHByb3ZpZGVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3cyA9IHdlYlNvY2tldEltcGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIFdlYlNvY2tldCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHdzID0gV2ViU29ja2V0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB3cyA9XG4gICAgICAgICAgICAgICAgZ2xvYmFsLldlYlNvY2tldCB8fFxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBTdXBwb3J0IG1vcmUgYnJvd3NlcnNcbiAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLk1veldlYlNvY2tldDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgd3MgPVxuICAgICAgICAgICAgICAgIHdpbmRvdy5XZWJTb2NrZXQgfHxcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogU3VwcG9ydCBtb3JlIGJyb3dzZXJzXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5Nb3pXZWJTb2NrZXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF3cylcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV2ViU29ja2V0IGltcGxlbWVudGF0aW9uIG1pc3NpbmcnKTtcbiAgICAgICAgY29uc3QgV2ViU29ja2V0SW1wbCA9IHdzO1xuICAgICAgICAvLyB3ZWJzb2NrZXQgc3RhdHVzIGVtaXR0ZXIsIHN1YnNjcmlwdGlvbnMgYXJlIGhhbmRsZWQgZGlmZmVyZW50bHlcbiAgICAgICAgY29uc3QgZW1pdHRlciA9ICgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaXN0ZW5lcnMgPSB7fTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBvbihpZCwgbGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyc1tpZF0gPSBsaXN0ZW5lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGxpc3RlbmVyc1tpZF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBlbWl0KG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnaWQnIGluIG1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9hID0gbGlzdGVuZXJzW21lc3NhZ2UuaWRdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChsaXN0ZW5lcnMsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSgpO1xuICAgICAgICAgICAgY29uc3QgbGlzdGVuZXJzID0ge1xuICAgICAgICAgICAgICAgIGNvbm5lY3Rpbmc6IChvbiA9PT0gbnVsbCB8fCBvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogb24uY29ubmVjdGluZykgPyBbb24uY29ubmVjdGluZ10gOiBbXSxcbiAgICAgICAgICAgICAgICBjb25uZWN0ZWQ6IChvbiA9PT0gbnVsbCB8fCBvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogb24uY29ubmVjdGVkKSA/IFtvbi5jb25uZWN0ZWRdIDogW10sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogKG9uID09PSBudWxsIHx8IG9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbi5tZXNzYWdlKSA/IFttZXNzYWdlLmVtaXQsIG9uLm1lc3NhZ2VdIDogW21lc3NhZ2UuZW1pdF0sXG4gICAgICAgICAgICAgICAgY2xvc2VkOiAob24gPT09IG51bGwgfHwgb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uLmNsb3NlZCkgPyBbb24uY2xvc2VkXSA6IFtdLFxuICAgICAgICAgICAgICAgIGVycm9yOiAob24gPT09IG51bGwgfHwgb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uLmVycm9yKSA/IFtvbi5lcnJvcl0gOiBbXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9uTWVzc2FnZTogbWVzc2FnZS5vbixcbiAgICAgICAgICAgICAgICBvbihldmVudCwgbGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbCA9IGxpc3RlbmVyc1tldmVudF07XG4gICAgICAgICAgICAgICAgICAgIGwucHVzaChsaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsLnNwbGljZShsLmluZGV4T2YobGlzdGVuZXIpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVtaXQoZXZlbnQsIC4uLmFyZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnNbZXZlbnRdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBUaGUgYXJncyBzaG91bGQgZml0XG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lciguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KSgpO1xuICAgICAgICBsZXQgY29ubmVjdGluZywgbG9ja3MgPSAwLCByZXRyeWluZyA9IGZhbHNlLCByZXRyaWVzID0gMCwgZGlzcG9zZWQgPSBmYWxzZTtcbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29ubmVjdCgpIHtcbiAgICAgICAgICAgIGxvY2tzKys7XG4gICAgICAgICAgICBjb25zdCBbc29ja2V0LCB0aHJvd09uQ2xvc2VdID0gYXdhaXQgKGNvbm5lY3RpbmcgIT09IG51bGwgJiYgY29ubmVjdGluZyAhPT0gdm9pZCAwID8gY29ubmVjdGluZyA6IChjb25uZWN0aW5nID0gbmV3IFByb21pc2UoKGNvbm5lY3RlZCwgZGVuaWVkKSA9PiAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXRyeWluZykge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCByZXRyeVdhaXQocmV0cmllcyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHJpZXMrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZW1pdHRlci5lbWl0KCdjb25uZWN0aW5nJyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc29ja2V0ID0gbmV3IFdlYlNvY2tldEltcGwodHlwZW9mIHVybCA9PT0gJ2Z1bmN0aW9uJyA/IGF3YWl0IHVybCgpIDogdXJsLCBHUkFQSFFMX1RSQU5TUE9SVF9XU19QUk9UT0NPTCk7XG4gICAgICAgICAgICAgICAgc29ja2V0Lm9uZXJyb3IgPSAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIGxldCB0aGUgb25jbG9zZSByZWplY3QgdGhlIHByb21pc2UgZm9yIGNvcnJlY3QgcmV0cnkgaGFuZGxpbmdcbiAgICAgICAgICAgICAgICAgICAgZW1pdHRlci5lbWl0KCdlcnJvcicsIGVycik7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBzb2NrZXQub25jbG9zZSA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW5nID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBlbWl0dGVyLmVtaXQoJ2Nsb3NlZCcsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgZGVuaWVkKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHNvY2tldC5vbm9wZW4gPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuc2VuZChzdHJpbmdpZnlNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBleHBvcnRzLk1lc3NhZ2VUeXBlLkNvbm5lY3Rpb25Jbml0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IHR5cGVvZiBjb25uZWN0aW9uUGFyYW1zID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYXdhaXQgY29ubmVjdGlvblBhcmFtcygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29ubmVjdGlvblBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuY2xvc2UoNDQwMCwgZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IG5ldyBFcnJvcihlcnIpLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBsZXQgYWNrbm93bGVkZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgc29ja2V0Lm9ubWVzc2FnZSA9ICh7IGRhdGEgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHBhcnNlTWVzc2FnZShkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZXIuZW1pdCgnbWVzc2FnZScsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFja25vd2xlZGdlZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGFscmVhZHkgY29ubmVjdGVkIGFuZCBhY2tub3dsZWRnZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLnR5cGUgIT09IGV4cG9ydHMuTWVzc2FnZVR5cGUuQ29ubmVjdGlvbkFjaylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZpcnN0IG1lc3NhZ2UgY2Fubm90IGJlIG9mIHR5cGUgJHttZXNzYWdlLnR5cGV9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY2tub3dsZWRnZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1pdHRlci5lbWl0KCdjb25uZWN0ZWQnLCBzb2NrZXQsIG1lc3NhZ2UucGF5bG9hZCk7IC8vIGNvbm5lY3RlZCA9IHNvY2tldCBvcGVuZWQgKyBhY2tub3dsZWRnZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHJpZXMgPSAwOyAvLyByZXNldCB0aGUgcmV0cmllcyBvbiBjb25uZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0ZWQoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgUHJvbWlzZSgoXywgY2xvc2VkKSA9PiBzb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcignY2xvc2UnLCBjbG9zZWQpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5jbG9zZSg0NDAwLCBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogbmV3IEVycm9yKGVycikubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSkoKSkpKTtcbiAgICAgICAgICAgIGxldCByZWxlYXNlID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHJlbGVhc2VzIHRoaXMgY29ubmVjdGlvbiBsb2NrXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgcmVsZWFzZWQgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gKHJlbGVhc2UgPSByZXNvbHZlKSk7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHNvY2tldCxcbiAgICAgICAgICAgICAgICByZWxlYXNlLFxuICAgICAgICAgICAgICAgIFByb21pc2UucmFjZShbXG4gICAgICAgICAgICAgICAgICAgIC8vIHdhaXQgZm9yXG4gICAgICAgICAgICAgICAgICAgIHJlbGVhc2VkLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEtLWxvY2tzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgbm8gbW9yZSBjb25uZWN0aW9uIGxvY2tzIGFyZSBwcmVzZW50LCBjb21wbGV0ZSB0aGUgY29ubmVjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4gc29ja2V0LmNsb3NlKDEwMDAsICdOb3JtYWwgQ2xvc3VyZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0Zpbml0ZShrZWVwQWxpdmUpICYmIGtlZXBBbGl2ZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGtlZXBhbGl2ZSBpcyBzZXQsIGFsbG93IGZvciB0aGUgc3BlY2lmaWVkIGNhbG1kb3duIHRpbWUgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gY29tcGxldGUuIGJ1dCBvbmx5IGlmIG5vIGxvY2sgZ290IGNyZWF0ZWQgaW4gdGhlIG1lYW50aW1lIGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgc29ja2V0IGlzIHN0aWxsIG9wZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2tzICYmIHNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXRJbXBsLk9QRU4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwga2VlcEFsaXZlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBjb21wbGV0ZSBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIC8vIG9yXG4gICAgICAgICAgICAgICAgICAgIHRocm93T25DbG9zZSxcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENoZWNrcyB0aGUgYGNvbm5lY3RgIHByb2JsZW0gYW5kIGV2YWx1YXRlcyBpZiB0aGUgY2xpZW50IHNob3VsZCByZXRyeS5cbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHNob3VsZFJldHJ5Q29ubmVjdE9yVGhyb3coZXJyT3JDbG9zZUV2ZW50KSB7XG4gICAgICAgICAgICAvLyBzb21lIGNsb3NlIGNvZGVzIGFyZSB3b3J0aCByZXBvcnRpbmcgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgIGlmIChpc0xpa2VDbG9zZUV2ZW50KGVyck9yQ2xvc2VFdmVudCkgJiZcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIDEwMDIsXG4gICAgICAgICAgICAgICAgICAgIDEwMTEsXG4gICAgICAgICAgICAgICAgICAgIDQ0MDAsXG4gICAgICAgICAgICAgICAgICAgIDQ0MDEsXG4gICAgICAgICAgICAgICAgICAgIDQ0MDksXG4gICAgICAgICAgICAgICAgICAgIDQ0MjksIC8vIFRvbyBtYW55IGluaXRpYWxpc2F0aW9uIHJlcXVlc3RzXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhlcnJPckNsb3NlRXZlbnQuY29kZSkpXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyT3JDbG9zZUV2ZW50O1xuICAgICAgICAgICAgLy8gZGlzcG9zZWQgb3Igbm9ybWFsIGNsb3N1cmUgKGNvbXBsZXRlZCksIHNob3VsZG50IHRyeSBhZ2FpblxuICAgICAgICAgICAgaWYgKGRpc3Bvc2VkIHx8XG4gICAgICAgICAgICAgICAgKGlzTGlrZUNsb3NlRXZlbnQoZXJyT3JDbG9zZUV2ZW50KSAmJiBlcnJPckNsb3NlRXZlbnQuY29kZSA9PT0gMTAwMCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgLy8gcmV0cmllcyBhcmUgbm90IGFsbG93ZWQgb3Igd2UgdHJpZWQgdG8gbWFueSB0aW1lcywgcmVwb3J0IGVycm9yXG4gICAgICAgICAgICBpZiAoIXJldHJ5QXR0ZW1wdHMgfHwgcmV0cmllcyA+PSByZXRyeUF0dGVtcHRzKVxuICAgICAgICAgICAgICAgIHRocm93IGVyck9yQ2xvc2VFdmVudDtcbiAgICAgICAgICAgIC8vIHRocm93IGZhdGFsIGNvbm5lY3Rpb24gcHJvYmxlbXMgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgIGlmIChpc0ZhdGFsQ29ubmVjdGlvblByb2JsZW0oZXJyT3JDbG9zZUV2ZW50KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJPckNsb3NlRXZlbnQ7XG4gICAgICAgICAgICAvLyBsb29rcyBnb29kLCBzdGFydCByZXRyeWluZ1xuICAgICAgICAgICAgcmV0dXJuIChyZXRyeWluZyA9IHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGluIG5vbi1sYXp5IChob3Q/KSBtb2RlIGFsd2F5cyBob2xkIG9uZSBjb25uZWN0aW9uIGxvY2sgdG8gcGVyc2lzdCB0aGUgc29ja2V0XG4gICAgICAgIGlmICghbGF6eSkge1xuICAgICAgICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbLCAsIHRocm93T25DbG9zZV0gPSBhd2FpdCBjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aHJvd09uQ2xvc2U7IC8vIHdpbGwgYWx3YXlzIHRocm93IGJlY2F1c2UgcmVsZWFzZXIgaXMgbm90IHVzZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyT3JDbG9zZUV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkUmV0cnlDb25uZWN0T3JUaHJvdyhlcnJPckNsb3NlRXZlbnQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyT3JDbG9zZUV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVwb3J0IHRocm93biBlcnJvciwgbm8gZnVydGhlciByZXRyaWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9uTm9uTGF6eUVycm9yID09PSBudWxsIHx8IG9uTm9uTGF6eUVycm9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbk5vbkxhenlFcnJvcihlcnJPckNsb3NlRXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgb246IGVtaXR0ZXIub24sXG4gICAgICAgICAgICBzdWJzY3JpYmUocGF5bG9hZCwgc2luaykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gZ2VuZXJhdGVJRCgpO1xuICAgICAgICAgICAgICAgIGxldCBjb21wbGV0ZWQgPSBmYWxzZSwgcmVsZWFzZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZvciBoYW5kbGluZyBjb21wbGV0aW9ucyBiZWZvcmUgY29ubmVjdFxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBbc29ja2V0LCByZWxlYXNlLCB3YWl0Rm9yUmVsZWFzZU9yVGhyb3dPbkNsb3NlLF0gPSBhd2FpdCBjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgY29tcGxldGVkIHdoaWxlIHdhaXRpbmcgZm9yIGNvbm5lY3QsIHJlbGVhc2UgdGhlIGNvbm5lY3Rpb24gbG9jayByaWdodCBhd2F5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBsZXRlZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bmxpc3RlbiA9IGVtaXR0ZXIub25NZXNzYWdlKGlkLCAobWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBleHBvcnRzLk1lc3NhZ2VUeXBlLk5leHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmsubmV4dChtZXNzYWdlLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgZXhwb3J0cy5NZXNzYWdlVHlwZS5FcnJvcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luay5lcnJvcihtZXNzYWdlLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETy1kYi0yMDEwMjUgY2FsbGluZyByZWxlYXNlciB3aWxsIGNvbXBsZXRlIHRoZSBzaW5rLCBtZWFuaW5nIHRoYXQgYm90aCB0aGUgYGVycm9yYCBhbmQgYGNvbXBsZXRlYCB3aWxsIGJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbGVkLiBuZWl0aGVyIHByb21pc2VzIG9yIG9ic2VydmFibGVzIGNhcmU7IG9uY2UgdGhleSBzZXR0bGUsIGFkZGl0aW9uYWwgY2FsbHMgdG8gdGhlIHJlc29sdmVycyB3aWxsIGJlIGlnbm9yZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGV4cG9ydHMuTWVzc2FnZVR5cGUuQ29tcGxldGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VyKCk7IC8vIHJlbGVhc2UgY29tcGxldGVzIHRoZSBzaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LnNlbmQoc3RyaW5naWZ5TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBleHBvcnRzLk1lc3NhZ2VUeXBlLlN1YnNjcmliZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29tcGxldGVkICYmIHNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXRJbXBsLk9QRU4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBub3QgY29tcGxldGVkIGFscmVhZHkgYW5kIHNvY2tldCBpcyBvcGVuLCBzZW5kIGNvbXBsZXRlIG1lc3NhZ2UgdG8gc2VydmVyIG9uIHJlbGVhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5zZW5kKHN0cmluZ2lmeU1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGV4cG9ydHMuTWVzc2FnZVR5cGUuQ29tcGxldGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVpdGhlciB0aGUgcmVsZWFzZXIgd2lsbCBiZSBjYWxsZWQsIGNvbm5lY3Rpb24gY29tcGxldGVkIGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBwcm9taXNlIHJlc29sdmVkIG9yIHRoZSBzb2NrZXQgY2xvc2VkIGFuZCB0aGUgcHJvbWlzZSByZWplY3RlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGF0ZXZlciBoYXBwZW5zIHRob3VnaCwgd2Ugd2FudCB0byBzdG9wIGxpc3RlbmluZyBmb3IgbWVzc2FnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB3YWl0Rm9yUmVsZWFzZU9yVGhyb3dPbkNsb3NlLmZpbmFsbHkodW5saXN0ZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gY29tcGxldGVkLCBzaG91bGRudCB0cnkgYWdhaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnJPckNsb3NlRXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3VsZFJldHJ5Q29ubmVjdE9yVGhyb3coZXJyT3JDbG9zZUV2ZW50KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkoKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goc2luay5lcnJvcikgLy8gcmVqZWN0cyBvbiBjbG9zZSBldmVudHMgYW5kIGVycm9yc1xuICAgICAgICAgICAgICAgICAgICAudGhlbihzaW5rLmNvbXBsZXRlKTsgLy8gcmVzb2x2ZXMgb24gcmVsZWFzZSBvciBub3JtYWwgY2xvc3VyZVxuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiByZWxlYXNlcigpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFzeW5jIGRpc3Bvc2UoKSB7XG4gICAgICAgICAgICAgICAgZGlzcG9zZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChjb25uZWN0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgY29ubmVjdGlvbiwgY2xvc2UgaXRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW3NvY2tldF0gPSBhd2FpdCBjb25uZWN0aW5nO1xuICAgICAgICAgICAgICAgICAgICBzb2NrZXQuY2xvc2UoMTAwMCwgJ05vcm1hbCBDbG9zdXJlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNMaWtlQ2xvc2VFdmVudCh2YWwpIHtcbiAgICAgICAgcmV0dXJuIGlzT2JqZWN0KHZhbCkgJiYgJ2NvZGUnIGluIHZhbCAmJiAncmVhc29uJyBpbiB2YWw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzV2ViU29ja2V0KHZhbCkge1xuICAgICAgICByZXR1cm4gKHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgICAgICdjb25zdHJ1Y3RvcicgaW4gdmFsICYmXG4gICAgICAgICAgICAnQ0xPU0VEJyBpbiB2YWwgJiZcbiAgICAgICAgICAgICdDTE9TSU5HJyBpbiB2YWwgJiZcbiAgICAgICAgICAgICdDT05ORUNUSU5HJyBpbiB2YWwgJiZcbiAgICAgICAgICAgICdPUEVOJyBpbiB2YWwpO1xuICAgIH1cblxuICAgIGV4cG9ydHMuR1JBUEhRTF9UUkFOU1BPUlRfV1NfUFJPVE9DT0wgPSBHUkFQSFFMX1RSQU5TUE9SVF9XU19QUk9UT0NPTDtcbiAgICBleHBvcnRzLmNyZWF0ZUNsaWVudCA9IGNyZWF0ZUNsaWVudDtcbiAgICBleHBvcnRzLmlzTWVzc2FnZSA9IGlzTWVzc2FnZTtcbiAgICBleHBvcnRzLnBhcnNlTWVzc2FnZSA9IHBhcnNlTWVzc2FnZTtcbiAgICBleHBvcnRzLnN0cmluZ2lmeU1lc3NhZ2UgPSBzdHJpbmdpZnlNZXNzYWdlO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxufSkpKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFHQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQS9CQTtBQWlDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBdkJBO0FBd0JBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFaQTtBQWFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWZBO0FBZ0JBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQU1BO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQWxCQTtBQW9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBdERBO0FBQ0E7QUF3REE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEzRUE7QUE0RUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBRUE7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql-ws/umd/graphql-ws.js\n");
309
310/***/ }),
311
312/***/ "../../../node_modules/graphql/error/GraphQLError.mjs":
313/*!***************************************************************************************!*\
314 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/error/GraphQLError.mjs ***!
315 \***************************************************************************************/
316/*! exports provided: GraphQLError, printError */
317/***/ (function(module, __webpack_exports__, __webpack_require__) {
318
319"use strict";
320eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLError\", function() { return GraphQLError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"printError\", function() { return printError; });\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../polyfills/symbols.mjs */ \"../../../node_modules/graphql/polyfills/symbols.mjs\");\n/* harmony import */ var _language_location_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/location.mjs */ \"../../../node_modules/graphql/language/location.mjs\");\n/* harmony import */ var _language_printLocation_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../language/printLocation.mjs */ \"../../../node_modules/graphql/language/printLocation.mjs\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n// FIXME:\n// flowlint uninitialized-instance-property:off\n\n\n\n\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nvar GraphQLError = /*#__PURE__*/function (_Error) {\n _inherits(GraphQLError, _Error);\n\n var _super = _createSuper(GraphQLError);\n\n /**\n * A message describing the Error for debugging purposes.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n *\n * Note: should be treated as readonly, despite invariant usage.\n */\n\n /**\n * An array of { line, column } locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n function GraphQLError(message, nodes, source, positions, path, originalError, extensions) {\n var _locations2, _source2, _positions2, _extensions2;\n\n var _this;\n\n _classCallCheck(this, GraphQLError);\n\n _this = _super.call(this, message); // Compute list of blame nodes.\n\n var _nodes = Array.isArray(nodes) ? nodes.length !== 0 ? nodes : undefined : nodes ? [nodes] : undefined; // Compute locations in the source for the given nodes/positions.\n\n\n var _source = source;\n\n if (!_source && _nodes) {\n var _nodes$0$loc;\n\n _source = (_nodes$0$loc = _nodes[0].loc) === null || _nodes$0$loc === void 0 ? void 0 : _nodes$0$loc.source;\n }\n\n var _positions = positions;\n\n if (!_positions && _nodes) {\n _positions = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(node.loc.start);\n }\n\n return list;\n }, []);\n }\n\n if (_positions && _positions.length === 0) {\n _positions = undefined;\n }\n\n var _locations;\n\n if (positions && source) {\n _locations = positions.map(function (pos) {\n return Object(_language_location_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getLocation\"])(source, pos);\n });\n } else if (_nodes) {\n _locations = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(Object(_language_location_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getLocation\"])(node.loc.source, node.loc.start));\n }\n\n return list;\n }, []);\n }\n\n var _extensions = extensions;\n\n if (_extensions == null && originalError != null) {\n var originalExtensions = originalError.extensions;\n\n if (Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(originalExtensions)) {\n _extensions = originalExtensions;\n }\n }\n\n Object.defineProperties(_assertThisInitialized(_this), {\n name: {\n value: 'GraphQLError'\n },\n message: {\n value: message,\n // By being enumerable, JSON.stringify will include `message` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: true,\n writable: true\n },\n locations: {\n // Coercing falsy values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: (_locations2 = _locations) !== null && _locations2 !== void 0 ? _locations2 : undefined,\n // By being enumerable, JSON.stringify will include `locations` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: _locations != null\n },\n path: {\n // Coercing falsy values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: path !== null && path !== void 0 ? path : undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: path != null\n },\n nodes: {\n value: _nodes !== null && _nodes !== void 0 ? _nodes : undefined\n },\n source: {\n value: (_source2 = _source) !== null && _source2 !== void 0 ? _source2 : undefined\n },\n positions: {\n value: (_positions2 = _positions) !== null && _positions2 !== void 0 ? _positions2 : undefined\n },\n originalError: {\n value: originalError\n },\n extensions: {\n // Coercing falsy values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: (_extensions2 = _extensions) !== null && _extensions2 !== void 0 ? _extensions2 : undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: _extensions != null\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError === null || originalError === void 0 ? void 0 : originalError.stack) {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n return _possibleConstructorReturn(_this);\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_assertThisInitialized(_this), GraphQLError);\n } else {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n\n return _this;\n }\n\n _createClass(GraphQLError, [{\n key: \"toString\",\n value: function toString() {\n return printError(this);\n } // FIXME: workaround to not break chai comparisons, should be remove in v16\n // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n }, {\n key: _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_1__[\"SYMBOL_TO_STRING_TAG\"],\n get: function get() {\n return 'Object';\n }\n }]);\n\n return GraphQLError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\nfunction printError(error) {\n var output = error.message;\n\n if (error.nodes) {\n for (var _i2 = 0, _error$nodes2 = error.nodes; _i2 < _error$nodes2.length; _i2++) {\n var node = _error$nodes2[_i2];\n\n if (node.loc) {\n output += '\\n\\n' + Object(_language_printLocation_mjs__WEBPACK_IMPORTED_MODULE_3__[\"printLocation\"])(node.loc);\n }\n }\n } else if (error.source && error.locations) {\n for (var _i4 = 0, _error$locations2 = error.locations; _i4 < _error$locations2.length; _i4++) {\n var location = _error$locations2[_i4];\n output += '\\n\\n' + Object(_language_printLocation_mjs__WEBPACK_IMPORTED_MODULE_3__[\"printSourceLocation\"])(error.source, location);\n }\n }\n\n return output;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXJyb3IvR3JhcGhRTEVycm9yLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2Vycm9yL0dyYXBoUUxFcnJvci5tanM/MDRjMSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcihDbGFzcykgeyB2YXIgX2NhY2hlID0gdHlwZW9mIE1hcCA9PT0gXCJmdW5jdGlvblwiID8gbmV3IE1hcCgpIDogdW5kZWZpbmVkOyBfd3JhcE5hdGl2ZVN1cGVyID0gZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcihDbGFzcykgeyBpZiAoQ2xhc3MgPT09IG51bGwgfHwgIV9pc05hdGl2ZUZ1bmN0aW9uKENsYXNzKSkgcmV0dXJuIENsYXNzOyBpZiAodHlwZW9mIENsYXNzICE9PSBcImZ1bmN0aW9uXCIpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IGlmICh0eXBlb2YgX2NhY2hlICE9PSBcInVuZGVmaW5lZFwiKSB7IGlmIChfY2FjaGUuaGFzKENsYXNzKSkgcmV0dXJuIF9jYWNoZS5nZXQoQ2xhc3MpOyBfY2FjaGUuc2V0KENsYXNzLCBXcmFwcGVyKTsgfSBmdW5jdGlvbiBXcmFwcGVyKCkgeyByZXR1cm4gX2NvbnN0cnVjdChDbGFzcywgYXJndW1lbnRzLCBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3IpOyB9IFdyYXBwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IFdyYXBwZXIsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IHJldHVybiBfc2V0UHJvdG90eXBlT2YoV3JhcHBlciwgQ2xhc3MpOyB9OyByZXR1cm4gX3dyYXBOYXRpdmVTdXBlcihDbGFzcyk7IH1cblxuZnVuY3Rpb24gX2NvbnN0cnVjdChQYXJlbnQsIGFyZ3MsIENsYXNzKSB7IGlmIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkpIHsgX2NvbnN0cnVjdCA9IFJlZmxlY3QuY29uc3RydWN0OyB9IGVsc2UgeyBfY29uc3RydWN0ID0gZnVuY3Rpb24gX2NvbnN0cnVjdChQYXJlbnQsIGFyZ3MsIENsYXNzKSB7IHZhciBhID0gW251bGxdOyBhLnB1c2guYXBwbHkoYSwgYXJncyk7IHZhciBDb25zdHJ1Y3RvciA9IEZ1bmN0aW9uLmJpbmQuYXBwbHkoUGFyZW50LCBhKTsgdmFyIGluc3RhbmNlID0gbmV3IENvbnN0cnVjdG9yKCk7IGlmIChDbGFzcykgX3NldFByb3RvdHlwZU9mKGluc3RhbmNlLCBDbGFzcy5wcm90b3R5cGUpOyByZXR1cm4gaW5zdGFuY2U7IH07IH0gcmV0dXJuIF9jb25zdHJ1Y3QuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZUZ1bmN0aW9uKGZuKSB7IHJldHVybiBGdW5jdGlvbi50b1N0cmluZy5jYWxsKGZuKS5pbmRleE9mKFwiW25hdGl2ZSBjb2RlXVwiKSAhPT0gLTE7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG4vLyBGSVhNRTpcbi8vIGZsb3dsaW50IHVuaW5pdGlhbGl6ZWQtaW5zdGFuY2UtcHJvcGVydHk6b2ZmXG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gXCIuLi9qc3V0aWxzL2lzT2JqZWN0TGlrZS5tanNcIjtcbmltcG9ydCB7IFNZTUJPTF9UT19TVFJJTkdfVEFHIH0gZnJvbSBcIi4uL3BvbHlmaWxscy9zeW1ib2xzLm1qc1wiO1xuaW1wb3J0IHsgZ2V0TG9jYXRpb24gfSBmcm9tIFwiLi4vbGFuZ3VhZ2UvbG9jYXRpb24ubWpzXCI7XG5pbXBvcnQgeyBwcmludExvY2F0aW9uLCBwcmludFNvdXJjZUxvY2F0aW9uIH0gZnJvbSBcIi4uL2xhbmd1YWdlL3ByaW50TG9jYXRpb24ubWpzXCI7XG4vKipcbiAqIEEgR3JhcGhRTEVycm9yIGRlc2NyaWJlcyBhbiBFcnJvciBmb3VuZCBkdXJpbmcgdGhlIHBhcnNlLCB2YWxpZGF0ZSwgb3JcbiAqIGV4ZWN1dGUgcGhhc2VzIG9mIHBlcmZvcm1pbmcgYSBHcmFwaFFMIG9wZXJhdGlvbi4gSW4gYWRkaXRpb24gdG8gYSBtZXNzYWdlXG4gKiBhbmQgc3RhY2sgdHJhY2UsIGl0IGFsc28gaW5jbHVkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxvY2F0aW9ucyBpbiBhXG4gKiBHcmFwaFFMIGRvY3VtZW50IGFuZC9vciBleGVjdXRpb24gcmVzdWx0IHRoYXQgY29ycmVzcG9uZCB0byB0aGUgRXJyb3IuXG4gKi9cblxuZXhwb3J0IHZhciBHcmFwaFFMRXJyb3IgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9FcnJvcikge1xuICBfaW5oZXJpdHMoR3JhcGhRTEVycm9yLCBfRXJyb3IpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoR3JhcGhRTEVycm9yKTtcblxuICAvKipcbiAgICogQSBtZXNzYWdlIGRlc2NyaWJpbmcgdGhlIEVycm9yIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4gICAqXG4gICAqIEVudW1lcmFibGUsIGFuZCBhcHBlYXJzIGluIHRoZSByZXN1bHQgb2YgSlNPTi5zdHJpbmdpZnkoKS5cbiAgICpcbiAgICogTm90ZTogc2hvdWxkIGJlIHRyZWF0ZWQgYXMgcmVhZG9ubHksIGRlc3BpdGUgaW52YXJpYW50IHVzYWdlLlxuICAgKi9cblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgeyBsaW5lLCBjb2x1bW4gfSBsb2NhdGlvbnMgd2l0aGluIHRoZSBzb3VyY2UgR3JhcGhRTCBkb2N1bWVudFxuICAgKiB3aGljaCBjb3JyZXNwb25kIHRvIHRoaXMgZXJyb3IuXG4gICAqXG4gICAqIEVycm9ycyBkdXJpbmcgdmFsaWRhdGlvbiBvZnRlbiBjb250YWluIG11bHRpcGxlIGxvY2F0aW9ucywgZm9yIGV4YW1wbGUgdG9cbiAgICogcG9pbnQgb3V0IHR3byB0aGluZ3Mgd2l0aCB0aGUgc2FtZSBuYW1lLiBFcnJvcnMgZHVyaW5nIGV4ZWN1dGlvbiBpbmNsdWRlIGFcbiAgICogc2luZ2xlIGxvY2F0aW9uLCB0aGUgZmllbGQgd2hpY2ggcHJvZHVjZWQgdGhlIGVycm9yLlxuICAgKlxuICAgKiBFbnVtZXJhYmxlLCBhbmQgYXBwZWFycyBpbiB0aGUgcmVzdWx0IG9mIEpTT04uc3RyaW5naWZ5KCkuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBkZXNjcmliaW5nIHRoZSBKU09OLXBhdGggaW50byB0aGUgZXhlY3V0aW9uIHJlc3BvbnNlIHdoaWNoXG4gICAqIGNvcnJlc3BvbmRzIHRvIHRoaXMgZXJyb3IuIE9ubHkgaW5jbHVkZWQgZm9yIGVycm9ycyBkdXJpbmcgZXhlY3V0aW9uLlxuICAgKlxuICAgKiBFbnVtZXJhYmxlLCBhbmQgYXBwZWFycyBpbiB0aGUgcmVzdWx0IG9mIEpTT04uc3RyaW5naWZ5KCkuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBHcmFwaFFMIEFTVCBOb2RlcyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgZXJyb3IuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIEdyYXBoUUwgZG9jdW1lbnQgZm9yIHRoZSBmaXJzdCBsb2NhdGlvbiBvZiB0aGlzIGVycm9yLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgaWYgdGhpcyBFcnJvciByZXByZXNlbnRzIG1vcmUgdGhhbiBvbmUgbm9kZSwgdGhlIHNvdXJjZSBtYXkgbm90XG4gICAqIHJlcHJlc2VudCBub2RlcyBhZnRlciB0aGUgZmlyc3Qgbm9kZS5cbiAgICovXG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGNoYXJhY3RlciBvZmZzZXRzIHdpdGhpbiB0aGUgc291cmNlIEdyYXBoUUwgZG9jdW1lbnRcbiAgICogd2hpY2ggY29ycmVzcG9uZCB0byB0aGlzIGVycm9yLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIG9yaWdpbmFsIGVycm9yIHRocm93biBmcm9tIGEgZmllbGQgcmVzb2x2ZXIgZHVyaW5nIGV4ZWN1dGlvbi5cbiAgICovXG5cbiAgLyoqXG4gICAqIEV4dGVuc2lvbiBmaWVsZHMgdG8gYWRkIHRvIHRoZSBmb3JtYXR0ZWQgZXJyb3IuXG4gICAqL1xuICBmdW5jdGlvbiBHcmFwaFFMRXJyb3IobWVzc2FnZSwgbm9kZXMsIHNvdXJjZSwgcG9zaXRpb25zLCBwYXRoLCBvcmlnaW5hbEVycm9yLCBleHRlbnNpb25zKSB7XG4gICAgdmFyIF9sb2NhdGlvbnMyLCBfc291cmNlMiwgX3Bvc2l0aW9uczIsIF9leHRlbnNpb25zMjtcblxuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBHcmFwaFFMRXJyb3IpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBtZXNzYWdlKTsgLy8gQ29tcHV0ZSBsaXN0IG9mIGJsYW1lIG5vZGVzLlxuXG4gICAgdmFyIF9ub2RlcyA9IEFycmF5LmlzQXJyYXkobm9kZXMpID8gbm9kZXMubGVuZ3RoICE9PSAwID8gbm9kZXMgOiB1bmRlZmluZWQgOiBub2RlcyA/IFtub2Rlc10gOiB1bmRlZmluZWQ7IC8vIENvbXB1dGUgbG9jYXRpb25zIGluIHRoZSBzb3VyY2UgZm9yIHRoZSBnaXZlbiBub2Rlcy9wb3NpdGlvbnMuXG5cblxuICAgIHZhciBfc291cmNlID0gc291cmNlO1xuXG4gICAgaWYgKCFfc291cmNlICYmIF9ub2Rlcykge1xuICAgICAgdmFyIF9ub2RlcyQwJGxvYztcblxuICAgICAgX3NvdXJjZSA9IChfbm9kZXMkMCRsb2MgPSBfbm9kZXNbMF0ubG9jKSA9PT0gbnVsbCB8fCBfbm9kZXMkMCRsb2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlcyQwJGxvYy5zb3VyY2U7XG4gICAgfVxuXG4gICAgdmFyIF9wb3NpdGlvbnMgPSBwb3NpdGlvbnM7XG5cbiAgICBpZiAoIV9wb3NpdGlvbnMgJiYgX25vZGVzKSB7XG4gICAgICBfcG9zaXRpb25zID0gX25vZGVzLnJlZHVjZShmdW5jdGlvbiAobGlzdCwgbm9kZSkge1xuICAgICAgICBpZiAobm9kZS5sb2MpIHtcbiAgICAgICAgICBsaXN0LnB1c2gobm9kZS5sb2Muc3RhcnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgICB9LCBbXSk7XG4gICAgfVxuXG4gICAgaWYgKF9wb3NpdGlvbnMgJiYgX3Bvc2l0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIF9wb3NpdGlvbnMgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdmFyIF9sb2NhdGlvbnM7XG5cbiAgICBpZiAocG9zaXRpb25zICYmIHNvdXJjZSkge1xuICAgICAgX2xvY2F0aW9ucyA9IHBvc2l0aW9ucy5tYXAoZnVuY3Rpb24gKHBvcykge1xuICAgICAgICByZXR1cm4gZ2V0TG9jYXRpb24oc291cmNlLCBwb3MpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChfbm9kZXMpIHtcbiAgICAgIF9sb2NhdGlvbnMgPSBfbm9kZXMucmVkdWNlKGZ1bmN0aW9uIChsaXN0LCBub2RlKSB7XG4gICAgICAgIGlmIChub2RlLmxvYykge1xuICAgICAgICAgIGxpc3QucHVzaChnZXRMb2NhdGlvbihub2RlLmxvYy5zb3VyY2UsIG5vZGUubG9jLnN0YXJ0KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgIH0sIFtdKTtcbiAgICB9XG5cbiAgICB2YXIgX2V4dGVuc2lvbnMgPSBleHRlbnNpb25zO1xuXG4gICAgaWYgKF9leHRlbnNpb25zID09IG51bGwgJiYgb3JpZ2luYWxFcnJvciAhPSBudWxsKSB7XG4gICAgICB2YXIgb3JpZ2luYWxFeHRlbnNpb25zID0gb3JpZ2luYWxFcnJvci5leHRlbnNpb25zO1xuXG4gICAgICBpZiAoaXNPYmplY3RMaWtlKG9yaWdpbmFsRXh0ZW5zaW9ucykpIHtcbiAgICAgICAgX2V4dGVuc2lvbnMgPSBvcmlnaW5hbEV4dGVuc2lvbnM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIHtcbiAgICAgIG5hbWU6IHtcbiAgICAgICAgdmFsdWU6ICdHcmFwaFFMRXJyb3InXG4gICAgICB9LFxuICAgICAgbWVzc2FnZToge1xuICAgICAgICB2YWx1ZTogbWVzc2FnZSxcbiAgICAgICAgLy8gQnkgYmVpbmcgZW51bWVyYWJsZSwgSlNPTi5zdHJpbmdpZnkgd2lsbCBpbmNsdWRlIGBtZXNzYWdlYCBpbiB0aGVcbiAgICAgICAgLy8gcmVzdWx0aW5nIG91dHB1dC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHNpbXBsZXN0IHBvc3NpYmxlIEdyYXBoUUxcbiAgICAgICAgLy8gc2VydmljZSBhZGhlcmVzIHRvIHRoZSBzcGVjLlxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGxvY2F0aW9uczoge1xuICAgICAgICAvLyBDb2VyY2luZyBmYWxzeSB2YWx1ZXMgdG8gdW5kZWZpbmVkIGVuc3VyZXMgdGhleSB3aWxsIG5vdCBiZSBpbmNsdWRlZFxuICAgICAgICAvLyBpbiBKU09OLnN0cmluZ2lmeSgpIHdoZW4gbm90IHByb3ZpZGVkLlxuICAgICAgICB2YWx1ZTogKF9sb2NhdGlvbnMyID0gX2xvY2F0aW9ucykgIT09IG51bGwgJiYgX2xvY2F0aW9uczIgIT09IHZvaWQgMCA/IF9sb2NhdGlvbnMyIDogdW5kZWZpbmVkLFxuICAgICAgICAvLyBCeSBiZWluZyBlbnVtZXJhYmxlLCBKU09OLnN0cmluZ2lmeSB3aWxsIGluY2x1ZGUgYGxvY2F0aW9uc2AgaW4gdGhlXG4gICAgICAgIC8vIHJlc3VsdGluZyBvdXRwdXQuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBzaW1wbGVzdCBwb3NzaWJsZSBHcmFwaFFMXG4gICAgICAgIC8vIHNlcnZpY2UgYWRoZXJlcyB0byB0aGUgc3BlYy5cbiAgICAgICAgZW51bWVyYWJsZTogX2xvY2F0aW9ucyAhPSBudWxsXG4gICAgICB9LFxuICAgICAgcGF0aDoge1xuICAgICAgICAvLyBDb2VyY2luZyBmYWxzeSB2YWx1ZXMgdG8gdW5kZWZpbmVkIGVuc3VyZXMgdGhleSB3aWxsIG5vdCBiZSBpbmNsdWRlZFxuICAgICAgICAvLyBpbiBKU09OLnN0cmluZ2lmeSgpIHdoZW4gbm90IHByb3ZpZGVkLlxuICAgICAgICB2YWx1ZTogcGF0aCAhPT0gbnVsbCAmJiBwYXRoICE9PSB2b2lkIDAgPyBwYXRoIDogdW5kZWZpbmVkLFxuICAgICAgICAvLyBCeSBiZWluZyBlbnVtZXJhYmxlLCBKU09OLnN0cmluZ2lmeSB3aWxsIGluY2x1ZGUgYHBhdGhgIGluIHRoZVxuICAgICAgICAvLyByZXN1bHRpbmcgb3V0cHV0LiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgc2ltcGxlc3QgcG9zc2libGUgR3JhcGhRTFxuICAgICAgICAvLyBzZXJ2aWNlIGFkaGVyZXMgdG8gdGhlIHNwZWMuXG4gICAgICAgIGVudW1lcmFibGU6IHBhdGggIT0gbnVsbFxuICAgICAgfSxcbiAgICAgIG5vZGVzOiB7XG4gICAgICAgIHZhbHVlOiBfbm9kZXMgIT09IG51bGwgJiYgX25vZGVzICE9PSB2b2lkIDAgPyBfbm9kZXMgOiB1bmRlZmluZWRcbiAgICAgIH0sXG4gICAgICBzb3VyY2U6IHtcbiAgICAgICAgdmFsdWU6IChfc291cmNlMiA9IF9zb3VyY2UpICE9PSBudWxsICYmIF9zb3VyY2UyICE9PSB2b2lkIDAgPyBfc291cmNlMiA6IHVuZGVmaW5lZFxuICAgICAgfSxcbiAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICB2YWx1ZTogKF9wb3NpdGlvbnMyID0gX3Bvc2l0aW9ucykgIT09IG51bGwgJiYgX3Bvc2l0aW9uczIgIT09IHZvaWQgMCA/IF9wb3NpdGlvbnMyIDogdW5kZWZpbmVkXG4gICAgICB9LFxuICAgICAgb3JpZ2luYWxFcnJvcjoge1xuICAgICAgICB2YWx1ZTogb3JpZ2luYWxFcnJvclxuICAgICAgfSxcbiAgICAgIGV4dGVuc2lvbnM6IHtcbiAgICAgICAgLy8gQ29lcmNpbmcgZmFsc3kgdmFsdWVzIHRvIHVuZGVmaW5lZCBlbnN1cmVzIHRoZXkgd2lsbCBub3QgYmUgaW5jbHVkZWRcbiAgICAgICAgLy8gaW4gSlNPTi5zdHJpbmdpZnkoKSB3aGVuIG5vdCBwcm92aWRlZC5cbiAgICAgICAgdmFsdWU6IChfZXh0ZW5zaW9uczIgPSBfZXh0ZW5zaW9ucykgIT09IG51bGwgJiYgX2V4dGVuc2lvbnMyICE9PSB2b2lkIDAgPyBfZXh0ZW5zaW9uczIgOiB1bmRlZmluZWQsXG4gICAgICAgIC8vIEJ5IGJlaW5nIGVudW1lcmFibGUsIEpTT04uc3RyaW5naWZ5IHdpbGwgaW5jbHVkZSBgcGF0aGAgaW4gdGhlXG4gICAgICAgIC8vIHJlc3VsdGluZyBvdXRwdXQuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBzaW1wbGVzdCBwb3NzaWJsZSBHcmFwaFFMXG4gICAgICAgIC8vIHNlcnZpY2UgYWRoZXJlcyB0byB0aGUgc3BlYy5cbiAgICAgICAgZW51bWVyYWJsZTogX2V4dGVuc2lvbnMgIT0gbnVsbFxuICAgICAgfVxuICAgIH0pOyAvLyBJbmNsdWRlIChub24tZW51bWVyYWJsZSkgc3RhY2sgdHJhY2UuXG5cbiAgICBpZiAob3JpZ2luYWxFcnJvciA9PT0gbnVsbCB8fCBvcmlnaW5hbEVycm9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcmlnaW5hbEVycm9yLnN0YWNrKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksICdzdGFjaycsIHtcbiAgICAgICAgdmFsdWU6IG9yaWdpbmFsRXJyb3Iuc3RhY2ssXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKF90aGlzKTtcbiAgICB9IC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChTZWU6ICdodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMzE3JylcblxuXG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgR3JhcGhRTEVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCAnc3RhY2snLCB7XG4gICAgICAgIHZhbHVlOiBFcnJvcigpLnN0YWNrLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoR3JhcGhRTEVycm9yLCBbe1xuICAgIGtleTogXCJ0b1N0cmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBwcmludEVycm9yKHRoaXMpO1xuICAgIH0gLy8gRklYTUU6IHdvcmthcm91bmQgdG8gbm90IGJyZWFrIGNoYWkgY29tcGFyaXNvbnMsIHNob3VsZCBiZSByZW1vdmUgaW4gdjE2XG4gICAgLy8gJEZsb3dGaXhNZVt1bnN1cHBvcnRlZC1zeW50YXhdIEZsb3cgZG9lc24ndCBzdXBwb3J0IGNvbXB1dGVkIHByb3BlcnRpZXMgeWV0XG5cbiAgfSwge1xuICAgIGtleTogU1lNQk9MX1RPX1NUUklOR19UQUcsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gJ09iamVjdCc7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEdyYXBoUUxFcnJvcjtcbn0oIC8qI19fUFVSRV9fKi9fd3JhcE5hdGl2ZVN1cGVyKEVycm9yKSk7XG4vKipcbiAqIFByaW50cyBhIEdyYXBoUUxFcnJvciB0byBhIHN0cmluZywgcmVwcmVzZW50aW5nIHVzZWZ1bCBsb2NhdGlvbiBpbmZvcm1hdGlvblxuICogYWJvdXQgdGhlIGVycm9yJ3MgcG9zaXRpb24gaW4gdGhlIHNvdXJjZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRFcnJvcihlcnJvcikge1xuICB2YXIgb3V0cHV0ID0gZXJyb3IubWVzc2FnZTtcblxuICBpZiAoZXJyb3Iubm9kZXMpIHtcbiAgICBmb3IgKHZhciBfaTIgPSAwLCBfZXJyb3Ikbm9kZXMyID0gZXJyb3Iubm9kZXM7IF9pMiA8IF9lcnJvciRub2RlczIubGVuZ3RoOyBfaTIrKykge1xuICAgICAgdmFyIG5vZGUgPSBfZXJyb3Ikbm9kZXMyW19pMl07XG5cbiAgICAgIGlmIChub2RlLmxvYykge1xuICAgICAgICBvdXRwdXQgKz0gJ1xcblxcbicgKyBwcmludExvY2F0aW9uKG5vZGUubG9jKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoZXJyb3Iuc291cmNlICYmIGVycm9yLmxvY2F0aW9ucykge1xuICAgIGZvciAodmFyIF9pNCA9IDAsIF9lcnJvciRsb2NhdGlvbnMyID0gZXJyb3IubG9jYXRpb25zOyBfaTQgPCBfZXJyb3IkbG9jYXRpb25zMi5sZW5ndGg7IF9pNCsrKSB7XG4gICAgICB2YXIgbG9jYXRpb24gPSBfZXJyb3IkbG9jYXRpb25zMltfaTRdO1xuICAgICAgb3V0cHV0ICs9ICdcXG5cXG4nICsgcHJpbnRTb3VyY2VMb2NhdGlvbihlcnJvci5zb3VyY2UsIGxvY2F0aW9uKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/error/GraphQLError.mjs\n");
321
322/***/ }),
323
324/***/ "../../../node_modules/graphql/error/formatError.mjs":
325/*!**************************************************************************************!*\
326 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/error/formatError.mjs ***!
327 \**************************************************************************************/
328/*! exports provided: formatError */
329/***/ (function(module, __webpack_exports__, __webpack_require__) {
330
331"use strict";
332eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatError\", function() { return formatError; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n\n\n/**\n * Given a GraphQLError, format it according to the rules described by the\n * Response Format, Errors section of the GraphQL Specification.\n */\nfunction formatError(error) {\n var _error$message;\n\n error || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0, 'Received null or undefined error.');\n var message = (_error$message = error.message) !== null && _error$message !== void 0 ? _error$message : 'An unknown error occurred.';\n var locations = error.locations;\n var path = error.path;\n var extensions = error.extensions;\n return extensions ? {\n message: message,\n locations: locations,\n path: path,\n extensions: extensions\n } : {\n message: message,\n locations: locations,\n path: path\n };\n}\n/**\n * @see https://github.com/graphql/graphql-spec/blob/master/spec/Section%207%20--%20Response.md#errors\n */\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXJyb3IvZm9ybWF0RXJyb3IubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvZXJyb3IvZm9ybWF0RXJyb3IubWpzPzI1NmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRldkFzc2VydCBmcm9tIFwiLi4vanN1dGlscy9kZXZBc3NlcnQubWpzXCI7XG5cbi8qKlxuICogR2l2ZW4gYSBHcmFwaFFMRXJyb3IsIGZvcm1hdCBpdCBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIGRlc2NyaWJlZCBieSB0aGVcbiAqIFJlc3BvbnNlIEZvcm1hdCwgRXJyb3JzIHNlY3Rpb24gb2YgdGhlIEdyYXBoUUwgU3BlY2lmaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEVycm9yKGVycm9yKSB7XG4gIHZhciBfZXJyb3IkbWVzc2FnZTtcblxuICBlcnJvciB8fCBkZXZBc3NlcnQoMCwgJ1JlY2VpdmVkIG51bGwgb3IgdW5kZWZpbmVkIGVycm9yLicpO1xuICB2YXIgbWVzc2FnZSA9IChfZXJyb3IkbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2UpICE9PSBudWxsICYmIF9lcnJvciRtZXNzYWdlICE9PSB2b2lkIDAgPyBfZXJyb3IkbWVzc2FnZSA6ICdBbiB1bmtub3duIGVycm9yIG9jY3VycmVkLic7XG4gIHZhciBsb2NhdGlvbnMgPSBlcnJvci5sb2NhdGlvbnM7XG4gIHZhciBwYXRoID0gZXJyb3IucGF0aDtcbiAgdmFyIGV4dGVuc2lvbnMgPSBlcnJvci5leHRlbnNpb25zO1xuICByZXR1cm4gZXh0ZW5zaW9ucyA/IHtcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIGxvY2F0aW9uczogbG9jYXRpb25zLFxuICAgIHBhdGg6IHBhdGgsXG4gICAgZXh0ZW5zaW9uczogZXh0ZW5zaW9uc1xuICB9IDoge1xuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgbG9jYXRpb25zOiBsb2NhdGlvbnMsXG4gICAgcGF0aDogcGF0aFxuICB9O1xufVxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtc3BlYy9ibG9iL21hc3Rlci9zcGVjL1NlY3Rpb24lMjA3JTIwLS0lMjBSZXNwb25zZS5tZCNlcnJvcnNcbiAqL1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/error/formatError.mjs\n");
333
334/***/ }),
335
336/***/ "../../../node_modules/graphql/error/index.mjs":
337/*!********************************************************************************!*\
338 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/error/index.mjs ***!
339 \********************************************************************************/
340/*! exports provided: GraphQLError, printError, syntaxError, locatedError, formatError */
341/***/ (function(module, __webpack_exports__, __webpack_require__) {
342
343"use strict";
344eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLError\", function() { return _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printError\", function() { return _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"printError\"]; });\n\n/* harmony import */ var _syntaxError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./syntaxError.mjs */ \"../../../node_modules/graphql/error/syntaxError.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"syntaxError\", function() { return _syntaxError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"syntaxError\"]; });\n\n/* harmony import */ var _locatedError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./locatedError.mjs */ \"../../../node_modules/graphql/error/locatedError.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"locatedError\", function() { return _locatedError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"locatedError\"]; });\n\n/* harmony import */ var _formatError_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formatError.mjs */ \"../../../node_modules/graphql/error/formatError.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatError\", function() { return _formatError_mjs__WEBPACK_IMPORTED_MODULE_3__[\"formatError\"]; });\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXJyb3IvaW5kZXgubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvZXJyb3IvaW5kZXgubWpzPzczZDkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgR3JhcGhRTEVycm9yLCBwcmludEVycm9yIH0gZnJvbSBcIi4vR3JhcGhRTEVycm9yLm1qc1wiO1xuZXhwb3J0IHsgc3ludGF4RXJyb3IgfSBmcm9tIFwiLi9zeW50YXhFcnJvci5tanNcIjtcbmV4cG9ydCB7IGxvY2F0ZWRFcnJvciB9IGZyb20gXCIuL2xvY2F0ZWRFcnJvci5tanNcIjtcbmV4cG9ydCB7IGZvcm1hdEVycm9yIH0gZnJvbSBcIi4vZm9ybWF0RXJyb3IubWpzXCI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/error/index.mjs\n");
345
346/***/ }),
347
348/***/ "../../../node_modules/graphql/error/locatedError.mjs":
349/*!***************************************************************************************!*\
350 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/error/locatedError.mjs ***!
351 \***************************************************************************************/
352/*! exports provided: locatedError */
353/***/ (function(module, __webpack_exports__, __webpack_require__) {
354
355"use strict";
356eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"locatedError\", function() { return locatedError; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Given an arbitrary value, presumably thrown while attempting to execute a\n * GraphQL operation, produce a new GraphQLError aware of the location in the\n * document responsible for the original Error.\n */\n\nfunction locatedError(rawOriginalError, nodes, path) {\n var _nodes;\n\n // Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface.\n var originalError = rawOriginalError instanceof Error ? rawOriginalError : new Error('Unexpected error value: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(rawOriginalError)); // Note: this uses a brand-check to support GraphQL errors originating from other contexts.\n\n if (Array.isArray(originalError.path)) {\n return originalError;\n }\n\n return new _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](originalError.message, (_nodes = originalError.nodes) !== null && _nodes !== void 0 ? _nodes : nodes, originalError.source, originalError.positions, path, originalError);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXJyb3IvbG9jYXRlZEVycm9yLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2Vycm9yL2xvY2F0ZWRFcnJvci5tanM/Y2UxMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5zcGVjdCBmcm9tIFwiLi4vanN1dGlscy9pbnNwZWN0Lm1qc1wiO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4vR3JhcGhRTEVycm9yLm1qc1wiO1xuLyoqXG4gKiBHaXZlbiBhbiBhcmJpdHJhcnkgdmFsdWUsIHByZXN1bWFibHkgdGhyb3duIHdoaWxlIGF0dGVtcHRpbmcgdG8gZXhlY3V0ZSBhXG4gKiBHcmFwaFFMIG9wZXJhdGlvbiwgcHJvZHVjZSBhIG5ldyBHcmFwaFFMRXJyb3IgYXdhcmUgb2YgdGhlIGxvY2F0aW9uIGluIHRoZVxuICogZG9jdW1lbnQgcmVzcG9uc2libGUgZm9yIHRoZSBvcmlnaW5hbCBFcnJvci5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbG9jYXRlZEVycm9yKHJhd09yaWdpbmFsRXJyb3IsIG5vZGVzLCBwYXRoKSB7XG4gIHZhciBfbm9kZXM7XG5cbiAgLy8gU29tZXRpbWVzIGEgbm9uLWVycm9yIGlzIHRocm93biwgd3JhcCBpdCBhcyBhbiBFcnJvciBpbnN0YW5jZSB0byBlbnN1cmUgYSBjb25zaXN0ZW50IEVycm9yIGludGVyZmFjZS5cbiAgdmFyIG9yaWdpbmFsRXJyb3IgPSByYXdPcmlnaW5hbEVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyByYXdPcmlnaW5hbEVycm9yIDogbmV3IEVycm9yKCdVbmV4cGVjdGVkIGVycm9yIHZhbHVlOiAnICsgaW5zcGVjdChyYXdPcmlnaW5hbEVycm9yKSk7IC8vIE5vdGU6IHRoaXMgdXNlcyBhIGJyYW5kLWNoZWNrIHRvIHN1cHBvcnQgR3JhcGhRTCBlcnJvcnMgb3JpZ2luYXRpbmcgZnJvbSBvdGhlciBjb250ZXh0cy5cblxuICBpZiAoQXJyYXkuaXNBcnJheShvcmlnaW5hbEVycm9yLnBhdGgpKSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsRXJyb3I7XG4gIH1cblxuICByZXR1cm4gbmV3IEdyYXBoUUxFcnJvcihvcmlnaW5hbEVycm9yLm1lc3NhZ2UsIChfbm9kZXMgPSBvcmlnaW5hbEVycm9yLm5vZGVzKSAhPT0gbnVsbCAmJiBfbm9kZXMgIT09IHZvaWQgMCA/IF9ub2RlcyA6IG5vZGVzLCBvcmlnaW5hbEVycm9yLnNvdXJjZSwgb3JpZ2luYWxFcnJvci5wb3NpdGlvbnMsIHBhdGgsIG9yaWdpbmFsRXJyb3IpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/error/locatedError.mjs\n");
357
358/***/ }),
359
360/***/ "../../../node_modules/graphql/error/syntaxError.mjs":
361/*!**************************************************************************************!*\
362 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/error/syntaxError.mjs ***!
363 \**************************************************************************************/
364/*! exports provided: syntaxError */
365/***/ (function(module, __webpack_exports__, __webpack_require__) {
366
367"use strict";
368eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"syntaxError\", function() { return syntaxError; });\n/* harmony import */ var _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nfunction syntaxError(source, position, description) {\n return new _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"Syntax Error: \".concat(description), undefined, source, [position]);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXJyb3Ivc3ludGF4RXJyb3IubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvZXJyb3Ivc3ludGF4RXJyb3IubWpzP2YyOWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4vR3JhcGhRTEVycm9yLm1qc1wiO1xuLyoqXG4gKiBQcm9kdWNlcyBhIEdyYXBoUUxFcnJvciByZXByZXNlbnRpbmcgYSBzeW50YXggZXJyb3IsIGNvbnRhaW5pbmcgdXNlZnVsXG4gKiBkZXNjcmlwdGl2ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3ludGF4IGVycm9yJ3MgcG9zaXRpb24gaW4gdGhlIHNvdXJjZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3ludGF4RXJyb3Ioc291cmNlLCBwb3NpdGlvbiwgZGVzY3JpcHRpb24pIHtcbiAgcmV0dXJuIG5ldyBHcmFwaFFMRXJyb3IoXCJTeW50YXggRXJyb3I6IFwiLmNvbmNhdChkZXNjcmlwdGlvbiksIHVuZGVmaW5lZCwgc291cmNlLCBbcG9zaXRpb25dKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/error/syntaxError.mjs\n");
369
370/***/ }),
371
372/***/ "../../../node_modules/graphql/execution/execute.mjs":
373/*!**************************************************************************************!*\
374 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/execution/execute.mjs ***!
375 \**************************************************************************************/
376/*! exports provided: execute, executeSync, assertValidExecutionArguments, buildExecutionContext, executeOperation, collectFields, buildResolveInfo, defaultTypeResolver, defaultFieldResolver, getFieldDef, Dispatcher */
377/***/ (function(module, __webpack_exports__, __webpack_require__) {
378
379"use strict";
380eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"execute\", function() { return execute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"executeSync\", function() { return executeSync; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertValidExecutionArguments\", function() { return assertValidExecutionArguments; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildExecutionContext\", function() { return buildExecutionContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"executeOperation\", function() { return executeOperation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"collectFields\", function() { return collectFields; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildResolveInfo\", function() { return buildResolveInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultTypeResolver\", function() { return defaultTypeResolver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultFieldResolver\", function() { return defaultFieldResolver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFieldDef\", function() { return getFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Dispatcher\", function() { return Dispatcher; });\n/* harmony import */ var _polyfills_arrayFrom_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/arrayFrom.mjs */ \"../../../node_modules/graphql/polyfills/arrayFrom.mjs\");\n/* harmony import */ var _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../polyfills/symbols.mjs */ \"../../../node_modules/graphql/polyfills/symbols.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_memoize3_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/memoize3.mjs */ \"../../../node_modules/graphql/jsutils/memoize3.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../jsutils/isPromise.mjs */ \"../../../node_modules/graphql/jsutils/isPromise.mjs\");\n/* harmony import */ var _jsutils_isAsyncIterable_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jsutils/isAsyncIterable.mjs */ \"../../../node_modules/graphql/jsutils/isAsyncIterable.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_isCollection_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../jsutils/isCollection.mjs */ \"../../../node_modules/graphql/jsutils/isCollection.mjs\");\n/* harmony import */ var _jsutils_promiseReduce_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../jsutils/promiseReduce.mjs */ \"../../../node_modules/graphql/jsutils/promiseReduce.mjs\");\n/* harmony import */ var _jsutils_promiseForObject_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../jsutils/promiseForObject.mjs */ \"../../../node_modules/graphql/jsutils/promiseForObject.mjs\");\n/* harmony import */ var _jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../jsutils/Path.mjs */ \"../../../node_modules/graphql/jsutils/Path.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../error/locatedError.mjs */ \"../../../node_modules/graphql/error/locatedError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_validate_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../type/validate.mjs */ \"../../../node_modules/graphql/type/validate.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n/* harmony import */ var _utilities_getOperationRootType_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../utilities/getOperationRootType.mjs */ \"../../../node_modules/graphql/utilities/getOperationRootType.mjs\");\n/* harmony import */ var _values_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./values.mjs */ \"../../../node_modules/graphql/execution/values.mjs\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Terminology\n *\n * \"Definitions\" are the generic name for top-level statements in the document.\n * Examples of this include:\n * 1) Operations (such as a query)\n * 2) Fragments\n *\n * \"Operations\" are a generic name for requests in the document.\n * Examples of this include:\n * 1) query,\n * 2) mutation\n *\n * \"Selections\" are the definitions that can appear legally and at\n * single level of the query. These include:\n * 1) field references e.g \"a\"\n * 2) fragment \"spreads\" e.g. \"...c\"\n * 3) inline fragment \"spreads\" e.g. \"...on Type { a }\"\n */\n\n/**\n * Data that must be available at all points during query execution.\n *\n * Namely, schema of the type system that is currently executing,\n * and the fragments defined in the query document\n */\n\nfunction execute(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) {\n /* eslint-enable no-redeclare */\n // Extract arguments from object args if provided.\n return arguments.length === 1 ? executeImpl(argsOrSchema) : executeImpl({\n schema: argsOrSchema,\n document: document,\n rootValue: rootValue,\n contextValue: contextValue,\n variableValues: variableValues,\n operationName: operationName,\n fieldResolver: fieldResolver,\n typeResolver: typeResolver\n });\n}\n/**\n * Also implements the \"Evaluating requests\" section of the GraphQL specification.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\n\nfunction executeSync(args) {\n var result = executeImpl(args); // Assert that the execution was synchronous.\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(result) || Object(_jsutils_isAsyncIterable_mjs__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(result)) {\n throw new Error('GraphQL execution failed to complete synchronously.');\n } // Note: Flow can't refine isAsyncIterable, so explicit casts are used.\n\n\n return result;\n}\n\nfunction executeImpl(args) {\n var schema = args.schema,\n document = args.document,\n rootValue = args.rootValue,\n contextValue = args.contextValue,\n variableValues = args.variableValues,\n operationName = args.operationName,\n fieldResolver = args.fieldResolver,\n typeResolver = args.typeResolver; // If arguments are missing or incorrect, throw an error.\n\n assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n // a \"Response\" with only errors is returned.\n\n var exeContext = buildExecutionContext(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver); // Return early errors if execution context failed.\n\n if (Array.isArray(exeContext)) {\n return {\n errors: exeContext\n };\n } // Return a Promise that will eventually resolve to the data described by\n // The \"Response\" section of the GraphQL specification.\n //\n // If errors are encountered while executing a GraphQL field, only that\n // field and its descendants will be omitted, and sibling fields will still\n // be executed. An execution which encounters errors will still result in a\n // resolved Promise.\n\n\n var data = executeOperation(exeContext, exeContext.operation, rootValue);\n return buildResponse(exeContext, data);\n}\n/**\n * Given a completed execution context and data, build the { errors, data }\n * response defined by the \"Response\" section of the GraphQL specification.\n */\n\n\nfunction buildResponse(exeContext, data) {\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(data)) {\n return data.then(function (resolved) {\n return buildResponse(exeContext, resolved);\n });\n }\n\n var initialResult = exeContext.errors.length === 0 ? {\n data: data\n } : {\n errors: exeContext.errors,\n data: data\n };\n\n if (exeContext.dispatcher.hasSubsequentPayloads()) {\n return exeContext.dispatcher.get(initialResult);\n }\n\n return initialResult;\n}\n/**\n * Essential assertions before executing to provide developer feedback for\n * improper use of the GraphQL library.\n *\n * @internal\n */\n\n\nfunction assertValidExecutionArguments(schema, document, rawVariableValues) {\n document || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(0, 'Must provide document.'); // If the schema used for execution is invalid, throw an error.\n\n Object(_type_validate_mjs__WEBPACK_IMPORTED_MODULE_16__[\"assertValidSchema\"])(schema); // Variables, if provided, must be an object.\n\n rawVariableValues == null || Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(rawVariableValues) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(0, 'Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.');\n}\n/**\n * Constructs a ExecutionContext object from the arguments passed to\n * execute, which we will pass throughout the other execution methods.\n *\n * Throws a GraphQLError if a valid execution context cannot be created.\n *\n * @internal\n */\n\nfunction buildExecutionContext(schema, document, rootValue, contextValue, rawVariableValues, operationName, fieldResolver, typeResolver) {\n var _definition$name, _operation$variableDe;\n\n var operation;\n var fragments = Object.create(null);\n\n for (var _i2 = 0, _document$definitions2 = document.definitions; _i2 < _document$definitions2.length; _i2++) {\n var definition = _document$definitions2[_i2];\n\n switch (definition.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_15__[\"Kind\"].OPERATION_DEFINITION:\n if (operationName == null) {\n if (operation !== undefined) {\n return [new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_13__[\"GraphQLError\"]('Must provide operation name if query contains multiple operations.')];\n }\n\n operation = definition;\n } else if (((_definition$name = definition.name) === null || _definition$name === void 0 ? void 0 : _definition$name.value) === operationName) {\n operation = definition;\n }\n\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_15__[\"Kind\"].FRAGMENT_DEFINITION:\n fragments[definition.name.value] = definition;\n break;\n }\n }\n\n if (!operation) {\n if (operationName != null) {\n return [new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_13__[\"GraphQLError\"](\"Unknown operation named \\\"\".concat(operationName, \"\\\".\"))];\n }\n\n return [new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_13__[\"GraphQLError\"]('Must provide an operation.')];\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n\n\n var variableDefinitions = (_operation$variableDe = operation.variableDefinitions) !== null && _operation$variableDe !== void 0 ? _operation$variableDe : [];\n var coercedVariableValues = Object(_values_mjs__WEBPACK_IMPORTED_MODULE_22__[\"getVariableValues\"])(schema, variableDefinitions, rawVariableValues !== null && rawVariableValues !== void 0 ? rawVariableValues : {}, {\n maxErrors: 50\n });\n\n if (coercedVariableValues.errors) {\n return coercedVariableValues.errors;\n }\n\n return {\n schema: schema,\n fragments: fragments,\n rootValue: rootValue,\n contextValue: contextValue,\n operation: operation,\n variableValues: coercedVariableValues.coerced,\n fieldResolver: fieldResolver !== null && fieldResolver !== void 0 ? fieldResolver : defaultFieldResolver,\n typeResolver: typeResolver !== null && typeResolver !== void 0 ? typeResolver : defaultTypeResolver,\n dispatcher: new Dispatcher(),\n errors: []\n };\n}\n/**\n * Implements the \"Evaluating operations\" section of the spec.\n */\n\nfunction executeOperation(exeContext, operation, rootValue) {\n var type = Object(_utilities_getOperationRootType_mjs__WEBPACK_IMPORTED_MODULE_21__[\"getOperationRootType\"])(exeContext.schema, operation);\n\n var _collectFields = collectFields(exeContext, type, operation.selectionSet, Object.create(null), [], Object.create(null)),\n fields = _collectFields.fields,\n patches = _collectFields.patches;\n\n var path = undefined; // Errors from sub-fields of a NonNull type may propagate to the top level,\n // at which point we still log the error and null the parent field, which\n // in this case is the entire response.\n\n try {\n var result;\n\n if (operation.operation === 'mutation') {\n result = executeFieldsSerially(exeContext, type, rootValue, path, fields);\n } else {\n result = executeFields(exeContext, type, rootValue, path, fields, exeContext.errors);\n }\n\n for (var _i4 = 0; _i4 < patches.length; _i4++) {\n var patch = patches[_i4];\n var label = patch.label,\n patchFields = patch.fields;\n var errors = [];\n exeContext.dispatcher.addFields(label, path, executeFields(exeContext, type, rootValue, path, patchFields, errors), errors);\n }\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(result)) {\n return result.then(undefined, function (error) {\n exeContext.errors.push(error);\n return Promise.resolve(null);\n });\n }\n\n return result;\n } catch (error) {\n exeContext.errors.push(error);\n return null;\n }\n}\n/**\n * Implements the \"Evaluating selection sets\" section of the spec\n * for \"write\" mode.\n */\n\nfunction executeFieldsSerially(exeContext, parentType, sourceValue, path, fields) {\n return Object(_jsutils_promiseReduce_mjs__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(Object.keys(fields), function (results, responseName) {\n var fieldNodes = fields[responseName];\n var fieldPath = Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_12__[\"addPath\"])(path, responseName, parentType.name);\n var result = resolveField(exeContext, parentType, sourceValue, fieldNodes, fieldPath, exeContext.errors);\n\n if (result === undefined) {\n return results;\n }\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(result)) {\n return result.then(function (resolvedResult) {\n results[responseName] = resolvedResult;\n return results;\n });\n }\n\n results[responseName] = result;\n return results;\n }, Object.create(null));\n}\n/**\n * Implements the \"Evaluating selection sets\" section of the spec\n * for \"read\" mode.\n */\n\n\nfunction executeFields(exeContext, parentType, sourceValue, path, fields, errors) {\n var results = Object.create(null);\n var containsPromise = false;\n\n for (var _i6 = 0, _Object$keys2 = Object.keys(fields); _i6 < _Object$keys2.length; _i6++) {\n var responseName = _Object$keys2[_i6];\n var fieldNodes = fields[responseName];\n var fieldPath = Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_12__[\"addPath\"])(path, responseName, parentType.name);\n var result = resolveField(exeContext, parentType, sourceValue, fieldNodes, fieldPath, errors);\n\n if (result !== undefined) {\n results[responseName] = result;\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(result)) {\n containsPromise = true;\n }\n }\n } // If there are no promises, we can just return the object\n\n\n if (!containsPromise) {\n return results;\n } // Otherwise, results is a map from field name to the result of resolving that\n // field, which is possibly a promise. Return a promise that will return this\n // same map, but with any promises replaced with the values they resolved to.\n\n\n return Object(_jsutils_promiseForObject_mjs__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(results);\n}\n/**\n * Given a selectionSet, adds all of the fields in that selection to\n * the passed in map of fields, and returns it at the end.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field which\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * Object type returned by that field.\n *\n * @internal\n */\n\n\nfunction collectFields(exeContext, runtimeType, selectionSet, fields, patches, visitedFragmentNames) {\n for (var _i8 = 0, _selectionSet$selecti2 = selectionSet.selections; _i8 < _selectionSet$selecti2.length; _i8++) {\n var selection = _selectionSet$selecti2[_i8];\n\n switch (selection.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_15__[\"Kind\"].FIELD:\n {\n if (!shouldIncludeNode(exeContext, selection)) {\n continue;\n }\n\n var name = getFieldEntryKey(selection);\n\n if (!fields[name]) {\n fields[name] = [];\n }\n\n fields[name].push(selection);\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_15__[\"Kind\"].INLINE_FRAGMENT:\n {\n if (!shouldIncludeNode(exeContext, selection) || !doesFragmentConditionMatch(exeContext, selection, runtimeType)) {\n continue;\n }\n\n var defer = getDeferValues(exeContext, selection);\n\n if (defer) {\n var _collectFields2 = collectFields(exeContext, runtimeType, selection.selectionSet, Object.create(null), patches, visitedFragmentNames),\n patchFields = _collectFields2.fields;\n\n patches.push({\n label: defer.label,\n fields: patchFields\n });\n } else {\n collectFields(exeContext, runtimeType, selection.selectionSet, fields, patches, visitedFragmentNames);\n }\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_15__[\"Kind\"].FRAGMENT_SPREAD:\n {\n var fragName = selection.name.value;\n\n if (!shouldIncludeNode(exeContext, selection)) {\n continue;\n }\n\n var _defer = getDeferValues(exeContext, selection);\n\n if (visitedFragmentNames[fragName] && // Cannot continue in this case because fields must be recollected for patch\n !_defer) {\n continue;\n }\n\n visitedFragmentNames[fragName] = true;\n var fragment = exeContext.fragments[fragName];\n\n if (!fragment || !doesFragmentConditionMatch(exeContext, fragment, runtimeType)) {\n continue;\n }\n\n if (_defer) {\n var _collectFields3 = collectFields(exeContext, runtimeType, fragment.selectionSet, Object.create(null), patches, visitedFragmentNames),\n _patchFields = _collectFields3.fields;\n\n patches.push({\n label: _defer.label,\n fields: _patchFields\n });\n } else {\n collectFields(exeContext, runtimeType, fragment.selectionSet, fields, patches, visitedFragmentNames);\n }\n\n break;\n }\n }\n }\n\n return {\n fields: fields,\n patches: patches\n };\n}\n/**\n * Determines if a field should be included based on the @include and @skip\n * directives, where @skip has higher precedence than @include.\n */\n\nfunction shouldIncludeNode(exeContext, node) {\n var skip = Object(_values_mjs__WEBPACK_IMPORTED_MODULE_22__[\"getDirectiveValues\"])(_type_directives_mjs__WEBPACK_IMPORTED_MODULE_18__[\"GraphQLSkipDirective\"], node, exeContext.variableValues);\n\n if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) {\n return false;\n }\n\n var include = Object(_values_mjs__WEBPACK_IMPORTED_MODULE_22__[\"getDirectiveValues\"])(_type_directives_mjs__WEBPACK_IMPORTED_MODULE_18__[\"GraphQLIncludeDirective\"], node, exeContext.variableValues);\n\n if ((include === null || include === void 0 ? void 0 : include.if) === false) {\n return false;\n }\n\n return true;\n}\n/**\n * Returns an object containing the @defer arguments if a field should be\n * deferred based on the experimental flag, defer directive present and\n * not disabled by the \"if\" argument.\n */\n\n\nfunction getDeferValues(exeContext, node) {\n var defer = Object(_values_mjs__WEBPACK_IMPORTED_MODULE_22__[\"getDirectiveValues\"])(_type_directives_mjs__WEBPACK_IMPORTED_MODULE_18__[\"GraphQLDeferDirective\"], node, exeContext.variableValues);\n\n if (!defer) {\n return;\n }\n\n if (defer.if === false) {\n return;\n }\n\n return {\n label: typeof defer.label === 'string' ? defer.label : undefined\n };\n}\n/**\n * Returns an object containing the @stream arguments if a field should be\n * streamed based on the experimental flag, stream directive present and\n * not disabled by the \"if\" argument.\n */\n\n\nfunction getStreamValues(exeContext, fieldNodes) {\n // validation only allows equivalent streams on multiple fields, so it is\n // safe to only check the first fieldNode for the stream directive\n var stream = Object(_values_mjs__WEBPACK_IMPORTED_MODULE_22__[\"getDirectiveValues\"])(_type_directives_mjs__WEBPACK_IMPORTED_MODULE_18__[\"GraphQLStreamDirective\"], fieldNodes[0], exeContext.variableValues);\n\n if (!stream) {\n return;\n }\n\n if (stream.if === false) {\n return;\n }\n\n return {\n initialCount: // istanbul ignore next (initialCount is required number argument)\n typeof stream.initialCount === 'number' ? stream.initialCount : undefined,\n label: typeof stream.label === 'string' ? stream.label : undefined\n };\n}\n/**\n * Determines if a fragment is applicable to the given type.\n */\n\n\nfunction doesFragmentConditionMatch(exeContext, fragment, type) {\n var typeConditionNode = fragment.typeCondition;\n\n if (!typeConditionNode) {\n return true;\n }\n\n var conditionalType = Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_20__[\"typeFromAST\"])(exeContext.schema, typeConditionNode);\n\n if (conditionalType === type) {\n return true;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_19__[\"isAbstractType\"])(conditionalType)) {\n return exeContext.schema.isSubType(conditionalType, type);\n }\n\n return false;\n}\n/**\n * Implements the logic to compute the key of a given field's entry\n */\n\n\nfunction getFieldEntryKey(node) {\n return node.alias ? node.alias.value : node.name.value;\n}\n/**\n * Resolves the field on the given source object. In particular, this\n * figures out the value that the field returns by calling its resolve function,\n * then calls completeValue to complete promises, serialize scalars, or execute\n * the sub-selection-set for objects.\n */\n\n\nfunction resolveField(exeContext, parentType, source, fieldNodes, path, errors) {\n var _fieldDef$resolve;\n\n var fieldNode = fieldNodes[0];\n var fieldName = fieldNode.name.value;\n var fieldDef = getFieldDef(exeContext.schema, parentType, fieldName);\n\n if (!fieldDef) {\n return;\n }\n\n var returnType = fieldDef.type;\n var resolveFn = (_fieldDef$resolve = fieldDef.resolve) !== null && _fieldDef$resolve !== void 0 ? _fieldDef$resolve : exeContext.fieldResolver;\n var info = buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path); // Get the resolve function, regardless of if its result is normal or abrupt (error).\n\n try {\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n // TODO: find a way to memoize, in case this field is within a List type.\n var args = Object(_values_mjs__WEBPACK_IMPORTED_MODULE_22__[\"getArgumentValues\"])(fieldDef, fieldNodes[0], exeContext.variableValues); // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n\n var _contextValue = exeContext.contextValue;\n var result = resolveFn(source, args, _contextValue, info);\n var completed;\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(result)) {\n completed = result.then(function (resolved) {\n return completeValue(exeContext, returnType, fieldNodes, info, path, resolved, errors);\n });\n } else {\n completed = completeValue(exeContext, returnType, fieldNodes, info, path, result, errors);\n }\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(completed)) {\n // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n return completed.then(undefined, function (rawError) {\n var error = Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_14__[\"locatedError\"])(rawError, fieldNodes, Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_12__[\"pathToArray\"])(path));\n return handleFieldError(error, returnType, errors);\n });\n }\n\n return completed;\n } catch (rawError) {\n var error = Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_14__[\"locatedError\"])(rawError, fieldNodes, Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_12__[\"pathToArray\"])(path));\n return handleFieldError(error, returnType, errors);\n }\n}\n/**\n * @internal\n */\n\n\nfunction buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path) {\n // The resolve function's optional fourth argument is a collection of\n // information about the current execution state.\n return {\n fieldName: fieldDef.name,\n fieldNodes: fieldNodes,\n returnType: fieldDef.type,\n parentType: parentType,\n path: path,\n schema: exeContext.schema,\n fragments: exeContext.fragments,\n rootValue: exeContext.rootValue,\n operation: exeContext.operation,\n variableValues: exeContext.variableValues\n };\n}\n\nfunction handleFieldError(error, returnType, errors) {\n // If the field type is non-nullable, then it is resolved without any\n // protection from errors, however it still properly locates the error.\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_19__[\"isNonNullType\"])(returnType)) {\n throw error;\n } // Otherwise, error protection is applied, logging the error and resolving\n // a null value for this field if one is encountered.\n\n\n errors.push(error);\n return null;\n}\n/**\n * Implements the instructions for completeValue as defined in the\n * \"Field entries\" section of the spec.\n *\n * If the field type is Non-Null, then this recursively completes the value\n * for the inner type. It throws a field error if that completion returns null,\n * as per the \"Nullability\" section of the spec.\n *\n * If the field type is a List, then this recursively completes the value\n * for the inner type on each item in the list.\n *\n * If the field type is a Scalar or Enum, ensures the completed value is a legal\n * value of the type by calling the `serialize` method of GraphQL type\n * definition.\n *\n * If the field is an abstract type, determine the runtime type of the value\n * and then complete based on that type\n *\n * Otherwise, the field type expects a sub-selection set, and will complete the\n * value by evaluating all sub-selections.\n */\n\n\nfunction completeValue(exeContext, returnType, fieldNodes, info, path, result, errors) {\n // If result is an Error, throw a located error.\n if (result instanceof Error) {\n throw result;\n } // If field type is NonNull, complete for inner type, and throw field error\n // if result is null.\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_19__[\"isNonNullType\"])(returnType)) {\n var completed = completeValue(exeContext, returnType.ofType, fieldNodes, info, path, result, errors);\n\n if (completed === null) {\n throw new Error(\"Cannot return null for non-nullable field \".concat(info.parentType.name, \".\").concat(info.fieldName, \".\"));\n }\n\n return completed;\n } // If result value is null or undefined then return null.\n\n\n if (result == null) {\n return null;\n } // If field type is List, complete each item in the list with the inner type\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_19__[\"isListType\"])(returnType)) {\n return completeListValue(exeContext, returnType, fieldNodes, info, path, result, errors);\n } // If field type is a leaf type, Scalar or Enum, serialize to a valid value,\n // returning null if serialization is not possible.\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_19__[\"isLeafType\"])(returnType)) {\n return completeLeafValue(returnType, result);\n } // If field type is an abstract type, Interface or Union, determine the\n // runtime Object type and complete for that type.\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_19__[\"isAbstractType\"])(returnType)) {\n return completeAbstractValue(exeContext, returnType, fieldNodes, info, path, result, errors);\n } // If field type is Object, execute and complete all sub-selections.\n // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_19__[\"isObjectType\"])(returnType)) {\n return completeObjectValue(exeContext, returnType, fieldNodes, info, path, result, errors);\n } // istanbul ignore next (Not reachable. All possible output types have been considered)\n\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(0, 'Cannot complete value of unexpected output type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(returnType));\n}\n/**\n * Complete a async iterator value by completing the result and calling\n * recursively until all the results are completed.\n */\n\n\nfunction completeAsyncIteratorValue(exeContext, itemType, fieldNodes, info, path, iterator, errors) {\n var containsPromise = false;\n var stream = getStreamValues(exeContext, fieldNodes);\n return new Promise(function (resolve) {\n function next(index, completedResults) {\n var fieldPath = Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_12__[\"addPath\"])(path, index, undefined);\n iterator.next().then(function (_ref) {\n var value = _ref.value,\n done = _ref.done;\n\n if (done) {\n resolve(completedResults);\n return;\n } // TODO can the error checking logic be consolidated with completeListValue?\n\n\n try {\n var completedItem = completeValue(exeContext, itemType, fieldNodes, info, fieldPath, value, errors);\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(completedItem)) {\n containsPromise = true;\n }\n\n completedResults.push(completedItem);\n } catch (rawError) {\n completedResults.push(null);\n var error = Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_14__[\"locatedError\"])(rawError, fieldNodes, Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_12__[\"pathToArray\"])(fieldPath));\n handleFieldError(error, itemType, errors);\n resolve(completedResults);\n return;\n }\n\n var newIndex = index + 1;\n\n if (stream && typeof stream.initialCount === 'number' && newIndex >= stream.initialCount) {\n exeContext.dispatcher.addAsyncIteratorValue(stream.label, newIndex, path, iterator, exeContext, fieldNodes, info, itemType);\n resolve(completedResults);\n return;\n }\n\n next(newIndex, completedResults);\n }, function (rawError) {\n completedResults.push(null);\n var error = Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_14__[\"locatedError\"])(rawError, fieldNodes, Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_12__[\"pathToArray\"])(fieldPath));\n handleFieldError(error, itemType, errors);\n resolve(completedResults);\n });\n }\n\n next(0, []);\n }).then(function (completedResults) {\n return containsPromise ? Promise.all(completedResults) : completedResults;\n });\n}\n/**\n * Complete a list value by completing each item in the list with the\n * inner type\n */\n\n\nfunction completeListValue(exeContext, returnType, fieldNodes, info, path, result, errors) {\n var itemType = returnType.ofType;\n\n if (Object(_jsutils_isAsyncIterable_mjs__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(result)) {\n var iterator = result[_polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_1__[\"SYMBOL_ASYNC_ITERATOR\"]]();\n return completeAsyncIteratorValue(exeContext, itemType, fieldNodes, info, path, iterator, errors);\n }\n\n if (!Object(_jsutils_isCollection_mjs__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(result)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_13__[\"GraphQLError\"](\"Expected Iterable, but did not find one for field \\\"\".concat(info.parentType.name, \".\").concat(info.fieldName, \"\\\".\"));\n }\n\n var stream = getStreamValues(exeContext, fieldNodes); // This is specified as a simple map, however we're optimizing the path\n // where the list contains no Promises by avoiding creating another Promise.\n\n var containsPromise = false;\n var completedResults = Object(_polyfills_arrayFrom_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(result, function (item, index) {\n // No need to modify the info object containing the path,\n // since from here on it is not ever accessed by resolver functions.\n var itemPath = Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_12__[\"addPath\"])(path, index, undefined);\n\n try {\n var completedItem;\n\n if (stream && typeof stream.initialCount === 'number' && index >= stream.initialCount) {\n exeContext.dispatcher.addValue(stream.label, itemPath, item, exeContext, fieldNodes, info, itemType);\n return;\n }\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(item)) {\n completedItem = item.then(function (resolved) {\n return completeValue(exeContext, itemType, fieldNodes, info, itemPath, resolved, errors);\n });\n } else {\n completedItem = completeValue(exeContext, itemType, fieldNodes, info, itemPath, item, errors);\n }\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(completedItem)) {\n containsPromise = true; // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n\n return completedItem.then(undefined, function (rawError) {\n var error = Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_14__[\"locatedError\"])(rawError, fieldNodes, Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_12__[\"pathToArray\"])(itemPath));\n return handleFieldError(error, itemType, errors);\n });\n }\n\n return completedItem;\n } catch (rawError) {\n var error = Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_14__[\"locatedError\"])(rawError, fieldNodes, Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_12__[\"pathToArray\"])(itemPath));\n return handleFieldError(error, itemType, errors);\n }\n }).filter(function (val) {\n return val !== undefined;\n });\n return containsPromise ? Promise.all(completedResults) : completedResults;\n}\n/**\n * Complete a Scalar or Enum by serializing to a valid value, returning\n * null if serialization is not possible.\n */\n\n\nfunction completeLeafValue(returnType, result) {\n var serializedResult = returnType.serialize(result);\n\n if (serializedResult === undefined) {\n throw new Error(\"Expected a value of type \\\"\".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(returnType), \"\\\" but \") + \"received: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(result)));\n }\n\n return serializedResult;\n}\n/**\n * Complete a value of an abstract type by determining the runtime object type\n * of that value, then complete the value for that type.\n */\n\n\nfunction completeAbstractValue(exeContext, returnType, fieldNodes, info, path, result, errors) {\n var _returnType$resolveTy;\n\n var resolveTypeFn = (_returnType$resolveTy = returnType.resolveType) !== null && _returnType$resolveTy !== void 0 ? _returnType$resolveTy : exeContext.typeResolver;\n var contextValue = exeContext.contextValue;\n var runtimeType = resolveTypeFn(result, contextValue, info, returnType);\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(runtimeType)) {\n return runtimeType.then(function (resolvedRuntimeType) {\n return completeObjectValue(exeContext, ensureValidRuntimeType(resolvedRuntimeType, exeContext, returnType, fieldNodes, info, result), fieldNodes, info, path, result, errors);\n });\n }\n\n return completeObjectValue(exeContext, ensureValidRuntimeType(runtimeType, exeContext, returnType, fieldNodes, info, result), fieldNodes, info, path, result, errors);\n}\n\nfunction ensureValidRuntimeType(runtimeTypeOrName, exeContext, returnType, fieldNodes, info, result) {\n if (runtimeTypeOrName == null) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_13__[\"GraphQLError\"](\"Abstract type \\\"\".concat(returnType.name, \"\\\" must resolve to an Object type at runtime for field \\\"\").concat(info.parentType.name, \".\").concat(info.fieldName, \"\\\". Either the \\\"\").concat(returnType.name, \"\\\" type should provide a \\\"resolveType\\\" function or each possible type should provide an \\\"isTypeOf\\\" function.\"), fieldNodes);\n } // FIXME: temporary workaround until support for passing object types would be removed in v16.0.0\n\n\n var runtimeTypeName = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_19__[\"isNamedType\"])(runtimeTypeOrName) ? runtimeTypeOrName.name : runtimeTypeOrName;\n\n if (typeof runtimeTypeName !== 'string') {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_13__[\"GraphQLError\"](\"Abstract type \\\"\".concat(returnType.name, \"\\\" must resolve to an Object type at runtime for field \\\"\").concat(info.parentType.name, \".\").concat(info.fieldName, \"\\\" with \") + \"value \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(result), \", received \\\"\").concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(runtimeTypeOrName), \"\\\".\"));\n }\n\n var runtimeType = exeContext.schema.getType(runtimeTypeName);\n\n if (runtimeType == null) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_13__[\"GraphQLError\"](\"Abstract type \\\"\".concat(returnType.name, \"\\\" was resolve to a type \\\"\").concat(runtimeTypeName, \"\\\" that does not exist inside schema.\"), fieldNodes);\n }\n\n if (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_19__[\"isObjectType\"])(runtimeType)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_13__[\"GraphQLError\"](\"Abstract type \\\"\".concat(returnType.name, \"\\\" was resolve to a non-object type \\\"\").concat(runtimeTypeName, \"\\\".\"), fieldNodes);\n }\n\n if (!exeContext.schema.isSubType(returnType, runtimeType)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_13__[\"GraphQLError\"](\"Runtime Object type \\\"\".concat(runtimeType.name, \"\\\" is not a possible type for \\\"\").concat(returnType.name, \"\\\".\"), fieldNodes);\n }\n\n return runtimeType;\n}\n/**\n * Complete an Object value by executing all sub-selections.\n */\n\n\nfunction completeObjectValue(exeContext, returnType, fieldNodes, info, path, result, errors) {\n // If there is an isTypeOf predicate function, call it with the\n // current result. If isTypeOf returns false, then raise an error rather\n // than continuing execution.\n if (returnType.isTypeOf) {\n var isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info);\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(isTypeOf)) {\n return isTypeOf.then(function (resolvedIsTypeOf) {\n if (!resolvedIsTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n\n return collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, result, errors);\n });\n }\n\n if (!isTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n }\n\n return collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, result, errors);\n}\n\nfunction invalidReturnTypeError(returnType, result, fieldNodes) {\n return new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_13__[\"GraphQLError\"](\"Expected value of type \\\"\".concat(returnType.name, \"\\\" but got: \").concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(result), \".\"), fieldNodes);\n}\n\nfunction collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, result, errors) {\n // Collect sub-fields to execute to complete this value.\n var _collectSubfields2 = collectSubfields(exeContext, returnType, fieldNodes),\n subFieldNodes = _collectSubfields2.fields,\n subPatches = _collectSubfields2.patches;\n\n var subFields = executeFields(exeContext, returnType, result, path, subFieldNodes, errors);\n\n for (var _i10 = 0; _i10 < subPatches.length; _i10++) {\n var subPatch = subPatches[_i10];\n var label = subPatch.label,\n subPatchFieldNodes = subPatch.fields;\n var subPatchErrors = [];\n exeContext.dispatcher.addFields(label, path, executeFields(exeContext, returnType, result, path, subPatchFieldNodes, subPatchErrors), subPatchErrors);\n }\n\n return subFields;\n}\n/**\n * A memoized collection of relevant subfields with regard to the return\n * type. Memoizing ensures the subfields are not repeatedly calculated, which\n * saves overhead when resolving lists of values.\n */\n\n\nvar collectSubfields = Object(_jsutils_memoize3_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_collectSubfields);\n\nfunction _collectSubfields(exeContext, returnType, fieldNodes) {\n var subFieldNodes = Object.create(null);\n var visitedFragmentNames = Object.create(null);\n var subPatches = [];\n var subFieldsAndPatches = {\n fields: subFieldNodes,\n patches: subPatches\n };\n\n for (var _i12 = 0; _i12 < fieldNodes.length; _i12++) {\n var node = fieldNodes[_i12];\n\n if (node.selectionSet) {\n subFieldsAndPatches = collectFields(exeContext, returnType, node.selectionSet, subFieldNodes, subPatches, visitedFragmentNames);\n }\n }\n\n return subFieldsAndPatches;\n}\n/**\n * If a resolveType function is not given, then a default resolve behavior is\n * used which attempts two strategies:\n *\n * First, See if the provided value has a `__typename` field defined, if so, use\n * that value as name of the resolved type.\n *\n * Otherwise, test each possible type for the abstract type by calling\n * isTypeOf for the object being coerced, returning the first type that matches.\n */\n\n\nvar defaultTypeResolver = function defaultTypeResolver(value, contextValue, info, abstractType) {\n // First, look for `__typename`.\n if (Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(value) && typeof value.__typename === 'string') {\n return value.__typename;\n } // Otherwise, test each possible type.\n\n\n var possibleTypes = info.schema.getPossibleTypes(abstractType);\n var promisedIsTypeOfResults = [];\n\n for (var i = 0; i < possibleTypes.length; i++) {\n var type = possibleTypes[i];\n\n if (type.isTypeOf) {\n var isTypeOfResult = type.isTypeOf(value, contextValue, info);\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(isTypeOfResult)) {\n promisedIsTypeOfResults[i] = isTypeOfResult;\n } else if (isTypeOfResult) {\n return type.name;\n }\n }\n }\n\n if (promisedIsTypeOfResults.length) {\n return Promise.all(promisedIsTypeOfResults).then(function (isTypeOfResults) {\n for (var _i13 = 0; _i13 < isTypeOfResults.length; _i13++) {\n if (isTypeOfResults[_i13]) {\n return possibleTypes[_i13].name;\n }\n }\n });\n }\n};\n/**\n * If a resolve function is not given, then a default resolve behavior is used\n * which takes the property of the source object of the same name as the field\n * and returns it as the result, or if it's a function, returns the result\n * of calling that function while passing along args and context value.\n */\n\nvar defaultFieldResolver = function defaultFieldResolver(source, args, contextValue, info) {\n // ensure source is a value for which property access is acceptable.\n if (Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(source) || typeof source === 'function') {\n var property = source[info.fieldName];\n\n if (typeof property === 'function') {\n return source[info.fieldName](args, contextValue, info);\n }\n\n return property;\n }\n};\n/**\n * This method looks up the field on the given type definition.\n * It has special casing for the three introspection fields,\n * __schema, __type and __typename. __typename is special because\n * it can always be queried as a field, even in situations where no\n * other fields are allowed, like on a Union. __schema and __type\n * could get automatically added to the query type, but that would\n * require mutating type definitions, which would cause issues.\n *\n * @internal\n */\n\nfunction getFieldDef(schema, parentType, fieldName) {\n if (fieldName === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_17__[\"SchemaMetaFieldDef\"].name && schema.getQueryType() === parentType) {\n return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_17__[\"SchemaMetaFieldDef\"];\n } else if (fieldName === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_17__[\"TypeMetaFieldDef\"].name && schema.getQueryType() === parentType) {\n return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_17__[\"TypeMetaFieldDef\"];\n } else if (fieldName === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_17__[\"TypeNameMetaFieldDef\"].name) {\n return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_17__[\"TypeNameMetaFieldDef\"];\n }\n\n return parentType.getFields()[fieldName];\n}\n/**\n * Same as ExecutionPatchResult, but without hasNext\n */\n\n/**\n * Dispatcher keeps track of subsequent payloads that need to be delivered\n * to the client. After initial execution, returns an async iteratable of\n * all the AsyncExecutionResults as they are resolved.\n */\nvar Dispatcher = /*#__PURE__*/function () {\n function Dispatcher() {\n this._subsequentPayloads = [];\n this._hasReturnedInitialResult = false;\n }\n\n var _proto = Dispatcher.prototype;\n\n _proto.hasSubsequentPayloads = function hasSubsequentPayloads() {\n return this._subsequentPayloads.length !== 0;\n };\n\n _proto.addFields = function addFields(label, path, promiseOrData, errors) {\n this._subsequentPayloads.push(Promise.resolve(promiseOrData).then(function (data) {\n return {\n value: createPatchResult(data, label, path, errors),\n done: false\n };\n }));\n };\n\n _proto.addValue = function addValue(label, path, promiseOrData, exeContext, fieldNodes, info, itemType) {\n var errors = [];\n\n this._subsequentPayloads.push(Promise.resolve(promiseOrData).then(function (resolved) {\n return completeValue(exeContext, itemType, fieldNodes, info, path, resolved, errors);\n }) // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n .then(undefined, function (rawError) {\n var error = Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_14__[\"locatedError\"])(rawError, fieldNodes, Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_12__[\"pathToArray\"])(path));\n return handleFieldError(error, itemType, errors);\n }).then(function (data) {\n return {\n value: createPatchResult(data, label, path, errors),\n done: false\n };\n }));\n };\n\n _proto.addAsyncIteratorValue = function addAsyncIteratorValue(label, initialIndex, path, iterator, exeContext, fieldNodes, info, itemType) {\n var subsequentPayloads = this._subsequentPayloads;\n\n function next(index) {\n var fieldPath = Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_12__[\"addPath\"])(path, index);\n var patchErrors = [];\n subsequentPayloads.push(iterator.next().then(function (_ref2) {\n var data = _ref2.value,\n done = _ref2.done;\n\n if (done) {\n return {\n value: undefined,\n done: true\n };\n } // eslint-disable-next-line node/callback-return\n\n\n next(index + 1);\n\n try {\n var completedItem = completeValue(exeContext, itemType, fieldNodes, info, fieldPath, data, patchErrors);\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(completedItem)) {\n return completedItem.then(function (resolveItem) {\n return {\n value: createPatchResult(resolveItem, label, fieldPath, patchErrors),\n done: false\n };\n });\n }\n\n return {\n value: createPatchResult(completedItem, label, fieldPath, patchErrors),\n done: false\n };\n } catch (rawError) {\n var error = Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_14__[\"locatedError\"])(rawError, fieldNodes, Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_12__[\"pathToArray\"])(fieldPath));\n handleFieldError(error, itemType, patchErrors);\n return {\n value: createPatchResult(null, label, fieldPath, patchErrors),\n done: false\n };\n }\n }, function (rawError) {\n var error = Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_14__[\"locatedError\"])(rawError, fieldNodes, Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_12__[\"pathToArray\"])(fieldPath));\n handleFieldError(error, itemType, patchErrors);\n return {\n value: createPatchResult(null, label, fieldPath, patchErrors),\n done: false\n };\n }));\n }\n\n next(initialIndex);\n };\n\n _proto._race = function _race() {\n var _this = this;\n\n return new Promise(function (resolve) {\n _this._subsequentPayloads.forEach(function (promise) {\n promise.then(function () {\n // resolve with actual promise, not resolved value of promise so we can remove it from this._subsequentPayloads\n resolve({\n promise: promise\n });\n });\n });\n }).then(function (_ref3) {\n var promise = _ref3.promise;\n\n _this._subsequentPayloads.splice(_this._subsequentPayloads.indexOf(promise), 1);\n\n return promise;\n }).then(function (_ref4) {\n var value = _ref4.value,\n done = _ref4.done;\n\n if (done && _this._subsequentPayloads.length === 0) {\n // async iterable resolver just finished and no more pending payloads\n return {\n value: {\n hasNext: false\n },\n done: false\n };\n } else if (done) {\n // async iterable resolver just finished but there are pending payloads\n // return the next one\n return _this._race();\n }\n\n var returnValue = _objectSpread(_objectSpread({}, value), {}, {\n hasNext: _this._subsequentPayloads.length > 0\n });\n\n return {\n value: returnValue,\n done: false\n };\n });\n };\n\n _proto._next = function _next() {\n if (!this._hasReturnedInitialResult) {\n this._hasReturnedInitialResult = true;\n return Promise.resolve({\n value: _objectSpread(_objectSpread({}, this._initialResult), {}, {\n hasNext: true\n }),\n done: false\n });\n } else if (this._subsequentPayloads.length === 0) {\n return Promise.resolve({\n value: undefined,\n done: true\n });\n }\n\n return this._race();\n };\n\n _proto.get = function get(initialResult) {\n var _this2 = this,\n _ref5;\n\n this._initialResult = initialResult;\n return _ref5 = {}, _defineProperty(_ref5, _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_1__[\"SYMBOL_ASYNC_ITERATOR\"], function () {\n return this;\n }), _defineProperty(_ref5, \"next\", function next() {\n return _this2._next();\n }), _ref5;\n };\n\n return Dispatcher;\n}();\n\nfunction createPatchResult(data, label, path, errors) {\n var value = {\n data: data,\n path: path ? Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_12__[\"pathToArray\"])(path) : []\n };\n\n if (label != null) {\n value.label = label;\n }\n\n if (errors && errors.length > 0) {\n value.errors = errors;\n }\n\n return value;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXhlY3V0aW9uL2V4ZWN1dGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvZXhlY3V0aW9uL2V4ZWN1dGUubWpzP2VkYTkiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBhcnJheUZyb20gZnJvbSBcIi4uL3BvbHlmaWxscy9hcnJheUZyb20ubWpzXCI7XG5pbXBvcnQgeyBTWU1CT0xfQVNZTkNfSVRFUkFUT1IgfSBmcm9tIFwiLi4vcG9seWZpbGxzL3N5bWJvbHMubWpzXCI7XG5pbXBvcnQgaW5zcGVjdCBmcm9tIFwiLi4vanN1dGlscy9pbnNwZWN0Lm1qc1wiO1xuaW1wb3J0IG1lbW9pemUzIGZyb20gXCIuLi9qc3V0aWxzL21lbW9pemUzLm1qc1wiO1xuaW1wb3J0IGludmFyaWFudCBmcm9tIFwiLi4vanN1dGlscy9pbnZhcmlhbnQubWpzXCI7XG5pbXBvcnQgZGV2QXNzZXJ0IGZyb20gXCIuLi9qc3V0aWxzL2RldkFzc2VydC5tanNcIjtcbmltcG9ydCBpc1Byb21pc2UgZnJvbSBcIi4uL2pzdXRpbHMvaXNQcm9taXNlLm1qc1wiO1xuaW1wb3J0IGlzQXN5bmNJdGVyYWJsZSBmcm9tIFwiLi4vanN1dGlscy9pc0FzeW5jSXRlcmFibGUubWpzXCI7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gXCIuLi9qc3V0aWxzL2lzT2JqZWN0TGlrZS5tanNcIjtcbmltcG9ydCBpc0NvbGxlY3Rpb24gZnJvbSBcIi4uL2pzdXRpbHMvaXNDb2xsZWN0aW9uLm1qc1wiO1xuaW1wb3J0IHByb21pc2VSZWR1Y2UgZnJvbSBcIi4uL2pzdXRpbHMvcHJvbWlzZVJlZHVjZS5tanNcIjtcbmltcG9ydCBwcm9taXNlRm9yT2JqZWN0IGZyb20gXCIuLi9qc3V0aWxzL3Byb21pc2VGb3JPYmplY3QubWpzXCI7XG5pbXBvcnQgeyBhZGRQYXRoLCBwYXRoVG9BcnJheSB9IGZyb20gXCIuLi9qc3V0aWxzL1BhdGgubWpzXCI7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qc1wiO1xuaW1wb3J0IHsgbG9jYXRlZEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL2xvY2F0ZWRFcnJvci5tanNcIjtcbmltcG9ydCB7IEtpbmQgfSBmcm9tIFwiLi4vbGFuZ3VhZ2Uva2luZHMubWpzXCI7XG5pbXBvcnQgeyBhc3NlcnRWYWxpZFNjaGVtYSB9IGZyb20gXCIuLi90eXBlL3ZhbGlkYXRlLm1qc1wiO1xuaW1wb3J0IHsgU2NoZW1hTWV0YUZpZWxkRGVmLCBUeXBlTWV0YUZpZWxkRGVmLCBUeXBlTmFtZU1ldGFGaWVsZERlZiB9IGZyb20gXCIuLi90eXBlL2ludHJvc3BlY3Rpb24ubWpzXCI7XG5pbXBvcnQgeyBHcmFwaFFMSW5jbHVkZURpcmVjdGl2ZSwgR3JhcGhRTFNraXBEaXJlY3RpdmUsIEdyYXBoUUxEZWZlckRpcmVjdGl2ZSwgR3JhcGhRTFN0cmVhbURpcmVjdGl2ZSB9IGZyb20gXCIuLi90eXBlL2RpcmVjdGl2ZXMubWpzXCI7XG5pbXBvcnQgeyBpc05hbWVkVHlwZSwgaXNPYmplY3RUeXBlLCBpc0Fic3RyYWN0VHlwZSwgaXNMZWFmVHlwZSwgaXNMaXN0VHlwZSwgaXNOb25OdWxsVHlwZSB9IGZyb20gXCIuLi90eXBlL2RlZmluaXRpb24ubWpzXCI7XG5pbXBvcnQgeyB0eXBlRnJvbUFTVCB9IGZyb20gXCIuLi91dGlsaXRpZXMvdHlwZUZyb21BU1QubWpzXCI7XG5pbXBvcnQgeyBnZXRPcGVyYXRpb25Sb290VHlwZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZ2V0T3BlcmF0aW9uUm9vdFR5cGUubWpzXCI7XG5pbXBvcnQgeyBnZXRWYXJpYWJsZVZhbHVlcywgZ2V0QXJndW1lbnRWYWx1ZXMsIGdldERpcmVjdGl2ZVZhbHVlcyB9IGZyb20gXCIuL3ZhbHVlcy5tanNcIjtcbi8qKlxuICogVGVybWlub2xvZ3lcbiAqXG4gKiBcIkRlZmluaXRpb25zXCIgYXJlIHRoZSBnZW5lcmljIG5hbWUgZm9yIHRvcC1sZXZlbCBzdGF0ZW1lbnRzIGluIHRoZSBkb2N1bWVudC5cbiAqIEV4YW1wbGVzIG9mIHRoaXMgaW5jbHVkZTpcbiAqIDEpIE9wZXJhdGlvbnMgKHN1Y2ggYXMgYSBxdWVyeSlcbiAqIDIpIEZyYWdtZW50c1xuICpcbiAqIFwiT3BlcmF0aW9uc1wiIGFyZSBhIGdlbmVyaWMgbmFtZSBmb3IgcmVxdWVzdHMgaW4gdGhlIGRvY3VtZW50LlxuICogRXhhbXBsZXMgb2YgdGhpcyBpbmNsdWRlOlxuICogMSkgcXVlcnksXG4gKiAyKSBtdXRhdGlvblxuICpcbiAqIFwiU2VsZWN0aW9uc1wiIGFyZSB0aGUgZGVmaW5pdGlvbnMgdGhhdCBjYW4gYXBwZWFyIGxlZ2FsbHkgYW5kIGF0XG4gKiBzaW5nbGUgbGV2ZWwgb2YgdGhlIHF1ZXJ5LiBUaGVzZSBpbmNsdWRlOlxuICogMSkgZmllbGQgcmVmZXJlbmNlcyBlLmcgXCJhXCJcbiAqIDIpIGZyYWdtZW50IFwic3ByZWFkc1wiIGUuZy4gXCIuLi5jXCJcbiAqIDMpIGlubGluZSBmcmFnbWVudCBcInNwcmVhZHNcIiBlLmcuIFwiLi4ub24gVHlwZSB7IGEgfVwiXG4gKi9cblxuLyoqXG4gKiBEYXRhIHRoYXQgbXVzdCBiZSBhdmFpbGFibGUgYXQgYWxsIHBvaW50cyBkdXJpbmcgcXVlcnkgZXhlY3V0aW9uLlxuICpcbiAqIE5hbWVseSwgc2NoZW1hIG9mIHRoZSB0eXBlIHN5c3RlbSB0aGF0IGlzIGN1cnJlbnRseSBleGVjdXRpbmcsXG4gKiBhbmQgdGhlIGZyYWdtZW50cyBkZWZpbmVkIGluIHRoZSBxdWVyeSBkb2N1bWVudFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRlKGFyZ3NPclNjaGVtYSwgZG9jdW1lbnQsIHJvb3RWYWx1ZSwgY29udGV4dFZhbHVlLCB2YXJpYWJsZVZhbHVlcywgb3BlcmF0aW9uTmFtZSwgZmllbGRSZXNvbHZlciwgdHlwZVJlc29sdmVyKSB7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tcmVkZWNsYXJlICovXG4gIC8vIEV4dHJhY3QgYXJndW1lbnRzIGZyb20gb2JqZWN0IGFyZ3MgaWYgcHJvdmlkZWQuXG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gZXhlY3V0ZUltcGwoYXJnc09yU2NoZW1hKSA6IGV4ZWN1dGVJbXBsKHtcbiAgICBzY2hlbWE6IGFyZ3NPclNjaGVtYSxcbiAgICBkb2N1bWVudDogZG9jdW1lbnQsXG4gICAgcm9vdFZhbHVlOiByb290VmFsdWUsXG4gICAgY29udGV4dFZhbHVlOiBjb250ZXh0VmFsdWUsXG4gICAgdmFyaWFibGVWYWx1ZXM6IHZhcmlhYmxlVmFsdWVzLFxuICAgIG9wZXJhdGlvbk5hbWU6IG9wZXJhdGlvbk5hbWUsXG4gICAgZmllbGRSZXNvbHZlcjogZmllbGRSZXNvbHZlcixcbiAgICB0eXBlUmVzb2x2ZXI6IHR5cGVSZXNvbHZlclxuICB9KTtcbn1cbi8qKlxuICogQWxzbyBpbXBsZW1lbnRzIHRoZSBcIkV2YWx1YXRpbmcgcmVxdWVzdHNcIiBzZWN0aW9uIG9mIHRoZSBHcmFwaFFMIHNwZWNpZmljYXRpb24uXG4gKiBIb3dldmVyLCBpdCBndWFyYW50ZWVzIHRvIGNvbXBsZXRlIHN5bmNocm9ub3VzbHkgKG9yIHRocm93IGFuIGVycm9yKSBhc3N1bWluZ1xuICogdGhhdCBhbGwgZmllbGQgcmVzb2x2ZXJzIGFyZSBhbHNvIHN5bmNocm9ub3VzLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRlU3luYyhhcmdzKSB7XG4gIHZhciByZXN1bHQgPSBleGVjdXRlSW1wbChhcmdzKTsgLy8gQXNzZXJ0IHRoYXQgdGhlIGV4ZWN1dGlvbiB3YXMgc3luY2hyb25vdXMuXG5cbiAgaWYgKGlzUHJvbWlzZShyZXN1bHQpIHx8IGlzQXN5bmNJdGVyYWJsZShyZXN1bHQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHcmFwaFFMIGV4ZWN1dGlvbiBmYWlsZWQgdG8gY29tcGxldGUgc3luY2hyb25vdXNseS4nKTtcbiAgfSAvLyBOb3RlOiBGbG93IGNhbid0IHJlZmluZSBpc0FzeW5jSXRlcmFibGUsIHNvIGV4cGxpY2l0IGNhc3RzIGFyZSB1c2VkLlxuXG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZXhlY3V0ZUltcGwoYXJncykge1xuICB2YXIgc2NoZW1hID0gYXJncy5zY2hlbWEsXG4gICAgICBkb2N1bWVudCA9IGFyZ3MuZG9jdW1lbnQsXG4gICAgICByb290VmFsdWUgPSBhcmdzLnJvb3RWYWx1ZSxcbiAgICAgIGNvbnRleHRWYWx1ZSA9IGFyZ3MuY29udGV4dFZhbHVlLFxuICAgICAgdmFyaWFibGVWYWx1ZXMgPSBhcmdzLnZhcmlhYmxlVmFsdWVzLFxuICAgICAgb3BlcmF0aW9uTmFtZSA9IGFyZ3Mub3BlcmF0aW9uTmFtZSxcbiAgICAgIGZpZWxkUmVzb2x2ZXIgPSBhcmdzLmZpZWxkUmVzb2x2ZXIsXG4gICAgICB0eXBlUmVzb2x2ZXIgPSBhcmdzLnR5cGVSZXNvbHZlcjsgLy8gSWYgYXJndW1lbnRzIGFyZSBtaXNzaW5nIG9yIGluY29ycmVjdCwgdGhyb3cgYW4gZXJyb3IuXG5cbiAgYXNzZXJ0VmFsaWRFeGVjdXRpb25Bcmd1bWVudHMoc2NoZW1hLCBkb2N1bWVudCwgdmFyaWFibGVWYWx1ZXMpOyAvLyBJZiBhIHZhbGlkIGV4ZWN1dGlvbiBjb250ZXh0IGNhbm5vdCBiZSBjcmVhdGVkIGR1ZSB0byBpbmNvcnJlY3QgYXJndW1lbnRzLFxuICAvLyBhIFwiUmVzcG9uc2VcIiB3aXRoIG9ubHkgZXJyb3JzIGlzIHJldHVybmVkLlxuXG4gIHZhciBleGVDb250ZXh0ID0gYnVpbGRFeGVjdXRpb25Db250ZXh0KHNjaGVtYSwgZG9jdW1lbnQsIHJvb3RWYWx1ZSwgY29udGV4dFZhbHVlLCB2YXJpYWJsZVZhbHVlcywgb3BlcmF0aW9uTmFtZSwgZmllbGRSZXNvbHZlciwgdHlwZVJlc29sdmVyKTsgLy8gUmV0dXJuIGVhcmx5IGVycm9ycyBpZiBleGVjdXRpb24gY29udGV4dCBmYWlsZWQuXG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoZXhlQ29udGV4dCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3JzOiBleGVDb250ZXh0XG4gICAgfTtcbiAgfSAvLyBSZXR1cm4gYSBQcm9taXNlIHRoYXQgd2lsbCBldmVudHVhbGx5IHJlc29sdmUgdG8gdGhlIGRhdGEgZGVzY3JpYmVkIGJ5XG4gIC8vIFRoZSBcIlJlc3BvbnNlXCIgc2VjdGlvbiBvZiB0aGUgR3JhcGhRTCBzcGVjaWZpY2F0aW9uLlxuICAvL1xuICAvLyBJZiBlcnJvcnMgYXJlIGVuY291bnRlcmVkIHdoaWxlIGV4ZWN1dGluZyBhIEdyYXBoUUwgZmllbGQsIG9ubHkgdGhhdFxuICAvLyBmaWVsZCBhbmQgaXRzIGRlc2NlbmRhbnRzIHdpbGwgYmUgb21pdHRlZCwgYW5kIHNpYmxpbmcgZmllbGRzIHdpbGwgc3RpbGxcbiAgLy8gYmUgZXhlY3V0ZWQuIEFuIGV4ZWN1dGlvbiB3aGljaCBlbmNvdW50ZXJzIGVycm9ycyB3aWxsIHN0aWxsIHJlc3VsdCBpbiBhXG4gIC8vIHJlc29sdmVkIFByb21pc2UuXG5cblxuICB2YXIgZGF0YSA9IGV4ZWN1dGVPcGVyYXRpb24oZXhlQ29udGV4dCwgZXhlQ29udGV4dC5vcGVyYXRpb24sIHJvb3RWYWx1ZSk7XG4gIHJldHVybiBidWlsZFJlc3BvbnNlKGV4ZUNvbnRleHQsIGRhdGEpO1xufVxuLyoqXG4gKiBHaXZlbiBhIGNvbXBsZXRlZCBleGVjdXRpb24gY29udGV4dCBhbmQgZGF0YSwgYnVpbGQgdGhlIHsgZXJyb3JzLCBkYXRhIH1cbiAqIHJlc3BvbnNlIGRlZmluZWQgYnkgdGhlIFwiUmVzcG9uc2VcIiBzZWN0aW9uIG9mIHRoZSBHcmFwaFFMIHNwZWNpZmljYXRpb24uXG4gKi9cblxuXG5mdW5jdGlvbiBidWlsZFJlc3BvbnNlKGV4ZUNvbnRleHQsIGRhdGEpIHtcbiAgaWYgKGlzUHJvbWlzZShkYXRhKSkge1xuICAgIHJldHVybiBkYXRhLnRoZW4oZnVuY3Rpb24gKHJlc29sdmVkKSB7XG4gICAgICByZXR1cm4gYnVpbGRSZXNwb25zZShleGVDb250ZXh0LCByZXNvbHZlZCk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgaW5pdGlhbFJlc3VsdCA9IGV4ZUNvbnRleHQuZXJyb3JzLmxlbmd0aCA9PT0gMCA/IHtcbiAgICBkYXRhOiBkYXRhXG4gIH0gOiB7XG4gICAgZXJyb3JzOiBleGVDb250ZXh0LmVycm9ycyxcbiAgICBkYXRhOiBkYXRhXG4gIH07XG5cbiAgaWYgKGV4ZUNvbnRleHQuZGlzcGF0Y2hlci5oYXNTdWJzZXF1ZW50UGF5bG9hZHMoKSkge1xuICAgIHJldHVybiBleGVDb250ZXh0LmRpc3BhdGNoZXIuZ2V0KGluaXRpYWxSZXN1bHQpO1xuICB9XG5cbiAgcmV0dXJuIGluaXRpYWxSZXN1bHQ7XG59XG4vKipcbiAqIEVzc2VudGlhbCBhc3NlcnRpb25zIGJlZm9yZSBleGVjdXRpbmcgdG8gcHJvdmlkZSBkZXZlbG9wZXIgZmVlZGJhY2sgZm9yXG4gKiBpbXByb3BlciB1c2Ugb2YgdGhlIEdyYXBoUUwgbGlicmFyeS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRWYWxpZEV4ZWN1dGlvbkFyZ3VtZW50cyhzY2hlbWEsIGRvY3VtZW50LCByYXdWYXJpYWJsZVZhbHVlcykge1xuICBkb2N1bWVudCB8fCBkZXZBc3NlcnQoMCwgJ011c3QgcHJvdmlkZSBkb2N1bWVudC4nKTsgLy8gSWYgdGhlIHNjaGVtYSB1c2VkIGZvciBleGVjdXRpb24gaXMgaW52YWxpZCwgdGhyb3cgYW4gZXJyb3IuXG5cbiAgYXNzZXJ0VmFsaWRTY2hlbWEoc2NoZW1hKTsgLy8gVmFyaWFibGVzLCBpZiBwcm92aWRlZCwgbXVzdCBiZSBhbiBvYmplY3QuXG5cbiAgcmF3VmFyaWFibGVWYWx1ZXMgPT0gbnVsbCB8fCBpc09iamVjdExpa2UocmF3VmFyaWFibGVWYWx1ZXMpIHx8IGRldkFzc2VydCgwLCAnVmFyaWFibGVzIG11c3QgYmUgcHJvdmlkZWQgYXMgYW4gT2JqZWN0IHdoZXJlIGVhY2ggcHJvcGVydHkgaXMgYSB2YXJpYWJsZSB2YWx1ZS4gUGVyaGFwcyBsb29rIHRvIHNlZSBpZiBhbiB1bnBhcnNlZCBKU09OIHN0cmluZyB3YXMgcHJvdmlkZWQuJyk7XG59XG4vKipcbiAqIENvbnN0cnVjdHMgYSBFeGVjdXRpb25Db250ZXh0IG9iamVjdCBmcm9tIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvXG4gKiBleGVjdXRlLCB3aGljaCB3ZSB3aWxsIHBhc3MgdGhyb3VnaG91dCB0aGUgb3RoZXIgZXhlY3V0aW9uIG1ldGhvZHMuXG4gKlxuICogVGhyb3dzIGEgR3JhcGhRTEVycm9yIGlmIGEgdmFsaWQgZXhlY3V0aW9uIGNvbnRleHQgY2Fubm90IGJlIGNyZWF0ZWQuXG4gKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRXhlY3V0aW9uQ29udGV4dChzY2hlbWEsIGRvY3VtZW50LCByb290VmFsdWUsIGNvbnRleHRWYWx1ZSwgcmF3VmFyaWFibGVWYWx1ZXMsIG9wZXJhdGlvbk5hbWUsIGZpZWxkUmVzb2x2ZXIsIHR5cGVSZXNvbHZlcikge1xuICB2YXIgX2RlZmluaXRpb24kbmFtZSwgX29wZXJhdGlvbiR2YXJpYWJsZURlO1xuXG4gIHZhciBvcGVyYXRpb247XG4gIHZhciBmcmFnbWVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAodmFyIF9pMiA9IDAsIF9kb2N1bWVudCRkZWZpbml0aW9uczIgPSBkb2N1bWVudC5kZWZpbml0aW9uczsgX2kyIDwgX2RvY3VtZW50JGRlZmluaXRpb25zMi5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIGRlZmluaXRpb24gPSBfZG9jdW1lbnQkZGVmaW5pdGlvbnMyW19pMl07XG5cbiAgICBzd2l0Y2ggKGRlZmluaXRpb24ua2luZCkge1xuICAgICAgY2FzZSBLaW5kLk9QRVJBVElPTl9ERUZJTklUSU9OOlxuICAgICAgICBpZiAob3BlcmF0aW9uTmFtZSA9PSBudWxsKSB7XG4gICAgICAgICAgaWYgKG9wZXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gW25ldyBHcmFwaFFMRXJyb3IoJ011c3QgcHJvdmlkZSBvcGVyYXRpb24gbmFtZSBpZiBxdWVyeSBjb250YWlucyBtdWx0aXBsZSBvcGVyYXRpb25zLicpXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBvcGVyYXRpb24gPSBkZWZpbml0aW9uO1xuICAgICAgICB9IGVsc2UgaWYgKCgoX2RlZmluaXRpb24kbmFtZSA9IGRlZmluaXRpb24ubmFtZSkgPT09IG51bGwgfHwgX2RlZmluaXRpb24kbmFtZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmluaXRpb24kbmFtZS52YWx1ZSkgPT09IG9wZXJhdGlvbk5hbWUpIHtcbiAgICAgICAgICBvcGVyYXRpb24gPSBkZWZpbml0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgS2luZC5GUkFHTUVOVF9ERUZJTklUSU9OOlxuICAgICAgICBmcmFnbWVudHNbZGVmaW5pdGlvbi5uYW1lLnZhbHVlXSA9IGRlZmluaXRpb247XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmICghb3BlcmF0aW9uKSB7XG4gICAgaWYgKG9wZXJhdGlvbk5hbWUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFtuZXcgR3JhcGhRTEVycm9yKFwiVW5rbm93biBvcGVyYXRpb24gbmFtZWQgXFxcIlwiLmNvbmNhdChvcGVyYXRpb25OYW1lLCBcIlxcXCIuXCIpKV07XG4gICAgfVxuXG4gICAgcmV0dXJuIFtuZXcgR3JhcGhRTEVycm9yKCdNdXN0IHByb3ZpZGUgYW4gb3BlcmF0aW9uLicpXTtcbiAgfSAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwMycpXG5cblxuICB2YXIgdmFyaWFibGVEZWZpbml0aW9ucyA9IChfb3BlcmF0aW9uJHZhcmlhYmxlRGUgPSBvcGVyYXRpb24udmFyaWFibGVEZWZpbml0aW9ucykgIT09IG51bGwgJiYgX29wZXJhdGlvbiR2YXJpYWJsZURlICE9PSB2b2lkIDAgPyBfb3BlcmF0aW9uJHZhcmlhYmxlRGUgOiBbXTtcbiAgdmFyIGNvZXJjZWRWYXJpYWJsZVZhbHVlcyA9IGdldFZhcmlhYmxlVmFsdWVzKHNjaGVtYSwgdmFyaWFibGVEZWZpbml0aW9ucywgcmF3VmFyaWFibGVWYWx1ZXMgIT09IG51bGwgJiYgcmF3VmFyaWFibGVWYWx1ZXMgIT09IHZvaWQgMCA/IHJhd1ZhcmlhYmxlVmFsdWVzIDoge30sIHtcbiAgICBtYXhFcnJvcnM6IDUwXG4gIH0pO1xuXG4gIGlmIChjb2VyY2VkVmFyaWFibGVWYWx1ZXMuZXJyb3JzKSB7XG4gICAgcmV0dXJuIGNvZXJjZWRWYXJpYWJsZVZhbHVlcy5lcnJvcnM7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNjaGVtYTogc2NoZW1hLFxuICAgIGZyYWdtZW50czogZnJhZ21lbnRzLFxuICAgIHJvb3RWYWx1ZTogcm9vdFZhbHVlLFxuICAgIGNvbnRleHRWYWx1ZTogY29udGV4dFZhbHVlLFxuICAgIG9wZXJhdGlvbjogb3BlcmF0aW9uLFxuICAgIHZhcmlhYmxlVmFsdWVzOiBjb2VyY2VkVmFyaWFibGVWYWx1ZXMuY29lcmNlZCxcbiAgICBmaWVsZFJlc29sdmVyOiBmaWVsZFJlc29sdmVyICE9PSBudWxsICYmIGZpZWxkUmVzb2x2ZXIgIT09IHZvaWQgMCA/IGZpZWxkUmVzb2x2ZXIgOiBkZWZhdWx0RmllbGRSZXNvbHZlcixcbiAgICB0eXBlUmVzb2x2ZXI6IHR5cGVSZXNvbHZlciAhPT0gbnVsbCAmJiB0eXBlUmVzb2x2ZXIgIT09IHZvaWQgMCA/IHR5cGVSZXNvbHZlciA6IGRlZmF1bHRUeXBlUmVzb2x2ZXIsXG4gICAgZGlzcGF0Y2hlcjogbmV3IERpc3BhdGNoZXIoKSxcbiAgICBlcnJvcnM6IFtdXG4gIH07XG59XG4vKipcbiAqIEltcGxlbWVudHMgdGhlIFwiRXZhbHVhdGluZyBvcGVyYXRpb25zXCIgc2VjdGlvbiBvZiB0aGUgc3BlYy5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0ZU9wZXJhdGlvbihleGVDb250ZXh0LCBvcGVyYXRpb24sIHJvb3RWYWx1ZSkge1xuICB2YXIgdHlwZSA9IGdldE9wZXJhdGlvblJvb3RUeXBlKGV4ZUNvbnRleHQuc2NoZW1hLCBvcGVyYXRpb24pO1xuXG4gIHZhciBfY29sbGVjdEZpZWxkcyA9IGNvbGxlY3RGaWVsZHMoZXhlQ29udGV4dCwgdHlwZSwgb3BlcmF0aW9uLnNlbGVjdGlvblNldCwgT2JqZWN0LmNyZWF0ZShudWxsKSwgW10sIE9iamVjdC5jcmVhdGUobnVsbCkpLFxuICAgICAgZmllbGRzID0gX2NvbGxlY3RGaWVsZHMuZmllbGRzLFxuICAgICAgcGF0Y2hlcyA9IF9jb2xsZWN0RmllbGRzLnBhdGNoZXM7XG5cbiAgdmFyIHBhdGggPSB1bmRlZmluZWQ7IC8vIEVycm9ycyBmcm9tIHN1Yi1maWVsZHMgb2YgYSBOb25OdWxsIHR5cGUgbWF5IHByb3BhZ2F0ZSB0byB0aGUgdG9wIGxldmVsLFxuICAvLyBhdCB3aGljaCBwb2ludCB3ZSBzdGlsbCBsb2cgdGhlIGVycm9yIGFuZCBudWxsIHRoZSBwYXJlbnQgZmllbGQsIHdoaWNoXG4gIC8vIGluIHRoaXMgY2FzZSBpcyB0aGUgZW50aXJlIHJlc3BvbnNlLlxuXG4gIHRyeSB7XG4gICAgdmFyIHJlc3VsdDtcblxuICAgIGlmIChvcGVyYXRpb24ub3BlcmF0aW9uID09PSAnbXV0YXRpb24nKSB7XG4gICAgICByZXN1bHQgPSBleGVjdXRlRmllbGRzU2VyaWFsbHkoZXhlQ29udGV4dCwgdHlwZSwgcm9vdFZhbHVlLCBwYXRoLCBmaWVsZHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBleGVjdXRlRmllbGRzKGV4ZUNvbnRleHQsIHR5cGUsIHJvb3RWYWx1ZSwgcGF0aCwgZmllbGRzLCBleGVDb250ZXh0LmVycm9ycyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2k0ID0gMDsgX2k0IDwgcGF0Y2hlcy5sZW5ndGg7IF9pNCsrKSB7XG4gICAgICB2YXIgcGF0Y2ggPSBwYXRjaGVzW19pNF07XG4gICAgICB2YXIgbGFiZWwgPSBwYXRjaC5sYWJlbCxcbiAgICAgICAgICBwYXRjaEZpZWxkcyA9IHBhdGNoLmZpZWxkcztcbiAgICAgIHZhciBlcnJvcnMgPSBbXTtcbiAgICAgIGV4ZUNvbnRleHQuZGlzcGF0Y2hlci5hZGRGaWVsZHMobGFiZWwsIHBhdGgsIGV4ZWN1dGVGaWVsZHMoZXhlQ29udGV4dCwgdHlwZSwgcm9vdFZhbHVlLCBwYXRoLCBwYXRjaEZpZWxkcywgZXJyb3JzKSwgZXJyb3JzKTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcm9taXNlKHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiByZXN1bHQudGhlbih1bmRlZmluZWQsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBleGVDb250ZXh0LmVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZXhlQ29udGV4dC5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbi8qKlxuICogSW1wbGVtZW50cyB0aGUgXCJFdmFsdWF0aW5nIHNlbGVjdGlvbiBzZXRzXCIgc2VjdGlvbiBvZiB0aGUgc3BlY1xuICogZm9yIFwid3JpdGVcIiBtb2RlLlxuICovXG5cbmZ1bmN0aW9uIGV4ZWN1dGVGaWVsZHNTZXJpYWxseShleGVDb250ZXh0LCBwYXJlbnRUeXBlLCBzb3VyY2VWYWx1ZSwgcGF0aCwgZmllbGRzKSB7XG4gIHJldHVybiBwcm9taXNlUmVkdWNlKE9iamVjdC5rZXlzKGZpZWxkcyksIGZ1bmN0aW9uIChyZXN1bHRzLCByZXNwb25zZU5hbWUpIHtcbiAgICB2YXIgZmllbGROb2RlcyA9IGZpZWxkc1tyZXNwb25zZU5hbWVdO1xuICAgIHZhciBmaWVsZFBhdGggPSBhZGRQYXRoKHBhdGgsIHJlc3BvbnNlTmFtZSwgcGFyZW50VHlwZS5uYW1lKTtcbiAgICB2YXIgcmVzdWx0ID0gcmVzb2x2ZUZpZWxkKGV4ZUNvbnRleHQsIHBhcmVudFR5cGUsIHNvdXJjZVZhbHVlLCBmaWVsZE5vZGVzLCBmaWVsZFBhdGgsIGV4ZUNvbnRleHQuZXJyb3JzKTtcblxuICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuXG4gICAgaWYgKGlzUHJvbWlzZShyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gcmVzdWx0LnRoZW4oZnVuY3Rpb24gKHJlc29sdmVkUmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdHNbcmVzcG9uc2VOYW1lXSA9IHJlc29sdmVkUmVzdWx0O1xuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlc3VsdHNbcmVzcG9uc2VOYW1lXSA9IHJlc3VsdDtcbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfSwgT2JqZWN0LmNyZWF0ZShudWxsKSk7XG59XG4vKipcbiAqIEltcGxlbWVudHMgdGhlIFwiRXZhbHVhdGluZyBzZWxlY3Rpb24gc2V0c1wiIHNlY3Rpb24gb2YgdGhlIHNwZWNcbiAqIGZvciBcInJlYWRcIiBtb2RlLlxuICovXG5cblxuZnVuY3Rpb24gZXhlY3V0ZUZpZWxkcyhleGVDb250ZXh0LCBwYXJlbnRUeXBlLCBzb3VyY2VWYWx1ZSwgcGF0aCwgZmllbGRzLCBlcnJvcnMpIHtcbiAgdmFyIHJlc3VsdHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2YXIgY29udGFpbnNQcm9taXNlID0gZmFsc2U7XG5cbiAgZm9yICh2YXIgX2k2ID0gMCwgX09iamVjdCRrZXlzMiA9IE9iamVjdC5rZXlzKGZpZWxkcyk7IF9pNiA8IF9PYmplY3Qka2V5czIubGVuZ3RoOyBfaTYrKykge1xuICAgIHZhciByZXNwb25zZU5hbWUgPSBfT2JqZWN0JGtleXMyW19pNl07XG4gICAgdmFyIGZpZWxkTm9kZXMgPSBmaWVsZHNbcmVzcG9uc2VOYW1lXTtcbiAgICB2YXIgZmllbGRQYXRoID0gYWRkUGF0aChwYXRoLCByZXNwb25zZU5hbWUsIHBhcmVudFR5cGUubmFtZSk7XG4gICAgdmFyIHJlc3VsdCA9IHJlc29sdmVGaWVsZChleGVDb250ZXh0LCBwYXJlbnRUeXBlLCBzb3VyY2VWYWx1ZSwgZmllbGROb2RlcywgZmllbGRQYXRoLCBlcnJvcnMpO1xuXG4gICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHRzW3Jlc3BvbnNlTmFtZV0gPSByZXN1bHQ7XG5cbiAgICAgIGlmIChpc1Byb21pc2UocmVzdWx0KSkge1xuICAgICAgICBjb250YWluc1Byb21pc2UgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBJZiB0aGVyZSBhcmUgbm8gcHJvbWlzZXMsIHdlIGNhbiBqdXN0IHJldHVybiB0aGUgb2JqZWN0XG5cblxuICBpZiAoIWNvbnRhaW5zUHJvbWlzZSkge1xuICAgIHJldHVybiByZXN1bHRzO1xuICB9IC8vIE90aGVyd2lzZSwgcmVzdWx0cyBpcyBhIG1hcCBmcm9tIGZpZWxkIG5hbWUgdG8gdGhlIHJlc3VsdCBvZiByZXNvbHZpbmcgdGhhdFxuICAvLyBmaWVsZCwgd2hpY2ggaXMgcG9zc2libHkgYSBwcm9taXNlLiBSZXR1cm4gYSBwcm9taXNlIHRoYXQgd2lsbCByZXR1cm4gdGhpc1xuICAvLyBzYW1lIG1hcCwgYnV0IHdpdGggYW55IHByb21pc2VzIHJlcGxhY2VkIHdpdGggdGhlIHZhbHVlcyB0aGV5IHJlc29sdmVkIHRvLlxuXG5cbiAgcmV0dXJuIHByb21pc2VGb3JPYmplY3QocmVzdWx0cyk7XG59XG4vKipcbiAqIEdpdmVuIGEgc2VsZWN0aW9uU2V0LCBhZGRzIGFsbCBvZiB0aGUgZmllbGRzIGluIHRoYXQgc2VsZWN0aW9uIHRvXG4gKiB0aGUgcGFzc2VkIGluIG1hcCBvZiBmaWVsZHMsIGFuZCByZXR1cm5zIGl0IGF0IHRoZSBlbmQuXG4gKlxuICogQ29sbGVjdEZpZWxkcyByZXF1aXJlcyB0aGUgXCJydW50aW1lIHR5cGVcIiBvZiBhbiBvYmplY3QuIEZvciBhIGZpZWxkIHdoaWNoXG4gKiByZXR1cm5zIGFuIEludGVyZmFjZSBvciBVbmlvbiB0eXBlLCB0aGUgXCJydW50aW1lIHR5cGVcIiB3aWxsIGJlIHRoZSBhY3R1YWxcbiAqIE9iamVjdCB0eXBlIHJldHVybmVkIGJ5IHRoYXQgZmllbGQuXG4gKlxuICogQGludGVybmFsXG4gKi9cblxuXG5leHBvcnQgZnVuY3Rpb24gY29sbGVjdEZpZWxkcyhleGVDb250ZXh0LCBydW50aW1lVHlwZSwgc2VsZWN0aW9uU2V0LCBmaWVsZHMsIHBhdGNoZXMsIHZpc2l0ZWRGcmFnbWVudE5hbWVzKSB7XG4gIGZvciAodmFyIF9pOCA9IDAsIF9zZWxlY3Rpb25TZXQkc2VsZWN0aTIgPSBzZWxlY3Rpb25TZXQuc2VsZWN0aW9uczsgX2k4IDwgX3NlbGVjdGlvblNldCRzZWxlY3RpMi5sZW5ndGg7IF9pOCsrKSB7XG4gICAgdmFyIHNlbGVjdGlvbiA9IF9zZWxlY3Rpb25TZXQkc2VsZWN0aTJbX2k4XTtcblxuICAgIHN3aXRjaCAoc2VsZWN0aW9uLmtpbmQpIHtcbiAgICAgIGNhc2UgS2luZC5GSUVMRDpcbiAgICAgICAge1xuICAgICAgICAgIGlmICghc2hvdWxkSW5jbHVkZU5vZGUoZXhlQ29udGV4dCwgc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIG5hbWUgPSBnZXRGaWVsZEVudHJ5S2V5KHNlbGVjdGlvbik7XG5cbiAgICAgICAgICBpZiAoIWZpZWxkc1tuYW1lXSkge1xuICAgICAgICAgICAgZmllbGRzW25hbWVdID0gW107XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmllbGRzW25hbWVdLnB1c2goc2VsZWN0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuSU5MSU5FX0ZSQUdNRU5UOlxuICAgICAgICB7XG4gICAgICAgICAgaWYgKCFzaG91bGRJbmNsdWRlTm9kZShleGVDb250ZXh0LCBzZWxlY3Rpb24pIHx8ICFkb2VzRnJhZ21lbnRDb25kaXRpb25NYXRjaChleGVDb250ZXh0LCBzZWxlY3Rpb24sIHJ1bnRpbWVUeXBlKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGRlZmVyID0gZ2V0RGVmZXJWYWx1ZXMoZXhlQ29udGV4dCwgc2VsZWN0aW9uKTtcblxuICAgICAgICAgIGlmIChkZWZlcikge1xuICAgICAgICAgICAgdmFyIF9jb2xsZWN0RmllbGRzMiA9IGNvbGxlY3RGaWVsZHMoZXhlQ29udGV4dCwgcnVudGltZVR5cGUsIHNlbGVjdGlvbi5zZWxlY3Rpb25TZXQsIE9iamVjdC5jcmVhdGUobnVsbCksIHBhdGNoZXMsIHZpc2l0ZWRGcmFnbWVudE5hbWVzKSxcbiAgICAgICAgICAgICAgICBwYXRjaEZpZWxkcyA9IF9jb2xsZWN0RmllbGRzMi5maWVsZHM7XG5cbiAgICAgICAgICAgIHBhdGNoZXMucHVzaCh7XG4gICAgICAgICAgICAgIGxhYmVsOiBkZWZlci5sYWJlbCxcbiAgICAgICAgICAgICAgZmllbGRzOiBwYXRjaEZpZWxkc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbGxlY3RGaWVsZHMoZXhlQ29udGV4dCwgcnVudGltZVR5cGUsIHNlbGVjdGlvbi5zZWxlY3Rpb25TZXQsIGZpZWxkcywgcGF0Y2hlcywgdmlzaXRlZEZyYWdtZW50TmFtZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgS2luZC5GUkFHTUVOVF9TUFJFQUQ6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgZnJhZ05hbWUgPSBzZWxlY3Rpb24ubmFtZS52YWx1ZTtcblxuICAgICAgICAgIGlmICghc2hvdWxkSW5jbHVkZU5vZGUoZXhlQ29udGV4dCwgc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIF9kZWZlciA9IGdldERlZmVyVmFsdWVzKGV4ZUNvbnRleHQsIHNlbGVjdGlvbik7XG5cbiAgICAgICAgICBpZiAodmlzaXRlZEZyYWdtZW50TmFtZXNbZnJhZ05hbWVdICYmIC8vIENhbm5vdCBjb250aW51ZSBpbiB0aGlzIGNhc2UgYmVjYXVzZSBmaWVsZHMgbXVzdCBiZSByZWNvbGxlY3RlZCBmb3IgcGF0Y2hcbiAgICAgICAgICAhX2RlZmVyKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2aXNpdGVkRnJhZ21lbnROYW1lc1tmcmFnTmFtZV0gPSB0cnVlO1xuICAgICAgICAgIHZhciBmcmFnbWVudCA9IGV4ZUNvbnRleHQuZnJhZ21lbnRzW2ZyYWdOYW1lXTtcblxuICAgICAgICAgIGlmICghZnJhZ21lbnQgfHwgIWRvZXNGcmFnbWVudENvbmRpdGlvbk1hdGNoKGV4ZUNvbnRleHQsIGZyYWdtZW50LCBydW50aW1lVHlwZSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChfZGVmZXIpIHtcbiAgICAgICAgICAgIHZhciBfY29sbGVjdEZpZWxkczMgPSBjb2xsZWN0RmllbGRzKGV4ZUNvbnRleHQsIHJ1bnRpbWVUeXBlLCBmcmFnbWVudC5zZWxlY3Rpb25TZXQsIE9iamVjdC5jcmVhdGUobnVsbCksIHBhdGNoZXMsIHZpc2l0ZWRGcmFnbWVudE5hbWVzKSxcbiAgICAgICAgICAgICAgICBfcGF0Y2hGaWVsZHMgPSBfY29sbGVjdEZpZWxkczMuZmllbGRzO1xuXG4gICAgICAgICAgICBwYXRjaGVzLnB1c2goe1xuICAgICAgICAgICAgICBsYWJlbDogX2RlZmVyLmxhYmVsLFxuICAgICAgICAgICAgICBmaWVsZHM6IF9wYXRjaEZpZWxkc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbGxlY3RGaWVsZHMoZXhlQ29udGV4dCwgcnVudGltZVR5cGUsIGZyYWdtZW50LnNlbGVjdGlvblNldCwgZmllbGRzLCBwYXRjaGVzLCB2aXNpdGVkRnJhZ21lbnROYW1lcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZpZWxkczogZmllbGRzLFxuICAgIHBhdGNoZXM6IHBhdGNoZXNcbiAgfTtcbn1cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIGZpZWxkIHNob3VsZCBiZSBpbmNsdWRlZCBiYXNlZCBvbiB0aGUgQGluY2x1ZGUgYW5kIEBza2lwXG4gKiBkaXJlY3RpdmVzLCB3aGVyZSBAc2tpcCBoYXMgaGlnaGVyIHByZWNlZGVuY2UgdGhhbiBAaW5jbHVkZS5cbiAqL1xuXG5mdW5jdGlvbiBzaG91bGRJbmNsdWRlTm9kZShleGVDb250ZXh0LCBub2RlKSB7XG4gIHZhciBza2lwID0gZ2V0RGlyZWN0aXZlVmFsdWVzKEdyYXBoUUxTa2lwRGlyZWN0aXZlLCBub2RlLCBleGVDb250ZXh0LnZhcmlhYmxlVmFsdWVzKTtcblxuICBpZiAoKHNraXAgPT09IG51bGwgfHwgc2tpcCA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2tpcC5pZikgPT09IHRydWUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgaW5jbHVkZSA9IGdldERpcmVjdGl2ZVZhbHVlcyhHcmFwaFFMSW5jbHVkZURpcmVjdGl2ZSwgbm9kZSwgZXhlQ29udGV4dC52YXJpYWJsZVZhbHVlcyk7XG5cbiAgaWYgKChpbmNsdWRlID09PSBudWxsIHx8IGluY2x1ZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGluY2x1ZGUuaWYpID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuLyoqXG4gKiBSZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBAZGVmZXIgYXJndW1lbnRzIGlmIGEgZmllbGQgc2hvdWxkIGJlXG4gKiBkZWZlcnJlZCBiYXNlZCBvbiB0aGUgZXhwZXJpbWVudGFsIGZsYWcsIGRlZmVyIGRpcmVjdGl2ZSBwcmVzZW50IGFuZFxuICogbm90IGRpc2FibGVkIGJ5IHRoZSBcImlmXCIgYXJndW1lbnQuXG4gKi9cblxuXG5mdW5jdGlvbiBnZXREZWZlclZhbHVlcyhleGVDb250ZXh0LCBub2RlKSB7XG4gIHZhciBkZWZlciA9IGdldERpcmVjdGl2ZVZhbHVlcyhHcmFwaFFMRGVmZXJEaXJlY3RpdmUsIG5vZGUsIGV4ZUNvbnRleHQudmFyaWFibGVWYWx1ZXMpO1xuXG4gIGlmICghZGVmZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoZGVmZXIuaWYgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsYWJlbDogdHlwZW9mIGRlZmVyLmxhYmVsID09PSAnc3RyaW5nJyA/IGRlZmVyLmxhYmVsIDogdW5kZWZpbmVkXG4gIH07XG59XG4vKipcbiAqIFJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIEBzdHJlYW0gYXJndW1lbnRzIGlmIGEgZmllbGQgc2hvdWxkIGJlXG4gKiBzdHJlYW1lZCBiYXNlZCBvbiB0aGUgZXhwZXJpbWVudGFsIGZsYWcsIHN0cmVhbSBkaXJlY3RpdmUgcHJlc2VudCBhbmRcbiAqIG5vdCBkaXNhYmxlZCBieSB0aGUgXCJpZlwiIGFyZ3VtZW50LlxuICovXG5cblxuZnVuY3Rpb24gZ2V0U3RyZWFtVmFsdWVzKGV4ZUNvbnRleHQsIGZpZWxkTm9kZXMpIHtcbiAgLy8gdmFsaWRhdGlvbiBvbmx5IGFsbG93cyBlcXVpdmFsZW50IHN0cmVhbXMgb24gbXVsdGlwbGUgZmllbGRzLCBzbyBpdCBpc1xuICAvLyBzYWZlIHRvIG9ubHkgY2hlY2sgdGhlIGZpcnN0IGZpZWxkTm9kZSBmb3IgdGhlIHN0cmVhbSBkaXJlY3RpdmVcbiAgdmFyIHN0cmVhbSA9IGdldERpcmVjdGl2ZVZhbHVlcyhHcmFwaFFMU3RyZWFtRGlyZWN0aXZlLCBmaWVsZE5vZGVzWzBdLCBleGVDb250ZXh0LnZhcmlhYmxlVmFsdWVzKTtcblxuICBpZiAoIXN0cmVhbSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChzdHJlYW0uaWYgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBpbml0aWFsQ291bnQ6IC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChpbml0aWFsQ291bnQgaXMgcmVxdWlyZWQgbnVtYmVyIGFyZ3VtZW50KVxuICAgIHR5cGVvZiBzdHJlYW0uaW5pdGlhbENvdW50ID09PSAnbnVtYmVyJyA/IHN0cmVhbS5pbml0aWFsQ291bnQgOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHR5cGVvZiBzdHJlYW0ubGFiZWwgPT09ICdzdHJpbmcnID8gc3RyZWFtLmxhYmVsIDogdW5kZWZpbmVkXG4gIH07XG59XG4vKipcbiAqIERldGVybWluZXMgaWYgYSBmcmFnbWVudCBpcyBhcHBsaWNhYmxlIHRvIHRoZSBnaXZlbiB0eXBlLlxuICovXG5cblxuZnVuY3Rpb24gZG9lc0ZyYWdtZW50Q29uZGl0aW9uTWF0Y2goZXhlQ29udGV4dCwgZnJhZ21lbnQsIHR5cGUpIHtcbiAgdmFyIHR5cGVDb25kaXRpb25Ob2RlID0gZnJhZ21lbnQudHlwZUNvbmRpdGlvbjtcblxuICBpZiAoIXR5cGVDb25kaXRpb25Ob2RlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YXIgY29uZGl0aW9uYWxUeXBlID0gdHlwZUZyb21BU1QoZXhlQ29udGV4dC5zY2hlbWEsIHR5cGVDb25kaXRpb25Ob2RlKTtcblxuICBpZiAoY29uZGl0aW9uYWxUeXBlID09PSB0eXBlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoaXNBYnN0cmFjdFR5cGUoY29uZGl0aW9uYWxUeXBlKSkge1xuICAgIHJldHVybiBleGVDb250ZXh0LnNjaGVtYS5pc1N1YlR5cGUoY29uZGl0aW9uYWxUeXBlLCB0eXBlKTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbi8qKlxuICogSW1wbGVtZW50cyB0aGUgbG9naWMgdG8gY29tcHV0ZSB0aGUga2V5IG9mIGEgZ2l2ZW4gZmllbGQncyBlbnRyeVxuICovXG5cblxuZnVuY3Rpb24gZ2V0RmllbGRFbnRyeUtleShub2RlKSB7XG4gIHJldHVybiBub2RlLmFsaWFzID8gbm9kZS5hbGlhcy52YWx1ZSA6IG5vZGUubmFtZS52YWx1ZTtcbn1cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGZpZWxkIG9uIHRoZSBnaXZlbiBzb3VyY2Ugb2JqZWN0LiBJbiBwYXJ0aWN1bGFyLCB0aGlzXG4gKiBmaWd1cmVzIG91dCB0aGUgdmFsdWUgdGhhdCB0aGUgZmllbGQgcmV0dXJucyBieSBjYWxsaW5nIGl0cyByZXNvbHZlIGZ1bmN0aW9uLFxuICogdGhlbiBjYWxscyBjb21wbGV0ZVZhbHVlIHRvIGNvbXBsZXRlIHByb21pc2VzLCBzZXJpYWxpemUgc2NhbGFycywgb3IgZXhlY3V0ZVxuICogdGhlIHN1Yi1zZWxlY3Rpb24tc2V0IGZvciBvYmplY3RzLlxuICovXG5cblxuZnVuY3Rpb24gcmVzb2x2ZUZpZWxkKGV4ZUNvbnRleHQsIHBhcmVudFR5cGUsIHNvdXJjZSwgZmllbGROb2RlcywgcGF0aCwgZXJyb3JzKSB7XG4gIHZhciBfZmllbGREZWYkcmVzb2x2ZTtcblxuICB2YXIgZmllbGROb2RlID0gZmllbGROb2Rlc1swXTtcbiAgdmFyIGZpZWxkTmFtZSA9IGZpZWxkTm9kZS5uYW1lLnZhbHVlO1xuICB2YXIgZmllbGREZWYgPSBnZXRGaWVsZERlZihleGVDb250ZXh0LnNjaGVtYSwgcGFyZW50VHlwZSwgZmllbGROYW1lKTtcblxuICBpZiAoIWZpZWxkRGVmKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHJldHVyblR5cGUgPSBmaWVsZERlZi50eXBlO1xuICB2YXIgcmVzb2x2ZUZuID0gKF9maWVsZERlZiRyZXNvbHZlID0gZmllbGREZWYucmVzb2x2ZSkgIT09IG51bGwgJiYgX2ZpZWxkRGVmJHJlc29sdmUgIT09IHZvaWQgMCA/IF9maWVsZERlZiRyZXNvbHZlIDogZXhlQ29udGV4dC5maWVsZFJlc29sdmVyO1xuICB2YXIgaW5mbyA9IGJ1aWxkUmVzb2x2ZUluZm8oZXhlQ29udGV4dCwgZmllbGREZWYsIGZpZWxkTm9kZXMsIHBhcmVudFR5cGUsIHBhdGgpOyAvLyBHZXQgdGhlIHJlc29sdmUgZnVuY3Rpb24sIHJlZ2FyZGxlc3Mgb2YgaWYgaXRzIHJlc3VsdCBpcyBub3JtYWwgb3IgYWJydXB0IChlcnJvcikuXG5cbiAgdHJ5IHtcbiAgICAvLyBCdWlsZCBhIEpTIG9iamVjdCBvZiBhcmd1bWVudHMgZnJvbSB0aGUgZmllbGQuYXJndW1lbnRzIEFTVCwgdXNpbmcgdGhlXG4gICAgLy8gdmFyaWFibGVzIHNjb3BlIHRvIGZ1bGZpbGwgYW55IHZhcmlhYmxlIHJlZmVyZW5jZXMuXG4gICAgLy8gVE9ETzogZmluZCBhIHdheSB0byBtZW1vaXplLCBpbiBjYXNlIHRoaXMgZmllbGQgaXMgd2l0aGluIGEgTGlzdCB0eXBlLlxuICAgIHZhciBhcmdzID0gZ2V0QXJndW1lbnRWYWx1ZXMoZmllbGREZWYsIGZpZWxkTm9kZXNbMF0sIGV4ZUNvbnRleHQudmFyaWFibGVWYWx1ZXMpOyAvLyBUaGUgcmVzb2x2ZSBmdW5jdGlvbidzIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlzIGEgY29udGV4dCB2YWx1ZSB0aGF0XG4gICAgLy8gaXMgcHJvdmlkZWQgdG8gZXZlcnkgcmVzb2x2ZSBmdW5jdGlvbiB3aXRoaW4gYW4gZXhlY3V0aW9uLiBJdCBpcyBjb21tb25seVxuICAgIC8vIHVzZWQgdG8gcmVwcmVzZW50IGFuIGF1dGhlbnRpY2F0ZWQgdXNlciwgb3IgcmVxdWVzdC1zcGVjaWZpYyBjYWNoZXMuXG5cbiAgICB2YXIgX2NvbnRleHRWYWx1ZSA9IGV4ZUNvbnRleHQuY29udGV4dFZhbHVlO1xuICAgIHZhciByZXN1bHQgPSByZXNvbHZlRm4oc291cmNlLCBhcmdzLCBfY29udGV4dFZhbHVlLCBpbmZvKTtcbiAgICB2YXIgY29tcGxldGVkO1xuXG4gICAgaWYgKGlzUHJvbWlzZShyZXN1bHQpKSB7XG4gICAgICBjb21wbGV0ZWQgPSByZXN1bHQudGhlbihmdW5jdGlvbiAocmVzb2x2ZWQpIHtcbiAgICAgICAgcmV0dXJuIGNvbXBsZXRlVmFsdWUoZXhlQ29udGV4dCwgcmV0dXJuVHlwZSwgZmllbGROb2RlcywgaW5mbywgcGF0aCwgcmVzb2x2ZWQsIGVycm9ycyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcGxldGVkID0gY29tcGxldGVWYWx1ZShleGVDb250ZXh0LCByZXR1cm5UeXBlLCBmaWVsZE5vZGVzLCBpbmZvLCBwYXRoLCByZXN1bHQsIGVycm9ycyk7XG4gICAgfVxuXG4gICAgaWYgKGlzUHJvbWlzZShjb21wbGV0ZWQpKSB7XG4gICAgICAvLyBOb3RlOiB3ZSBkb24ndCByZWx5IG9uIGEgYGNhdGNoYCBtZXRob2QsIGJ1dCB3ZSBkbyBleHBlY3QgXCJ0aGVuYWJsZVwiXG4gICAgICAvLyB0byB0YWtlIGEgc2Vjb25kIGNhbGxiYWNrIGZvciB0aGUgZXJyb3IgY2FzZS5cbiAgICAgIHJldHVybiBjb21wbGV0ZWQudGhlbih1bmRlZmluZWQsIGZ1bmN0aW9uIChyYXdFcnJvcikge1xuICAgICAgICB2YXIgZXJyb3IgPSBsb2NhdGVkRXJyb3IocmF3RXJyb3IsIGZpZWxkTm9kZXMsIHBhdGhUb0FycmF5KHBhdGgpKTtcbiAgICAgICAgcmV0dXJuIGhhbmRsZUZpZWxkRXJyb3IoZXJyb3IsIHJldHVyblR5cGUsIGVycm9ycyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGxldGVkO1xuICB9IGNhdGNoIChyYXdFcnJvcikge1xuICAgIHZhciBlcnJvciA9IGxvY2F0ZWRFcnJvcihyYXdFcnJvciwgZmllbGROb2RlcywgcGF0aFRvQXJyYXkocGF0aCkpO1xuICAgIHJldHVybiBoYW5kbGVGaWVsZEVycm9yKGVycm9yLCByZXR1cm5UeXBlLCBlcnJvcnMpO1xuICB9XG59XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUmVzb2x2ZUluZm8oZXhlQ29udGV4dCwgZmllbGREZWYsIGZpZWxkTm9kZXMsIHBhcmVudFR5cGUsIHBhdGgpIHtcbiAgLy8gVGhlIHJlc29sdmUgZnVuY3Rpb24ncyBvcHRpb25hbCBmb3VydGggYXJndW1lbnQgaXMgYSBjb2xsZWN0aW9uIG9mXG4gIC8vIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBzdGF0ZS5cbiAgcmV0dXJuIHtcbiAgICBmaWVsZE5hbWU6IGZpZWxkRGVmLm5hbWUsXG4gICAgZmllbGROb2RlczogZmllbGROb2RlcyxcbiAgICByZXR1cm5UeXBlOiBmaWVsZERlZi50eXBlLFxuICAgIHBhcmVudFR5cGU6IHBhcmVudFR5cGUsXG4gICAgcGF0aDogcGF0aCxcbiAgICBzY2hlbWE6IGV4ZUNvbnRleHQuc2NoZW1hLFxuICAgIGZyYWdtZW50czogZXhlQ29udGV4dC5mcmFnbWVudHMsXG4gICAgcm9vdFZhbHVlOiBleGVDb250ZXh0LnJvb3RWYWx1ZSxcbiAgICBvcGVyYXRpb246IGV4ZUNvbnRleHQub3BlcmF0aW9uLFxuICAgIHZhcmlhYmxlVmFsdWVzOiBleGVDb250ZXh0LnZhcmlhYmxlVmFsdWVzXG4gIH07XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUZpZWxkRXJyb3IoZXJyb3IsIHJldHVyblR5cGUsIGVycm9ycykge1xuICAvLyBJZiB0aGUgZmllbGQgdHlwZSBpcyBub24tbnVsbGFibGUsIHRoZW4gaXQgaXMgcmVzb2x2ZWQgd2l0aG91dCBhbnlcbiAgLy8gcHJvdGVjdGlvbiBmcm9tIGVycm9ycywgaG93ZXZlciBpdCBzdGlsbCBwcm9wZXJseSBsb2NhdGVzIHRoZSBlcnJvci5cbiAgaWYgKGlzTm9uTnVsbFR5cGUocmV0dXJuVHlwZSkpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfSAvLyBPdGhlcndpc2UsIGVycm9yIHByb3RlY3Rpb24gaXMgYXBwbGllZCwgbG9nZ2luZyB0aGUgZXJyb3IgYW5kIHJlc29sdmluZ1xuICAvLyBhIG51bGwgdmFsdWUgZm9yIHRoaXMgZmllbGQgaWYgb25lIGlzIGVuY291bnRlcmVkLlxuXG5cbiAgZXJyb3JzLnB1c2goZXJyb3IpO1xuICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuICogSW1wbGVtZW50cyB0aGUgaW5zdHJ1Y3Rpb25zIGZvciBjb21wbGV0ZVZhbHVlIGFzIGRlZmluZWQgaW4gdGhlXG4gKiBcIkZpZWxkIGVudHJpZXNcIiBzZWN0aW9uIG9mIHRoZSBzcGVjLlxuICpcbiAqIElmIHRoZSBmaWVsZCB0eXBlIGlzIE5vbi1OdWxsLCB0aGVuIHRoaXMgcmVjdXJzaXZlbHkgY29tcGxldGVzIHRoZSB2YWx1ZVxuICogZm9yIHRoZSBpbm5lciB0eXBlLiBJdCB0aHJvd3MgYSBmaWVsZCBlcnJvciBpZiB0aGF0IGNvbXBsZXRpb24gcmV0dXJucyBudWxsLFxuICogYXMgcGVyIHRoZSBcIk51bGxhYmlsaXR5XCIgc2VjdGlvbiBvZiB0aGUgc3BlYy5cbiAqXG4gKiBJZiB0aGUgZmllbGQgdHlwZSBpcyBhIExpc3QsIHRoZW4gdGhpcyByZWN1cnNpdmVseSBjb21wbGV0ZXMgdGhlIHZhbHVlXG4gKiBmb3IgdGhlIGlubmVyIHR5cGUgb24gZWFjaCBpdGVtIGluIHRoZSBsaXN0LlxuICpcbiAqIElmIHRoZSBmaWVsZCB0eXBlIGlzIGEgU2NhbGFyIG9yIEVudW0sIGVuc3VyZXMgdGhlIGNvbXBsZXRlZCB2YWx1ZSBpcyBhIGxlZ2FsXG4gKiB2YWx1ZSBvZiB0aGUgdHlwZSBieSBjYWxsaW5nIHRoZSBgc2VyaWFsaXplYCBtZXRob2Qgb2YgR3JhcGhRTCB0eXBlXG4gKiBkZWZpbml0aW9uLlxuICpcbiAqIElmIHRoZSBmaWVsZCBpcyBhbiBhYnN0cmFjdCB0eXBlLCBkZXRlcm1pbmUgdGhlIHJ1bnRpbWUgdHlwZSBvZiB0aGUgdmFsdWVcbiAqIGFuZCB0aGVuIGNvbXBsZXRlIGJhc2VkIG9uIHRoYXQgdHlwZVxuICpcbiAqIE90aGVyd2lzZSwgdGhlIGZpZWxkIHR5cGUgZXhwZWN0cyBhIHN1Yi1zZWxlY3Rpb24gc2V0LCBhbmQgd2lsbCBjb21wbGV0ZSB0aGVcbiAqIHZhbHVlIGJ5IGV2YWx1YXRpbmcgYWxsIHN1Yi1zZWxlY3Rpb25zLlxuICovXG5cblxuZnVuY3Rpb24gY29tcGxldGVWYWx1ZShleGVDb250ZXh0LCByZXR1cm5UeXBlLCBmaWVsZE5vZGVzLCBpbmZvLCBwYXRoLCByZXN1bHQsIGVycm9ycykge1xuICAvLyBJZiByZXN1bHQgaXMgYW4gRXJyb3IsIHRocm93IGEgbG9jYXRlZCBlcnJvci5cbiAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgdGhyb3cgcmVzdWx0O1xuICB9IC8vIElmIGZpZWxkIHR5cGUgaXMgTm9uTnVsbCwgY29tcGxldGUgZm9yIGlubmVyIHR5cGUsIGFuZCB0aHJvdyBmaWVsZCBlcnJvclxuICAvLyBpZiByZXN1bHQgaXMgbnVsbC5cblxuXG4gIGlmIChpc05vbk51bGxUeXBlKHJldHVyblR5cGUpKSB7XG4gICAgdmFyIGNvbXBsZXRlZCA9IGNvbXBsZXRlVmFsdWUoZXhlQ29udGV4dCwgcmV0dXJuVHlwZS5vZlR5cGUsIGZpZWxkTm9kZXMsIGluZm8sIHBhdGgsIHJlc3VsdCwgZXJyb3JzKTtcblxuICAgIGlmIChjb21wbGV0ZWQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCByZXR1cm4gbnVsbCBmb3Igbm9uLW51bGxhYmxlIGZpZWxkIFwiLmNvbmNhdChpbmZvLnBhcmVudFR5cGUubmFtZSwgXCIuXCIpLmNvbmNhdChpbmZvLmZpZWxkTmFtZSwgXCIuXCIpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGxldGVkO1xuICB9IC8vIElmIHJlc3VsdCB2YWx1ZSBpcyBudWxsIG9yIHVuZGVmaW5lZCB0aGVuIHJldHVybiBudWxsLlxuXG5cbiAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gSWYgZmllbGQgdHlwZSBpcyBMaXN0LCBjb21wbGV0ZSBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgd2l0aCB0aGUgaW5uZXIgdHlwZVxuXG5cbiAgaWYgKGlzTGlzdFR5cGUocmV0dXJuVHlwZSkpIHtcbiAgICByZXR1cm4gY29tcGxldGVMaXN0VmFsdWUoZXhlQ29udGV4dCwgcmV0dXJuVHlwZSwgZmllbGROb2RlcywgaW5mbywgcGF0aCwgcmVzdWx0LCBlcnJvcnMpO1xuICB9IC8vIElmIGZpZWxkIHR5cGUgaXMgYSBsZWFmIHR5cGUsIFNjYWxhciBvciBFbnVtLCBzZXJpYWxpemUgdG8gYSB2YWxpZCB2YWx1ZSxcbiAgLy8gcmV0dXJuaW5nIG51bGwgaWYgc2VyaWFsaXphdGlvbiBpcyBub3QgcG9zc2libGUuXG5cblxuICBpZiAoaXNMZWFmVHlwZShyZXR1cm5UeXBlKSkge1xuICAgIHJldHVybiBjb21wbGV0ZUxlYWZWYWx1ZShyZXR1cm5UeXBlLCByZXN1bHQpO1xuICB9IC8vIElmIGZpZWxkIHR5cGUgaXMgYW4gYWJzdHJhY3QgdHlwZSwgSW50ZXJmYWNlIG9yIFVuaW9uLCBkZXRlcm1pbmUgdGhlXG4gIC8vIHJ1bnRpbWUgT2JqZWN0IHR5cGUgYW5kIGNvbXBsZXRlIGZvciB0aGF0IHR5cGUuXG5cblxuICBpZiAoaXNBYnN0cmFjdFR5cGUocmV0dXJuVHlwZSkpIHtcbiAgICByZXR1cm4gY29tcGxldGVBYnN0cmFjdFZhbHVlKGV4ZUNvbnRleHQsIHJldHVyblR5cGUsIGZpZWxkTm9kZXMsIGluZm8sIHBhdGgsIHJlc3VsdCwgZXJyb3JzKTtcbiAgfSAvLyBJZiBmaWVsZCB0eXBlIGlzIE9iamVjdCwgZXhlY3V0ZSBhbmQgY29tcGxldGUgYWxsIHN1Yi1zZWxlY3Rpb25zLlxuICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjYxOCcpXG5cblxuICBpZiAoaXNPYmplY3RUeXBlKHJldHVyblR5cGUpKSB7XG4gICAgcmV0dXJuIGNvbXBsZXRlT2JqZWN0VmFsdWUoZXhlQ29udGV4dCwgcmV0dXJuVHlwZSwgZmllbGROb2RlcywgaW5mbywgcGF0aCwgcmVzdWx0LCBlcnJvcnMpO1xuICB9IC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChOb3QgcmVhY2hhYmxlLiBBbGwgcG9zc2libGUgb3V0cHV0IHR5cGVzIGhhdmUgYmVlbiBjb25zaWRlcmVkKVxuXG5cbiAgZmFsc2UgfHwgaW52YXJpYW50KDAsICdDYW5ub3QgY29tcGxldGUgdmFsdWUgb2YgdW5leHBlY3RlZCBvdXRwdXQgdHlwZTogJyArIGluc3BlY3QocmV0dXJuVHlwZSkpO1xufVxuLyoqXG4gKiBDb21wbGV0ZSBhIGFzeW5jIGl0ZXJhdG9yIHZhbHVlIGJ5IGNvbXBsZXRpbmcgdGhlIHJlc3VsdCBhbmQgY2FsbGluZ1xuICogcmVjdXJzaXZlbHkgdW50aWwgYWxsIHRoZSByZXN1bHRzIGFyZSBjb21wbGV0ZWQuXG4gKi9cblxuXG5mdW5jdGlvbiBjb21wbGV0ZUFzeW5jSXRlcmF0b3JWYWx1ZShleGVDb250ZXh0LCBpdGVtVHlwZSwgZmllbGROb2RlcywgaW5mbywgcGF0aCwgaXRlcmF0b3IsIGVycm9ycykge1xuICB2YXIgY29udGFpbnNQcm9taXNlID0gZmFsc2U7XG4gIHZhciBzdHJlYW0gPSBnZXRTdHJlYW1WYWx1ZXMoZXhlQ29udGV4dCwgZmllbGROb2Rlcyk7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgIGZ1bmN0aW9uIG5leHQoaW5kZXgsIGNvbXBsZXRlZFJlc3VsdHMpIHtcbiAgICAgIHZhciBmaWVsZFBhdGggPSBhZGRQYXRoKHBhdGgsIGluZGV4LCB1bmRlZmluZWQpO1xuICAgICAgaXRlcmF0b3IubmV4dCgpLnRoZW4oZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gX3JlZi52YWx1ZSxcbiAgICAgICAgICAgIGRvbmUgPSBfcmVmLmRvbmU7XG5cbiAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICByZXNvbHZlKGNvbXBsZXRlZFJlc3VsdHMpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyBUT0RPIGNhbiB0aGUgZXJyb3IgY2hlY2tpbmcgbG9naWMgYmUgY29uc29saWRhdGVkIHdpdGggY29tcGxldGVMaXN0VmFsdWU/XG5cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIHZhciBjb21wbGV0ZWRJdGVtID0gY29tcGxldGVWYWx1ZShleGVDb250ZXh0LCBpdGVtVHlwZSwgZmllbGROb2RlcywgaW5mbywgZmllbGRQYXRoLCB2YWx1ZSwgZXJyb3JzKTtcblxuICAgICAgICAgIGlmIChpc1Byb21pc2UoY29tcGxldGVkSXRlbSkpIHtcbiAgICAgICAgICAgIGNvbnRhaW5zUHJvbWlzZSA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29tcGxldGVkUmVzdWx0cy5wdXNoKGNvbXBsZXRlZEl0ZW0pO1xuICAgICAgICB9IGNhdGNoIChyYXdFcnJvcikge1xuICAgICAgICAgIGNvbXBsZXRlZFJlc3VsdHMucHVzaChudWxsKTtcbiAgICAgICAgICB2YXIgZXJyb3IgPSBsb2NhdGVkRXJyb3IocmF3RXJyb3IsIGZpZWxkTm9kZXMsIHBhdGhUb0FycmF5KGZpZWxkUGF0aCkpO1xuICAgICAgICAgIGhhbmRsZUZpZWxkRXJyb3IoZXJyb3IsIGl0ZW1UeXBlLCBlcnJvcnMpO1xuICAgICAgICAgIHJlc29sdmUoY29tcGxldGVkUmVzdWx0cyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5ld0luZGV4ID0gaW5kZXggKyAxO1xuXG4gICAgICAgIGlmIChzdHJlYW0gJiYgdHlwZW9mIHN0cmVhbS5pbml0aWFsQ291bnQgPT09ICdudW1iZXInICYmIG5ld0luZGV4ID49IHN0cmVhbS5pbml0aWFsQ291bnQpIHtcbiAgICAgICAgICBleGVDb250ZXh0LmRpc3BhdGNoZXIuYWRkQXN5bmNJdGVyYXRvclZhbHVlKHN0cmVhbS5sYWJlbCwgbmV3SW5kZXgsIHBhdGgsIGl0ZXJhdG9yLCBleGVDb250ZXh0LCBmaWVsZE5vZGVzLCBpbmZvLCBpdGVtVHlwZSk7XG4gICAgICAgICAgcmVzb2x2ZShjb21wbGV0ZWRSZXN1bHRzKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBuZXh0KG5ld0luZGV4LCBjb21wbGV0ZWRSZXN1bHRzKTtcbiAgICAgIH0sIGZ1bmN0aW9uIChyYXdFcnJvcikge1xuICAgICAgICBjb21wbGV0ZWRSZXN1bHRzLnB1c2gobnVsbCk7XG4gICAgICAgIHZhciBlcnJvciA9IGxvY2F0ZWRFcnJvcihyYXdFcnJvciwgZmllbGROb2RlcywgcGF0aFRvQXJyYXkoZmllbGRQYXRoKSk7XG4gICAgICAgIGhhbmRsZUZpZWxkRXJyb3IoZXJyb3IsIGl0ZW1UeXBlLCBlcnJvcnMpO1xuICAgICAgICByZXNvbHZlKGNvbXBsZXRlZFJlc3VsdHMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmV4dCgwLCBbXSk7XG4gIH0pLnRoZW4oZnVuY3Rpb24gKGNvbXBsZXRlZFJlc3VsdHMpIHtcbiAgICByZXR1cm4gY29udGFpbnNQcm9taXNlID8gUHJvbWlzZS5hbGwoY29tcGxldGVkUmVzdWx0cykgOiBjb21wbGV0ZWRSZXN1bHRzO1xuICB9KTtcbn1cbi8qKlxuICogQ29tcGxldGUgYSBsaXN0IHZhbHVlIGJ5IGNvbXBsZXRpbmcgZWFjaCBpdGVtIGluIHRoZSBsaXN0IHdpdGggdGhlXG4gKiBpbm5lciB0eXBlXG4gKi9cblxuXG5mdW5jdGlvbiBjb21wbGV0ZUxpc3RWYWx1ZShleGVDb250ZXh0LCByZXR1cm5UeXBlLCBmaWVsZE5vZGVzLCBpbmZvLCBwYXRoLCByZXN1bHQsIGVycm9ycykge1xuICB2YXIgaXRlbVR5cGUgPSByZXR1cm5UeXBlLm9mVHlwZTtcblxuICBpZiAoaXNBc3luY0l0ZXJhYmxlKHJlc3VsdCkpIHtcbiAgICB2YXIgaXRlcmF0b3IgPSByZXN1bHRbU1lNQk9MX0FTWU5DX0lURVJBVE9SXSgpO1xuICAgIHJldHVybiBjb21wbGV0ZUFzeW5jSXRlcmF0b3JWYWx1ZShleGVDb250ZXh0LCBpdGVtVHlwZSwgZmllbGROb2RlcywgaW5mbywgcGF0aCwgaXRlcmF0b3IsIGVycm9ycyk7XG4gIH1cblxuICBpZiAoIWlzQ29sbGVjdGlvbihyZXN1bHQpKSB7XG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcIkV4cGVjdGVkIEl0ZXJhYmxlLCBidXQgZGlkIG5vdCBmaW5kIG9uZSBmb3IgZmllbGQgXFxcIlwiLmNvbmNhdChpbmZvLnBhcmVudFR5cGUubmFtZSwgXCIuXCIpLmNvbmNhdChpbmZvLmZpZWxkTmFtZSwgXCJcXFwiLlwiKSk7XG4gIH1cblxuICB2YXIgc3RyZWFtID0gZ2V0U3RyZWFtVmFsdWVzKGV4ZUNvbnRleHQsIGZpZWxkTm9kZXMpOyAvLyBUaGlzIGlzIHNwZWNpZmllZCBhcyBhIHNpbXBsZSBtYXAsIGhvd2V2ZXIgd2UncmUgb3B0aW1pemluZyB0aGUgcGF0aFxuICAvLyB3aGVyZSB0aGUgbGlzdCBjb250YWlucyBubyBQcm9taXNlcyBieSBhdm9pZGluZyBjcmVhdGluZyBhbm90aGVyIFByb21pc2UuXG5cbiAgdmFyIGNvbnRhaW5zUHJvbWlzZSA9IGZhbHNlO1xuICB2YXIgY29tcGxldGVkUmVzdWx0cyA9IGFycmF5RnJvbShyZXN1bHQsIGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuICAgIC8vIE5vIG5lZWQgdG8gbW9kaWZ5IHRoZSBpbmZvIG9iamVjdCBjb250YWluaW5nIHRoZSBwYXRoLFxuICAgIC8vIHNpbmNlIGZyb20gaGVyZSBvbiBpdCBpcyBub3QgZXZlciBhY2Nlc3NlZCBieSByZXNvbHZlciBmdW5jdGlvbnMuXG4gICAgdmFyIGl0ZW1QYXRoID0gYWRkUGF0aChwYXRoLCBpbmRleCwgdW5kZWZpbmVkKTtcblxuICAgIHRyeSB7XG4gICAgICB2YXIgY29tcGxldGVkSXRlbTtcblxuICAgICAgaWYgKHN0cmVhbSAmJiB0eXBlb2Ygc3RyZWFtLmluaXRpYWxDb3VudCA9PT0gJ251bWJlcicgJiYgaW5kZXggPj0gc3RyZWFtLmluaXRpYWxDb3VudCkge1xuICAgICAgICBleGVDb250ZXh0LmRpc3BhdGNoZXIuYWRkVmFsdWUoc3RyZWFtLmxhYmVsLCBpdGVtUGF0aCwgaXRlbSwgZXhlQ29udGV4dCwgZmllbGROb2RlcywgaW5mbywgaXRlbVR5cGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChpc1Byb21pc2UoaXRlbSkpIHtcbiAgICAgICAgY29tcGxldGVkSXRlbSA9IGl0ZW0udGhlbihmdW5jdGlvbiAocmVzb2x2ZWQpIHtcbiAgICAgICAgICByZXR1cm4gY29tcGxldGVWYWx1ZShleGVDb250ZXh0LCBpdGVtVHlwZSwgZmllbGROb2RlcywgaW5mbywgaXRlbVBhdGgsIHJlc29sdmVkLCBlcnJvcnMpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBsZXRlZEl0ZW0gPSBjb21wbGV0ZVZhbHVlKGV4ZUNvbnRleHQsIGl0ZW1UeXBlLCBmaWVsZE5vZGVzLCBpbmZvLCBpdGVtUGF0aCwgaXRlbSwgZXJyb3JzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzUHJvbWlzZShjb21wbGV0ZWRJdGVtKSkge1xuICAgICAgICBjb250YWluc1Byb21pc2UgPSB0cnVlOyAvLyBOb3RlOiB3ZSBkb24ndCByZWx5IG9uIGEgYGNhdGNoYCBtZXRob2QsIGJ1dCB3ZSBkbyBleHBlY3QgXCJ0aGVuYWJsZVwiXG4gICAgICAgIC8vIHRvIHRha2UgYSBzZWNvbmQgY2FsbGJhY2sgZm9yIHRoZSBlcnJvciBjYXNlLlxuXG4gICAgICAgIHJldHVybiBjb21wbGV0ZWRJdGVtLnRoZW4odW5kZWZpbmVkLCBmdW5jdGlvbiAocmF3RXJyb3IpIHtcbiAgICAgICAgICB2YXIgZXJyb3IgPSBsb2NhdGVkRXJyb3IocmF3RXJyb3IsIGZpZWxkTm9kZXMsIHBhdGhUb0FycmF5KGl0ZW1QYXRoKSk7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZUZpZWxkRXJyb3IoZXJyb3IsIGl0ZW1UeXBlLCBlcnJvcnMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbXBsZXRlZEl0ZW07XG4gICAgfSBjYXRjaCAocmF3RXJyb3IpIHtcbiAgICAgIHZhciBlcnJvciA9IGxvY2F0ZWRFcnJvcihyYXdFcnJvciwgZmllbGROb2RlcywgcGF0aFRvQXJyYXkoaXRlbVBhdGgpKTtcbiAgICAgIHJldHVybiBoYW5kbGVGaWVsZEVycm9yKGVycm9yLCBpdGVtVHlwZSwgZXJyb3JzKTtcbiAgICB9XG4gIH0pLmZpbHRlcihmdW5jdGlvbiAodmFsKSB7XG4gICAgcmV0dXJuIHZhbCAhPT0gdW5kZWZpbmVkO1xuICB9KTtcbiAgcmV0dXJuIGNvbnRhaW5zUHJvbWlzZSA/IFByb21pc2UuYWxsKGNvbXBsZXRlZFJlc3VsdHMpIDogY29tcGxldGVkUmVzdWx0cztcbn1cbi8qKlxuICogQ29tcGxldGUgYSBTY2FsYXIgb3IgRW51bSBieSBzZXJpYWxpemluZyB0byBhIHZhbGlkIHZhbHVlLCByZXR1cm5pbmdcbiAqIG51bGwgaWYgc2VyaWFsaXphdGlvbiBpcyBub3QgcG9zc2libGUuXG4gKi9cblxuXG5mdW5jdGlvbiBjb21wbGV0ZUxlYWZWYWx1ZShyZXR1cm5UeXBlLCByZXN1bHQpIHtcbiAgdmFyIHNlcmlhbGl6ZWRSZXN1bHQgPSByZXR1cm5UeXBlLnNlcmlhbGl6ZShyZXN1bHQpO1xuXG4gIGlmIChzZXJpYWxpemVkUmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBhIHZhbHVlIG9mIHR5cGUgXFxcIlwiLmNvbmNhdChpbnNwZWN0KHJldHVyblR5cGUpLCBcIlxcXCIgYnV0IFwiKSArIFwicmVjZWl2ZWQ6IFwiLmNvbmNhdChpbnNwZWN0KHJlc3VsdCkpKTtcbiAgfVxuXG4gIHJldHVybiBzZXJpYWxpemVkUmVzdWx0O1xufVxuLyoqXG4gKiBDb21wbGV0ZSBhIHZhbHVlIG9mIGFuIGFic3RyYWN0IHR5cGUgYnkgZGV0ZXJtaW5pbmcgdGhlIHJ1bnRpbWUgb2JqZWN0IHR5cGVcbiAqIG9mIHRoYXQgdmFsdWUsIHRoZW4gY29tcGxldGUgdGhlIHZhbHVlIGZvciB0aGF0IHR5cGUuXG4gKi9cblxuXG5mdW5jdGlvbiBjb21wbGV0ZUFic3RyYWN0VmFsdWUoZXhlQ29udGV4dCwgcmV0dXJuVHlwZSwgZmllbGROb2RlcywgaW5mbywgcGF0aCwgcmVzdWx0LCBlcnJvcnMpIHtcbiAgdmFyIF9yZXR1cm5UeXBlJHJlc29sdmVUeTtcblxuICB2YXIgcmVzb2x2ZVR5cGVGbiA9IChfcmV0dXJuVHlwZSRyZXNvbHZlVHkgPSByZXR1cm5UeXBlLnJlc29sdmVUeXBlKSAhPT0gbnVsbCAmJiBfcmV0dXJuVHlwZSRyZXNvbHZlVHkgIT09IHZvaWQgMCA/IF9yZXR1cm5UeXBlJHJlc29sdmVUeSA6IGV4ZUNvbnRleHQudHlwZVJlc29sdmVyO1xuICB2YXIgY29udGV4dFZhbHVlID0gZXhlQ29udGV4dC5jb250ZXh0VmFsdWU7XG4gIHZhciBydW50aW1lVHlwZSA9IHJlc29sdmVUeXBlRm4ocmVzdWx0LCBjb250ZXh0VmFsdWUsIGluZm8sIHJldHVyblR5cGUpO1xuXG4gIGlmIChpc1Byb21pc2UocnVudGltZVR5cGUpKSB7XG4gICAgcmV0dXJuIHJ1bnRpbWVUeXBlLnRoZW4oZnVuY3Rpb24gKHJlc29sdmVkUnVudGltZVR5cGUpIHtcbiAgICAgIHJldHVybiBjb21wbGV0ZU9iamVjdFZhbHVlKGV4ZUNvbnRleHQsIGVuc3VyZVZhbGlkUnVudGltZVR5cGUocmVzb2x2ZWRSdW50aW1lVHlwZSwgZXhlQ29udGV4dCwgcmV0dXJuVHlwZSwgZmllbGROb2RlcywgaW5mbywgcmVzdWx0KSwgZmllbGROb2RlcywgaW5mbywgcGF0aCwgcmVzdWx0LCBlcnJvcnMpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGNvbXBsZXRlT2JqZWN0VmFsdWUoZXhlQ29udGV4dCwgZW5zdXJlVmFsaWRSdW50aW1lVHlwZShydW50aW1lVHlwZSwgZXhlQ29udGV4dCwgcmV0dXJuVHlwZSwgZmllbGROb2RlcywgaW5mbywgcmVzdWx0KSwgZmllbGROb2RlcywgaW5mbywgcGF0aCwgcmVzdWx0LCBlcnJvcnMpO1xufVxuXG5mdW5jdGlvbiBlbnN1cmVWYWxpZFJ1bnRpbWVUeXBlKHJ1bnRpbWVUeXBlT3JOYW1lLCBleGVDb250ZXh0LCByZXR1cm5UeXBlLCBmaWVsZE5vZGVzLCBpbmZvLCByZXN1bHQpIHtcbiAgaWYgKHJ1bnRpbWVUeXBlT3JOYW1lID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFwiQWJzdHJhY3QgdHlwZSBcXFwiXCIuY29uY2F0KHJldHVyblR5cGUubmFtZSwgXCJcXFwiIG11c3QgcmVzb2x2ZSB0byBhbiBPYmplY3QgdHlwZSBhdCBydW50aW1lIGZvciBmaWVsZCBcXFwiXCIpLmNvbmNhdChpbmZvLnBhcmVudFR5cGUubmFtZSwgXCIuXCIpLmNvbmNhdChpbmZvLmZpZWxkTmFtZSwgXCJcXFwiLiBFaXRoZXIgdGhlIFxcXCJcIikuY29uY2F0KHJldHVyblR5cGUubmFtZSwgXCJcXFwiIHR5cGUgc2hvdWxkIHByb3ZpZGUgYSBcXFwicmVzb2x2ZVR5cGVcXFwiIGZ1bmN0aW9uIG9yIGVhY2ggcG9zc2libGUgdHlwZSBzaG91bGQgcHJvdmlkZSBhbiBcXFwiaXNUeXBlT2ZcXFwiIGZ1bmN0aW9uLlwiKSwgZmllbGROb2Rlcyk7XG4gIH0gLy8gRklYTUU6IHRlbXBvcmFyeSB3b3JrYXJvdW5kIHVudGlsIHN1cHBvcnQgZm9yIHBhc3Npbmcgb2JqZWN0IHR5cGVzIHdvdWxkIGJlIHJlbW92ZWQgaW4gdjE2LjAuMFxuXG5cbiAgdmFyIHJ1bnRpbWVUeXBlTmFtZSA9IGlzTmFtZWRUeXBlKHJ1bnRpbWVUeXBlT3JOYW1lKSA/IHJ1bnRpbWVUeXBlT3JOYW1lLm5hbWUgOiBydW50aW1lVHlwZU9yTmFtZTtcblxuICBpZiAodHlwZW9mIHJ1bnRpbWVUeXBlTmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFwiQWJzdHJhY3QgdHlwZSBcXFwiXCIuY29uY2F0KHJldHVyblR5cGUubmFtZSwgXCJcXFwiIG11c3QgcmVzb2x2ZSB0byBhbiBPYmplY3QgdHlwZSBhdCBydW50aW1lIGZvciBmaWVsZCBcXFwiXCIpLmNvbmNhdChpbmZvLnBhcmVudFR5cGUubmFtZSwgXCIuXCIpLmNvbmNhdChpbmZvLmZpZWxkTmFtZSwgXCJcXFwiIHdpdGggXCIpICsgXCJ2YWx1ZSBcIi5jb25jYXQoaW5zcGVjdChyZXN1bHQpLCBcIiwgcmVjZWl2ZWQgXFxcIlwiKS5jb25jYXQoaW5zcGVjdChydW50aW1lVHlwZU9yTmFtZSksIFwiXFxcIi5cIikpO1xuICB9XG5cbiAgdmFyIHJ1bnRpbWVUeXBlID0gZXhlQ29udGV4dC5zY2hlbWEuZ2V0VHlwZShydW50aW1lVHlwZU5hbWUpO1xuXG4gIGlmIChydW50aW1lVHlwZSA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcIkFic3RyYWN0IHR5cGUgXFxcIlwiLmNvbmNhdChyZXR1cm5UeXBlLm5hbWUsIFwiXFxcIiB3YXMgcmVzb2x2ZSB0byBhIHR5cGUgXFxcIlwiKS5jb25jYXQocnVudGltZVR5cGVOYW1lLCBcIlxcXCIgdGhhdCBkb2VzIG5vdCBleGlzdCBpbnNpZGUgc2NoZW1hLlwiKSwgZmllbGROb2Rlcyk7XG4gIH1cblxuICBpZiAoIWlzT2JqZWN0VHlwZShydW50aW1lVHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFwiQWJzdHJhY3QgdHlwZSBcXFwiXCIuY29uY2F0KHJldHVyblR5cGUubmFtZSwgXCJcXFwiIHdhcyByZXNvbHZlIHRvIGEgbm9uLW9iamVjdCB0eXBlIFxcXCJcIikuY29uY2F0KHJ1bnRpbWVUeXBlTmFtZSwgXCJcXFwiLlwiKSwgZmllbGROb2Rlcyk7XG4gIH1cblxuICBpZiAoIWV4ZUNvbnRleHQuc2NoZW1hLmlzU3ViVHlwZShyZXR1cm5UeXBlLCBydW50aW1lVHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFwiUnVudGltZSBPYmplY3QgdHlwZSBcXFwiXCIuY29uY2F0KHJ1bnRpbWVUeXBlLm5hbWUsIFwiXFxcIiBpcyBub3QgYSBwb3NzaWJsZSB0eXBlIGZvciBcXFwiXCIpLmNvbmNhdChyZXR1cm5UeXBlLm5hbWUsIFwiXFxcIi5cIiksIGZpZWxkTm9kZXMpO1xuICB9XG5cbiAgcmV0dXJuIHJ1bnRpbWVUeXBlO1xufVxuLyoqXG4gKiBDb21wbGV0ZSBhbiBPYmplY3QgdmFsdWUgYnkgZXhlY3V0aW5nIGFsbCBzdWItc2VsZWN0aW9ucy5cbiAqL1xuXG5cbmZ1bmN0aW9uIGNvbXBsZXRlT2JqZWN0VmFsdWUoZXhlQ29udGV4dCwgcmV0dXJuVHlwZSwgZmllbGROb2RlcywgaW5mbywgcGF0aCwgcmVzdWx0LCBlcnJvcnMpIHtcbiAgLy8gSWYgdGhlcmUgaXMgYW4gaXNUeXBlT2YgcHJlZGljYXRlIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggdGhlXG4gIC8vIGN1cnJlbnQgcmVzdWx0LiBJZiBpc1R5cGVPZiByZXR1cm5zIGZhbHNlLCB0aGVuIHJhaXNlIGFuIGVycm9yIHJhdGhlclxuICAvLyB0aGFuIGNvbnRpbnVpbmcgZXhlY3V0aW9uLlxuICBpZiAocmV0dXJuVHlwZS5pc1R5cGVPZikge1xuICAgIHZhciBpc1R5cGVPZiA9IHJldHVyblR5cGUuaXNUeXBlT2YocmVzdWx0LCBleGVDb250ZXh0LmNvbnRleHRWYWx1ZSwgaW5mbyk7XG5cbiAgICBpZiAoaXNQcm9taXNlKGlzVHlwZU9mKSkge1xuICAgICAgcmV0dXJuIGlzVHlwZU9mLnRoZW4oZnVuY3Rpb24gKHJlc29sdmVkSXNUeXBlT2YpIHtcbiAgICAgICAgaWYgKCFyZXNvbHZlZElzVHlwZU9mKSB7XG4gICAgICAgICAgdGhyb3cgaW52YWxpZFJldHVyblR5cGVFcnJvcihyZXR1cm5UeXBlLCByZXN1bHQsIGZpZWxkTm9kZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbGxlY3RBbmRFeGVjdXRlU3ViZmllbGRzKGV4ZUNvbnRleHQsIHJldHVyblR5cGUsIGZpZWxkTm9kZXMsIHBhdGgsIHJlc3VsdCwgZXJyb3JzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghaXNUeXBlT2YpIHtcbiAgICAgIHRocm93IGludmFsaWRSZXR1cm5UeXBlRXJyb3IocmV0dXJuVHlwZSwgcmVzdWx0LCBmaWVsZE5vZGVzKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29sbGVjdEFuZEV4ZWN1dGVTdWJmaWVsZHMoZXhlQ29udGV4dCwgcmV0dXJuVHlwZSwgZmllbGROb2RlcywgcGF0aCwgcmVzdWx0LCBlcnJvcnMpO1xufVxuXG5mdW5jdGlvbiBpbnZhbGlkUmV0dXJuVHlwZUVycm9yKHJldHVyblR5cGUsIHJlc3VsdCwgZmllbGROb2Rlcykge1xuICByZXR1cm4gbmV3IEdyYXBoUUxFcnJvcihcIkV4cGVjdGVkIHZhbHVlIG9mIHR5cGUgXFxcIlwiLmNvbmNhdChyZXR1cm5UeXBlLm5hbWUsIFwiXFxcIiBidXQgZ290OiBcIikuY29uY2F0KGluc3BlY3QocmVzdWx0KSwgXCIuXCIpLCBmaWVsZE5vZGVzKTtcbn1cblxuZnVuY3Rpb24gY29sbGVjdEFuZEV4ZWN1dGVTdWJmaWVsZHMoZXhlQ29udGV4dCwgcmV0dXJuVHlwZSwgZmllbGROb2RlcywgcGF0aCwgcmVzdWx0LCBlcnJvcnMpIHtcbiAgLy8gQ29sbGVjdCBzdWItZmllbGRzIHRvIGV4ZWN1dGUgdG8gY29tcGxldGUgdGhpcyB2YWx1ZS5cbiAgdmFyIF9jb2xsZWN0U3ViZmllbGRzMiA9IGNvbGxlY3RTdWJmaWVsZHMoZXhlQ29udGV4dCwgcmV0dXJuVHlwZSwgZmllbGROb2RlcyksXG4gICAgICBzdWJGaWVsZE5vZGVzID0gX2NvbGxlY3RTdWJmaWVsZHMyLmZpZWxkcyxcbiAgICAgIHN1YlBhdGNoZXMgPSBfY29sbGVjdFN1YmZpZWxkczIucGF0Y2hlcztcblxuICB2YXIgc3ViRmllbGRzID0gZXhlY3V0ZUZpZWxkcyhleGVDb250ZXh0LCByZXR1cm5UeXBlLCByZXN1bHQsIHBhdGgsIHN1YkZpZWxkTm9kZXMsIGVycm9ycyk7XG5cbiAgZm9yICh2YXIgX2kxMCA9IDA7IF9pMTAgPCBzdWJQYXRjaGVzLmxlbmd0aDsgX2kxMCsrKSB7XG4gICAgdmFyIHN1YlBhdGNoID0gc3ViUGF0Y2hlc1tfaTEwXTtcbiAgICB2YXIgbGFiZWwgPSBzdWJQYXRjaC5sYWJlbCxcbiAgICAgICAgc3ViUGF0Y2hGaWVsZE5vZGVzID0gc3ViUGF0Y2guZmllbGRzO1xuICAgIHZhciBzdWJQYXRjaEVycm9ycyA9IFtdO1xuICAgIGV4ZUNvbnRleHQuZGlzcGF0Y2hlci5hZGRGaWVsZHMobGFiZWwsIHBhdGgsIGV4ZWN1dGVGaWVsZHMoZXhlQ29udGV4dCwgcmV0dXJuVHlwZSwgcmVzdWx0LCBwYXRoLCBzdWJQYXRjaEZpZWxkTm9kZXMsIHN1YlBhdGNoRXJyb3JzKSwgc3ViUGF0Y2hFcnJvcnMpO1xuICB9XG5cbiAgcmV0dXJuIHN1YkZpZWxkcztcbn1cbi8qKlxuICogQSBtZW1vaXplZCBjb2xsZWN0aW9uIG9mIHJlbGV2YW50IHN1YmZpZWxkcyB3aXRoIHJlZ2FyZCB0byB0aGUgcmV0dXJuXG4gKiB0eXBlLiBNZW1vaXppbmcgZW5zdXJlcyB0aGUgc3ViZmllbGRzIGFyZSBub3QgcmVwZWF0ZWRseSBjYWxjdWxhdGVkLCB3aGljaFxuICogc2F2ZXMgb3ZlcmhlYWQgd2hlbiByZXNvbHZpbmcgbGlzdHMgb2YgdmFsdWVzLlxuICovXG5cblxudmFyIGNvbGxlY3RTdWJmaWVsZHMgPSBtZW1vaXplMyhfY29sbGVjdFN1YmZpZWxkcyk7XG5cbmZ1bmN0aW9uIF9jb2xsZWN0U3ViZmllbGRzKGV4ZUNvbnRleHQsIHJldHVyblR5cGUsIGZpZWxkTm9kZXMpIHtcbiAgdmFyIHN1YkZpZWxkTm9kZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2YXIgdmlzaXRlZEZyYWdtZW50TmFtZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2YXIgc3ViUGF0Y2hlcyA9IFtdO1xuICB2YXIgc3ViRmllbGRzQW5kUGF0Y2hlcyA9IHtcbiAgICBmaWVsZHM6IHN1YkZpZWxkTm9kZXMsXG4gICAgcGF0Y2hlczogc3ViUGF0Y2hlc1xuICB9O1xuXG4gIGZvciAodmFyIF9pMTIgPSAwOyBfaTEyIDwgZmllbGROb2Rlcy5sZW5ndGg7IF9pMTIrKykge1xuICAgIHZhciBub2RlID0gZmllbGROb2Rlc1tfaTEyXTtcblxuICAgIGlmIChub2RlLnNlbGVjdGlvblNldCkge1xuICAgICAgc3ViRmllbGRzQW5kUGF0Y2hlcyA9IGNvbGxlY3RGaWVsZHMoZXhlQ29udGV4dCwgcmV0dXJuVHlwZSwgbm9kZS5zZWxlY3Rpb25TZXQsIHN1YkZpZWxkTm9kZXMsIHN1YlBhdGNoZXMsIHZpc2l0ZWRGcmFnbWVudE5hbWVzKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3ViRmllbGRzQW5kUGF0Y2hlcztcbn1cbi8qKlxuICogSWYgYSByZXNvbHZlVHlwZSBmdW5jdGlvbiBpcyBub3QgZ2l2ZW4sIHRoZW4gYSBkZWZhdWx0IHJlc29sdmUgYmVoYXZpb3IgaXNcbiAqIHVzZWQgd2hpY2ggYXR0ZW1wdHMgdHdvIHN0cmF0ZWdpZXM6XG4gKlxuICogRmlyc3QsIFNlZSBpZiB0aGUgcHJvdmlkZWQgdmFsdWUgaGFzIGEgYF9fdHlwZW5hbWVgIGZpZWxkIGRlZmluZWQsIGlmIHNvLCB1c2VcbiAqIHRoYXQgdmFsdWUgYXMgbmFtZSBvZiB0aGUgcmVzb2x2ZWQgdHlwZS5cbiAqXG4gKiBPdGhlcndpc2UsIHRlc3QgZWFjaCBwb3NzaWJsZSB0eXBlIGZvciB0aGUgYWJzdHJhY3QgdHlwZSBieSBjYWxsaW5nXG4gKiBpc1R5cGVPZiBmb3IgdGhlIG9iamVjdCBiZWluZyBjb2VyY2VkLCByZXR1cm5pbmcgdGhlIGZpcnN0IHR5cGUgdGhhdCBtYXRjaGVzLlxuICovXG5cblxuZXhwb3J0IHZhciBkZWZhdWx0VHlwZVJlc29sdmVyID0gZnVuY3Rpb24gZGVmYXVsdFR5cGVSZXNvbHZlcih2YWx1ZSwgY29udGV4dFZhbHVlLCBpbmZvLCBhYnN0cmFjdFR5cGUpIHtcbiAgLy8gRmlyc3QsIGxvb2sgZm9yIGBfX3R5cGVuYW1lYC5cbiAgaWYgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgdHlwZW9mIHZhbHVlLl9fdHlwZW5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlLl9fdHlwZW5hbWU7XG4gIH0gLy8gT3RoZXJ3aXNlLCB0ZXN0IGVhY2ggcG9zc2libGUgdHlwZS5cblxuXG4gIHZhciBwb3NzaWJsZVR5cGVzID0gaW5mby5zY2hlbWEuZ2V0UG9zc2libGVUeXBlcyhhYnN0cmFjdFR5cGUpO1xuICB2YXIgcHJvbWlzZWRJc1R5cGVPZlJlc3VsdHMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBvc3NpYmxlVHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdHlwZSA9IHBvc3NpYmxlVHlwZXNbaV07XG5cbiAgICBpZiAodHlwZS5pc1R5cGVPZikge1xuICAgICAgdmFyIGlzVHlwZU9mUmVzdWx0ID0gdHlwZS5pc1R5cGVPZih2YWx1ZSwgY29udGV4dFZhbHVlLCBpbmZvKTtcblxuICAgICAgaWYgKGlzUHJvbWlzZShpc1R5cGVPZlJlc3VsdCkpIHtcbiAgICAgICAgcHJvbWlzZWRJc1R5cGVPZlJlc3VsdHNbaV0gPSBpc1R5cGVPZlJlc3VsdDtcbiAgICAgIH0gZWxzZSBpZiAoaXNUeXBlT2ZSZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIHR5cGUubmFtZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAocHJvbWlzZWRJc1R5cGVPZlJlc3VsdHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VkSXNUeXBlT2ZSZXN1bHRzKS50aGVuKGZ1bmN0aW9uIChpc1R5cGVPZlJlc3VsdHMpIHtcbiAgICAgIGZvciAodmFyIF9pMTMgPSAwOyBfaTEzIDwgaXNUeXBlT2ZSZXN1bHRzLmxlbmd0aDsgX2kxMysrKSB7XG4gICAgICAgIGlmIChpc1R5cGVPZlJlc3VsdHNbX2kxM10pIHtcbiAgICAgICAgICByZXR1cm4gcG9zc2libGVUeXBlc1tfaTEzXS5uYW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG4vKipcbiAqIElmIGEgcmVzb2x2ZSBmdW5jdGlvbiBpcyBub3QgZ2l2ZW4sIHRoZW4gYSBkZWZhdWx0IHJlc29sdmUgYmVoYXZpb3IgaXMgdXNlZFxuICogd2hpY2ggdGFrZXMgdGhlIHByb3BlcnR5IG9mIHRoZSBzb3VyY2Ugb2JqZWN0IG9mIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGZpZWxkXG4gKiBhbmQgcmV0dXJucyBpdCBhcyB0aGUgcmVzdWx0LCBvciBpZiBpdCdzIGEgZnVuY3Rpb24sIHJldHVybnMgdGhlIHJlc3VsdFxuICogb2YgY2FsbGluZyB0aGF0IGZ1bmN0aW9uIHdoaWxlIHBhc3NpbmcgYWxvbmcgYXJncyBhbmQgY29udGV4dCB2YWx1ZS5cbiAqL1xuXG5leHBvcnQgdmFyIGRlZmF1bHRGaWVsZFJlc29sdmVyID0gZnVuY3Rpb24gZGVmYXVsdEZpZWxkUmVzb2x2ZXIoc291cmNlLCBhcmdzLCBjb250ZXh0VmFsdWUsIGluZm8pIHtcbiAgLy8gZW5zdXJlIHNvdXJjZSBpcyBhIHZhbHVlIGZvciB3aGljaCBwcm9wZXJ0eSBhY2Nlc3MgaXMgYWNjZXB0YWJsZS5cbiAgaWYgKGlzT2JqZWN0TGlrZShzb3VyY2UpIHx8IHR5cGVvZiBzb3VyY2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICB2YXIgcHJvcGVydHkgPSBzb3VyY2VbaW5mby5maWVsZE5hbWVdO1xuXG4gICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHNvdXJjZVtpbmZvLmZpZWxkTmFtZV0oYXJncywgY29udGV4dFZhbHVlLCBpbmZvKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcGVydHk7XG4gIH1cbn07XG4vKipcbiAqIFRoaXMgbWV0aG9kIGxvb2tzIHVwIHRoZSBmaWVsZCBvbiB0aGUgZ2l2ZW4gdHlwZSBkZWZpbml0aW9uLlxuICogSXQgaGFzIHNwZWNpYWwgY2FzaW5nIGZvciB0aGUgdGhyZWUgaW50cm9zcGVjdGlvbiBmaWVsZHMsXG4gKiBfX3NjaGVtYSwgX190eXBlIGFuZCBfX3R5cGVuYW1lLiBfX3R5cGVuYW1lIGlzIHNwZWNpYWwgYmVjYXVzZVxuICogaXQgY2FuIGFsd2F5cyBiZSBxdWVyaWVkIGFzIGEgZmllbGQsIGV2ZW4gaW4gc2l0dWF0aW9ucyB3aGVyZSBub1xuICogb3RoZXIgZmllbGRzIGFyZSBhbGxvd2VkLCBsaWtlIG9uIGEgVW5pb24uIF9fc2NoZW1hIGFuZCBfX3R5cGVcbiAqIGNvdWxkIGdldCBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBxdWVyeSB0eXBlLCBidXQgdGhhdCB3b3VsZFxuICogcmVxdWlyZSBtdXRhdGluZyB0eXBlIGRlZmluaXRpb25zLCB3aGljaCB3b3VsZCBjYXVzZSBpc3N1ZXMuXG4gKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpZWxkRGVmKHNjaGVtYSwgcGFyZW50VHlwZSwgZmllbGROYW1lKSB7XG4gIGlmIChmaWVsZE5hbWUgPT09IFNjaGVtYU1ldGFGaWVsZERlZi5uYW1lICYmIHNjaGVtYS5nZXRRdWVyeVR5cGUoKSA9PT0gcGFyZW50VHlwZSkge1xuICAgIHJldHVybiBTY2hlbWFNZXRhRmllbGREZWY7XG4gIH0gZWxzZSBpZiAoZmllbGROYW1lID09PSBUeXBlTWV0YUZpZWxkRGVmLm5hbWUgJiYgc2NoZW1hLmdldFF1ZXJ5VHlwZSgpID09PSBwYXJlbnRUeXBlKSB7XG4gICAgcmV0dXJuIFR5cGVNZXRhRmllbGREZWY7XG4gIH0gZWxzZSBpZiAoZmllbGROYW1lID09PSBUeXBlTmFtZU1ldGFGaWVsZERlZi5uYW1lKSB7XG4gICAgcmV0dXJuIFR5cGVOYW1lTWV0YUZpZWxkRGVmO1xuICB9XG5cbiAgcmV0dXJuIHBhcmVudFR5cGUuZ2V0RmllbGRzKClbZmllbGROYW1lXTtcbn1cbi8qKlxuICogU2FtZSBhcyBFeGVjdXRpb25QYXRjaFJlc3VsdCwgYnV0IHdpdGhvdXQgaGFzTmV4dFxuICovXG5cbi8qKlxuICogRGlzcGF0Y2hlciBrZWVwcyB0cmFjayBvZiBzdWJzZXF1ZW50IHBheWxvYWRzIHRoYXQgbmVlZCB0byBiZSBkZWxpdmVyZWRcbiAqIHRvIHRoZSBjbGllbnQuIEFmdGVyIGluaXRpYWwgZXhlY3V0aW9uLCByZXR1cm5zIGFuIGFzeW5jIGl0ZXJhdGFibGUgb2ZcbiAqIGFsbCB0aGUgQXN5bmNFeGVjdXRpb25SZXN1bHRzIGFzIHRoZXkgYXJlIHJlc29sdmVkLlxuICovXG5leHBvcnQgdmFyIERpc3BhdGNoZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBEaXNwYXRjaGVyKCkge1xuICAgIHRoaXMuX3N1YnNlcXVlbnRQYXlsb2FkcyA9IFtdO1xuICAgIHRoaXMuX2hhc1JldHVybmVkSW5pdGlhbFJlc3VsdCA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIF9wcm90byA9IERpc3BhdGNoZXIucHJvdG90eXBlO1xuXG4gIF9wcm90by5oYXNTdWJzZXF1ZW50UGF5bG9hZHMgPSBmdW5jdGlvbiBoYXNTdWJzZXF1ZW50UGF5bG9hZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YnNlcXVlbnRQYXlsb2Fkcy5sZW5ndGggIT09IDA7XG4gIH07XG5cbiAgX3Byb3RvLmFkZEZpZWxkcyA9IGZ1bmN0aW9uIGFkZEZpZWxkcyhsYWJlbCwgcGF0aCwgcHJvbWlzZU9yRGF0YSwgZXJyb3JzKSB7XG4gICAgdGhpcy5fc3Vic2VxdWVudFBheWxvYWRzLnB1c2goUHJvbWlzZS5yZXNvbHZlKHByb21pc2VPckRhdGEpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiBjcmVhdGVQYXRjaFJlc3VsdChkYXRhLCBsYWJlbCwgcGF0aCwgZXJyb3JzKSxcbiAgICAgICAgZG9uZTogZmFsc2VcbiAgICAgIH07XG4gICAgfSkpO1xuICB9O1xuXG4gIF9wcm90by5hZGRWYWx1ZSA9IGZ1bmN0aW9uIGFkZFZhbHVlKGxhYmVsLCBwYXRoLCBwcm9taXNlT3JEYXRhLCBleGVDb250ZXh0LCBmaWVsZE5vZGVzLCBpbmZvLCBpdGVtVHlwZSkge1xuICAgIHZhciBlcnJvcnMgPSBbXTtcblxuICAgIHRoaXMuX3N1YnNlcXVlbnRQYXlsb2Fkcy5wdXNoKFByb21pc2UucmVzb2x2ZShwcm9taXNlT3JEYXRhKS50aGVuKGZ1bmN0aW9uIChyZXNvbHZlZCkge1xuICAgICAgcmV0dXJuIGNvbXBsZXRlVmFsdWUoZXhlQ29udGV4dCwgaXRlbVR5cGUsIGZpZWxkTm9kZXMsIGluZm8sIHBhdGgsIHJlc29sdmVkLCBlcnJvcnMpO1xuICAgIH0pIC8vIE5vdGU6IHdlIGRvbid0IHJlbHkgb24gYSBgY2F0Y2hgIG1ldGhvZCwgYnV0IHdlIGRvIGV4cGVjdCBcInRoZW5hYmxlXCJcbiAgICAvLyB0byB0YWtlIGEgc2Vjb25kIGNhbGxiYWNrIGZvciB0aGUgZXJyb3IgY2FzZS5cbiAgICAudGhlbih1bmRlZmluZWQsIGZ1bmN0aW9uIChyYXdFcnJvcikge1xuICAgICAgdmFyIGVycm9yID0gbG9jYXRlZEVycm9yKHJhd0Vycm9yLCBmaWVsZE5vZGVzLCBwYXRoVG9BcnJheShwYXRoKSk7XG4gICAgICByZXR1cm4gaGFuZGxlRmllbGRFcnJvcihlcnJvciwgaXRlbVR5cGUsIGVycm9ycyk7XG4gICAgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IGNyZWF0ZVBhdGNoUmVzdWx0KGRhdGEsIGxhYmVsLCBwYXRoLCBlcnJvcnMpLFxuICAgICAgICBkb25lOiBmYWxzZVxuICAgICAgfTtcbiAgICB9KSk7XG4gIH07XG5cbiAgX3Byb3RvLmFkZEFzeW5jSXRlcmF0b3JWYWx1ZSA9IGZ1bmN0aW9uIGFkZEFzeW5jSXRlcmF0b3JWYWx1ZShsYWJlbCwgaW5pdGlhbEluZGV4LCBwYXRoLCBpdGVyYXRvciwgZXhlQ29udGV4dCwgZmllbGROb2RlcywgaW5mbywgaXRlbVR5cGUpIHtcbiAgICB2YXIgc3Vic2VxdWVudFBheWxvYWRzID0gdGhpcy5fc3Vic2VxdWVudFBheWxvYWRzO1xuXG4gICAgZnVuY3Rpb24gbmV4dChpbmRleCkge1xuICAgICAgdmFyIGZpZWxkUGF0aCA9IGFkZFBhdGgocGF0aCwgaW5kZXgpO1xuICAgICAgdmFyIHBhdGNoRXJyb3JzID0gW107XG4gICAgICBzdWJzZXF1ZW50UGF5bG9hZHMucHVzaChpdGVyYXRvci5uZXh0KCkudGhlbihmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgICAgdmFyIGRhdGEgPSBfcmVmMi52YWx1ZSxcbiAgICAgICAgICAgIGRvbmUgPSBfcmVmMi5kb25lO1xuXG4gICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkb25lOiB0cnVlXG4gICAgICAgICAgfTtcbiAgICAgICAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm9kZS9jYWxsYmFjay1yZXR1cm5cblxuXG4gICAgICAgIG5leHQoaW5kZXggKyAxKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIHZhciBjb21wbGV0ZWRJdGVtID0gY29tcGxldGVWYWx1ZShleGVDb250ZXh0LCBpdGVtVHlwZSwgZmllbGROb2RlcywgaW5mbywgZmllbGRQYXRoLCBkYXRhLCBwYXRjaEVycm9ycyk7XG5cbiAgICAgICAgICBpZiAoaXNQcm9taXNlKGNvbXBsZXRlZEl0ZW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gY29tcGxldGVkSXRlbS50aGVuKGZ1bmN0aW9uIChyZXNvbHZlSXRlbSkge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBjcmVhdGVQYXRjaFJlc3VsdChyZXNvbHZlSXRlbSwgbGFiZWwsIGZpZWxkUGF0aCwgcGF0Y2hFcnJvcnMpLFxuICAgICAgICAgICAgICAgIGRvbmU6IGZhbHNlXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IGNyZWF0ZVBhdGNoUmVzdWx0KGNvbXBsZXRlZEl0ZW0sIGxhYmVsLCBmaWVsZFBhdGgsIHBhdGNoRXJyb3JzKSxcbiAgICAgICAgICAgIGRvbmU6IGZhbHNlXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBjYXRjaCAocmF3RXJyb3IpIHtcbiAgICAgICAgICB2YXIgZXJyb3IgPSBsb2NhdGVkRXJyb3IocmF3RXJyb3IsIGZpZWxkTm9kZXMsIHBhdGhUb0FycmF5KGZpZWxkUGF0aCkpO1xuICAgICAgICAgIGhhbmRsZUZpZWxkRXJyb3IoZXJyb3IsIGl0ZW1UeXBlLCBwYXRjaEVycm9ycyk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiBjcmVhdGVQYXRjaFJlc3VsdChudWxsLCBsYWJlbCwgZmllbGRQYXRoLCBwYXRjaEVycm9ycyksXG4gICAgICAgICAgICBkb25lOiBmYWxzZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0sIGZ1bmN0aW9uIChyYXdFcnJvcikge1xuICAgICAgICB2YXIgZXJyb3IgPSBsb2NhdGVkRXJyb3IocmF3RXJyb3IsIGZpZWxkTm9kZXMsIHBhdGhUb0FycmF5KGZpZWxkUGF0aCkpO1xuICAgICAgICBoYW5kbGVGaWVsZEVycm9yKGVycm9yLCBpdGVtVHlwZSwgcGF0Y2hFcnJvcnMpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbHVlOiBjcmVhdGVQYXRjaFJlc3VsdChudWxsLCBsYWJlbCwgZmllbGRQYXRoLCBwYXRjaEVycm9ycyksXG4gICAgICAgICAgZG9uZTogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBuZXh0KGluaXRpYWxJbmRleCk7XG4gIH07XG5cbiAgX3Byb3RvLl9yYWNlID0gZnVuY3Rpb24gX3JhY2UoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgX3RoaXMuX3N1YnNlcXVlbnRQYXlsb2Fkcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy8gcmVzb2x2ZSB3aXRoIGFjdHVhbCBwcm9taXNlLCBub3QgcmVzb2x2ZWQgdmFsdWUgb2YgcHJvbWlzZSBzbyB3ZSBjYW4gcmVtb3ZlIGl0IGZyb20gdGhpcy5fc3Vic2VxdWVudFBheWxvYWRzXG4gICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICBwcm9taXNlOiBwcm9taXNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSkudGhlbihmdW5jdGlvbiAoX3JlZjMpIHtcbiAgICAgIHZhciBwcm9taXNlID0gX3JlZjMucHJvbWlzZTtcblxuICAgICAgX3RoaXMuX3N1YnNlcXVlbnRQYXlsb2Fkcy5zcGxpY2UoX3RoaXMuX3N1YnNlcXVlbnRQYXlsb2Fkcy5pbmRleE9mKHByb21pc2UpLCAxKTtcblxuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfSkudGhlbihmdW5jdGlvbiAoX3JlZjQpIHtcbiAgICAgIHZhciB2YWx1ZSA9IF9yZWY0LnZhbHVlLFxuICAgICAgICAgIGRvbmUgPSBfcmVmNC5kb25lO1xuXG4gICAgICBpZiAoZG9uZSAmJiBfdGhpcy5fc3Vic2VxdWVudFBheWxvYWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAvLyBhc3luYyBpdGVyYWJsZSByZXNvbHZlciBqdXN0IGZpbmlzaGVkIGFuZCBubyBtb3JlIHBlbmRpbmcgcGF5bG9hZHNcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgaGFzTmV4dDogZmFsc2VcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRvbmU6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKGRvbmUpIHtcbiAgICAgICAgLy8gYXN5bmMgaXRlcmFibGUgcmVzb2x2ZXIganVzdCBmaW5pc2hlZCBidXQgdGhlcmUgYXJlIHBlbmRpbmcgcGF5bG9hZHNcbiAgICAgICAgLy8gcmV0dXJuIHRoZSBuZXh0IG9uZVxuICAgICAgICByZXR1cm4gX3RoaXMuX3JhY2UoKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHJldHVyblZhbHVlID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB2YWx1ZSksIHt9LCB7XG4gICAgICAgIGhhc05leHQ6IF90aGlzLl9zdWJzZXF1ZW50UGF5bG9hZHMubGVuZ3RoID4gMFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiByZXR1cm5WYWx1ZSxcbiAgICAgICAgZG9uZTogZmFsc2VcbiAgICAgIH07XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvLl9uZXh0ID0gZnVuY3Rpb24gX25leHQoKSB7XG4gICAgaWYgKCF0aGlzLl9oYXNSZXR1cm5lZEluaXRpYWxSZXN1bHQpIHtcbiAgICAgIHRoaXMuX2hhc1JldHVybmVkSW5pdGlhbFJlc3VsdCA9IHRydWU7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgdmFsdWU6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGhpcy5faW5pdGlhbFJlc3VsdCksIHt9LCB7XG4gICAgICAgICAgaGFzTmV4dDogdHJ1ZVxuICAgICAgICB9KSxcbiAgICAgICAgZG9uZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fc3Vic2VxdWVudFBheWxvYWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgIGRvbmU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9yYWNlKCk7XG4gIH07XG5cbiAgX3Byb3RvLmdldCA9IGZ1bmN0aW9uIGdldChpbml0aWFsUmVzdWx0KSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXMsXG4gICAgICAgIF9yZWY1O1xuXG4gICAgdGhpcy5faW5pdGlhbFJlc3VsdCA9IGluaXRpYWxSZXN1bHQ7XG4gICAgcmV0dXJuIF9yZWY1ID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfcmVmNSwgU1lNQk9MX0FTWU5DX0lURVJBVE9SLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9KSwgX2RlZmluZVByb3BlcnR5KF9yZWY1LCBcIm5leHRcIiwgZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHJldHVybiBfdGhpczIuX25leHQoKTtcbiAgICB9KSwgX3JlZjU7XG4gIH07XG5cbiAgcmV0dXJuIERpc3BhdGNoZXI7XG59KCk7XG5cbmZ1bmN0aW9uIGNyZWF0ZVBhdGNoUmVzdWx0KGRhdGEsIGxhYmVsLCBwYXRoLCBlcnJvcnMpIHtcbiAgdmFyIHZhbHVlID0ge1xuICAgIGRhdGE6IGRhdGEsXG4gICAgcGF0aDogcGF0aCA/IHBhdGhUb0FycmF5KHBhdGgpIDogW11cbiAgfTtcblxuICBpZiAobGFiZWwgIT0gbnVsbCkge1xuICAgIHZhbHVlLmxhYmVsID0gbGFiZWw7XG4gIH1cblxuICBpZiAoZXJyb3JzICYmIGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgdmFsdWUuZXJyb3JzID0gZXJyb3JzO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/execution/execute.mjs\n");
381
382/***/ }),
383
384/***/ "../../../node_modules/graphql/execution/index.mjs":
385/*!************************************************************************************!*\
386 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/execution/index.mjs ***!
387 \************************************************************************************/
388/*! exports provided: responsePathAsArray, execute, executeSync, defaultFieldResolver, defaultTypeResolver, getDirectiveValues */
389/***/ (function(module, __webpack_exports__, __webpack_require__) {
390
391"use strict";
392eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/Path.mjs */ \"../../../node_modules/graphql/jsutils/Path.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"responsePathAsArray\", function() { return _jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_0__[\"pathToArray\"]; });\n\n/* harmony import */ var _execute_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./execute.mjs */ \"../../../node_modules/graphql/execution/execute.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"execute\", function() { return _execute_mjs__WEBPACK_IMPORTED_MODULE_1__[\"execute\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"executeSync\", function() { return _execute_mjs__WEBPACK_IMPORTED_MODULE_1__[\"executeSync\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defaultFieldResolver\", function() { return _execute_mjs__WEBPACK_IMPORTED_MODULE_1__[\"defaultFieldResolver\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defaultTypeResolver\", function() { return _execute_mjs__WEBPACK_IMPORTED_MODULE_1__[\"defaultTypeResolver\"]; });\n\n/* harmony import */ var _values_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./values.mjs */ \"../../../node_modules/graphql/execution/values.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDirectiveValues\", function() { return _values_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getDirectiveValues\"]; });\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXhlY3V0aW9uL2luZGV4Lm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2V4ZWN1dGlvbi9pbmRleC5tanM/N2UwZiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBwYXRoVG9BcnJheSBhcyByZXNwb25zZVBhdGhBc0FycmF5IH0gZnJvbSBcIi4uL2pzdXRpbHMvUGF0aC5tanNcIjtcbmV4cG9ydCB7IGV4ZWN1dGUsIGV4ZWN1dGVTeW5jLCBkZWZhdWx0RmllbGRSZXNvbHZlciwgZGVmYXVsdFR5cGVSZXNvbHZlciB9IGZyb20gXCIuL2V4ZWN1dGUubWpzXCI7XG5leHBvcnQgeyBnZXREaXJlY3RpdmVWYWx1ZXMgfSBmcm9tIFwiLi92YWx1ZXMubWpzXCI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/execution/index.mjs\n");
393
394/***/ }),
395
396/***/ "../../../node_modules/graphql/execution/values.mjs":
397/*!*************************************************************************************!*\
398 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/execution/values.mjs ***!
399 \*************************************************************************************/
400/*! exports provided: getVariableValues, getArgumentValues, getDirectiveValues */
401/***/ (function(module, __webpack_exports__, __webpack_require__) {
402
403"use strict";
404eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getVariableValues\", function() { return getVariableValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getArgumentValues\", function() { return getArgumentValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDirectiveValues\", function() { return getDirectiveValues; });\n/* harmony import */ var _polyfills_find_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/find.mjs */ \"../../../node_modules/graphql/polyfills/find.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_printPathArray_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/printPathArray.mjs */ \"../../../node_modules/graphql/jsutils/printPathArray.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n/* harmony import */ var _utilities_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utilities/valueFromAST.mjs */ \"../../../node_modules/graphql/utilities/valueFromAST.mjs\");\n/* harmony import */ var _utilities_coerceInputValue_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utilities/coerceInputValue.mjs */ \"../../../node_modules/graphql/utilities/coerceInputValue.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n *\n * @internal\n */\nfunction getVariableValues(schema, varDefNodes, inputs, options) {\n var errors = [];\n var maxErrors = options === null || options === void 0 ? void 0 : options.maxErrors;\n\n try {\n var coerced = coerceVariableValues(schema, varDefNodes, inputs, function (error) {\n if (maxErrors != null && errors.length >= maxErrors) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"]('Too many errors processing variables, error limit reached. Execution aborted.');\n }\n\n errors.push(error);\n });\n\n if (errors.length === 0) {\n return {\n coerced: coerced\n };\n }\n } catch (error) {\n errors.push(error);\n }\n\n return {\n errors: errors\n };\n}\n\nfunction coerceVariableValues(schema, varDefNodes, inputs, onError) {\n var coercedValues = {};\n\n var _loop = function _loop(_i2) {\n var varDefNode = varDefNodes[_i2];\n var varName = varDefNode.variable.name.value;\n var varType = Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_8__[\"typeFromAST\"])(schema, varDefNode.type);\n\n if (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInputType\"])(varType)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n var varTypeStr = Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__[\"print\"])(varDefNode.type);\n onError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\"Variable \\\"$\".concat(varName, \"\\\" expected value of type \\\"\").concat(varTypeStr, \"\\\" which cannot be used as an input type.\"), varDefNode.type));\n return \"continue\";\n }\n\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = Object(_utilities_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_9__[\"valueFromAST\"])(varDefNode.defaultValue, varType);\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNonNullType\"])(varType)) {\n var _varTypeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(varType);\n\n onError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\"Variable \\\"$\".concat(varName, \"\\\" of required type \\\"\").concat(_varTypeStr, \"\\\" was not provided.\"), varDefNode));\n }\n\n return \"continue\";\n }\n\n var value = inputs[varName];\n\n if (value === null && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNonNullType\"])(varType)) {\n var _varTypeStr2 = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(varType);\n\n onError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\"Variable \\\"$\".concat(varName, \"\\\" of non-null type \\\"\").concat(_varTypeStr2, \"\\\" must not be null.\"), varDefNode));\n return \"continue\";\n }\n\n coercedValues[varName] = Object(_utilities_coerceInputValue_mjs__WEBPACK_IMPORTED_MODULE_10__[\"coerceInputValue\"])(value, varType, function (path, invalidValue, error) {\n var prefix = \"Variable \\\"$\".concat(varName, \"\\\" got invalid value \") + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(invalidValue);\n\n if (path.length > 0) {\n prefix += \" at \\\"\".concat(varName).concat(Object(_jsutils_printPathArray_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(path), \"\\\"\");\n }\n\n onError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](prefix + '; ' + error.message, varDefNode, undefined, undefined, undefined, error.originalError));\n });\n };\n\n for (var _i2 = 0; _i2 < varDefNodes.length; _i2++) {\n var _ret = _loop(_i2);\n\n if (_ret === \"continue\") continue;\n }\n\n return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n *\n * @internal\n */\n\n\nfunction getArgumentValues(def, node, variableValues) {\n var _node$arguments;\n\n var coercedValues = {}; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n\n var argumentNodes = (_node$arguments = node.arguments) !== null && _node$arguments !== void 0 ? _node$arguments : [];\n var argNodeMap = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(argumentNodes, function (arg) {\n return arg.name.value;\n });\n\n for (var _i4 = 0, _def$args2 = def.args; _i4 < _def$args2.length; _i4++) {\n var argDef = _def$args2[_i4];\n var name = argDef.name;\n var argType = argDef.type;\n var argumentNode = argNodeMap[name];\n\n if (!argumentNode) {\n if (argDef.defaultValue !== undefined) {\n coercedValues[name] = argDef.defaultValue;\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNonNullType\"])(argType)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\"Argument \\\"\".concat(name, \"\\\" of required type \\\"\").concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(argType), \"\\\" \") + 'was not provided.', node);\n }\n\n continue;\n }\n\n var valueNode = argumentNode.value;\n var isNull = valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].NULL;\n\n if (valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].VARIABLE) {\n var variableName = valueNode.name.value;\n\n if (variableValues == null || !hasOwnProperty(variableValues, variableName)) {\n if (argDef.defaultValue !== undefined) {\n coercedValues[name] = argDef.defaultValue;\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNonNullType\"])(argType)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\"Argument \\\"\".concat(name, \"\\\" of required type \\\"\").concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(argType), \"\\\" \") + \"was provided the variable \\\"$\".concat(variableName, \"\\\" which was not provided a runtime value.\"), valueNode);\n }\n\n continue;\n }\n\n isNull = variableValues[variableName] == null;\n }\n\n if (isNull && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNonNullType\"])(argType)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\"Argument \\\"\".concat(name, \"\\\" of non-null type \\\"\").concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(argType), \"\\\" \") + 'must not be null.', valueNode);\n }\n\n var coercedValue = Object(_utilities_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_9__[\"valueFromAST\"])(valueNode, argType, variableValues);\n\n if (coercedValue === undefined) {\n // Note: ValuesOfCorrectTypeRule validation should catch this before\n // execution. This is a runtime check to ensure execution does not\n // continue with an invalid argument value.\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\"Argument \\\"\".concat(name, \"\\\" has invalid value \").concat(Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__[\"print\"])(valueNode), \".\"), valueNode);\n }\n\n coercedValues[name] = coercedValue;\n }\n\n return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nfunction getDirectiveValues(directiveDef, node, variableValues) {\n var directiveNode = node.directives && Object(_polyfills_find_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node.directives, function (directive) {\n return directive.name.value === directiveDef.name;\n });\n\n if (directiveNode) {\n return getArgumentValues(directiveDef, directiveNode, variableValues);\n }\n}\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXhlY3V0aW9uL3ZhbHVlcy5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9leGVjdXRpb24vdmFsdWVzLm1qcz9jZjRlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmaW5kIGZyb20gXCIuLi9wb2x5ZmlsbHMvZmluZC5tanNcIjtcbmltcG9ydCBrZXlNYXAgZnJvbSBcIi4uL2pzdXRpbHMva2V5TWFwLm1qc1wiO1xuaW1wb3J0IGluc3BlY3QgZnJvbSBcIi4uL2pzdXRpbHMvaW5zcGVjdC5tanNcIjtcbmltcG9ydCBwcmludFBhdGhBcnJheSBmcm9tIFwiLi4vanN1dGlscy9wcmludFBhdGhBcnJheS5tanNcIjtcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSBcIi4uL2xhbmd1YWdlL2tpbmRzLm1qc1wiO1xuaW1wb3J0IHsgcHJpbnQgfSBmcm9tIFwiLi4vbGFuZ3VhZ2UvcHJpbnRlci5tanNcIjtcbmltcG9ydCB7IGlzSW5wdXRUeXBlLCBpc05vbk51bGxUeXBlIH0gZnJvbSBcIi4uL3R5cGUvZGVmaW5pdGlvbi5tanNcIjtcbmltcG9ydCB7IHR5cGVGcm9tQVNUIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlRnJvbUFTVC5tanNcIjtcbmltcG9ydCB7IHZhbHVlRnJvbUFTVCB9IGZyb20gXCIuLi91dGlsaXRpZXMvdmFsdWVGcm9tQVNULm1qc1wiO1xuaW1wb3J0IHsgY29lcmNlSW5wdXRWYWx1ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29lcmNlSW5wdXRWYWx1ZS5tanNcIjtcblxuLyoqXG4gKiBQcmVwYXJlcyBhbiBvYmplY3QgbWFwIG9mIHZhcmlhYmxlVmFsdWVzIG9mIHRoZSBjb3JyZWN0IHR5cGUgYmFzZWQgb24gdGhlXG4gKiBwcm92aWRlZCB2YXJpYWJsZSBkZWZpbml0aW9ucyBhbmQgYXJiaXRyYXJ5IGlucHV0LiBJZiB0aGUgaW5wdXQgY2Fubm90IGJlXG4gKiBwYXJzZWQgdG8gbWF0Y2ggdGhlIHZhcmlhYmxlIGRlZmluaXRpb25zLCBhIEdyYXBoUUxFcnJvciB3aWxsIGJlIHRocm93bi5cbiAqXG4gKiBOb3RlOiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3Qgd2l0aCBhIHByb3RvdHlwZSwgc2luY2UgaXQgaXNcbiAqIGV4cG9zZWQgdG8gdXNlciBjb2RlLiBDYXJlIHNob3VsZCBiZSB0YWtlbiB0byBub3QgcHVsbCB2YWx1ZXMgZnJvbSB0aGVcbiAqIE9iamVjdCBwcm90b3R5cGUuXG4gKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYXJpYWJsZVZhbHVlcyhzY2hlbWEsIHZhckRlZk5vZGVzLCBpbnB1dHMsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgbWF4RXJyb3JzID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLm1heEVycm9ycztcblxuICB0cnkge1xuICAgIHZhciBjb2VyY2VkID0gY29lcmNlVmFyaWFibGVWYWx1ZXMoc2NoZW1hLCB2YXJEZWZOb2RlcywgaW5wdXRzLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmIChtYXhFcnJvcnMgIT0gbnVsbCAmJiBlcnJvcnMubGVuZ3RoID49IG1heEVycm9ycykge1xuICAgICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKCdUb28gbWFueSBlcnJvcnMgcHJvY2Vzc2luZyB2YXJpYWJsZXMsIGVycm9yIGxpbWl0IHJlYWNoZWQuIEV4ZWN1dGlvbiBhYm9ydGVkLicpO1xuICAgICAgfVxuXG4gICAgICBlcnJvcnMucHVzaChlcnJvcik7XG4gICAgfSk7XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29lcmNlZDogY29lcmNlZFxuICAgICAgfTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZXJyb3JzLnB1c2goZXJyb3IpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlcnJvcnM6IGVycm9yc1xuICB9O1xufVxuXG5mdW5jdGlvbiBjb2VyY2VWYXJpYWJsZVZhbHVlcyhzY2hlbWEsIHZhckRlZk5vZGVzLCBpbnB1dHMsIG9uRXJyb3IpIHtcbiAgdmFyIGNvZXJjZWRWYWx1ZXMgPSB7fTtcblxuICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChfaTIpIHtcbiAgICB2YXIgdmFyRGVmTm9kZSA9IHZhckRlZk5vZGVzW19pMl07XG4gICAgdmFyIHZhck5hbWUgPSB2YXJEZWZOb2RlLnZhcmlhYmxlLm5hbWUudmFsdWU7XG4gICAgdmFyIHZhclR5cGUgPSB0eXBlRnJvbUFTVChzY2hlbWEsIHZhckRlZk5vZGUudHlwZSk7XG5cbiAgICBpZiAoIWlzSW5wdXRUeXBlKHZhclR5cGUpKSB7XG4gICAgICAvLyBNdXN0IHVzZSBpbnB1dCB0eXBlcyBmb3IgdmFyaWFibGVzLiBUaGlzIHNob3VsZCBiZSBjYXVnaHQgZHVyaW5nXG4gICAgICAvLyB2YWxpZGF0aW9uLCBob3dldmVyIGlzIGNoZWNrZWQgYWdhaW4gaGVyZSBmb3Igc2FmZXR5LlxuICAgICAgdmFyIHZhclR5cGVTdHIgPSBwcmludCh2YXJEZWZOb2RlLnR5cGUpO1xuICAgICAgb25FcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiVmFyaWFibGUgXFxcIiRcIi5jb25jYXQodmFyTmFtZSwgXCJcXFwiIGV4cGVjdGVkIHZhbHVlIG9mIHR5cGUgXFxcIlwiKS5jb25jYXQodmFyVHlwZVN0ciwgXCJcXFwiIHdoaWNoIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGlucHV0IHR5cGUuXCIpLCB2YXJEZWZOb2RlLnR5cGUpKTtcbiAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgfVxuXG4gICAgaWYgKCFoYXNPd25Qcm9wZXJ0eShpbnB1dHMsIHZhck5hbWUpKSB7XG4gICAgICBpZiAodmFyRGVmTm9kZS5kZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgY29lcmNlZFZhbHVlc1t2YXJOYW1lXSA9IHZhbHVlRnJvbUFTVCh2YXJEZWZOb2RlLmRlZmF1bHRWYWx1ZSwgdmFyVHlwZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzTm9uTnVsbFR5cGUodmFyVHlwZSkpIHtcbiAgICAgICAgdmFyIF92YXJUeXBlU3RyID0gaW5zcGVjdCh2YXJUeXBlKTtcblxuICAgICAgICBvbkVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJWYXJpYWJsZSBcXFwiJFwiLmNvbmNhdCh2YXJOYW1lLCBcIlxcXCIgb2YgcmVxdWlyZWQgdHlwZSBcXFwiXCIpLmNvbmNhdChfdmFyVHlwZVN0ciwgXCJcXFwiIHdhcyBub3QgcHJvdmlkZWQuXCIpLCB2YXJEZWZOb2RlKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlID0gaW5wdXRzW3Zhck5hbWVdO1xuXG4gICAgaWYgKHZhbHVlID09PSBudWxsICYmIGlzTm9uTnVsbFR5cGUodmFyVHlwZSkpIHtcbiAgICAgIHZhciBfdmFyVHlwZVN0cjIgPSBpbnNwZWN0KHZhclR5cGUpO1xuXG4gICAgICBvbkVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJWYXJpYWJsZSBcXFwiJFwiLmNvbmNhdCh2YXJOYW1lLCBcIlxcXCIgb2Ygbm9uLW51bGwgdHlwZSBcXFwiXCIpLmNvbmNhdChfdmFyVHlwZVN0cjIsIFwiXFxcIiBtdXN0IG5vdCBiZSBudWxsLlwiKSwgdmFyRGVmTm9kZSkpO1xuICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICB9XG5cbiAgICBjb2VyY2VkVmFsdWVzW3Zhck5hbWVdID0gY29lcmNlSW5wdXRWYWx1ZSh2YWx1ZSwgdmFyVHlwZSwgZnVuY3Rpb24gKHBhdGgsIGludmFsaWRWYWx1ZSwgZXJyb3IpIHtcbiAgICAgIHZhciBwcmVmaXggPSBcIlZhcmlhYmxlIFxcXCIkXCIuY29uY2F0KHZhck5hbWUsIFwiXFxcIiBnb3QgaW52YWxpZCB2YWx1ZSBcIikgKyBpbnNwZWN0KGludmFsaWRWYWx1ZSk7XG5cbiAgICAgIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcHJlZml4ICs9IFwiIGF0IFxcXCJcIi5jb25jYXQodmFyTmFtZSkuY29uY2F0KHByaW50UGF0aEFycmF5KHBhdGgpLCBcIlxcXCJcIik7XG4gICAgICB9XG5cbiAgICAgIG9uRXJyb3IobmV3IEdyYXBoUUxFcnJvcihwcmVmaXggKyAnOyAnICsgZXJyb3IubWVzc2FnZSwgdmFyRGVmTm9kZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZXJyb3Iub3JpZ2luYWxFcnJvcikpO1xuICAgIH0pO1xuICB9O1xuXG4gIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHZhckRlZk5vZGVzLmxlbmd0aDsgX2kyKyspIHtcbiAgICB2YXIgX3JldCA9IF9sb29wKF9pMik7XG5cbiAgICBpZiAoX3JldCA9PT0gXCJjb250aW51ZVwiKSBjb250aW51ZTtcbiAgfVxuXG4gIHJldHVybiBjb2VyY2VkVmFsdWVzO1xufVxuLyoqXG4gKiBQcmVwYXJlcyBhbiBvYmplY3QgbWFwIG9mIGFyZ3VtZW50IHZhbHVlcyBnaXZlbiBhIGxpc3Qgb2YgYXJndW1lbnRcbiAqIGRlZmluaXRpb25zIGFuZCBsaXN0IG9mIGFyZ3VtZW50IEFTVCBub2Rlcy5cbiAqXG4gKiBOb3RlOiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3Qgd2l0aCBhIHByb3RvdHlwZSwgc2luY2UgaXQgaXNcbiAqIGV4cG9zZWQgdG8gdXNlciBjb2RlLiBDYXJlIHNob3VsZCBiZSB0YWtlbiB0byBub3QgcHVsbCB2YWx1ZXMgZnJvbSB0aGVcbiAqIE9iamVjdCBwcm90b3R5cGUuXG4gKlxuICogQGludGVybmFsXG4gKi9cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXJndW1lbnRWYWx1ZXMoZGVmLCBub2RlLCB2YXJpYWJsZVZhbHVlcykge1xuICB2YXIgX25vZGUkYXJndW1lbnRzO1xuXG4gIHZhciBjb2VyY2VkVmFsdWVzID0ge307IC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChTZWU6ICdodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzJylcblxuICB2YXIgYXJndW1lbnROb2RlcyA9IChfbm9kZSRhcmd1bWVudHMgPSBub2RlLmFyZ3VtZW50cykgIT09IG51bGwgJiYgX25vZGUkYXJndW1lbnRzICE9PSB2b2lkIDAgPyBfbm9kZSRhcmd1bWVudHMgOiBbXTtcbiAgdmFyIGFyZ05vZGVNYXAgPSBrZXlNYXAoYXJndW1lbnROb2RlcywgZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiBhcmcubmFtZS52YWx1ZTtcbiAgfSk7XG5cbiAgZm9yICh2YXIgX2k0ID0gMCwgX2RlZiRhcmdzMiA9IGRlZi5hcmdzOyBfaTQgPCBfZGVmJGFyZ3MyLmxlbmd0aDsgX2k0KyspIHtcbiAgICB2YXIgYXJnRGVmID0gX2RlZiRhcmdzMltfaTRdO1xuICAgIHZhciBuYW1lID0gYXJnRGVmLm5hbWU7XG4gICAgdmFyIGFyZ1R5cGUgPSBhcmdEZWYudHlwZTtcbiAgICB2YXIgYXJndW1lbnROb2RlID0gYXJnTm9kZU1hcFtuYW1lXTtcblxuICAgIGlmICghYXJndW1lbnROb2RlKSB7XG4gICAgICBpZiAoYXJnRGVmLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvZXJjZWRWYWx1ZXNbbmFtZV0gPSBhcmdEZWYuZGVmYXVsdFZhbHVlO1xuICAgICAgfSBlbHNlIGlmIChpc05vbk51bGxUeXBlKGFyZ1R5cGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXCJBcmd1bWVudCBcXFwiXCIuY29uY2F0KG5hbWUsIFwiXFxcIiBvZiByZXF1aXJlZCB0eXBlIFxcXCJcIikuY29uY2F0KGluc3BlY3QoYXJnVHlwZSksIFwiXFxcIiBcIikgKyAnd2FzIG5vdCBwcm92aWRlZC4nLCBub2RlKTtcbiAgICAgIH1cblxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlTm9kZSA9IGFyZ3VtZW50Tm9kZS52YWx1ZTtcbiAgICB2YXIgaXNOdWxsID0gdmFsdWVOb2RlLmtpbmQgPT09IEtpbmQuTlVMTDtcblxuICAgIGlmICh2YWx1ZU5vZGUua2luZCA9PT0gS2luZC5WQVJJQUJMRSkge1xuICAgICAgdmFyIHZhcmlhYmxlTmFtZSA9IHZhbHVlTm9kZS5uYW1lLnZhbHVlO1xuXG4gICAgICBpZiAodmFyaWFibGVWYWx1ZXMgPT0gbnVsbCB8fCAhaGFzT3duUHJvcGVydHkodmFyaWFibGVWYWx1ZXMsIHZhcmlhYmxlTmFtZSkpIHtcbiAgICAgICAgaWYgKGFyZ0RlZi5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvZXJjZWRWYWx1ZXNbbmFtZV0gPSBhcmdEZWYuZGVmYXVsdFZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTm9uTnVsbFR5cGUoYXJnVHlwZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFwiQXJndW1lbnQgXFxcIlwiLmNvbmNhdChuYW1lLCBcIlxcXCIgb2YgcmVxdWlyZWQgdHlwZSBcXFwiXCIpLmNvbmNhdChpbnNwZWN0KGFyZ1R5cGUpLCBcIlxcXCIgXCIpICsgXCJ3YXMgcHJvdmlkZWQgdGhlIHZhcmlhYmxlIFxcXCIkXCIuY29uY2F0KHZhcmlhYmxlTmFtZSwgXCJcXFwiIHdoaWNoIHdhcyBub3QgcHJvdmlkZWQgYSBydW50aW1lIHZhbHVlLlwiKSwgdmFsdWVOb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpc051bGwgPSB2YXJpYWJsZVZhbHVlc1t2YXJpYWJsZU5hbWVdID09IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGlzTnVsbCAmJiBpc05vbk51bGxUeXBlKGFyZ1R5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFwiQXJndW1lbnQgXFxcIlwiLmNvbmNhdChuYW1lLCBcIlxcXCIgb2Ygbm9uLW51bGwgdHlwZSBcXFwiXCIpLmNvbmNhdChpbnNwZWN0KGFyZ1R5cGUpLCBcIlxcXCIgXCIpICsgJ211c3Qgbm90IGJlIG51bGwuJywgdmFsdWVOb2RlKTtcbiAgICB9XG5cbiAgICB2YXIgY29lcmNlZFZhbHVlID0gdmFsdWVGcm9tQVNUKHZhbHVlTm9kZSwgYXJnVHlwZSwgdmFyaWFibGVWYWx1ZXMpO1xuXG4gICAgaWYgKGNvZXJjZWRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBOb3RlOiBWYWx1ZXNPZkNvcnJlY3RUeXBlUnVsZSB2YWxpZGF0aW9uIHNob3VsZCBjYXRjaCB0aGlzIGJlZm9yZVxuICAgICAgLy8gZXhlY3V0aW9uLiBUaGlzIGlzIGEgcnVudGltZSBjaGVjayB0byBlbnN1cmUgZXhlY3V0aW9uIGRvZXMgbm90XG4gICAgICAvLyBjb250aW51ZSB3aXRoIGFuIGludmFsaWQgYXJndW1lbnQgdmFsdWUuXG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFwiQXJndW1lbnQgXFxcIlwiLmNvbmNhdChuYW1lLCBcIlxcXCIgaGFzIGludmFsaWQgdmFsdWUgXCIpLmNvbmNhdChwcmludCh2YWx1ZU5vZGUpLCBcIi5cIiksIHZhbHVlTm9kZSk7XG4gICAgfVxuXG4gICAgY29lcmNlZFZhbHVlc1tuYW1lXSA9IGNvZXJjZWRWYWx1ZTtcbiAgfVxuXG4gIHJldHVybiBjb2VyY2VkVmFsdWVzO1xufVxuLyoqXG4gKiBQcmVwYXJlcyBhbiBvYmplY3QgbWFwIG9mIGFyZ3VtZW50IHZhbHVlcyBnaXZlbiBhIGRpcmVjdGl2ZSBkZWZpbml0aW9uXG4gKiBhbmQgYSBBU1Qgbm9kZSB3aGljaCBtYXkgY29udGFpbiBkaXJlY3RpdmVzLiBPcHRpb25hbGx5IGFsc28gYWNjZXB0cyBhIG1hcFxuICogb2YgdmFyaWFibGUgdmFsdWVzLlxuICpcbiAqIElmIHRoZSBkaXJlY3RpdmUgZG9lcyBub3QgZXhpc3Qgb24gdGhlIG5vZGUsIHJldHVybnMgdW5kZWZpbmVkLlxuICpcbiAqIE5vdGU6IFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBhIHBsYWluIE9iamVjdCB3aXRoIGEgcHJvdG90eXBlLCBzaW5jZSBpdCBpc1xuICogZXhwb3NlZCB0byB1c2VyIGNvZGUuIENhcmUgc2hvdWxkIGJlIHRha2VuIHRvIG5vdCBwdWxsIHZhbHVlcyBmcm9tIHRoZVxuICogT2JqZWN0IHByb3RvdHlwZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlyZWN0aXZlVmFsdWVzKGRpcmVjdGl2ZURlZiwgbm9kZSwgdmFyaWFibGVWYWx1ZXMpIHtcbiAgdmFyIGRpcmVjdGl2ZU5vZGUgPSBub2RlLmRpcmVjdGl2ZXMgJiYgZmluZChub2RlLmRpcmVjdGl2ZXMsIGZ1bmN0aW9uIChkaXJlY3RpdmUpIHtcbiAgICByZXR1cm4gZGlyZWN0aXZlLm5hbWUudmFsdWUgPT09IGRpcmVjdGl2ZURlZi5uYW1lO1xuICB9KTtcblxuICBpZiAoZGlyZWN0aXZlTm9kZSkge1xuICAgIHJldHVybiBnZXRBcmd1bWVudFZhbHVlcyhkaXJlY3RpdmVEZWYsIGRpcmVjdGl2ZU5vZGUsIHZhcmlhYmxlVmFsdWVzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/execution/values.mjs\n");
405
406/***/ }),
407
408/***/ "../../../node_modules/graphql/graphql.mjs":
409/*!****************************************************************************!*\
410 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/graphql.mjs ***!
411 \****************************************************************************/
412/*! exports provided: graphql, graphqlSync */
413/***/ (function(module, __webpack_exports__, __webpack_require__) {
414
415"use strict";
416eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"graphql\", function() { return graphql; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"graphqlSync\", function() { return graphqlSync; });\n/* harmony import */ var _jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./jsutils/isPromise.mjs */ \"../../../node_modules/graphql/jsutils/isPromise.mjs\");\n/* harmony import */ var _language_parser_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./language/parser.mjs */ \"../../../node_modules/graphql/language/parser.mjs\");\n/* harmony import */ var _validation_validate_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./validation/validate.mjs */ \"../../../node_modules/graphql/validation/validate.mjs\");\n/* harmony import */ var _type_validate_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./type/validate.mjs */ \"../../../node_modules/graphql/type/validate.mjs\");\n/* harmony import */ var _execution_execute_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./execution/execute.mjs */ \"../../../node_modules/graphql/execution/execute.mjs\");\n\n\n\n\n\n/**\n * This is the primary entry point function for fulfilling GraphQL operations\n * by parsing, validating, and executing a GraphQL document along side a\n * GraphQL schema.\n *\n * More sophisticated GraphQL servers, such as those which persist queries,\n * may wish to separate the validation and execution phases to a static time\n * tooling step, and a server runtime step.\n *\n * Accepts either an object with named arguments, or individual arguments:\n *\n * schema:\n * The GraphQL type system to use when validating and executing a query.\n * source:\n * A GraphQL language formatted string representing the requested operation.\n * rootValue:\n * The value provided as the first argument to resolver functions on the top\n * level type (e.g. the query object type).\n * contextValue:\n * The context value is provided as an argument to resolver functions after\n * field arguments. It is used to pass shared information useful at any point\n * during executing this query, for example the currently logged in user and\n * connections to databases or other services.\n * variableValues:\n * A mapping of variable name to runtime value to use for all variables\n * defined in the requestString.\n * operationName:\n * The name of the operation to use if requestString contains multiple\n * possible operations. Can be omitted if requestString contains only\n * one operation.\n * fieldResolver:\n * A resolver function to use when one is not provided by the schema.\n * If not provided, the default field resolver is used (which looks for a\n * value or method on the source value with the field's name).\n * typeResolver:\n * A type resolver function to use when none is provided by the schema.\n * If not provided, the default type resolver is used (which looks for a\n * `__typename` field or alternatively calls the `isTypeOf` method).\n */\n\nfunction graphql(argsOrSchema, source, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) {\n var _arguments = arguments;\n\n /* eslint-enable no-redeclare */\n // Always return a Promise for a consistent API.\n return new Promise(function (resolve) {\n return resolve( // Extract arguments from object args if provided.\n _arguments.length === 1 ? graphqlImpl(argsOrSchema) : graphqlImpl({\n schema: argsOrSchema,\n source: source,\n rootValue: rootValue,\n contextValue: contextValue,\n variableValues: variableValues,\n operationName: operationName,\n fieldResolver: fieldResolver,\n typeResolver: typeResolver\n }));\n });\n}\n/**\n * The graphqlSync function also fulfills GraphQL operations by parsing,\n * validating, and executing a GraphQL document along side a GraphQL schema.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\n\nfunction graphqlSync(argsOrSchema, source, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) {\n /* eslint-enable no-redeclare */\n // Extract arguments from object args if provided.\n var result = arguments.length === 1 ? graphqlImpl(argsOrSchema) : graphqlImpl({\n schema: argsOrSchema,\n source: source,\n rootValue: rootValue,\n contextValue: contextValue,\n variableValues: variableValues,\n operationName: operationName,\n fieldResolver: fieldResolver,\n typeResolver: typeResolver\n }); // Assert that the execution was synchronous.\n\n if (Object(_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(result)) {\n throw new Error('GraphQL execution failed to complete synchronously.');\n }\n\n return result;\n}\n\nfunction graphqlImpl(args) {\n var schema = args.schema,\n source = args.source,\n rootValue = args.rootValue,\n contextValue = args.contextValue,\n variableValues = args.variableValues,\n operationName = args.operationName,\n fieldResolver = args.fieldResolver,\n typeResolver = args.typeResolver; // Validate Schema\n\n var schemaValidationErrors = Object(_type_validate_mjs__WEBPACK_IMPORTED_MODULE_3__[\"validateSchema\"])(schema);\n\n if (schemaValidationErrors.length > 0) {\n return {\n errors: schemaValidationErrors\n };\n } // Parse\n\n\n var document;\n\n try {\n document = Object(_language_parser_mjs__WEBPACK_IMPORTED_MODULE_1__[\"parse\"])(source);\n } catch (syntaxError) {\n return {\n errors: [syntaxError]\n };\n } // Validate\n\n\n var validationErrors = Object(_validation_validate_mjs__WEBPACK_IMPORTED_MODULE_2__[\"validate\"])(schema, document);\n\n if (validationErrors.length > 0) {\n return {\n errors: validationErrors\n };\n } // Execute\n\n\n return Object(_execution_execute_mjs__WEBPACK_IMPORTED_MODULE_4__[\"execute\"])({\n schema: schema,\n document: document,\n rootValue: rootValue,\n contextValue: contextValue,\n variableValues: variableValues,\n operationName: operationName,\n fieldResolver: fieldResolver,\n typeResolver: typeResolver\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZ3JhcGhxbC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9ncmFwaHFsLm1qcz82NzRiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc1Byb21pc2UgZnJvbSBcIi4vanN1dGlscy9pc1Byb21pc2UubWpzXCI7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCIuL2xhbmd1YWdlL3BhcnNlci5tanNcIjtcbmltcG9ydCB7IHZhbGlkYXRlIH0gZnJvbSBcIi4vdmFsaWRhdGlvbi92YWxpZGF0ZS5tanNcIjtcbmltcG9ydCB7IHZhbGlkYXRlU2NoZW1hIH0gZnJvbSBcIi4vdHlwZS92YWxpZGF0ZS5tanNcIjtcbmltcG9ydCB7IGV4ZWN1dGUgfSBmcm9tIFwiLi9leGVjdXRpb24vZXhlY3V0ZS5tanNcIjtcbi8qKlxuICogVGhpcyBpcyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmdW5jdGlvbiBmb3IgZnVsZmlsbGluZyBHcmFwaFFMIG9wZXJhdGlvbnNcbiAqIGJ5IHBhcnNpbmcsIHZhbGlkYXRpbmcsIGFuZCBleGVjdXRpbmcgYSBHcmFwaFFMIGRvY3VtZW50IGFsb25nIHNpZGUgYVxuICogR3JhcGhRTCBzY2hlbWEuXG4gKlxuICogTW9yZSBzb3BoaXN0aWNhdGVkIEdyYXBoUUwgc2VydmVycywgc3VjaCBhcyB0aG9zZSB3aGljaCBwZXJzaXN0IHF1ZXJpZXMsXG4gKiBtYXkgd2lzaCB0byBzZXBhcmF0ZSB0aGUgdmFsaWRhdGlvbiBhbmQgZXhlY3V0aW9uIHBoYXNlcyB0byBhIHN0YXRpYyB0aW1lXG4gKiB0b29saW5nIHN0ZXAsIGFuZCBhIHNlcnZlciBydW50aW1lIHN0ZXAuXG4gKlxuICogQWNjZXB0cyBlaXRoZXIgYW4gb2JqZWN0IHdpdGggbmFtZWQgYXJndW1lbnRzLCBvciBpbmRpdmlkdWFsIGFyZ3VtZW50czpcbiAqXG4gKiBzY2hlbWE6XG4gKiAgICBUaGUgR3JhcGhRTCB0eXBlIHN5c3RlbSB0byB1c2Ugd2hlbiB2YWxpZGF0aW5nIGFuZCBleGVjdXRpbmcgYSBxdWVyeS5cbiAqIHNvdXJjZTpcbiAqICAgIEEgR3JhcGhRTCBsYW5ndWFnZSBmb3JtYXR0ZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcmVxdWVzdGVkIG9wZXJhdGlvbi5cbiAqIHJvb3RWYWx1ZTpcbiAqICAgIFRoZSB2YWx1ZSBwcm92aWRlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gcmVzb2x2ZXIgZnVuY3Rpb25zIG9uIHRoZSB0b3BcbiAqICAgIGxldmVsIHR5cGUgKGUuZy4gdGhlIHF1ZXJ5IG9iamVjdCB0eXBlKS5cbiAqIGNvbnRleHRWYWx1ZTpcbiAqICAgIFRoZSBjb250ZXh0IHZhbHVlIGlzIHByb3ZpZGVkIGFzIGFuIGFyZ3VtZW50IHRvIHJlc29sdmVyIGZ1bmN0aW9ucyBhZnRlclxuICogICAgZmllbGQgYXJndW1lbnRzLiBJdCBpcyB1c2VkIHRvIHBhc3Mgc2hhcmVkIGluZm9ybWF0aW9uIHVzZWZ1bCBhdCBhbnkgcG9pbnRcbiAqICAgIGR1cmluZyBleGVjdXRpbmcgdGhpcyBxdWVyeSwgZm9yIGV4YW1wbGUgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlciBhbmRcbiAqICAgIGNvbm5lY3Rpb25zIHRvIGRhdGFiYXNlcyBvciBvdGhlciBzZXJ2aWNlcy5cbiAqIHZhcmlhYmxlVmFsdWVzOlxuICogICAgQSBtYXBwaW5nIG9mIHZhcmlhYmxlIG5hbWUgdG8gcnVudGltZSB2YWx1ZSB0byB1c2UgZm9yIGFsbCB2YXJpYWJsZXNcbiAqICAgIGRlZmluZWQgaW4gdGhlIHJlcXVlc3RTdHJpbmcuXG4gKiBvcGVyYXRpb25OYW1lOlxuICogICAgVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbiB0byB1c2UgaWYgcmVxdWVzdFN0cmluZyBjb250YWlucyBtdWx0aXBsZVxuICogICAgcG9zc2libGUgb3BlcmF0aW9ucy4gQ2FuIGJlIG9taXR0ZWQgaWYgcmVxdWVzdFN0cmluZyBjb250YWlucyBvbmx5XG4gKiAgICBvbmUgb3BlcmF0aW9uLlxuICogZmllbGRSZXNvbHZlcjpcbiAqICAgIEEgcmVzb2x2ZXIgZnVuY3Rpb24gdG8gdXNlIHdoZW4gb25lIGlzIG5vdCBwcm92aWRlZCBieSB0aGUgc2NoZW1hLlxuICogICAgSWYgbm90IHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBmaWVsZCByZXNvbHZlciBpcyB1c2VkICh3aGljaCBsb29rcyBmb3IgYVxuICogICAgdmFsdWUgb3IgbWV0aG9kIG9uIHRoZSBzb3VyY2UgdmFsdWUgd2l0aCB0aGUgZmllbGQncyBuYW1lKS5cbiAqIHR5cGVSZXNvbHZlcjpcbiAqICAgIEEgdHlwZSByZXNvbHZlciBmdW5jdGlvbiB0byB1c2Ugd2hlbiBub25lIGlzIHByb3ZpZGVkIGJ5IHRoZSBzY2hlbWEuXG4gKiAgICBJZiBub3QgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IHR5cGUgcmVzb2x2ZXIgaXMgdXNlZCAod2hpY2ggbG9va3MgZm9yIGFcbiAqICAgIGBfX3R5cGVuYW1lYCBmaWVsZCBvciBhbHRlcm5hdGl2ZWx5IGNhbGxzIHRoZSBgaXNUeXBlT2ZgIG1ldGhvZCkuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdyYXBocWwoYXJnc09yU2NoZW1hLCBzb3VyY2UsIHJvb3RWYWx1ZSwgY29udGV4dFZhbHVlLCB2YXJpYWJsZVZhbHVlcywgb3BlcmF0aW9uTmFtZSwgZmllbGRSZXNvbHZlciwgdHlwZVJlc29sdmVyKSB7XG4gIHZhciBfYXJndW1lbnRzID0gYXJndW1lbnRzO1xuXG4gIC8qIGVzbGludC1lbmFibGUgbm8tcmVkZWNsYXJlICovXG4gIC8vIEFsd2F5cyByZXR1cm4gYSBQcm9taXNlIGZvciBhIGNvbnNpc3RlbnQgQVBJLlxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICByZXR1cm4gcmVzb2x2ZSggLy8gRXh0cmFjdCBhcmd1bWVudHMgZnJvbSBvYmplY3QgYXJncyBpZiBwcm92aWRlZC5cbiAgICBfYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IGdyYXBocWxJbXBsKGFyZ3NPclNjaGVtYSkgOiBncmFwaHFsSW1wbCh7XG4gICAgICBzY2hlbWE6IGFyZ3NPclNjaGVtYSxcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgcm9vdFZhbHVlOiByb290VmFsdWUsXG4gICAgICBjb250ZXh0VmFsdWU6IGNvbnRleHRWYWx1ZSxcbiAgICAgIHZhcmlhYmxlVmFsdWVzOiB2YXJpYWJsZVZhbHVlcyxcbiAgICAgIG9wZXJhdGlvbk5hbWU6IG9wZXJhdGlvbk5hbWUsXG4gICAgICBmaWVsZFJlc29sdmVyOiBmaWVsZFJlc29sdmVyLFxuICAgICAgdHlwZVJlc29sdmVyOiB0eXBlUmVzb2x2ZXJcbiAgICB9KSk7XG4gIH0pO1xufVxuLyoqXG4gKiBUaGUgZ3JhcGhxbFN5bmMgZnVuY3Rpb24gYWxzbyBmdWxmaWxscyBHcmFwaFFMIG9wZXJhdGlvbnMgYnkgcGFyc2luZyxcbiAqIHZhbGlkYXRpbmcsIGFuZCBleGVjdXRpbmcgYSBHcmFwaFFMIGRvY3VtZW50IGFsb25nIHNpZGUgYSBHcmFwaFFMIHNjaGVtYS5cbiAqIEhvd2V2ZXIsIGl0IGd1YXJhbnRlZXMgdG8gY29tcGxldGUgc3luY2hyb25vdXNseSAob3IgdGhyb3cgYW4gZXJyb3IpIGFzc3VtaW5nXG4gKiB0aGF0IGFsbCBmaWVsZCByZXNvbHZlcnMgYXJlIGFsc28gc3luY2hyb25vdXMuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdyYXBocWxTeW5jKGFyZ3NPclNjaGVtYSwgc291cmNlLCByb290VmFsdWUsIGNvbnRleHRWYWx1ZSwgdmFyaWFibGVWYWx1ZXMsIG9wZXJhdGlvbk5hbWUsIGZpZWxkUmVzb2x2ZXIsIHR5cGVSZXNvbHZlcikge1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXJlZGVjbGFyZSAqL1xuICAvLyBFeHRyYWN0IGFyZ3VtZW50cyBmcm9tIG9iamVjdCBhcmdzIGlmIHByb3ZpZGVkLlxuICB2YXIgcmVzdWx0ID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IGdyYXBocWxJbXBsKGFyZ3NPclNjaGVtYSkgOiBncmFwaHFsSW1wbCh7XG4gICAgc2NoZW1hOiBhcmdzT3JTY2hlbWEsXG4gICAgc291cmNlOiBzb3VyY2UsXG4gICAgcm9vdFZhbHVlOiByb290VmFsdWUsXG4gICAgY29udGV4dFZhbHVlOiBjb250ZXh0VmFsdWUsXG4gICAgdmFyaWFibGVWYWx1ZXM6IHZhcmlhYmxlVmFsdWVzLFxuICAgIG9wZXJhdGlvbk5hbWU6IG9wZXJhdGlvbk5hbWUsXG4gICAgZmllbGRSZXNvbHZlcjogZmllbGRSZXNvbHZlcixcbiAgICB0eXBlUmVzb2x2ZXI6IHR5cGVSZXNvbHZlclxuICB9KTsgLy8gQXNzZXJ0IHRoYXQgdGhlIGV4ZWN1dGlvbiB3YXMgc3luY2hyb25vdXMuXG5cbiAgaWYgKGlzUHJvbWlzZShyZXN1bHQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHcmFwaFFMIGV4ZWN1dGlvbiBmYWlsZWQgdG8gY29tcGxldGUgc3luY2hyb25vdXNseS4nKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGdyYXBocWxJbXBsKGFyZ3MpIHtcbiAgdmFyIHNjaGVtYSA9IGFyZ3Muc2NoZW1hLFxuICAgICAgc291cmNlID0gYXJncy5zb3VyY2UsXG4gICAgICByb290VmFsdWUgPSBhcmdzLnJvb3RWYWx1ZSxcbiAgICAgIGNvbnRleHRWYWx1ZSA9IGFyZ3MuY29udGV4dFZhbHVlLFxuICAgICAgdmFyaWFibGVWYWx1ZXMgPSBhcmdzLnZhcmlhYmxlVmFsdWVzLFxuICAgICAgb3BlcmF0aW9uTmFtZSA9IGFyZ3Mub3BlcmF0aW9uTmFtZSxcbiAgICAgIGZpZWxkUmVzb2x2ZXIgPSBhcmdzLmZpZWxkUmVzb2x2ZXIsXG4gICAgICB0eXBlUmVzb2x2ZXIgPSBhcmdzLnR5cGVSZXNvbHZlcjsgLy8gVmFsaWRhdGUgU2NoZW1hXG5cbiAgdmFyIHNjaGVtYVZhbGlkYXRpb25FcnJvcnMgPSB2YWxpZGF0ZVNjaGVtYShzY2hlbWEpO1xuXG4gIGlmIChzY2hlbWFWYWxpZGF0aW9uRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3JzOiBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzXG4gICAgfTtcbiAgfSAvLyBQYXJzZVxuXG5cbiAgdmFyIGRvY3VtZW50O1xuXG4gIHRyeSB7XG4gICAgZG9jdW1lbnQgPSBwYXJzZShzb3VyY2UpO1xuICB9IGNhdGNoIChzeW50YXhFcnJvcikge1xuICAgIHJldHVybiB7XG4gICAgICBlcnJvcnM6IFtzeW50YXhFcnJvcl1cbiAgICB9O1xuICB9IC8vIFZhbGlkYXRlXG5cblxuICB2YXIgdmFsaWRhdGlvbkVycm9ycyA9IHZhbGlkYXRlKHNjaGVtYSwgZG9jdW1lbnQpO1xuXG4gIGlmICh2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3JzOiB2YWxpZGF0aW9uRXJyb3JzXG4gICAgfTtcbiAgfSAvLyBFeGVjdXRlXG5cblxuICByZXR1cm4gZXhlY3V0ZSh7XG4gICAgc2NoZW1hOiBzY2hlbWEsXG4gICAgZG9jdW1lbnQ6IGRvY3VtZW50LFxuICAgIHJvb3RWYWx1ZTogcm9vdFZhbHVlLFxuICAgIGNvbnRleHRWYWx1ZTogY29udGV4dFZhbHVlLFxuICAgIHZhcmlhYmxlVmFsdWVzOiB2YXJpYWJsZVZhbHVlcyxcbiAgICBvcGVyYXRpb25OYW1lOiBvcGVyYXRpb25OYW1lLFxuICAgIGZpZWxkUmVzb2x2ZXI6IGZpZWxkUmVzb2x2ZXIsXG4gICAgdHlwZVJlc29sdmVyOiB0eXBlUmVzb2x2ZXJcbiAgfSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/graphql.mjs\n");
417
418/***/ }),
419
420/***/ "../../../node_modules/graphql/index.mjs":
421/*!**************************************************************************!*\
422 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/index.mjs ***!
423 \**************************************************************************/
424/*! exports provided: version, versionInfo, graphql, graphqlSync, GraphQLSchema, GraphQLDirective, GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull, specifiedScalarTypes, GraphQLInt, GraphQLFloat, GraphQLString, GraphQLBoolean, GraphQLID, specifiedDirectives, GraphQLIncludeDirective, GraphQLSkipDirective, GraphQLDeferDirective, GraphQLStreamDirective, GraphQLDeprecatedDirective, GraphQLSpecifiedByDirective, TypeKind, DEFAULT_DEPRECATION_REASON, introspectionTypes, __Schema, __Directive, __DirectiveLocation, __Type, __Field, __InputValue, __EnumValue, __TypeKind, SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef, isSchema, isDirective, isType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isListType, isNonNullType, isInputType, isOutputType, isLeafType, isCompositeType, isAbstractType, isWrappingType, isNullableType, isNamedType, isRequiredArgument, isRequiredInputField, isSpecifiedScalarType, isIntrospectionType, isSpecifiedDirective, assertSchema, assertDirective, assertType, assertScalarType, assertObjectType, assertInterfaceType, assertUnionType, assertEnumType, assertInputObjectType, assertListType, assertNonNullType, assertInputType, assertOutputType, assertLeafType, assertCompositeType, assertAbstractType, assertWrappingType, assertNullableType, assertNamedType, getNullableType, getNamedType, validateSchema, assertValidSchema, Token, Source, Location, getLocation, printLocation, printSourceLocation, Lexer, TokenKind, parse, parseValue, parseType, print, visit, visitInParallel, getVisitFn, BREAK, Kind, DirectiveLocation, isDefinitionNode, isExecutableDefinitionNode, isSelectionNode, isValueNode, isTypeNode, isTypeSystemDefinitionNode, isTypeDefinitionNode, isTypeSystemExtensionNode, isTypeExtensionNode, execute, executeSync, defaultFieldResolver, defaultTypeResolver, responsePathAsArray, getDirectiveValues, subscribe, createSourceEventStream, validate, ValidationContext, specifiedRules, ExecutableDefinitionsRule, FieldsOnCorrectTypeRule, FragmentsOnCompositeTypesRule, KnownArgumentNamesRule, KnownDirectivesRule, KnownFragmentNamesRule, KnownTypeNamesRule, LoneAnonymousOperationRule, NoFragmentCyclesRule, NoUndefinedVariablesRule, NoUnusedFragmentsRule, NoUnusedVariablesRule, OverlappingFieldsCanBeMergedRule, PossibleFragmentSpreadsRule, ProvidedRequiredArgumentsRule, ScalarLeafsRule, SingleFieldSubscriptionsRule, UniqueArgumentNamesRule, UniqueDirectivesPerLocationRule, UniqueFragmentNamesRule, UniqueInputFieldNamesRule, UniqueOperationNamesRule, UniqueVariableNamesRule, ValuesOfCorrectTypeRule, VariablesAreInputTypesRule, VariablesInAllowedPositionRule, LoneSchemaDefinitionRule, UniqueOperationTypesRule, UniqueTypeNamesRule, UniqueEnumValueNamesRule, UniqueFieldDefinitionNamesRule, UniqueDirectiveNamesRule, PossibleTypeExtensionsRule, NoDeprecatedCustomRule, NoSchemaIntrospectionCustomRule, GraphQLError, syntaxError, locatedError, printError, formatError, getIntrospectionQuery, getOperationAST, getOperationRootType, introspectionFromSchema, buildClientSchema, buildASTSchema, buildSchema, getDescription, extendSchema, lexicographicSortSchema, printSchema, printType, printIntrospectionSchema, typeFromAST, valueFromAST, valueFromASTUntyped, astFromValue, TypeInfo, visitWithTypeInfo, coerceInputValue, concatAST, separateOperations, stripIgnoredCharacters, isEqualType, isTypeSubTypeOf, doTypesOverlap, assertValidName, isValidNameError, BreakingChangeType, DangerousChangeType, findBreakingChanges, findDangerousChanges, findDeprecatedUsages */
425/***/ (function(module, __webpack_exports__, __webpack_require__) {
426
427"use strict";
428eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _version_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./version.mjs */ \"../../../node_modules/graphql/version.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return _version_mjs__WEBPACK_IMPORTED_MODULE_0__[\"version\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"versionInfo\", function() { return _version_mjs__WEBPACK_IMPORTED_MODULE_0__[\"versionInfo\"]; });\n\n/* harmony import */ var _graphql_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./graphql.mjs */ \"../../../node_modules/graphql/graphql.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"graphql\", function() { return _graphql_mjs__WEBPACK_IMPORTED_MODULE_1__[\"graphql\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"graphqlSync\", function() { return _graphql_mjs__WEBPACK_IMPORTED_MODULE_1__[\"graphqlSync\"]; });\n\n/* harmony import */ var _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./type/index.mjs */ \"../../../node_modules/graphql/type/index.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSchema\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLScalarType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLScalarType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLObjectType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInterfaceType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLInterfaceType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLUnionType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLUnionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLEnumType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLEnumType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInputObjectType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLInputObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLList\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLList\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLNonNull\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLNonNull\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"specifiedScalarTypes\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"specifiedScalarTypes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInt\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLInt\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLFloat\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLFloat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLString\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLBoolean\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLBoolean\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLID\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLID\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"specifiedDirectives\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"specifiedDirectives\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLIncludeDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLIncludeDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSkipDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLSkipDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLDeferDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLDeferDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLStreamDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLStreamDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLDeprecatedDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLDeprecatedDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSpecifiedByDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLSpecifiedByDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TypeKind\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TypeKind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_DEPRECATION_REASON\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DEFAULT_DEPRECATION_REASON\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"introspectionTypes\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"introspectionTypes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__Schema\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"__Schema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__Directive\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"__Directive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__DirectiveLocation\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"__DirectiveLocation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__Type\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"__Type\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__Field\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"__Field\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__InputValue\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"__InputValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__EnumValue\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"__EnumValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__TypeKind\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"__TypeKind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SchemaMetaFieldDef\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"SchemaMetaFieldDef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TypeMetaFieldDef\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TypeMetaFieldDef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TypeNameMetaFieldDef\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TypeNameMetaFieldDef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSchema\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isScalarType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isScalarType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isObjectType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isInterfaceType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isInterfaceType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isUnionType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isUnionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEnumType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isEnumType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isInputObjectType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isInputObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isListType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isListType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNonNullType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isNonNullType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isInputType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isInputType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isOutputType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isOutputType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isLeafType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isLeafType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isCompositeType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isCompositeType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isAbstractType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isAbstractType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isWrappingType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isWrappingType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNullableType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isNullableType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNamedType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isNamedType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRequiredArgument\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isRequiredArgument\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRequiredInputField\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isRequiredInputField\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSpecifiedScalarType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isSpecifiedScalarType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isIntrospectionType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isIntrospectionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSpecifiedDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isSpecifiedDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertSchema\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertDirective\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertScalarType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertScalarType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertObjectType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertInterfaceType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertInterfaceType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertUnionType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertUnionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertEnumType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertEnumType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertInputObjectType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertInputObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertListType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertListType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertNonNullType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertNonNullType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertInputType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertInputType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertOutputType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertOutputType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertLeafType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertLeafType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertCompositeType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertCompositeType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertAbstractType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertAbstractType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertWrappingType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertWrappingType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertNullableType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertNullableType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertNamedType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertNamedType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getNullableType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getNullableType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getNamedType\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getNamedType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"validateSchema\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"validateSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertValidSchema\", function() { return _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertValidSchema\"]; });\n\n/* harmony import */ var _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./language/index.mjs */ \"../../../node_modules/graphql/language/index.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Token\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Token\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Source\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Source\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Location\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Location\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLocation\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getLocation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printLocation\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"printLocation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printSourceLocation\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"printSourceLocation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Lexer\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Lexer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TokenKind\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"parse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parseValue\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"parseValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parseType\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"parseType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"print\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"print\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"visit\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"visit\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"visitInParallel\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"visitInParallel\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getVisitFn\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getVisitFn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BREAK\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"BREAK\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Kind\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DirectiveLocation\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"DirectiveLocation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isDefinitionNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isDefinitionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isExecutableDefinitionNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isExecutableDefinitionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSelectionNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isSelectionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isValueNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isValueNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeSystemDefinitionNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeSystemDefinitionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeDefinitionNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeDefinitionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeSystemExtensionNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeSystemExtensionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeExtensionNode\", function() { return _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeExtensionNode\"]; });\n\n/* harmony import */ var _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./execution/index.mjs */ \"../../../node_modules/graphql/execution/index.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"execute\", function() { return _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__[\"execute\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"executeSync\", function() { return _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__[\"executeSync\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defaultFieldResolver\", function() { return _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__[\"defaultFieldResolver\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defaultTypeResolver\", function() { return _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__[\"defaultTypeResolver\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"responsePathAsArray\", function() { return _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__[\"responsePathAsArray\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDirectiveValues\", function() { return _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__[\"getDirectiveValues\"]; });\n\n/* harmony import */ var _subscription_index_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./subscription/index.mjs */ \"../../../node_modules/graphql/subscription/index.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"subscribe\", function() { return _subscription_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"subscribe\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createSourceEventStream\", function() { return _subscription_index_mjs__WEBPACK_IMPORTED_MODULE_5__[\"createSourceEventStream\"]; });\n\n/* harmony import */ var _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./validation/index.mjs */ \"../../../node_modules/graphql/validation/index.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"validate\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"validate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ValidationContext\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"ValidationContext\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"specifiedRules\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"specifiedRules\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ExecutableDefinitionsRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"ExecutableDefinitionsRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FieldsOnCorrectTypeRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"FieldsOnCorrectTypeRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FragmentsOnCompositeTypesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"FragmentsOnCompositeTypesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KnownArgumentNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"KnownArgumentNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KnownDirectivesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"KnownDirectivesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KnownFragmentNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"KnownFragmentNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KnownTypeNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"KnownTypeNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LoneAnonymousOperationRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"LoneAnonymousOperationRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoFragmentCyclesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"NoFragmentCyclesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoUndefinedVariablesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"NoUndefinedVariablesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoUnusedFragmentsRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"NoUnusedFragmentsRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoUnusedVariablesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"NoUnusedVariablesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"OverlappingFieldsCanBeMergedRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"OverlappingFieldsCanBeMergedRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PossibleFragmentSpreadsRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"PossibleFragmentSpreadsRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ProvidedRequiredArgumentsRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"ProvidedRequiredArgumentsRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ScalarLeafsRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"ScalarLeafsRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SingleFieldSubscriptionsRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"SingleFieldSubscriptionsRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueArgumentNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"UniqueArgumentNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueDirectivesPerLocationRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"UniqueDirectivesPerLocationRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueFragmentNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"UniqueFragmentNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueInputFieldNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"UniqueInputFieldNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueOperationNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"UniqueOperationNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueVariableNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"UniqueVariableNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ValuesOfCorrectTypeRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"ValuesOfCorrectTypeRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VariablesAreInputTypesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"VariablesAreInputTypesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VariablesInAllowedPositionRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"VariablesInAllowedPositionRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LoneSchemaDefinitionRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"LoneSchemaDefinitionRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueOperationTypesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"UniqueOperationTypesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueTypeNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"UniqueTypeNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueEnumValueNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"UniqueEnumValueNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueFieldDefinitionNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"UniqueFieldDefinitionNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueDirectiveNamesRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"UniqueDirectiveNamesRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PossibleTypeExtensionsRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"PossibleTypeExtensionsRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoDeprecatedCustomRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"NoDeprecatedCustomRule\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoSchemaIntrospectionCustomRule\", function() { return _validation_index_mjs__WEBPACK_IMPORTED_MODULE_6__[\"NoSchemaIntrospectionCustomRule\"]; });\n\n/* harmony import */ var _error_index_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./error/index.mjs */ \"../../../node_modules/graphql/error/index.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLError\", function() { return _error_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"syntaxError\", function() { return _error_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"syntaxError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"locatedError\", function() { return _error_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"locatedError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printError\", function() { return _error_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"printError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatError\", function() { return _error_index_mjs__WEBPACK_IMPORTED_MODULE_7__[\"formatError\"]; });\n\n/* harmony import */ var _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utilities/index.mjs */ \"../../../node_modules/graphql/utilities/index.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getIntrospectionQuery\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"getIntrospectionQuery\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOperationAST\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"getOperationAST\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOperationRootType\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"getOperationRootType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"introspectionFromSchema\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"introspectionFromSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"buildClientSchema\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"buildClientSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"buildASTSchema\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"buildASTSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"buildSchema\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"buildSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDescription\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"getDescription\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"extendSchema\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"extendSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lexicographicSortSchema\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"lexicographicSortSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printSchema\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"printSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printType\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"printType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printIntrospectionSchema\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"printIntrospectionSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"typeFromAST\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"typeFromAST\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"valueFromAST\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"valueFromAST\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"valueFromASTUntyped\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"valueFromASTUntyped\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"astFromValue\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"astFromValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TypeInfo\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"TypeInfo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"visitWithTypeInfo\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"visitWithTypeInfo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"coerceInputValue\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"coerceInputValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"concatAST\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"concatAST\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"separateOperations\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"separateOperations\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stripIgnoredCharacters\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"stripIgnoredCharacters\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEqualType\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"isEqualType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeSubTypeOf\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"isTypeSubTypeOf\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"doTypesOverlap\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"doTypesOverlap\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertValidName\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"assertValidName\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isValidNameError\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"isValidNameError\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BreakingChangeType\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"BreakingChangeType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DangerousChangeType\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"DangerousChangeType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findBreakingChanges\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"findBreakingChanges\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findDangerousChanges\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"findDangerousChanges\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findDeprecatedUsages\", function() { return _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_8__[\"findDeprecatedUsages\"]; });\n\n/**\n * GraphQL.js provides a reference implementation for the GraphQL specification\n * but is also a useful utility for operating on GraphQL files and building\n * sophisticated tools.\n *\n * This primary module exports a general purpose function for fulfilling all\n * steps of the GraphQL specification in a single operation, but also includes\n * utilities for every part of the GraphQL specification:\n *\n * - Parsing the GraphQL language.\n * - Building a GraphQL type schema.\n * - Validating a GraphQL request against a type schema.\n * - Executing a GraphQL request against a type schema.\n *\n * This also includes utility functions for operating on GraphQL types and\n * GraphQL documents to facilitate building tools.\n *\n * You may also import from each sub-directory directly. For example, the\n * following two import statements are equivalent:\n *\n * import { parse } from 'graphql';\n * import { parse } from 'graphql/language';\n */\n// The GraphQL.js version info.\n // The primary entry point into fulfilling a GraphQL request.\n\n // Create and operate on GraphQL type definitions and schema.\n\n\n// Parse and operate on GraphQL language source files.\n\n// Execute GraphQL queries.\n\n\n// Validate GraphQL documents.\n\n// Create, format, and print GraphQL errors.\n\n// Utilities for operating on GraphQL type schema and parsed sources.\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvaW5kZXgubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvaW5kZXgubWpzP2Q4ZWMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHcmFwaFFMLmpzIHByb3ZpZGVzIGEgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGZvciB0aGUgR3JhcGhRTCBzcGVjaWZpY2F0aW9uXG4gKiBidXQgaXMgYWxzbyBhIHVzZWZ1bCB1dGlsaXR5IGZvciBvcGVyYXRpbmcgb24gR3JhcGhRTCBmaWxlcyBhbmQgYnVpbGRpbmdcbiAqIHNvcGhpc3RpY2F0ZWQgdG9vbHMuXG4gKlxuICogVGhpcyBwcmltYXJ5IG1vZHVsZSBleHBvcnRzIGEgZ2VuZXJhbCBwdXJwb3NlIGZ1bmN0aW9uIGZvciBmdWxmaWxsaW5nIGFsbFxuICogc3RlcHMgb2YgdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbiBpbiBhIHNpbmdsZSBvcGVyYXRpb24sIGJ1dCBhbHNvIGluY2x1ZGVzXG4gKiB1dGlsaXRpZXMgZm9yIGV2ZXJ5IHBhcnQgb2YgdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbjpcbiAqXG4gKiAgIC0gUGFyc2luZyB0aGUgR3JhcGhRTCBsYW5ndWFnZS5cbiAqICAgLSBCdWlsZGluZyBhIEdyYXBoUUwgdHlwZSBzY2hlbWEuXG4gKiAgIC0gVmFsaWRhdGluZyBhIEdyYXBoUUwgcmVxdWVzdCBhZ2FpbnN0IGEgdHlwZSBzY2hlbWEuXG4gKiAgIC0gRXhlY3V0aW5nIGEgR3JhcGhRTCByZXF1ZXN0IGFnYWluc3QgYSB0eXBlIHNjaGVtYS5cbiAqXG4gKiBUaGlzIGFsc28gaW5jbHVkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIG9wZXJhdGluZyBvbiBHcmFwaFFMIHR5cGVzIGFuZFxuICogR3JhcGhRTCBkb2N1bWVudHMgdG8gZmFjaWxpdGF0ZSBidWlsZGluZyB0b29scy5cbiAqXG4gKiBZb3UgbWF5IGFsc28gaW1wb3J0IGZyb20gZWFjaCBzdWItZGlyZWN0b3J5IGRpcmVjdGx5LiBGb3IgZXhhbXBsZSwgdGhlXG4gKiBmb2xsb3dpbmcgdHdvIGltcG9ydCBzdGF0ZW1lbnRzIGFyZSBlcXVpdmFsZW50OlxuICpcbiAqICAgICBpbXBvcnQgeyBwYXJzZSB9IGZyb20gJ2dyYXBocWwnO1xuICogICAgIGltcG9ydCB7IHBhcnNlIH0gZnJvbSAnZ3JhcGhxbC9sYW5ndWFnZSc7XG4gKi9cbi8vIFRoZSBHcmFwaFFMLmpzIHZlcnNpb24gaW5mby5cbmV4cG9ydCB7IHZlcnNpb24sIHZlcnNpb25JbmZvIH0gZnJvbSBcIi4vdmVyc2lvbi5tanNcIjsgLy8gVGhlIHByaW1hcnkgZW50cnkgcG9pbnQgaW50byBmdWxmaWxsaW5nIGEgR3JhcGhRTCByZXF1ZXN0LlxuXG5leHBvcnQgeyBncmFwaHFsLCBncmFwaHFsU3luYyB9IGZyb20gXCIuL2dyYXBocWwubWpzXCI7IC8vIENyZWF0ZSBhbmQgb3BlcmF0ZSBvbiBHcmFwaFFMIHR5cGUgZGVmaW5pdGlvbnMgYW5kIHNjaGVtYS5cblxuZXhwb3J0IHsgLy8gRGVmaW5pdGlvbnNcbkdyYXBoUUxTY2hlbWEsIEdyYXBoUUxEaXJlY3RpdmUsIEdyYXBoUUxTY2FsYXJUeXBlLCBHcmFwaFFMT2JqZWN0VHlwZSwgR3JhcGhRTEludGVyZmFjZVR5cGUsIEdyYXBoUUxVbmlvblR5cGUsIEdyYXBoUUxFbnVtVHlwZSwgR3JhcGhRTElucHV0T2JqZWN0VHlwZSwgR3JhcGhRTExpc3QsIEdyYXBoUUxOb25OdWxsIC8vIFN0YW5kYXJkIEdyYXBoUUwgU2NhbGFyc1xuLCBzcGVjaWZpZWRTY2FsYXJUeXBlcywgR3JhcGhRTEludCwgR3JhcGhRTEZsb2F0LCBHcmFwaFFMU3RyaW5nLCBHcmFwaFFMQm9vbGVhbiwgR3JhcGhRTElEIC8vIEJ1aWx0LWluIERpcmVjdGl2ZXMgZGVmaW5lZCBieSB0aGUgU3BlY1xuLCBzcGVjaWZpZWREaXJlY3RpdmVzLCBHcmFwaFFMSW5jbHVkZURpcmVjdGl2ZSwgR3JhcGhRTFNraXBEaXJlY3RpdmUsIEdyYXBoUUxEZWZlckRpcmVjdGl2ZSwgR3JhcGhRTFN0cmVhbURpcmVjdGl2ZSwgR3JhcGhRTERlcHJlY2F0ZWREaXJlY3RpdmUsIEdyYXBoUUxTcGVjaWZpZWRCeURpcmVjdGl2ZSAvLyBcIkVudW1cIiBvZiBUeXBlIEtpbmRzXG4sIFR5cGVLaW5kIC8vIENvbnN0YW50IERlcHJlY2F0aW9uIFJlYXNvblxuLCBERUZBVUxUX0RFUFJFQ0FUSU9OX1JFQVNPTiAvLyBHcmFwaFFMIFR5cGVzIGZvciBpbnRyb3NwZWN0aW9uLlxuLCBpbnRyb3NwZWN0aW9uVHlwZXMsIF9fU2NoZW1hLCBfX0RpcmVjdGl2ZSwgX19EaXJlY3RpdmVMb2NhdGlvbiwgX19UeXBlLCBfX0ZpZWxkLCBfX0lucHV0VmFsdWUsIF9fRW51bVZhbHVlLCBfX1R5cGVLaW5kIC8vIE1ldGEtZmllbGQgZGVmaW5pdGlvbnMuXG4sIFNjaGVtYU1ldGFGaWVsZERlZiwgVHlwZU1ldGFGaWVsZERlZiwgVHlwZU5hbWVNZXRhRmllbGREZWYgLy8gUHJlZGljYXRlc1xuLCBpc1NjaGVtYSwgaXNEaXJlY3RpdmUsIGlzVHlwZSwgaXNTY2FsYXJUeXBlLCBpc09iamVjdFR5cGUsIGlzSW50ZXJmYWNlVHlwZSwgaXNVbmlvblR5cGUsIGlzRW51bVR5cGUsIGlzSW5wdXRPYmplY3RUeXBlLCBpc0xpc3RUeXBlLCBpc05vbk51bGxUeXBlLCBpc0lucHV0VHlwZSwgaXNPdXRwdXRUeXBlLCBpc0xlYWZUeXBlLCBpc0NvbXBvc2l0ZVR5cGUsIGlzQWJzdHJhY3RUeXBlLCBpc1dyYXBwaW5nVHlwZSwgaXNOdWxsYWJsZVR5cGUsIGlzTmFtZWRUeXBlLCBpc1JlcXVpcmVkQXJndW1lbnQsIGlzUmVxdWlyZWRJbnB1dEZpZWxkLCBpc1NwZWNpZmllZFNjYWxhclR5cGUsIGlzSW50cm9zcGVjdGlvblR5cGUsIGlzU3BlY2lmaWVkRGlyZWN0aXZlIC8vIEFzc2VydGlvbnNcbiwgYXNzZXJ0U2NoZW1hLCBhc3NlcnREaXJlY3RpdmUsIGFzc2VydFR5cGUsIGFzc2VydFNjYWxhclR5cGUsIGFzc2VydE9iamVjdFR5cGUsIGFzc2VydEludGVyZmFjZVR5cGUsIGFzc2VydFVuaW9uVHlwZSwgYXNzZXJ0RW51bVR5cGUsIGFzc2VydElucHV0T2JqZWN0VHlwZSwgYXNzZXJ0TGlzdFR5cGUsIGFzc2VydE5vbk51bGxUeXBlLCBhc3NlcnRJbnB1dFR5cGUsIGFzc2VydE91dHB1dFR5cGUsIGFzc2VydExlYWZUeXBlLCBhc3NlcnRDb21wb3NpdGVUeXBlLCBhc3NlcnRBYnN0cmFjdFR5cGUsIGFzc2VydFdyYXBwaW5nVHlwZSwgYXNzZXJ0TnVsbGFibGVUeXBlLCBhc3NlcnROYW1lZFR5cGUgLy8gVW4tbW9kaWZpZXJzXG4sIGdldE51bGxhYmxlVHlwZSwgZ2V0TmFtZWRUeXBlIC8vIFZhbGlkYXRlIEdyYXBoUUwgc2NoZW1hLlxuLCB2YWxpZGF0ZVNjaGVtYSwgYXNzZXJ0VmFsaWRTY2hlbWEgfSBmcm9tIFwiLi90eXBlL2luZGV4Lm1qc1wiO1xuLy8gUGFyc2UgYW5kIG9wZXJhdGUgb24gR3JhcGhRTCBsYW5ndWFnZSBzb3VyY2UgZmlsZXMuXG5leHBvcnQgeyBUb2tlbiwgU291cmNlLCBMb2NhdGlvbiwgZ2V0TG9jYXRpb24gLy8gUHJpbnQgc291cmNlIGxvY2F0aW9uXG4sIHByaW50TG9jYXRpb24sIHByaW50U291cmNlTG9jYXRpb24gLy8gTGV4XG4sIExleGVyLCBUb2tlbktpbmQgLy8gUGFyc2VcbiwgcGFyc2UsIHBhcnNlVmFsdWUsIHBhcnNlVHlwZSAvLyBQcmludFxuLCBwcmludCAvLyBWaXNpdFxuLCB2aXNpdCwgdmlzaXRJblBhcmFsbGVsLCBnZXRWaXNpdEZuLCBCUkVBSywgS2luZCwgRGlyZWN0aXZlTG9jYXRpb24gLy8gUHJlZGljYXRlc1xuLCBpc0RlZmluaXRpb25Ob2RlLCBpc0V4ZWN1dGFibGVEZWZpbml0aW9uTm9kZSwgaXNTZWxlY3Rpb25Ob2RlLCBpc1ZhbHVlTm9kZSwgaXNUeXBlTm9kZSwgaXNUeXBlU3lzdGVtRGVmaW5pdGlvbk5vZGUsIGlzVHlwZURlZmluaXRpb25Ob2RlLCBpc1R5cGVTeXN0ZW1FeHRlbnNpb25Ob2RlLCBpc1R5cGVFeHRlbnNpb25Ob2RlIH0gZnJvbSBcIi4vbGFuZ3VhZ2UvaW5kZXgubWpzXCI7XG4vLyBFeGVjdXRlIEdyYXBoUUwgcXVlcmllcy5cbmV4cG9ydCB7IGV4ZWN1dGUsIGV4ZWN1dGVTeW5jLCBkZWZhdWx0RmllbGRSZXNvbHZlciwgZGVmYXVsdFR5cGVSZXNvbHZlciwgcmVzcG9uc2VQYXRoQXNBcnJheSwgZ2V0RGlyZWN0aXZlVmFsdWVzIH0gZnJvbSBcIi4vZXhlY3V0aW9uL2luZGV4Lm1qc1wiO1xuZXhwb3J0IHsgc3Vic2NyaWJlLCBjcmVhdGVTb3VyY2VFdmVudFN0cmVhbSB9IGZyb20gXCIuL3N1YnNjcmlwdGlvbi9pbmRleC5tanNcIjtcbi8vIFZhbGlkYXRlIEdyYXBoUUwgZG9jdW1lbnRzLlxuZXhwb3J0IHsgdmFsaWRhdGUsIFZhbGlkYXRpb25Db250ZXh0IC8vIEFsbCB2YWxpZGF0aW9uIHJ1bGVzIGluIHRoZSBHcmFwaFFMIFNwZWNpZmljYXRpb24uXG4sIHNwZWNpZmllZFJ1bGVzIC8vIEluZGl2aWR1YWwgdmFsaWRhdGlvbiBydWxlcy5cbiwgRXhlY3V0YWJsZURlZmluaXRpb25zUnVsZSwgRmllbGRzT25Db3JyZWN0VHlwZVJ1bGUsIEZyYWdtZW50c09uQ29tcG9zaXRlVHlwZXNSdWxlLCBLbm93bkFyZ3VtZW50TmFtZXNSdWxlLCBLbm93bkRpcmVjdGl2ZXNSdWxlLCBLbm93bkZyYWdtZW50TmFtZXNSdWxlLCBLbm93blR5cGVOYW1lc1J1bGUsIExvbmVBbm9ueW1vdXNPcGVyYXRpb25SdWxlLCBOb0ZyYWdtZW50Q3ljbGVzUnVsZSwgTm9VbmRlZmluZWRWYXJpYWJsZXNSdWxlLCBOb1VudXNlZEZyYWdtZW50c1J1bGUsIE5vVW51c2VkVmFyaWFibGVzUnVsZSwgT3ZlcmxhcHBpbmdGaWVsZHNDYW5CZU1lcmdlZFJ1bGUsIFBvc3NpYmxlRnJhZ21lbnRTcHJlYWRzUnVsZSwgUHJvdmlkZWRSZXF1aXJlZEFyZ3VtZW50c1J1bGUsIFNjYWxhckxlYWZzUnVsZSwgU2luZ2xlRmllbGRTdWJzY3JpcHRpb25zUnVsZSwgVW5pcXVlQXJndW1lbnROYW1lc1J1bGUsIFVuaXF1ZURpcmVjdGl2ZXNQZXJMb2NhdGlvblJ1bGUsIFVuaXF1ZUZyYWdtZW50TmFtZXNSdWxlLCBVbmlxdWVJbnB1dEZpZWxkTmFtZXNSdWxlLCBVbmlxdWVPcGVyYXRpb25OYW1lc1J1bGUsIFVuaXF1ZVZhcmlhYmxlTmFtZXNSdWxlLCBWYWx1ZXNPZkNvcnJlY3RUeXBlUnVsZSwgVmFyaWFibGVzQXJlSW5wdXRUeXBlc1J1bGUsIFZhcmlhYmxlc0luQWxsb3dlZFBvc2l0aW9uUnVsZSAvLyBTREwtc3BlY2lmaWMgdmFsaWRhdGlvbiBydWxlc1xuLCBMb25lU2NoZW1hRGVmaW5pdGlvblJ1bGUsIFVuaXF1ZU9wZXJhdGlvblR5cGVzUnVsZSwgVW5pcXVlVHlwZU5hbWVzUnVsZSwgVW5pcXVlRW51bVZhbHVlTmFtZXNSdWxlLCBVbmlxdWVGaWVsZERlZmluaXRpb25OYW1lc1J1bGUsIFVuaXF1ZURpcmVjdGl2ZU5hbWVzUnVsZSwgUG9zc2libGVUeXBlRXh0ZW5zaW9uc1J1bGUgLy8gQ3VzdG9tIHZhbGlkYXRpb24gcnVsZXNcbiwgTm9EZXByZWNhdGVkQ3VzdG9tUnVsZSwgTm9TY2hlbWFJbnRyb3NwZWN0aW9uQ3VzdG9tUnVsZSB9IGZyb20gXCIuL3ZhbGlkYXRpb24vaW5kZXgubWpzXCI7XG4vLyBDcmVhdGUsIGZvcm1hdCwgYW5kIHByaW50IEdyYXBoUUwgZXJyb3JzLlxuZXhwb3J0IHsgR3JhcGhRTEVycm9yLCBzeW50YXhFcnJvciwgbG9jYXRlZEVycm9yLCBwcmludEVycm9yLCBmb3JtYXRFcnJvciB9IGZyb20gXCIuL2Vycm9yL2luZGV4Lm1qc1wiO1xuLy8gVXRpbGl0aWVzIGZvciBvcGVyYXRpbmcgb24gR3JhcGhRTCB0eXBlIHNjaGVtYSBhbmQgcGFyc2VkIHNvdXJjZXMuXG5leHBvcnQgeyAvLyBQcm9kdWNlIHRoZSBHcmFwaFFMIHF1ZXJ5IHJlY29tbWVuZGVkIGZvciBhIGZ1bGwgc2NoZW1hIGludHJvc3BlY3Rpb24uXG4vLyBBY2NlcHRzIG9wdGlvbmFsIEludHJvc3BlY3Rpb25PcHRpb25zLlxuZ2V0SW50cm9zcGVjdGlvblF1ZXJ5IC8vIEdldHMgdGhlIHRhcmdldCBPcGVyYXRpb24gZnJvbSBhIERvY3VtZW50LlxuLCBnZXRPcGVyYXRpb25BU1QgLy8gR2V0cyB0aGUgVHlwZSBmb3IgdGhlIHRhcmdldCBPcGVyYXRpb24gQVNULlxuLCBnZXRPcGVyYXRpb25Sb290VHlwZSAvLyBDb252ZXJ0IGEgR3JhcGhRTFNjaGVtYSB0byBhbiBJbnRyb3NwZWN0aW9uUXVlcnkuXG4sIGludHJvc3BlY3Rpb25Gcm9tU2NoZW1hIC8vIEJ1aWxkIGEgR3JhcGhRTFNjaGVtYSBmcm9tIGFuIGludHJvc3BlY3Rpb24gcmVzdWx0LlxuLCBidWlsZENsaWVudFNjaGVtYSAvLyBCdWlsZCBhIEdyYXBoUUxTY2hlbWEgZnJvbSBhIHBhcnNlZCBHcmFwaFFMIFNjaGVtYSBsYW5ndWFnZSBBU1QuXG4sIGJ1aWxkQVNUU2NoZW1hIC8vIEJ1aWxkIGEgR3JhcGhRTFNjaGVtYSBmcm9tIGEgR3JhcGhRTCBzY2hlbWEgbGFuZ3VhZ2UgZG9jdW1lbnQuXG4sIGJ1aWxkU2NoZW1hIC8vIEBkZXByZWNhdGVkOiBHZXQgdGhlIGRlc2NyaXB0aW9uIGZyb20gYSBzY2hlbWEgQVNUIG5vZGUgYW5kIHN1cHBvcnRzIGxlZ2FjeVxuLy8gc3ludGF4IGZvciBzcGVjaWZ5aW5nIGRlc2NyaXB0aW9ucyAtIHdpbGwgYmUgcmVtb3ZlZCBpbiB2MTYuXG4sIGdldERlc2NyaXB0aW9uIC8vIEV4dGVuZHMgYW4gZXhpc3RpbmcgR3JhcGhRTFNjaGVtYSBmcm9tIGEgcGFyc2VkIEdyYXBoUUwgU2NoZW1hXG4vLyBsYW5ndWFnZSBBU1QuXG4sIGV4dGVuZFNjaGVtYSAvLyBTb3J0IGEgR3JhcGhRTFNjaGVtYS5cbiwgbGV4aWNvZ3JhcGhpY1NvcnRTY2hlbWEgLy8gUHJpbnQgYSBHcmFwaFFMU2NoZW1hIHRvIEdyYXBoUUwgU2NoZW1hIGxhbmd1YWdlLlxuLCBwcmludFNjaGVtYSAvLyBQcmludCBhIEdyYXBoUUxUeXBlIHRvIEdyYXBoUUwgU2NoZW1hIGxhbmd1YWdlLlxuLCBwcmludFR5cGUgLy8gUHJpbnRzIHRoZSBidWlsdC1pbiBpbnRyb3NwZWN0aW9uIHNjaGVtYSBpbiB0aGUgU2NoZW1hIExhbmd1YWdlXG4vLyBmb3JtYXQuXG4sIHByaW50SW50cm9zcGVjdGlvblNjaGVtYSAvLyBDcmVhdGUgYSBHcmFwaFFMVHlwZSBmcm9tIGEgR3JhcGhRTCBsYW5ndWFnZSBBU1QuXG4sIHR5cGVGcm9tQVNUIC8vIENyZWF0ZSBhIEphdmFTY3JpcHQgdmFsdWUgZnJvbSBhIEdyYXBoUUwgbGFuZ3VhZ2UgQVNUIHdpdGggYSBUeXBlLlxuLCB2YWx1ZUZyb21BU1QgLy8gQ3JlYXRlIGEgSmF2YVNjcmlwdCB2YWx1ZSBmcm9tIGEgR3JhcGhRTCBsYW5ndWFnZSBBU1Qgd2l0aG91dCBhIFR5cGUuXG4sIHZhbHVlRnJvbUFTVFVudHlwZWQgLy8gQ3JlYXRlIGEgR3JhcGhRTCBsYW5ndWFnZSBBU1QgZnJvbSBhIEphdmFTY3JpcHQgdmFsdWUuXG4sIGFzdEZyb21WYWx1ZSAvLyBBIGhlbHBlciB0byB1c2Ugd2l0aGluIHJlY3Vyc2l2ZS1kZXNjZW50IHZpc2l0b3JzIHdoaWNoIG5lZWQgdG8gYmUgYXdhcmUgb2Zcbi8vIHRoZSBHcmFwaFFMIHR5cGUgc3lzdGVtLlxuLCBUeXBlSW5mbywgdmlzaXRXaXRoVHlwZUluZm8gLy8gQ29lcmNlcyBhIEphdmFTY3JpcHQgdmFsdWUgdG8gYSBHcmFwaFFMIHR5cGUsIG9yIHByb2R1Y2VzIGVycm9ycy5cbiwgY29lcmNlSW5wdXRWYWx1ZSAvLyBDb25jYXRlbmF0ZXMgbXVsdGlwbGUgQVNUIHRvZ2V0aGVyLlxuLCBjb25jYXRBU1QgLy8gU2VwYXJhdGVzIGFuIEFTVCBpbnRvIGFuIEFTVCBwZXIgT3BlcmF0aW9uLlxuLCBzZXBhcmF0ZU9wZXJhdGlvbnMgLy8gU3RyaXBzIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IHNpZ25pZmljYW50IHRvIHRoZSB2YWxpZGl0eSBvciBleGVjdXRpb25cbi8vIG9mIGEgR3JhcGhRTCBkb2N1bWVudC5cbiwgc3RyaXBJZ25vcmVkQ2hhcmFjdGVycyAvLyBDb21wYXJhdG9ycyBmb3IgdHlwZXNcbiwgaXNFcXVhbFR5cGUsIGlzVHlwZVN1YlR5cGVPZiwgZG9UeXBlc092ZXJsYXAgLy8gQXNzZXJ0cyBhIHN0cmluZyBpcyBhIHZhbGlkIEdyYXBoUUwgbmFtZS5cbiwgYXNzZXJ0VmFsaWROYW1lIC8vIERldGVybWluZSBpZiBhIHN0cmluZyBpcyBhIHZhbGlkIEdyYXBoUUwgbmFtZS5cbiwgaXNWYWxpZE5hbWVFcnJvciAvLyBDb21wYXJlcyB0d28gR3JhcGhRTFNjaGVtYXMgYW5kIGRldGVjdHMgYnJlYWtpbmcgY2hhbmdlcy5cbiwgQnJlYWtpbmdDaGFuZ2VUeXBlLCBEYW5nZXJvdXNDaGFuZ2VUeXBlLCBmaW5kQnJlYWtpbmdDaGFuZ2VzLCBmaW5kRGFuZ2Vyb3VzQ2hhbmdlcyAvLyBAZGVwcmVjYXRlZDogUmVwb3J0IGFsbCBkZXByZWNhdGVkIHVzYWdlIHdpdGhpbiBhIEdyYXBoUUwgZG9jdW1lbnQuXG4sIGZpbmREZXByZWNhdGVkVXNhZ2VzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2luZGV4Lm1qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVlBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFrQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/index.mjs\n");
429
430/***/ }),
431
432/***/ "../../../node_modules/graphql/jsutils/Path.mjs":
433/*!*********************************************************************************!*\
434 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/Path.mjs ***!
435 \*********************************************************************************/
436/*! exports provided: addPath, pathToArray */
437/***/ (function(module, __webpack_exports__, __webpack_require__) {
438
439"use strict";
440eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addPath\", function() { return addPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathToArray\", function() { return pathToArray; });\n/**\n * Given a Path and a key, return a new Path containing the new key.\n */\nfunction addPath(prev, key, typename) {\n return {\n prev: prev,\n key: key,\n typename: typename\n };\n}\n/**\n * Given a Path, return an Array of the path keys.\n */\n\nfunction pathToArray(path) {\n var flattened = [];\n var curr = path;\n\n while (curr) {\n flattened.push(curr.key);\n curr = curr.prev;\n }\n\n return flattened.reverse();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9QYXRoLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvUGF0aC5tanM/MmVhNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdpdmVuIGEgUGF0aCBhbmQgYSBrZXksIHJldHVybiBhIG5ldyBQYXRoIGNvbnRhaW5pbmcgdGhlIG5ldyBrZXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRQYXRoKHByZXYsIGtleSwgdHlwZW5hbWUpIHtcbiAgcmV0dXJuIHtcbiAgICBwcmV2OiBwcmV2LFxuICAgIGtleToga2V5LFxuICAgIHR5cGVuYW1lOiB0eXBlbmFtZVxuICB9O1xufVxuLyoqXG4gKiBHaXZlbiBhIFBhdGgsIHJldHVybiBhbiBBcnJheSBvZiB0aGUgcGF0aCBrZXlzLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoVG9BcnJheShwYXRoKSB7XG4gIHZhciBmbGF0dGVuZWQgPSBbXTtcbiAgdmFyIGN1cnIgPSBwYXRoO1xuXG4gIHdoaWxlIChjdXJyKSB7XG4gICAgZmxhdHRlbmVkLnB1c2goY3Vyci5rZXkpO1xuICAgIGN1cnIgPSBjdXJyLnByZXY7XG4gIH1cblxuICByZXR1cm4gZmxhdHRlbmVkLnJldmVyc2UoKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/Path.mjs\n");
441
442/***/ }),
443
444/***/ "../../../node_modules/graphql/jsutils/defineInspect.mjs":
445/*!******************************************************************************************!*\
446 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/defineInspect.mjs ***!
447 \******************************************************************************************/
448/*! exports provided: default */
449/***/ (function(module, __webpack_exports__, __webpack_require__) {
450
451"use strict";
452eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return defineInspect; });\n/* harmony import */ var _invariant_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _nodejsCustomInspectSymbol_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./nodejsCustomInspectSymbol.mjs */ \"../../../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs\");\n\n\n/**\n * The `defineInspect()` function defines `inspect()` prototype method as alias of `toJSON`\n */\n\nfunction defineInspect(classObject) {\n var fn = classObject.prototype.toJSON;\n typeof fn === 'function' || Object(_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0);\n classObject.prototype.inspect = fn; // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n if (_nodejsCustomInspectSymbol_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) {\n classObject.prototype[_nodejsCustomInspectSymbol_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"]] = fn;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9kZWZpbmVJbnNwZWN0Lm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvZGVmaW5lSW5zcGVjdC5tanM/MTg1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW52YXJpYW50IGZyb20gXCIuL2ludmFyaWFudC5tanNcIjtcbmltcG9ydCBub2RlanNDdXN0b21JbnNwZWN0U3ltYm9sIGZyb20gXCIuL25vZGVqc0N1c3RvbUluc3BlY3RTeW1ib2wubWpzXCI7XG4vKipcbiAqIFRoZSBgZGVmaW5lSW5zcGVjdCgpYCBmdW5jdGlvbiBkZWZpbmVzIGBpbnNwZWN0KClgIHByb3RvdHlwZSBtZXRob2QgYXMgYWxpYXMgb2YgYHRvSlNPTmBcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWZpbmVJbnNwZWN0KGNsYXNzT2JqZWN0KSB7XG4gIHZhciBmbiA9IGNsYXNzT2JqZWN0LnByb3RvdHlwZS50b0pTT047XG4gIHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyB8fCBpbnZhcmlhbnQoMCk7XG4gIGNsYXNzT2JqZWN0LnByb3RvdHlwZS5pbnNwZWN0ID0gZm47IC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlIChTZWU6ICdodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMzE3JylcblxuICBpZiAobm9kZWpzQ3VzdG9tSW5zcGVjdFN5bWJvbCkge1xuICAgIGNsYXNzT2JqZWN0LnByb3RvdHlwZVtub2RlanNDdXN0b21JbnNwZWN0U3ltYm9sXSA9IGZuO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/defineInspect.mjs\n");
453
454/***/ }),
455
456/***/ "../../../node_modules/graphql/jsutils/devAssert.mjs":
457/*!**************************************************************************************!*\
458 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/devAssert.mjs ***!
459 \**************************************************************************************/
460/*! exports provided: default */
461/***/ (function(module, __webpack_exports__, __webpack_require__) {
462
463"use strict";
464eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return devAssert; });\nfunction devAssert(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9kZXZBc3NlcnQubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9kZXZBc3NlcnQubWpzP2ZhMmQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGV2QXNzZXJ0KGNvbmRpdGlvbiwgbWVzc2FnZSkge1xuICB2YXIgYm9vbGVhbkNvbmRpdGlvbiA9IEJvb2xlYW4oY29uZGl0aW9uKTsgLy8gaXN0YW5idWwgaWdub3JlIGVsc2UgKFNlZSB0cmFuc2Zvcm1hdGlvbiBkb25lIGluICcuL3Jlc291cmNlcy9pbmxpbmVJbnZhcmlhbnQuanMnKVxuXG4gIGlmICghYm9vbGVhbkNvbmRpdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/devAssert.mjs\n");
465
466/***/ }),
467
468/***/ "../../../node_modules/graphql/jsutils/didYouMean.mjs":
469/*!***************************************************************************************!*\
470 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/didYouMean.mjs ***!
471 \***************************************************************************************/
472/*! exports provided: default */
473/***/ (function(module, __webpack_exports__, __webpack_require__) {
474
475"use strict";
476eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return didYouMean; });\nvar MAX_SUGGESTIONS = 5;\n/**\n * Given [ A, B, C ] return ' Did you mean A, B, or C?'.\n */\n\n// eslint-disable-next-line no-redeclare\nfunction didYouMean(firstArg, secondArg) {\n var _ref = typeof firstArg === 'string' ? [firstArg, secondArg] : [undefined, firstArg],\n subMessage = _ref[0],\n suggestionsArg = _ref[1];\n\n var message = ' Did you mean ';\n\n if (subMessage) {\n message += subMessage + ' ';\n }\n\n var suggestions = suggestionsArg.map(function (x) {\n return \"\\\"\".concat(x, \"\\\"\");\n });\n\n switch (suggestions.length) {\n case 0:\n return '';\n\n case 1:\n return message + suggestions[0] + '?';\n\n case 2:\n return message + suggestions[0] + ' or ' + suggestions[1] + '?';\n }\n\n var selected = suggestions.slice(0, MAX_SUGGESTIONS);\n var lastItem = selected.pop();\n return message + selected.join(', ') + ', or ' + lastItem + '?';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9kaWRZb3VNZWFuLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvZGlkWW91TWVhbi5tanM/ZWU1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgTUFYX1NVR0dFU1RJT05TID0gNTtcbi8qKlxuICogR2l2ZW4gWyBBLCBCLCBDIF0gcmV0dXJuICcgRGlkIHlvdSBtZWFuIEEsIEIsIG9yIEM/Jy5cbiAqL1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVkZWNsYXJlXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaWRZb3VNZWFuKGZpcnN0QXJnLCBzZWNvbmRBcmcpIHtcbiAgdmFyIF9yZWYgPSB0eXBlb2YgZmlyc3RBcmcgPT09ICdzdHJpbmcnID8gW2ZpcnN0QXJnLCBzZWNvbmRBcmddIDogW3VuZGVmaW5lZCwgZmlyc3RBcmddLFxuICAgICAgc3ViTWVzc2FnZSA9IF9yZWZbMF0sXG4gICAgICBzdWdnZXN0aW9uc0FyZyA9IF9yZWZbMV07XG5cbiAgdmFyIG1lc3NhZ2UgPSAnIERpZCB5b3UgbWVhbiAnO1xuXG4gIGlmIChzdWJNZXNzYWdlKSB7XG4gICAgbWVzc2FnZSArPSBzdWJNZXNzYWdlICsgJyAnO1xuICB9XG5cbiAgdmFyIHN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnNBcmcubWFwKGZ1bmN0aW9uICh4KSB7XG4gICAgcmV0dXJuIFwiXFxcIlwiLmNvbmNhdCh4LCBcIlxcXCJcIik7XG4gIH0pO1xuXG4gIHN3aXRjaCAoc3VnZ2VzdGlvbnMubGVuZ3RoKSB7XG4gICAgY2FzZSAwOlxuICAgICAgcmV0dXJuICcnO1xuXG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIG1lc3NhZ2UgKyBzdWdnZXN0aW9uc1swXSArICc/JztcblxuICAgIGNhc2UgMjpcbiAgICAgIHJldHVybiBtZXNzYWdlICsgc3VnZ2VzdGlvbnNbMF0gKyAnIG9yICcgKyBzdWdnZXN0aW9uc1sxXSArICc/JztcbiAgfVxuXG4gIHZhciBzZWxlY3RlZCA9IHN1Z2dlc3Rpb25zLnNsaWNlKDAsIE1BWF9TVUdHRVNUSU9OUyk7XG4gIHZhciBsYXN0SXRlbSA9IHNlbGVjdGVkLnBvcCgpO1xuICByZXR1cm4gbWVzc2FnZSArIHNlbGVjdGVkLmpvaW4oJywgJykgKyAnLCBvciAnICsgbGFzdEl0ZW0gKyAnPyc7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/didYouMean.mjs\n");
477
478/***/ }),
479
480/***/ "../../../node_modules/graphql/jsutils/identityFunc.mjs":
481/*!*****************************************************************************************!*\
482 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/identityFunc.mjs ***!
483 \*****************************************************************************************/
484/*! exports provided: default */
485/***/ (function(module, __webpack_exports__, __webpack_require__) {
486
487"use strict";
488eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return identityFunc; });\n/**\n * Returns the first argument it receives.\n */\nfunction identityFunc(x) {\n return x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pZGVudGl0eUZ1bmMubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pZGVudGl0eUZ1bmMubWpzP2Q5ZTIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCBhcmd1bWVudCBpdCByZWNlaXZlcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaWRlbnRpdHlGdW5jKHgpIHtcbiAgcmV0dXJuIHg7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/identityFunc.mjs\n");
489
490/***/ }),
491
492/***/ "../../../node_modules/graphql/jsutils/inspect.mjs":
493/*!************************************************************************************!*\
494 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/inspect.mjs ***!
495 \************************************************************************************/
496/*! exports provided: default */
497/***/ (function(module, __webpack_exports__, __webpack_require__) {
498
499"use strict";
500eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return inspect; });\n/* harmony import */ var _nodejsCustomInspectSymbol_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nodejsCustomInspectSymbol.mjs */ \"../../../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable flowtype/no-weak-types */\n\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nfunction inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (_typeof(value)) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n\n case 'object':\n if (value === null) {\n return 'null';\n }\n\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (previouslySeenValues.indexOf(value) !== -1) {\n return '[Circular]';\n }\n\n var seenValues = [].concat(previouslySeenValues, [value]);\n var customInspectFn = getCustomFn(value);\n\n if (customInspectFn !== undefined) {\n var customValue = customInspectFn.call(value); // check for infinite recursion\n\n if (customValue !== value) {\n return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction formatObject(object, seenValues) {\n var keys = Object.keys(object);\n\n if (keys.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n var properties = keys.map(function (key) {\n var value = formatValue(object[key], seenValues);\n return key + ': ' + value;\n });\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n var remaining = array.length - len;\n var items = [];\n\n for (var i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(\"... \".concat(remaining, \" more items\"));\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getCustomFn(object) {\n var customInspectFn = object[String(_nodejsCustomInspectSymbol_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])];\n\n if (typeof customInspectFn === 'function') {\n return customInspectFn;\n }\n\n if (typeof object.inspect === 'function') {\n return object.inspect;\n }\n}\n\nfunction getObjectTag(object) {\n var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n var name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pbnNwZWN0Lm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvaW5zcGVjdC5tanM/ZTJmYSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbi8qIGVzbGludC1kaXNhYmxlIGZsb3d0eXBlL25vLXdlYWstdHlwZXMgKi9cbmltcG9ydCBub2RlanNDdXN0b21JbnNwZWN0U3ltYm9sIGZyb20gXCIuL25vZGVqc0N1c3RvbUluc3BlY3RTeW1ib2wubWpzXCI7XG52YXIgTUFYX0FSUkFZX0xFTkdUSCA9IDEwO1xudmFyIE1BWF9SRUNVUlNJVkVfREVQVEggPSAyO1xuLyoqXG4gKiBVc2VkIHRvIHByaW50IHZhbHVlcyBpbiBlcnJvciBtZXNzYWdlcy5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbnNwZWN0KHZhbHVlKSB7XG4gIHJldHVybiBmb3JtYXRWYWx1ZSh2YWx1ZSwgW10pO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRWYWx1ZSh2YWx1ZSwgc2VlblZhbHVlcykge1xuICBzd2l0Y2ggKF90eXBlb2YodmFsdWUpKSB7XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG5cbiAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICByZXR1cm4gdmFsdWUubmFtZSA/IFwiW2Z1bmN0aW9uIFwiLmNvbmNhdCh2YWx1ZS5uYW1lLCBcIl1cIikgOiAnW2Z1bmN0aW9uXSc7XG5cbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAnbnVsbCc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmb3JtYXRPYmplY3RWYWx1ZSh2YWx1ZSwgc2VlblZhbHVlcyk7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0T2JqZWN0VmFsdWUodmFsdWUsIHByZXZpb3VzbHlTZWVuVmFsdWVzKSB7XG4gIGlmIChwcmV2aW91c2x5U2VlblZhbHVlcy5pbmRleE9mKHZhbHVlKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gJ1tDaXJjdWxhcl0nO1xuICB9XG5cbiAgdmFyIHNlZW5WYWx1ZXMgPSBbXS5jb25jYXQocHJldmlvdXNseVNlZW5WYWx1ZXMsIFt2YWx1ZV0pO1xuICB2YXIgY3VzdG9tSW5zcGVjdEZuID0gZ2V0Q3VzdG9tRm4odmFsdWUpO1xuXG4gIGlmIChjdXN0b21JbnNwZWN0Rm4gIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBjdXN0b21WYWx1ZSA9IGN1c3RvbUluc3BlY3RGbi5jYWxsKHZhbHVlKTsgLy8gY2hlY2sgZm9yIGluZmluaXRlIHJlY3Vyc2lvblxuXG4gICAgaWYgKGN1c3RvbVZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBjdXN0b21WYWx1ZSA9PT0gJ3N0cmluZycgPyBjdXN0b21WYWx1ZSA6IGZvcm1hdFZhbHVlKGN1c3RvbVZhbHVlLCBzZWVuVmFsdWVzKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZm9ybWF0QXJyYXkodmFsdWUsIHNlZW5WYWx1ZXMpO1xuICB9XG5cbiAgcmV0dXJuIGZvcm1hdE9iamVjdCh2YWx1ZSwgc2VlblZhbHVlcyk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdE9iamVjdChvYmplY3QsIHNlZW5WYWx1ZXMpIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpO1xuXG4gIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAne30nO1xuICB9XG5cbiAgaWYgKHNlZW5WYWx1ZXMubGVuZ3RoID4gTUFYX1JFQ1VSU0lWRV9ERVBUSCkge1xuICAgIHJldHVybiAnWycgKyBnZXRPYmplY3RUYWcob2JqZWN0KSArICddJztcbiAgfVxuXG4gIHZhciBwcm9wZXJ0aWVzID0ga2V5cy5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciB2YWx1ZSA9IGZvcm1hdFZhbHVlKG9iamVjdFtrZXldLCBzZWVuVmFsdWVzKTtcbiAgICByZXR1cm4ga2V5ICsgJzogJyArIHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuICd7ICcgKyBwcm9wZXJ0aWVzLmpvaW4oJywgJykgKyAnIH0nO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRBcnJheShhcnJheSwgc2VlblZhbHVlcykge1xuICBpZiAoYXJyYXkubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdbXSc7XG4gIH1cblxuICBpZiAoc2VlblZhbHVlcy5sZW5ndGggPiBNQVhfUkVDVVJTSVZFX0RFUFRIKSB7XG4gICAgcmV0dXJuICdbQXJyYXldJztcbiAgfVxuXG4gIHZhciBsZW4gPSBNYXRoLm1pbihNQVhfQVJSQVlfTEVOR1RILCBhcnJheS5sZW5ndGgpO1xuICB2YXIgcmVtYWluaW5nID0gYXJyYXkubGVuZ3RoIC0gbGVuO1xuICB2YXIgaXRlbXMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaXRlbXMucHVzaChmb3JtYXRWYWx1ZShhcnJheVtpXSwgc2VlblZhbHVlcykpO1xuICB9XG5cbiAgaWYgKHJlbWFpbmluZyA9PT0gMSkge1xuICAgIGl0ZW1zLnB1c2goJy4uLiAxIG1vcmUgaXRlbScpO1xuICB9IGVsc2UgaWYgKHJlbWFpbmluZyA+IDEpIHtcbiAgICBpdGVtcy5wdXNoKFwiLi4uIFwiLmNvbmNhdChyZW1haW5pbmcsIFwiIG1vcmUgaXRlbXNcIikpO1xuICB9XG5cbiAgcmV0dXJuICdbJyArIGl0ZW1zLmpvaW4oJywgJykgKyAnXSc7XG59XG5cbmZ1bmN0aW9uIGdldEN1c3RvbUZuKG9iamVjdCkge1xuICB2YXIgY3VzdG9tSW5zcGVjdEZuID0gb2JqZWN0W1N0cmluZyhub2RlanNDdXN0b21JbnNwZWN0U3ltYm9sKV07XG5cbiAgaWYgKHR5cGVvZiBjdXN0b21JbnNwZWN0Rm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gY3VzdG9tSW5zcGVjdEZuO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvYmplY3QuaW5zcGVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBvYmplY3QuaW5zcGVjdDtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRPYmplY3RUYWcob2JqZWN0KSB7XG4gIHZhciB0YWcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KS5yZXBsYWNlKC9eXFxbb2JqZWN0IC8sICcnKS5yZXBsYWNlKC9dJC8sICcnKTtcblxuICBpZiAodGFnID09PSAnT2JqZWN0JyAmJiB0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIG5hbWUgPSBvYmplY3QuY29uc3RydWN0b3IubmFtZTtcblxuICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycgJiYgbmFtZSAhPT0gJycpIHtcbiAgICAgIHJldHVybiBuYW1lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YWc7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/inspect.mjs\n");
501
502/***/ }),
503
504/***/ "../../../node_modules/graphql/jsutils/instanceOf.mjs":
505/*!***************************************************************************************!*\
506 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/instanceOf.mjs ***!
507 \***************************************************************************************/
508/*! exports provided: default */
509/***/ (function(module, __webpack_exports__, __webpack_require__) {
510
511"use strict";
512eval("__webpack_require__.r(__webpack_exports__);\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n */\n// See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n// See: https://webpack.js.org/guides/production/\n/* harmony default export */ __webpack_exports__[\"default\"] = ( false ? // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n// eslint-disable-next-line no-shadow\nundefined : // eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n\n if (value) {\n var valueClass = value.constructor;\n var className = constructor.name;\n\n if (className && valueClass && valueClass.name === className) {\n throw new Error(\"Cannot use \".concat(className, \" \\\"\").concat(value, \"\\\" from another module or realm.\\n\\nEnsure that there is only one instance of \\\"graphql\\\" in the node_modules\\ndirectory. If different versions of \\\"graphql\\\" are the dependencies of other\\nrelied on modules, use \\\"resolutions\\\" to ensure only one version is installed.\\n\\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\\n\\nDuplicate \\\"graphql\\\" modules cannot be used at the same time since different\\nversions may have different capabilities and behavior. The data from one\\nversion used in the function from another could produce confusing and\\nspurious results.\"));\n }\n }\n\n return false;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pbnN0YW5jZU9mLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvaW5zdGFuY2VPZi5tanM/Y2RiYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgcmVwbGFjZW1lbnQgZm9yIGluc3RhbmNlb2Ygd2hpY2ggaW5jbHVkZXMgYW4gZXJyb3Igd2FybmluZyB3aGVuIG11bHRpLXJlYWxtXG4gKiBjb25zdHJ1Y3RvcnMgYXJlIGRldGVjdGVkLlxuICovXG4vLyBTZWU6IGh0dHBzOi8vZXhwcmVzc2pzLmNvbS9lbi9hZHZhbmNlZC9iZXN0LXByYWN0aWNlLXBlcmZvcm1hbmNlLmh0bWwjc2V0LW5vZGVfZW52LXRvLXByb2R1Y3Rpb25cbi8vIFNlZTogaHR0cHM6Ly93ZWJwYWNrLmpzLm9yZy9ndWlkZXMvcHJvZHVjdGlvbi9cbmV4cG9ydCBkZWZhdWx0IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicgPyAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjMxNycpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG5mdW5jdGlvbiBpbnN0YW5jZU9mKHZhbHVlLCBjb25zdHJ1Y3Rvcikge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBjb25zdHJ1Y3Rvcjtcbn0gOiAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG5mdW5jdGlvbiBpbnN0YW5jZU9mKHZhbHVlLCBjb25zdHJ1Y3Rvcikge1xuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBjb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHZhbHVlKSB7XG4gICAgdmFyIHZhbHVlQ2xhc3MgPSB2YWx1ZS5jb25zdHJ1Y3RvcjtcbiAgICB2YXIgY2xhc3NOYW1lID0gY29uc3RydWN0b3IubmFtZTtcblxuICAgIGlmIChjbGFzc05hbWUgJiYgdmFsdWVDbGFzcyAmJiB2YWx1ZUNsYXNzLm5hbWUgPT09IGNsYXNzTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHVzZSBcIi5jb25jYXQoY2xhc3NOYW1lLCBcIiBcXFwiXCIpLmNvbmNhdCh2YWx1ZSwgXCJcXFwiIGZyb20gYW5vdGhlciBtb2R1bGUgb3IgcmVhbG0uXFxuXFxuRW5zdXJlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgaW5zdGFuY2Ugb2YgXFxcImdyYXBocWxcXFwiIGluIHRoZSBub2RlX21vZHVsZXNcXG5kaXJlY3RvcnkuIElmIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBcXFwiZ3JhcGhxbFxcXCIgYXJlIHRoZSBkZXBlbmRlbmNpZXMgb2Ygb3RoZXJcXG5yZWxpZWQgb24gbW9kdWxlcywgdXNlIFxcXCJyZXNvbHV0aW9uc1xcXCIgdG8gZW5zdXJlIG9ubHkgb25lIHZlcnNpb24gaXMgaW5zdGFsbGVkLlxcblxcbmh0dHBzOi8veWFybnBrZy5jb20vZW4vZG9jcy9zZWxlY3RpdmUtdmVyc2lvbi1yZXNvbHV0aW9uc1xcblxcbkR1cGxpY2F0ZSBcXFwiZ3JhcGhxbFxcXCIgbW9kdWxlcyBjYW5ub3QgYmUgdXNlZCBhdCB0aGUgc2FtZSB0aW1lIHNpbmNlIGRpZmZlcmVudFxcbnZlcnNpb25zIG1heSBoYXZlIGRpZmZlcmVudCBjYXBhYmlsaXRpZXMgYW5kIGJlaGF2aW9yLiBUaGUgZGF0YSBmcm9tIG9uZVxcbnZlcnNpb24gdXNlZCBpbiB0aGUgZnVuY3Rpb24gZnJvbSBhbm90aGVyIGNvdWxkIHByb2R1Y2UgY29uZnVzaW5nIGFuZFxcbnNwdXJpb3VzIHJlc3VsdHMuXCIpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/instanceOf.mjs\n");
513
514/***/ }),
515
516/***/ "../../../node_modules/graphql/jsutils/invariant.mjs":
517/*!**************************************************************************************!*\
518 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/invariant.mjs ***!
519 \**************************************************************************************/
520/*! exports provided: default */
521/***/ (function(module, __webpack_exports__, __webpack_require__) {
522
523"use strict";
524eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return invariant; });\nfunction invariant(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message != null ? message : 'Unexpected invariant triggered.');\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pbnZhcmlhbnQubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pbnZhcmlhbnQubWpzPzAxZDMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW52YXJpYW50KGNvbmRpdGlvbiwgbWVzc2FnZSkge1xuICB2YXIgYm9vbGVhbkNvbmRpdGlvbiA9IEJvb2xlYW4oY29uZGl0aW9uKTsgLy8gaXN0YW5idWwgaWdub3JlIGVsc2UgKFNlZSB0cmFuc2Zvcm1hdGlvbiBkb25lIGluICcuL3Jlc291cmNlcy9pbmxpbmVJbnZhcmlhbnQuanMnKVxuXG4gIGlmICghYm9vbGVhbkNvbmRpdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlICE9IG51bGwgPyBtZXNzYWdlIDogJ1VuZXhwZWN0ZWQgaW52YXJpYW50IHRyaWdnZXJlZC4nKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/invariant.mjs\n");
525
526/***/ }),
527
528/***/ "../../../node_modules/graphql/jsutils/isAsyncIterable.mjs":
529/*!********************************************************************************************!*\
530 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/isAsyncIterable.mjs ***!
531 \********************************************************************************************/
532/*! exports provided: default */
533/***/ (function(module, __webpack_exports__, __webpack_require__) {
534
535"use strict";
536eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isAsyncIterable; });\n/* harmony import */ var _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/symbols.mjs */ \"../../../node_modules/graphql/polyfills/symbols.mjs\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n/**\n * Returns true if the provided object implements the AsyncIterator protocol via\n * either implementing a `Symbol.asyncIterator` or `\"@@asyncIterator\"` method.\n */\n\n// eslint-disable-next-line no-redeclare\nfunction isAsyncIterable(maybeAsyncIterable) {\n if (maybeAsyncIterable == null || _typeof(maybeAsyncIterable) !== 'object') {\n return false;\n }\n\n return typeof maybeAsyncIterable[_polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_0__[\"SYMBOL_ASYNC_ITERATOR\"]] === 'function';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc0FzeW5jSXRlcmFibGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc0FzeW5jSXRlcmFibGUubWpzP2E0ZjgiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5pbXBvcnQgeyBTWU1CT0xfQVNZTkNfSVRFUkFUT1IgfSBmcm9tIFwiLi4vcG9seWZpbGxzL3N5bWJvbHMubWpzXCI7XG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvdmlkZWQgb2JqZWN0IGltcGxlbWVudHMgdGhlIEFzeW5jSXRlcmF0b3IgcHJvdG9jb2wgdmlhXG4gKiBlaXRoZXIgaW1wbGVtZW50aW5nIGEgYFN5bWJvbC5hc3luY0l0ZXJhdG9yYCBvciBgXCJAQGFzeW5jSXRlcmF0b3JcImAgbWV0aG9kLlxuICovXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQXN5bmNJdGVyYWJsZShtYXliZUFzeW5jSXRlcmFibGUpIHtcbiAgaWYgKG1heWJlQXN5bmNJdGVyYWJsZSA9PSBudWxsIHx8IF90eXBlb2YobWF5YmVBc3luY0l0ZXJhYmxlKSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHlwZW9mIG1heWJlQXN5bmNJdGVyYWJsZVtTWU1CT0xfQVNZTkNfSVRFUkFUT1JdID09PSAnZnVuY3Rpb24nO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/isAsyncIterable.mjs\n");
537
538/***/ }),
539
540/***/ "../../../node_modules/graphql/jsutils/isCollection.mjs":
541/*!*****************************************************************************************!*\
542 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/isCollection.mjs ***!
543 \*****************************************************************************************/
544/*! exports provided: default */
545/***/ (function(module, __webpack_exports__, __webpack_require__) {
546
547"use strict";
548eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isCollection; });\n/* harmony import */ var _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/symbols.mjs */ \"../../../node_modules/graphql/polyfills/symbols.mjs\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n/**\n * Returns true if the provided object is an Object (i.e. not a string literal)\n * and is either Iterable or Array-like.\n *\n * This may be used in place of [Array.isArray()][isArray] to determine if an\n * object should be iterated-over. It always excludes string literals and\n * includes Arrays (regardless of if it is Iterable). It also includes other\n * Array-like objects such as NodeList, TypedArray, and Buffer.\n *\n * @example\n *\n * isCollection([ 1, 2, 3 ]) // true\n * isCollection('ABC') // false\n * isCollection({ length: 1, 0: 'Alpha' }) // true\n * isCollection({ key: 'value' }) // false\n * isCollection(new Map()) // true\n *\n * @param obj\n * An Object value which might implement the Iterable or Array-like protocols.\n * @return {boolean} true if Iterable or Array-like Object.\n */\n\nfunction isCollection(obj) {\n if (obj == null || _typeof(obj) !== 'object') {\n return false;\n } // Is Array like?\n\n\n var length = obj.length;\n\n if (typeof length === 'number' && length >= 0 && length % 1 === 0) {\n return true;\n } // Is Iterable?\n\n\n return typeof obj[_polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_0__[\"SYMBOL_ITERATOR\"]] === 'function';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc0NvbGxlY3Rpb24ubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc0NvbGxlY3Rpb24ubWpzPzU5ZjMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5pbXBvcnQgeyBTWU1CT0xfSVRFUkFUT1IgfSBmcm9tIFwiLi4vcG9seWZpbGxzL3N5bWJvbHMubWpzXCI7XG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvdmlkZWQgb2JqZWN0IGlzIGFuIE9iamVjdCAoaS5lLiBub3QgYSBzdHJpbmcgbGl0ZXJhbClcbiAqIGFuZCBpcyBlaXRoZXIgSXRlcmFibGUgb3IgQXJyYXktbGlrZS5cbiAqXG4gKiBUaGlzIG1heSBiZSB1c2VkIGluIHBsYWNlIG9mIFtBcnJheS5pc0FycmF5KCldW2lzQXJyYXldIHRvIGRldGVybWluZSBpZiBhblxuICogb2JqZWN0IHNob3VsZCBiZSBpdGVyYXRlZC1vdmVyLiBJdCBhbHdheXMgZXhjbHVkZXMgc3RyaW5nIGxpdGVyYWxzIGFuZFxuICogaW5jbHVkZXMgQXJyYXlzIChyZWdhcmRsZXNzIG9mIGlmIGl0IGlzIEl0ZXJhYmxlKS4gSXQgYWxzbyBpbmNsdWRlcyBvdGhlclxuICogQXJyYXktbGlrZSBvYmplY3RzIHN1Y2ggYXMgTm9kZUxpc3QsIFR5cGVkQXJyYXksIGFuZCBCdWZmZXIuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBpc0NvbGxlY3Rpb24oWyAxLCAyLCAzIF0pIC8vIHRydWVcbiAqIGlzQ29sbGVjdGlvbignQUJDJykgLy8gZmFsc2VcbiAqIGlzQ29sbGVjdGlvbih7IGxlbmd0aDogMSwgMDogJ0FscGhhJyB9KSAvLyB0cnVlXG4gKiBpc0NvbGxlY3Rpb24oeyBrZXk6ICd2YWx1ZScgfSkgLy8gZmFsc2VcbiAqIGlzQ29sbGVjdGlvbihuZXcgTWFwKCkpIC8vIHRydWVcbiAqXG4gKiBAcGFyYW0gb2JqXG4gKiAgIEFuIE9iamVjdCB2YWx1ZSB3aGljaCBtaWdodCBpbXBsZW1lbnQgdGhlIEl0ZXJhYmxlIG9yIEFycmF5LWxpa2UgcHJvdG9jb2xzLlxuICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiBJdGVyYWJsZSBvciBBcnJheS1saWtlIE9iamVjdC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0NvbGxlY3Rpb24ob2JqKSB7XG4gIGlmIChvYmogPT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IC8vIElzIEFycmF5IGxpa2U/XG5cblxuICB2YXIgbGVuZ3RoID0gb2JqLmxlbmd0aDtcblxuICBpZiAodHlwZW9mIGxlbmd0aCA9PT0gJ251bWJlcicgJiYgbGVuZ3RoID49IDAgJiYgbGVuZ3RoICUgMSA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIElzIEl0ZXJhYmxlP1xuXG5cbiAgcmV0dXJuIHR5cGVvZiBvYmpbU1lNQk9MX0lURVJBVE9SXSA9PT0gJ2Z1bmN0aW9uJztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/isCollection.mjs\n");
549
550/***/ }),
551
552/***/ "../../../node_modules/graphql/jsutils/isObjectLike.mjs":
553/*!*****************************************************************************************!*\
554 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/isObjectLike.mjs ***!
555 \*****************************************************************************************/
556/*! exports provided: default */
557/***/ (function(module, __webpack_exports__, __webpack_require__) {
558
559"use strict";
560eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isObjectLike; });\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nfunction isObjectLike(value) {\n return _typeof(value) == 'object' && value !== null;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc09iamVjdExpa2UubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc09iamVjdExpa2UubWpzP2I2MGYiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3RcbiAqIGBudWxsYCBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gX3R5cGVvZih2YWx1ZSkgPT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGw7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/isObjectLike.mjs\n");
561
562/***/ }),
563
564/***/ "../../../node_modules/graphql/jsutils/isPromise.mjs":
565/*!**************************************************************************************!*\
566 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/isPromise.mjs ***!
567 \**************************************************************************************/
568/*! exports provided: default */
569/***/ (function(module, __webpack_exports__, __webpack_require__) {
570
571"use strict";
572eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isPromise; });\n/**\n * Returns true if the value acts like a Promise, i.e. has a \"then\" function,\n * otherwise returns false.\n */\n// eslint-disable-next-line no-redeclare\nfunction isPromise(value) {\n return typeof (value === null || value === void 0 ? void 0 : value.then) === 'function';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc1Byb21pc2UubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc1Byb21pc2UubWpzPzcxNWUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIHZhbHVlIGFjdHMgbGlrZSBhIFByb21pc2UsIGkuZS4gaGFzIGEgXCJ0aGVuXCIgZnVuY3Rpb24sXG4gKiBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlZGVjbGFyZVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNQcm9taXNlKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWx1ZS50aGVuKSA9PT0gJ2Z1bmN0aW9uJztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/isPromise.mjs\n");
573
574/***/ }),
575
576/***/ "../../../node_modules/graphql/jsutils/keyMap.mjs":
577/*!***********************************************************************************!*\
578 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/keyMap.mjs ***!
579 \***********************************************************************************/
580/*! exports provided: default */
581/***/ (function(module, __webpack_exports__, __webpack_require__) {
582
583"use strict";
584eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return keyMap; });\n/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * for each value in the array.\n *\n * This provides a convenient lookup for the array items if the key function\n * produces unique results.\n *\n * const phoneBook = [\n * { name: 'Jon', num: '555-1234' },\n * { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * // { Jon: { name: 'Jon', num: '555-1234' },\n * // Jenny: { name: 'Jenny', num: '867-5309' } }\n * const entriesByName = keyMap(\n * phoneBook,\n * entry => entry.name\n * )\n *\n * // { name: 'Jenny', num: '857-6309' }\n * const jennyEntry = entriesByName['Jenny']\n *\n */\nfunction keyMap(list, keyFn) {\n return list.reduce(function (map, item) {\n map[keyFn(item)] = item;\n return map;\n }, Object.create(null));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9rZXlNYXAubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9rZXlNYXAubWpzPzI3OGIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVzIGEga2V5ZWQgSlMgb2JqZWN0IGZyb20gYW4gYXJyYXksIGdpdmVuIGEgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUga2V5c1xuICogZm9yIGVhY2ggdmFsdWUgaW4gdGhlIGFycmF5LlxuICpcbiAqIFRoaXMgcHJvdmlkZXMgYSBjb252ZW5pZW50IGxvb2t1cCBmb3IgdGhlIGFycmF5IGl0ZW1zIGlmIHRoZSBrZXkgZnVuY3Rpb25cbiAqIHByb2R1Y2VzIHVuaXF1ZSByZXN1bHRzLlxuICpcbiAqICAgICBjb25zdCBwaG9uZUJvb2sgPSBbXG4gKiAgICAgICB7IG5hbWU6ICdKb24nLCBudW06ICc1NTUtMTIzNCcgfSxcbiAqICAgICAgIHsgbmFtZTogJ0plbm55JywgbnVtOiAnODY3LTUzMDknIH1cbiAqICAgICBdXG4gKlxuICogICAgIC8vIHsgSm9uOiB7IG5hbWU6ICdKb24nLCBudW06ICc1NTUtMTIzNCcgfSxcbiAqICAgICAvLyAgIEplbm55OiB7IG5hbWU6ICdKZW5ueScsIG51bTogJzg2Ny01MzA5JyB9IH1cbiAqICAgICBjb25zdCBlbnRyaWVzQnlOYW1lID0ga2V5TWFwKFxuICogICAgICAgcGhvbmVCb29rLFxuICogICAgICAgZW50cnkgPT4gZW50cnkubmFtZVxuICogICAgIClcbiAqXG4gKiAgICAgLy8geyBuYW1lOiAnSmVubnknLCBudW06ICc4NTctNjMwOScgfVxuICogICAgIGNvbnN0IGplbm55RW50cnkgPSBlbnRyaWVzQnlOYW1lWydKZW5ueSddXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBrZXlNYXAobGlzdCwga2V5Rm4pIHtcbiAgcmV0dXJuIGxpc3QucmVkdWNlKGZ1bmN0aW9uIChtYXAsIGl0ZW0pIHtcbiAgICBtYXBba2V5Rm4oaXRlbSldID0gaXRlbTtcbiAgICByZXR1cm4gbWFwO1xuICB9LCBPYmplY3QuY3JlYXRlKG51bGwpKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/keyMap.mjs\n");
585
586/***/ }),
587
588/***/ "../../../node_modules/graphql/jsutils/keyValMap.mjs":
589/*!**************************************************************************************!*\
590 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/keyValMap.mjs ***!
591 \**************************************************************************************/
592/*! exports provided: default */
593/***/ (function(module, __webpack_exports__, __webpack_require__) {
594
595"use strict";
596eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return keyValMap; });\n/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * and a function to produce the values from each item in the array.\n *\n * const phoneBook = [\n * { name: 'Jon', num: '555-1234' },\n * { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * // { Jon: '555-1234', Jenny: '867-5309' }\n * const phonesByName = keyValMap(\n * phoneBook,\n * entry => entry.name,\n * entry => entry.num\n * )\n *\n */\nfunction keyValMap(list, keyFn, valFn) {\n return list.reduce(function (map, item) {\n map[keyFn(item)] = valFn(item);\n return map;\n }, Object.create(null));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9rZXlWYWxNYXAubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9rZXlWYWxNYXAubWpzPzI5OTgiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVzIGEga2V5ZWQgSlMgb2JqZWN0IGZyb20gYW4gYXJyYXksIGdpdmVuIGEgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUga2V5c1xuICogYW5kIGEgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUgdmFsdWVzIGZyb20gZWFjaCBpdGVtIGluIHRoZSBhcnJheS5cbiAqXG4gKiAgICAgY29uc3QgcGhvbmVCb29rID0gW1xuICogICAgICAgeyBuYW1lOiAnSm9uJywgbnVtOiAnNTU1LTEyMzQnIH0sXG4gKiAgICAgICB7IG5hbWU6ICdKZW5ueScsIG51bTogJzg2Ny01MzA5JyB9XG4gKiAgICAgXVxuICpcbiAqICAgICAvLyB7IEpvbjogJzU1NS0xMjM0JywgSmVubnk6ICc4NjctNTMwOScgfVxuICogICAgIGNvbnN0IHBob25lc0J5TmFtZSA9IGtleVZhbE1hcChcbiAqICAgICAgIHBob25lQm9vayxcbiAqICAgICAgIGVudHJ5ID0+IGVudHJ5Lm5hbWUsXG4gKiAgICAgICBlbnRyeSA9PiBlbnRyeS5udW1cbiAqICAgICApXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBrZXlWYWxNYXAobGlzdCwga2V5Rm4sIHZhbEZuKSB7XG4gIHJldHVybiBsaXN0LnJlZHVjZShmdW5jdGlvbiAobWFwLCBpdGVtKSB7XG4gICAgbWFwW2tleUZuKGl0ZW0pXSA9IHZhbEZuKGl0ZW0pO1xuICAgIHJldHVybiBtYXA7XG4gIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/keyValMap.mjs\n");
597
598/***/ }),
599
600/***/ "../../../node_modules/graphql/jsutils/mapValue.mjs":
601/*!*************************************************************************************!*\
602 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/mapValue.mjs ***!
603 \*************************************************************************************/
604/*! exports provided: default */
605/***/ (function(module, __webpack_exports__, __webpack_require__) {
606
607"use strict";
608eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return mapValue; });\n/* harmony import */ var _polyfills_objectEntries_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/objectEntries.mjs */ \"../../../node_modules/graphql/polyfills/objectEntries.mjs\");\n\n\n/**\n * Creates an object map with the same keys as `map` and values generated by\n * running each value of `map` thru `fn`.\n */\nfunction mapValue(map, fn) {\n var result = Object.create(null);\n\n for (var _i2 = 0, _objectEntries2 = Object(_polyfills_objectEntries_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(map); _i2 < _objectEntries2.length; _i2++) {\n var _ref2 = _objectEntries2[_i2];\n var _key = _ref2[0];\n var _value = _ref2[1];\n result[_key] = fn(_value, _key);\n }\n\n return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9tYXBWYWx1ZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL21hcFZhbHVlLm1qcz84NjgwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBvYmplY3RFbnRyaWVzIGZyb20gXCIuLi9wb2x5ZmlsbHMvb2JqZWN0RW50cmllcy5tanNcIjtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCBtYXAgd2l0aCB0aGUgc2FtZSBrZXlzIGFzIGBtYXBgIGFuZCB2YWx1ZXMgZ2VuZXJhdGVkIGJ5XG4gKiBydW5uaW5nIGVhY2ggdmFsdWUgb2YgYG1hcGAgdGhydSBgZm5gLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtYXBWYWx1ZShtYXAsIGZuKSB7XG4gIHZhciByZXN1bHQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAodmFyIF9pMiA9IDAsIF9vYmplY3RFbnRyaWVzMiA9IG9iamVjdEVudHJpZXMobWFwKTsgX2kyIDwgX29iamVjdEVudHJpZXMyLmxlbmd0aDsgX2kyKyspIHtcbiAgICB2YXIgX3JlZjIgPSBfb2JqZWN0RW50cmllczJbX2kyXTtcbiAgICB2YXIgX2tleSA9IF9yZWYyWzBdO1xuICAgIHZhciBfdmFsdWUgPSBfcmVmMlsxXTtcbiAgICByZXN1bHRbX2tleV0gPSBmbihfdmFsdWUsIF9rZXkpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/mapValue.mjs\n");
609
610/***/ }),
611
612/***/ "../../../node_modules/graphql/jsutils/memoize3.mjs":
613/*!*************************************************************************************!*\
614 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/memoize3.mjs ***!
615 \*************************************************************************************/
616/*! exports provided: default */
617/***/ (function(module, __webpack_exports__, __webpack_require__) {
618
619"use strict";
620eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return memoize3; });\n/**\n * Memoizes the provided three-argument function.\n */\nfunction memoize3(fn) {\n var cache0;\n return function memoized(a1, a2, a3) {\n if (!cache0) {\n cache0 = new WeakMap();\n }\n\n var cache1 = cache0.get(a1);\n var cache2;\n\n if (cache1) {\n cache2 = cache1.get(a2);\n\n if (cache2) {\n var cachedValue = cache2.get(a3);\n\n if (cachedValue !== undefined) {\n return cachedValue;\n }\n }\n } else {\n cache1 = new WeakMap();\n cache0.set(a1, cache1);\n }\n\n if (!cache2) {\n cache2 = new WeakMap();\n cache1.set(a2, cache2);\n }\n\n var newValue = fn(a1, a2, a3);\n cache2.set(a3, newValue);\n return newValue;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9tZW1vaXplMy5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL21lbW9pemUzLm1qcz9hYmFlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTWVtb2l6ZXMgdGhlIHByb3ZpZGVkIHRocmVlLWFyZ3VtZW50IGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZW1vaXplMyhmbikge1xuICB2YXIgY2FjaGUwO1xuICByZXR1cm4gZnVuY3Rpb24gbWVtb2l6ZWQoYTEsIGEyLCBhMykge1xuICAgIGlmICghY2FjaGUwKSB7XG4gICAgICBjYWNoZTAgPSBuZXcgV2Vha01hcCgpO1xuICAgIH1cblxuICAgIHZhciBjYWNoZTEgPSBjYWNoZTAuZ2V0KGExKTtcbiAgICB2YXIgY2FjaGUyO1xuXG4gICAgaWYgKGNhY2hlMSkge1xuICAgICAgY2FjaGUyID0gY2FjaGUxLmdldChhMik7XG5cbiAgICAgIGlmIChjYWNoZTIpIHtcbiAgICAgICAgdmFyIGNhY2hlZFZhbHVlID0gY2FjaGUyLmdldChhMyk7XG5cbiAgICAgICAgaWYgKGNhY2hlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY2FjaGUxID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgIGNhY2hlMC5zZXQoYTEsIGNhY2hlMSk7XG4gICAgfVxuXG4gICAgaWYgKCFjYWNoZTIpIHtcbiAgICAgIGNhY2hlMiA9IG5ldyBXZWFrTWFwKCk7XG4gICAgICBjYWNoZTEuc2V0KGEyLCBjYWNoZTIpO1xuICAgIH1cblxuICAgIHZhciBuZXdWYWx1ZSA9IGZuKGExLCBhMiwgYTMpO1xuICAgIGNhY2hlMi5zZXQoYTMsIG5ld1ZhbHVlKTtcbiAgICByZXR1cm4gbmV3VmFsdWU7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/memoize3.mjs\n");
621
622/***/ }),
623
624/***/ "../../../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs":
625/*!******************************************************************************************************!*\
626 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs ***!
627 \******************************************************************************************************/
628/*! exports provided: default */
629/***/ (function(module, __webpack_exports__, __webpack_require__) {
630
631"use strict";
632eval("__webpack_require__.r(__webpack_exports__);\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nvar nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;\n/* harmony default export */ __webpack_exports__[\"default\"] = (nodejsCustomInspectSymbol);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9ub2RlanNDdXN0b21JbnNwZWN0U3ltYm9sLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvbm9kZWpzQ3VzdG9tSW5zcGVjdFN5bWJvbC5tanM/NjA5NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjMxNycpXG52YXIgbm9kZWpzQ3VzdG9tSW5zcGVjdFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIFN5bWJvbC5mb3IgPT09ICdmdW5jdGlvbicgPyBTeW1ib2wuZm9yKCdub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbScpIDogdW5kZWZpbmVkO1xuZXhwb3J0IGRlZmF1bHQgbm9kZWpzQ3VzdG9tSW5zcGVjdFN5bWJvbDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs\n");
633
634/***/ }),
635
636/***/ "../../../node_modules/graphql/jsutils/printPathArray.mjs":
637/*!*******************************************************************************************!*\
638 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/printPathArray.mjs ***!
639 \*******************************************************************************************/
640/*! exports provided: default */
641/***/ (function(module, __webpack_exports__, __webpack_require__) {
642
643"use strict";
644eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return printPathArray; });\n/**\n * Build a string describing the path.\n */\nfunction printPathArray(path) {\n return path.map(function (key) {\n return typeof key === 'number' ? '[' + key.toString() + ']' : '.' + key;\n }).join('');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9wcmludFBhdGhBcnJheS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL3ByaW50UGF0aEFycmF5Lm1qcz8wNzYzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnVpbGQgYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgcGF0aC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHJpbnRQYXRoQXJyYXkocGF0aCkge1xuICByZXR1cm4gcGF0aC5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJyA/ICdbJyArIGtleS50b1N0cmluZygpICsgJ10nIDogJy4nICsga2V5O1xuICB9KS5qb2luKCcnKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/printPathArray.mjs\n");
645
646/***/ }),
647
648/***/ "../../../node_modules/graphql/jsutils/promiseForObject.mjs":
649/*!*********************************************************************************************!*\
650 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/promiseForObject.mjs ***!
651 \*********************************************************************************************/
652/*! exports provided: default */
653/***/ (function(module, __webpack_exports__, __webpack_require__) {
654
655"use strict";
656eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return promiseForObject; });\n/**\n * This function transforms a JS object `ObjMap<Promise<T>>` into\n * a `Promise<ObjMap<T>>`\n *\n * This is akin to bluebird's `Promise.props`, but implemented only using\n * `Promise.all` so it will work with any implementation of ES6 promises.\n */\nfunction promiseForObject(object) {\n var keys = Object.keys(object);\n var valuesAndPromises = keys.map(function (name) {\n return object[name];\n });\n return Promise.all(valuesAndPromises).then(function (values) {\n return values.reduce(function (resolvedObject, value, i) {\n resolvedObject[keys[i]] = value;\n return resolvedObject;\n }, Object.create(null));\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9wcm9taXNlRm9yT2JqZWN0Lm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvcHJvbWlzZUZvck9iamVjdC5tanM/ZjVkMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgZnVuY3Rpb24gdHJhbnNmb3JtcyBhIEpTIG9iamVjdCBgT2JqTWFwPFByb21pc2U8VD4+YCBpbnRvXG4gKiBhIGBQcm9taXNlPE9iak1hcDxUPj5gXG4gKlxuICogVGhpcyBpcyBha2luIHRvIGJsdWViaXJkJ3MgYFByb21pc2UucHJvcHNgLCBidXQgaW1wbGVtZW50ZWQgb25seSB1c2luZ1xuICogYFByb21pc2UuYWxsYCBzbyBpdCB3aWxsIHdvcmsgd2l0aCBhbnkgaW1wbGVtZW50YXRpb24gb2YgRVM2IHByb21pc2VzLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwcm9taXNlRm9yT2JqZWN0KG9iamVjdCkge1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG4gIHZhciB2YWx1ZXNBbmRQcm9taXNlcyA9IGtleXMubWFwKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIG9iamVjdFtuYW1lXTtcbiAgfSk7XG4gIHJldHVybiBQcm9taXNlLmFsbCh2YWx1ZXNBbmRQcm9taXNlcykudGhlbihmdW5jdGlvbiAodmFsdWVzKSB7XG4gICAgcmV0dXJuIHZhbHVlcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc29sdmVkT2JqZWN0LCB2YWx1ZSwgaSkge1xuICAgICAgcmVzb2x2ZWRPYmplY3Rba2V5c1tpXV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiByZXNvbHZlZE9iamVjdDtcbiAgICB9LCBPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAgfSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/promiseForObject.mjs\n");
657
658/***/ }),
659
660/***/ "../../../node_modules/graphql/jsutils/promiseReduce.mjs":
661/*!******************************************************************************************!*\
662 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/promiseReduce.mjs ***!
663 \******************************************************************************************/
664/*! exports provided: default */
665/***/ (function(module, __webpack_exports__, __webpack_require__) {
666
667"use strict";
668eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return promiseReduce; });\n/* harmony import */ var _isPromise_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isPromise.mjs */ \"../../../node_modules/graphql/jsutils/isPromise.mjs\");\n\n/**\n * Similar to Array.prototype.reduce(), however the reducing callback may return\n * a Promise, in which case reduction will continue after each promise resolves.\n *\n * If the callback does not return a Promise, then this function will also not\n * return a Promise.\n */\n\nfunction promiseReduce(values, callback, initialValue) {\n return values.reduce(function (previous, value) {\n return Object(_isPromise_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(previous) ? previous.then(function (resolved) {\n return callback(resolved, value);\n }) : callback(previous, value);\n }, initialValue);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9wcm9taXNlUmVkdWNlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvcHJvbWlzZVJlZHVjZS5tanM/MzE1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNQcm9taXNlIGZyb20gXCIuL2lzUHJvbWlzZS5tanNcIjtcbi8qKlxuICogU2ltaWxhciB0byBBcnJheS5wcm90b3R5cGUucmVkdWNlKCksIGhvd2V2ZXIgdGhlIHJlZHVjaW5nIGNhbGxiYWNrIG1heSByZXR1cm5cbiAqIGEgUHJvbWlzZSwgaW4gd2hpY2ggY2FzZSByZWR1Y3Rpb24gd2lsbCBjb250aW51ZSBhZnRlciBlYWNoIHByb21pc2UgcmVzb2x2ZXMuXG4gKlxuICogSWYgdGhlIGNhbGxiYWNrIGRvZXMgbm90IHJldHVybiBhIFByb21pc2UsIHRoZW4gdGhpcyBmdW5jdGlvbiB3aWxsIGFsc28gbm90XG4gKiByZXR1cm4gYSBQcm9taXNlLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByb21pc2VSZWR1Y2UodmFsdWVzLCBjYWxsYmFjaywgaW5pdGlhbFZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZXMucmVkdWNlKGZ1bmN0aW9uIChwcmV2aW91cywgdmFsdWUpIHtcbiAgICByZXR1cm4gaXNQcm9taXNlKHByZXZpb3VzKSA/IHByZXZpb3VzLnRoZW4oZnVuY3Rpb24gKHJlc29sdmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2socmVzb2x2ZWQsIHZhbHVlKTtcbiAgICB9KSA6IGNhbGxiYWNrKHByZXZpb3VzLCB2YWx1ZSk7XG4gIH0sIGluaXRpYWxWYWx1ZSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/promiseReduce.mjs\n");
669
670/***/ }),
671
672/***/ "../../../node_modules/graphql/jsutils/suggestionList.mjs":
673/*!*******************************************************************************************!*\
674 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/suggestionList.mjs ***!
675 \*******************************************************************************************/
676/*! exports provided: default */
677/***/ (function(module, __webpack_exports__, __webpack_require__) {
678
679"use strict";
680eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return suggestionList; });\n/**\n * Given an invalid input string and a list of valid options, returns a filtered\n * list of valid options sorted based on their similarity with the input.\n */\nfunction suggestionList(input, options) {\n var optionsByDistance = Object.create(null);\n var lexicalDistance = new LexicalDistance(input);\n var threshold = Math.floor(input.length * 0.4) + 1;\n\n for (var _i2 = 0; _i2 < options.length; _i2++) {\n var option = options[_i2];\n var distance = lexicalDistance.measure(option, threshold);\n\n if (distance !== undefined) {\n optionsByDistance[option] = distance;\n }\n }\n\n return Object.keys(optionsByDistance).sort(function (a, b) {\n var distanceDiff = optionsByDistance[a] - optionsByDistance[b];\n return distanceDiff !== 0 ? distanceDiff : a.localeCompare(b);\n });\n}\n/**\n * Computes the lexical distance between strings A and B.\n *\n * The \"distance\" between two strings is given by counting the minimum number\n * of edits needed to transform string A into string B. An edit can be an\n * insertion, deletion, or substitution of a single character, or a swap of two\n * adjacent characters.\n *\n * Includes a custom alteration from Damerau-Levenshtein to treat case changes\n * as a single edit which helps identify mis-cased values with an edit distance\n * of 1.\n *\n * This distance can be useful for detecting typos in input or sorting\n */\n\nvar LexicalDistance = /*#__PURE__*/function () {\n function LexicalDistance(input) {\n this._input = input;\n this._inputLowerCase = input.toLowerCase();\n this._inputArray = stringToArray(this._inputLowerCase);\n this._rows = [new Array(input.length + 1).fill(0), new Array(input.length + 1).fill(0), new Array(input.length + 1).fill(0)];\n }\n\n var _proto = LexicalDistance.prototype;\n\n _proto.measure = function measure(option, threshold) {\n if (this._input === option) {\n return 0;\n }\n\n var optionLowerCase = option.toLowerCase(); // Any case change counts as a single edit\n\n if (this._inputLowerCase === optionLowerCase) {\n return 1;\n }\n\n var a = stringToArray(optionLowerCase);\n var b = this._inputArray;\n\n if (a.length < b.length) {\n var tmp = a;\n a = b;\n b = tmp;\n }\n\n var aLength = a.length;\n var bLength = b.length;\n\n if (aLength - bLength > threshold) {\n return undefined;\n }\n\n var rows = this._rows;\n\n for (var j = 0; j <= bLength; j++) {\n rows[0][j] = j;\n }\n\n for (var i = 1; i <= aLength; i++) {\n var upRow = rows[(i - 1) % 3];\n var currentRow = rows[i % 3];\n var smallestCell = currentRow[0] = i;\n\n for (var _j = 1; _j <= bLength; _j++) {\n var cost = a[i - 1] === b[_j - 1] ? 0 : 1;\n var currentCell = Math.min(upRow[_j] + 1, // delete\n currentRow[_j - 1] + 1, // insert\n upRow[_j - 1] + cost // substitute\n );\n\n if (i > 1 && _j > 1 && a[i - 1] === b[_j - 2] && a[i - 2] === b[_j - 1]) {\n // transposition\n var doubleDiagonalCell = rows[(i - 2) % 3][_j - 2];\n currentCell = Math.min(currentCell, doubleDiagonalCell + 1);\n }\n\n if (currentCell < smallestCell) {\n smallestCell = currentCell;\n }\n\n currentRow[_j] = currentCell;\n } // Early exit, since distance can't go smaller than smallest element of the previous row.\n\n\n if (smallestCell > threshold) {\n return undefined;\n }\n }\n\n var distance = rows[aLength % 3][bLength];\n return distance <= threshold ? distance : undefined;\n };\n\n return LexicalDistance;\n}();\n\nfunction stringToArray(str) {\n var strLength = str.length;\n var array = new Array(strLength);\n\n for (var i = 0; i < strLength; ++i) {\n array[i] = str.charCodeAt(i);\n }\n\n return array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9zdWdnZXN0aW9uTGlzdC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL3N1Z2dlc3Rpb25MaXN0Lm1qcz84MzQ2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2l2ZW4gYW4gaW52YWxpZCBpbnB1dCBzdHJpbmcgYW5kIGEgbGlzdCBvZiB2YWxpZCBvcHRpb25zLCByZXR1cm5zIGEgZmlsdGVyZWRcbiAqIGxpc3Qgb2YgdmFsaWQgb3B0aW9ucyBzb3J0ZWQgYmFzZWQgb24gdGhlaXIgc2ltaWxhcml0eSB3aXRoIHRoZSBpbnB1dC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3VnZ2VzdGlvbkxpc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgdmFyIG9wdGlvbnNCeURpc3RhbmNlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIGxleGljYWxEaXN0YW5jZSA9IG5ldyBMZXhpY2FsRGlzdGFuY2UoaW5wdXQpO1xuICB2YXIgdGhyZXNob2xkID0gTWF0aC5mbG9vcihpbnB1dC5sZW5ndGggKiAwLjQpICsgMTtcblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBvcHRpb25zLmxlbmd0aDsgX2kyKyspIHtcbiAgICB2YXIgb3B0aW9uID0gb3B0aW9uc1tfaTJdO1xuICAgIHZhciBkaXN0YW5jZSA9IGxleGljYWxEaXN0YW5jZS5tZWFzdXJlKG9wdGlvbiwgdGhyZXNob2xkKTtcblxuICAgIGlmIChkaXN0YW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvcHRpb25zQnlEaXN0YW5jZVtvcHRpb25dID0gZGlzdGFuY2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9wdGlvbnNCeURpc3RhbmNlKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgdmFyIGRpc3RhbmNlRGlmZiA9IG9wdGlvbnNCeURpc3RhbmNlW2FdIC0gb3B0aW9uc0J5RGlzdGFuY2VbYl07XG4gICAgcmV0dXJuIGRpc3RhbmNlRGlmZiAhPT0gMCA/IGRpc3RhbmNlRGlmZiA6IGEubG9jYWxlQ29tcGFyZShiKTtcbiAgfSk7XG59XG4vKipcbiAqIENvbXB1dGVzIHRoZSBsZXhpY2FsIGRpc3RhbmNlIGJldHdlZW4gc3RyaW5ncyBBIGFuZCBCLlxuICpcbiAqIFRoZSBcImRpc3RhbmNlXCIgYmV0d2VlbiB0d28gc3RyaW5ncyBpcyBnaXZlbiBieSBjb3VudGluZyB0aGUgbWluaW11bSBudW1iZXJcbiAqIG9mIGVkaXRzIG5lZWRlZCB0byB0cmFuc2Zvcm0gc3RyaW5nIEEgaW50byBzdHJpbmcgQi4gQW4gZWRpdCBjYW4gYmUgYW5cbiAqIGluc2VydGlvbiwgZGVsZXRpb24sIG9yIHN1YnN0aXR1dGlvbiBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIsIG9yIGEgc3dhcCBvZiB0d29cbiAqIGFkamFjZW50IGNoYXJhY3RlcnMuXG4gKlxuICogSW5jbHVkZXMgYSBjdXN0b20gYWx0ZXJhdGlvbiBmcm9tIERhbWVyYXUtTGV2ZW5zaHRlaW4gdG8gdHJlYXQgY2FzZSBjaGFuZ2VzXG4gKiBhcyBhIHNpbmdsZSBlZGl0IHdoaWNoIGhlbHBzIGlkZW50aWZ5IG1pcy1jYXNlZCB2YWx1ZXMgd2l0aCBhbiBlZGl0IGRpc3RhbmNlXG4gKiBvZiAxLlxuICpcbiAqIFRoaXMgZGlzdGFuY2UgY2FuIGJlIHVzZWZ1bCBmb3IgZGV0ZWN0aW5nIHR5cG9zIGluIGlucHV0IG9yIHNvcnRpbmdcbiAqL1xuXG52YXIgTGV4aWNhbERpc3RhbmNlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGV4aWNhbERpc3RhbmNlKGlucHV0KSB7XG4gICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcbiAgICB0aGlzLl9pbnB1dExvd2VyQ2FzZSA9IGlucHV0LnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5faW5wdXRBcnJheSA9IHN0cmluZ1RvQXJyYXkodGhpcy5faW5wdXRMb3dlckNhc2UpO1xuICAgIHRoaXMuX3Jvd3MgPSBbbmV3IEFycmF5KGlucHV0Lmxlbmd0aCArIDEpLmZpbGwoMCksIG5ldyBBcnJheShpbnB1dC5sZW5ndGggKyAxKS5maWxsKDApLCBuZXcgQXJyYXkoaW5wdXQubGVuZ3RoICsgMSkuZmlsbCgwKV07XG4gIH1cblxuICB2YXIgX3Byb3RvID0gTGV4aWNhbERpc3RhbmNlLnByb3RvdHlwZTtcblxuICBfcHJvdG8ubWVhc3VyZSA9IGZ1bmN0aW9uIG1lYXN1cmUob3B0aW9uLCB0aHJlc2hvbGQpIHtcbiAgICBpZiAodGhpcy5faW5wdXQgPT09IG9wdGlvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgdmFyIG9wdGlvbkxvd2VyQ2FzZSA9IG9wdGlvbi50b0xvd2VyQ2FzZSgpOyAvLyBBbnkgY2FzZSBjaGFuZ2UgY291bnRzIGFzIGEgc2luZ2xlIGVkaXRcblxuICAgIGlmICh0aGlzLl9pbnB1dExvd2VyQ2FzZSA9PT0gb3B0aW9uTG93ZXJDYXNlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICB2YXIgYSA9IHN0cmluZ1RvQXJyYXkob3B0aW9uTG93ZXJDYXNlKTtcbiAgICB2YXIgYiA9IHRoaXMuX2lucHV0QXJyYXk7XG5cbiAgICBpZiAoYS5sZW5ndGggPCBiLmxlbmd0aCkge1xuICAgICAgdmFyIHRtcCA9IGE7XG4gICAgICBhID0gYjtcbiAgICAgIGIgPSB0bXA7XG4gICAgfVxuXG4gICAgdmFyIGFMZW5ndGggPSBhLmxlbmd0aDtcbiAgICB2YXIgYkxlbmd0aCA9IGIubGVuZ3RoO1xuXG4gICAgaWYgKGFMZW5ndGggLSBiTGVuZ3RoID4gdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHZhciByb3dzID0gdGhpcy5fcm93cztcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IGJMZW5ndGg7IGorKykge1xuICAgICAgcm93c1swXVtqXSA9IGo7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gYUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdXBSb3cgPSByb3dzWyhpIC0gMSkgJSAzXTtcbiAgICAgIHZhciBjdXJyZW50Um93ID0gcm93c1tpICUgM107XG4gICAgICB2YXIgc21hbGxlc3RDZWxsID0gY3VycmVudFJvd1swXSA9IGk7XG5cbiAgICAgIGZvciAodmFyIF9qID0gMTsgX2ogPD0gYkxlbmd0aDsgX2orKykge1xuICAgICAgICB2YXIgY29zdCA9IGFbaSAtIDFdID09PSBiW19qIC0gMV0gPyAwIDogMTtcbiAgICAgICAgdmFyIGN1cnJlbnRDZWxsID0gTWF0aC5taW4odXBSb3dbX2pdICsgMSwgLy8gZGVsZXRlXG4gICAgICAgIGN1cnJlbnRSb3dbX2ogLSAxXSArIDEsIC8vIGluc2VydFxuICAgICAgICB1cFJvd1tfaiAtIDFdICsgY29zdCAvLyBzdWJzdGl0dXRlXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGkgPiAxICYmIF9qID4gMSAmJiBhW2kgLSAxXSA9PT0gYltfaiAtIDJdICYmIGFbaSAtIDJdID09PSBiW19qIC0gMV0pIHtcbiAgICAgICAgICAvLyB0cmFuc3Bvc2l0aW9uXG4gICAgICAgICAgdmFyIGRvdWJsZURpYWdvbmFsQ2VsbCA9IHJvd3NbKGkgLSAyKSAlIDNdW19qIC0gMl07XG4gICAgICAgICAgY3VycmVudENlbGwgPSBNYXRoLm1pbihjdXJyZW50Q2VsbCwgZG91YmxlRGlhZ29uYWxDZWxsICsgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3VycmVudENlbGwgPCBzbWFsbGVzdENlbGwpIHtcbiAgICAgICAgICBzbWFsbGVzdENlbGwgPSBjdXJyZW50Q2VsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRSb3dbX2pdID0gY3VycmVudENlbGw7XG4gICAgICB9IC8vIEVhcmx5IGV4aXQsIHNpbmNlIGRpc3RhbmNlIGNhbid0IGdvIHNtYWxsZXIgdGhhbiBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBwcmV2aW91cyByb3cuXG5cblxuICAgICAgaWYgKHNtYWxsZXN0Q2VsbCA+IHRocmVzaG9sZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkaXN0YW5jZSA9IHJvd3NbYUxlbmd0aCAlIDNdW2JMZW5ndGhdO1xuICAgIHJldHVybiBkaXN0YW5jZSA8PSB0aHJlc2hvbGQgPyBkaXN0YW5jZSA6IHVuZGVmaW5lZDtcbiAgfTtcblxuICByZXR1cm4gTGV4aWNhbERpc3RhbmNlO1xufSgpO1xuXG5mdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cikge1xuICB2YXIgc3RyTGVuZ3RoID0gc3RyLmxlbmd0aDtcbiAgdmFyIGFycmF5ID0gbmV3IEFycmF5KHN0ckxlbmd0aCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJMZW5ndGg7ICsraSkge1xuICAgIGFycmF5W2ldID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gIH1cblxuICByZXR1cm4gYXJyYXk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/suggestionList.mjs\n");
681
682/***/ }),
683
684/***/ "../../../node_modules/graphql/jsutils/toObjMap.mjs":
685/*!*************************************************************************************!*\
686 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/jsutils/toObjMap.mjs ***!
687 \*************************************************************************************/
688/*! exports provided: default */
689/***/ (function(module, __webpack_exports__, __webpack_require__) {
690
691"use strict";
692eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return toObjMap; });\n/* harmony import */ var _polyfills_objectEntries_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/objectEntries.mjs */ \"../../../node_modules/graphql/polyfills/objectEntries.mjs\");\n\nfunction toObjMap(obj) {\n /* eslint-enable no-redeclare */\n if (Object.getPrototypeOf(obj) === null) {\n return obj;\n }\n\n var map = Object.create(null);\n\n for (var _i2 = 0, _objectEntries2 = Object(_polyfills_objectEntries_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(obj); _i2 < _objectEntries2.length; _i2++) {\n var _ref2 = _objectEntries2[_i2];\n var key = _ref2[0];\n var value = _ref2[1];\n map[key] = value;\n }\n\n return map;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy90b09iak1hcC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL3RvT2JqTWFwLm1qcz8yMmQ4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBvYmplY3RFbnRyaWVzIGZyb20gXCIuLi9wb2x5ZmlsbHMvb2JqZWN0RW50cmllcy5tanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvT2JqTWFwKG9iaikge1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXJlZGVjbGFyZSAqL1xuICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikgPT09IG51bGwpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgdmFyIG1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZm9yICh2YXIgX2kyID0gMCwgX29iamVjdEVudHJpZXMyID0gb2JqZWN0RW50cmllcyhvYmopOyBfaTIgPCBfb2JqZWN0RW50cmllczIubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBfcmVmMiA9IF9vYmplY3RFbnRyaWVzMltfaTJdO1xuICAgIHZhciBrZXkgPSBfcmVmMlswXTtcbiAgICB2YXIgdmFsdWUgPSBfcmVmMlsxXTtcbiAgICBtYXBba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG1hcDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/jsutils/toObjMap.mjs\n");
693
694/***/ }),
695
696/***/ "../../../node_modules/graphql/language/ast.mjs":
697/*!*********************************************************************************!*\
698 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/language/ast.mjs ***!
699 \*********************************************************************************/
700/*! exports provided: Location, Token, isNode */
701/***/ (function(module, __webpack_exports__, __webpack_require__) {
702
703"use strict";
704eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Location\", function() { return Location; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Token\", function() { return Token; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNode\", function() { return isNode; });\n/* harmony import */ var _jsutils_defineInspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/defineInspect.mjs */ \"../../../node_modules/graphql/jsutils/defineInspect.mjs\");\n\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nvar Location = /*#__PURE__*/function () {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n function Location(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n var _proto = Location.prototype;\n\n _proto.toJSON = function toJSON() {\n return {\n start: this.start,\n end: this.end\n };\n };\n\n return Location;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\nObject(_jsutils_defineInspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Location);\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nvar Token = /*#__PURE__*/function () {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. <SOF> is always the first node and <EOF>\n * the last.\n */\n function Token(kind, start, end, line, column, prev, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n this.value = value;\n this.prev = prev;\n this.next = null;\n }\n\n var _proto2 = Token.prototype;\n\n _proto2.toJSON = function toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n };\n\n return Token;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\nObject(_jsutils_defineInspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Token);\n/**\n * @internal\n */\n\nfunction isNode(maybeNode) {\n return maybeNode != null && typeof maybeNode.kind === 'string';\n}\n/**\n * The list of all possible AST node types.\n */\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvYXN0Lm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL2FzdC5tanM/OWI0NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmaW5lSW5zcGVjdCBmcm9tIFwiLi4vanN1dGlscy9kZWZpbmVJbnNwZWN0Lm1qc1wiO1xuXG4vKipcbiAqIENvbnRhaW5zIGEgcmFuZ2Ugb2YgVVRGLTggY2hhcmFjdGVyIG9mZnNldHMgYW5kIHRva2VuIHJlZmVyZW5jZXMgdGhhdFxuICogaWRlbnRpZnkgdGhlIHJlZ2lvbiBvZiB0aGUgc291cmNlIGZyb20gd2hpY2ggdGhlIEFTVCBkZXJpdmVkLlxuICovXG5leHBvcnQgdmFyIExvY2F0aW9uID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIFRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGF0IHdoaWNoIHRoaXMgTm9kZSBiZWdpbnMuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGUgY2hhcmFjdGVyIG9mZnNldCBhdCB3aGljaCB0aGlzIE5vZGUgZW5kcy5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRoZSBUb2tlbiBhdCB3aGljaCB0aGlzIE5vZGUgYmVnaW5zLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIFRva2VuIGF0IHdoaWNoIHRoaXMgTm9kZSBlbmRzLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIFNvdXJjZSBkb2N1bWVudCB0aGUgQVNUIHJlcHJlc2VudHMuXG4gICAqL1xuICBmdW5jdGlvbiBMb2NhdGlvbihzdGFydFRva2VuLCBlbmRUb2tlbiwgc291cmNlKSB7XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0VG9rZW4uc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBlbmRUb2tlbi5lbmQ7XG4gICAgdGhpcy5zdGFydFRva2VuID0gc3RhcnRUb2tlbjtcbiAgICB0aGlzLmVuZFRva2VuID0gZW5kVG9rZW47XG4gICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gTG9jYXRpb24ucHJvdG90eXBlO1xuXG4gIF9wcm90by50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0OiB0aGlzLnN0YXJ0LFxuICAgICAgZW5kOiB0aGlzLmVuZFxuICAgIH07XG4gIH07XG5cbiAgcmV0dXJuIExvY2F0aW9uO1xufSgpOyAvLyBQcmludCBhIHNpbXBsaWZpZWQgZm9ybSB3aGVuIGFwcGVhcmluZyBpbiBgaW5zcGVjdGAgYW5kIGB1dGlsLmluc3BlY3RgLlxuXG5kZWZpbmVJbnNwZWN0KExvY2F0aW9uKTtcbi8qKlxuICogUmVwcmVzZW50cyBhIHJhbmdlIG9mIGNoYXJhY3RlcnMgcmVwcmVzZW50ZWQgYnkgYSBsZXhpY2FsIHRva2VuXG4gKiB3aXRoaW4gYSBTb3VyY2UuXG4gKi9cblxuZXhwb3J0IHZhciBUb2tlbiA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBUaGUga2luZCBvZiBUb2tlbi5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGF0IHdoaWNoIHRoaXMgTm9kZSBiZWdpbnMuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGUgY2hhcmFjdGVyIG9mZnNldCBhdCB3aGljaCB0aGlzIE5vZGUgZW5kcy5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRoZSAxLWluZGV4ZWQgbGluZSBudW1iZXIgb24gd2hpY2ggdGhpcyBUb2tlbiBhcHBlYXJzLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIDEtaW5kZXhlZCBjb2x1bW4gbnVtYmVyIGF0IHdoaWNoIHRoaXMgVG9rZW4gYmVnaW5zLlxuICAgKi9cblxuICAvKipcbiAgICogRm9yIG5vbi1wdW5jdHVhdGlvbiB0b2tlbnMsIHJlcHJlc2VudHMgdGhlIGludGVycHJldGVkIHZhbHVlIG9mIHRoZSB0b2tlbi5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRva2VucyBleGlzdCBhcyBub2RlcyBpbiBhIGRvdWJsZS1saW5rZWQtbGlzdCBhbW9uZ3N0IGFsbCB0b2tlbnNcbiAgICogaW5jbHVkaW5nIGlnbm9yZWQgdG9rZW5zLiA8U09GPiBpcyBhbHdheXMgdGhlIGZpcnN0IG5vZGUgYW5kIDxFT0Y+XG4gICAqIHRoZSBsYXN0LlxuICAgKi9cbiAgZnVuY3Rpb24gVG9rZW4oa2luZCwgc3RhcnQsIGVuZCwgbGluZSwgY29sdW1uLCBwcmV2LCB2YWx1ZSkge1xuICAgIHRoaXMua2luZCA9IGtpbmQ7XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuZW5kID0gZW5kO1xuICAgIHRoaXMubGluZSA9IGxpbmU7XG4gICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMucHJldiA9IHByZXY7XG4gICAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgfVxuXG4gIHZhciBfcHJvdG8yID0gVG9rZW4ucHJvdG90eXBlO1xuXG4gIF9wcm90bzIudG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiB0aGlzLmtpbmQsXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIGxpbmU6IHRoaXMubGluZSxcbiAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW5cbiAgICB9O1xuICB9O1xuXG4gIHJldHVybiBUb2tlbjtcbn0oKTsgLy8gUHJpbnQgYSBzaW1wbGlmaWVkIGZvcm0gd2hlbiBhcHBlYXJpbmcgaW4gYGluc3BlY3RgIGFuZCBgdXRpbC5pbnNwZWN0YC5cblxuZGVmaW5lSW5zcGVjdChUb2tlbik7XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGUobWF5YmVOb2RlKSB7XG4gIHJldHVybiBtYXliZU5vZGUgIT0gbnVsbCAmJiB0eXBlb2YgbWF5YmVOb2RlLmtpbmQgPT09ICdzdHJpbmcnO1xufVxuLyoqXG4gKiBUaGUgbGlzdCBvZiBhbGwgcG9zc2libGUgQVNUIG5vZGUgdHlwZXMuXG4gKi9cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/ast.mjs\n");
705
706/***/ }),
707
708/***/ "../../../node_modules/graphql/language/blockString.mjs":
709/*!*****************************************************************************************!*\
710 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/language/blockString.mjs ***!
711 \*****************************************************************************************/
712/*! exports provided: dedentBlockStringValue, getBlockStringIndentation, printBlockString */
713/***/ (function(module, __webpack_exports__, __webpack_require__) {
714
715"use strict";
716eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dedentBlockStringValue\", function() { return dedentBlockStringValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBlockStringIndentation\", function() { return getBlockStringIndentation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"printBlockString\", function() { return printBlockString; });\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\nfunction dedentBlockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = getBlockStringIndentation(rawString);\n\n if (commonIndent !== 0) {\n for (var i = 1; i < lines.length; i++) {\n lines[i] = lines[i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n var startLine = 0;\n\n while (startLine < lines.length && isBlank(lines[startLine])) {\n ++startLine;\n }\n\n var endLine = lines.length;\n\n while (endLine > startLine && isBlank(lines[endLine - 1])) {\n --endLine;\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.slice(startLine, endLine).join('\\n');\n}\n\nfunction isBlank(str) {\n for (var i = 0; i < str.length; ++i) {\n if (str[i] !== ' ' && str[i] !== '\\t') {\n return false;\n }\n }\n\n return true;\n}\n/**\n * @internal\n */\n\n\nfunction getBlockStringIndentation(value) {\n var _commonIndent;\n\n var isFirstLine = true;\n var isEmptyLine = true;\n var indent = 0;\n var commonIndent = null;\n\n for (var i = 0; i < value.length; ++i) {\n switch (value.charCodeAt(i)) {\n case 13:\n // \\r\n if (value.charCodeAt(i + 1) === 10) {\n ++i; // skip \\r\\n as one symbol\n }\n\n // falls through\n\n case 10:\n // \\n\n isFirstLine = false;\n isEmptyLine = true;\n indent = 0;\n break;\n\n case 9: // \\t\n\n case 32:\n // <space>\n ++indent;\n break;\n\n default:\n if (isEmptyLine && !isFirstLine && (commonIndent === null || indent < commonIndent)) {\n commonIndent = indent;\n }\n\n isEmptyLine = false;\n }\n }\n\n return (_commonIndent = commonIndent) !== null && _commonIndent !== void 0 ? _commonIndent : 0;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nfunction printBlockString(value) {\n var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isSingleLine = value.indexOf('\\n') === -1;\n var hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n var hasTrailingQuote = value[value.length - 1] === '\"';\n var hasTrailingSlash = value[value.length - 1] === '\\\\';\n var printAsMultipleLines = !isSingleLine || hasTrailingQuote || hasTrailingSlash || preferMultipleLines;\n var result = ''; // Format a multi-line block quote to account for leading space.\n\n if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n result += '\\n' + indentation;\n }\n\n result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n\n if (printAsMultipleLines) {\n result += '\\n';\n }\n\n return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvYmxvY2tTdHJpbmcubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvYmxvY2tTdHJpbmcubWpzPzMxM2YiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcm9kdWNlcyB0aGUgdmFsdWUgb2YgYSBibG9jayBzdHJpbmcgZnJvbSBpdHMgcGFyc2VkIHJhdyB2YWx1ZSwgc2ltaWxhciB0b1xuICogQ29mZmVlU2NyaXB0J3MgYmxvY2sgc3RyaW5nLCBQeXRob24ncyBkb2NzdHJpbmcgdHJpbSBvciBSdWJ5J3Mgc3RyaXBfaGVyZWRvYy5cbiAqXG4gKiBUaGlzIGltcGxlbWVudHMgdGhlIEdyYXBoUUwgc3BlYydzIEJsb2NrU3RyaW5nVmFsdWUoKSBzdGF0aWMgYWxnb3JpdGhtLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVkZW50QmxvY2tTdHJpbmdWYWx1ZShyYXdTdHJpbmcpIHtcbiAgLy8gRXhwYW5kIGEgYmxvY2sgc3RyaW5nJ3MgcmF3IHZhbHVlIGludG8gaW5kZXBlbmRlbnQgbGluZXMuXG4gIHZhciBsaW5lcyA9IHJhd1N0cmluZy5zcGxpdCgvXFxyXFxufFtcXG5cXHJdL2cpOyAvLyBSZW1vdmUgY29tbW9uIGluZGVudGF0aW9uIGZyb20gYWxsIGxpbmVzIGJ1dCBmaXJzdC5cblxuICB2YXIgY29tbW9uSW5kZW50ID0gZ2V0QmxvY2tTdHJpbmdJbmRlbnRhdGlvbihyYXdTdHJpbmcpO1xuXG4gIGlmIChjb21tb25JbmRlbnQgIT09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsaW5lc1tpXSA9IGxpbmVzW2ldLnNsaWNlKGNvbW1vbkluZGVudCk7XG4gICAgfVxuICB9IC8vIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBibGFuayBsaW5lcy5cblxuXG4gIHZhciBzdGFydExpbmUgPSAwO1xuXG4gIHdoaWxlIChzdGFydExpbmUgPCBsaW5lcy5sZW5ndGggJiYgaXNCbGFuayhsaW5lc1tzdGFydExpbmVdKSkge1xuICAgICsrc3RhcnRMaW5lO1xuICB9XG5cbiAgdmFyIGVuZExpbmUgPSBsaW5lcy5sZW5ndGg7XG5cbiAgd2hpbGUgKGVuZExpbmUgPiBzdGFydExpbmUgJiYgaXNCbGFuayhsaW5lc1tlbmRMaW5lIC0gMV0pKSB7XG4gICAgLS1lbmRMaW5lO1xuICB9IC8vIFJldHVybiBhIHN0cmluZyBvZiB0aGUgbGluZXMgam9pbmVkIHdpdGggVSswMDBBLlxuXG5cbiAgcmV0dXJuIGxpbmVzLnNsaWNlKHN0YXJ0TGluZSwgZW5kTGluZSkuam9pbignXFxuJyk7XG59XG5cbmZ1bmN0aW9uIGlzQmxhbmsoc3RyKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKHN0cltpXSAhPT0gJyAnICYmIHN0cltpXSAhPT0gJ1xcdCcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbi8qKlxuICogQGludGVybmFsXG4gKi9cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmxvY2tTdHJpbmdJbmRlbnRhdGlvbih2YWx1ZSkge1xuICB2YXIgX2NvbW1vbkluZGVudDtcblxuICB2YXIgaXNGaXJzdExpbmUgPSB0cnVlO1xuICB2YXIgaXNFbXB0eUxpbmUgPSB0cnVlO1xuICB2YXIgaW5kZW50ID0gMDtcbiAgdmFyIGNvbW1vbkluZGVudCA9IG51bGw7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7ICsraSkge1xuICAgIHN3aXRjaCAodmFsdWUuY2hhckNvZGVBdChpKSkge1xuICAgICAgY2FzZSAxMzpcbiAgICAgICAgLy8gIFxcclxuICAgICAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpICsgMSkgPT09IDEwKSB7XG4gICAgICAgICAgKytpOyAvLyBza2lwIFxcclxcbiBhcyBvbmUgc3ltYm9sXG4gICAgICAgIH1cblxuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuXG4gICAgICBjYXNlIDEwOlxuICAgICAgICAvLyAgXFxuXG4gICAgICAgIGlzRmlyc3RMaW5lID0gZmFsc2U7XG4gICAgICAgIGlzRW1wdHlMaW5lID0gdHJ1ZTtcbiAgICAgICAgaW5kZW50ID0gMDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgOTogLy8gICBcXHRcblxuICAgICAgY2FzZSAzMjpcbiAgICAgICAgLy8gIDxzcGFjZT5cbiAgICAgICAgKytpbmRlbnQ7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoaXNFbXB0eUxpbmUgJiYgIWlzRmlyc3RMaW5lICYmIChjb21tb25JbmRlbnQgPT09IG51bGwgfHwgaW5kZW50IDwgY29tbW9uSW5kZW50KSkge1xuICAgICAgICAgIGNvbW1vbkluZGVudCA9IGluZGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlzRW1wdHlMaW5lID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChfY29tbW9uSW5kZW50ID0gY29tbW9uSW5kZW50KSAhPT0gbnVsbCAmJiBfY29tbW9uSW5kZW50ICE9PSB2b2lkIDAgPyBfY29tbW9uSW5kZW50IDogMDtcbn1cbi8qKlxuICogUHJpbnQgYSBibG9jayBzdHJpbmcgaW4gdGhlIGluZGVudGVkIGJsb2NrIGZvcm0gYnkgYWRkaW5nIGEgbGVhZGluZyBhbmRcbiAqIHRyYWlsaW5nIGJsYW5rIGxpbmUuIEhvd2V2ZXIsIGlmIGEgYmxvY2sgc3RyaW5nIHN0YXJ0cyB3aXRoIHdoaXRlc3BhY2UgYW5kIGlzXG4gKiBhIHNpbmdsZS1saW5lLCBhZGRpbmcgYSBsZWFkaW5nIGJsYW5rIGxpbmUgd291bGQgc3RyaXAgdGhhdCB3aGl0ZXNwYWNlLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludEJsb2NrU3RyaW5nKHZhbHVlKSB7XG4gIHZhciBpbmRlbnRhdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogJyc7XG4gIHZhciBwcmVmZXJNdWx0aXBsZUxpbmVzID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBmYWxzZTtcbiAgdmFyIGlzU2luZ2xlTGluZSA9IHZhbHVlLmluZGV4T2YoJ1xcbicpID09PSAtMTtcbiAgdmFyIGhhc0xlYWRpbmdTcGFjZSA9IHZhbHVlWzBdID09PSAnICcgfHwgdmFsdWVbMF0gPT09ICdcXHQnO1xuICB2YXIgaGFzVHJhaWxpbmdRdW90ZSA9IHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdID09PSAnXCInO1xuICB2YXIgaGFzVHJhaWxpbmdTbGFzaCA9IHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdID09PSAnXFxcXCc7XG4gIHZhciBwcmludEFzTXVsdGlwbGVMaW5lcyA9ICFpc1NpbmdsZUxpbmUgfHwgaGFzVHJhaWxpbmdRdW90ZSB8fCBoYXNUcmFpbGluZ1NsYXNoIHx8IHByZWZlck11bHRpcGxlTGluZXM7XG4gIHZhciByZXN1bHQgPSAnJzsgLy8gRm9ybWF0IGEgbXVsdGktbGluZSBibG9jayBxdW90ZSB0byBhY2NvdW50IGZvciBsZWFkaW5nIHNwYWNlLlxuXG4gIGlmIChwcmludEFzTXVsdGlwbGVMaW5lcyAmJiAhKGlzU2luZ2xlTGluZSAmJiBoYXNMZWFkaW5nU3BhY2UpKSB7XG4gICAgcmVzdWx0ICs9ICdcXG4nICsgaW5kZW50YXRpb247XG4gIH1cblxuICByZXN1bHQgKz0gaW5kZW50YXRpb24gPyB2YWx1ZS5yZXBsYWNlKC9cXG4vZywgJ1xcbicgKyBpbmRlbnRhdGlvbikgOiB2YWx1ZTtcblxuICBpZiAocHJpbnRBc011bHRpcGxlTGluZXMpIHtcbiAgICByZXN1bHQgKz0gJ1xcbic7XG4gIH1cblxuICByZXR1cm4gJ1wiXCJcIicgKyByZXN1bHQucmVwbGFjZSgvXCJcIlwiL2csICdcXFxcXCJcIlwiJykgKyAnXCJcIlwiJztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/blockString.mjs\n");
717
718/***/ }),
719
720/***/ "../../../node_modules/graphql/language/directiveLocation.mjs":
721/*!***********************************************************************************************!*\
722 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/language/directiveLocation.mjs ***!
723 \***********************************************************************************************/
724/*! exports provided: DirectiveLocation */
725/***/ (function(module, __webpack_exports__, __webpack_require__) {
726
727"use strict";
728eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DirectiveLocation\", function() { return DirectiveLocation; });\n/**\n * The set of allowed directive location values.\n */\nvar DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvZGlyZWN0aXZlTG9jYXRpb24ubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvZGlyZWN0aXZlTG9jYXRpb24ubWpzPzViZjMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgc2V0IG9mIGFsbG93ZWQgZGlyZWN0aXZlIGxvY2F0aW9uIHZhbHVlcy5cbiAqL1xuZXhwb3J0IHZhciBEaXJlY3RpdmVMb2NhdGlvbiA9IE9iamVjdC5mcmVlemUoe1xuICAvLyBSZXF1ZXN0IERlZmluaXRpb25zXG4gIFFVRVJZOiAnUVVFUlknLFxuICBNVVRBVElPTjogJ01VVEFUSU9OJyxcbiAgU1VCU0NSSVBUSU9OOiAnU1VCU0NSSVBUSU9OJyxcbiAgRklFTEQ6ICdGSUVMRCcsXG4gIEZSQUdNRU5UX0RFRklOSVRJT046ICdGUkFHTUVOVF9ERUZJTklUSU9OJyxcbiAgRlJBR01FTlRfU1BSRUFEOiAnRlJBR01FTlRfU1BSRUFEJyxcbiAgSU5MSU5FX0ZSQUdNRU5UOiAnSU5MSU5FX0ZSQUdNRU5UJyxcbiAgVkFSSUFCTEVfREVGSU5JVElPTjogJ1ZBUklBQkxFX0RFRklOSVRJT04nLFxuICAvLyBUeXBlIFN5c3RlbSBEZWZpbml0aW9uc1xuICBTQ0hFTUE6ICdTQ0hFTUEnLFxuICBTQ0FMQVI6ICdTQ0FMQVInLFxuICBPQkpFQ1Q6ICdPQkpFQ1QnLFxuICBGSUVMRF9ERUZJTklUSU9OOiAnRklFTERfREVGSU5JVElPTicsXG4gIEFSR1VNRU5UX0RFRklOSVRJT046ICdBUkdVTUVOVF9ERUZJTklUSU9OJyxcbiAgSU5URVJGQUNFOiAnSU5URVJGQUNFJyxcbiAgVU5JT046ICdVTklPTicsXG4gIEVOVU06ICdFTlVNJyxcbiAgRU5VTV9WQUxVRTogJ0VOVU1fVkFMVUUnLFxuICBJTlBVVF9PQkpFQ1Q6ICdJTlBVVF9PQkpFQ1QnLFxuICBJTlBVVF9GSUVMRF9ERUZJTklUSU9OOiAnSU5QVVRfRklFTERfREVGSU5JVElPTidcbn0pO1xuLyoqXG4gKiBUaGUgZW51bSB0eXBlIHJlcHJlc2VudGluZyB0aGUgZGlyZWN0aXZlIGxvY2F0aW9uIHZhbHVlcy5cbiAqL1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/directiveLocation.mjs\n");
729
730/***/ }),
731
732/***/ "../../../node_modules/graphql/language/index.mjs":
733/*!***********************************************************************************!*\
734 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/language/index.mjs ***!
735 \***********************************************************************************/
736/*! exports provided: Source, getLocation, printLocation, printSourceLocation, Kind, TokenKind, Lexer, parse, parseValue, parseType, print, visit, visitInParallel, getVisitFn, BREAK, Location, Token, isDefinitionNode, isExecutableDefinitionNode, isSelectionNode, isValueNode, isTypeNode, isTypeSystemDefinitionNode, isTypeDefinitionNode, isTypeSystemExtensionNode, isTypeExtensionNode, DirectiveLocation */
737/***/ (function(module, __webpack_exports__, __webpack_require__) {
738
739"use strict";
740eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _source_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./source.mjs */ \"../../../node_modules/graphql/language/source.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Source\", function() { return _source_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Source\"]; });\n\n/* harmony import */ var _location_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./location.mjs */ \"../../../node_modules/graphql/language/location.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLocation\", function() { return _location_mjs__WEBPACK_IMPORTED_MODULE_1__[\"getLocation\"]; });\n\n/* harmony import */ var _printLocation_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./printLocation.mjs */ \"../../../node_modules/graphql/language/printLocation.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printLocation\", function() { return _printLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"printLocation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printSourceLocation\", function() { return _printLocation_mjs__WEBPACK_IMPORTED_MODULE_2__[\"printSourceLocation\"]; });\n\n/* harmony import */ var _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Kind\", function() { return _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"]; });\n\n/* harmony import */ var _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tokenKind.mjs */ \"../../../node_modules/graphql/language/tokenKind.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TokenKind\", function() { return _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TokenKind\"]; });\n\n/* harmony import */ var _lexer_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lexer.mjs */ \"../../../node_modules/graphql/language/lexer.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Lexer\", function() { return _lexer_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Lexer\"]; });\n\n/* harmony import */ var _parser_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./parser.mjs */ \"../../../node_modules/graphql/language/parser.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return _parser_mjs__WEBPACK_IMPORTED_MODULE_6__[\"parse\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parseValue\", function() { return _parser_mjs__WEBPACK_IMPORTED_MODULE_6__[\"parseValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parseType\", function() { return _parser_mjs__WEBPACK_IMPORTED_MODULE_6__[\"parseType\"]; });\n\n/* harmony import */ var _printer_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"print\", function() { return _printer_mjs__WEBPACK_IMPORTED_MODULE_7__[\"print\"]; });\n\n/* harmony import */ var _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"visit\", function() { return _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__[\"visit\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"visitInParallel\", function() { return _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__[\"visitInParallel\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getVisitFn\", function() { return _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__[\"getVisitFn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BREAK\", function() { return _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__[\"BREAK\"]; });\n\n/* harmony import */ var _ast_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Location\", function() { return _ast_mjs__WEBPACK_IMPORTED_MODULE_9__[\"Location\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Token\", function() { return _ast_mjs__WEBPACK_IMPORTED_MODULE_9__[\"Token\"]; });\n\n/* harmony import */ var _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./predicates.mjs */ \"../../../node_modules/graphql/language/predicates.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isDefinitionNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isDefinitionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isExecutableDefinitionNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isExecutableDefinitionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSelectionNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isSelectionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isValueNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isValueNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isTypeNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeSystemDefinitionNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isTypeSystemDefinitionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeDefinitionNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isTypeDefinitionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeSystemExtensionNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isTypeSystemExtensionNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeExtensionNode\", function() { return _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isTypeExtensionNode\"]; });\n\n/* harmony import */ var _directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./directiveLocation.mjs */ \"../../../node_modules/graphql/language/directiveLocation.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DirectiveLocation\", function() { return _directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_11__[\"DirectiveLocation\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvaW5kZXgubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvaW5kZXgubWpzPzM5OTAiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgU291cmNlIH0gZnJvbSBcIi4vc291cmNlLm1qc1wiO1xuZXhwb3J0IHsgZ2V0TG9jYXRpb24gfSBmcm9tIFwiLi9sb2NhdGlvbi5tanNcIjtcbmV4cG9ydCB7IHByaW50TG9jYXRpb24sIHByaW50U291cmNlTG9jYXRpb24gfSBmcm9tIFwiLi9wcmludExvY2F0aW9uLm1qc1wiO1xuZXhwb3J0IHsgS2luZCB9IGZyb20gXCIuL2tpbmRzLm1qc1wiO1xuZXhwb3J0IHsgVG9rZW5LaW5kIH0gZnJvbSBcIi4vdG9rZW5LaW5kLm1qc1wiO1xuZXhwb3J0IHsgTGV4ZXIgfSBmcm9tIFwiLi9sZXhlci5tanNcIjtcbmV4cG9ydCB7IHBhcnNlLCBwYXJzZVZhbHVlLCBwYXJzZVR5cGUgfSBmcm9tIFwiLi9wYXJzZXIubWpzXCI7XG5leHBvcnQgeyBwcmludCB9IGZyb20gXCIuL3ByaW50ZXIubWpzXCI7XG5leHBvcnQgeyB2aXNpdCwgdmlzaXRJblBhcmFsbGVsLCBnZXRWaXNpdEZuLCBCUkVBSyB9IGZyb20gXCIuL3Zpc2l0b3IubWpzXCI7XG5leHBvcnQgeyBMb2NhdGlvbiwgVG9rZW4gfSBmcm9tIFwiLi9hc3QubWpzXCI7XG5leHBvcnQgeyBpc0RlZmluaXRpb25Ob2RlLCBpc0V4ZWN1dGFibGVEZWZpbml0aW9uTm9kZSwgaXNTZWxlY3Rpb25Ob2RlLCBpc1ZhbHVlTm9kZSwgaXNUeXBlTm9kZSwgaXNUeXBlU3lzdGVtRGVmaW5pdGlvbk5vZGUsIGlzVHlwZURlZmluaXRpb25Ob2RlLCBpc1R5cGVTeXN0ZW1FeHRlbnNpb25Ob2RlLCBpc1R5cGVFeHRlbnNpb25Ob2RlIH0gZnJvbSBcIi4vcHJlZGljYXRlcy5tanNcIjtcbmV4cG9ydCB7IERpcmVjdGl2ZUxvY2F0aW9uIH0gZnJvbSBcIi4vZGlyZWN0aXZlTG9jYXRpb24ubWpzXCI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/index.mjs\n");
741
742/***/ }),
743
744/***/ "../../../node_modules/graphql/language/kinds.mjs":
745/*!***********************************************************************************!*\
746 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/language/kinds.mjs ***!
747 \***********************************************************************************/
748/*! exports provided: Kind */
749/***/ (function(module, __webpack_exports__, __webpack_require__) {
750
751"use strict";
752eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Kind\", function() { return Kind; });\n/**\n * The set of allowed kind values for AST nodes.\n */\nvar Kind = Object.freeze({\n // Name\n NAME: 'Name',\n // Document\n DOCUMENT: 'Document',\n OPERATION_DEFINITION: 'OperationDefinition',\n VARIABLE_DEFINITION: 'VariableDefinition',\n SELECTION_SET: 'SelectionSet',\n FIELD: 'Field',\n ARGUMENT: 'Argument',\n // Fragments\n FRAGMENT_SPREAD: 'FragmentSpread',\n INLINE_FRAGMENT: 'InlineFragment',\n FRAGMENT_DEFINITION: 'FragmentDefinition',\n // Values\n VARIABLE: 'Variable',\n INT: 'IntValue',\n FLOAT: 'FloatValue',\n STRING: 'StringValue',\n BOOLEAN: 'BooleanValue',\n NULL: 'NullValue',\n ENUM: 'EnumValue',\n LIST: 'ListValue',\n OBJECT: 'ObjectValue',\n OBJECT_FIELD: 'ObjectField',\n // Directives\n DIRECTIVE: 'Directive',\n // Types\n NAMED_TYPE: 'NamedType',\n LIST_TYPE: 'ListType',\n NON_NULL_TYPE: 'NonNullType',\n // Type System Definitions\n SCHEMA_DEFINITION: 'SchemaDefinition',\n OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n // Type Definitions\n SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n FIELD_DEFINITION: 'FieldDefinition',\n INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n // Directive Definitions\n DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n // Type System Extensions\n SCHEMA_EXTENSION: 'SchemaExtension',\n // Type Extensions\n SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2Uva2luZHMubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2Uva2luZHMubWpzP2RiZDgiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgc2V0IG9mIGFsbG93ZWQga2luZCB2YWx1ZXMgZm9yIEFTVCBub2Rlcy5cbiAqL1xuZXhwb3J0IHZhciBLaW5kID0gT2JqZWN0LmZyZWV6ZSh7XG4gIC8vIE5hbWVcbiAgTkFNRTogJ05hbWUnLFxuICAvLyBEb2N1bWVudFxuICBET0NVTUVOVDogJ0RvY3VtZW50JyxcbiAgT1BFUkFUSU9OX0RFRklOSVRJT046ICdPcGVyYXRpb25EZWZpbml0aW9uJyxcbiAgVkFSSUFCTEVfREVGSU5JVElPTjogJ1ZhcmlhYmxlRGVmaW5pdGlvbicsXG4gIFNFTEVDVElPTl9TRVQ6ICdTZWxlY3Rpb25TZXQnLFxuICBGSUVMRDogJ0ZpZWxkJyxcbiAgQVJHVU1FTlQ6ICdBcmd1bWVudCcsXG4gIC8vIEZyYWdtZW50c1xuICBGUkFHTUVOVF9TUFJFQUQ6ICdGcmFnbWVudFNwcmVhZCcsXG4gIElOTElORV9GUkFHTUVOVDogJ0lubGluZUZyYWdtZW50JyxcbiAgRlJBR01FTlRfREVGSU5JVElPTjogJ0ZyYWdtZW50RGVmaW5pdGlvbicsXG4gIC8vIFZhbHVlc1xuICBWQVJJQUJMRTogJ1ZhcmlhYmxlJyxcbiAgSU5UOiAnSW50VmFsdWUnLFxuICBGTE9BVDogJ0Zsb2F0VmFsdWUnLFxuICBTVFJJTkc6ICdTdHJpbmdWYWx1ZScsXG4gIEJPT0xFQU46ICdCb29sZWFuVmFsdWUnLFxuICBOVUxMOiAnTnVsbFZhbHVlJyxcbiAgRU5VTTogJ0VudW1WYWx1ZScsXG4gIExJU1Q6ICdMaXN0VmFsdWUnLFxuICBPQkpFQ1Q6ICdPYmplY3RWYWx1ZScsXG4gIE9CSkVDVF9GSUVMRDogJ09iamVjdEZpZWxkJyxcbiAgLy8gRGlyZWN0aXZlc1xuICBESVJFQ1RJVkU6ICdEaXJlY3RpdmUnLFxuICAvLyBUeXBlc1xuICBOQU1FRF9UWVBFOiAnTmFtZWRUeXBlJyxcbiAgTElTVF9UWVBFOiAnTGlzdFR5cGUnLFxuICBOT05fTlVMTF9UWVBFOiAnTm9uTnVsbFR5cGUnLFxuICAvLyBUeXBlIFN5c3RlbSBEZWZpbml0aW9uc1xuICBTQ0hFTUFfREVGSU5JVElPTjogJ1NjaGVtYURlZmluaXRpb24nLFxuICBPUEVSQVRJT05fVFlQRV9ERUZJTklUSU9OOiAnT3BlcmF0aW9uVHlwZURlZmluaXRpb24nLFxuICAvLyBUeXBlIERlZmluaXRpb25zXG4gIFNDQUxBUl9UWVBFX0RFRklOSVRJT046ICdTY2FsYXJUeXBlRGVmaW5pdGlvbicsXG4gIE9CSkVDVF9UWVBFX0RFRklOSVRJT046ICdPYmplY3RUeXBlRGVmaW5pdGlvbicsXG4gIEZJRUxEX0RFRklOSVRJT046ICdGaWVsZERlZmluaXRpb24nLFxuICBJTlBVVF9WQUxVRV9ERUZJTklUSU9OOiAnSW5wdXRWYWx1ZURlZmluaXRpb24nLFxuICBJTlRFUkZBQ0VfVFlQRV9ERUZJTklUSU9OOiAnSW50ZXJmYWNlVHlwZURlZmluaXRpb24nLFxuICBVTklPTl9UWVBFX0RFRklOSVRJT046ICdVbmlvblR5cGVEZWZpbml0aW9uJyxcbiAgRU5VTV9UWVBFX0RFRklOSVRJT046ICdFbnVtVHlwZURlZmluaXRpb24nLFxuICBFTlVNX1ZBTFVFX0RFRklOSVRJT046ICdFbnVtVmFsdWVEZWZpbml0aW9uJyxcbiAgSU5QVVRfT0JKRUNUX1RZUEVfREVGSU5JVElPTjogJ0lucHV0T2JqZWN0VHlwZURlZmluaXRpb24nLFxuICAvLyBEaXJlY3RpdmUgRGVmaW5pdGlvbnNcbiAgRElSRUNUSVZFX0RFRklOSVRJT046ICdEaXJlY3RpdmVEZWZpbml0aW9uJyxcbiAgLy8gVHlwZSBTeXN0ZW0gRXh0ZW5zaW9uc1xuICBTQ0hFTUFfRVhURU5TSU9OOiAnU2NoZW1hRXh0ZW5zaW9uJyxcbiAgLy8gVHlwZSBFeHRlbnNpb25zXG4gIFNDQUxBUl9UWVBFX0VYVEVOU0lPTjogJ1NjYWxhclR5cGVFeHRlbnNpb24nLFxuICBPQkpFQ1RfVFlQRV9FWFRFTlNJT046ICdPYmplY3RUeXBlRXh0ZW5zaW9uJyxcbiAgSU5URVJGQUNFX1RZUEVfRVhURU5TSU9OOiAnSW50ZXJmYWNlVHlwZUV4dGVuc2lvbicsXG4gIFVOSU9OX1RZUEVfRVhURU5TSU9OOiAnVW5pb25UeXBlRXh0ZW5zaW9uJyxcbiAgRU5VTV9UWVBFX0VYVEVOU0lPTjogJ0VudW1UeXBlRXh0ZW5zaW9uJyxcbiAgSU5QVVRfT0JKRUNUX1RZUEVfRVhURU5TSU9OOiAnSW5wdXRPYmplY3RUeXBlRXh0ZW5zaW9uJ1xufSk7XG4vKipcbiAqIFRoZSBlbnVtIHR5cGUgcmVwcmVzZW50aW5nIHRoZSBwb3NzaWJsZSBraW5kIHZhbHVlcyBvZiBBU1Qgbm9kZXMuXG4gKi9cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/kinds.mjs\n");
753
754/***/ }),
755
756/***/ "../../../node_modules/graphql/language/lexer.mjs":
757/*!***********************************************************************************!*\
758 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/language/lexer.mjs ***!
759 \***********************************************************************************/
760/*! exports provided: Lexer, isPunctuatorTokenKind */
761/***/ (function(module, __webpack_exports__, __webpack_require__) {
762
763"use strict";
764eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Lexer\", function() { return Lexer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPunctuatorTokenKind\", function() { return isPunctuatorTokenKind; });\n/* harmony import */ var _error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../error/syntaxError.mjs */ \"../../../node_modules/graphql/error/syntaxError.mjs\");\n/* harmony import */ var _ast_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tokenKind.mjs */ \"../../../node_modules/graphql/language/tokenKind.mjs\");\n/* harmony import */ var _blockString_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./blockString.mjs */ \"../../../node_modules/graphql/language/blockString.mjs\");\n\n\n\n\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nvar Lexer = /*#__PURE__*/function () {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n function Lexer(source) {\n var startOfFileToken = new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].SOF, 0, 0, 0, 0, null);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n\n var _proto = Lexer.prototype;\n\n _proto.advance = function advance() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n ;\n\n _proto.lookahead = function lookahead() {\n var token = this.token;\n\n if (token.kind !== _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].EOF) {\n do {\n var _token$next;\n\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = (_token$next = token.next) !== null && _token$next !== void 0 ? _token$next : token.next = readToken(this, token);\n } while (token.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].COMMENT);\n }\n\n return token;\n };\n\n return Lexer;\n}();\n/**\n * @internal\n */\n\nfunction isPunctuatorTokenKind(kind) {\n return kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].BANG || kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].DOLLAR || kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].AMP || kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].PAREN_L || kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].PAREN_R || kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].SPREAD || kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].COLON || kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].EQUALS || kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].AT || kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].BRACKET_L || kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].BRACKET_R || kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].BRACE_L || kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].PIPE || kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].BRACE_R;\n}\n\nfunction printCharCode(code) {\n return (// NaN/undefined represents access beyond the end of the file.\n isNaN(code) ? _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].EOF : // Trust JSON for ASCII.\n code < 0x007f ? JSON.stringify(String.fromCharCode(code)) : // Otherwise print the escaped form.\n \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\n\nfunction readToken(lexer, prev) {\n var source = lexer.source;\n var body = source.body;\n var bodyLength = body.length;\n var pos = prev.end;\n\n while (pos < bodyLength) {\n var code = body.charCodeAt(pos);\n var _line = lexer.line;\n\n var _col = 1 + pos - lexer.lineStart; // SourceCharacter\n\n\n switch (code) {\n case 0xfeff: // <BOM>\n\n case 9: // \\t\n\n case 32: // <space>\n\n case 44:\n // ,\n ++pos;\n continue;\n\n case 10:\n // \\n\n ++pos;\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n\n case 13:\n // \\r\n if (body.charCodeAt(pos + 1) === 10) {\n pos += 2;\n } else {\n ++pos;\n }\n\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n\n case 33:\n // !\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].BANG, pos, pos + 1, _line, _col, prev);\n\n case 35:\n // #\n return readComment(source, pos, _line, _col, prev);\n\n case 36:\n // $\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].DOLLAR, pos, pos + 1, _line, _col, prev);\n\n case 38:\n // &\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].AMP, pos, pos + 1, _line, _col, prev);\n\n case 40:\n // (\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].PAREN_L, pos, pos + 1, _line, _col, prev);\n\n case 41:\n // )\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].PAREN_R, pos, pos + 1, _line, _col, prev);\n\n case 46:\n // .\n if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].SPREAD, pos, pos + 3, _line, _col, prev);\n }\n\n break;\n\n case 58:\n // :\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].COLON, pos, pos + 1, _line, _col, prev);\n\n case 61:\n // =\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].EQUALS, pos, pos + 1, _line, _col, prev);\n\n case 64:\n // @\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].AT, pos, pos + 1, _line, _col, prev);\n\n case 91:\n // [\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].BRACKET_L, pos, pos + 1, _line, _col, prev);\n\n case 93:\n // ]\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].BRACKET_R, pos, pos + 1, _line, _col, prev);\n\n case 123:\n // {\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].BRACE_L, pos, pos + 1, _line, _col, prev);\n\n case 124:\n // |\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].PIPE, pos, pos + 1, _line, _col, prev);\n\n case 125:\n // }\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].BRACE_R, pos, pos + 1, _line, _col, prev);\n\n case 34:\n // \"\n if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {\n return readBlockString(source, pos, _line, _col, prev, lexer);\n }\n\n return readString(source, pos, _line, _col, prev);\n\n case 45: // -\n\n case 48: // 0\n\n case 49: // 1\n\n case 50: // 2\n\n case 51: // 3\n\n case 52: // 4\n\n case 53: // 5\n\n case 54: // 6\n\n case 55: // 7\n\n case 56: // 8\n\n case 57:\n // 9\n return readNumber(source, pos, code, _line, _col, prev);\n\n case 65: // A\n\n case 66: // B\n\n case 67: // C\n\n case 68: // D\n\n case 69: // E\n\n case 70: // F\n\n case 71: // G\n\n case 72: // H\n\n case 73: // I\n\n case 74: // J\n\n case 75: // K\n\n case 76: // L\n\n case 77: // M\n\n case 78: // N\n\n case 79: // O\n\n case 80: // P\n\n case 81: // Q\n\n case 82: // R\n\n case 83: // S\n\n case 84: // T\n\n case 85: // U\n\n case 86: // V\n\n case 87: // W\n\n case 88: // X\n\n case 89: // Y\n\n case 90: // Z\n\n case 95: // _\n\n case 97: // a\n\n case 98: // b\n\n case 99: // c\n\n case 100: // d\n\n case 101: // e\n\n case 102: // f\n\n case 103: // g\n\n case 104: // h\n\n case 105: // i\n\n case 106: // j\n\n case 107: // k\n\n case 108: // l\n\n case 109: // m\n\n case 110: // n\n\n case 111: // o\n\n case 112: // p\n\n case 113: // q\n\n case 114: // r\n\n case 115: // s\n\n case 116: // t\n\n case 117: // u\n\n case 118: // v\n\n case 119: // w\n\n case 120: // x\n\n case 121: // y\n\n case 122:\n // z\n return readName(source, pos, _line, _col, prev);\n }\n\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(source, pos, unexpectedCharacterMessage(code));\n }\n\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].EOF, bodyLength, bodyLength, line, col, prev);\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\n\nfunction unexpectedCharacterMessage(code) {\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n }\n\n if (code === 39) {\n // '\n return 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?';\n }\n\n return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\n\nfunction readComment(source, start, line, col, prev) {\n var body = source.body;\n var code;\n var position = start;\n\n do {\n code = body.charCodeAt(++position);\n } while (!isNaN(code) && ( // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].COMMENT, start, position, line, col, prev, body.slice(start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int: -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n var body = source.body;\n var code = firstCode;\n var position = start;\n var isFloat = false;\n\n if (code === 45) {\n // -\n code = body.charCodeAt(++position);\n }\n\n if (code === 48) {\n // 0\n code = body.charCodeAt(++position);\n\n if (code >= 48 && code <= 57) {\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n }\n } else {\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 46) {\n // .\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = body.charCodeAt(++position);\n\n if (code === 43 || code === 45) {\n // + -\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n\n if (code === 46 || isNameStart(code)) {\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n }\n\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](isFloat ? _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].FLOAT : _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].INT, start, position, line, col, prev, body.slice(start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\n\nfunction readDigits(source, start, firstCode) {\n var body = source.body;\n var position = start;\n var code = firstCode;\n\n if (code >= 48 && code <= 57) {\n // 0 - 9\n do {\n code = body.charCodeAt(++position);\n } while (code >= 48 && code <= 57); // 0 - 9\n\n\n return position;\n }\n\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\n\nfunction readString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 1;\n var chunkStart = position;\n var code = 0;\n var value = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position)) && // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += body.slice(chunkStart, position);\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].STRING, start, position + 1, line, col, prev, value);\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009) {\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n ++position;\n\n if (code === 92) {\n // \\\n value += body.slice(chunkStart, position - 1);\n code = body.charCodeAt(position);\n\n switch (code) {\n case 34:\n value += '\"';\n break;\n\n case 47:\n value += '/';\n break;\n\n case 92:\n value += '\\\\';\n break;\n\n case 98:\n value += '\\b';\n break;\n\n case 102:\n value += '\\f';\n break;\n\n case 110:\n value += '\\n';\n break;\n\n case 114:\n value += '\\r';\n break;\n\n case 116:\n value += '\\t';\n break;\n\n case 117:\n {\n // uXXXX\n var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));\n\n if (charCode < 0) {\n var invalidSequence = body.slice(position + 1, position + 5);\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(source, position, \"Invalid character escape sequence: \\\\u\".concat(invalidSequence, \".\"));\n }\n\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n }\n\n default:\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n }\n\n ++position;\n chunkStart = position;\n }\n }\n\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\n\nfunction readBlockString(source, start, line, col, prev, lexer) {\n var body = source.body;\n var position = start + 3;\n var chunkStart = position;\n var code = 0;\n var rawValue = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position))) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {\n rawValue += body.slice(chunkStart, position);\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].BLOCK_STRING, start, position + 3, line, col, prev, Object(_blockString_mjs__WEBPACK_IMPORTED_MODULE_3__[\"dedentBlockStringValue\"])(rawValue));\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (body.charCodeAt(position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else if ( // Escape Triple-Quote (\\\"\"\")\n code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) {\n rawValue += body.slice(chunkStart, position) + '\"\"\"';\n position += 4;\n chunkStart = position;\n } else {\n ++position;\n }\n }\n\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexadecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\n\nfunction uniCharCode(a, b, c, d) {\n return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\n\nfunction char2hex(a) {\n return a >= 48 && a <= 57 ? a - 48 // 0-9\n : a >= 65 && a <= 70 ? a - 55 // A-F\n : a >= 97 && a <= 102 ? a - 87 // a-f\n : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\n\nfunction readName(source, start, line, col, prev) {\n var body = source.body;\n var bodyLength = body.length;\n var position = start + 1;\n var code = 0;\n\n while (position !== bodyLength && !isNaN(code = body.charCodeAt(position)) && (code === 95 || // _\n code >= 48 && code <= 57 || // 0-9\n code >= 65 && code <= 90 || // A-Z\n code >= 97 && code <= 122) // a-z\n ) {\n ++position;\n }\n\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Token\"](_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TokenKind\"].NAME, start, position, line, col, prev, body.slice(start, position));\n} // _ A-Z a-z\n\n\nfunction isNameStart(code) {\n return code === 95 || code >= 65 && code <= 90 || code >= 97 && code <= 122;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvbGV4ZXIubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvbGV4ZXIubWpzP2NkMzAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3ludGF4RXJyb3IgfSBmcm9tIFwiLi4vZXJyb3Ivc3ludGF4RXJyb3IubWpzXCI7XG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL2FzdC5tanNcIjtcbmltcG9ydCB7IFRva2VuS2luZCB9IGZyb20gXCIuL3Rva2VuS2luZC5tanNcIjtcbmltcG9ydCB7IGRlZGVudEJsb2NrU3RyaW5nVmFsdWUgfSBmcm9tIFwiLi9ibG9ja1N0cmluZy5tanNcIjtcbi8qKlxuICogR2l2ZW4gYSBTb3VyY2Ugb2JqZWN0LCBjcmVhdGVzIGEgTGV4ZXIgZm9yIHRoYXQgc291cmNlLlxuICogQSBMZXhlciBpcyBhIHN0YXRlZnVsIHN0cmVhbSBnZW5lcmF0b3IgaW4gdGhhdCBldmVyeSB0aW1lXG4gKiBpdCBpcyBhZHZhbmNlZCwgaXQgcmV0dXJucyB0aGUgbmV4dCB0b2tlbiBpbiB0aGUgU291cmNlLiBBc3N1bWluZyB0aGVcbiAqIHNvdXJjZSBsZXhlcywgdGhlIGZpbmFsIFRva2VuIGVtaXR0ZWQgYnkgdGhlIGxleGVyIHdpbGwgYmUgb2Yga2luZFxuICogRU9GLCBhZnRlciB3aGljaCB0aGUgbGV4ZXIgd2lsbCByZXBlYXRlZGx5IHJldHVybiB0aGUgc2FtZSBFT0YgdG9rZW5cbiAqIHdoZW5ldmVyIGNhbGxlZC5cbiAqL1xuXG5leHBvcnQgdmFyIExleGVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIFRoZSBwcmV2aW91c2x5IGZvY3VzZWQgbm9uLWlnbm9yZWQgdG9rZW4uXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudGx5IGZvY3VzZWQgbm9uLWlnbm9yZWQgdG9rZW4uXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGUgKDEtaW5kZXhlZCkgbGluZSBjb250YWluaW5nIHRoZSBjdXJyZW50IHRva2VuLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIGNoYXJhY3RlciBvZmZzZXQgYXQgd2hpY2ggdGhlIGN1cnJlbnQgbGluZSBiZWdpbnMuXG4gICAqL1xuICBmdW5jdGlvbiBMZXhlcihzb3VyY2UpIHtcbiAgICB2YXIgc3RhcnRPZkZpbGVUb2tlbiA9IG5ldyBUb2tlbihUb2tlbktpbmQuU09GLCAwLCAwLCAwLCAwLCBudWxsKTtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgICB0aGlzLmxhc3RUb2tlbiA9IHN0YXJ0T2ZGaWxlVG9rZW47XG4gICAgdGhpcy50b2tlbiA9IHN0YXJ0T2ZGaWxlVG9rZW47XG4gICAgdGhpcy5saW5lID0gMTtcbiAgICB0aGlzLmxpbmVTdGFydCA9IDA7XG4gIH1cbiAgLyoqXG4gICAqIEFkdmFuY2VzIHRoZSB0b2tlbiBzdHJlYW0gdG8gdGhlIG5leHQgbm9uLWlnbm9yZWQgdG9rZW4uXG4gICAqL1xuXG5cbiAgdmFyIF9wcm90byA9IExleGVyLnByb3RvdHlwZTtcblxuICBfcHJvdG8uYWR2YW5jZSA9IGZ1bmN0aW9uIGFkdmFuY2UoKSB7XG4gICAgdGhpcy5sYXN0VG9rZW4gPSB0aGlzLnRva2VuO1xuICAgIHZhciB0b2tlbiA9IHRoaXMudG9rZW4gPSB0aGlzLmxvb2thaGVhZCgpO1xuICAgIHJldHVybiB0b2tlbjtcbiAgfVxuICAvKipcbiAgICogTG9va3MgYWhlYWQgYW5kIHJldHVybnMgdGhlIG5leHQgbm9uLWlnbm9yZWQgdG9rZW4sIGJ1dCBkb2VzIG5vdCBjaGFuZ2VcbiAgICogdGhlIHN0YXRlIG9mIExleGVyLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5sb29rYWhlYWQgPSBmdW5jdGlvbiBsb29rYWhlYWQoKSB7XG4gICAgdmFyIHRva2VuID0gdGhpcy50b2tlbjtcblxuICAgIGlmICh0b2tlbi5raW5kICE9PSBUb2tlbktpbmQuRU9GKSB7XG4gICAgICBkbyB7XG4gICAgICAgIHZhciBfdG9rZW4kbmV4dDtcblxuICAgICAgICAvLyBOb3RlOiBuZXh0IGlzIG9ubHkgbXV0YWJsZSBkdXJpbmcgcGFyc2luZywgc28gd2UgY2FzdCB0byBhbGxvdyB0aGlzLlxuICAgICAgICB0b2tlbiA9IChfdG9rZW4kbmV4dCA9IHRva2VuLm5leHQpICE9PSBudWxsICYmIF90b2tlbiRuZXh0ICE9PSB2b2lkIDAgPyBfdG9rZW4kbmV4dCA6IHRva2VuLm5leHQgPSByZWFkVG9rZW4odGhpcywgdG9rZW4pO1xuICAgICAgfSB3aGlsZSAodG9rZW4ua2luZCA9PT0gVG9rZW5LaW5kLkNPTU1FTlQpO1xuICAgIH1cblxuICAgIHJldHVybiB0b2tlbjtcbiAgfTtcblxuICByZXR1cm4gTGV4ZXI7XG59KCk7XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1B1bmN0dWF0b3JUb2tlbktpbmQoa2luZCkge1xuICByZXR1cm4ga2luZCA9PT0gVG9rZW5LaW5kLkJBTkcgfHwga2luZCA9PT0gVG9rZW5LaW5kLkRPTExBUiB8fCBraW5kID09PSBUb2tlbktpbmQuQU1QIHx8IGtpbmQgPT09IFRva2VuS2luZC5QQVJFTl9MIHx8IGtpbmQgPT09IFRva2VuS2luZC5QQVJFTl9SIHx8IGtpbmQgPT09IFRva2VuS2luZC5TUFJFQUQgfHwga2luZCA9PT0gVG9rZW5LaW5kLkNPTE9OIHx8IGtpbmQgPT09IFRva2VuS2luZC5FUVVBTFMgfHwga2luZCA9PT0gVG9rZW5LaW5kLkFUIHx8IGtpbmQgPT09IFRva2VuS2luZC5CUkFDS0VUX0wgfHwga2luZCA9PT0gVG9rZW5LaW5kLkJSQUNLRVRfUiB8fCBraW5kID09PSBUb2tlbktpbmQuQlJBQ0VfTCB8fCBraW5kID09PSBUb2tlbktpbmQuUElQRSB8fCBraW5kID09PSBUb2tlbktpbmQuQlJBQ0VfUjtcbn1cblxuZnVuY3Rpb24gcHJpbnRDaGFyQ29kZShjb2RlKSB7XG4gIHJldHVybiAoLy8gTmFOL3VuZGVmaW5lZCByZXByZXNlbnRzIGFjY2VzcyBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgZmlsZS5cbiAgICBpc05hTihjb2RlKSA/IFRva2VuS2luZC5FT0YgOiAvLyBUcnVzdCBKU09OIGZvciBBU0NJSS5cbiAgICBjb2RlIDwgMHgwMDdmID8gSlNPTi5zdHJpbmdpZnkoU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKSkgOiAvLyBPdGhlcndpc2UgcHJpbnQgdGhlIGVzY2FwZWQgZm9ybS5cbiAgICBcIlxcXCJcXFxcdVwiLmNvbmNhdCgoJzAwJyArIGNvZGUudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkpLnNsaWNlKC00KSwgXCJcXFwiXCIpXG4gICk7XG59XG4vKipcbiAqIEdldHMgdGhlIG5leHQgdG9rZW4gZnJvbSB0aGUgc291cmNlIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBwb3NpdGlvbi5cbiAqXG4gKiBUaGlzIHNraXBzIG92ZXIgd2hpdGVzcGFjZSB1bnRpbCBpdCBmaW5kcyB0aGUgbmV4dCBsZXhhYmxlIHRva2VuLCB0aGVuIGxleGVzXG4gKiBwdW5jdHVhdG9ycyBpbW1lZGlhdGVseSBvciBjYWxscyB0aGUgYXBwcm9wcmlhdGUgaGVscGVyIGZ1bmN0aW9uIGZvciBtb3JlXG4gKiBjb21wbGljYXRlZCB0b2tlbnMuXG4gKi9cblxuXG5mdW5jdGlvbiByZWFkVG9rZW4obGV4ZXIsIHByZXYpIHtcbiAgdmFyIHNvdXJjZSA9IGxleGVyLnNvdXJjZTtcbiAgdmFyIGJvZHkgPSBzb3VyY2UuYm9keTtcbiAgdmFyIGJvZHlMZW5ndGggPSBib2R5Lmxlbmd0aDtcbiAgdmFyIHBvcyA9IHByZXYuZW5kO1xuXG4gIHdoaWxlIChwb3MgPCBib2R5TGVuZ3RoKSB7XG4gICAgdmFyIGNvZGUgPSBib2R5LmNoYXJDb2RlQXQocG9zKTtcbiAgICB2YXIgX2xpbmUgPSBsZXhlci5saW5lO1xuXG4gICAgdmFyIF9jb2wgPSAxICsgcG9zIC0gbGV4ZXIubGluZVN0YXJ0OyAvLyBTb3VyY2VDaGFyYWN0ZXJcblxuXG4gICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICBjYXNlIDB4ZmVmZjogLy8gPEJPTT5cblxuICAgICAgY2FzZSA5OiAvLyAgIFxcdFxuXG4gICAgICBjYXNlIDMyOiAvLyAgPHNwYWNlPlxuXG4gICAgICBjYXNlIDQ0OlxuICAgICAgICAvLyAgLFxuICAgICAgICArK3BvcztcbiAgICAgICAgY29udGludWU7XG5cbiAgICAgIGNhc2UgMTA6XG4gICAgICAgIC8vICBcXG5cbiAgICAgICAgKytwb3M7XG4gICAgICAgICsrbGV4ZXIubGluZTtcbiAgICAgICAgbGV4ZXIubGluZVN0YXJ0ID0gcG9zO1xuICAgICAgICBjb250aW51ZTtcblxuICAgICAgY2FzZSAxMzpcbiAgICAgICAgLy8gIFxcclxuICAgICAgICBpZiAoYm9keS5jaGFyQ29kZUF0KHBvcyArIDEpID09PSAxMCkge1xuICAgICAgICAgIHBvcyArPSAyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICsrcG9zO1xuICAgICAgICB9XG5cbiAgICAgICAgKytsZXhlci5saW5lO1xuICAgICAgICBsZXhlci5saW5lU3RhcnQgPSBwb3M7XG4gICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICBjYXNlIDMzOlxuICAgICAgICAvLyAgIVxuICAgICAgICByZXR1cm4gbmV3IFRva2VuKFRva2VuS2luZC5CQU5HLCBwb3MsIHBvcyArIDEsIF9saW5lLCBfY29sLCBwcmV2KTtcblxuICAgICAgY2FzZSAzNTpcbiAgICAgICAgLy8gICNcbiAgICAgICAgcmV0dXJuIHJlYWRDb21tZW50KHNvdXJjZSwgcG9zLCBfbGluZSwgX2NvbCwgcHJldik7XG5cbiAgICAgIGNhc2UgMzY6XG4gICAgICAgIC8vICAkXG4gICAgICAgIHJldHVybiBuZXcgVG9rZW4oVG9rZW5LaW5kLkRPTExBUiwgcG9zLCBwb3MgKyAxLCBfbGluZSwgX2NvbCwgcHJldik7XG5cbiAgICAgIGNhc2UgMzg6XG4gICAgICAgIC8vICAmXG4gICAgICAgIHJldHVybiBuZXcgVG9rZW4oVG9rZW5LaW5kLkFNUCwgcG9zLCBwb3MgKyAxLCBfbGluZSwgX2NvbCwgcHJldik7XG5cbiAgICAgIGNhc2UgNDA6XG4gICAgICAgIC8vICAoXG4gICAgICAgIHJldHVybiBuZXcgVG9rZW4oVG9rZW5LaW5kLlBBUkVOX0wsIHBvcywgcG9zICsgMSwgX2xpbmUsIF9jb2wsIHByZXYpO1xuXG4gICAgICBjYXNlIDQxOlxuICAgICAgICAvLyAgKVxuICAgICAgICByZXR1cm4gbmV3IFRva2VuKFRva2VuS2luZC5QQVJFTl9SLCBwb3MsIHBvcyArIDEsIF9saW5lLCBfY29sLCBwcmV2KTtcblxuICAgICAgY2FzZSA0NjpcbiAgICAgICAgLy8gIC5cbiAgICAgICAgaWYgKGJvZHkuY2hhckNvZGVBdChwb3MgKyAxKSA9PT0gNDYgJiYgYm9keS5jaGFyQ29kZUF0KHBvcyArIDIpID09PSA0Nikge1xuICAgICAgICAgIHJldHVybiBuZXcgVG9rZW4oVG9rZW5LaW5kLlNQUkVBRCwgcG9zLCBwb3MgKyAzLCBfbGluZSwgX2NvbCwgcHJldik7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSA1ODpcbiAgICAgICAgLy8gIDpcbiAgICAgICAgcmV0dXJuIG5ldyBUb2tlbihUb2tlbktpbmQuQ09MT04sIHBvcywgcG9zICsgMSwgX2xpbmUsIF9jb2wsIHByZXYpO1xuXG4gICAgICBjYXNlIDYxOlxuICAgICAgICAvLyAgPVxuICAgICAgICByZXR1cm4gbmV3IFRva2VuKFRva2VuS2luZC5FUVVBTFMsIHBvcywgcG9zICsgMSwgX2xpbmUsIF9jb2wsIHByZXYpO1xuXG4gICAgICBjYXNlIDY0OlxuICAgICAgICAvLyAgQFxuICAgICAgICByZXR1cm4gbmV3IFRva2VuKFRva2VuS2luZC5BVCwgcG9zLCBwb3MgKyAxLCBfbGluZSwgX2NvbCwgcHJldik7XG5cbiAgICAgIGNhc2UgOTE6XG4gICAgICAgIC8vICBbXG4gICAgICAgIHJldHVybiBuZXcgVG9rZW4oVG9rZW5LaW5kLkJSQUNLRVRfTCwgcG9zLCBwb3MgKyAxLCBfbGluZSwgX2NvbCwgcHJldik7XG5cbiAgICAgIGNhc2UgOTM6XG4gICAgICAgIC8vICBdXG4gICAgICAgIHJldHVybiBuZXcgVG9rZW4oVG9rZW5LaW5kLkJSQUNLRVRfUiwgcG9zLCBwb3MgKyAxLCBfbGluZSwgX2NvbCwgcHJldik7XG5cbiAgICAgIGNhc2UgMTIzOlxuICAgICAgICAvLyB7XG4gICAgICAgIHJldHVybiBuZXcgVG9rZW4oVG9rZW5LaW5kLkJSQUNFX0wsIHBvcywgcG9zICsgMSwgX2xpbmUsIF9jb2wsIHByZXYpO1xuXG4gICAgICBjYXNlIDEyNDpcbiAgICAgICAgLy8gfFxuICAgICAgICByZXR1cm4gbmV3IFRva2VuKFRva2VuS2luZC5QSVBFLCBwb3MsIHBvcyArIDEsIF9saW5lLCBfY29sLCBwcmV2KTtcblxuICAgICAgY2FzZSAxMjU6XG4gICAgICAgIC8vIH1cbiAgICAgICAgcmV0dXJuIG5ldyBUb2tlbihUb2tlbktpbmQuQlJBQ0VfUiwgcG9zLCBwb3MgKyAxLCBfbGluZSwgX2NvbCwgcHJldik7XG5cbiAgICAgIGNhc2UgMzQ6XG4gICAgICAgIC8vICBcIlxuICAgICAgICBpZiAoYm9keS5jaGFyQ29kZUF0KHBvcyArIDEpID09PSAzNCAmJiBib2R5LmNoYXJDb2RlQXQocG9zICsgMikgPT09IDM0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlYWRCbG9ja1N0cmluZyhzb3VyY2UsIHBvcywgX2xpbmUsIF9jb2wsIHByZXYsIGxleGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZWFkU3RyaW5nKHNvdXJjZSwgcG9zLCBfbGluZSwgX2NvbCwgcHJldik7XG5cbiAgICAgIGNhc2UgNDU6IC8vICAtXG5cbiAgICAgIGNhc2UgNDg6IC8vICAwXG5cbiAgICAgIGNhc2UgNDk6IC8vICAxXG5cbiAgICAgIGNhc2UgNTA6IC8vICAyXG5cbiAgICAgIGNhc2UgNTE6IC8vICAzXG5cbiAgICAgIGNhc2UgNTI6IC8vICA0XG5cbiAgICAgIGNhc2UgNTM6IC8vICA1XG5cbiAgICAgIGNhc2UgNTQ6IC8vICA2XG5cbiAgICAgIGNhc2UgNTU6IC8vICA3XG5cbiAgICAgIGNhc2UgNTY6IC8vICA4XG5cbiAgICAgIGNhc2UgNTc6XG4gICAgICAgIC8vICA5XG4gICAgICAgIHJldHVybiByZWFkTnVtYmVyKHNvdXJjZSwgcG9zLCBjb2RlLCBfbGluZSwgX2NvbCwgcHJldik7XG5cbiAgICAgIGNhc2UgNjU6IC8vICBBXG5cbiAgICAgIGNhc2UgNjY6IC8vICBCXG5cbiAgICAgIGNhc2UgNjc6IC8vICBDXG5cbiAgICAgIGNhc2UgNjg6IC8vICBEXG5cbiAgICAgIGNhc2UgNjk6IC8vICBFXG5cbiAgICAgIGNhc2UgNzA6IC8vICBGXG5cbiAgICAgIGNhc2UgNzE6IC8vICBHXG5cbiAgICAgIGNhc2UgNzI6IC8vICBIXG5cbiAgICAgIGNhc2UgNzM6IC8vICBJXG5cbiAgICAgIGNhc2UgNzQ6IC8vICBKXG5cbiAgICAgIGNhc2UgNzU6IC8vICBLXG5cbiAgICAgIGNhc2UgNzY6IC8vICBMXG5cbiAgICAgIGNhc2UgNzc6IC8vICBNXG5cbiAgICAgIGNhc2UgNzg6IC8vICBOXG5cbiAgICAgIGNhc2UgNzk6IC8vICBPXG5cbiAgICAgIGNhc2UgODA6IC8vICBQXG5cbiAgICAgIGNhc2UgODE6IC8vICBRXG5cbiAgICAgIGNhc2UgODI6IC8vICBSXG5cbiAgICAgIGNhc2UgODM6IC8vICBTXG5cbiAgICAgIGNhc2UgODQ6IC8vICBUXG5cbiAgICAgIGNhc2UgODU6IC8vICBVXG5cbiAgICAgIGNhc2UgODY6IC8vICBWXG5cbiAgICAgIGNhc2UgODc6IC8vICBXXG5cbiAgICAgIGNhc2UgODg6IC8vICBYXG5cbiAgICAgIGNhc2UgODk6IC8vICBZXG5cbiAgICAgIGNhc2UgOTA6IC8vICBaXG5cbiAgICAgIGNhc2UgOTU6IC8vICBfXG5cbiAgICAgIGNhc2UgOTc6IC8vICBhXG5cbiAgICAgIGNhc2UgOTg6IC8vICBiXG5cbiAgICAgIGNhc2UgOTk6IC8vICBjXG5cbiAgICAgIGNhc2UgMTAwOiAvLyBkXG5cbiAgICAgIGNhc2UgMTAxOiAvLyBlXG5cbiAgICAgIGNhc2UgMTAyOiAvLyBmXG5cbiAgICAgIGNhc2UgMTAzOiAvLyBnXG5cbiAgICAgIGNhc2UgMTA0OiAvLyBoXG5cbiAgICAgIGNhc2UgMTA1OiAvLyBpXG5cbiAgICAgIGNhc2UgMTA2OiAvLyBqXG5cbiAgICAgIGNhc2UgMTA3OiAvLyBrXG5cbiAgICAgIGNhc2UgMTA4OiAvLyBsXG5cbiAgICAgIGNhc2UgMTA5OiAvLyBtXG5cbiAgICAgIGNhc2UgMTEwOiAvLyBuXG5cbiAgICAgIGNhc2UgMTExOiAvLyBvXG5cbiAgICAgIGNhc2UgMTEyOiAvLyBwXG5cbiAgICAgIGNhc2UgMTEzOiAvLyBxXG5cbiAgICAgIGNhc2UgMTE0OiAvLyByXG5cbiAgICAgIGNhc2UgMTE1OiAvLyBzXG5cbiAgICAgIGNhc2UgMTE2OiAvLyB0XG5cbiAgICAgIGNhc2UgMTE3OiAvLyB1XG5cbiAgICAgIGNhc2UgMTE4OiAvLyB2XG5cbiAgICAgIGNhc2UgMTE5OiAvLyB3XG5cbiAgICAgIGNhc2UgMTIwOiAvLyB4XG5cbiAgICAgIGNhc2UgMTIxOiAvLyB5XG5cbiAgICAgIGNhc2UgMTIyOlxuICAgICAgICAvLyB6XG4gICAgICAgIHJldHVybiByZWFkTmFtZShzb3VyY2UsIHBvcywgX2xpbmUsIF9jb2wsIHByZXYpO1xuICAgIH1cblxuICAgIHRocm93IHN5bnRheEVycm9yKHNvdXJjZSwgcG9zLCB1bmV4cGVjdGVkQ2hhcmFjdGVyTWVzc2FnZShjb2RlKSk7XG4gIH1cblxuICB2YXIgbGluZSA9IGxleGVyLmxpbmU7XG4gIHZhciBjb2wgPSAxICsgcG9zIC0gbGV4ZXIubGluZVN0YXJ0O1xuICByZXR1cm4gbmV3IFRva2VuKFRva2VuS2luZC5FT0YsIGJvZHlMZW5ndGgsIGJvZHlMZW5ndGgsIGxpbmUsIGNvbCwgcHJldik7XG59XG4vKipcbiAqIFJlcG9ydCBhIG1lc3NhZ2UgdGhhdCBhbiB1bmV4cGVjdGVkIGNoYXJhY3RlciB3YXMgZW5jb3VudGVyZWQuXG4gKi9cblxuXG5mdW5jdGlvbiB1bmV4cGVjdGVkQ2hhcmFjdGVyTWVzc2FnZShjb2RlKSB7XG4gIGlmIChjb2RlIDwgMHgwMDIwICYmIGNvZGUgIT09IDB4MDAwOSAmJiBjb2RlICE9PSAweDAwMGEgJiYgY29kZSAhPT0gMHgwMDBkKSB7XG4gICAgcmV0dXJuIFwiQ2Fubm90IGNvbnRhaW4gdGhlIGludmFsaWQgY2hhcmFjdGVyIFwiLmNvbmNhdChwcmludENoYXJDb2RlKGNvZGUpLCBcIi5cIik7XG4gIH1cblxuICBpZiAoY29kZSA9PT0gMzkpIHtcbiAgICAvLyAnXG4gICAgcmV0dXJuICdVbmV4cGVjdGVkIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXIgKFxcJyksIGRpZCB5b3UgbWVhbiB0byB1c2UgYSBkb3VibGUgcXVvdGUgKFwiKT8nO1xuICB9XG5cbiAgcmV0dXJuIFwiQ2Fubm90IHBhcnNlIHRoZSB1bmV4cGVjdGVkIGNoYXJhY3RlciBcIi5jb25jYXQocHJpbnRDaGFyQ29kZShjb2RlKSwgXCIuXCIpO1xufVxuLyoqXG4gKiBSZWFkcyBhIGNvbW1lbnQgdG9rZW4gZnJvbSB0aGUgc291cmNlIGZpbGUuXG4gKlxuICogI1tcXHUwMDA5XFx1MDAyMC1cXHVGRkZGXSpcbiAqL1xuXG5cbmZ1bmN0aW9uIHJlYWRDb21tZW50KHNvdXJjZSwgc3RhcnQsIGxpbmUsIGNvbCwgcHJldikge1xuICB2YXIgYm9keSA9IHNvdXJjZS5ib2R5O1xuICB2YXIgY29kZTtcbiAgdmFyIHBvc2l0aW9uID0gc3RhcnQ7XG5cbiAgZG8ge1xuICAgIGNvZGUgPSBib2R5LmNoYXJDb2RlQXQoKytwb3NpdGlvbik7XG4gIH0gd2hpbGUgKCFpc05hTihjb2RlKSAmJiAoIC8vIFNvdXJjZUNoYXJhY3RlciBidXQgbm90IExpbmVUZXJtaW5hdG9yXG4gIGNvZGUgPiAweDAwMWYgfHwgY29kZSA9PT0gMHgwMDA5KSk7XG5cbiAgcmV0dXJuIG5ldyBUb2tlbihUb2tlbktpbmQuQ09NTUVOVCwgc3RhcnQsIHBvc2l0aW9uLCBsaW5lLCBjb2wsIHByZXYsIGJvZHkuc2xpY2Uoc3RhcnQgKyAxLCBwb3NpdGlvbikpO1xufVxuLyoqXG4gKiBSZWFkcyBhIG51bWJlciB0b2tlbiBmcm9tIHRoZSBzb3VyY2UgZmlsZSwgZWl0aGVyIGEgZmxvYXRcbiAqIG9yIGFuIGludCBkZXBlbmRpbmcgb24gd2hldGhlciBhIGRlY2ltYWwgcG9pbnQgYXBwZWFycy5cbiAqXG4gKiBJbnQ6ICAgLT8oMHxbMS05XVswLTldKilcbiAqIEZsb2F0OiAtPygwfFsxLTldWzAtOV0qKShcXC5bMC05XSspPygoRXxlKSgrfC0pP1swLTldKyk/XG4gKi9cblxuXG5mdW5jdGlvbiByZWFkTnVtYmVyKHNvdXJjZSwgc3RhcnQsIGZpcnN0Q29kZSwgbGluZSwgY29sLCBwcmV2KSB7XG4gIHZhciBib2R5ID0gc291cmNlLmJvZHk7XG4gIHZhciBjb2RlID0gZmlyc3RDb2RlO1xuICB2YXIgcG9zaXRpb24gPSBzdGFydDtcbiAgdmFyIGlzRmxvYXQgPSBmYWxzZTtcblxuICBpZiAoY29kZSA9PT0gNDUpIHtcbiAgICAvLyAtXG4gICAgY29kZSA9IGJvZHkuY2hhckNvZGVBdCgrK3Bvc2l0aW9uKTtcbiAgfVxuXG4gIGlmIChjb2RlID09PSA0OCkge1xuICAgIC8vIDBcbiAgICBjb2RlID0gYm9keS5jaGFyQ29kZUF0KCsrcG9zaXRpb24pO1xuXG4gICAgaWYgKGNvZGUgPj0gNDggJiYgY29kZSA8PSA1Nykge1xuICAgICAgdGhyb3cgc3ludGF4RXJyb3Ioc291cmNlLCBwb3NpdGlvbiwgXCJJbnZhbGlkIG51bWJlciwgdW5leHBlY3RlZCBkaWdpdCBhZnRlciAwOiBcIi5jb25jYXQocHJpbnRDaGFyQ29kZShjb2RlKSwgXCIuXCIpKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcG9zaXRpb24gPSByZWFkRGlnaXRzKHNvdXJjZSwgcG9zaXRpb24sIGNvZGUpO1xuICAgIGNvZGUgPSBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24pO1xuICB9XG5cbiAgaWYgKGNvZGUgPT09IDQ2KSB7XG4gICAgLy8gLlxuICAgIGlzRmxvYXQgPSB0cnVlO1xuICAgIGNvZGUgPSBib2R5LmNoYXJDb2RlQXQoKytwb3NpdGlvbik7XG4gICAgcG9zaXRpb24gPSByZWFkRGlnaXRzKHNvdXJjZSwgcG9zaXRpb24sIGNvZGUpO1xuICAgIGNvZGUgPSBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24pO1xuICB9XG5cbiAgaWYgKGNvZGUgPT09IDY5IHx8IGNvZGUgPT09IDEwMSkge1xuICAgIC8vIEUgZVxuICAgIGlzRmxvYXQgPSB0cnVlO1xuICAgIGNvZGUgPSBib2R5LmNoYXJDb2RlQXQoKytwb3NpdGlvbik7XG5cbiAgICBpZiAoY29kZSA9PT0gNDMgfHwgY29kZSA9PT0gNDUpIHtcbiAgICAgIC8vICsgLVxuICAgICAgY29kZSA9IGJvZHkuY2hhckNvZGVBdCgrK3Bvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBwb3NpdGlvbiA9IHJlYWREaWdpdHMoc291cmNlLCBwb3NpdGlvbiwgY29kZSk7XG4gICAgY29kZSA9IGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbik7XG4gIH0gLy8gTnVtYmVycyBjYW5ub3QgYmUgZm9sbG93ZWQgYnkgLiBvciBOYW1lU3RhcnRcblxuXG4gIGlmIChjb2RlID09PSA0NiB8fCBpc05hbWVTdGFydChjb2RlKSkge1xuICAgIHRocm93IHN5bnRheEVycm9yKHNvdXJjZSwgcG9zaXRpb24sIFwiSW52YWxpZCBudW1iZXIsIGV4cGVjdGVkIGRpZ2l0IGJ1dCBnb3Q6IFwiLmNvbmNhdChwcmludENoYXJDb2RlKGNvZGUpLCBcIi5cIikpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBUb2tlbihpc0Zsb2F0ID8gVG9rZW5LaW5kLkZMT0FUIDogVG9rZW5LaW5kLklOVCwgc3RhcnQsIHBvc2l0aW9uLCBsaW5lLCBjb2wsIHByZXYsIGJvZHkuc2xpY2Uoc3RhcnQsIHBvc2l0aW9uKSk7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIG5ldyBwb3NpdGlvbiBpbiB0aGUgc291cmNlIGFmdGVyIHJlYWRpbmcgZGlnaXRzLlxuICovXG5cblxuZnVuY3Rpb24gcmVhZERpZ2l0cyhzb3VyY2UsIHN0YXJ0LCBmaXJzdENvZGUpIHtcbiAgdmFyIGJvZHkgPSBzb3VyY2UuYm9keTtcbiAgdmFyIHBvc2l0aW9uID0gc3RhcnQ7XG4gIHZhciBjb2RlID0gZmlyc3RDb2RlO1xuXG4gIGlmIChjb2RlID49IDQ4ICYmIGNvZGUgPD0gNTcpIHtcbiAgICAvLyAwIC0gOVxuICAgIGRvIHtcbiAgICAgIGNvZGUgPSBib2R5LmNoYXJDb2RlQXQoKytwb3NpdGlvbik7XG4gICAgfSB3aGlsZSAoY29kZSA+PSA0OCAmJiBjb2RlIDw9IDU3KTsgLy8gMCAtIDlcblxuXG4gICAgcmV0dXJuIHBvc2l0aW9uO1xuICB9XG5cbiAgdGhyb3cgc3ludGF4RXJyb3Ioc291cmNlLCBwb3NpdGlvbiwgXCJJbnZhbGlkIG51bWJlciwgZXhwZWN0ZWQgZGlnaXQgYnV0IGdvdDogXCIuY29uY2F0KHByaW50Q2hhckNvZGUoY29kZSksIFwiLlwiKSk7XG59XG4vKipcbiAqIFJlYWRzIGEgc3RyaW5nIHRva2VuIGZyb20gdGhlIHNvdXJjZSBmaWxlLlxuICpcbiAqIFwiKFteXCJcXFxcXFx1MDAwQVxcdTAwMERdfChcXFxcKHVbMC05YS1mQS1GXXs0fXxbXCJcXFxcL2JmbnJ0XSkpKSpcIlxuICovXG5cblxuZnVuY3Rpb24gcmVhZFN0cmluZyhzb3VyY2UsIHN0YXJ0LCBsaW5lLCBjb2wsIHByZXYpIHtcbiAgdmFyIGJvZHkgPSBzb3VyY2UuYm9keTtcbiAgdmFyIHBvc2l0aW9uID0gc3RhcnQgKyAxO1xuICB2YXIgY2h1bmtTdGFydCA9IHBvc2l0aW9uO1xuICB2YXIgY29kZSA9IDA7XG4gIHZhciB2YWx1ZSA9ICcnO1xuXG4gIHdoaWxlIChwb3NpdGlvbiA8IGJvZHkubGVuZ3RoICYmICFpc05hTihjb2RlID0gYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uKSkgJiYgLy8gbm90IExpbmVUZXJtaW5hdG9yXG4gIGNvZGUgIT09IDB4MDAwYSAmJiBjb2RlICE9PSAweDAwMGQpIHtcbiAgICAvLyBDbG9zaW5nIFF1b3RlIChcIilcbiAgICBpZiAoY29kZSA9PT0gMzQpIHtcbiAgICAgIHZhbHVlICs9IGJvZHkuc2xpY2UoY2h1bmtTdGFydCwgcG9zaXRpb24pO1xuICAgICAgcmV0dXJuIG5ldyBUb2tlbihUb2tlbktpbmQuU1RSSU5HLCBzdGFydCwgcG9zaXRpb24gKyAxLCBsaW5lLCBjb2wsIHByZXYsIHZhbHVlKTtcbiAgICB9IC8vIFNvdXJjZUNoYXJhY3RlclxuXG5cbiAgICBpZiAoY29kZSA8IDB4MDAyMCAmJiBjb2RlICE9PSAweDAwMDkpIHtcbiAgICAgIHRocm93IHN5bnRheEVycm9yKHNvdXJjZSwgcG9zaXRpb24sIFwiSW52YWxpZCBjaGFyYWN0ZXIgd2l0aGluIFN0cmluZzogXCIuY29uY2F0KHByaW50Q2hhckNvZGUoY29kZSksIFwiLlwiKSk7XG4gICAgfVxuXG4gICAgKytwb3NpdGlvbjtcblxuICAgIGlmIChjb2RlID09PSA5Mikge1xuICAgICAgLy8gXFxcbiAgICAgIHZhbHVlICs9IGJvZHkuc2xpY2UoY2h1bmtTdGFydCwgcG9zaXRpb24gLSAxKTtcbiAgICAgIGNvZGUgPSBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24pO1xuXG4gICAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICB2YWx1ZSArPSAnXCInO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgdmFsdWUgKz0gJy8nO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgOTI6XG4gICAgICAgICAgdmFsdWUgKz0gJ1xcXFwnO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgOTg6XG4gICAgICAgICAgdmFsdWUgKz0gJ1xcYic7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAxMDI6XG4gICAgICAgICAgdmFsdWUgKz0gJ1xcZic7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAxMTA6XG4gICAgICAgICAgdmFsdWUgKz0gJ1xcbic7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAxMTQ6XG4gICAgICAgICAgdmFsdWUgKz0gJ1xccic7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAxMTY6XG4gICAgICAgICAgdmFsdWUgKz0gJ1xcdCc7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAxMTc6XG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gdVhYWFhcbiAgICAgICAgICAgIHZhciBjaGFyQ29kZSA9IHVuaUNoYXJDb2RlKGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDEpLCBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyAyKSwgYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMyksIGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDQpKTtcblxuICAgICAgICAgICAgaWYgKGNoYXJDb2RlIDwgMCkge1xuICAgICAgICAgICAgICB2YXIgaW52YWxpZFNlcXVlbmNlID0gYm9keS5zbGljZShwb3NpdGlvbiArIDEsIHBvc2l0aW9uICsgNSk7XG4gICAgICAgICAgICAgIHRocm93IHN5bnRheEVycm9yKHNvdXJjZSwgcG9zaXRpb24sIFwiSW52YWxpZCBjaGFyYWN0ZXIgZXNjYXBlIHNlcXVlbmNlOiBcXFxcdVwiLmNvbmNhdChpbnZhbGlkU2VxdWVuY2UsIFwiLlwiKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhbHVlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpO1xuICAgICAgICAgICAgcG9zaXRpb24gKz0gNDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IHN5bnRheEVycm9yKHNvdXJjZSwgcG9zaXRpb24sIFwiSW52YWxpZCBjaGFyYWN0ZXIgZXNjYXBlIHNlcXVlbmNlOiBcXFxcXCIuY29uY2F0KFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSksIFwiLlwiKSk7XG4gICAgICB9XG5cbiAgICAgICsrcG9zaXRpb247XG4gICAgICBjaHVua1N0YXJ0ID0gcG9zaXRpb247XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgc3ludGF4RXJyb3Ioc291cmNlLCBwb3NpdGlvbiwgJ1VudGVybWluYXRlZCBzdHJpbmcuJyk7XG59XG4vKipcbiAqIFJlYWRzIGEgYmxvY2sgc3RyaW5nIHRva2VuIGZyb20gdGhlIHNvdXJjZSBmaWxlLlxuICpcbiAqIFwiXCJcIihcIj9cIj8oXFxcXFwiXCJcInxcXFxcKD8hPVwiXCJcIil8W15cIlxcXFxdKSkqXCJcIlwiXG4gKi9cblxuXG5mdW5jdGlvbiByZWFkQmxvY2tTdHJpbmcoc291cmNlLCBzdGFydCwgbGluZSwgY29sLCBwcmV2LCBsZXhlcikge1xuICB2YXIgYm9keSA9IHNvdXJjZS5ib2R5O1xuICB2YXIgcG9zaXRpb24gPSBzdGFydCArIDM7XG4gIHZhciBjaHVua1N0YXJ0ID0gcG9zaXRpb247XG4gIHZhciBjb2RlID0gMDtcbiAgdmFyIHJhd1ZhbHVlID0gJyc7XG5cbiAgd2hpbGUgKHBvc2l0aW9uIDwgYm9keS5sZW5ndGggJiYgIWlzTmFOKGNvZGUgPSBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24pKSkge1xuICAgIC8vIENsb3NpbmcgVHJpcGxlLVF1b3RlIChcIlwiXCIpXG4gICAgaWYgKGNvZGUgPT09IDM0ICYmIGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDEpID09PSAzNCAmJiBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyAyKSA9PT0gMzQpIHtcbiAgICAgIHJhd1ZhbHVlICs9IGJvZHkuc2xpY2UoY2h1bmtTdGFydCwgcG9zaXRpb24pO1xuICAgICAgcmV0dXJuIG5ldyBUb2tlbihUb2tlbktpbmQuQkxPQ0tfU1RSSU5HLCBzdGFydCwgcG9zaXRpb24gKyAzLCBsaW5lLCBjb2wsIHByZXYsIGRlZGVudEJsb2NrU3RyaW5nVmFsdWUocmF3VmFsdWUpKTtcbiAgICB9IC8vIFNvdXJjZUNoYXJhY3RlclxuXG5cbiAgICBpZiAoY29kZSA8IDB4MDAyMCAmJiBjb2RlICE9PSAweDAwMDkgJiYgY29kZSAhPT0gMHgwMDBhICYmIGNvZGUgIT09IDB4MDAwZCkge1xuICAgICAgdGhyb3cgc3ludGF4RXJyb3Ioc291cmNlLCBwb3NpdGlvbiwgXCJJbnZhbGlkIGNoYXJhY3RlciB3aXRoaW4gU3RyaW5nOiBcIi5jb25jYXQocHJpbnRDaGFyQ29kZShjb2RlKSwgXCIuXCIpKTtcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gMTApIHtcbiAgICAgIC8vIG5ldyBsaW5lXG4gICAgICArK3Bvc2l0aW9uO1xuICAgICAgKytsZXhlci5saW5lO1xuICAgICAgbGV4ZXIubGluZVN0YXJ0ID0gcG9zaXRpb247XG4gICAgfSBlbHNlIGlmIChjb2RlID09PSAxMykge1xuICAgICAgLy8gY2FycmlhZ2UgcmV0dXJuXG4gICAgICBpZiAoYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMSkgPT09IDEwKSB7XG4gICAgICAgIHBvc2l0aW9uICs9IDI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICArK3Bvc2l0aW9uO1xuICAgICAgfVxuXG4gICAgICArK2xleGVyLmxpbmU7XG4gICAgICBsZXhlci5saW5lU3RhcnQgPSBwb3NpdGlvbjtcbiAgICB9IGVsc2UgaWYgKCAvLyBFc2NhcGUgVHJpcGxlLVF1b3RlIChcXFwiXCJcIilcbiAgICBjb2RlID09PSA5MiAmJiBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyAxKSA9PT0gMzQgJiYgYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMikgPT09IDM0ICYmIGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDMpID09PSAzNCkge1xuICAgICAgcmF3VmFsdWUgKz0gYm9keS5zbGljZShjaHVua1N0YXJ0LCBwb3NpdGlvbikgKyAnXCJcIlwiJztcbiAgICAgIHBvc2l0aW9uICs9IDQ7XG4gICAgICBjaHVua1N0YXJ0ID0gcG9zaXRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgICsrcG9zaXRpb247XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgc3ludGF4RXJyb3Ioc291cmNlLCBwb3NpdGlvbiwgJ1VudGVybWluYXRlZCBzdHJpbmcuJyk7XG59XG4vKipcbiAqIENvbnZlcnRzIGZvdXIgaGV4YWRlY2ltYWwgY2hhcnMgdG8gdGhlIGludGVnZXIgdGhhdCB0aGVcbiAqIHN0cmluZyByZXByZXNlbnRzLiBGb3IgZXhhbXBsZSwgdW5pQ2hhckNvZGUoJzAnLCcwJywnMCcsJ2YnKVxuICogd2lsbCByZXR1cm4gMTUsIGFuZCB1bmlDaGFyQ29kZSgnMCcsJzAnLCdmJywnZicpIHJldHVybnMgMjU1LlxuICpcbiAqIFJldHVybnMgYSBuZWdhdGl2ZSBudW1iZXIgb24gZXJyb3IsIGlmIGEgY2hhciB3YXMgaW52YWxpZC5cbiAqXG4gKiBUaGlzIGlzIGltcGxlbWVudGVkIGJ5IG5vdGluZyB0aGF0IGNoYXIyaGV4KCkgcmV0dXJucyAtMSBvbiBlcnJvcixcbiAqIHdoaWNoIG1lYW5zIHRoZSByZXN1bHQgb2YgT1JpbmcgdGhlIGNoYXIyaGV4KCkgd2lsbCBhbHNvIGJlIG5lZ2F0aXZlLlxuICovXG5cblxuZnVuY3Rpb24gdW5pQ2hhckNvZGUoYSwgYiwgYywgZCkge1xuICByZXR1cm4gY2hhcjJoZXgoYSkgPDwgMTIgfCBjaGFyMmhleChiKSA8PCA4IHwgY2hhcjJoZXgoYykgPDwgNCB8IGNoYXIyaGV4KGQpO1xufVxuLyoqXG4gKiBDb252ZXJ0cyBhIGhleCBjaGFyYWN0ZXIgdG8gaXRzIGludGVnZXIgdmFsdWUuXG4gKiAnMCcgYmVjb21lcyAwLCAnOScgYmVjb21lcyA5XG4gKiAnQScgYmVjb21lcyAxMCwgJ0YnIGJlY29tZXMgMTVcbiAqICdhJyBiZWNvbWVzIDEwLCAnZicgYmVjb21lcyAxNVxuICpcbiAqIFJldHVybnMgLTEgb24gZXJyb3IuXG4gKi9cblxuXG5mdW5jdGlvbiBjaGFyMmhleChhKSB7XG4gIHJldHVybiBhID49IDQ4ICYmIGEgPD0gNTcgPyBhIC0gNDggLy8gMC05XG4gIDogYSA+PSA2NSAmJiBhIDw9IDcwID8gYSAtIDU1IC8vIEEtRlxuICA6IGEgPj0gOTcgJiYgYSA8PSAxMDIgPyBhIC0gODcgLy8gYS1mXG4gIDogLTE7XG59XG4vKipcbiAqIFJlYWRzIGFuIGFscGhhbnVtZXJpYyArIHVuZGVyc2NvcmUgbmFtZSBmcm9tIHRoZSBzb3VyY2UuXG4gKlxuICogW19BLVphLXpdW18wLTlBLVphLXpdKlxuICovXG5cblxuZnVuY3Rpb24gcmVhZE5hbWUoc291cmNlLCBzdGFydCwgbGluZSwgY29sLCBwcmV2KSB7XG4gIHZhciBib2R5ID0gc291cmNlLmJvZHk7XG4gIHZhciBib2R5TGVuZ3RoID0gYm9keS5sZW5ndGg7XG4gIHZhciBwb3NpdGlvbiA9IHN0YXJ0ICsgMTtcbiAgdmFyIGNvZGUgPSAwO1xuXG4gIHdoaWxlIChwb3NpdGlvbiAhPT0gYm9keUxlbmd0aCAmJiAhaXNOYU4oY29kZSA9IGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbikpICYmIChjb2RlID09PSA5NSB8fCAvLyBfXG4gIGNvZGUgPj0gNDggJiYgY29kZSA8PSA1NyB8fCAvLyAwLTlcbiAgY29kZSA+PSA2NSAmJiBjb2RlIDw9IDkwIHx8IC8vIEEtWlxuICBjb2RlID49IDk3ICYmIGNvZGUgPD0gMTIyKSAvLyBhLXpcbiAgKSB7XG4gICAgKytwb3NpdGlvbjtcbiAgfVxuXG4gIHJldHVybiBuZXcgVG9rZW4oVG9rZW5LaW5kLk5BTUUsIHN0YXJ0LCBwb3NpdGlvbiwgbGluZSwgY29sLCBwcmV2LCBib2R5LnNsaWNlKHN0YXJ0LCBwb3NpdGlvbikpO1xufSAvLyBfIEEtWiBhLXpcblxuXG5mdW5jdGlvbiBpc05hbWVTdGFydChjb2RlKSB7XG4gIHJldHVybiBjb2RlID09PSA5NSB8fCBjb2RlID49IDY1ICYmIGNvZGUgPD0gOTAgfHwgY29kZSA+PSA5NyAmJiBjb2RlIDw9IDEyMjtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/lexer.mjs\n");
765
766/***/ }),
767
768/***/ "../../../node_modules/graphql/language/location.mjs":
769/*!**************************************************************************************!*\
770 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/language/location.mjs ***!
771 \**************************************************************************************/
772/*! exports provided: getLocation */
773/***/ (function(module, __webpack_exports__, __webpack_require__) {
774
775"use strict";
776eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLocation\", function() { return getLocation; });\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nfunction getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvbG9jYXRpb24ubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvbG9jYXRpb24ubWpzPzcxMzkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXByZXNlbnRzIGEgbG9jYXRpb24gaW4gYSBTb3VyY2UuXG4gKi9cblxuLyoqXG4gKiBUYWtlcyBhIFNvdXJjZSBhbmQgYSBVVEYtOCBjaGFyYWN0ZXIgb2Zmc2V0LCBhbmQgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZ1xuICogbGluZSBhbmQgY29sdW1uIGFzIGEgU291cmNlTG9jYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhdGlvbihzb3VyY2UsIHBvc2l0aW9uKSB7XG4gIHZhciBsaW5lUmVnZXhwID0gL1xcclxcbnxbXFxuXFxyXS9nO1xuICB2YXIgbGluZSA9IDE7XG4gIHZhciBjb2x1bW4gPSBwb3NpdGlvbiArIDE7XG4gIHZhciBtYXRjaDtcblxuICB3aGlsZSAoKG1hdGNoID0gbGluZVJlZ2V4cC5leGVjKHNvdXJjZS5ib2R5KSkgJiYgbWF0Y2guaW5kZXggPCBwb3NpdGlvbikge1xuICAgIGxpbmUgKz0gMTtcbiAgICBjb2x1bW4gPSBwb3NpdGlvbiArIDEgLSAobWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsaW5lOiBsaW5lLFxuICAgIGNvbHVtbjogY29sdW1uXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/location.mjs\n");
777
778/***/ }),
779
780/***/ "../../../node_modules/graphql/language/parser.mjs":
781/*!************************************************************************************!*\
782 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/language/parser.mjs ***!
783 \************************************************************************************/
784/*! exports provided: parse, parseValue, parseType, Parser */
785/***/ (function(module, __webpack_exports__, __webpack_require__) {
786
787"use strict";
788eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseValue\", function() { return parseValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseType\", function() { return parseType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Parser\", function() { return Parser; });\n/* harmony import */ var _error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../error/syntaxError.mjs */ \"../../../node_modules/graphql/error/syntaxError.mjs\");\n/* harmony import */ var _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _ast_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tokenKind.mjs */ \"../../../node_modules/graphql/language/tokenKind.mjs\");\n/* harmony import */ var _source_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./source.mjs */ \"../../../node_modules/graphql/language/source.mjs\");\n/* harmony import */ var _directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./directiveLocation.mjs */ \"../../../node_modules/graphql/language/directiveLocation.mjs\");\n/* harmony import */ var _lexer_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lexer.mjs */ \"../../../node_modules/graphql/language/lexer.mjs\");\n\n\n\n\n\n\n\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nfunction parse(source, options) {\n var parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nfunction parseValue(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].SOF);\n var value = parser.parseValueLiteral(false);\n parser.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nfunction parseType(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].SOF);\n var type = parser.parseTypeReference();\n parser.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nvar Parser = /*#__PURE__*/function () {\n function Parser(source, options) {\n var sourceObj = Object(_source_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isSource\"])(source) ? source : new _source_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Source\"](source);\n this._lexer = new _lexer_mjs__WEBPACK_IMPORTED_MODULE_6__[\"Lexer\"](sourceObj);\n this._options = options;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n\n var _proto = Parser.prototype;\n\n _proto.parseName = function parseName() {\n var token = this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].NAME);\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].NAME,\n value: token.value,\n loc: this.loc(token)\n };\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n ;\n\n _proto.parseDocument = function parseDocument() {\n var start = this._lexer.token;\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].DOCUMENT,\n definitions: this.many(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].SOF, this.parseDefinition, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].EOF),\n loc: this.loc(start)\n };\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */\n ;\n\n _proto.parseDefinition = function parseDefinition() {\n if (this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].NAME)) {\n switch (this._lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'schema':\n case 'scalar':\n case 'type':\n case 'interface':\n case 'union':\n case 'enum':\n case 'input':\n case 'directive':\n return this.parseTypeSystemDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n } else if (this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_L)) {\n return this.parseOperationDefinition();\n } else if (this.peekDescription()) {\n return this.parseTypeSystemDefinition();\n }\n\n throw this.unexpected();\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n ;\n\n _proto.parseOperationDefinition = function parseOperationDefinition() {\n var start = this._lexer.token;\n\n if (this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_L)) {\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n var operation = this.parseOperationType();\n var name;\n\n if (this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].NAME)) {\n name = this.parseName();\n }\n\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * OperationType : one of query mutation subscription\n */\n ;\n\n _proto.parseOperationType = function parseOperationType() {\n var operationToken = this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].NAME);\n\n switch (operationToken.value) {\n case 'query':\n return 'query';\n\n case 'mutation':\n return 'mutation';\n\n case 'subscription':\n return 'subscription';\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n ;\n\n _proto.parseVariableDefinitions = function parseVariableDefinitions() {\n return this.optionalMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].PAREN_L, this.parseVariableDefinition, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].PAREN_R);\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseVariableDefinition = function parseVariableDefinition() {\n var start = this._lexer.token;\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].EQUALS) ? this.parseValueLiteral(true) : undefined,\n directives: this.parseDirectives(true),\n loc: this.loc(start)\n };\n }\n /**\n * Variable : $ Name\n */\n ;\n\n _proto.parseVariable = function parseVariable() {\n var start = this._lexer.token;\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].DOLLAR);\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].VARIABLE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n }\n /**\n * SelectionSet : { Selection+ }\n */\n ;\n\n _proto.parseSelectionSet = function parseSelectionSet() {\n var start = this._lexer.token;\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SELECTION_SET,\n selections: this.many(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_L, this.parseSelection, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n ;\n\n _proto.parseSelection = function parseSelection() {\n return this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].SPREAD) ? this.parseFragment() : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n ;\n\n _proto.parseField = function parseField() {\n var start = this._lexer.token;\n var nameOrAlias = this.parseName();\n var alias;\n var name;\n\n if (this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FIELD,\n alias: alias,\n name: name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_L) ? this.parseSelectionSet() : undefined,\n loc: this.loc(start)\n };\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n ;\n\n _proto.parseArguments = function parseArguments(isConst) {\n var item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].PAREN_L, item, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseArgument = function parseArgument() {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].COLON);\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].ARGUMENT,\n name: name,\n value: this.parseValueLiteral(false),\n loc: this.loc(start)\n };\n };\n\n _proto.parseConstArgument = function parseConstArgument() {\n var start = this._lexer.token;\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].ARGUMENT,\n name: this.parseName(),\n value: (this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].COLON), this.parseValueLiteral(true)),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n ;\n\n _proto.parseFragment = function parseFragment() {\n var start = this._lexer.token;\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].SPREAD);\n var hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].NAME)) {\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n ;\n\n _proto.parseFragmentDefinition = function parseFragmentDefinition() {\n var _this$_options;\n\n var start = this._lexer.token;\n this.expectKeyword('fragment'); // Experimental support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (((_this$_options = this._options) === null || _this$_options === void 0 ? void 0 : _this$_options.experimentalFragmentVariables) === true) {\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentName : Name but not `on`\n */\n ;\n\n _proto.parseFragmentName = function parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n ;\n\n _proto.parseValueLiteral = function parseValueLiteral(isConst) {\n var token = this._lexer.token;\n\n switch (token.kind) {\n case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACKET_L:\n return this.parseList(isConst);\n\n case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_L:\n return this.parseObject(isConst);\n\n case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].INT:\n this._lexer.advance();\n\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].INT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].FLOAT:\n this._lexer.advance();\n\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FLOAT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].STRING:\n case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BLOCK_STRING:\n return this.parseStringLiteral();\n\n case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].NAME:\n this._lexer.advance();\n\n switch (token.value) {\n case 'true':\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].BOOLEAN,\n value: true,\n loc: this.loc(token)\n };\n\n case 'false':\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].BOOLEAN,\n value: false,\n loc: this.loc(token)\n };\n\n case 'null':\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].NULL,\n loc: this.loc(token)\n };\n\n default:\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].ENUM,\n value: token.value,\n loc: this.loc(token)\n };\n }\n\n case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].DOLLAR:\n if (!isConst) {\n return this.parseVariable();\n }\n\n break;\n }\n\n throw this.unexpected();\n };\n\n _proto.parseStringLiteral = function parseStringLiteral() {\n var token = this._lexer.token;\n\n this._lexer.advance();\n\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].STRING,\n value: token.value,\n block: token.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BLOCK_STRING,\n loc: this.loc(token)\n };\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n ;\n\n _proto.parseList = function parseList(isConst) {\n var _this = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this.parseValueLiteral(isConst);\n };\n\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].LIST,\n values: this.any(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACKET_L, item, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACKET_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */\n ;\n\n _proto.parseObject = function parseObject(isConst) {\n var _this2 = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this2.parseObjectField(isConst);\n };\n\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OBJECT,\n fields: this.any(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_L, item, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseObjectField = function parseObjectField(isConst) {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].COLON);\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OBJECT_FIELD,\n name: name,\n value: this.parseValueLiteral(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n ;\n\n _proto.parseDirectives = function parseDirectives(isConst) {\n var directives = [];\n\n while (this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n /**\n * Directive[Const] : @ Name Arguments[?Const]?\n */\n ;\n\n _proto.parseDirective = function parseDirective(isConst) {\n var start = this._lexer.token;\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].AT);\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n ;\n\n _proto.parseTypeReference = function parseTypeReference() {\n var start = this._lexer.token;\n var type;\n\n if (this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACKET_L)) {\n type = this.parseTypeReference();\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACKET_R);\n type = {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].LIST_TYPE,\n type: type,\n loc: this.loc(start)\n };\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BANG)) {\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].NON_NULL_TYPE,\n type: type,\n loc: this.loc(start)\n };\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n ;\n\n _proto.parseNamedType = function parseNamedType() {\n var start = this._lexer.token;\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].NAMED_TYPE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Type Definition section.\n\n /**\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemDefinition = function parseTypeSystemDefinition() {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;\n\n if (keywordToken.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n }\n\n throw this.unexpected(keywordToken);\n };\n\n _proto.peekDescription = function peekDescription() {\n return this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].STRING) || this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n ;\n\n _proto.parseDescription = function parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n */\n ;\n\n _proto.parseSchemaDefinition = function parseSchemaDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.many(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_L, this.parseOperationTypeDefinition, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_R);\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SCHEMA_DEFINITION,\n description: description,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n ;\n\n _proto.parseOperationTypeDefinition = function parseOperationTypeDefinition() {\n var start = this._lexer.token;\n var operation = this.parseOperationType();\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].COLON);\n var type = this.parseNamedType();\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n ;\n\n _proto.parseScalarTypeDefinition = function parseScalarTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseObjectTypeDefinition = function parseObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n ;\n\n _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {\n var _this$_options2;\n\n if (!this.expectOptionalKeyword('implements')) {\n return [];\n }\n\n if (((_this$_options2 = this._options) === null || _this$_options2 === void 0 ? void 0 : _this$_options2.allowLegacySDLImplementsInterfaces) === true) {\n var types = []; // Optional leading ampersand\n\n this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].AMP);\n\n do {\n types.push(this.parseNamedType());\n } while (this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].AMP) || this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].NAME));\n\n return types;\n }\n\n return this.delimitedMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].AMP, this.parseNamedType);\n }\n /**\n * FieldsDefinition : { FieldDefinition+ }\n */\n ;\n\n _proto.parseFieldsDefinition = function parseFieldsDefinition() {\n var _this$_options3;\n\n // Legacy support for the SDL?\n if (((_this$_options3 = this._options) === null || _this$_options3 === void 0 ? void 0 : _this$_options3.allowLegacySDLEmptyFields) === true && this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_L) && this._lexer.lookahead().kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_R) {\n this._lexer.advance();\n\n this._lexer.advance();\n\n return [];\n }\n\n return this.optionalMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_L, this.parseFieldDefinition, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_R);\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n ;\n\n _proto.parseFieldDefinition = function parseFieldDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].COLON);\n var type = this.parseTypeReference();\n var directives = this.parseDirectives(true);\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FIELD_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n type: type,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n ;\n\n _proto.parseArgumentDefs = function parseArgumentDefs() {\n return this.optionalMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].PAREN_L, this.parseInputValueDef, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].PAREN_R);\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseInputValueDef = function parseInputValueDef() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].COLON);\n var type = this.parseTypeReference();\n var defaultValue;\n\n if (this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].EQUALS)) {\n defaultValue = this.parseValueLiteral(true);\n }\n\n var directives = this.parseDirectives(true);\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].INPUT_VALUE_DEFINITION,\n description: description,\n name: name,\n type: type,\n defaultValue: defaultValue,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseInterfaceTypeDefinition = function parseInterfaceTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n ;\n\n _proto.parseUnionTypeDefinition = function parseUnionTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n ;\n\n _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {\n return this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].EQUALS) ? this.delimitedMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].PIPE, this.parseNamedType) : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n ;\n\n _proto.parseEnumTypeDefinition = function parseEnumTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */\n ;\n\n _proto.parseEnumValuesDefinition = function parseEnumValuesDefinition() {\n return this.optionalMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_L, this.parseEnumValueDefinition, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_R);\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */\n ;\n\n _proto.parseEnumValueDefinition = function parseEnumValueDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n ;\n\n _proto.parseInputObjectTypeDefinition = function parseInputObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */\n ;\n\n _proto.parseInputFieldsDefinition = function parseInputFieldsDefinition() {\n return this.optionalMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_L, this.parseInputValueDef, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_R);\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemExtension = function parseTypeSystemExtension() {\n var keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */\n ;\n\n _proto.parseSchemaExtension = function parseSchemaExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.optionalMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_L, this.parseOperationTypeDefinition, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].BRACE_R);\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n ;\n\n _proto.parseScalarTypeExtension = function parseScalarTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n ;\n\n _proto.parseObjectTypeExtension = function parseObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n ;\n\n _proto.parseInterfaceTypeExtension = function parseInterfaceTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].INTERFACE_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n ;\n\n _proto.parseUnionTypeExtension = function parseUnionTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n ;\n\n _proto.parseEnumTypeExtension = function parseEnumTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n ;\n\n _proto.parseInputObjectTypeExtension = function parseInputObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n */\n ;\n\n _proto.parseDirectiveDefinition = function parseDirectiveDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].AT);\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n var repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n var locations = this.parseDirectiveLocations();\n return {\n kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n repeatable: repeatable,\n locations: locations,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n ;\n\n _proto.parseDirectiveLocations = function parseDirectiveLocations() {\n return this.delimitedMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n ;\n\n _proto.parseDirectiveLocation = function parseDirectiveLocation() {\n var start = this._lexer.token;\n var name = this.parseName();\n\n if (_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_5__[\"DirectiveLocation\"][name.value] !== undefined) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a location object, used to identify the place in the source that created a given parsed object.\n */\n ;\n\n _proto.loc = function loc(startToken) {\n var _this$_options4;\n\n if (((_this$_options4 = this._options) === null || _this$_options4 === void 0 ? void 0 : _this$_options4.noLocation) !== true) {\n return new _ast_mjs__WEBPACK_IMPORTED_MODULE_2__[\"Location\"](startToken, this._lexer.lastToken, this._lexer.source);\n }\n }\n /**\n * Determines if the next token is of a given kind\n */\n ;\n\n _proto.peek = function peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectToken = function expectToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(this._lexer.source, token.start, \"Expected \".concat(getTokenKindDesc(kind), \", found \").concat(getTokenDesc(token), \".\"));\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and return undefined.\n */\n ;\n\n _proto.expectOptionalToken = function expectOptionalToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n return undefined;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectKeyword = function expectKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(this._lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token), \".\"));\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n ;\n\n _proto.expectOptionalKeyword = function expectOptionalKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_3__[\"TokenKind\"].NAME && token.value === value) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n ;\n\n _proto.unexpected = function unexpected(atToken) {\n var token = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return Object(_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"syntaxError\"])(this._lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token), \".\"));\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.any = function any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.optionalMany = function optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.many = function many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n ;\n\n _proto.delimitedMany = function delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n };\n\n return Parser;\n}();\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n var value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? \" \\\"\".concat(value, \"\\\"\") : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\n\nfunction getTokenKindDesc(kind) {\n return Object(_lexer_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isPunctuatorTokenKind\"])(kind) ? \"\\\"\".concat(kind, \"\\\"\") : kind;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvcGFyc2VyLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL3BhcnNlci5tanM/OTA1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzeW50YXhFcnJvciB9IGZyb20gXCIuLi9lcnJvci9zeW50YXhFcnJvci5tanNcIjtcbmltcG9ydCB7IEtpbmQgfSBmcm9tIFwiLi9raW5kcy5tanNcIjtcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIi4vYXN0Lm1qc1wiO1xuaW1wb3J0IHsgVG9rZW5LaW5kIH0gZnJvbSBcIi4vdG9rZW5LaW5kLm1qc1wiO1xuaW1wb3J0IHsgU291cmNlLCBpc1NvdXJjZSB9IGZyb20gXCIuL3NvdXJjZS5tanNcIjtcbmltcG9ydCB7IERpcmVjdGl2ZUxvY2F0aW9uIH0gZnJvbSBcIi4vZGlyZWN0aXZlTG9jYXRpb24ubWpzXCI7XG5pbXBvcnQgeyBMZXhlciwgaXNQdW5jdHVhdG9yVG9rZW5LaW5kIH0gZnJvbSBcIi4vbGV4ZXIubWpzXCI7XG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBjb250cm9sIHBhcnNlciBiZWhhdmlvclxuICovXG5cbi8qKlxuICogR2l2ZW4gYSBHcmFwaFFMIHNvdXJjZSwgcGFyc2VzIGl0IGludG8gYSBEb2N1bWVudC5cbiAqIFRocm93cyBHcmFwaFFMRXJyb3IgaWYgYSBzeW50YXggZXJyb3IgaXMgZW5jb3VudGVyZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIHBhcnNlciA9IG5ldyBQYXJzZXIoc291cmNlLCBvcHRpb25zKTtcbiAgcmV0dXJuIHBhcnNlci5wYXJzZURvY3VtZW50KCk7XG59XG4vKipcbiAqIEdpdmVuIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBHcmFwaFFMIHZhbHVlIChleC4gYFs0Ml1gKSwgcGFyc2UgdGhlIEFTVCBmb3JcbiAqIHRoYXQgdmFsdWUuXG4gKiBUaHJvd3MgR3JhcGhRTEVycm9yIGlmIGEgc3ludGF4IGVycm9yIGlzIGVuY291bnRlcmVkLlxuICpcbiAqIFRoaXMgaXMgdXNlZnVsIHdpdGhpbiB0b29scyB0aGF0IG9wZXJhdGUgdXBvbiBHcmFwaFFMIFZhbHVlcyBkaXJlY3RseSBhbmRcbiAqIGluIGlzb2xhdGlvbiBvZiBjb21wbGV0ZSBHcmFwaFFMIGRvY3VtZW50cy5cbiAqXG4gKiBDb25zaWRlciBwcm92aWRpbmcgdGhlIHJlc3VsdHMgdG8gdGhlIHV0aWxpdHkgZnVuY3Rpb246IHZhbHVlRnJvbUFTVCgpLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVZhbHVlKHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgcGFyc2VyID0gbmV3IFBhcnNlcihzb3VyY2UsIG9wdGlvbnMpO1xuICBwYXJzZXIuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLlNPRik7XG4gIHZhciB2YWx1ZSA9IHBhcnNlci5wYXJzZVZhbHVlTGl0ZXJhbChmYWxzZSk7XG4gIHBhcnNlci5leHBlY3RUb2tlbihUb2tlbktpbmQuRU9GKTtcbiAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBHaXZlbiBhIHN0cmluZyBjb250YWluaW5nIGEgR3JhcGhRTCBUeXBlIChleC4gYFtJbnQhXWApLCBwYXJzZSB0aGUgQVNUIGZvclxuICogdGhhdCB0eXBlLlxuICogVGhyb3dzIEdyYXBoUUxFcnJvciBpZiBhIHN5bnRheCBlcnJvciBpcyBlbmNvdW50ZXJlZC5cbiAqXG4gKiBUaGlzIGlzIHVzZWZ1bCB3aXRoaW4gdG9vbHMgdGhhdCBvcGVyYXRlIHVwb24gR3JhcGhRTCBUeXBlcyBkaXJlY3RseSBhbmRcbiAqIGluIGlzb2xhdGlvbiBvZiBjb21wbGV0ZSBHcmFwaFFMIGRvY3VtZW50cy5cbiAqXG4gKiBDb25zaWRlciBwcm92aWRpbmcgdGhlIHJlc3VsdHMgdG8gdGhlIHV0aWxpdHkgZnVuY3Rpb246IHR5cGVGcm9tQVNUKCkuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVHlwZShzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIHBhcnNlciA9IG5ldyBQYXJzZXIoc291cmNlLCBvcHRpb25zKTtcbiAgcGFyc2VyLmV4cGVjdFRva2VuKFRva2VuS2luZC5TT0YpO1xuICB2YXIgdHlwZSA9IHBhcnNlci5wYXJzZVR5cGVSZWZlcmVuY2UoKTtcbiAgcGFyc2VyLmV4cGVjdFRva2VuKFRva2VuS2luZC5FT0YpO1xuICByZXR1cm4gdHlwZTtcbn1cbi8qKlxuICogVGhpcyBjbGFzcyBpcyBleHBvcnRlZCBvbmx5IHRvIGFzc2lzdCBwZW9wbGUgaW4gaW1wbGVtZW50aW5nIHRoZWlyIG93biBwYXJzZXJzXG4gKiB3aXRob3V0IGR1cGxpY2F0aW5nIHRvbyBtdWNoIGNvZGUgYW5kIHNob3VsZCBiZSB1c2VkIG9ubHkgYXMgbGFzdCByZXNvcnQgZm9yIGNhc2VzXG4gKiBzdWNoIGFzIGV4cGVyaW1lbnRhbCBzeW50YXggb3IgaWYgY2VydGFpbiBmZWF0dXJlcyBjb3VsZCBub3QgYmUgY29udHJpYnV0ZWQgdXBzdHJlYW0uXG4gKlxuICogSXQgaXMgc3RpbGwgcGFydCBvZiB0aGUgaW50ZXJuYWwgQVBJIGFuZCBpcyB2ZXJzaW9uZWQsIHNvIGFueSBjaGFuZ2VzIHRvIGl0IGFyZSBuZXZlclxuICogY29uc2lkZXJlZCBicmVha2luZyBjaGFuZ2VzLiBJZiB5b3Ugc3RpbGwgbmVlZCB0byBzdXBwb3J0IG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZVxuICogbGlicmFyeSwgcGxlYXNlIHVzZSB0aGUgYHZlcnNpb25JbmZvYCB2YXJpYWJsZSBmb3IgdmVyc2lvbiBkZXRlY3Rpb24uXG4gKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IHZhciBQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBQYXJzZXIoc291cmNlLCBvcHRpb25zKSB7XG4gICAgdmFyIHNvdXJjZU9iaiA9IGlzU291cmNlKHNvdXJjZSkgPyBzb3VyY2UgOiBuZXcgU291cmNlKHNvdXJjZSk7XG4gICAgdGhpcy5fbGV4ZXIgPSBuZXcgTGV4ZXIoc291cmNlT2JqKTtcbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuICAvKipcbiAgICogQ29udmVydHMgYSBuYW1lIGxleCB0b2tlbiBpbnRvIGEgbmFtZSBwYXJzZSBub2RlLlxuICAgKi9cblxuXG4gIHZhciBfcHJvdG8gPSBQYXJzZXIucHJvdG90eXBlO1xuXG4gIF9wcm90by5wYXJzZU5hbWUgPSBmdW5jdGlvbiBwYXJzZU5hbWUoKSB7XG4gICAgdmFyIHRva2VuID0gdGhpcy5leHBlY3RUb2tlbihUb2tlbktpbmQuTkFNRSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuTkFNRSxcbiAgICAgIHZhbHVlOiB0b2tlbi52YWx1ZSxcbiAgICAgIGxvYzogdGhpcy5sb2ModG9rZW4pXG4gICAgfTtcbiAgfSAvLyBJbXBsZW1lbnRzIHRoZSBwYXJzaW5nIHJ1bGVzIGluIHRoZSBEb2N1bWVudCBzZWN0aW9uLlxuXG4gIC8qKlxuICAgKiBEb2N1bWVudCA6IERlZmluaXRpb24rXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlRG9jdW1lbnQgPSBmdW5jdGlvbiBwYXJzZURvY3VtZW50KCkge1xuICAgIHZhciBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiBLaW5kLkRPQ1VNRU5ULFxuICAgICAgZGVmaW5pdGlvbnM6IHRoaXMubWFueShUb2tlbktpbmQuU09GLCB0aGlzLnBhcnNlRGVmaW5pdGlvbiwgVG9rZW5LaW5kLkVPRiksXG4gICAgICBsb2M6IHRoaXMubG9jKHN0YXJ0KVxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIERlZmluaXRpb24gOlxuICAgKiAgIC0gRXhlY3V0YWJsZURlZmluaXRpb25cbiAgICogICAtIFR5cGVTeXN0ZW1EZWZpbml0aW9uXG4gICAqICAgLSBUeXBlU3lzdGVtRXh0ZW5zaW9uXG4gICAqXG4gICAqIEV4ZWN1dGFibGVEZWZpbml0aW9uIDpcbiAgICogICAtIE9wZXJhdGlvbkRlZmluaXRpb25cbiAgICogICAtIEZyYWdtZW50RGVmaW5pdGlvblxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZURlZmluaXRpb24gPSBmdW5jdGlvbiBwYXJzZURlZmluaXRpb24oKSB7XG4gICAgaWYgKHRoaXMucGVlayhUb2tlbktpbmQuTkFNRSkpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5fbGV4ZXIudG9rZW4udmFsdWUpIHtcbiAgICAgICAgY2FzZSAncXVlcnknOlxuICAgICAgICBjYXNlICdtdXRhdGlvbic6XG4gICAgICAgIGNhc2UgJ3N1YnNjcmlwdGlvbic6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VPcGVyYXRpb25EZWZpbml0aW9uKCk7XG5cbiAgICAgICAgY2FzZSAnZnJhZ21lbnQnOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRnJhZ21lbnREZWZpbml0aW9uKCk7XG5cbiAgICAgICAgY2FzZSAnc2NoZW1hJzpcbiAgICAgICAgY2FzZSAnc2NhbGFyJzpcbiAgICAgICAgY2FzZSAndHlwZSc6XG4gICAgICAgIGNhc2UgJ2ludGVyZmFjZSc6XG4gICAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY2FzZSAnZW51bSc6XG4gICAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAgY2FzZSAnZGlyZWN0aXZlJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZVR5cGVTeXN0ZW1EZWZpbml0aW9uKCk7XG5cbiAgICAgICAgY2FzZSAnZXh0ZW5kJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZVR5cGVTeXN0ZW1FeHRlbnNpb24oKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucGVlayhUb2tlbktpbmQuQlJBQ0VfTCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlT3BlcmF0aW9uRGVmaW5pdGlvbigpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wZWVrRGVzY3JpcHRpb24oKSkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VUeXBlU3lzdGVtRGVmaW5pdGlvbigpO1xuICAgIH1cblxuICAgIHRocm93IHRoaXMudW5leHBlY3RlZCgpO1xuICB9IC8vIEltcGxlbWVudHMgdGhlIHBhcnNpbmcgcnVsZXMgaW4gdGhlIE9wZXJhdGlvbnMgc2VjdGlvbi5cblxuICAvKipcbiAgICogT3BlcmF0aW9uRGVmaW5pdGlvbiA6XG4gICAqICAtIFNlbGVjdGlvblNldFxuICAgKiAgLSBPcGVyYXRpb25UeXBlIE5hbWU/IFZhcmlhYmxlRGVmaW5pdGlvbnM/IERpcmVjdGl2ZXM/IFNlbGVjdGlvblNldFxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZU9wZXJhdGlvbkRlZmluaXRpb24gPSBmdW5jdGlvbiBwYXJzZU9wZXJhdGlvbkRlZmluaXRpb24oKSB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG5cbiAgICBpZiAodGhpcy5wZWVrKFRva2VuS2luZC5CUkFDRV9MKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2luZDogS2luZC5PUEVSQVRJT05fREVGSU5JVElPTixcbiAgICAgICAgb3BlcmF0aW9uOiAncXVlcnknLFxuICAgICAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgICAgIHZhcmlhYmxlRGVmaW5pdGlvbnM6IFtdLFxuICAgICAgICBkaXJlY3RpdmVzOiBbXSxcbiAgICAgICAgc2VsZWN0aW9uU2V0OiB0aGlzLnBhcnNlU2VsZWN0aW9uU2V0KCksXG4gICAgICAgIGxvYzogdGhpcy5sb2Moc3RhcnQpXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBvcGVyYXRpb24gPSB0aGlzLnBhcnNlT3BlcmF0aW9uVHlwZSgpO1xuICAgIHZhciBuYW1lO1xuXG4gICAgaWYgKHRoaXMucGVlayhUb2tlbktpbmQuTkFNRSkpIHtcbiAgICAgIG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBraW5kOiBLaW5kLk9QRVJBVElPTl9ERUZJTklUSU9OLFxuICAgICAgb3BlcmF0aW9uOiBvcGVyYXRpb24sXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFyaWFibGVEZWZpbml0aW9uczogdGhpcy5wYXJzZVZhcmlhYmxlRGVmaW5pdGlvbnMoKSxcbiAgICAgIGRpcmVjdGl2ZXM6IHRoaXMucGFyc2VEaXJlY3RpdmVzKGZhbHNlKSxcbiAgICAgIHNlbGVjdGlvblNldDogdGhpcy5wYXJzZVNlbGVjdGlvblNldCgpLFxuICAgICAgbG9jOiB0aGlzLmxvYyhzdGFydClcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBPcGVyYXRpb25UeXBlIDogb25lIG9mIHF1ZXJ5IG11dGF0aW9uIHN1YnNjcmlwdGlvblxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZU9wZXJhdGlvblR5cGUgPSBmdW5jdGlvbiBwYXJzZU9wZXJhdGlvblR5cGUoKSB7XG4gICAgdmFyIG9wZXJhdGlvblRva2VuID0gdGhpcy5leHBlY3RUb2tlbihUb2tlbktpbmQuTkFNRSk7XG5cbiAgICBzd2l0Y2ggKG9wZXJhdGlvblRva2VuLnZhbHVlKSB7XG4gICAgICBjYXNlICdxdWVyeSc6XG4gICAgICAgIHJldHVybiAncXVlcnknO1xuXG4gICAgICBjYXNlICdtdXRhdGlvbic6XG4gICAgICAgIHJldHVybiAnbXV0YXRpb24nO1xuXG4gICAgICBjYXNlICdzdWJzY3JpcHRpb24nOlxuICAgICAgICByZXR1cm4gJ3N1YnNjcmlwdGlvbic7XG4gICAgfVxuXG4gICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKG9wZXJhdGlvblRva2VuKTtcbiAgfVxuICAvKipcbiAgICogVmFyaWFibGVEZWZpbml0aW9ucyA6ICggVmFyaWFibGVEZWZpbml0aW9uKyApXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlVmFyaWFibGVEZWZpbml0aW9ucyA9IGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVEZWZpbml0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25hbE1hbnkoVG9rZW5LaW5kLlBBUkVOX0wsIHRoaXMucGFyc2VWYXJpYWJsZURlZmluaXRpb24sIFRva2VuS2luZC5QQVJFTl9SKTtcbiAgfVxuICAvKipcbiAgICogVmFyaWFibGVEZWZpbml0aW9uIDogVmFyaWFibGUgOiBUeXBlIERlZmF1bHRWYWx1ZT8gRGlyZWN0aXZlc1tDb25zdF0/XG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlVmFyaWFibGVEZWZpbml0aW9uID0gZnVuY3Rpb24gcGFyc2VWYXJpYWJsZURlZmluaXRpb24oKSB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuVkFSSUFCTEVfREVGSU5JVElPTixcbiAgICAgIHZhcmlhYmxlOiB0aGlzLnBhcnNlVmFyaWFibGUoKSxcbiAgICAgIHR5cGU6ICh0aGlzLmV4cGVjdFRva2VuKFRva2VuS2luZC5DT0xPTiksIHRoaXMucGFyc2VUeXBlUmVmZXJlbmNlKCkpLFxuICAgICAgZGVmYXVsdFZhbHVlOiB0aGlzLmV4cGVjdE9wdGlvbmFsVG9rZW4oVG9rZW5LaW5kLkVRVUFMUykgPyB0aGlzLnBhcnNlVmFsdWVMaXRlcmFsKHRydWUpIDogdW5kZWZpbmVkLFxuICAgICAgZGlyZWN0aXZlczogdGhpcy5wYXJzZURpcmVjdGl2ZXModHJ1ZSksXG4gICAgICBsb2M6IHRoaXMubG9jKHN0YXJ0KVxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIFZhcmlhYmxlIDogJCBOYW1lXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlVmFyaWFibGUgPSBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlKCkge1xuICAgIHZhciBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHRoaXMuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkRPTExBUik7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuVkFSSUFCTEUsXG4gICAgICBuYW1lOiB0aGlzLnBhcnNlTmFtZSgpLFxuICAgICAgbG9jOiB0aGlzLmxvYyhzdGFydClcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBTZWxlY3Rpb25TZXQgOiB7IFNlbGVjdGlvbisgfVxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZVNlbGVjdGlvblNldCA9IGZ1bmN0aW9uIHBhcnNlU2VsZWN0aW9uU2V0KCkge1xuICAgIHZhciBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiBLaW5kLlNFTEVDVElPTl9TRVQsXG4gICAgICBzZWxlY3Rpb25zOiB0aGlzLm1hbnkoVG9rZW5LaW5kLkJSQUNFX0wsIHRoaXMucGFyc2VTZWxlY3Rpb24sIFRva2VuS2luZC5CUkFDRV9SKSxcbiAgICAgIGxvYzogdGhpcy5sb2Moc3RhcnQpXG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogU2VsZWN0aW9uIDpcbiAgICogICAtIEZpZWxkXG4gICAqICAgLSBGcmFnbWVudFNwcmVhZFxuICAgKiAgIC0gSW5saW5lRnJhZ21lbnRcbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VTZWxlY3Rpb24gPSBmdW5jdGlvbiBwYXJzZVNlbGVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5wZWVrKFRva2VuS2luZC5TUFJFQUQpID8gdGhpcy5wYXJzZUZyYWdtZW50KCkgOiB0aGlzLnBhcnNlRmllbGQoKTtcbiAgfVxuICAvKipcbiAgICogRmllbGQgOiBBbGlhcz8gTmFtZSBBcmd1bWVudHM/IERpcmVjdGl2ZXM/IFNlbGVjdGlvblNldD9cbiAgICpcbiAgICogQWxpYXMgOiBOYW1lIDpcbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VGaWVsZCA9IGZ1bmN0aW9uIHBhcnNlRmllbGQoKSB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgdmFyIG5hbWVPckFsaWFzID0gdGhpcy5wYXJzZU5hbWUoKTtcbiAgICB2YXIgYWxpYXM7XG4gICAgdmFyIG5hbWU7XG5cbiAgICBpZiAodGhpcy5leHBlY3RPcHRpb25hbFRva2VuKFRva2VuS2luZC5DT0xPTikpIHtcbiAgICAgIGFsaWFzID0gbmFtZU9yQWxpYXM7XG4gICAgICBuYW1lID0gdGhpcy5wYXJzZU5hbWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmFtZSA9IG5hbWVPckFsaWFzO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBraW5kOiBLaW5kLkZJRUxELFxuICAgICAgYWxpYXM6IGFsaWFzLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIGFyZ3VtZW50czogdGhpcy5wYXJzZUFyZ3VtZW50cyhmYWxzZSksXG4gICAgICBkaXJlY3RpdmVzOiB0aGlzLnBhcnNlRGlyZWN0aXZlcyhmYWxzZSksXG4gICAgICBzZWxlY3Rpb25TZXQ6IHRoaXMucGVlayhUb2tlbktpbmQuQlJBQ0VfTCkgPyB0aGlzLnBhcnNlU2VsZWN0aW9uU2V0KCkgOiB1bmRlZmluZWQsXG4gICAgICBsb2M6IHRoaXMubG9jKHN0YXJ0KVxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIEFyZ3VtZW50c1tDb25zdF0gOiAoIEFyZ3VtZW50Wz9Db25zdF0rIClcbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VBcmd1bWVudHMgPSBmdW5jdGlvbiBwYXJzZUFyZ3VtZW50cyhpc0NvbnN0KSB7XG4gICAgdmFyIGl0ZW0gPSBpc0NvbnN0ID8gdGhpcy5wYXJzZUNvbnN0QXJndW1lbnQgOiB0aGlzLnBhcnNlQXJndW1lbnQ7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uYWxNYW55KFRva2VuS2luZC5QQVJFTl9MLCBpdGVtLCBUb2tlbktpbmQuUEFSRU5fUik7XG4gIH1cbiAgLyoqXG4gICAqIEFyZ3VtZW50W0NvbnN0XSA6IE5hbWUgOiBWYWx1ZVs/Q29uc3RdXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlQXJndW1lbnQgPSBmdW5jdGlvbiBwYXJzZUFyZ3VtZW50KCkge1xuICAgIHZhciBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHZhciBuYW1lID0gdGhpcy5wYXJzZU5hbWUoKTtcbiAgICB0aGlzLmV4cGVjdFRva2VuKFRva2VuS2luZC5DT0xPTik7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuQVJHVU1FTlQsXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IHRoaXMucGFyc2VWYWx1ZUxpdGVyYWwoZmFsc2UpLFxuICAgICAgbG9jOiB0aGlzLmxvYyhzdGFydClcbiAgICB9O1xuICB9O1xuXG4gIF9wcm90by5wYXJzZUNvbnN0QXJndW1lbnQgPSBmdW5jdGlvbiBwYXJzZUNvbnN0QXJndW1lbnQoKSB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuQVJHVU1FTlQsXG4gICAgICBuYW1lOiB0aGlzLnBhcnNlTmFtZSgpLFxuICAgICAgdmFsdWU6ICh0aGlzLmV4cGVjdFRva2VuKFRva2VuS2luZC5DT0xPTiksIHRoaXMucGFyc2VWYWx1ZUxpdGVyYWwodHJ1ZSkpLFxuICAgICAgbG9jOiB0aGlzLmxvYyhzdGFydClcbiAgICB9O1xuICB9IC8vIEltcGxlbWVudHMgdGhlIHBhcnNpbmcgcnVsZXMgaW4gdGhlIEZyYWdtZW50cyBzZWN0aW9uLlxuXG4gIC8qKlxuICAgKiBDb3JyZXNwb25kcyB0byBib3RoIEZyYWdtZW50U3ByZWFkIGFuZCBJbmxpbmVGcmFnbWVudCBpbiB0aGUgc3BlYy5cbiAgICpcbiAgICogRnJhZ21lbnRTcHJlYWQgOiAuLi4gRnJhZ21lbnROYW1lIERpcmVjdGl2ZXM/XG4gICAqXG4gICAqIElubGluZUZyYWdtZW50IDogLi4uIFR5cGVDb25kaXRpb24/IERpcmVjdGl2ZXM/IFNlbGVjdGlvblNldFxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZUZyYWdtZW50ID0gZnVuY3Rpb24gcGFyc2VGcmFnbWVudCgpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB0aGlzLmV4cGVjdFRva2VuKFRva2VuS2luZC5TUFJFQUQpO1xuICAgIHZhciBoYXNUeXBlQ29uZGl0aW9uID0gdGhpcy5leHBlY3RPcHRpb25hbEtleXdvcmQoJ29uJyk7XG5cbiAgICBpZiAoIWhhc1R5cGVDb25kaXRpb24gJiYgdGhpcy5wZWVrKFRva2VuS2luZC5OQU1FKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2luZDogS2luZC5GUkFHTUVOVF9TUFJFQUQsXG4gICAgICAgIG5hbWU6IHRoaXMucGFyc2VGcmFnbWVudE5hbWUoKSxcbiAgICAgICAgZGlyZWN0aXZlczogdGhpcy5wYXJzZURpcmVjdGl2ZXMoZmFsc2UpLFxuICAgICAgICBsb2M6IHRoaXMubG9jKHN0YXJ0KVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAga2luZDogS2luZC5JTkxJTkVfRlJBR01FTlQsXG4gICAgICB0eXBlQ29uZGl0aW9uOiBoYXNUeXBlQ29uZGl0aW9uID8gdGhpcy5wYXJzZU5hbWVkVHlwZSgpIDogdW5kZWZpbmVkLFxuICAgICAgZGlyZWN0aXZlczogdGhpcy5wYXJzZURpcmVjdGl2ZXMoZmFsc2UpLFxuICAgICAgc2VsZWN0aW9uU2V0OiB0aGlzLnBhcnNlU2VsZWN0aW9uU2V0KCksXG4gICAgICBsb2M6IHRoaXMubG9jKHN0YXJ0KVxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIEZyYWdtZW50RGVmaW5pdGlvbiA6XG4gICAqICAgLSBmcmFnbWVudCBGcmFnbWVudE5hbWUgb24gVHlwZUNvbmRpdGlvbiBEaXJlY3RpdmVzPyBTZWxlY3Rpb25TZXRcbiAgICpcbiAgICogVHlwZUNvbmRpdGlvbiA6IE5hbWVkVHlwZVxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZUZyYWdtZW50RGVmaW5pdGlvbiA9IGZ1bmN0aW9uIHBhcnNlRnJhZ21lbnREZWZpbml0aW9uKCkge1xuICAgIHZhciBfdGhpcyRfb3B0aW9ucztcblxuICAgIHZhciBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZnJhZ21lbnQnKTsgLy8gRXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIGRlZmluaW5nIHZhcmlhYmxlcyB3aXRoaW4gZnJhZ21lbnRzIGNoYW5nZXNcbiAgICAvLyB0aGUgZ3JhbW1hciBvZiBGcmFnbWVudERlZmluaXRpb246XG4gICAgLy8gICAtIGZyYWdtZW50IEZyYWdtZW50TmFtZSBWYXJpYWJsZURlZmluaXRpb25zPyBvbiBUeXBlQ29uZGl0aW9uIERpcmVjdGl2ZXM/IFNlbGVjdGlvblNldFxuXG4gICAgaWYgKCgoX3RoaXMkX29wdGlvbnMgPSB0aGlzLl9vcHRpb25zKSA9PT0gbnVsbCB8fCBfdGhpcyRfb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkX29wdGlvbnMuZXhwZXJpbWVudGFsRnJhZ21lbnRWYXJpYWJsZXMpID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBraW5kOiBLaW5kLkZSQUdNRU5UX0RFRklOSVRJT04sXG4gICAgICAgIG5hbWU6IHRoaXMucGFyc2VGcmFnbWVudE5hbWUoKSxcbiAgICAgICAgdmFyaWFibGVEZWZpbml0aW9uczogdGhpcy5wYXJzZVZhcmlhYmxlRGVmaW5pdGlvbnMoKSxcbiAgICAgICAgdHlwZUNvbmRpdGlvbjogKHRoaXMuZXhwZWN0S2V5d29yZCgnb24nKSwgdGhpcy5wYXJzZU5hbWVkVHlwZSgpKSxcbiAgICAgICAgZGlyZWN0aXZlczogdGhpcy5wYXJzZURpcmVjdGl2ZXMoZmFsc2UpLFxuICAgICAgICBzZWxlY3Rpb25TZXQ6IHRoaXMucGFyc2VTZWxlY3Rpb25TZXQoKSxcbiAgICAgICAgbG9jOiB0aGlzLmxvYyhzdGFydClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuRlJBR01FTlRfREVGSU5JVElPTixcbiAgICAgIG5hbWU6IHRoaXMucGFyc2VGcmFnbWVudE5hbWUoKSxcbiAgICAgIHR5cGVDb25kaXRpb246ICh0aGlzLmV4cGVjdEtleXdvcmQoJ29uJyksIHRoaXMucGFyc2VOYW1lZFR5cGUoKSksXG4gICAgICBkaXJlY3RpdmVzOiB0aGlzLnBhcnNlRGlyZWN0aXZlcyhmYWxzZSksXG4gICAgICBzZWxlY3Rpb25TZXQ6IHRoaXMucGFyc2VTZWxlY3Rpb25TZXQoKSxcbiAgICAgIGxvYzogdGhpcy5sb2Moc3RhcnQpXG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogRnJhZ21lbnROYW1lIDogTmFtZSBidXQgbm90IGBvbmBcbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VGcmFnbWVudE5hbWUgPSBmdW5jdGlvbiBwYXJzZUZyYWdtZW50TmFtZSgpIHtcbiAgICBpZiAodGhpcy5fbGV4ZXIudG9rZW4udmFsdWUgPT09ICdvbicpIHtcbiAgICAgIHRocm93IHRoaXMudW5leHBlY3RlZCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBhcnNlTmFtZSgpO1xuICB9IC8vIEltcGxlbWVudHMgdGhlIHBhcnNpbmcgcnVsZXMgaW4gdGhlIFZhbHVlcyBzZWN0aW9uLlxuXG4gIC8qKlxuICAgKiBWYWx1ZVtDb25zdF0gOlxuICAgKiAgIC0gW35Db25zdF0gVmFyaWFibGVcbiAgICogICAtIEludFZhbHVlXG4gICAqICAgLSBGbG9hdFZhbHVlXG4gICAqICAgLSBTdHJpbmdWYWx1ZVxuICAgKiAgIC0gQm9vbGVhblZhbHVlXG4gICAqICAgLSBOdWxsVmFsdWVcbiAgICogICAtIEVudW1WYWx1ZVxuICAgKiAgIC0gTGlzdFZhbHVlWz9Db25zdF1cbiAgICogICAtIE9iamVjdFZhbHVlWz9Db25zdF1cbiAgICpcbiAgICogQm9vbGVhblZhbHVlIDogb25lIG9mIGB0cnVlYCBgZmFsc2VgXG4gICAqXG4gICAqIE51bGxWYWx1ZSA6IGBudWxsYFxuICAgKlxuICAgKiBFbnVtVmFsdWUgOiBOYW1lIGJ1dCBub3QgYHRydWVgLCBgZmFsc2VgIG9yIGBudWxsYFxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZVZhbHVlTGl0ZXJhbCA9IGZ1bmN0aW9uIHBhcnNlVmFsdWVMaXRlcmFsKGlzQ29uc3QpIHtcbiAgICB2YXIgdG9rZW4gPSB0aGlzLl9sZXhlci50b2tlbjtcblxuICAgIHN3aXRjaCAodG9rZW4ua2luZCkge1xuICAgICAgY2FzZSBUb2tlbktpbmQuQlJBQ0tFVF9MOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUxpc3QoaXNDb25zdCk7XG5cbiAgICAgIGNhc2UgVG9rZW5LaW5kLkJSQUNFX0w6XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlT2JqZWN0KGlzQ29uc3QpO1xuXG4gICAgICBjYXNlIFRva2VuS2luZC5JTlQ6XG4gICAgICAgIHRoaXMuX2xleGVyLmFkdmFuY2UoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtpbmQ6IEtpbmQuSU5ULFxuICAgICAgICAgIHZhbHVlOiB0b2tlbi52YWx1ZSxcbiAgICAgICAgICBsb2M6IHRoaXMubG9jKHRva2VuKVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlIFRva2VuS2luZC5GTE9BVDpcbiAgICAgICAgdGhpcy5fbGV4ZXIuYWR2YW5jZSgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2luZDogS2luZC5GTE9BVCxcbiAgICAgICAgICB2YWx1ZTogdG9rZW4udmFsdWUsXG4gICAgICAgICAgbG9jOiB0aGlzLmxvYyh0b2tlbilcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSBUb2tlbktpbmQuU1RSSU5HOlxuICAgICAgY2FzZSBUb2tlbktpbmQuQkxPQ0tfU1RSSU5HOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZVN0cmluZ0xpdGVyYWwoKTtcblxuICAgICAgY2FzZSBUb2tlbktpbmQuTkFNRTpcbiAgICAgICAgdGhpcy5fbGV4ZXIuYWR2YW5jZSgpO1xuXG4gICAgICAgIHN3aXRjaCAodG9rZW4udmFsdWUpIHtcbiAgICAgICAgICBjYXNlICd0cnVlJzpcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGtpbmQ6IEtpbmQuQk9PTEVBTixcbiAgICAgICAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICAgICAgICAgIGxvYzogdGhpcy5sb2ModG9rZW4pXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgY2FzZSAnZmFsc2UnOlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAga2luZDogS2luZC5CT09MRUFOLFxuICAgICAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgICAgICAgIGxvYzogdGhpcy5sb2ModG9rZW4pXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBraW5kOiBLaW5kLk5VTEwsXG4gICAgICAgICAgICAgIGxvYzogdGhpcy5sb2ModG9rZW4pXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGtpbmQ6IEtpbmQuRU5VTSxcbiAgICAgICAgICAgICAgdmFsdWU6IHRva2VuLnZhbHVlLFxuICAgICAgICAgICAgICBsb2M6IHRoaXMubG9jKHRva2VuKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFRva2VuS2luZC5ET0xMQVI6XG4gICAgICAgIGlmICghaXNDb25zdCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlVmFyaWFibGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRocm93IHRoaXMudW5leHBlY3RlZCgpO1xuICB9O1xuXG4gIF9wcm90by5wYXJzZVN0cmluZ0xpdGVyYWwgPSBmdW5jdGlvbiBwYXJzZVN0cmluZ0xpdGVyYWwoKSB7XG4gICAgdmFyIHRva2VuID0gdGhpcy5fbGV4ZXIudG9rZW47XG5cbiAgICB0aGlzLl9sZXhlci5hZHZhbmNlKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAga2luZDogS2luZC5TVFJJTkcsXG4gICAgICB2YWx1ZTogdG9rZW4udmFsdWUsXG4gICAgICBibG9jazogdG9rZW4ua2luZCA9PT0gVG9rZW5LaW5kLkJMT0NLX1NUUklORyxcbiAgICAgIGxvYzogdGhpcy5sb2ModG9rZW4pXG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogTGlzdFZhbHVlW0NvbnN0XSA6XG4gICAqICAgLSBbIF1cbiAgICogICAtIFsgVmFsdWVbP0NvbnN0XSsgXVxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZUxpc3QgPSBmdW5jdGlvbiBwYXJzZUxpc3QoaXNDb25zdCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcblxuICAgIHZhciBpdGVtID0gZnVuY3Rpb24gaXRlbSgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5wYXJzZVZhbHVlTGl0ZXJhbChpc0NvbnN0KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuTElTVCxcbiAgICAgIHZhbHVlczogdGhpcy5hbnkoVG9rZW5LaW5kLkJSQUNLRVRfTCwgaXRlbSwgVG9rZW5LaW5kLkJSQUNLRVRfUiksXG4gICAgICBsb2M6IHRoaXMubG9jKHN0YXJ0KVxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIE9iamVjdFZhbHVlW0NvbnN0XSA6XG4gICAqICAgLSB7IH1cbiAgICogICAtIHsgT2JqZWN0RmllbGRbP0NvbnN0XSsgfVxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZU9iamVjdCA9IGZ1bmN0aW9uIHBhcnNlT2JqZWN0KGlzQ29uc3QpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHZhciBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuXG4gICAgdmFyIGl0ZW0gPSBmdW5jdGlvbiBpdGVtKCkge1xuICAgICAgcmV0dXJuIF90aGlzMi5wYXJzZU9iamVjdEZpZWxkKGlzQ29uc3QpO1xuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAga2luZDogS2luZC5PQkpFQ1QsXG4gICAgICBmaWVsZHM6IHRoaXMuYW55KFRva2VuS2luZC5CUkFDRV9MLCBpdGVtLCBUb2tlbktpbmQuQlJBQ0VfUiksXG4gICAgICBsb2M6IHRoaXMubG9jKHN0YXJ0KVxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIE9iamVjdEZpZWxkW0NvbnN0XSA6IE5hbWUgOiBWYWx1ZVs/Q29uc3RdXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlT2JqZWN0RmllbGQgPSBmdW5jdGlvbiBwYXJzZU9iamVjdEZpZWxkKGlzQ29uc3QpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB2YXIgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgdGhpcy5leHBlY3RUb2tlbihUb2tlbktpbmQuQ09MT04pO1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiBLaW5kLk9CSkVDVF9GSUVMRCxcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogdGhpcy5wYXJzZVZhbHVlTGl0ZXJhbChpc0NvbnN0KSxcbiAgICAgIGxvYzogdGhpcy5sb2Moc3RhcnQpXG4gICAgfTtcbiAgfSAvLyBJbXBsZW1lbnRzIHRoZSBwYXJzaW5nIHJ1bGVzIGluIHRoZSBEaXJlY3RpdmVzIHNlY3Rpb24uXG5cbiAgLyoqXG4gICAqIERpcmVjdGl2ZXNbQ29uc3RdIDogRGlyZWN0aXZlWz9Db25zdF0rXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlRGlyZWN0aXZlcyA9IGZ1bmN0aW9uIHBhcnNlRGlyZWN0aXZlcyhpc0NvbnN0KSB7XG4gICAgdmFyIGRpcmVjdGl2ZXMgPSBbXTtcblxuICAgIHdoaWxlICh0aGlzLnBlZWsoVG9rZW5LaW5kLkFUKSkge1xuICAgICAgZGlyZWN0aXZlcy5wdXNoKHRoaXMucGFyc2VEaXJlY3RpdmUoaXNDb25zdCkpO1xuICAgIH1cblxuICAgIHJldHVybiBkaXJlY3RpdmVzO1xuICB9XG4gIC8qKlxuICAgKiBEaXJlY3RpdmVbQ29uc3RdIDogQCBOYW1lIEFyZ3VtZW50c1s/Q29uc3RdP1xuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZURpcmVjdGl2ZSA9IGZ1bmN0aW9uIHBhcnNlRGlyZWN0aXZlKGlzQ29uc3QpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB0aGlzLmV4cGVjdFRva2VuKFRva2VuS2luZC5BVCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuRElSRUNUSVZFLFxuICAgICAgbmFtZTogdGhpcy5wYXJzZU5hbWUoKSxcbiAgICAgIGFyZ3VtZW50czogdGhpcy5wYXJzZUFyZ3VtZW50cyhpc0NvbnN0KSxcbiAgICAgIGxvYzogdGhpcy5sb2Moc3RhcnQpXG4gICAgfTtcbiAgfSAvLyBJbXBsZW1lbnRzIHRoZSBwYXJzaW5nIHJ1bGVzIGluIHRoZSBUeXBlcyBzZWN0aW9uLlxuXG4gIC8qKlxuICAgKiBUeXBlIDpcbiAgICogICAtIE5hbWVkVHlwZVxuICAgKiAgIC0gTGlzdFR5cGVcbiAgICogICAtIE5vbk51bGxUeXBlXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlVHlwZVJlZmVyZW5jZSA9IGZ1bmN0aW9uIHBhcnNlVHlwZVJlZmVyZW5jZSgpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB2YXIgdHlwZTtcblxuICAgIGlmICh0aGlzLmV4cGVjdE9wdGlvbmFsVG9rZW4oVG9rZW5LaW5kLkJSQUNLRVRfTCkpIHtcbiAgICAgIHR5cGUgPSB0aGlzLnBhcnNlVHlwZVJlZmVyZW5jZSgpO1xuICAgICAgdGhpcy5leHBlY3RUb2tlbihUb2tlbktpbmQuQlJBQ0tFVF9SKTtcbiAgICAgIHR5cGUgPSB7XG4gICAgICAgIGtpbmQ6IEtpbmQuTElTVF9UWVBFLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBsb2M6IHRoaXMubG9jKHN0YXJ0KVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHlwZSA9IHRoaXMucGFyc2VOYW1lZFR5cGUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5leHBlY3RPcHRpb25hbFRva2VuKFRva2VuS2luZC5CQU5HKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2luZDogS2luZC5OT05fTlVMTF9UWVBFLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBsb2M6IHRoaXMubG9jKHN0YXJ0KVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuICAvKipcbiAgICogTmFtZWRUeXBlIDogTmFtZVxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZU5hbWVkVHlwZSA9IGZ1bmN0aW9uIHBhcnNlTmFtZWRUeXBlKCkge1xuICAgIHZhciBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiBLaW5kLk5BTUVEX1RZUEUsXG4gICAgICBuYW1lOiB0aGlzLnBhcnNlTmFtZSgpLFxuICAgICAgbG9jOiB0aGlzLmxvYyhzdGFydClcbiAgICB9O1xuICB9IC8vIEltcGxlbWVudHMgdGhlIHBhcnNpbmcgcnVsZXMgaW4gdGhlIFR5cGUgRGVmaW5pdGlvbiBzZWN0aW9uLlxuXG4gIC8qKlxuICAgKiBUeXBlU3lzdGVtRGVmaW5pdGlvbiA6XG4gICAqICAgLSBTY2hlbWFEZWZpbml0aW9uXG4gICAqICAgLSBUeXBlRGVmaW5pdGlvblxuICAgKiAgIC0gRGlyZWN0aXZlRGVmaW5pdGlvblxuICAgKlxuICAgKiBUeXBlRGVmaW5pdGlvbiA6XG4gICAqICAgLSBTY2FsYXJUeXBlRGVmaW5pdGlvblxuICAgKiAgIC0gT2JqZWN0VHlwZURlZmluaXRpb25cbiAgICogICAtIEludGVyZmFjZVR5cGVEZWZpbml0aW9uXG4gICAqICAgLSBVbmlvblR5cGVEZWZpbml0aW9uXG4gICAqICAgLSBFbnVtVHlwZURlZmluaXRpb25cbiAgICogICAtIElucHV0T2JqZWN0VHlwZURlZmluaXRpb25cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VUeXBlU3lzdGVtRGVmaW5pdGlvbiA9IGZ1bmN0aW9uIHBhcnNlVHlwZVN5c3RlbURlZmluaXRpb24oKSB7XG4gICAgLy8gTWFueSBkZWZpbml0aW9ucyBiZWdpbiB3aXRoIGEgZGVzY3JpcHRpb24gYW5kIHJlcXVpcmUgYSBsb29rYWhlYWQuXG4gICAgdmFyIGtleXdvcmRUb2tlbiA9IHRoaXMucGVla0Rlc2NyaXB0aW9uKCkgPyB0aGlzLl9sZXhlci5sb29rYWhlYWQoKSA6IHRoaXMuX2xleGVyLnRva2VuO1xuXG4gICAgaWYgKGtleXdvcmRUb2tlbi5raW5kID09PSBUb2tlbktpbmQuTkFNRSkge1xuICAgICAgc3dpdGNoIChrZXl3b3JkVG9rZW4udmFsdWUpIHtcbiAgICAgICAgY2FzZSAnc2NoZW1hJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZVNjaGVtYURlZmluaXRpb24oKTtcblxuICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlU2NhbGFyVHlwZURlZmluaXRpb24oKTtcblxuICAgICAgICBjYXNlICd0eXBlJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZU9iamVjdFR5cGVEZWZpbml0aW9uKCk7XG5cbiAgICAgICAgY2FzZSAnaW50ZXJmYWNlJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUludGVyZmFjZVR5cGVEZWZpbml0aW9uKCk7XG5cbiAgICAgICAgY2FzZSAndW5pb24nOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlVW5pb25UeXBlRGVmaW5pdGlvbigpO1xuXG4gICAgICAgIGNhc2UgJ2VudW0nOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRW51bVR5cGVEZWZpbml0aW9uKCk7XG5cbiAgICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlSW5wdXRPYmplY3RUeXBlRGVmaW5pdGlvbigpO1xuXG4gICAgICAgIGNhc2UgJ2RpcmVjdGl2ZSc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VEaXJlY3RpdmVEZWZpbml0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKGtleXdvcmRUb2tlbik7XG4gIH07XG5cbiAgX3Byb3RvLnBlZWtEZXNjcmlwdGlvbiA9IGZ1bmN0aW9uIHBlZWtEZXNjcmlwdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5wZWVrKFRva2VuS2luZC5TVFJJTkcpIHx8IHRoaXMucGVlayhUb2tlbktpbmQuQkxPQ0tfU1RSSU5HKTtcbiAgfVxuICAvKipcbiAgICogRGVzY3JpcHRpb24gOiBTdHJpbmdWYWx1ZVxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZURlc2NyaXB0aW9uID0gZnVuY3Rpb24gcGFyc2VEZXNjcmlwdGlvbigpIHtcbiAgICBpZiAodGhpcy5wZWVrRGVzY3JpcHRpb24oKSkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VTdHJpbmdMaXRlcmFsKCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBTY2hlbWFEZWZpbml0aW9uIDogRGVzY3JpcHRpb24/IHNjaGVtYSBEaXJlY3RpdmVzW0NvbnN0XT8geyBPcGVyYXRpb25UeXBlRGVmaW5pdGlvbisgfVxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZVNjaGVtYURlZmluaXRpb24gPSBmdW5jdGlvbiBwYXJzZVNjaGVtYURlZmluaXRpb24oKSB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgdmFyIGRlc2NyaXB0aW9uID0gdGhpcy5wYXJzZURlc2NyaXB0aW9uKCk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCdzY2hlbWEnKTtcbiAgICB2YXIgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VEaXJlY3RpdmVzKHRydWUpO1xuICAgIHZhciBvcGVyYXRpb25UeXBlcyA9IHRoaXMubWFueShUb2tlbktpbmQuQlJBQ0VfTCwgdGhpcy5wYXJzZU9wZXJhdGlvblR5cGVEZWZpbml0aW9uLCBUb2tlbktpbmQuQlJBQ0VfUik7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuU0NIRU1BX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICBkaXJlY3RpdmVzOiBkaXJlY3RpdmVzLFxuICAgICAgb3BlcmF0aW9uVHlwZXM6IG9wZXJhdGlvblR5cGVzLFxuICAgICAgbG9jOiB0aGlzLmxvYyhzdGFydClcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBPcGVyYXRpb25UeXBlRGVmaW5pdGlvbiA6IE9wZXJhdGlvblR5cGUgOiBOYW1lZFR5cGVcbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VPcGVyYXRpb25UeXBlRGVmaW5pdGlvbiA9IGZ1bmN0aW9uIHBhcnNlT3BlcmF0aW9uVHlwZURlZmluaXRpb24oKSB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgdmFyIG9wZXJhdGlvbiA9IHRoaXMucGFyc2VPcGVyYXRpb25UeXBlKCk7XG4gICAgdGhpcy5leHBlY3RUb2tlbihUb2tlbktpbmQuQ09MT04pO1xuICAgIHZhciB0eXBlID0gdGhpcy5wYXJzZU5hbWVkVHlwZSgpO1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiBLaW5kLk9QRVJBVElPTl9UWVBFX0RFRklOSVRJT04sXG4gICAgICBvcGVyYXRpb246IG9wZXJhdGlvbixcbiAgICAgIHR5cGU6IHR5cGUsXG4gICAgICBsb2M6IHRoaXMubG9jKHN0YXJ0KVxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIFNjYWxhclR5cGVEZWZpbml0aW9uIDogRGVzY3JpcHRpb24/IHNjYWxhciBOYW1lIERpcmVjdGl2ZXNbQ29uc3RdP1xuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZVNjYWxhclR5cGVEZWZpbml0aW9uID0gZnVuY3Rpb24gcGFyc2VTY2FsYXJUeXBlRGVmaW5pdGlvbigpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB2YXIgZGVzY3JpcHRpb24gPSB0aGlzLnBhcnNlRGVzY3JpcHRpb24oKTtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ3NjYWxhcicpO1xuICAgIHZhciBuYW1lID0gdGhpcy5wYXJzZU5hbWUoKTtcbiAgICB2YXIgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VEaXJlY3RpdmVzKHRydWUpO1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiBLaW5kLlNDQUxBUl9UWVBFX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgZGlyZWN0aXZlczogZGlyZWN0aXZlcyxcbiAgICAgIGxvYzogdGhpcy5sb2Moc3RhcnQpXG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogT2JqZWN0VHlwZURlZmluaXRpb24gOlxuICAgKiAgIERlc2NyaXB0aW9uP1xuICAgKiAgIHR5cGUgTmFtZSBJbXBsZW1lbnRzSW50ZXJmYWNlcz8gRGlyZWN0aXZlc1tDb25zdF0/IEZpZWxkc0RlZmluaXRpb24/XG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlT2JqZWN0VHlwZURlZmluaXRpb24gPSBmdW5jdGlvbiBwYXJzZU9iamVjdFR5cGVEZWZpbml0aW9uKCkge1xuICAgIHZhciBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHZhciBkZXNjcmlwdGlvbiA9IHRoaXMucGFyc2VEZXNjcmlwdGlvbigpO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgndHlwZScpO1xuICAgIHZhciBuYW1lID0gdGhpcy5wYXJzZU5hbWUoKTtcbiAgICB2YXIgaW50ZXJmYWNlcyA9IHRoaXMucGFyc2VJbXBsZW1lbnRzSW50ZXJmYWNlcygpO1xuICAgIHZhciBkaXJlY3RpdmVzID0gdGhpcy5wYXJzZURpcmVjdGl2ZXModHJ1ZSk7XG4gICAgdmFyIGZpZWxkcyA9IHRoaXMucGFyc2VGaWVsZHNEZWZpbml0aW9uKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuT0JKRUNUX1RZUEVfREVGSU5JVElPTixcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICBpbnRlcmZhY2VzOiBpbnRlcmZhY2VzLFxuICAgICAgZGlyZWN0aXZlczogZGlyZWN0aXZlcyxcbiAgICAgIGZpZWxkczogZmllbGRzLFxuICAgICAgbG9jOiB0aGlzLmxvYyhzdGFydClcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzSW50ZXJmYWNlcyA6XG4gICAqICAgLSBpbXBsZW1lbnRzIGAmYD8gTmFtZWRUeXBlXG4gICAqICAgLSBJbXBsZW1lbnRzSW50ZXJmYWNlcyAmIE5hbWVkVHlwZVxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZUltcGxlbWVudHNJbnRlcmZhY2VzID0gZnVuY3Rpb24gcGFyc2VJbXBsZW1lbnRzSW50ZXJmYWNlcygpIHtcbiAgICB2YXIgX3RoaXMkX29wdGlvbnMyO1xuXG4gICAgaWYgKCF0aGlzLmV4cGVjdE9wdGlvbmFsS2V5d29yZCgnaW1wbGVtZW50cycpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaWYgKCgoX3RoaXMkX29wdGlvbnMyID0gdGhpcy5fb3B0aW9ucykgPT09IG51bGwgfHwgX3RoaXMkX29wdGlvbnMyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRfb3B0aW9uczIuYWxsb3dMZWdhY3lTRExJbXBsZW1lbnRzSW50ZXJmYWNlcykgPT09IHRydWUpIHtcbiAgICAgIHZhciB0eXBlcyA9IFtdOyAvLyBPcHRpb25hbCBsZWFkaW5nIGFtcGVyc2FuZFxuXG4gICAgICB0aGlzLmV4cGVjdE9wdGlvbmFsVG9rZW4oVG9rZW5LaW5kLkFNUCk7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgdHlwZXMucHVzaCh0aGlzLnBhcnNlTmFtZWRUeXBlKCkpO1xuICAgICAgfSB3aGlsZSAodGhpcy5leHBlY3RPcHRpb25hbFRva2VuKFRva2VuS2luZC5BTVApIHx8IHRoaXMucGVlayhUb2tlbktpbmQuTkFNRSkpO1xuXG4gICAgICByZXR1cm4gdHlwZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGVsaW1pdGVkTWFueShUb2tlbktpbmQuQU1QLCB0aGlzLnBhcnNlTmFtZWRUeXBlKTtcbiAgfVxuICAvKipcbiAgICogRmllbGRzRGVmaW5pdGlvbiA6IHsgRmllbGREZWZpbml0aW9uKyB9XG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlRmllbGRzRGVmaW5pdGlvbiA9IGZ1bmN0aW9uIHBhcnNlRmllbGRzRGVmaW5pdGlvbigpIHtcbiAgICB2YXIgX3RoaXMkX29wdGlvbnMzO1xuXG4gICAgLy8gTGVnYWN5IHN1cHBvcnQgZm9yIHRoZSBTREw/XG4gICAgaWYgKCgoX3RoaXMkX29wdGlvbnMzID0gdGhpcy5fb3B0aW9ucykgPT09IG51bGwgfHwgX3RoaXMkX29wdGlvbnMzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRfb3B0aW9uczMuYWxsb3dMZWdhY3lTRExFbXB0eUZpZWxkcykgPT09IHRydWUgJiYgdGhpcy5wZWVrKFRva2VuS2luZC5CUkFDRV9MKSAmJiB0aGlzLl9sZXhlci5sb29rYWhlYWQoKS5raW5kID09PSBUb2tlbktpbmQuQlJBQ0VfUikge1xuICAgICAgdGhpcy5fbGV4ZXIuYWR2YW5jZSgpO1xuXG4gICAgICB0aGlzLl9sZXhlci5hZHZhbmNlKCk7XG5cbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5vcHRpb25hbE1hbnkoVG9rZW5LaW5kLkJSQUNFX0wsIHRoaXMucGFyc2VGaWVsZERlZmluaXRpb24sIFRva2VuS2luZC5CUkFDRV9SKTtcbiAgfVxuICAvKipcbiAgICogRmllbGREZWZpbml0aW9uIDpcbiAgICogICAtIERlc2NyaXB0aW9uPyBOYW1lIEFyZ3VtZW50c0RlZmluaXRpb24/IDogVHlwZSBEaXJlY3RpdmVzW0NvbnN0XT9cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VGaWVsZERlZmluaXRpb24gPSBmdW5jdGlvbiBwYXJzZUZpZWxkRGVmaW5pdGlvbigpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB2YXIgZGVzY3JpcHRpb24gPSB0aGlzLnBhcnNlRGVzY3JpcHRpb24oKTtcbiAgICB2YXIgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgdmFyIGFyZ3MgPSB0aGlzLnBhcnNlQXJndW1lbnREZWZzKCk7XG4gICAgdGhpcy5leHBlY3RUb2tlbihUb2tlbktpbmQuQ09MT04pO1xuICAgIHZhciB0eXBlID0gdGhpcy5wYXJzZVR5cGVSZWZlcmVuY2UoKTtcbiAgICB2YXIgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VEaXJlY3RpdmVzKHRydWUpO1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiBLaW5kLkZJRUxEX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgYXJndW1lbnRzOiBhcmdzLFxuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIGRpcmVjdGl2ZXM6IGRpcmVjdGl2ZXMsXG4gICAgICBsb2M6IHRoaXMubG9jKHN0YXJ0KVxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIEFyZ3VtZW50c0RlZmluaXRpb24gOiAoIElucHV0VmFsdWVEZWZpbml0aW9uKyApXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlQXJndW1lbnREZWZzID0gZnVuY3Rpb24gcGFyc2VBcmd1bWVudERlZnMoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uYWxNYW55KFRva2VuS2luZC5QQVJFTl9MLCB0aGlzLnBhcnNlSW5wdXRWYWx1ZURlZiwgVG9rZW5LaW5kLlBBUkVOX1IpO1xuICB9XG4gIC8qKlxuICAgKiBJbnB1dFZhbHVlRGVmaW5pdGlvbiA6XG4gICAqICAgLSBEZXNjcmlwdGlvbj8gTmFtZSA6IFR5cGUgRGVmYXVsdFZhbHVlPyBEaXJlY3RpdmVzW0NvbnN0XT9cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VJbnB1dFZhbHVlRGVmID0gZnVuY3Rpb24gcGFyc2VJbnB1dFZhbHVlRGVmKCkge1xuICAgIHZhciBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHZhciBkZXNjcmlwdGlvbiA9IHRoaXMucGFyc2VEZXNjcmlwdGlvbigpO1xuICAgIHZhciBuYW1lID0gdGhpcy5wYXJzZU5hbWUoKTtcbiAgICB0aGlzLmV4cGVjdFRva2VuKFRva2VuS2luZC5DT0xPTik7XG4gICAgdmFyIHR5cGUgPSB0aGlzLnBhcnNlVHlwZVJlZmVyZW5jZSgpO1xuICAgIHZhciBkZWZhdWx0VmFsdWU7XG5cbiAgICBpZiAodGhpcy5leHBlY3RPcHRpb25hbFRva2VuKFRva2VuS2luZC5FUVVBTFMpKSB7XG4gICAgICBkZWZhdWx0VmFsdWUgPSB0aGlzLnBhcnNlVmFsdWVMaXRlcmFsKHRydWUpO1xuICAgIH1cblxuICAgIHZhciBkaXJlY3RpdmVzID0gdGhpcy5wYXJzZURpcmVjdGl2ZXModHJ1ZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuSU5QVVRfVkFMVUVfREVGSU5JVElPTixcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB0eXBlOiB0eXBlLFxuICAgICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWUsXG4gICAgICBkaXJlY3RpdmVzOiBkaXJlY3RpdmVzLFxuICAgICAgbG9jOiB0aGlzLmxvYyhzdGFydClcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBJbnRlcmZhY2VUeXBlRGVmaW5pdGlvbiA6XG4gICAqICAgLSBEZXNjcmlwdGlvbj8gaW50ZXJmYWNlIE5hbWUgRGlyZWN0aXZlc1tDb25zdF0/IEZpZWxkc0RlZmluaXRpb24/XG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlSW50ZXJmYWNlVHlwZURlZmluaXRpb24gPSBmdW5jdGlvbiBwYXJzZUludGVyZmFjZVR5cGVEZWZpbml0aW9uKCkge1xuICAgIHZhciBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHZhciBkZXNjcmlwdGlvbiA9IHRoaXMucGFyc2VEZXNjcmlwdGlvbigpO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnaW50ZXJmYWNlJyk7XG4gICAgdmFyIG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIHZhciBpbnRlcmZhY2VzID0gdGhpcy5wYXJzZUltcGxlbWVudHNJbnRlcmZhY2VzKCk7XG4gICAgdmFyIGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlRGlyZWN0aXZlcyh0cnVlKTtcbiAgICB2YXIgZmllbGRzID0gdGhpcy5wYXJzZUZpZWxkc0RlZmluaXRpb24oKTtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogS2luZC5JTlRFUkZBQ0VfVFlQRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIGludGVyZmFjZXM6IGludGVyZmFjZXMsXG4gICAgICBkaXJlY3RpdmVzOiBkaXJlY3RpdmVzLFxuICAgICAgZmllbGRzOiBmaWVsZHMsXG4gICAgICBsb2M6IHRoaXMubG9jKHN0YXJ0KVxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIFVuaW9uVHlwZURlZmluaXRpb24gOlxuICAgKiAgIC0gRGVzY3JpcHRpb24/IHVuaW9uIE5hbWUgRGlyZWN0aXZlc1tDb25zdF0/IFVuaW9uTWVtYmVyVHlwZXM/XG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlVW5pb25UeXBlRGVmaW5pdGlvbiA9IGZ1bmN0aW9uIHBhcnNlVW5pb25UeXBlRGVmaW5pdGlvbigpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB2YXIgZGVzY3JpcHRpb24gPSB0aGlzLnBhcnNlRGVzY3JpcHRpb24oKTtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ3VuaW9uJyk7XG4gICAgdmFyIG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIHZhciBkaXJlY3RpdmVzID0gdGhpcy5wYXJzZURpcmVjdGl2ZXModHJ1ZSk7XG4gICAgdmFyIHR5cGVzID0gdGhpcy5wYXJzZVVuaW9uTWVtYmVyVHlwZXMoKTtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogS2luZC5VTklPTl9UWVBFX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgZGlyZWN0aXZlczogZGlyZWN0aXZlcyxcbiAgICAgIHR5cGVzOiB0eXBlcyxcbiAgICAgIGxvYzogdGhpcy5sb2Moc3RhcnQpXG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogVW5pb25NZW1iZXJUeXBlcyA6XG4gICAqICAgLSA9IGB8YD8gTmFtZWRUeXBlXG4gICAqICAgLSBVbmlvbk1lbWJlclR5cGVzIHwgTmFtZWRUeXBlXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlVW5pb25NZW1iZXJUeXBlcyA9IGZ1bmN0aW9uIHBhcnNlVW5pb25NZW1iZXJUeXBlcygpIHtcbiAgICByZXR1cm4gdGhpcy5leHBlY3RPcHRpb25hbFRva2VuKFRva2VuS2luZC5FUVVBTFMpID8gdGhpcy5kZWxpbWl0ZWRNYW55KFRva2VuS2luZC5QSVBFLCB0aGlzLnBhcnNlTmFtZWRUeXBlKSA6IFtdO1xuICB9XG4gIC8qKlxuICAgKiBFbnVtVHlwZURlZmluaXRpb24gOlxuICAgKiAgIC0gRGVzY3JpcHRpb24/IGVudW0gTmFtZSBEaXJlY3RpdmVzW0NvbnN0XT8gRW51bVZhbHVlc0RlZmluaXRpb24/XG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlRW51bVR5cGVEZWZpbml0aW9uID0gZnVuY3Rpb24gcGFyc2VFbnVtVHlwZURlZmluaXRpb24oKSB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgdmFyIGRlc2NyaXB0aW9uID0gdGhpcy5wYXJzZURlc2NyaXB0aW9uKCk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCdlbnVtJyk7XG4gICAgdmFyIG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIHZhciBkaXJlY3RpdmVzID0gdGhpcy5wYXJzZURpcmVjdGl2ZXModHJ1ZSk7XG4gICAgdmFyIHZhbHVlcyA9IHRoaXMucGFyc2VFbnVtVmFsdWVzRGVmaW5pdGlvbigpO1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiBLaW5kLkVOVU1fVFlQRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIGRpcmVjdGl2ZXM6IGRpcmVjdGl2ZXMsXG4gICAgICB2YWx1ZXM6IHZhbHVlcyxcbiAgICAgIGxvYzogdGhpcy5sb2Moc3RhcnQpXG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogRW51bVZhbHVlc0RlZmluaXRpb24gOiB7IEVudW1WYWx1ZURlZmluaXRpb24rIH1cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VFbnVtVmFsdWVzRGVmaW5pdGlvbiA9IGZ1bmN0aW9uIHBhcnNlRW51bVZhbHVlc0RlZmluaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uYWxNYW55KFRva2VuS2luZC5CUkFDRV9MLCB0aGlzLnBhcnNlRW51bVZhbHVlRGVmaW5pdGlvbiwgVG9rZW5LaW5kLkJSQUNFX1IpO1xuICB9XG4gIC8qKlxuICAgKiBFbnVtVmFsdWVEZWZpbml0aW9uIDogRGVzY3JpcHRpb24/IEVudW1WYWx1ZSBEaXJlY3RpdmVzW0NvbnN0XT9cbiAgICpcbiAgICogRW51bVZhbHVlIDogTmFtZVxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZUVudW1WYWx1ZURlZmluaXRpb24gPSBmdW5jdGlvbiBwYXJzZUVudW1WYWx1ZURlZmluaXRpb24oKSB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgdmFyIGRlc2NyaXB0aW9uID0gdGhpcy5wYXJzZURlc2NyaXB0aW9uKCk7XG4gICAgdmFyIG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIHZhciBkaXJlY3RpdmVzID0gdGhpcy5wYXJzZURpcmVjdGl2ZXModHJ1ZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuRU5VTV9WQUxVRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIGRpcmVjdGl2ZXM6IGRpcmVjdGl2ZXMsXG4gICAgICBsb2M6IHRoaXMubG9jKHN0YXJ0KVxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIElucHV0T2JqZWN0VHlwZURlZmluaXRpb24gOlxuICAgKiAgIC0gRGVzY3JpcHRpb24/IGlucHV0IE5hbWUgRGlyZWN0aXZlc1tDb25zdF0/IElucHV0RmllbGRzRGVmaW5pdGlvbj9cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VJbnB1dE9iamVjdFR5cGVEZWZpbml0aW9uID0gZnVuY3Rpb24gcGFyc2VJbnB1dE9iamVjdFR5cGVEZWZpbml0aW9uKCkge1xuICAgIHZhciBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHZhciBkZXNjcmlwdGlvbiA9IHRoaXMucGFyc2VEZXNjcmlwdGlvbigpO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnaW5wdXQnKTtcbiAgICB2YXIgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgdmFyIGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlRGlyZWN0aXZlcyh0cnVlKTtcbiAgICB2YXIgZmllbGRzID0gdGhpcy5wYXJzZUlucHV0RmllbGRzRGVmaW5pdGlvbigpO1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiBLaW5kLklOUFVUX09CSkVDVF9UWVBFX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgZGlyZWN0aXZlczogZGlyZWN0aXZlcyxcbiAgICAgIGZpZWxkczogZmllbGRzLFxuICAgICAgbG9jOiB0aGlzLmxvYyhzdGFydClcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBJbnB1dEZpZWxkc0RlZmluaXRpb24gOiB7IElucHV0VmFsdWVEZWZpbml0aW9uKyB9XG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlSW5wdXRGaWVsZHNEZWZpbml0aW9uID0gZnVuY3Rpb24gcGFyc2VJbnB1dEZpZWxkc0RlZmluaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uYWxNYW55KFRva2VuS2luZC5CUkFDRV9MLCB0aGlzLnBhcnNlSW5wdXRWYWx1ZURlZiwgVG9rZW5LaW5kLkJSQUNFX1IpO1xuICB9XG4gIC8qKlxuICAgKiBUeXBlU3lzdGVtRXh0ZW5zaW9uIDpcbiAgICogICAtIFNjaGVtYUV4dGVuc2lvblxuICAgKiAgIC0gVHlwZUV4dGVuc2lvblxuICAgKlxuICAgKiBUeXBlRXh0ZW5zaW9uIDpcbiAgICogICAtIFNjYWxhclR5cGVFeHRlbnNpb25cbiAgICogICAtIE9iamVjdFR5cGVFeHRlbnNpb25cbiAgICogICAtIEludGVyZmFjZVR5cGVFeHRlbnNpb25cbiAgICogICAtIFVuaW9uVHlwZUV4dGVuc2lvblxuICAgKiAgIC0gRW51bVR5cGVFeHRlbnNpb25cbiAgICogICAtIElucHV0T2JqZWN0VHlwZURlZmluaXRpb25cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VUeXBlU3lzdGVtRXh0ZW5zaW9uID0gZnVuY3Rpb24gcGFyc2VUeXBlU3lzdGVtRXh0ZW5zaW9uKCkge1xuICAgIHZhciBrZXl3b3JkVG9rZW4gPSB0aGlzLl9sZXhlci5sb29rYWhlYWQoKTtcblxuICAgIGlmIChrZXl3b3JkVG9rZW4ua2luZCA9PT0gVG9rZW5LaW5kLk5BTUUpIHtcbiAgICAgIHN3aXRjaCAoa2V5d29yZFRva2VuLnZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ3NjaGVtYSc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VTY2hlbWFFeHRlbnNpb24oKTtcblxuICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlU2NhbGFyVHlwZUV4dGVuc2lvbigpO1xuXG4gICAgICAgIGNhc2UgJ3R5cGUnOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlT2JqZWN0VHlwZUV4dGVuc2lvbigpO1xuXG4gICAgICAgIGNhc2UgJ2ludGVyZmFjZSc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uKCk7XG5cbiAgICAgICAgY2FzZSAndW5pb24nOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlVW5pb25UeXBlRXh0ZW5zaW9uKCk7XG5cbiAgICAgICAgY2FzZSAnZW51bSc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFbnVtVHlwZUV4dGVuc2lvbigpO1xuXG4gICAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUlucHV0T2JqZWN0VHlwZUV4dGVuc2lvbigpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IHRoaXMudW5leHBlY3RlZChrZXl3b3JkVG9rZW4pO1xuICB9XG4gIC8qKlxuICAgKiBTY2hlbWFFeHRlbnNpb24gOlxuICAgKiAgLSBleHRlbmQgc2NoZW1hIERpcmVjdGl2ZXNbQ29uc3RdPyB7IE9wZXJhdGlvblR5cGVEZWZpbml0aW9uKyB9XG4gICAqICAtIGV4dGVuZCBzY2hlbWEgRGlyZWN0aXZlc1tDb25zdF1cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VTY2hlbWFFeHRlbnNpb24gPSBmdW5jdGlvbiBwYXJzZVNjaGVtYUV4dGVuc2lvbigpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2V4dGVuZCcpO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnc2NoZW1hJyk7XG4gICAgdmFyIGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlRGlyZWN0aXZlcyh0cnVlKTtcbiAgICB2YXIgb3BlcmF0aW9uVHlwZXMgPSB0aGlzLm9wdGlvbmFsTWFueShUb2tlbktpbmQuQlJBQ0VfTCwgdGhpcy5wYXJzZU9wZXJhdGlvblR5cGVEZWZpbml0aW9uLCBUb2tlbktpbmQuQlJBQ0VfUik7XG5cbiAgICBpZiAoZGlyZWN0aXZlcy5sZW5ndGggPT09IDAgJiYgb3BlcmF0aW9uVHlwZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAga2luZDogS2luZC5TQ0hFTUFfRVhURU5TSU9OLFxuICAgICAgZGlyZWN0aXZlczogZGlyZWN0aXZlcyxcbiAgICAgIG9wZXJhdGlvblR5cGVzOiBvcGVyYXRpb25UeXBlcyxcbiAgICAgIGxvYzogdGhpcy5sb2Moc3RhcnQpXG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogU2NhbGFyVHlwZUV4dGVuc2lvbiA6XG4gICAqICAgLSBleHRlbmQgc2NhbGFyIE5hbWUgRGlyZWN0aXZlc1tDb25zdF1cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VTY2FsYXJUeXBlRXh0ZW5zaW9uID0gZnVuY3Rpb24gcGFyc2VTY2FsYXJUeXBlRXh0ZW5zaW9uKCkge1xuICAgIHZhciBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZXh0ZW5kJyk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCdzY2FsYXInKTtcbiAgICB2YXIgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgdmFyIGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlRGlyZWN0aXZlcyh0cnVlKTtcblxuICAgIGlmIChkaXJlY3RpdmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuU0NBTEFSX1RZUEVfRVhURU5TSU9OLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIGRpcmVjdGl2ZXM6IGRpcmVjdGl2ZXMsXG4gICAgICBsb2M6IHRoaXMubG9jKHN0YXJ0KVxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIE9iamVjdFR5cGVFeHRlbnNpb24gOlxuICAgKiAgLSBleHRlbmQgdHlwZSBOYW1lIEltcGxlbWVudHNJbnRlcmZhY2VzPyBEaXJlY3RpdmVzW0NvbnN0XT8gRmllbGRzRGVmaW5pdGlvblxuICAgKiAgLSBleHRlbmQgdHlwZSBOYW1lIEltcGxlbWVudHNJbnRlcmZhY2VzPyBEaXJlY3RpdmVzW0NvbnN0XVxuICAgKiAgLSBleHRlbmQgdHlwZSBOYW1lIEltcGxlbWVudHNJbnRlcmZhY2VzXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlT2JqZWN0VHlwZUV4dGVuc2lvbiA9IGZ1bmN0aW9uIHBhcnNlT2JqZWN0VHlwZUV4dGVuc2lvbigpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2V4dGVuZCcpO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgndHlwZScpO1xuICAgIHZhciBuYW1lID0gdGhpcy5wYXJzZU5hbWUoKTtcbiAgICB2YXIgaW50ZXJmYWNlcyA9IHRoaXMucGFyc2VJbXBsZW1lbnRzSW50ZXJmYWNlcygpO1xuICAgIHZhciBkaXJlY3RpdmVzID0gdGhpcy5wYXJzZURpcmVjdGl2ZXModHJ1ZSk7XG4gICAgdmFyIGZpZWxkcyA9IHRoaXMucGFyc2VGaWVsZHNEZWZpbml0aW9uKCk7XG5cbiAgICBpZiAoaW50ZXJmYWNlcy5sZW5ndGggPT09IDAgJiYgZGlyZWN0aXZlcy5sZW5ndGggPT09IDAgJiYgZmllbGRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuT0JKRUNUX1RZUEVfRVhURU5TSU9OLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIGludGVyZmFjZXM6IGludGVyZmFjZXMsXG4gICAgICBkaXJlY3RpdmVzOiBkaXJlY3RpdmVzLFxuICAgICAgZmllbGRzOiBmaWVsZHMsXG4gICAgICBsb2M6IHRoaXMubG9jKHN0YXJ0KVxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIEludGVyZmFjZVR5cGVFeHRlbnNpb24gOlxuICAgKiAgLSBleHRlbmQgaW50ZXJmYWNlIE5hbWUgSW1wbGVtZW50c0ludGVyZmFjZXM/IERpcmVjdGl2ZXNbQ29uc3RdPyBGaWVsZHNEZWZpbml0aW9uXG4gICAqICAtIGV4dGVuZCBpbnRlcmZhY2UgTmFtZSBJbXBsZW1lbnRzSW50ZXJmYWNlcz8gRGlyZWN0aXZlc1tDb25zdF1cbiAgICogIC0gZXh0ZW5kIGludGVyZmFjZSBOYW1lIEltcGxlbWVudHNJbnRlcmZhY2VzXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlSW50ZXJmYWNlVHlwZUV4dGVuc2lvbiA9IGZ1bmN0aW9uIHBhcnNlSW50ZXJmYWNlVHlwZUV4dGVuc2lvbigpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2V4dGVuZCcpO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnaW50ZXJmYWNlJyk7XG4gICAgdmFyIG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIHZhciBpbnRlcmZhY2VzID0gdGhpcy5wYXJzZUltcGxlbWVudHNJbnRlcmZhY2VzKCk7XG4gICAgdmFyIGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlRGlyZWN0aXZlcyh0cnVlKTtcbiAgICB2YXIgZmllbGRzID0gdGhpcy5wYXJzZUZpZWxkc0RlZmluaXRpb24oKTtcblxuICAgIGlmIChpbnRlcmZhY2VzLmxlbmd0aCA9PT0gMCAmJiBkaXJlY3RpdmVzLmxlbmd0aCA9PT0gMCAmJiBmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAga2luZDogS2luZC5JTlRFUkZBQ0VfVFlQRV9FWFRFTlNJT04sXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgaW50ZXJmYWNlczogaW50ZXJmYWNlcyxcbiAgICAgIGRpcmVjdGl2ZXM6IGRpcmVjdGl2ZXMsXG4gICAgICBmaWVsZHM6IGZpZWxkcyxcbiAgICAgIGxvYzogdGhpcy5sb2Moc3RhcnQpXG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogVW5pb25UeXBlRXh0ZW5zaW9uIDpcbiAgICogICAtIGV4dGVuZCB1bmlvbiBOYW1lIERpcmVjdGl2ZXNbQ29uc3RdPyBVbmlvbk1lbWJlclR5cGVzXG4gICAqICAgLSBleHRlbmQgdW5pb24gTmFtZSBEaXJlY3RpdmVzW0NvbnN0XVxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZVVuaW9uVHlwZUV4dGVuc2lvbiA9IGZ1bmN0aW9uIHBhcnNlVW5pb25UeXBlRXh0ZW5zaW9uKCkge1xuICAgIHZhciBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZXh0ZW5kJyk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCd1bmlvbicpO1xuICAgIHZhciBuYW1lID0gdGhpcy5wYXJzZU5hbWUoKTtcbiAgICB2YXIgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VEaXJlY3RpdmVzKHRydWUpO1xuICAgIHZhciB0eXBlcyA9IHRoaXMucGFyc2VVbmlvbk1lbWJlclR5cGVzKCk7XG5cbiAgICBpZiAoZGlyZWN0aXZlcy5sZW5ndGggPT09IDAgJiYgdHlwZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAga2luZDogS2luZC5VTklPTl9UWVBFX0VYVEVOU0lPTixcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICBkaXJlY3RpdmVzOiBkaXJlY3RpdmVzLFxuICAgICAgdHlwZXM6IHR5cGVzLFxuICAgICAgbG9jOiB0aGlzLmxvYyhzdGFydClcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBFbnVtVHlwZUV4dGVuc2lvbiA6XG4gICAqICAgLSBleHRlbmQgZW51bSBOYW1lIERpcmVjdGl2ZXNbQ29uc3RdPyBFbnVtVmFsdWVzRGVmaW5pdGlvblxuICAgKiAgIC0gZXh0ZW5kIGVudW0gTmFtZSBEaXJlY3RpdmVzW0NvbnN0XVxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5wYXJzZUVudW1UeXBlRXh0ZW5zaW9uID0gZnVuY3Rpb24gcGFyc2VFbnVtVHlwZUV4dGVuc2lvbigpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2V4dGVuZCcpO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZW51bScpO1xuICAgIHZhciBuYW1lID0gdGhpcy5wYXJzZU5hbWUoKTtcbiAgICB2YXIgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VEaXJlY3RpdmVzKHRydWUpO1xuICAgIHZhciB2YWx1ZXMgPSB0aGlzLnBhcnNlRW51bVZhbHVlc0RlZmluaXRpb24oKTtcblxuICAgIGlmIChkaXJlY3RpdmVzLmxlbmd0aCA9PT0gMCAmJiB2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAga2luZDogS2luZC5FTlVNX1RZUEVfRVhURU5TSU9OLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIGRpcmVjdGl2ZXM6IGRpcmVjdGl2ZXMsXG4gICAgICB2YWx1ZXM6IHZhbHVlcyxcbiAgICAgIGxvYzogdGhpcy5sb2Moc3RhcnQpXG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogSW5wdXRPYmplY3RUeXBlRXh0ZW5zaW9uIDpcbiAgICogICAtIGV4dGVuZCBpbnB1dCBOYW1lIERpcmVjdGl2ZXNbQ29uc3RdPyBJbnB1dEZpZWxkc0RlZmluaXRpb25cbiAgICogICAtIGV4dGVuZCBpbnB1dCBOYW1lIERpcmVjdGl2ZXNbQ29uc3RdXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlSW5wdXRPYmplY3RUeXBlRXh0ZW5zaW9uID0gZnVuY3Rpb24gcGFyc2VJbnB1dE9iamVjdFR5cGVFeHRlbnNpb24oKSB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCdleHRlbmQnKTtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2lucHV0Jyk7XG4gICAgdmFyIG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIHZhciBkaXJlY3RpdmVzID0gdGhpcy5wYXJzZURpcmVjdGl2ZXModHJ1ZSk7XG4gICAgdmFyIGZpZWxkcyA9IHRoaXMucGFyc2VJbnB1dEZpZWxkc0RlZmluaXRpb24oKTtcblxuICAgIGlmIChkaXJlY3RpdmVzLmxlbmd0aCA9PT0gMCAmJiBmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAga2luZDogS2luZC5JTlBVVF9PQkpFQ1RfVFlQRV9FWFRFTlNJT04sXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgZGlyZWN0aXZlczogZGlyZWN0aXZlcyxcbiAgICAgIGZpZWxkczogZmllbGRzLFxuICAgICAgbG9jOiB0aGlzLmxvYyhzdGFydClcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBEaXJlY3RpdmVEZWZpbml0aW9uIDpcbiAgICogICAtIERlc2NyaXB0aW9uPyBkaXJlY3RpdmUgQCBOYW1lIEFyZ3VtZW50c0RlZmluaXRpb24/IGByZXBlYXRhYmxlYD8gb24gRGlyZWN0aXZlTG9jYXRpb25zXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlRGlyZWN0aXZlRGVmaW5pdGlvbiA9IGZ1bmN0aW9uIHBhcnNlRGlyZWN0aXZlRGVmaW5pdGlvbigpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB2YXIgZGVzY3JpcHRpb24gPSB0aGlzLnBhcnNlRGVzY3JpcHRpb24oKTtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2RpcmVjdGl2ZScpO1xuICAgIHRoaXMuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkFUKTtcbiAgICB2YXIgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgdmFyIGFyZ3MgPSB0aGlzLnBhcnNlQXJndW1lbnREZWZzKCk7XG4gICAgdmFyIHJlcGVhdGFibGUgPSB0aGlzLmV4cGVjdE9wdGlvbmFsS2V5d29yZCgncmVwZWF0YWJsZScpO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnb24nKTtcbiAgICB2YXIgbG9jYXRpb25zID0gdGhpcy5wYXJzZURpcmVjdGl2ZUxvY2F0aW9ucygpO1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiBLaW5kLkRJUkVDVElWRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIGFyZ3VtZW50czogYXJncyxcbiAgICAgIHJlcGVhdGFibGU6IHJlcGVhdGFibGUsXG4gICAgICBsb2NhdGlvbnM6IGxvY2F0aW9ucyxcbiAgICAgIGxvYzogdGhpcy5sb2Moc3RhcnQpXG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogRGlyZWN0aXZlTG9jYXRpb25zIDpcbiAgICogICAtIGB8YD8gRGlyZWN0aXZlTG9jYXRpb25cbiAgICogICAtIERpcmVjdGl2ZUxvY2F0aW9ucyB8IERpcmVjdGl2ZUxvY2F0aW9uXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnBhcnNlRGlyZWN0aXZlTG9jYXRpb25zID0gZnVuY3Rpb24gcGFyc2VEaXJlY3RpdmVMb2NhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsaW1pdGVkTWFueShUb2tlbktpbmQuUElQRSwgdGhpcy5wYXJzZURpcmVjdGl2ZUxvY2F0aW9uKTtcbiAgfVxuICAvKlxuICAgKiBEaXJlY3RpdmVMb2NhdGlvbiA6XG4gICAqICAgLSBFeGVjdXRhYmxlRGlyZWN0aXZlTG9jYXRpb25cbiAgICogICAtIFR5cGVTeXN0ZW1EaXJlY3RpdmVMb2NhdGlvblxuICAgKlxuICAgKiBFeGVjdXRhYmxlRGlyZWN0aXZlTG9jYXRpb24gOiBvbmUgb2ZcbiAgICogICBgUVVFUllgXG4gICAqICAgYE1VVEFUSU9OYFxuICAgKiAgIGBTVUJTQ1JJUFRJT05gXG4gICAqICAgYEZJRUxEYFxuICAgKiAgIGBGUkFHTUVOVF9ERUZJTklUSU9OYFxuICAgKiAgIGBGUkFHTUVOVF9TUFJFQURgXG4gICAqICAgYElOTElORV9GUkFHTUVOVGBcbiAgICpcbiAgICogVHlwZVN5c3RlbURpcmVjdGl2ZUxvY2F0aW9uIDogb25lIG9mXG4gICAqICAgYFNDSEVNQWBcbiAgICogICBgU0NBTEFSYFxuICAgKiAgIGBPQkpFQ1RgXG4gICAqICAgYEZJRUxEX0RFRklOSVRJT05gXG4gICAqICAgYEFSR1VNRU5UX0RFRklOSVRJT05gXG4gICAqICAgYElOVEVSRkFDRWBcbiAgICogICBgVU5JT05gXG4gICAqICAgYEVOVU1gXG4gICAqICAgYEVOVU1fVkFMVUVgXG4gICAqICAgYElOUFVUX09CSkVDVGBcbiAgICogICBgSU5QVVRfRklFTERfREVGSU5JVElPTmBcbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGFyc2VEaXJlY3RpdmVMb2NhdGlvbiA9IGZ1bmN0aW9uIHBhcnNlRGlyZWN0aXZlTG9jYXRpb24oKSB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgdmFyIG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuXG4gICAgaWYgKERpcmVjdGl2ZUxvY2F0aW9uW25hbWUudmFsdWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBuYW1lO1xuICAgIH1cblxuICAgIHRocm93IHRoaXMudW5leHBlY3RlZChzdGFydCk7XG4gIH0gLy8gQ29yZSBwYXJzaW5nIHV0aWxpdHkgZnVuY3Rpb25zXG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsb2NhdGlvbiBvYmplY3QsIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHBsYWNlIGluIHRoZSBzb3VyY2UgdGhhdCBjcmVhdGVkIGEgZ2l2ZW4gcGFyc2VkIG9iamVjdC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ubG9jID0gZnVuY3Rpb24gbG9jKHN0YXJ0VG9rZW4pIHtcbiAgICB2YXIgX3RoaXMkX29wdGlvbnM0O1xuXG4gICAgaWYgKCgoX3RoaXMkX29wdGlvbnM0ID0gdGhpcy5fb3B0aW9ucykgPT09IG51bGwgfHwgX3RoaXMkX29wdGlvbnM0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRfb3B0aW9uczQubm9Mb2NhdGlvbikgIT09IHRydWUpIHtcbiAgICAgIHJldHVybiBuZXcgTG9jYXRpb24oc3RhcnRUb2tlbiwgdGhpcy5fbGV4ZXIubGFzdFRva2VuLCB0aGlzLl9sZXhlci5zb3VyY2UpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgbmV4dCB0b2tlbiBpcyBvZiBhIGdpdmVuIGtpbmRcbiAgICovXG4gIDtcblxuICBfcHJvdG8ucGVlayA9IGZ1bmN0aW9uIHBlZWsoa2luZCkge1xuICAgIHJldHVybiB0aGlzLl9sZXhlci50b2tlbi5raW5kID09PSBraW5kO1xuICB9XG4gIC8qKlxuICAgKiBJZiB0aGUgbmV4dCB0b2tlbiBpcyBvZiB0aGUgZ2l2ZW4ga2luZCwgcmV0dXJuIHRoYXQgdG9rZW4gYWZ0ZXIgYWR2YW5jaW5nIHRoZSBsZXhlci5cbiAgICogT3RoZXJ3aXNlLCBkbyBub3QgY2hhbmdlIHRoZSBwYXJzZXIgc3RhdGUgYW5kIHRocm93IGFuIGVycm9yLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5leHBlY3RUb2tlbiA9IGZ1bmN0aW9uIGV4cGVjdFRva2VuKGtpbmQpIHtcbiAgICB2YXIgdG9rZW4gPSB0aGlzLl9sZXhlci50b2tlbjtcblxuICAgIGlmICh0b2tlbi5raW5kID09PSBraW5kKSB7XG4gICAgICB0aGlzLl9sZXhlci5hZHZhbmNlKCk7XG5cbiAgICAgIHJldHVybiB0b2tlbjtcbiAgICB9XG5cbiAgICB0aHJvdyBzeW50YXhFcnJvcih0aGlzLl9sZXhlci5zb3VyY2UsIHRva2VuLnN0YXJ0LCBcIkV4cGVjdGVkIFwiLmNvbmNhdChnZXRUb2tlbktpbmREZXNjKGtpbmQpLCBcIiwgZm91bmQgXCIpLmNvbmNhdChnZXRUb2tlbkRlc2ModG9rZW4pLCBcIi5cIikpO1xuICB9XG4gIC8qKlxuICAgKiBJZiB0aGUgbmV4dCB0b2tlbiBpcyBvZiB0aGUgZ2l2ZW4ga2luZCwgcmV0dXJuIHRoYXQgdG9rZW4gYWZ0ZXIgYWR2YW5jaW5nIHRoZSBsZXhlci5cbiAgICogT3RoZXJ3aXNlLCBkbyBub3QgY2hhbmdlIHRoZSBwYXJzZXIgc3RhdGUgYW5kIHJldHVybiB1bmRlZmluZWQuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmV4cGVjdE9wdGlvbmFsVG9rZW4gPSBmdW5jdGlvbiBleHBlY3RPcHRpb25hbFRva2VuKGtpbmQpIHtcbiAgICB2YXIgdG9rZW4gPSB0aGlzLl9sZXhlci50b2tlbjtcblxuICAgIGlmICh0b2tlbi5raW5kID09PSBraW5kKSB7XG4gICAgICB0aGlzLl9sZXhlci5hZHZhbmNlKCk7XG5cbiAgICAgIHJldHVybiB0b2tlbjtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIC8qKlxuICAgKiBJZiB0aGUgbmV4dCB0b2tlbiBpcyBhIGdpdmVuIGtleXdvcmQsIGFkdmFuY2UgdGhlIGxleGVyLlxuICAgKiBPdGhlcndpc2UsIGRvIG5vdCBjaGFuZ2UgdGhlIHBhcnNlciBzdGF0ZSBhbmQgdGhyb3cgYW4gZXJyb3IuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLmV4cGVjdEtleXdvcmQgPSBmdW5jdGlvbiBleHBlY3RLZXl3b3JkKHZhbHVlKSB7XG4gICAgdmFyIHRva2VuID0gdGhpcy5fbGV4ZXIudG9rZW47XG5cbiAgICBpZiAodG9rZW4ua2luZCA9PT0gVG9rZW5LaW5kLk5BTUUgJiYgdG9rZW4udmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9sZXhlci5hZHZhbmNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IHN5bnRheEVycm9yKHRoaXMuX2xleGVyLnNvdXJjZSwgdG9rZW4uc3RhcnQsIFwiRXhwZWN0ZWQgXFxcIlwiLmNvbmNhdCh2YWx1ZSwgXCJcXFwiLCBmb3VuZCBcIikuY29uY2F0KGdldFRva2VuRGVzYyh0b2tlbiksIFwiLlwiKSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBJZiB0aGUgbmV4dCB0b2tlbiBpcyBhIGdpdmVuIGtleXdvcmQsIHJldHVybiBcInRydWVcIiBhZnRlciBhZHZhbmNpbmcgdGhlIGxleGVyLlxuICAgKiBPdGhlcndpc2UsIGRvIG5vdCBjaGFuZ2UgdGhlIHBhcnNlciBzdGF0ZSBhbmQgcmV0dXJuIFwiZmFsc2VcIi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZXhwZWN0T3B0aW9uYWxLZXl3b3JkID0gZnVuY3Rpb24gZXhwZWN0T3B0aW9uYWxLZXl3b3JkKHZhbHVlKSB7XG4gICAgdmFyIHRva2VuID0gdGhpcy5fbGV4ZXIudG9rZW47XG5cbiAgICBpZiAodG9rZW4ua2luZCA9PT0gVG9rZW5LaW5kLk5BTUUgJiYgdG9rZW4udmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9sZXhlci5hZHZhbmNlKCk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvKipcbiAgICogSGVscGVyIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhbiBlcnJvciB3aGVuIGFuIHVuZXhwZWN0ZWQgbGV4ZWQgdG9rZW4gaXMgZW5jb3VudGVyZWQuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLnVuZXhwZWN0ZWQgPSBmdW5jdGlvbiB1bmV4cGVjdGVkKGF0VG9rZW4pIHtcbiAgICB2YXIgdG9rZW4gPSBhdFRva2VuICE9PSBudWxsICYmIGF0VG9rZW4gIT09IHZvaWQgMCA/IGF0VG9rZW4gOiB0aGlzLl9sZXhlci50b2tlbjtcbiAgICByZXR1cm4gc3ludGF4RXJyb3IodGhpcy5fbGV4ZXIuc291cmNlLCB0b2tlbi5zdGFydCwgXCJVbmV4cGVjdGVkIFwiLmNvbmNhdChnZXRUb2tlbkRlc2ModG9rZW4pLCBcIi5cIikpO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcG9zc2libHkgZW1wdHkgbGlzdCBvZiBwYXJzZSBub2RlcywgZGV0ZXJtaW5lZCBieSB0aGUgcGFyc2VGbi5cbiAgICogVGhpcyBsaXN0IGJlZ2lucyB3aXRoIGEgbGV4IHRva2VuIG9mIG9wZW5LaW5kIGFuZCBlbmRzIHdpdGggYSBsZXggdG9rZW4gb2YgY2xvc2VLaW5kLlxuICAgKiBBZHZhbmNlcyB0aGUgcGFyc2VyIHRvIHRoZSBuZXh0IGxleCB0b2tlbiBhZnRlciB0aGUgY2xvc2luZyB0b2tlbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uYW55ID0gZnVuY3Rpb24gYW55KG9wZW5LaW5kLCBwYXJzZUZuLCBjbG9zZUtpbmQpIHtcbiAgICB0aGlzLmV4cGVjdFRva2VuKG9wZW5LaW5kKTtcbiAgICB2YXIgbm9kZXMgPSBbXTtcblxuICAgIHdoaWxlICghdGhpcy5leHBlY3RPcHRpb25hbFRva2VuKGNsb3NlS2luZCkpIHtcbiAgICAgIG5vZGVzLnB1c2gocGFyc2VGbi5jYWxsKHRoaXMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIHBhcnNlIG5vZGVzLCBkZXRlcm1pbmVkIGJ5IHRoZSBwYXJzZUZuLlxuICAgKiBJdCBjYW4gYmUgZW1wdHkgb25seSBpZiBvcGVuIHRva2VuIGlzIG1pc3Npbmcgb3RoZXJ3aXNlIGl0IHdpbGwgYWx3YXlzIHJldHVybiBub24tZW1wdHkgbGlzdFxuICAgKiB0aGF0IGJlZ2lucyB3aXRoIGEgbGV4IHRva2VuIG9mIG9wZW5LaW5kIGFuZCBlbmRzIHdpdGggYSBsZXggdG9rZW4gb2YgY2xvc2VLaW5kLlxuICAgKiBBZHZhbmNlcyB0aGUgcGFyc2VyIHRvIHRoZSBuZXh0IGxleCB0b2tlbiBhZnRlciB0aGUgY2xvc2luZyB0b2tlbi5cbiAgICovXG4gIDtcblxuICBfcHJvdG8ub3B0aW9uYWxNYW55ID0gZnVuY3Rpb24gb3B0aW9uYWxNYW55KG9wZW5LaW5kLCBwYXJzZUZuLCBjbG9zZUtpbmQpIHtcbiAgICBpZiAodGhpcy5leHBlY3RPcHRpb25hbFRva2VuKG9wZW5LaW5kKSkge1xuICAgICAgdmFyIG5vZGVzID0gW107XG5cbiAgICAgIGRvIHtcbiAgICAgICAgbm9kZXMucHVzaChwYXJzZUZuLmNhbGwodGhpcykpO1xuICAgICAgfSB3aGlsZSAoIXRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihjbG9zZUtpbmQpKTtcblxuICAgICAgcmV0dXJuIG5vZGVzO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJucyBhIG5vbi1lbXB0eSBsaXN0IG9mIHBhcnNlIG5vZGVzLCBkZXRlcm1pbmVkIGJ5IHRoZSBwYXJzZUZuLlxuICAgKiBUaGlzIGxpc3QgYmVnaW5zIHdpdGggYSBsZXggdG9rZW4gb2Ygb3BlbktpbmQgYW5kIGVuZHMgd2l0aCBhIGxleCB0b2tlbiBvZiBjbG9zZUtpbmQuXG4gICAqIEFkdmFuY2VzIHRoZSBwYXJzZXIgdG8gdGhlIG5leHQgbGV4IHRva2VuIGFmdGVyIHRoZSBjbG9zaW5nIHRva2VuLlxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5tYW55ID0gZnVuY3Rpb24gbWFueShvcGVuS2luZCwgcGFyc2VGbiwgY2xvc2VLaW5kKSB7XG4gICAgdGhpcy5leHBlY3RUb2tlbihvcGVuS2luZCk7XG4gICAgdmFyIG5vZGVzID0gW107XG5cbiAgICBkbyB7XG4gICAgICBub2Rlcy5wdXNoKHBhcnNlRm4uY2FsbCh0aGlzKSk7XG4gICAgfSB3aGlsZSAoIXRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihjbG9zZUtpbmQpKTtcblxuICAgIHJldHVybiBub2RlcztcbiAgfVxuICAvKipcbiAgICogUmV0dXJucyBhIG5vbi1lbXB0eSBsaXN0IG9mIHBhcnNlIG5vZGVzLCBkZXRlcm1pbmVkIGJ5IHRoZSBwYXJzZUZuLlxuICAgKiBUaGlzIGxpc3QgbWF5IGJlZ2luIHdpdGggYSBsZXggdG9rZW4gb2YgZGVsaW1pdGVyS2luZCBmb2xsb3dlZCBieSBpdGVtcyBzZXBhcmF0ZWQgYnkgbGV4IHRva2VucyBvZiB0b2tlbktpbmQuXG4gICAqIEFkdmFuY2VzIHRoZSBwYXJzZXIgdG8gdGhlIG5leHQgbGV4IHRva2VuIGFmdGVyIGxhc3QgaXRlbSBpbiB0aGUgbGlzdC5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uZGVsaW1pdGVkTWFueSA9IGZ1bmN0aW9uIGRlbGltaXRlZE1hbnkoZGVsaW1pdGVyS2luZCwgcGFyc2VGbikge1xuICAgIHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihkZWxpbWl0ZXJLaW5kKTtcbiAgICB2YXIgbm9kZXMgPSBbXTtcblxuICAgIGRvIHtcbiAgICAgIG5vZGVzLnB1c2gocGFyc2VGbi5jYWxsKHRoaXMpKTtcbiAgICB9IHdoaWxlICh0aGlzLmV4cGVjdE9wdGlvbmFsVG9rZW4oZGVsaW1pdGVyS2luZCkpO1xuXG4gICAgcmV0dXJuIG5vZGVzO1xuICB9O1xuXG4gIHJldHVybiBQYXJzZXI7XG59KCk7XG4vKipcbiAqIEEgaGVscGVyIGZ1bmN0aW9uIHRvIGRlc2NyaWJlIGEgdG9rZW4gYXMgYSBzdHJpbmcgZm9yIGRlYnVnZ2luZy5cbiAqL1xuXG5mdW5jdGlvbiBnZXRUb2tlbkRlc2ModG9rZW4pIHtcbiAgdmFyIHZhbHVlID0gdG9rZW4udmFsdWU7XG4gIHJldHVybiBnZXRUb2tlbktpbmREZXNjKHRva2VuLmtpbmQpICsgKHZhbHVlICE9IG51bGwgPyBcIiBcXFwiXCIuY29uY2F0KHZhbHVlLCBcIlxcXCJcIikgOiAnJyk7XG59XG4vKipcbiAqIEEgaGVscGVyIGZ1bmN0aW9uIHRvIGRlc2NyaWJlIGEgdG9rZW4ga2luZCBhcyBhIHN0cmluZyBmb3IgZGVidWdnaW5nLlxuICovXG5cblxuZnVuY3Rpb24gZ2V0VG9rZW5LaW5kRGVzYyhraW5kKSB7XG4gIHJldHVybiBpc1B1bmN0dWF0b3JUb2tlbktpbmQoa2luZCkgPyBcIlxcXCJcIi5jb25jYXQoa2luZCwgXCJcXFwiXCIpIDoga2luZDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/parser.mjs\n");
789
790/***/ }),
791
792/***/ "../../../node_modules/graphql/language/predicates.mjs":
793/*!****************************************************************************************!*\
794 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/language/predicates.mjs ***!
795 \****************************************************************************************/
796/*! exports provided: isDefinitionNode, isExecutableDefinitionNode, isSelectionNode, isValueNode, isTypeNode, isTypeSystemDefinitionNode, isTypeDefinitionNode, isTypeSystemExtensionNode, isTypeExtensionNode */
797/***/ (function(module, __webpack_exports__, __webpack_require__) {
798
799"use strict";
800eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDefinitionNode\", function() { return isDefinitionNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isExecutableDefinitionNode\", function() { return isExecutableDefinitionNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSelectionNode\", function() { return isSelectionNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isValueNode\", function() { return isValueNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypeNode\", function() { return isTypeNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypeSystemDefinitionNode\", function() { return isTypeSystemDefinitionNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypeDefinitionNode\", function() { return isTypeDefinitionNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypeSystemExtensionNode\", function() { return isTypeSystemExtensionNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypeExtensionNode\", function() { return isTypeExtensionNode; });\n/* harmony import */ var _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n\nfunction isDefinitionNode(node) {\n return isExecutableDefinitionNode(node) || isTypeSystemDefinitionNode(node) || isTypeSystemExtensionNode(node);\n}\nfunction isExecutableDefinitionNode(node) {\n return node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].OPERATION_DEFINITION || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FRAGMENT_DEFINITION;\n}\nfunction isSelectionNode(node) {\n return node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FIELD || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FRAGMENT_SPREAD || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].INLINE_FRAGMENT;\n}\nfunction isValueNode(node) {\n return node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].VARIABLE || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].INT || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FLOAT || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].STRING || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].BOOLEAN || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].NULL || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].ENUM || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].LIST || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].OBJECT;\n}\nfunction isTypeNode(node) {\n return node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].NAMED_TYPE || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].LIST_TYPE || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].NON_NULL_TYPE;\n}\nfunction isTypeSystemDefinitionNode(node) {\n return node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].SCHEMA_DEFINITION || isTypeDefinitionNode(node) || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].DIRECTIVE_DEFINITION;\n}\nfunction isTypeDefinitionNode(node) {\n return node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].SCALAR_TYPE_DEFINITION || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].OBJECT_TYPE_DEFINITION || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].INTERFACE_TYPE_DEFINITION || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].UNION_TYPE_DEFINITION || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].ENUM_TYPE_DEFINITION || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].INPUT_OBJECT_TYPE_DEFINITION;\n}\nfunction isTypeSystemExtensionNode(node) {\n return node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\nfunction isTypeExtensionNode(node) {\n return node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].SCALAR_TYPE_EXTENSION || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].OBJECT_TYPE_EXTENSION || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].INTERFACE_TYPE_EXTENSION || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].UNION_TYPE_EXTENSION || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].ENUM_TYPE_EXTENSION || node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].INPUT_OBJECT_TYPE_EXTENSION;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvcHJlZGljYXRlcy5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9wcmVkaWNhdGVzLm1qcz9jYTllIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtpbmQgfSBmcm9tIFwiLi9raW5kcy5tanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBpc0RlZmluaXRpb25Ob2RlKG5vZGUpIHtcbiAgcmV0dXJuIGlzRXhlY3V0YWJsZURlZmluaXRpb25Ob2RlKG5vZGUpIHx8IGlzVHlwZVN5c3RlbURlZmluaXRpb25Ob2RlKG5vZGUpIHx8IGlzVHlwZVN5c3RlbUV4dGVuc2lvbk5vZGUobm9kZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNFeGVjdXRhYmxlRGVmaW5pdGlvbk5vZGUobm9kZSkge1xuICByZXR1cm4gbm9kZS5raW5kID09PSBLaW5kLk9QRVJBVElPTl9ERUZJTklUSU9OIHx8IG5vZGUua2luZCA9PT0gS2luZC5GUkFHTUVOVF9ERUZJTklUSU9OO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VsZWN0aW9uTm9kZShub2RlKSB7XG4gIHJldHVybiBub2RlLmtpbmQgPT09IEtpbmQuRklFTEQgfHwgbm9kZS5raW5kID09PSBLaW5kLkZSQUdNRU5UX1NQUkVBRCB8fCBub2RlLmtpbmQgPT09IEtpbmQuSU5MSU5FX0ZSQUdNRU5UO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsdWVOb2RlKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUua2luZCA9PT0gS2luZC5WQVJJQUJMRSB8fCBub2RlLmtpbmQgPT09IEtpbmQuSU5UIHx8IG5vZGUua2luZCA9PT0gS2luZC5GTE9BVCB8fCBub2RlLmtpbmQgPT09IEtpbmQuU1RSSU5HIHx8IG5vZGUua2luZCA9PT0gS2luZC5CT09MRUFOIHx8IG5vZGUua2luZCA9PT0gS2luZC5OVUxMIHx8IG5vZGUua2luZCA9PT0gS2luZC5FTlVNIHx8IG5vZGUua2luZCA9PT0gS2luZC5MSVNUIHx8IG5vZGUua2luZCA9PT0gS2luZC5PQkpFQ1Q7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlTm9kZShub2RlKSB7XG4gIHJldHVybiBub2RlLmtpbmQgPT09IEtpbmQuTkFNRURfVFlQRSB8fCBub2RlLmtpbmQgPT09IEtpbmQuTElTVF9UWVBFIHx8IG5vZGUua2luZCA9PT0gS2luZC5OT05fTlVMTF9UWVBFO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVHlwZVN5c3RlbURlZmluaXRpb25Ob2RlKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUua2luZCA9PT0gS2luZC5TQ0hFTUFfREVGSU5JVElPTiB8fCBpc1R5cGVEZWZpbml0aW9uTm9kZShub2RlKSB8fCBub2RlLmtpbmQgPT09IEtpbmQuRElSRUNUSVZFX0RFRklOSVRJT047XG59XG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlRGVmaW5pdGlvbk5vZGUobm9kZSkge1xuICByZXR1cm4gbm9kZS5raW5kID09PSBLaW5kLlNDQUxBUl9UWVBFX0RFRklOSVRJT04gfHwgbm9kZS5raW5kID09PSBLaW5kLk9CSkVDVF9UWVBFX0RFRklOSVRJT04gfHwgbm9kZS5raW5kID09PSBLaW5kLklOVEVSRkFDRV9UWVBFX0RFRklOSVRJT04gfHwgbm9kZS5raW5kID09PSBLaW5kLlVOSU9OX1RZUEVfREVGSU5JVElPTiB8fCBub2RlLmtpbmQgPT09IEtpbmQuRU5VTV9UWVBFX0RFRklOSVRJT04gfHwgbm9kZS5raW5kID09PSBLaW5kLklOUFVUX09CSkVDVF9UWVBFX0RFRklOSVRJT047XG59XG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlU3lzdGVtRXh0ZW5zaW9uTm9kZShub2RlKSB7XG4gIHJldHVybiBub2RlLmtpbmQgPT09IEtpbmQuU0NIRU1BX0VYVEVOU0lPTiB8fCBpc1R5cGVFeHRlbnNpb25Ob2RlKG5vZGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVHlwZUV4dGVuc2lvbk5vZGUobm9kZSkge1xuICByZXR1cm4gbm9kZS5raW5kID09PSBLaW5kLlNDQUxBUl9UWVBFX0VYVEVOU0lPTiB8fCBub2RlLmtpbmQgPT09IEtpbmQuT0JKRUNUX1RZUEVfRVhURU5TSU9OIHx8IG5vZGUua2luZCA9PT0gS2luZC5JTlRFUkZBQ0VfVFlQRV9FWFRFTlNJT04gfHwgbm9kZS5raW5kID09PSBLaW5kLlVOSU9OX1RZUEVfRVhURU5TSU9OIHx8IG5vZGUua2luZCA9PT0gS2luZC5FTlVNX1RZUEVfRVhURU5TSU9OIHx8IG5vZGUua2luZCA9PT0gS2luZC5JTlBVVF9PQkpFQ1RfVFlQRV9FWFRFTlNJT047XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/predicates.mjs\n");
801
802/***/ }),
803
804/***/ "../../../node_modules/graphql/language/printLocation.mjs":
805/*!*******************************************************************************************!*\
806 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/language/printLocation.mjs ***!
807 \*******************************************************************************************/
808/*! exports provided: printLocation, printSourceLocation */
809/***/ (function(module, __webpack_exports__, __webpack_require__) {
810
811"use strict";
812eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"printLocation\", function() { return printLocation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"printSourceLocation\", function() { return printSourceLocation; });\n/* harmony import */ var _location_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./location.mjs */ \"../../../node_modules/graphql/language/location.mjs\");\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nfunction printLocation(location) {\n return printSourceLocation(location.source, Object(_location_mjs__WEBPACK_IMPORTED_MODULE_0__[\"getLocation\"])(location.source, location.start));\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nfunction printSourceLocation(source, sourceLocation) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = sourceLocation.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = sourceLocation.line + lineOffset;\n var columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = sourceLocation.column + columnOffset;\n var locationStr = \"\".concat(source.name, \":\").concat(lineNum, \":\").concat(columnNum, \"\\n\");\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n var locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n var subLineIndex = Math.floor(columnNum / 80);\n var subLineColumnNum = columnNum % 80;\n var subLines = [];\n\n for (var i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return locationStr + printPrefixedLines([[\"\".concat(lineNum), subLines[0]]].concat(subLines.slice(1, subLineIndex + 1).map(function (subLine) {\n return ['', subLine];\n }), [[' ', whitespace(subLineColumnNum - 1) + '^'], ['', subLines[subLineIndex + 1]]]));\n }\n\n return locationStr + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1), lines[lineIndex - 1]], [\"\".concat(lineNum), locationLine], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = Math.max.apply(Math, existingLines.map(function (_ref2) {\n var prefix = _ref2[0];\n return prefix.length;\n }));\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return leftPad(padLen, prefix) + (line ? ' | ' + line : ' |');\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction leftPad(len, str) {\n return whitespace(len - str.length) + str;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvcHJpbnRMb2NhdGlvbi5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9wcmludExvY2F0aW9uLm1qcz9lZjRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvY2F0aW9uIH0gZnJvbSBcIi4vbG9jYXRpb24ubWpzXCI7XG4vKipcbiAqIFJlbmRlciBhIGhlbHBmdWwgZGVzY3JpcHRpb24gb2YgdGhlIGxvY2F0aW9uIGluIHRoZSBHcmFwaFFMIFNvdXJjZSBkb2N1bWVudC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRMb2NhdGlvbihsb2NhdGlvbikge1xuICByZXR1cm4gcHJpbnRTb3VyY2VMb2NhdGlvbihsb2NhdGlvbi5zb3VyY2UsIGdldExvY2F0aW9uKGxvY2F0aW9uLnNvdXJjZSwgbG9jYXRpb24uc3RhcnQpKTtcbn1cbi8qKlxuICogUmVuZGVyIGEgaGVscGZ1bCBkZXNjcmlwdGlvbiBvZiB0aGUgbG9jYXRpb24gaW4gdGhlIEdyYXBoUUwgU291cmNlIGRvY3VtZW50LlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludFNvdXJjZUxvY2F0aW9uKHNvdXJjZSwgc291cmNlTG9jYXRpb24pIHtcbiAgdmFyIGZpcnN0TGluZUNvbHVtbk9mZnNldCA9IHNvdXJjZS5sb2NhdGlvbk9mZnNldC5jb2x1bW4gLSAxO1xuICB2YXIgYm9keSA9IHdoaXRlc3BhY2UoZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KSArIHNvdXJjZS5ib2R5O1xuICB2YXIgbGluZUluZGV4ID0gc291cmNlTG9jYXRpb24ubGluZSAtIDE7XG4gIHZhciBsaW5lT2Zmc2V0ID0gc291cmNlLmxvY2F0aW9uT2Zmc2V0LmxpbmUgLSAxO1xuICB2YXIgbGluZU51bSA9IHNvdXJjZUxvY2F0aW9uLmxpbmUgKyBsaW5lT2Zmc2V0O1xuICB2YXIgY29sdW1uT2Zmc2V0ID0gc291cmNlTG9jYXRpb24ubGluZSA9PT0gMSA/IGZpcnN0TGluZUNvbHVtbk9mZnNldCA6IDA7XG4gIHZhciBjb2x1bW5OdW0gPSBzb3VyY2VMb2NhdGlvbi5jb2x1bW4gKyBjb2x1bW5PZmZzZXQ7XG4gIHZhciBsb2NhdGlvblN0ciA9IFwiXCIuY29uY2F0KHNvdXJjZS5uYW1lLCBcIjpcIikuY29uY2F0KGxpbmVOdW0sIFwiOlwiKS5jb25jYXQoY29sdW1uTnVtLCBcIlxcblwiKTtcbiAgdmFyIGxpbmVzID0gYm9keS5zcGxpdCgvXFxyXFxufFtcXG5cXHJdL2cpO1xuICB2YXIgbG9jYXRpb25MaW5lID0gbGluZXNbbGluZUluZGV4XTsgLy8gU3BlY2lhbCBjYXNlIGZvciBtaW5pZmllZCBkb2N1bWVudHNcblxuICBpZiAobG9jYXRpb25MaW5lLmxlbmd0aCA+IDEyMCkge1xuICAgIHZhciBzdWJMaW5lSW5kZXggPSBNYXRoLmZsb29yKGNvbHVtbk51bSAvIDgwKTtcbiAgICB2YXIgc3ViTGluZUNvbHVtbk51bSA9IGNvbHVtbk51bSAlIDgwO1xuICAgIHZhciBzdWJMaW5lcyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsb2NhdGlvbkxpbmUubGVuZ3RoOyBpICs9IDgwKSB7XG4gICAgICBzdWJMaW5lcy5wdXNoKGxvY2F0aW9uTGluZS5zbGljZShpLCBpICsgODApKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbG9jYXRpb25TdHIgKyBwcmludFByZWZpeGVkTGluZXMoW1tcIlwiLmNvbmNhdChsaW5lTnVtKSwgc3ViTGluZXNbMF1dXS5jb25jYXQoc3ViTGluZXMuc2xpY2UoMSwgc3ViTGluZUluZGV4ICsgMSkubWFwKGZ1bmN0aW9uIChzdWJMaW5lKSB7XG4gICAgICByZXR1cm4gWycnLCBzdWJMaW5lXTtcbiAgICB9KSwgW1snICcsIHdoaXRlc3BhY2Uoc3ViTGluZUNvbHVtbk51bSAtIDEpICsgJ14nXSwgWycnLCBzdWJMaW5lc1tzdWJMaW5lSW5kZXggKyAxXV1dKSk7XG4gIH1cblxuICByZXR1cm4gbG9jYXRpb25TdHIgKyBwcmludFByZWZpeGVkTGluZXMoWy8vIExpbmVzIHNwZWNpZmllZCBsaWtlIHRoaXM6IFtcInByZWZpeFwiLCBcInN0cmluZ1wiXSxcbiAgW1wiXCIuY29uY2F0KGxpbmVOdW0gLSAxKSwgbGluZXNbbGluZUluZGV4IC0gMV1dLCBbXCJcIi5jb25jYXQobGluZU51bSksIGxvY2F0aW9uTGluZV0sIFsnJywgd2hpdGVzcGFjZShjb2x1bW5OdW0gLSAxKSArICdeJ10sIFtcIlwiLmNvbmNhdChsaW5lTnVtICsgMSksIGxpbmVzW2xpbmVJbmRleCArIDFdXV0pO1xufVxuXG5mdW5jdGlvbiBwcmludFByZWZpeGVkTGluZXMobGluZXMpIHtcbiAgdmFyIGV4aXN0aW5nTGluZXMgPSBsaW5lcy5maWx0ZXIoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICB2YXIgXyA9IF9yZWZbMF0sXG4gICAgICAgIGxpbmUgPSBfcmVmWzFdO1xuICAgIHJldHVybiBsaW5lICE9PSB1bmRlZmluZWQ7XG4gIH0pO1xuICB2YXIgcGFkTGVuID0gTWF0aC5tYXguYXBwbHkoTWF0aCwgZXhpc3RpbmdMaW5lcy5tYXAoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgdmFyIHByZWZpeCA9IF9yZWYyWzBdO1xuICAgIHJldHVybiBwcmVmaXgubGVuZ3RoO1xuICB9KSk7XG4gIHJldHVybiBleGlzdGluZ0xpbmVzLm1hcChmdW5jdGlvbiAoX3JlZjMpIHtcbiAgICB2YXIgcHJlZml4ID0gX3JlZjNbMF0sXG4gICAgICAgIGxpbmUgPSBfcmVmM1sxXTtcbiAgICByZXR1cm4gbGVmdFBhZChwYWRMZW4sIHByZWZpeCkgKyAobGluZSA/ICcgfCAnICsgbGluZSA6ICcgfCcpO1xuICB9KS5qb2luKCdcXG4nKTtcbn1cblxuZnVuY3Rpb24gd2hpdGVzcGFjZShsZW4pIHtcbiAgcmV0dXJuIEFycmF5KGxlbiArIDEpLmpvaW4oJyAnKTtcbn1cblxuZnVuY3Rpb24gbGVmdFBhZChsZW4sIHN0cikge1xuICByZXR1cm4gd2hpdGVzcGFjZShsZW4gLSBzdHIubGVuZ3RoKSArIHN0cjtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/printLocation.mjs\n");
813
814/***/ }),
815
816/***/ "../../../node_modules/graphql/language/printer.mjs":
817/*!*************************************************************************************!*\
818 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/language/printer.mjs ***!
819 \*************************************************************************************/
820/*! exports provided: print */
821/***/ (function(module, __webpack_exports__, __webpack_require__) {
822
823"use strict";
824eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"print\", function() { return print; });\n/* harmony import */ var _visitor_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n/* harmony import */ var _blockString_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./blockString.mjs */ \"../../../node_modules/graphql/language/blockString.mjs\");\n\n\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nfunction print(ast) {\n return Object(_visitor_mjs__WEBPACK_IMPORTED_MODULE_0__[\"visit\"])(ast, {\n leave: printDocASTReducer\n });\n}\nvar MAX_LINE_LENGTH = 80; // TODO: provide better type coverage in future\n\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n var prefix = wrap('', alias, ': ') + name;\n var argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (// Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? Object(_blockString_mjs__WEBPACK_IMPORTED_MODULE_1__[\"printBlockString\"])(value, key === 'description' ? '' : ' ') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: addDescription(function (_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n }),\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n interfaces = _ref26.interfaces,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n repeatable = _ref31.repeatable,\n locations = _ref31.locations;\n return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + (repeatable ? ' repeatable' : '') + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n interfaces = _ref35.interfaces,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\n\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray) {\n var _maybeArray$filter$jo;\n\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter(function (x) {\n return x;\n }).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\n\nfunction wrap(start, maybeString) {\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n return maybeString != null && maybeString !== '' ? start + maybeString + end : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction isMultiline(str) {\n return str.indexOf('\\n') !== -1;\n}\n\nfunction hasMultilineItems(maybeArray) {\n return maybeArray != null && maybeArray.some(isMultiline);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvcHJpbnRlci5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9wcmludGVyLm1qcz9iMzI0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHZpc2l0IH0gZnJvbSBcIi4vdmlzaXRvci5tanNcIjtcbmltcG9ydCB7IHByaW50QmxvY2tTdHJpbmcgfSBmcm9tIFwiLi9ibG9ja1N0cmluZy5tanNcIjtcbi8qKlxuICogQ29udmVydHMgYW4gQVNUIGludG8gYSBzdHJpbmcsIHVzaW5nIG9uZSBzZXQgb2YgcmVhc29uYWJsZVxuICogZm9ybWF0dGluZyBydWxlcy5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnQoYXN0KSB7XG4gIHJldHVybiB2aXNpdChhc3QsIHtcbiAgICBsZWF2ZTogcHJpbnREb2NBU1RSZWR1Y2VyXG4gIH0pO1xufVxudmFyIE1BWF9MSU5FX0xFTkdUSCA9IDgwOyAvLyBUT0RPOiBwcm92aWRlIGJldHRlciB0eXBlIGNvdmVyYWdlIGluIGZ1dHVyZVxuXG52YXIgcHJpbnREb2NBU1RSZWR1Y2VyID0ge1xuICBOYW1lOiBmdW5jdGlvbiBOYW1lKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgfSxcbiAgVmFyaWFibGU6IGZ1bmN0aW9uIFZhcmlhYmxlKG5vZGUpIHtcbiAgICByZXR1cm4gJyQnICsgbm9kZS5uYW1lO1xuICB9LFxuICAvLyBEb2N1bWVudFxuICBEb2N1bWVudDogZnVuY3Rpb24gRG9jdW1lbnQobm9kZSkge1xuICAgIHJldHVybiBqb2luKG5vZGUuZGVmaW5pdGlvbnMsICdcXG5cXG4nKSArICdcXG4nO1xuICB9LFxuICBPcGVyYXRpb25EZWZpbml0aW9uOiBmdW5jdGlvbiBPcGVyYXRpb25EZWZpbml0aW9uKG5vZGUpIHtcbiAgICB2YXIgb3AgPSBub2RlLm9wZXJhdGlvbjtcbiAgICB2YXIgbmFtZSA9IG5vZGUubmFtZTtcbiAgICB2YXIgdmFyRGVmcyA9IHdyYXAoJygnLCBqb2luKG5vZGUudmFyaWFibGVEZWZpbml0aW9ucywgJywgJyksICcpJyk7XG4gICAgdmFyIGRpcmVjdGl2ZXMgPSBqb2luKG5vZGUuZGlyZWN0aXZlcywgJyAnKTtcbiAgICB2YXIgc2VsZWN0aW9uU2V0ID0gbm9kZS5zZWxlY3Rpb25TZXQ7IC8vIEFub255bW91cyBxdWVyaWVzIHdpdGggbm8gZGlyZWN0aXZlcyBvciB2YXJpYWJsZSBkZWZpbml0aW9ucyBjYW4gdXNlXG4gICAgLy8gdGhlIHF1ZXJ5IHNob3J0IGZvcm0uXG5cbiAgICByZXR1cm4gIW5hbWUgJiYgIWRpcmVjdGl2ZXMgJiYgIXZhckRlZnMgJiYgb3AgPT09ICdxdWVyeScgPyBzZWxlY3Rpb25TZXQgOiBqb2luKFtvcCwgam9pbihbbmFtZSwgdmFyRGVmc10pLCBkaXJlY3RpdmVzLCBzZWxlY3Rpb25TZXRdLCAnICcpO1xuICB9LFxuICBWYXJpYWJsZURlZmluaXRpb246IGZ1bmN0aW9uIFZhcmlhYmxlRGVmaW5pdGlvbihfcmVmKSB7XG4gICAgdmFyIHZhcmlhYmxlID0gX3JlZi52YXJpYWJsZSxcbiAgICAgICAgdHlwZSA9IF9yZWYudHlwZSxcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gX3JlZi5kZWZhdWx0VmFsdWUsXG4gICAgICAgIGRpcmVjdGl2ZXMgPSBfcmVmLmRpcmVjdGl2ZXM7XG4gICAgcmV0dXJuIHZhcmlhYmxlICsgJzogJyArIHR5cGUgKyB3cmFwKCcgPSAnLCBkZWZhdWx0VmFsdWUpICsgd3JhcCgnICcsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSk7XG4gIH0sXG4gIFNlbGVjdGlvblNldDogZnVuY3Rpb24gU2VsZWN0aW9uU2V0KF9yZWYyKSB7XG4gICAgdmFyIHNlbGVjdGlvbnMgPSBfcmVmMi5zZWxlY3Rpb25zO1xuICAgIHJldHVybiBibG9jayhzZWxlY3Rpb25zKTtcbiAgfSxcbiAgRmllbGQ6IGZ1bmN0aW9uIEZpZWxkKF9yZWYzKSB7XG4gICAgdmFyIGFsaWFzID0gX3JlZjMuYWxpYXMsXG4gICAgICAgIG5hbWUgPSBfcmVmMy5uYW1lLFxuICAgICAgICBhcmdzID0gX3JlZjMuYXJndW1lbnRzLFxuICAgICAgICBkaXJlY3RpdmVzID0gX3JlZjMuZGlyZWN0aXZlcyxcbiAgICAgICAgc2VsZWN0aW9uU2V0ID0gX3JlZjMuc2VsZWN0aW9uU2V0O1xuICAgIHZhciBwcmVmaXggPSB3cmFwKCcnLCBhbGlhcywgJzogJykgKyBuYW1lO1xuICAgIHZhciBhcmdzTGluZSA9IHByZWZpeCArIHdyYXAoJygnLCBqb2luKGFyZ3MsICcsICcpLCAnKScpO1xuXG4gICAgaWYgKGFyZ3NMaW5lLmxlbmd0aCA+IE1BWF9MSU5FX0xFTkdUSCkge1xuICAgICAgYXJnc0xpbmUgPSBwcmVmaXggKyB3cmFwKCcoXFxuJywgaW5kZW50KGpvaW4oYXJncywgJ1xcbicpKSwgJ1xcbiknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gam9pbihbYXJnc0xpbmUsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgc2VsZWN0aW9uU2V0XSwgJyAnKTtcbiAgfSxcbiAgQXJndW1lbnQ6IGZ1bmN0aW9uIEFyZ3VtZW50KF9yZWY0KSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmNC5uYW1lLFxuICAgICAgICB2YWx1ZSA9IF9yZWY0LnZhbHVlO1xuICAgIHJldHVybiBuYW1lICsgJzogJyArIHZhbHVlO1xuICB9LFxuICAvLyBGcmFnbWVudHNcbiAgRnJhZ21lbnRTcHJlYWQ6IGZ1bmN0aW9uIEZyYWdtZW50U3ByZWFkKF9yZWY1KSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmNS5uYW1lLFxuICAgICAgICBkaXJlY3RpdmVzID0gX3JlZjUuZGlyZWN0aXZlcztcbiAgICByZXR1cm4gJy4uLicgKyBuYW1lICsgd3JhcCgnICcsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSk7XG4gIH0sXG4gIElubGluZUZyYWdtZW50OiBmdW5jdGlvbiBJbmxpbmVGcmFnbWVudChfcmVmNikge1xuICAgIHZhciB0eXBlQ29uZGl0aW9uID0gX3JlZjYudHlwZUNvbmRpdGlvbixcbiAgICAgICAgZGlyZWN0aXZlcyA9IF9yZWY2LmRpcmVjdGl2ZXMsXG4gICAgICAgIHNlbGVjdGlvblNldCA9IF9yZWY2LnNlbGVjdGlvblNldDtcbiAgICByZXR1cm4gam9pbihbJy4uLicsIHdyYXAoJ29uICcsIHR5cGVDb25kaXRpb24pLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksIHNlbGVjdGlvblNldF0sICcgJyk7XG4gIH0sXG4gIEZyYWdtZW50RGVmaW5pdGlvbjogZnVuY3Rpb24gRnJhZ21lbnREZWZpbml0aW9uKF9yZWY3KSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmNy5uYW1lLFxuICAgICAgICB0eXBlQ29uZGl0aW9uID0gX3JlZjcudHlwZUNvbmRpdGlvbixcbiAgICAgICAgdmFyaWFibGVEZWZpbml0aW9ucyA9IF9yZWY3LnZhcmlhYmxlRGVmaW5pdGlvbnMsXG4gICAgICAgIGRpcmVjdGl2ZXMgPSBfcmVmNy5kaXJlY3RpdmVzLFxuICAgICAgICBzZWxlY3Rpb25TZXQgPSBfcmVmNy5zZWxlY3Rpb25TZXQ7XG4gICAgcmV0dXJuICgvLyBOb3RlOiBmcmFnbWVudCB2YXJpYWJsZSBkZWZpbml0aW9ucyBhcmUgZXhwZXJpbWVudGFsIGFuZCBtYXkgYmUgY2hhbmdlZFxuICAgICAgLy8gb3IgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLlxuICAgICAgXCJmcmFnbWVudCBcIi5jb25jYXQobmFtZSkuY29uY2F0KHdyYXAoJygnLCBqb2luKHZhcmlhYmxlRGVmaW5pdGlvbnMsICcsICcpLCAnKScpLCBcIiBcIikgKyBcIm9uIFwiLmNvbmNhdCh0eXBlQ29uZGl0aW9uLCBcIiBcIikuY29uY2F0KHdyYXAoJycsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgJyAnKSkgKyBzZWxlY3Rpb25TZXRcbiAgICApO1xuICB9LFxuICAvLyBWYWx1ZVxuICBJbnRWYWx1ZTogZnVuY3Rpb24gSW50VmFsdWUoX3JlZjgpIHtcbiAgICB2YXIgdmFsdWUgPSBfcmVmOC52YWx1ZTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG4gIEZsb2F0VmFsdWU6IGZ1bmN0aW9uIEZsb2F0VmFsdWUoX3JlZjkpIHtcbiAgICB2YXIgdmFsdWUgPSBfcmVmOS52YWx1ZTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG4gIFN0cmluZ1ZhbHVlOiBmdW5jdGlvbiBTdHJpbmdWYWx1ZShfcmVmMTAsIGtleSkge1xuICAgIHZhciB2YWx1ZSA9IF9yZWYxMC52YWx1ZSxcbiAgICAgICAgaXNCbG9ja1N0cmluZyA9IF9yZWYxMC5ibG9jaztcbiAgICByZXR1cm4gaXNCbG9ja1N0cmluZyA/IHByaW50QmxvY2tTdHJpbmcodmFsdWUsIGtleSA9PT0gJ2Rlc2NyaXB0aW9uJyA/ICcnIDogJyAgJykgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gIH0sXG4gIEJvb2xlYW5WYWx1ZTogZnVuY3Rpb24gQm9vbGVhblZhbHVlKF9yZWYxMSkge1xuICAgIHZhciB2YWx1ZSA9IF9yZWYxMS52YWx1ZTtcbiAgICByZXR1cm4gdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICB9LFxuICBOdWxsVmFsdWU6IGZ1bmN0aW9uIE51bGxWYWx1ZSgpIHtcbiAgICByZXR1cm4gJ251bGwnO1xuICB9LFxuICBFbnVtVmFsdWU6IGZ1bmN0aW9uIEVudW1WYWx1ZShfcmVmMTIpIHtcbiAgICB2YXIgdmFsdWUgPSBfcmVmMTIudmFsdWU7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuICBMaXN0VmFsdWU6IGZ1bmN0aW9uIExpc3RWYWx1ZShfcmVmMTMpIHtcbiAgICB2YXIgdmFsdWVzID0gX3JlZjEzLnZhbHVlcztcbiAgICByZXR1cm4gJ1snICsgam9pbih2YWx1ZXMsICcsICcpICsgJ10nO1xuICB9LFxuICBPYmplY3RWYWx1ZTogZnVuY3Rpb24gT2JqZWN0VmFsdWUoX3JlZjE0KSB7XG4gICAgdmFyIGZpZWxkcyA9IF9yZWYxNC5maWVsZHM7XG4gICAgcmV0dXJuICd7JyArIGpvaW4oZmllbGRzLCAnLCAnKSArICd9JztcbiAgfSxcbiAgT2JqZWN0RmllbGQ6IGZ1bmN0aW9uIE9iamVjdEZpZWxkKF9yZWYxNSkge1xuICAgIHZhciBuYW1lID0gX3JlZjE1Lm5hbWUsXG4gICAgICAgIHZhbHVlID0gX3JlZjE1LnZhbHVlO1xuICAgIHJldHVybiBuYW1lICsgJzogJyArIHZhbHVlO1xuICB9LFxuICAvLyBEaXJlY3RpdmVcbiAgRGlyZWN0aXZlOiBmdW5jdGlvbiBEaXJlY3RpdmUoX3JlZjE2KSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmMTYubmFtZSxcbiAgICAgICAgYXJncyA9IF9yZWYxNi5hcmd1bWVudHM7XG4gICAgcmV0dXJuICdAJyArIG5hbWUgKyB3cmFwKCcoJywgam9pbihhcmdzLCAnLCAnKSwgJyknKTtcbiAgfSxcbiAgLy8gVHlwZVxuICBOYW1lZFR5cGU6IGZ1bmN0aW9uIE5hbWVkVHlwZShfcmVmMTcpIHtcbiAgICB2YXIgbmFtZSA9IF9yZWYxNy5uYW1lO1xuICAgIHJldHVybiBuYW1lO1xuICB9LFxuICBMaXN0VHlwZTogZnVuY3Rpb24gTGlzdFR5cGUoX3JlZjE4KSB7XG4gICAgdmFyIHR5cGUgPSBfcmVmMTgudHlwZTtcbiAgICByZXR1cm4gJ1snICsgdHlwZSArICddJztcbiAgfSxcbiAgTm9uTnVsbFR5cGU6IGZ1bmN0aW9uIE5vbk51bGxUeXBlKF9yZWYxOSkge1xuICAgIHZhciB0eXBlID0gX3JlZjE5LnR5cGU7XG4gICAgcmV0dXJuIHR5cGUgKyAnISc7XG4gIH0sXG4gIC8vIFR5cGUgU3lzdGVtIERlZmluaXRpb25zXG4gIFNjaGVtYURlZmluaXRpb246IGFkZERlc2NyaXB0aW9uKGZ1bmN0aW9uIChfcmVmMjApIHtcbiAgICB2YXIgZGlyZWN0aXZlcyA9IF9yZWYyMC5kaXJlY3RpdmVzLFxuICAgICAgICBvcGVyYXRpb25UeXBlcyA9IF9yZWYyMC5vcGVyYXRpb25UeXBlcztcbiAgICByZXR1cm4gam9pbihbJ3NjaGVtYScsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgYmxvY2sob3BlcmF0aW9uVHlwZXMpXSwgJyAnKTtcbiAgfSksXG4gIE9wZXJhdGlvblR5cGVEZWZpbml0aW9uOiBmdW5jdGlvbiBPcGVyYXRpb25UeXBlRGVmaW5pdGlvbihfcmVmMjEpIHtcbiAgICB2YXIgb3BlcmF0aW9uID0gX3JlZjIxLm9wZXJhdGlvbixcbiAgICAgICAgdHlwZSA9IF9yZWYyMS50eXBlO1xuICAgIHJldHVybiBvcGVyYXRpb24gKyAnOiAnICsgdHlwZTtcbiAgfSxcbiAgU2NhbGFyVHlwZURlZmluaXRpb246IGFkZERlc2NyaXB0aW9uKGZ1bmN0aW9uIChfcmVmMjIpIHtcbiAgICB2YXIgbmFtZSA9IF9yZWYyMi5uYW1lLFxuICAgICAgICBkaXJlY3RpdmVzID0gX3JlZjIyLmRpcmVjdGl2ZXM7XG4gICAgcmV0dXJuIGpvaW4oWydzY2FsYXInLCBuYW1lLCBqb2luKGRpcmVjdGl2ZXMsICcgJyldLCAnICcpO1xuICB9KSxcbiAgT2JqZWN0VHlwZURlZmluaXRpb246IGFkZERlc2NyaXB0aW9uKGZ1bmN0aW9uIChfcmVmMjMpIHtcbiAgICB2YXIgbmFtZSA9IF9yZWYyMy5uYW1lLFxuICAgICAgICBpbnRlcmZhY2VzID0gX3JlZjIzLmludGVyZmFjZXMsXG4gICAgICAgIGRpcmVjdGl2ZXMgPSBfcmVmMjMuZGlyZWN0aXZlcyxcbiAgICAgICAgZmllbGRzID0gX3JlZjIzLmZpZWxkcztcbiAgICByZXR1cm4gam9pbihbJ3R5cGUnLCBuYW1lLCB3cmFwKCdpbXBsZW1lbnRzICcsIGpvaW4oaW50ZXJmYWNlcywgJyAmICcpKSwgam9pbihkaXJlY3RpdmVzLCAnICcpLCBibG9jayhmaWVsZHMpXSwgJyAnKTtcbiAgfSksXG4gIEZpZWxkRGVmaW5pdGlvbjogYWRkRGVzY3JpcHRpb24oZnVuY3Rpb24gKF9yZWYyNCkge1xuICAgIHZhciBuYW1lID0gX3JlZjI0Lm5hbWUsXG4gICAgICAgIGFyZ3MgPSBfcmVmMjQuYXJndW1lbnRzLFxuICAgICAgICB0eXBlID0gX3JlZjI0LnR5cGUsXG4gICAgICAgIGRpcmVjdGl2ZXMgPSBfcmVmMjQuZGlyZWN0aXZlcztcbiAgICByZXR1cm4gbmFtZSArIChoYXNNdWx0aWxpbmVJdGVtcyhhcmdzKSA/IHdyYXAoJyhcXG4nLCBpbmRlbnQoam9pbihhcmdzLCAnXFxuJykpLCAnXFxuKScpIDogd3JhcCgnKCcsIGpvaW4oYXJncywgJywgJyksICcpJykpICsgJzogJyArIHR5cGUgKyB3cmFwKCcgJywgam9pbihkaXJlY3RpdmVzLCAnICcpKTtcbiAgfSksXG4gIElucHV0VmFsdWVEZWZpbml0aW9uOiBhZGREZXNjcmlwdGlvbihmdW5jdGlvbiAoX3JlZjI1KSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmMjUubmFtZSxcbiAgICAgICAgdHlwZSA9IF9yZWYyNS50eXBlLFxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBfcmVmMjUuZGVmYXVsdFZhbHVlLFxuICAgICAgICBkaXJlY3RpdmVzID0gX3JlZjI1LmRpcmVjdGl2ZXM7XG4gICAgcmV0dXJuIGpvaW4oW25hbWUgKyAnOiAnICsgdHlwZSwgd3JhcCgnPSAnLCBkZWZhdWx0VmFsdWUpLCBqb2luKGRpcmVjdGl2ZXMsICcgJyldLCAnICcpO1xuICB9KSxcbiAgSW50ZXJmYWNlVHlwZURlZmluaXRpb246IGFkZERlc2NyaXB0aW9uKGZ1bmN0aW9uIChfcmVmMjYpIHtcbiAgICB2YXIgbmFtZSA9IF9yZWYyNi5uYW1lLFxuICAgICAgICBpbnRlcmZhY2VzID0gX3JlZjI2LmludGVyZmFjZXMsXG4gICAgICAgIGRpcmVjdGl2ZXMgPSBfcmVmMjYuZGlyZWN0aXZlcyxcbiAgICAgICAgZmllbGRzID0gX3JlZjI2LmZpZWxkcztcbiAgICByZXR1cm4gam9pbihbJ2ludGVyZmFjZScsIG5hbWUsIHdyYXAoJ2ltcGxlbWVudHMgJywgam9pbihpbnRlcmZhY2VzLCAnICYgJykpLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksIGJsb2NrKGZpZWxkcyldLCAnICcpO1xuICB9KSxcbiAgVW5pb25UeXBlRGVmaW5pdGlvbjogYWRkRGVzY3JpcHRpb24oZnVuY3Rpb24gKF9yZWYyNykge1xuICAgIHZhciBuYW1lID0gX3JlZjI3Lm5hbWUsXG4gICAgICAgIGRpcmVjdGl2ZXMgPSBfcmVmMjcuZGlyZWN0aXZlcyxcbiAgICAgICAgdHlwZXMgPSBfcmVmMjcudHlwZXM7XG4gICAgcmV0dXJuIGpvaW4oWyd1bmlvbicsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgdHlwZXMgJiYgdHlwZXMubGVuZ3RoICE9PSAwID8gJz0gJyArIGpvaW4odHlwZXMsICcgfCAnKSA6ICcnXSwgJyAnKTtcbiAgfSksXG4gIEVudW1UeXBlRGVmaW5pdGlvbjogYWRkRGVzY3JpcHRpb24oZnVuY3Rpb24gKF9yZWYyOCkge1xuICAgIHZhciBuYW1lID0gX3JlZjI4Lm5hbWUsXG4gICAgICAgIGRpcmVjdGl2ZXMgPSBfcmVmMjguZGlyZWN0aXZlcyxcbiAgICAgICAgdmFsdWVzID0gX3JlZjI4LnZhbHVlcztcbiAgICByZXR1cm4gam9pbihbJ2VudW0nLCBuYW1lLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksIGJsb2NrKHZhbHVlcyldLCAnICcpO1xuICB9KSxcbiAgRW51bVZhbHVlRGVmaW5pdGlvbjogYWRkRGVzY3JpcHRpb24oZnVuY3Rpb24gKF9yZWYyOSkge1xuICAgIHZhciBuYW1lID0gX3JlZjI5Lm5hbWUsXG4gICAgICAgIGRpcmVjdGl2ZXMgPSBfcmVmMjkuZGlyZWN0aXZlcztcbiAgICByZXR1cm4gam9pbihbbmFtZSwgam9pbihkaXJlY3RpdmVzLCAnICcpXSwgJyAnKTtcbiAgfSksXG4gIElucHV0T2JqZWN0VHlwZURlZmluaXRpb246IGFkZERlc2NyaXB0aW9uKGZ1bmN0aW9uIChfcmVmMzApIHtcbiAgICB2YXIgbmFtZSA9IF9yZWYzMC5uYW1lLFxuICAgICAgICBkaXJlY3RpdmVzID0gX3JlZjMwLmRpcmVjdGl2ZXMsXG4gICAgICAgIGZpZWxkcyA9IF9yZWYzMC5maWVsZHM7XG4gICAgcmV0dXJuIGpvaW4oWydpbnB1dCcsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgYmxvY2soZmllbGRzKV0sICcgJyk7XG4gIH0pLFxuICBEaXJlY3RpdmVEZWZpbml0aW9uOiBhZGREZXNjcmlwdGlvbihmdW5jdGlvbiAoX3JlZjMxKSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmMzEubmFtZSxcbiAgICAgICAgYXJncyA9IF9yZWYzMS5hcmd1bWVudHMsXG4gICAgICAgIHJlcGVhdGFibGUgPSBfcmVmMzEucmVwZWF0YWJsZSxcbiAgICAgICAgbG9jYXRpb25zID0gX3JlZjMxLmxvY2F0aW9ucztcbiAgICByZXR1cm4gJ2RpcmVjdGl2ZSBAJyArIG5hbWUgKyAoaGFzTXVsdGlsaW5lSXRlbXMoYXJncykgPyB3cmFwKCcoXFxuJywgaW5kZW50KGpvaW4oYXJncywgJ1xcbicpKSwgJ1xcbiknKSA6IHdyYXAoJygnLCBqb2luKGFyZ3MsICcsICcpLCAnKScpKSArIChyZXBlYXRhYmxlID8gJyByZXBlYXRhYmxlJyA6ICcnKSArICcgb24gJyArIGpvaW4obG9jYXRpb25zLCAnIHwgJyk7XG4gIH0pLFxuICBTY2hlbWFFeHRlbnNpb246IGZ1bmN0aW9uIFNjaGVtYUV4dGVuc2lvbihfcmVmMzIpIHtcbiAgICB2YXIgZGlyZWN0aXZlcyA9IF9yZWYzMi5kaXJlY3RpdmVzLFxuICAgICAgICBvcGVyYXRpb25UeXBlcyA9IF9yZWYzMi5vcGVyYXRpb25UeXBlcztcbiAgICByZXR1cm4gam9pbihbJ2V4dGVuZCBzY2hlbWEnLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksIGJsb2NrKG9wZXJhdGlvblR5cGVzKV0sICcgJyk7XG4gIH0sXG4gIFNjYWxhclR5cGVFeHRlbnNpb246IGZ1bmN0aW9uIFNjYWxhclR5cGVFeHRlbnNpb24oX3JlZjMzKSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmMzMubmFtZSxcbiAgICAgICAgZGlyZWN0aXZlcyA9IF9yZWYzMy5kaXJlY3RpdmVzO1xuICAgIHJldHVybiBqb2luKFsnZXh0ZW5kIHNjYWxhcicsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgJyAnKV0sICcgJyk7XG4gIH0sXG4gIE9iamVjdFR5cGVFeHRlbnNpb246IGZ1bmN0aW9uIE9iamVjdFR5cGVFeHRlbnNpb24oX3JlZjM0KSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmMzQubmFtZSxcbiAgICAgICAgaW50ZXJmYWNlcyA9IF9yZWYzNC5pbnRlcmZhY2VzLFxuICAgICAgICBkaXJlY3RpdmVzID0gX3JlZjM0LmRpcmVjdGl2ZXMsXG4gICAgICAgIGZpZWxkcyA9IF9yZWYzNC5maWVsZHM7XG4gICAgcmV0dXJuIGpvaW4oWydleHRlbmQgdHlwZScsIG5hbWUsIHdyYXAoJ2ltcGxlbWVudHMgJywgam9pbihpbnRlcmZhY2VzLCAnICYgJykpLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksIGJsb2NrKGZpZWxkcyldLCAnICcpO1xuICB9LFxuICBJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uOiBmdW5jdGlvbiBJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uKF9yZWYzNSkge1xuICAgIHZhciBuYW1lID0gX3JlZjM1Lm5hbWUsXG4gICAgICAgIGludGVyZmFjZXMgPSBfcmVmMzUuaW50ZXJmYWNlcyxcbiAgICAgICAgZGlyZWN0aXZlcyA9IF9yZWYzNS5kaXJlY3RpdmVzLFxuICAgICAgICBmaWVsZHMgPSBfcmVmMzUuZmllbGRzO1xuICAgIHJldHVybiBqb2luKFsnZXh0ZW5kIGludGVyZmFjZScsIG5hbWUsIHdyYXAoJ2ltcGxlbWVudHMgJywgam9pbihpbnRlcmZhY2VzLCAnICYgJykpLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksIGJsb2NrKGZpZWxkcyldLCAnICcpO1xuICB9LFxuICBVbmlvblR5cGVFeHRlbnNpb246IGZ1bmN0aW9uIFVuaW9uVHlwZUV4dGVuc2lvbihfcmVmMzYpIHtcbiAgICB2YXIgbmFtZSA9IF9yZWYzNi5uYW1lLFxuICAgICAgICBkaXJlY3RpdmVzID0gX3JlZjM2LmRpcmVjdGl2ZXMsXG4gICAgICAgIHR5cGVzID0gX3JlZjM2LnR5cGVzO1xuICAgIHJldHVybiBqb2luKFsnZXh0ZW5kIHVuaW9uJywgbmFtZSwgam9pbihkaXJlY3RpdmVzLCAnICcpLCB0eXBlcyAmJiB0eXBlcy5sZW5ndGggIT09IDAgPyAnPSAnICsgam9pbih0eXBlcywgJyB8ICcpIDogJyddLCAnICcpO1xuICB9LFxuICBFbnVtVHlwZUV4dGVuc2lvbjogZnVuY3Rpb24gRW51bVR5cGVFeHRlbnNpb24oX3JlZjM3KSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmMzcubmFtZSxcbiAgICAgICAgZGlyZWN0aXZlcyA9IF9yZWYzNy5kaXJlY3RpdmVzLFxuICAgICAgICB2YWx1ZXMgPSBfcmVmMzcudmFsdWVzO1xuICAgIHJldHVybiBqb2luKFsnZXh0ZW5kIGVudW0nLCBuYW1lLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksIGJsb2NrKHZhbHVlcyldLCAnICcpO1xuICB9LFxuICBJbnB1dE9iamVjdFR5cGVFeHRlbnNpb246IGZ1bmN0aW9uIElucHV0T2JqZWN0VHlwZUV4dGVuc2lvbihfcmVmMzgpIHtcbiAgICB2YXIgbmFtZSA9IF9yZWYzOC5uYW1lLFxuICAgICAgICBkaXJlY3RpdmVzID0gX3JlZjM4LmRpcmVjdGl2ZXMsXG4gICAgICAgIGZpZWxkcyA9IF9yZWYzOC5maWVsZHM7XG4gICAgcmV0dXJuIGpvaW4oWydleHRlbmQgaW5wdXQnLCBuYW1lLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksIGJsb2NrKGZpZWxkcyldLCAnICcpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBhZGREZXNjcmlwdGlvbihjYikge1xuICByZXR1cm4gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gam9pbihbbm9kZS5kZXNjcmlwdGlvbiwgY2Iobm9kZSldLCAnXFxuJyk7XG4gIH07XG59XG4vKipcbiAqIEdpdmVuIG1heWJlQXJyYXksIHByaW50IGFuIGVtcHR5IHN0cmluZyBpZiBpdCBpcyBudWxsIG9yIGVtcHR5LCBvdGhlcndpc2VcbiAqIHByaW50IGFsbCBpdGVtcyB0b2dldGhlciBzZXBhcmF0ZWQgYnkgc2VwYXJhdG9yIGlmIHByb3ZpZGVkXG4gKi9cblxuXG5mdW5jdGlvbiBqb2luKG1heWJlQXJyYXkpIHtcbiAgdmFyIF9tYXliZUFycmF5JGZpbHRlciRqbztcblxuICB2YXIgc2VwYXJhdG9yID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAnJztcbiAgcmV0dXJuIChfbWF5YmVBcnJheSRmaWx0ZXIkam8gPSBtYXliZUFycmF5ID09PSBudWxsIHx8IG1heWJlQXJyYXkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1heWJlQXJyYXkuZmlsdGVyKGZ1bmN0aW9uICh4KSB7XG4gICAgcmV0dXJuIHg7XG4gIH0pLmpvaW4oc2VwYXJhdG9yKSkgIT09IG51bGwgJiYgX21heWJlQXJyYXkkZmlsdGVyJGpvICE9PSB2b2lkIDAgPyBfbWF5YmVBcnJheSRmaWx0ZXIkam8gOiAnJztcbn1cbi8qKlxuICogR2l2ZW4gYXJyYXksIHByaW50IGVhY2ggaXRlbSBvbiBpdHMgb3duIGxpbmUsIHdyYXBwZWQgaW4gYW5cbiAqIGluZGVudGVkIFwieyB9XCIgYmxvY2suXG4gKi9cblxuXG5mdW5jdGlvbiBibG9jayhhcnJheSkge1xuICByZXR1cm4gd3JhcCgne1xcbicsIGluZGVudChqb2luKGFycmF5LCAnXFxuJykpLCAnXFxufScpO1xufVxuLyoqXG4gKiBJZiBtYXliZVN0cmluZyBpcyBub3QgbnVsbCBvciBlbXB0eSwgdGhlbiB3cmFwIHdpdGggc3RhcnQgYW5kIGVuZCwgb3RoZXJ3aXNlIHByaW50IGFuIGVtcHR5IHN0cmluZy5cbiAqL1xuXG5cbmZ1bmN0aW9uIHdyYXAoc3RhcnQsIG1heWJlU3RyaW5nKSB7XG4gIHZhciBlbmQgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6ICcnO1xuICByZXR1cm4gbWF5YmVTdHJpbmcgIT0gbnVsbCAmJiBtYXliZVN0cmluZyAhPT0gJycgPyBzdGFydCArIG1heWJlU3RyaW5nICsgZW5kIDogJyc7XG59XG5cbmZ1bmN0aW9uIGluZGVudChzdHIpIHtcbiAgcmV0dXJuIHdyYXAoJyAgJywgc3RyLnJlcGxhY2UoL1xcbi9nLCAnXFxuICAnKSk7XG59XG5cbmZ1bmN0aW9uIGlzTXVsdGlsaW5lKHN0cikge1xuICByZXR1cm4gc3RyLmluZGV4T2YoJ1xcbicpICE9PSAtMTtcbn1cblxuZnVuY3Rpb24gaGFzTXVsdGlsaW5lSXRlbXMobWF5YmVBcnJheSkge1xuICByZXR1cm4gbWF5YmVBcnJheSAhPSBudWxsICYmIG1heWJlQXJyYXkuc29tZShpc011bHRpbGluZSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/printer.mjs\n");
825
826/***/ }),
827
828/***/ "../../../node_modules/graphql/language/source.mjs":
829/*!************************************************************************************!*\
830 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/language/source.mjs ***!
831 \************************************************************************************/
832/*! exports provided: Source, isSource */
833/***/ (function(module, __webpack_exports__, __webpack_require__) {
834
835"use strict";
836eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Source\", function() { return Source; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSource\", function() { return isSource; });\n/* harmony import */ var _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/symbols.mjs */ \"../../../node_modules/graphql/polyfills/symbols.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/instanceOf.mjs */ \"../../../node_modules/graphql/jsutils/instanceOf.mjs\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nvar Source = /*#__PURE__*/function () {\n function Source(body) {\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'GraphQL request';\n var locationOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n line: 1,\n column: 1\n };\n typeof body === 'string' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(0, \"Body must be a string. Received: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(body), \".\"));\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(0, 'line in locationOffset is 1-indexed and must be positive.');\n this.locationOffset.column > 0 || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(0, 'column in locationOffset is 1-indexed and must be positive.');\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n\n _createClass(Source, [{\n key: _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_0__[\"SYMBOL_TO_STRING_TAG\"],\n get: function get() {\n return 'Source';\n }\n }]);\n\n return Source;\n}();\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\n// eslint-disable-next-line no-redeclare\nfunction isSource(source) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(source, Source);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2Uvc291cmNlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL3NvdXJjZS5tanM/Mzc5MCJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmltcG9ydCB7IFNZTUJPTF9UT19TVFJJTkdfVEFHIH0gZnJvbSBcIi4uL3BvbHlmaWxscy9zeW1ib2xzLm1qc1wiO1xuaW1wb3J0IGluc3BlY3QgZnJvbSBcIi4uL2pzdXRpbHMvaW5zcGVjdC5tanNcIjtcbmltcG9ydCBkZXZBc3NlcnQgZnJvbSBcIi4uL2pzdXRpbHMvZGV2QXNzZXJ0Lm1qc1wiO1xuaW1wb3J0IGluc3RhbmNlT2YgZnJvbSBcIi4uL2pzdXRpbHMvaW5zdGFuY2VPZi5tanNcIjtcblxuLyoqXG4gKiBBIHJlcHJlc2VudGF0aW9uIG9mIHNvdXJjZSBpbnB1dCB0byBHcmFwaFFMLiBUaGUgYG5hbWVgIGFuZCBgbG9jYXRpb25PZmZzZXRgIHBhcmFtZXRlcnMgYXJlXG4gKiBvcHRpb25hbCwgYnV0IHRoZXkgYXJlIHVzZWZ1bCBmb3IgY2xpZW50cyB3aG8gc3RvcmUgR3JhcGhRTCBkb2N1bWVudHMgaW4gc291cmNlIGZpbGVzLlxuICogRm9yIGV4YW1wbGUsIGlmIHRoZSBHcmFwaFFMIGlucHV0IHN0YXJ0cyBhdCBsaW5lIDQwIGluIGEgZmlsZSBuYW1lZCBgRm9vLmdyYXBocWxgLCBpdCBtaWdodFxuICogYmUgdXNlZnVsIGZvciBgbmFtZWAgdG8gYmUgYFwiRm9vLmdyYXBocWxcImAgYW5kIGxvY2F0aW9uIHRvIGJlIGB7IGxpbmU6IDQwLCBjb2x1bW46IDEgfWAuXG4gKiBUaGUgYGxpbmVgIGFuZCBgY29sdW1uYCBwcm9wZXJ0aWVzIGluIGBsb2NhdGlvbk9mZnNldGAgYXJlIDEtaW5kZXhlZC5cbiAqL1xuZXhwb3J0IHZhciBTb3VyY2UgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTb3VyY2UoYm9keSkge1xuICAgIHZhciBuYW1lID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAnR3JhcGhRTCByZXF1ZXN0JztcbiAgICB2YXIgbG9jYXRpb25PZmZzZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHtcbiAgICAgIGxpbmU6IDEsXG4gICAgICBjb2x1bW46IDFcbiAgICB9O1xuICAgIHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJyB8fCBkZXZBc3NlcnQoMCwgXCJCb2R5IG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkOiBcIi5jb25jYXQoaW5zcGVjdChib2R5KSwgXCIuXCIpKTtcbiAgICB0aGlzLmJvZHkgPSBib2R5O1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5sb2NhdGlvbk9mZnNldCA9IGxvY2F0aW9uT2Zmc2V0O1xuICAgIHRoaXMubG9jYXRpb25PZmZzZXQubGluZSA+IDAgfHwgZGV2QXNzZXJ0KDAsICdsaW5lIGluIGxvY2F0aW9uT2Zmc2V0IGlzIDEtaW5kZXhlZCBhbmQgbXVzdCBiZSBwb3NpdGl2ZS4nKTtcbiAgICB0aGlzLmxvY2F0aW9uT2Zmc2V0LmNvbHVtbiA+IDAgfHwgZGV2QXNzZXJ0KDAsICdjb2x1bW4gaW4gbG9jYXRpb25PZmZzZXQgaXMgMS1pbmRleGVkIGFuZCBtdXN0IGJlIHBvc2l0aXZlLicpO1xuICB9IC8vICRGbG93Rml4TWVbdW5zdXBwb3J0ZWQtc3ludGF4XSBGbG93IGRvZXNuJ3Qgc3VwcG9ydCBjb21wdXRlZCBwcm9wZXJ0aWVzIHlldFxuXG5cbiAgX2NyZWF0ZUNsYXNzKFNvdXJjZSwgW3tcbiAgICBrZXk6IFNZTUJPTF9UT19TVFJJTkdfVEFHLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuICdTb3VyY2UnO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTb3VyY2U7XG59KCk7XG4vKipcbiAqIFRlc3QgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgU291cmNlIG9iamVjdC5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVkZWNsYXJlXG5leHBvcnQgZnVuY3Rpb24gaXNTb3VyY2Uoc291cmNlKSB7XG4gIHJldHVybiBpbnN0YW5jZU9mKHNvdXJjZSwgU291cmNlKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/source.mjs\n");
837
838/***/ }),
839
840/***/ "../../../node_modules/graphql/language/tokenKind.mjs":
841/*!***************************************************************************************!*\
842 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/language/tokenKind.mjs ***!
843 \***************************************************************************************/
844/*! exports provided: TokenKind */
845/***/ (function(module, __webpack_exports__, __webpack_require__) {
846
847"use strict";
848eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TokenKind\", function() { return TokenKind; });\n/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nvar TokenKind = Object.freeze({\n SOF: '<SOF>',\n EOF: '<EOF>',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvdG9rZW5LaW5kLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL3Rva2VuS2luZC5tanM/NDFkMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuIGV4cG9ydGVkIGVudW0gZGVzY3JpYmluZyB0aGUgZGlmZmVyZW50IGtpbmRzIG9mIHRva2VucyB0aGF0IHRoZVxuICogbGV4ZXIgZW1pdHMuXG4gKi9cbmV4cG9ydCB2YXIgVG9rZW5LaW5kID0gT2JqZWN0LmZyZWV6ZSh7XG4gIFNPRjogJzxTT0Y+JyxcbiAgRU9GOiAnPEVPRj4nLFxuICBCQU5HOiAnIScsXG4gIERPTExBUjogJyQnLFxuICBBTVA6ICcmJyxcbiAgUEFSRU5fTDogJygnLFxuICBQQVJFTl9SOiAnKScsXG4gIFNQUkVBRDogJy4uLicsXG4gIENPTE9OOiAnOicsXG4gIEVRVUFMUzogJz0nLFxuICBBVDogJ0AnLFxuICBCUkFDS0VUX0w6ICdbJyxcbiAgQlJBQ0tFVF9SOiAnXScsXG4gIEJSQUNFX0w6ICd7JyxcbiAgUElQRTogJ3wnLFxuICBCUkFDRV9SOiAnfScsXG4gIE5BTUU6ICdOYW1lJyxcbiAgSU5UOiAnSW50JyxcbiAgRkxPQVQ6ICdGbG9hdCcsXG4gIFNUUklORzogJ1N0cmluZycsXG4gIEJMT0NLX1NUUklORzogJ0Jsb2NrU3RyaW5nJyxcbiAgQ09NTUVOVDogJ0NvbW1lbnQnXG59KTtcbi8qKlxuICogVGhlIGVudW0gdHlwZSByZXByZXNlbnRpbmcgdGhlIHRva2VuIGtpbmRzIHZhbHVlcy5cbiAqL1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/tokenKind.mjs\n");
849
850/***/ }),
851
852/***/ "../../../node_modules/graphql/language/visitor.mjs":
853/*!*************************************************************************************!*\
854 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/language/visitor.mjs ***!
855 \*************************************************************************************/
856/*! exports provided: QueryDocumentKeys, BREAK, visit, visitInParallel, getVisitFn */
857/***/ (function(module, __webpack_exports__, __webpack_require__) {
858
859"use strict";
860eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"QueryDocumentKeys\", function() { return QueryDocumentKeys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BREAK\", function() { return BREAK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"visit\", function() { return visit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"visitInParallel\", function() { return visitInParallel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getVisitFn\", function() { return getVisitFn; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _ast_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n\n\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nvar QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nvar BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nfunction visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n /* eslint-disable no-undef-init */\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n clone[k] = node[k];\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!Object(_ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isNode\"])(node)) {\n throw new Error(\"Invalid AST Node: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node), \".\"));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (Object(_ast_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isNode\"])(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _visitorKeys$node$kin;\n\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : (_visitorKeys$node$kin = visitorKeys[node.kind]) !== null && _visitorKeys$node$kin !== void 0 ? _visitorKeys$node$kin : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nfunction visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\nfunction getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvdmlzaXRvci5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS92aXNpdG9yLm1qcz8yYTU1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnNwZWN0IGZyb20gXCIuLi9qc3V0aWxzL2luc3BlY3QubWpzXCI7XG5pbXBvcnQgeyBpc05vZGUgfSBmcm9tIFwiLi9hc3QubWpzXCI7XG4vKipcbiAqIEEgdmlzaXRvciBpcyBwcm92aWRlZCB0byB2aXNpdCwgaXQgY29udGFpbnMgdGhlIGNvbGxlY3Rpb24gb2ZcbiAqIHJlbGV2YW50IGZ1bmN0aW9ucyB0byBiZSBjYWxsZWQgZHVyaW5nIHRoZSB2aXNpdG9yJ3MgdHJhdmVyc2FsLlxuICovXG5cbmV4cG9ydCB2YXIgUXVlcnlEb2N1bWVudEtleXMgPSB7XG4gIE5hbWU6IFtdLFxuICBEb2N1bWVudDogWydkZWZpbml0aW9ucyddLFxuICBPcGVyYXRpb25EZWZpbml0aW9uOiBbJ25hbWUnLCAndmFyaWFibGVEZWZpbml0aW9ucycsICdkaXJlY3RpdmVzJywgJ3NlbGVjdGlvblNldCddLFxuICBWYXJpYWJsZURlZmluaXRpb246IFsndmFyaWFibGUnLCAndHlwZScsICdkZWZhdWx0VmFsdWUnLCAnZGlyZWN0aXZlcyddLFxuICBWYXJpYWJsZTogWyduYW1lJ10sXG4gIFNlbGVjdGlvblNldDogWydzZWxlY3Rpb25zJ10sXG4gIEZpZWxkOiBbJ2FsaWFzJywgJ25hbWUnLCAnYXJndW1lbnRzJywgJ2RpcmVjdGl2ZXMnLCAnc2VsZWN0aW9uU2V0J10sXG4gIEFyZ3VtZW50OiBbJ25hbWUnLCAndmFsdWUnXSxcbiAgRnJhZ21lbnRTcHJlYWQ6IFsnbmFtZScsICdkaXJlY3RpdmVzJ10sXG4gIElubGluZUZyYWdtZW50OiBbJ3R5cGVDb25kaXRpb24nLCAnZGlyZWN0aXZlcycsICdzZWxlY3Rpb25TZXQnXSxcbiAgRnJhZ21lbnREZWZpbml0aW9uOiBbJ25hbWUnLCAvLyBOb3RlOiBmcmFnbWVudCB2YXJpYWJsZSBkZWZpbml0aW9ucyBhcmUgZXhwZXJpbWVudGFsIGFuZCBtYXkgYmUgY2hhbmdlZFxuICAvLyBvciByZW1vdmVkIGluIHRoZSBmdXR1cmUuXG4gICd2YXJpYWJsZURlZmluaXRpb25zJywgJ3R5cGVDb25kaXRpb24nLCAnZGlyZWN0aXZlcycsICdzZWxlY3Rpb25TZXQnXSxcbiAgSW50VmFsdWU6IFtdLFxuICBGbG9hdFZhbHVlOiBbXSxcbiAgU3RyaW5nVmFsdWU6IFtdLFxuICBCb29sZWFuVmFsdWU6IFtdLFxuICBOdWxsVmFsdWU6IFtdLFxuICBFbnVtVmFsdWU6IFtdLFxuICBMaXN0VmFsdWU6IFsndmFsdWVzJ10sXG4gIE9iamVjdFZhbHVlOiBbJ2ZpZWxkcyddLFxuICBPYmplY3RGaWVsZDogWyduYW1lJywgJ3ZhbHVlJ10sXG4gIERpcmVjdGl2ZTogWyduYW1lJywgJ2FyZ3VtZW50cyddLFxuICBOYW1lZFR5cGU6IFsnbmFtZSddLFxuICBMaXN0VHlwZTogWyd0eXBlJ10sXG4gIE5vbk51bGxUeXBlOiBbJ3R5cGUnXSxcbiAgU2NoZW1hRGVmaW5pdGlvbjogWydkZXNjcmlwdGlvbicsICdkaXJlY3RpdmVzJywgJ29wZXJhdGlvblR5cGVzJ10sXG4gIE9wZXJhdGlvblR5cGVEZWZpbml0aW9uOiBbJ3R5cGUnXSxcbiAgU2NhbGFyVHlwZURlZmluaXRpb246IFsnZGVzY3JpcHRpb24nLCAnbmFtZScsICdkaXJlY3RpdmVzJ10sXG4gIE9iamVjdFR5cGVEZWZpbml0aW9uOiBbJ2Rlc2NyaXB0aW9uJywgJ25hbWUnLCAnaW50ZXJmYWNlcycsICdkaXJlY3RpdmVzJywgJ2ZpZWxkcyddLFxuICBGaWVsZERlZmluaXRpb246IFsnZGVzY3JpcHRpb24nLCAnbmFtZScsICdhcmd1bWVudHMnLCAndHlwZScsICdkaXJlY3RpdmVzJ10sXG4gIElucHV0VmFsdWVEZWZpbml0aW9uOiBbJ2Rlc2NyaXB0aW9uJywgJ25hbWUnLCAndHlwZScsICdkZWZhdWx0VmFsdWUnLCAnZGlyZWN0aXZlcyddLFxuICBJbnRlcmZhY2VUeXBlRGVmaW5pdGlvbjogWydkZXNjcmlwdGlvbicsICduYW1lJywgJ2ludGVyZmFjZXMnLCAnZGlyZWN0aXZlcycsICdmaWVsZHMnXSxcbiAgVW5pb25UeXBlRGVmaW5pdGlvbjogWydkZXNjcmlwdGlvbicsICduYW1lJywgJ2RpcmVjdGl2ZXMnLCAndHlwZXMnXSxcbiAgRW51bVR5cGVEZWZpbml0aW9uOiBbJ2Rlc2NyaXB0aW9uJywgJ25hbWUnLCAnZGlyZWN0aXZlcycsICd2YWx1ZXMnXSxcbiAgRW51bVZhbHVlRGVmaW5pdGlvbjogWydkZXNjcmlwdGlvbicsICduYW1lJywgJ2RpcmVjdGl2ZXMnXSxcbiAgSW5wdXRPYmplY3RUeXBlRGVmaW5pdGlvbjogWydkZXNjcmlwdGlvbicsICduYW1lJywgJ2RpcmVjdGl2ZXMnLCAnZmllbGRzJ10sXG4gIERpcmVjdGl2ZURlZmluaXRpb246IFsnZGVzY3JpcHRpb24nLCAnbmFtZScsICdhcmd1bWVudHMnLCAnbG9jYXRpb25zJ10sXG4gIFNjaGVtYUV4dGVuc2lvbjogWydkaXJlY3RpdmVzJywgJ29wZXJhdGlvblR5cGVzJ10sXG4gIFNjYWxhclR5cGVFeHRlbnNpb246IFsnbmFtZScsICdkaXJlY3RpdmVzJ10sXG4gIE9iamVjdFR5cGVFeHRlbnNpb246IFsnbmFtZScsICdpbnRlcmZhY2VzJywgJ2RpcmVjdGl2ZXMnLCAnZmllbGRzJ10sXG4gIEludGVyZmFjZVR5cGVFeHRlbnNpb246IFsnbmFtZScsICdpbnRlcmZhY2VzJywgJ2RpcmVjdGl2ZXMnLCAnZmllbGRzJ10sXG4gIFVuaW9uVHlwZUV4dGVuc2lvbjogWyduYW1lJywgJ2RpcmVjdGl2ZXMnLCAndHlwZXMnXSxcbiAgRW51bVR5cGVFeHRlbnNpb246IFsnbmFtZScsICdkaXJlY3RpdmVzJywgJ3ZhbHVlcyddLFxuICBJbnB1dE9iamVjdFR5cGVFeHRlbnNpb246IFsnbmFtZScsICdkaXJlY3RpdmVzJywgJ2ZpZWxkcyddXG59O1xuZXhwb3J0IHZhciBCUkVBSyA9IE9iamVjdC5mcmVlemUoe30pO1xuLyoqXG4gKiB2aXNpdCgpIHdpbGwgd2FsayB0aHJvdWdoIGFuIEFTVCB1c2luZyBhIGRlcHRoLWZpcnN0IHRyYXZlcnNhbCwgY2FsbGluZ1xuICogdGhlIHZpc2l0b3IncyBlbnRlciBmdW5jdGlvbiBhdCBlYWNoIG5vZGUgaW4gdGhlIHRyYXZlcnNhbCwgYW5kIGNhbGxpbmcgdGhlXG4gKiBsZWF2ZSBmdW5jdGlvbiBhZnRlciB2aXNpdGluZyB0aGF0IG5vZGUgYW5kIGFsbCBvZiBpdHMgY2hpbGQgbm9kZXMuXG4gKlxuICogQnkgcmV0dXJuaW5nIGRpZmZlcmVudCB2YWx1ZXMgZnJvbSB0aGUgZW50ZXIgYW5kIGxlYXZlIGZ1bmN0aW9ucywgdGhlXG4gKiBiZWhhdmlvciBvZiB0aGUgdmlzaXRvciBjYW4gYmUgYWx0ZXJlZCwgaW5jbHVkaW5nIHNraXBwaW5nIG92ZXIgYSBzdWItdHJlZSBvZlxuICogdGhlIEFTVCAoYnkgcmV0dXJuaW5nIGZhbHNlKSwgZWRpdGluZyB0aGUgQVNUIGJ5IHJldHVybmluZyBhIHZhbHVlIG9yIG51bGxcbiAqIHRvIHJlbW92ZSB0aGUgdmFsdWUsIG9yIHRvIHN0b3AgdGhlIHdob2xlIHRyYXZlcnNhbCBieSByZXR1cm5pbmcgQlJFQUsuXG4gKlxuICogV2hlbiB1c2luZyB2aXNpdCgpIHRvIGVkaXQgYW4gQVNULCB0aGUgb3JpZ2luYWwgQVNUIHdpbGwgbm90IGJlIG1vZGlmaWVkLCBhbmRcbiAqIGEgbmV3IHZlcnNpb24gb2YgdGhlIEFTVCB3aXRoIHRoZSBjaGFuZ2VzIGFwcGxpZWQgd2lsbCBiZSByZXR1cm5lZCBmcm9tIHRoZVxuICogdmlzaXQgZnVuY3Rpb24uXG4gKlxuICogICAgIGNvbnN0IGVkaXRlZEFTVCA9IHZpc2l0KGFzdCwge1xuICogICAgICAgZW50ZXIobm9kZSwga2V5LCBwYXJlbnQsIHBhdGgsIGFuY2VzdG9ycykge1xuICogICAgICAgICAvLyBAcmV0dXJuXG4gKiAgICAgICAgIC8vICAgdW5kZWZpbmVkOiBubyBhY3Rpb25cbiAqICAgICAgICAgLy8gICBmYWxzZTogc2tpcCB2aXNpdGluZyB0aGlzIG5vZGVcbiAqICAgICAgICAgLy8gICB2aXNpdG9yLkJSRUFLOiBzdG9wIHZpc2l0aW5nIGFsdG9nZXRoZXJcbiAqICAgICAgICAgLy8gICBudWxsOiBkZWxldGUgdGhpcyBub2RlXG4gKiAgICAgICAgIC8vICAgYW55IHZhbHVlOiByZXBsYWNlIHRoaXMgbm9kZSB3aXRoIHRoZSByZXR1cm5lZCB2YWx1ZVxuICogICAgICAgfSxcbiAqICAgICAgIGxlYXZlKG5vZGUsIGtleSwgcGFyZW50LCBwYXRoLCBhbmNlc3RvcnMpIHtcbiAqICAgICAgICAgLy8gQHJldHVyblxuICogICAgICAgICAvLyAgIHVuZGVmaW5lZDogbm8gYWN0aW9uXG4gKiAgICAgICAgIC8vICAgZmFsc2U6IG5vIGFjdGlvblxuICogICAgICAgICAvLyAgIHZpc2l0b3IuQlJFQUs6IHN0b3AgdmlzaXRpbmcgYWx0b2dldGhlclxuICogICAgICAgICAvLyAgIG51bGw6IGRlbGV0ZSB0aGlzIG5vZGVcbiAqICAgICAgICAgLy8gICBhbnkgdmFsdWU6IHJlcGxhY2UgdGhpcyBub2RlIHdpdGggdGhlIHJldHVybmVkIHZhbHVlXG4gKiAgICAgICB9XG4gKiAgICAgfSk7XG4gKlxuICogQWx0ZXJuYXRpdmVseSB0byBwcm92aWRpbmcgZW50ZXIoKSBhbmQgbGVhdmUoKSBmdW5jdGlvbnMsIGEgdmlzaXRvciBjYW5cbiAqIGluc3RlYWQgcHJvdmlkZSBmdW5jdGlvbnMgbmFtZWQgdGhlIHNhbWUgYXMgdGhlIGtpbmRzIG9mIEFTVCBub2Rlcywgb3JcbiAqIGVudGVyL2xlYXZlIHZpc2l0b3JzIGF0IGEgbmFtZWQga2V5LCBsZWFkaW5nIHRvIGZvdXIgcGVybXV0YXRpb25zIG9mIHRoZVxuICogdmlzaXRvciBBUEk6XG4gKlxuICogMSkgTmFtZWQgdmlzaXRvcnMgdHJpZ2dlcmVkIHdoZW4gZW50ZXJpbmcgYSBub2RlIG9mIGEgc3BlY2lmaWMga2luZC5cbiAqXG4gKiAgICAgdmlzaXQoYXN0LCB7XG4gKiAgICAgICBLaW5kKG5vZGUpIHtcbiAqICAgICAgICAgLy8gZW50ZXIgdGhlIFwiS2luZFwiIG5vZGVcbiAqICAgICAgIH1cbiAqICAgICB9KVxuICpcbiAqIDIpIE5hbWVkIHZpc2l0b3JzIHRoYXQgdHJpZ2dlciB1cG9uIGVudGVyaW5nIGFuZCBsZWF2aW5nIGEgbm9kZSBvZlxuICogICAgYSBzcGVjaWZpYyBraW5kLlxuICpcbiAqICAgICB2aXNpdChhc3QsIHtcbiAqICAgICAgIEtpbmQ6IHtcbiAqICAgICAgICAgZW50ZXIobm9kZSkge1xuICogICAgICAgICAgIC8vIGVudGVyIHRoZSBcIktpbmRcIiBub2RlXG4gKiAgICAgICAgIH1cbiAqICAgICAgICAgbGVhdmUobm9kZSkge1xuICogICAgICAgICAgIC8vIGxlYXZlIHRoZSBcIktpbmRcIiBub2RlXG4gKiAgICAgICAgIH1cbiAqICAgICAgIH1cbiAqICAgICB9KVxuICpcbiAqIDMpIEdlbmVyaWMgdmlzaXRvcnMgdGhhdCB0cmlnZ2VyIHVwb24gZW50ZXJpbmcgYW5kIGxlYXZpbmcgYW55IG5vZGUuXG4gKlxuICogICAgIHZpc2l0KGFzdCwge1xuICogICAgICAgZW50ZXIobm9kZSkge1xuICogICAgICAgICAvLyBlbnRlciBhbnkgbm9kZVxuICogICAgICAgfSxcbiAqICAgICAgIGxlYXZlKG5vZGUpIHtcbiAqICAgICAgICAgLy8gbGVhdmUgYW55IG5vZGVcbiAqICAgICAgIH1cbiAqICAgICB9KVxuICpcbiAqIDQpIFBhcmFsbGVsIHZpc2l0b3JzIGZvciBlbnRlcmluZyBhbmQgbGVhdmluZyBub2RlcyBvZiBhIHNwZWNpZmljIGtpbmQuXG4gKlxuICogICAgIHZpc2l0KGFzdCwge1xuICogICAgICAgZW50ZXI6IHtcbiAqICAgICAgICAgS2luZChub2RlKSB7XG4gKiAgICAgICAgICAgLy8gZW50ZXIgdGhlIFwiS2luZFwiIG5vZGVcbiAqICAgICAgICAgfVxuICogICAgICAgfSxcbiAqICAgICAgIGxlYXZlOiB7XG4gKiAgICAgICAgIEtpbmQobm9kZSkge1xuICogICAgICAgICAgIC8vIGxlYXZlIHRoZSBcIktpbmRcIiBub2RlXG4gKiAgICAgICAgIH1cbiAqICAgICAgIH1cbiAqICAgICB9KVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB2aXNpdChyb290LCB2aXNpdG9yKSB7XG4gIHZhciB2aXNpdG9yS2V5cyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogUXVlcnlEb2N1bWVudEtleXM7XG5cbiAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYtaW5pdCAqL1xuICB2YXIgc3RhY2sgPSB1bmRlZmluZWQ7XG4gIHZhciBpbkFycmF5ID0gQXJyYXkuaXNBcnJheShyb290KTtcbiAgdmFyIGtleXMgPSBbcm9vdF07XG4gIHZhciBpbmRleCA9IC0xO1xuICB2YXIgZWRpdHMgPSBbXTtcbiAgdmFyIG5vZGUgPSB1bmRlZmluZWQ7XG4gIHZhciBrZXkgPSB1bmRlZmluZWQ7XG4gIHZhciBwYXJlbnQgPSB1bmRlZmluZWQ7XG4gIHZhciBwYXRoID0gW107XG4gIHZhciBhbmNlc3RvcnMgPSBbXTtcbiAgdmFyIG5ld1Jvb3QgPSByb290O1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVuZGVmLWluaXQgKi9cblxuICBkbyB7XG4gICAgaW5kZXgrKztcbiAgICB2YXIgaXNMZWF2aW5nID0gaW5kZXggPT09IGtleXMubGVuZ3RoO1xuICAgIHZhciBpc0VkaXRlZCA9IGlzTGVhdmluZyAmJiBlZGl0cy5sZW5ndGggIT09IDA7XG5cbiAgICBpZiAoaXNMZWF2aW5nKSB7XG4gICAgICBrZXkgPSBhbmNlc3RvcnMubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICAgICAgbm9kZSA9IHBhcmVudDtcbiAgICAgIHBhcmVudCA9IGFuY2VzdG9ycy5wb3AoKTtcblxuICAgICAgaWYgKGlzRWRpdGVkKSB7XG4gICAgICAgIGlmIChpbkFycmF5KSB7XG4gICAgICAgICAgbm9kZSA9IG5vZGUuc2xpY2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgY2xvbmUgPSB7fTtcblxuICAgICAgICAgIGZvciAodmFyIF9pMiA9IDAsIF9PYmplY3Qka2V5czIgPSBPYmplY3Qua2V5cyhub2RlKTsgX2kyIDwgX09iamVjdCRrZXlzMi5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgICAgICB2YXIgayA9IF9PYmplY3Qka2V5czJbX2kyXTtcbiAgICAgICAgICAgIGNsb25lW2tdID0gbm9kZVtrXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBub2RlID0gY2xvbmU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZWRpdE9mZnNldCA9IDA7XG5cbiAgICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGVkaXRzLmxlbmd0aDsgaWkrKykge1xuICAgICAgICAgIHZhciBlZGl0S2V5ID0gZWRpdHNbaWldWzBdO1xuICAgICAgICAgIHZhciBlZGl0VmFsdWUgPSBlZGl0c1tpaV1bMV07XG5cbiAgICAgICAgICBpZiAoaW5BcnJheSkge1xuICAgICAgICAgICAgZWRpdEtleSAtPSBlZGl0T2Zmc2V0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpbkFycmF5ICYmIGVkaXRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgbm9kZS5zcGxpY2UoZWRpdEtleSwgMSk7XG4gICAgICAgICAgICBlZGl0T2Zmc2V0Kys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5vZGVbZWRpdEtleV0gPSBlZGl0VmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGluZGV4ID0gc3RhY2suaW5kZXg7XG4gICAgICBrZXlzID0gc3RhY2sua2V5cztcbiAgICAgIGVkaXRzID0gc3RhY2suZWRpdHM7XG4gICAgICBpbkFycmF5ID0gc3RhY2suaW5BcnJheTtcbiAgICAgIHN0YWNrID0gc3RhY2sucHJldjtcbiAgICB9IGVsc2Uge1xuICAgICAga2V5ID0gcGFyZW50ID8gaW5BcnJheSA/IGluZGV4IDoga2V5c1tpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICBub2RlID0gcGFyZW50ID8gcGFyZW50W2tleV0gOiBuZXdSb290O1xuXG4gICAgICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgcGF0aC5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlc3VsdCA9IHZvaWQgMDtcblxuICAgIGlmICghQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgICAgaWYgKCFpc05vZGUobm9kZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBBU1QgTm9kZTogXCIuY29uY2F0KGluc3BlY3Qobm9kZSksIFwiLlwiKSk7XG4gICAgICB9XG5cbiAgICAgIHZhciB2aXNpdEZuID0gZ2V0VmlzaXRGbih2aXNpdG9yLCBub2RlLmtpbmQsIGlzTGVhdmluZyk7XG5cbiAgICAgIGlmICh2aXNpdEZuKSB7XG4gICAgICAgIHJlc3VsdCA9IHZpc2l0Rm4uY2FsbCh2aXNpdG9yLCBub2RlLCBrZXksIHBhcmVudCwgcGF0aCwgYW5jZXN0b3JzKTtcblxuICAgICAgICBpZiAocmVzdWx0ID09PSBCUkVBSykge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBpZiAoIWlzTGVhdmluZykge1xuICAgICAgICAgICAgcGF0aC5wb3AoKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGVkaXRzLnB1c2goW2tleSwgcmVzdWx0XSk7XG5cbiAgICAgICAgICBpZiAoIWlzTGVhdmluZykge1xuICAgICAgICAgICAgaWYgKGlzTm9kZShyZXN1bHQpKSB7XG4gICAgICAgICAgICAgIG5vZGUgPSByZXN1bHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwYXRoLnBvcCgpO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQgJiYgaXNFZGl0ZWQpIHtcbiAgICAgIGVkaXRzLnB1c2goW2tleSwgbm9kZV0pO1xuICAgIH1cblxuICAgIGlmIChpc0xlYXZpbmcpIHtcbiAgICAgIHBhdGgucG9wKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfdmlzaXRvcktleXMkbm9kZSRraW47XG5cbiAgICAgIHN0YWNrID0ge1xuICAgICAgICBpbkFycmF5OiBpbkFycmF5LFxuICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgIGtleXM6IGtleXMsXG4gICAgICAgIGVkaXRzOiBlZGl0cyxcbiAgICAgICAgcHJldjogc3RhY2tcbiAgICAgIH07XG4gICAgICBpbkFycmF5ID0gQXJyYXkuaXNBcnJheShub2RlKTtcbiAgICAgIGtleXMgPSBpbkFycmF5ID8gbm9kZSA6IChfdmlzaXRvcktleXMkbm9kZSRraW4gPSB2aXNpdG9yS2V5c1tub2RlLmtpbmRdKSAhPT0gbnVsbCAmJiBfdmlzaXRvcktleXMkbm9kZSRraW4gIT09IHZvaWQgMCA/IF92aXNpdG9yS2V5cyRub2RlJGtpbiA6IFtdO1xuICAgICAgaW5kZXggPSAtMTtcbiAgICAgIGVkaXRzID0gW107XG5cbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgYW5jZXN0b3JzLnB1c2gocGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgcGFyZW50ID0gbm9kZTtcbiAgICB9XG4gIH0gd2hpbGUgKHN0YWNrICE9PSB1bmRlZmluZWQpO1xuXG4gIGlmIChlZGl0cy5sZW5ndGggIT09IDApIHtcbiAgICBuZXdSb290ID0gZWRpdHNbZWRpdHMubGVuZ3RoIC0gMV1bMV07XG4gIH1cblxuICByZXR1cm4gbmV3Um9vdDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB2aXNpdG9yIGluc3RhbmNlIHdoaWNoIGRlbGVnYXRlcyB0byBtYW55IHZpc2l0b3JzIHRvIHJ1biBpblxuICogcGFyYWxsZWwuIEVhY2ggdmlzaXRvciB3aWxsIGJlIHZpc2l0ZWQgZm9yIGVhY2ggbm9kZSBiZWZvcmUgbW92aW5nIG9uLlxuICpcbiAqIElmIGEgcHJpb3IgdmlzaXRvciBlZGl0cyBhIG5vZGUsIG5vIGZvbGxvd2luZyB2aXNpdG9ycyB3aWxsIHNlZSB0aGF0IG5vZGUuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHZpc2l0SW5QYXJhbGxlbCh2aXNpdG9ycykge1xuICB2YXIgc2tpcHBpbmcgPSBuZXcgQXJyYXkodmlzaXRvcnMubGVuZ3RoKTtcbiAgcmV0dXJuIHtcbiAgICBlbnRlcjogZnVuY3Rpb24gZW50ZXIobm9kZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aXNpdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoc2tpcHBpbmdbaV0gPT0gbnVsbCkge1xuICAgICAgICAgIHZhciBmbiA9IGdldFZpc2l0Rm4odmlzaXRvcnNbaV0sIG5vZGUua2luZCxcbiAgICAgICAgICAvKiBpc0xlYXZpbmcgKi9cbiAgICAgICAgICBmYWxzZSk7XG5cbiAgICAgICAgICBpZiAoZm4pIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBmbi5hcHBseSh2aXNpdG9yc1tpXSwgYXJndW1lbnRzKTtcblxuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgc2tpcHBpbmdbaV0gPSBub2RlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT09IEJSRUFLKSB7XG4gICAgICAgICAgICAgIHNraXBwaW5nW2ldID0gQlJFQUs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsZWF2ZTogZnVuY3Rpb24gbGVhdmUobm9kZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aXNpdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoc2tpcHBpbmdbaV0gPT0gbnVsbCkge1xuICAgICAgICAgIHZhciBmbiA9IGdldFZpc2l0Rm4odmlzaXRvcnNbaV0sIG5vZGUua2luZCxcbiAgICAgICAgICAvKiBpc0xlYXZpbmcgKi9cbiAgICAgICAgICB0cnVlKTtcblxuICAgICAgICAgIGlmIChmbikge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGZuLmFwcGx5KHZpc2l0b3JzW2ldLCBhcmd1bWVudHMpO1xuXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSBCUkVBSykge1xuICAgICAgICAgICAgICBza2lwcGluZ1tpXSA9IEJSRUFLO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCAmJiByZXN1bHQgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHNraXBwaW5nW2ldID09PSBub2RlKSB7XG4gICAgICAgICAgc2tpcHBpbmdbaV0gPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuLyoqXG4gKiBHaXZlbiBhIHZpc2l0b3IgaW5zdGFuY2UsIGlmIGl0IGlzIGxlYXZpbmcgb3Igbm90LCBhbmQgYSBub2RlIGtpbmQsIHJldHVyblxuICogdGhlIGZ1bmN0aW9uIHRoZSB2aXNpdG9yIHJ1bnRpbWUgc2hvdWxkIGNhbGwuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZpc2l0Rm4odmlzaXRvciwga2luZCwgaXNMZWF2aW5nKSB7XG4gIHZhciBraW5kVmlzaXRvciA9IHZpc2l0b3Jba2luZF07XG5cbiAgaWYgKGtpbmRWaXNpdG9yKSB7XG4gICAgaWYgKCFpc0xlYXZpbmcgJiYgdHlwZW9mIGtpbmRWaXNpdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyB7IEtpbmQoKSB7fSB9XG4gICAgICByZXR1cm4ga2luZFZpc2l0b3I7XG4gICAgfVxuXG4gICAgdmFyIGtpbmRTcGVjaWZpY1Zpc2l0b3IgPSBpc0xlYXZpbmcgPyBraW5kVmlzaXRvci5sZWF2ZSA6IGtpbmRWaXNpdG9yLmVudGVyO1xuXG4gICAgaWYgKHR5cGVvZiBraW5kU3BlY2lmaWNWaXNpdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyB7IEtpbmQ6IHsgZW50ZXIoKSB7fSwgbGVhdmUoKSB7fSB9IH1cbiAgICAgIHJldHVybiBraW5kU3BlY2lmaWNWaXNpdG9yO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgc3BlY2lmaWNWaXNpdG9yID0gaXNMZWF2aW5nID8gdmlzaXRvci5sZWF2ZSA6IHZpc2l0b3IuZW50ZXI7XG5cbiAgICBpZiAoc3BlY2lmaWNWaXNpdG9yKSB7XG4gICAgICBpZiAodHlwZW9mIHNwZWNpZmljVmlzaXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyB7IGVudGVyKCkge30sIGxlYXZlKCkge30gfVxuICAgICAgICByZXR1cm4gc3BlY2lmaWNWaXNpdG9yO1xuICAgICAgfVxuXG4gICAgICB2YXIgc3BlY2lmaWNLaW5kVmlzaXRvciA9IHNwZWNpZmljVmlzaXRvcltraW5kXTtcblxuICAgICAgaWYgKHR5cGVvZiBzcGVjaWZpY0tpbmRWaXNpdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIHsgZW50ZXI6IHsgS2luZCgpIHt9IH0sIGxlYXZlOiB7IEtpbmQoKSB7fSB9IH1cbiAgICAgICAgcmV0dXJuIHNwZWNpZmljS2luZFZpc2l0b3I7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/language/visitor.mjs\n");
861
862/***/ }),
863
864/***/ "../../../node_modules/graphql/polyfills/arrayFrom.mjs":
865/*!****************************************************************************************!*\
866 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/polyfills/arrayFrom.mjs ***!
867 \****************************************************************************************/
868/*! exports provided: default */
869/***/ (function(module, __webpack_exports__, __webpack_require__) {
870
871"use strict";
872eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _symbols_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./symbols.mjs */ \"../../../node_modules/graphql/polyfills/symbols.mjs\");\n\n\n/* eslint-disable no-redeclare */\n// $FlowFixMe[name-already-bound]\nvar arrayFrom = Array.from || function (obj, mapFn, thisArg) {\n if (obj == null) {\n throw new TypeError('Array.from requires an array-like object - not null or undefined');\n } // Is Iterable?\n\n\n var iteratorMethod = obj[_symbols_mjs__WEBPACK_IMPORTED_MODULE_0__[\"SYMBOL_ITERATOR\"]];\n\n if (typeof iteratorMethod === 'function') {\n var iterator = iteratorMethod.call(obj);\n var result = [];\n var step;\n\n for (var i = 0; !(step = iterator.next()).done; ++i) {\n result.push(mapFn.call(thisArg, step.value, i)); // Infinite Iterators could cause forEach to run forever.\n // After a very large number of iterations, produce an error.\n // istanbul ignore if (Too big to actually test)\n\n if (i > 9999999) {\n throw new TypeError('Near-infinite iteration.');\n }\n }\n\n return result;\n } // Is Array like?\n\n\n var length = obj.length;\n\n if (typeof length === 'number' && length >= 0 && length % 1 === 0) {\n var _result = [];\n\n for (var _i = 0; _i < length; ++_i) {\n if (Object.prototype.hasOwnProperty.call(obj, _i)) {\n _result.push(mapFn.call(thisArg, obj[_i], _i));\n }\n }\n\n return _result;\n }\n\n return [];\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (arrayFrom);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvcG9seWZpbGxzL2FycmF5RnJvbS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9wb2x5ZmlsbHMvYXJyYXlGcm9tLm1qcz85YzIxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNZTUJPTF9JVEVSQVRPUiB9IGZyb20gXCIuL3N5bWJvbHMubWpzXCI7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlZGVjbGFyZSAqL1xuLy8gJEZsb3dGaXhNZVtuYW1lLWFscmVhZHktYm91bmRdXG52YXIgYXJyYXlGcm9tID0gQXJyYXkuZnJvbSB8fCBmdW5jdGlvbiAob2JqLCBtYXBGbiwgdGhpc0FyZykge1xuICBpZiAob2JqID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcnJheS5mcm9tIHJlcXVpcmVzIGFuIGFycmF5LWxpa2Ugb2JqZWN0IC0gbm90IG51bGwgb3IgdW5kZWZpbmVkJyk7XG4gIH0gLy8gSXMgSXRlcmFibGU/XG5cblxuICB2YXIgaXRlcmF0b3JNZXRob2QgPSBvYmpbU1lNQk9MX0lURVJBVE9SXTtcblxuICBpZiAodHlwZW9mIGl0ZXJhdG9yTWV0aG9kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JNZXRob2QuY2FsbChvYmopO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgc3RlcDtcblxuICAgIGZvciAodmFyIGkgPSAwOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7ICsraSkge1xuICAgICAgcmVzdWx0LnB1c2gobWFwRm4uY2FsbCh0aGlzQXJnLCBzdGVwLnZhbHVlLCBpKSk7IC8vIEluZmluaXRlIEl0ZXJhdG9ycyBjb3VsZCBjYXVzZSBmb3JFYWNoIHRvIHJ1biBmb3JldmVyLlxuICAgICAgLy8gQWZ0ZXIgYSB2ZXJ5IGxhcmdlIG51bWJlciBvZiBpdGVyYXRpb25zLCBwcm9kdWNlIGFuIGVycm9yLlxuICAgICAgLy8gaXN0YW5idWwgaWdub3JlIGlmIChUb28gYmlnIHRvIGFjdHVhbGx5IHRlc3QpXG5cbiAgICAgIGlmIChpID4gOTk5OTk5OSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdOZWFyLWluZmluaXRlIGl0ZXJhdGlvbi4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IC8vIElzIEFycmF5IGxpa2U/XG5cblxuICB2YXIgbGVuZ3RoID0gb2JqLmxlbmd0aDtcblxuICBpZiAodHlwZW9mIGxlbmd0aCA9PT0gJ251bWJlcicgJiYgbGVuZ3RoID49IDAgJiYgbGVuZ3RoICUgMSA9PT0gMCkge1xuICAgIHZhciBfcmVzdWx0ID0gW107XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGVuZ3RoOyArK19pKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgX2kpKSB7XG4gICAgICAgIF9yZXN1bHQucHVzaChtYXBGbi5jYWxsKHRoaXNBcmcsIG9ialtfaV0sIF9pKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIF9yZXN1bHQ7XG4gIH1cblxuICByZXR1cm4gW107XG59O1xuXG5leHBvcnQgZGVmYXVsdCBhcnJheUZyb207XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/polyfills/arrayFrom.mjs\n");
873
874/***/ }),
875
876/***/ "../../../node_modules/graphql/polyfills/find.mjs":
877/*!***********************************************************************************!*\
878 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/polyfills/find.mjs ***!
879 \***********************************************************************************/
880/*! exports provided: default */
881/***/ (function(module, __webpack_exports__, __webpack_require__) {
882
883"use strict";
884eval("__webpack_require__.r(__webpack_exports__);\n/* eslint-disable no-redeclare */\n// $FlowFixMe[name-already-bound]\nvar find = Array.prototype.find ? function (list, predicate) {\n return Array.prototype.find.call(list, predicate);\n} : function (list, predicate) {\n for (var _i2 = 0; _i2 < list.length; _i2++) {\n var value = list[_i2];\n\n if (predicate(value)) {\n return value;\n }\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (find);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvcG9seWZpbGxzL2ZpbmQubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvcG9seWZpbGxzL2ZpbmQubWpzPzI2ZTUiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVkZWNsYXJlICovXG4vLyAkRmxvd0ZpeE1lW25hbWUtYWxyZWFkeS1ib3VuZF1cbnZhciBmaW5kID0gQXJyYXkucHJvdG90eXBlLmZpbmQgPyBmdW5jdGlvbiAobGlzdCwgcHJlZGljYXRlKSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuZmluZC5jYWxsKGxpc3QsIHByZWRpY2F0ZSk7XG59IDogZnVuY3Rpb24gKGxpc3QsIHByZWRpY2F0ZSkge1xuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBsaXN0Lmxlbmd0aDsgX2kyKyspIHtcbiAgICB2YXIgdmFsdWUgPSBsaXN0W19pMl07XG5cbiAgICBpZiAocHJlZGljYXRlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IGZpbmQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/polyfills/find.mjs\n");
885
886/***/ }),
887
888/***/ "../../../node_modules/graphql/polyfills/isFinite.mjs":
889/*!***************************************************************************************!*\
890 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/polyfills/isFinite.mjs ***!
891 \***************************************************************************************/
892/*! exports provided: default */
893/***/ (function(module, __webpack_exports__, __webpack_require__) {
894
895"use strict";
896eval("__webpack_require__.r(__webpack_exports__);\n/* eslint-disable no-redeclare */\n// $FlowFixMe[name-already-bound] workaround for: https://github.com/facebook/flow/issues/4441\nvar isFinitePolyfill = Number.isFinite || function (value) {\n return typeof value === 'number' && isFinite(value);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (isFinitePolyfill);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvcG9seWZpbGxzL2lzRmluaXRlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3BvbHlmaWxscy9pc0Zpbml0ZS5tanM/N2U4YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZWRlY2xhcmUgKi9cbi8vICRGbG93Rml4TWVbbmFtZS1hbHJlYWR5LWJvdW5kXSB3b3JrYXJvdW5kIGZvcjogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzQ0NDFcbnZhciBpc0Zpbml0ZVBvbHlmaWxsID0gTnVtYmVyLmlzRmluaXRlIHx8IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBpc0Zpbml0ZSh2YWx1ZSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBpc0Zpbml0ZVBvbHlmaWxsO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/polyfills/isFinite.mjs\n");
897
898/***/ }),
899
900/***/ "../../../node_modules/graphql/polyfills/isInteger.mjs":
901/*!****************************************************************************************!*\
902 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/polyfills/isInteger.mjs ***!
903 \****************************************************************************************/
904/*! exports provided: default */
905/***/ (function(module, __webpack_exports__, __webpack_require__) {
906
907"use strict";
908eval("__webpack_require__.r(__webpack_exports__);\n/* eslint-disable no-redeclare */\n// $FlowFixMe[name-already-bound] workaround for: https://github.com/facebook/flow/issues/4441\nvar isInteger = Number.isInteger || function (value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (isInteger);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvcG9seWZpbGxzL2lzSW50ZWdlci5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9wb2x5ZmlsbHMvaXNJbnRlZ2VyLm1qcz85NDk4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXJlZGVjbGFyZSAqL1xuLy8gJEZsb3dGaXhNZVtuYW1lLWFscmVhZHktYm91bmRdIHdvcmthcm91bmQgZm9yOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvNDQ0MVxudmFyIGlzSW50ZWdlciA9IE51bWJlci5pc0ludGVnZXIgfHwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlzRmluaXRlKHZhbHVlKSAmJiBNYXRoLmZsb29yKHZhbHVlKSA9PT0gdmFsdWU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBpc0ludGVnZXI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/polyfills/isInteger.mjs\n");
909
910/***/ }),
911
912/***/ "../../../node_modules/graphql/polyfills/objectEntries.mjs":
913/*!********************************************************************************************!*\
914 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/polyfills/objectEntries.mjs ***!
915 \********************************************************************************************/
916/*! exports provided: default */
917/***/ (function(module, __webpack_exports__, __webpack_require__) {
918
919"use strict";
920eval("__webpack_require__.r(__webpack_exports__);\n/* eslint-disable no-redeclare */\n// $FlowFixMe[name-already-bound] workaround for: https://github.com/facebook/flow/issues/4441\nvar objectEntries = Object.entries || function (obj) {\n return Object.keys(obj).map(function (key) {\n return [key, obj[key]];\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (objectEntries);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvcG9seWZpbGxzL29iamVjdEVudHJpZXMubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvcG9seWZpbGxzL29iamVjdEVudHJpZXMubWpzP2EwNzIiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVkZWNsYXJlICovXG4vLyAkRmxvd0ZpeE1lW25hbWUtYWxyZWFkeS1ib3VuZF0gd29ya2Fyb3VuZCBmb3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy80NDQxXG52YXIgb2JqZWN0RW50cmllcyA9IE9iamVjdC5lbnRyaWVzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gW2tleSwgb2JqW2tleV1dO1xuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG9iamVjdEVudHJpZXM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/polyfills/objectEntries.mjs\n");
921
922/***/ }),
923
924/***/ "../../../node_modules/graphql/polyfills/objectValues.mjs":
925/*!*******************************************************************************************!*\
926 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/polyfills/objectValues.mjs ***!
927 \*******************************************************************************************/
928/*! exports provided: default */
929/***/ (function(module, __webpack_exports__, __webpack_require__) {
930
931"use strict";
932eval("__webpack_require__.r(__webpack_exports__);\n/* eslint-disable no-redeclare */\n// $FlowFixMe[name-already-bound] workaround for: https://github.com/facebook/flow/issues/4441\nvar objectValues = Object.values || function (obj) {\n return Object.keys(obj).map(function (key) {\n return obj[key];\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (objectValues);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvcG9seWZpbGxzL29iamVjdFZhbHVlcy5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9wb2x5ZmlsbHMvb2JqZWN0VmFsdWVzLm1qcz9hZWNmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXJlZGVjbGFyZSAqL1xuLy8gJEZsb3dGaXhNZVtuYW1lLWFscmVhZHktYm91bmRdIHdvcmthcm91bmQgZm9yOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvNDQ0MVxudmFyIG9iamVjdFZhbHVlcyA9IE9iamVjdC52YWx1ZXMgfHwgZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBvYmpba2V5XTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBvYmplY3RWYWx1ZXM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/polyfills/objectValues.mjs\n");
933
934/***/ }),
935
936/***/ "../../../node_modules/graphql/polyfills/symbols.mjs":
937/*!**************************************************************************************!*\
938 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/polyfills/symbols.mjs ***!
939 \**************************************************************************************/
940/*! exports provided: SYMBOL_ITERATOR, SYMBOL_ASYNC_ITERATOR, SYMBOL_TO_STRING_TAG */
941/***/ (function(module, __webpack_exports__, __webpack_require__) {
942
943"use strict";
944eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SYMBOL_ITERATOR\", function() { return SYMBOL_ITERATOR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SYMBOL_ASYNC_ITERATOR\", function() { return SYMBOL_ASYNC_ITERATOR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SYMBOL_TO_STRING_TAG\", function() { return SYMBOL_TO_STRING_TAG; });\n// In ES2015 (or a polyfilled) environment, this will be Symbol.iterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nvar SYMBOL_ITERATOR = typeof Symbol === 'function' && Symbol.iterator != null ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nvar SYMBOL_ASYNC_ITERATOR = typeof Symbol === 'function' && Symbol.asyncIterator != null ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nvar SYMBOL_TO_STRING_TAG = typeof Symbol === 'function' && Symbol.toStringTag != null ? Symbol.toStringTag : '@@toStringTag';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvcG9seWZpbGxzL3N5bWJvbHMubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvcG9seWZpbGxzL3N5bWJvbHMubWpzPzdhZTAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW4gRVMyMDE1IChvciBhIHBvbHlmaWxsZWQpIGVudmlyb25tZW50LCB0aGlzIHdpbGwgYmUgU3ltYm9sLml0ZXJhdG9yXG4vLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjMxNycpXG5leHBvcnQgdmFyIFNZTUJPTF9JVEVSQVRPUiA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLml0ZXJhdG9yICE9IG51bGwgPyBTeW1ib2wuaXRlcmF0b3IgOiAnQEBpdGVyYXRvcic7IC8vIEluIEVTMjAxNyAob3IgYSBwb2x5ZmlsbGVkKSBlbnZpcm9ubWVudCwgdGhpcyB3aWxsIGJlIFN5bWJvbC5hc3luY0l0ZXJhdG9yXG4vLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjMxNycpXG5cbmV4cG9ydCB2YXIgU1lNQk9MX0FTWU5DX0lURVJBVE9SID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuYXN5bmNJdGVyYXRvciAhPSBudWxsID8gU3ltYm9sLmFzeW5jSXRlcmF0b3IgOiAnQEBhc3luY0l0ZXJhdG9yJzsgLy8gaXN0YW5idWwgaWdub3JlIG5leHQgKFNlZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIzMTcnKVxuXG5leHBvcnQgdmFyIFNZTUJPTF9UT19TVFJJTkdfVEFHID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcgIT0gbnVsbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6ICdAQHRvU3RyaW5nVGFnJztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/polyfills/symbols.mjs\n");
945
946/***/ }),
947
948/***/ "../../../node_modules/graphql/subscription/flattenAsyncIterator.mjs":
949/*!******************************************************************************************************!*\
950 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/subscription/flattenAsyncIterator.mjs ***!
951 \******************************************************************************************************/
952/*! exports provided: default */
953/***/ (function(module, __webpack_exports__, __webpack_require__) {
954
955"use strict";
956eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return flattenAsyncIterator; });\n/* harmony import */ var _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/symbols.mjs */ \"../../../node_modules/graphql/polyfills/symbols.mjs\");\n/* harmony import */ var _jsutils_isAsyncIterable_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/isAsyncIterable.mjs */ \"../../../node_modules/graphql/jsutils/isAsyncIterable.mjs\");\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n/**\n * Given an AsyncIterable that could potentially yield other async iterators,\n * flatten all yielded results into a single AsyncIterable\n */\n\nfunction flattenAsyncIterator(iterable) {\n // $FlowFixMe[prop-missing]\n var iteratorMethod = iterable[_polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_0__[\"SYMBOL_ASYNC_ITERATOR\"]];\n var iterator = iteratorMethod.call(iterable);\n var iteratorStack = [iterator];\n\n function next() {\n var currentIterator = iteratorStack[0];\n\n if (!currentIterator) {\n return Promise.resolve({\n value: undefined,\n done: true\n });\n }\n\n return currentIterator.next().then(function (result) {\n if (result.done) {\n iteratorStack.shift();\n return next();\n } else if (Object(_jsutils_isAsyncIterable_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(result.value)) {\n var childIteratorMethod = result.value[_polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_0__[\"SYMBOL_ASYNC_ITERATOR\"]];\n var childIterator = childIteratorMethod.call(result.value);\n iteratorStack.unshift(childIterator);\n return next();\n }\n\n return result;\n });\n }\n\n return _defineProperty({\n next: next,\n return: function _return() {\n iteratorStack = [];\n return iterator.return();\n },\n throw: function _throw(error) {\n iteratorStack = [];\n return iterator.throw(error);\n }\n }, _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_0__[\"SYMBOL_ASYNC_ITERATOR\"], function () {\n return this;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvc3Vic2NyaXB0aW9uL2ZsYXR0ZW5Bc3luY0l0ZXJhdG9yLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3N1YnNjcmlwdGlvbi9mbGF0dGVuQXN5bmNJdGVyYXRvci5tanM/MTk2ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgeyBTWU1CT0xfQVNZTkNfSVRFUkFUT1IgfSBmcm9tIFwiLi4vcG9seWZpbGxzL3N5bWJvbHMubWpzXCI7XG5pbXBvcnQgaXNBc3luY0l0ZXJhYmxlIGZyb20gXCIuLi9qc3V0aWxzL2lzQXN5bmNJdGVyYWJsZS5tanNcIjtcbi8qKlxuICogR2l2ZW4gYW4gQXN5bmNJdGVyYWJsZSB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IHlpZWxkIG90aGVyIGFzeW5jIGl0ZXJhdG9ycyxcbiAqIGZsYXR0ZW4gYWxsIHlpZWxkZWQgcmVzdWx0cyBpbnRvIGEgc2luZ2xlIEFzeW5jSXRlcmFibGVcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmbGF0dGVuQXN5bmNJdGVyYXRvcihpdGVyYWJsZSkge1xuICAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlcmFibGVbU1lNQk9MX0FTWU5DX0lURVJBVE9SXTtcbiAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JNZXRob2QuY2FsbChpdGVyYWJsZSk7XG4gIHZhciBpdGVyYXRvclN0YWNrID0gW2l0ZXJhdG9yXTtcblxuICBmdW5jdGlvbiBuZXh0KCkge1xuICAgIHZhciBjdXJyZW50SXRlcmF0b3IgPSBpdGVyYXRvclN0YWNrWzBdO1xuXG4gICAgaWYgKCFjdXJyZW50SXRlcmF0b3IpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICBkb25lOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudEl0ZXJhdG9yLm5leHQoKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgIGlmIChyZXN1bHQuZG9uZSkge1xuICAgICAgICBpdGVyYXRvclN0YWNrLnNoaWZ0KCk7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9IGVsc2UgaWYgKGlzQXN5bmNJdGVyYWJsZShyZXN1bHQudmFsdWUpKSB7XG4gICAgICAgIHZhciBjaGlsZEl0ZXJhdG9yTWV0aG9kID0gcmVzdWx0LnZhbHVlW1NZTUJPTF9BU1lOQ19JVEVSQVRPUl07XG4gICAgICAgIHZhciBjaGlsZEl0ZXJhdG9yID0gY2hpbGRJdGVyYXRvck1ldGhvZC5jYWxsKHJlc3VsdC52YWx1ZSk7XG4gICAgICAgIGl0ZXJhdG9yU3RhY2sudW5zaGlmdChjaGlsZEl0ZXJhdG9yKTtcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBfZGVmaW5lUHJvcGVydHkoe1xuICAgIG5leHQ6IG5leHQsXG4gICAgcmV0dXJuOiBmdW5jdGlvbiBfcmV0dXJuKCkge1xuICAgICAgaXRlcmF0b3JTdGFjayA9IFtdO1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yLnJldHVybigpO1xuICAgIH0sXG4gICAgdGhyb3c6IGZ1bmN0aW9uIF90aHJvdyhlcnJvcikge1xuICAgICAgaXRlcmF0b3JTdGFjayA9IFtdO1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yLnRocm93KGVycm9yKTtcbiAgICB9XG4gIH0sIFNZTUJPTF9BU1lOQ19JVEVSQVRPUiwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/subscription/flattenAsyncIterator.mjs\n");
957
958/***/ }),
959
960/***/ "../../../node_modules/graphql/subscription/index.mjs":
961/*!***************************************************************************************!*\
962 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/subscription/index.mjs ***!
963 \***************************************************************************************/
964/*! exports provided: subscribe, createSourceEventStream */
965/***/ (function(module, __webpack_exports__, __webpack_require__) {
966
967"use strict";
968eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _subscribe_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./subscribe.mjs */ \"../../../node_modules/graphql/subscription/subscribe.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"subscribe\", function() { return _subscribe_mjs__WEBPACK_IMPORTED_MODULE_0__[\"subscribe\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createSourceEventStream\", function() { return _subscribe_mjs__WEBPACK_IMPORTED_MODULE_0__[\"createSourceEventStream\"]; });\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvc3Vic2NyaXB0aW9uL2luZGV4Lm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3N1YnNjcmlwdGlvbi9pbmRleC5tanM/YWZjYiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBzdWJzY3JpYmUsIGNyZWF0ZVNvdXJjZUV2ZW50U3RyZWFtIH0gZnJvbSBcIi4vc3Vic2NyaWJlLm1qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/subscription/index.mjs\n");
969
970/***/ }),
971
972/***/ "../../../node_modules/graphql/subscription/mapAsyncIterator.mjs":
973/*!**************************************************************************************************!*\
974 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/subscription/mapAsyncIterator.mjs ***!
975 \**************************************************************************************************/
976/*! exports provided: default */
977/***/ (function(module, __webpack_exports__, __webpack_require__) {
978
979"use strict";
980eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return mapAsyncIterator; });\n/* harmony import */ var _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/symbols.mjs */ \"../../../node_modules/graphql/polyfills/symbols.mjs\");\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n/**\n * Given an AsyncIterable and a callback function, return an AsyncIterator\n * which produces values mapped via calling the callback function.\n */\nfunction mapAsyncIterator(iterable, callback, rejectCallback) {\n // $FlowFixMe[prop-missing]\n var iteratorMethod = iterable[_polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_0__[\"SYMBOL_ASYNC_ITERATOR\"]];\n var iterator = iteratorMethod.call(iterable);\n var $return;\n var abruptClose;\n\n if (typeof iterator.return === 'function') {\n $return = iterator.return;\n\n abruptClose = function abruptClose(error) {\n var rethrow = function rethrow() {\n return Promise.reject(error);\n };\n\n return $return.call(iterator).then(rethrow, rethrow);\n };\n }\n\n function mapResult(result) {\n return result.done ? result : asyncMapValue(result.value, callback).then(iteratorResult, abruptClose);\n }\n\n var mapReject;\n\n if (rejectCallback) {\n // Capture rejectCallback to ensure it cannot be null.\n var reject = rejectCallback;\n\n mapReject = function mapReject(error) {\n return asyncMapValue(error, reject).then(iteratorResult, abruptClose);\n };\n }\n /* TODO: Flow doesn't support symbols as keys:\n https://github.com/facebook/flow/issues/3258 */\n\n\n return _defineProperty({\n next: function next() {\n return iterator.next().then(mapResult, mapReject);\n },\n return: function _return() {\n return $return ? $return.call(iterator).then(mapResult, mapReject) : Promise.resolve({\n value: undefined,\n done: true\n });\n },\n throw: function _throw(error) {\n if (typeof iterator.throw === 'function') {\n return iterator.throw(error).then(mapResult, mapReject);\n }\n\n return Promise.reject(error).catch(abruptClose);\n }\n }, _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_0__[\"SYMBOL_ASYNC_ITERATOR\"], function () {\n return this;\n });\n}\n\nfunction asyncMapValue(value, callback) {\n return new Promise(function (resolve) {\n return resolve(callback(value));\n });\n}\n\nfunction iteratorResult(value) {\n return {\n value: value,\n done: false\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvc3Vic2NyaXB0aW9uL21hcEFzeW5jSXRlcmF0b3IubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvc3Vic2NyaXB0aW9uL21hcEFzeW5jSXRlcmF0b3IubWpzPzhiZjMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IHsgU1lNQk9MX0FTWU5DX0lURVJBVE9SIH0gZnJvbSBcIi4uL3BvbHlmaWxscy9zeW1ib2xzLm1qc1wiO1xuXG4vKipcbiAqIEdpdmVuIGFuIEFzeW5jSXRlcmFibGUgYW5kIGEgY2FsbGJhY2sgZnVuY3Rpb24sIHJldHVybiBhbiBBc3luY0l0ZXJhdG9yXG4gKiB3aGljaCBwcm9kdWNlcyB2YWx1ZXMgbWFwcGVkIHZpYSBjYWxsaW5nIHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWFwQXN5bmNJdGVyYXRvcihpdGVyYWJsZSwgY2FsbGJhY2ssIHJlamVjdENhbGxiYWNrKSB7XG4gIC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtTWU1CT0xfQVNZTkNfSVRFUkFUT1JdO1xuICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcbiAgdmFyICRyZXR1cm47XG4gIHZhciBhYnJ1cHRDbG9zZTtcblxuICBpZiAodHlwZW9mIGl0ZXJhdG9yLnJldHVybiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICRyZXR1cm4gPSBpdGVyYXRvci5yZXR1cm47XG5cbiAgICBhYnJ1cHRDbG9zZSA9IGZ1bmN0aW9uIGFicnVwdENsb3NlKGVycm9yKSB7XG4gICAgICB2YXIgcmV0aHJvdyA9IGZ1bmN0aW9uIHJldGhyb3coKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gJHJldHVybi5jYWxsKGl0ZXJhdG9yKS50aGVuKHJldGhyb3csIHJldGhyb3cpO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBtYXBSZXN1bHQocmVzdWx0KSB7XG4gICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0IDogYXN5bmNNYXBWYWx1ZShyZXN1bHQudmFsdWUsIGNhbGxiYWNrKS50aGVuKGl0ZXJhdG9yUmVzdWx0LCBhYnJ1cHRDbG9zZSk7XG4gIH1cblxuICB2YXIgbWFwUmVqZWN0O1xuXG4gIGlmIChyZWplY3RDYWxsYmFjaykge1xuICAgIC8vIENhcHR1cmUgcmVqZWN0Q2FsbGJhY2sgdG8gZW5zdXJlIGl0IGNhbm5vdCBiZSBudWxsLlxuICAgIHZhciByZWplY3QgPSByZWplY3RDYWxsYmFjaztcblxuICAgIG1hcFJlamVjdCA9IGZ1bmN0aW9uIG1hcFJlamVjdChlcnJvcikge1xuICAgICAgcmV0dXJuIGFzeW5jTWFwVmFsdWUoZXJyb3IsIHJlamVjdCkudGhlbihpdGVyYXRvclJlc3VsdCwgYWJydXB0Q2xvc2UpO1xuICAgIH07XG4gIH1cbiAgLyogVE9ETzogRmxvdyBkb2Vzbid0IHN1cHBvcnQgc3ltYm9scyBhcyBrZXlzOlxuICAgICBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvMzI1OCAqL1xuXG5cbiAgcmV0dXJuIF9kZWZpbmVQcm9wZXJ0eSh7XG4gICAgbmV4dDogZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHJldHVybiBpdGVyYXRvci5uZXh0KCkudGhlbihtYXBSZXN1bHQsIG1hcFJlamVjdCk7XG4gICAgfSxcbiAgICByZXR1cm46IGZ1bmN0aW9uIF9yZXR1cm4oKSB7XG4gICAgICByZXR1cm4gJHJldHVybiA/ICRyZXR1cm4uY2FsbChpdGVyYXRvcikudGhlbihtYXBSZXN1bHQsIG1hcFJlamVjdCkgOiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICBkb25lOiB0cnVlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHRocm93OiBmdW5jdGlvbiBfdGhyb3coZXJyb3IpIHtcbiAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3IudGhyb3cgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLnRocm93KGVycm9yKS50aGVuKG1hcFJlc3VsdCwgbWFwUmVqZWN0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKS5jYXRjaChhYnJ1cHRDbG9zZSk7XG4gICAgfVxuICB9LCBTWU1CT0xfQVNZTkNfSVRFUkFUT1IsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFzeW5jTWFwVmFsdWUodmFsdWUsIGNhbGxiYWNrKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgIHJldHVybiByZXNvbHZlKGNhbGxiYWNrKHZhbHVlKSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpdGVyYXRvclJlc3VsdCh2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBkb25lOiBmYWxzZVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/subscription/mapAsyncIterator.mjs\n");
981
982/***/ }),
983
984/***/ "../../../node_modules/graphql/subscription/subscribe.mjs":
985/*!*******************************************************************************************!*\
986 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/subscription/subscribe.mjs ***!
987 \*******************************************************************************************/
988/*! exports provided: subscribe, createSourceEventStream */
989/***/ (function(module, __webpack_exports__, __webpack_require__) {
990
991"use strict";
992eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subscribe\", function() { return subscribe; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createSourceEventStream\", function() { return createSourceEventStream; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_isAsyncIterable_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/isAsyncIterable.mjs */ \"../../../node_modules/graphql/jsutils/isAsyncIterable.mjs\");\n/* harmony import */ var _jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/Path.mjs */ \"../../../node_modules/graphql/jsutils/Path.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../error/locatedError.mjs */ \"../../../node_modules/graphql/error/locatedError.mjs\");\n/* harmony import */ var _execution_values_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../execution/values.mjs */ \"../../../node_modules/graphql/execution/values.mjs\");\n/* harmony import */ var _execution_execute_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../execution/execute.mjs */ \"../../../node_modules/graphql/execution/execute.mjs\");\n/* harmony import */ var _utilities_getOperationRootType_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utilities/getOperationRootType.mjs */ \"../../../node_modules/graphql/utilities/getOperationRootType.mjs\");\n/* harmony import */ var _mapAsyncIterator_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./mapAsyncIterator.mjs */ \"../../../node_modules/graphql/subscription/mapAsyncIterator.mjs\");\n/* harmony import */ var _flattenAsyncIterator_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./flattenAsyncIterator.mjs */ \"../../../node_modules/graphql/subscription/flattenAsyncIterator.mjs\");\n\n\n\n\n\n\n\n\n\n\nfunction subscribe(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) {\n /* eslint-enable no-redeclare */\n // Extract arguments from object args if provided.\n return arguments.length === 1 ? subscribeImpl(argsOrSchema) : subscribeImpl({\n schema: argsOrSchema,\n document: document,\n rootValue: rootValue,\n contextValue: contextValue,\n variableValues: variableValues,\n operationName: operationName,\n fieldResolver: fieldResolver,\n subscribeFieldResolver: subscribeFieldResolver\n });\n}\n/**\n * This function checks if the error is a GraphQLError. If it is, report it as\n * an ExecutionResult, containing only errors and no data. Otherwise treat the\n * error as a system-class error and re-throw it.\n */\n\nfunction reportGraphQLError(error) {\n if (error instanceof _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLError\"]) {\n return {\n errors: [error]\n };\n }\n\n throw error;\n}\n\nfunction subscribeImpl(args) {\n var schema = args.schema,\n document = args.document,\n rootValue = args.rootValue,\n contextValue = args.contextValue,\n variableValues = args.variableValues,\n operationName = args.operationName,\n fieldResolver = args.fieldResolver,\n subscribeFieldResolver = args.subscribeFieldResolver;\n var sourcePromise = createSourceEventStream(schema, document, rootValue, contextValue, variableValues, operationName, subscribeFieldResolver); // For each payload yielded from a subscription, map it over the normal\n // GraphQL `execute` function, with `payload` as the rootValue.\n // This implements the \"MapSourceToResponseEvent\" algorithm described in\n // the GraphQL specification. The `execute` function provides the\n // \"ExecuteSubscriptionEvent\" algorithm, as it is nearly identical to the\n // \"ExecuteQuery\" algorithm, for which `execute` is also used.\n\n var mapSourceToResponse = function mapSourceToResponse(payload) {\n return Object(_execution_execute_mjs__WEBPACK_IMPORTED_MODULE_6__[\"execute\"])({\n schema: schema,\n document: document,\n rootValue: payload,\n contextValue: contextValue,\n variableValues: variableValues,\n operationName: operationName,\n fieldResolver: fieldResolver\n });\n }; // Resolve the Source Stream, then map every source value to a\n // ExecutionResult value as described above.\n\n\n return sourcePromise.then(function (resultOrStream) {\n return (// Note: Flow can't refine isAsyncIterable, so explicit casts are used.\n Object(_jsutils_isAsyncIterable_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(resultOrStream) ? Object(_flattenAsyncIterator_mjs__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(Object(_mapAsyncIterator_mjs__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(resultOrStream, mapSourceToResponse, reportGraphQLError)) : resultOrStream\n );\n });\n}\n/**\n * Implements the \"CreateSourceEventStream\" algorithm described in the\n * GraphQL specification, resolving the subscription source event stream.\n *\n * Returns a Promise which resolves to either an AsyncIterable (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to the AsyncIterable for the\n * event stream returned by the resolver.\n *\n * A Source Event Stream represents a sequence of events, each of which triggers\n * a GraphQL execution for that event.\n *\n * This may be useful when hosting the stateful subscription service in a\n * different process or machine than the stateless GraphQL execution engine,\n * or otherwise separating these two steps. For more on this, see the\n * \"Supporting Subscriptions at Scale\" information in the GraphQL specification.\n */\n\n\nfunction createSourceEventStream(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver) {\n // If arguments are missing or incorrectly typed, this is an internal\n // developer mistake which should throw an early error.\n Object(_execution_execute_mjs__WEBPACK_IMPORTED_MODULE_6__[\"assertValidExecutionArguments\"])(schema, document, variableValues);\n return new Promise(function (resolve) {\n // If a valid context cannot be created due to incorrect arguments,\n // this will throw an error.\n var exeContext = Object(_execution_execute_mjs__WEBPACK_IMPORTED_MODULE_6__[\"buildExecutionContext\"])(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver);\n resolve( // Return early errors if execution context failed.\n Array.isArray(exeContext) ? {\n errors: exeContext\n } : executeSubscription(exeContext));\n }).catch(reportGraphQLError);\n}\n\nfunction executeSubscription(exeContext) {\n var schema = exeContext.schema,\n operation = exeContext.operation,\n variableValues = exeContext.variableValues,\n rootValue = exeContext.rootValue;\n var type = Object(_utilities_getOperationRootType_mjs__WEBPACK_IMPORTED_MODULE_7__[\"getOperationRootType\"])(schema, operation);\n\n var _collectFields = Object(_execution_execute_mjs__WEBPACK_IMPORTED_MODULE_6__[\"collectFields\"])(exeContext, type, operation.selectionSet, Object.create(null), [], Object.create(null)),\n fields = _collectFields.fields;\n\n var responseNames = Object.keys(fields);\n var responseName = responseNames[0];\n var fieldNodes = fields[responseName];\n var fieldNode = fieldNodes[0];\n var fieldName = fieldNode.name.value;\n var fieldDef = Object(_execution_execute_mjs__WEBPACK_IMPORTED_MODULE_6__[\"getFieldDef\"])(schema, type, fieldName);\n\n if (!fieldDef) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLError\"](\"The subscription field \\\"\".concat(fieldName, \"\\\" is not defined.\"), fieldNodes);\n }\n\n var path = Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_2__[\"addPath\"])(undefined, responseName, type.name);\n var info = Object(_execution_execute_mjs__WEBPACK_IMPORTED_MODULE_6__[\"buildResolveInfo\"])(exeContext, fieldDef, fieldNodes, type, path); // Coerce to Promise for easier error handling and consistent return type.\n\n return new Promise(function (resolveResult) {\n var _fieldDef$subscribe;\n\n // Implements the \"ResolveFieldEventStream\" algorithm from GraphQL specification.\n // It differs from \"ResolveFieldValue\" due to providing a different `resolveFn`.\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n var args = Object(_execution_values_mjs__WEBPACK_IMPORTED_MODULE_5__[\"getArgumentValues\"])(fieldDef, fieldNodes[0], variableValues); // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n\n var contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an\n // AsyncIterable yielding raw payloads.\n\n var resolveFn = (_fieldDef$subscribe = fieldDef.subscribe) !== null && _fieldDef$subscribe !== void 0 ? _fieldDef$subscribe : exeContext.fieldResolver;\n resolveResult(resolveFn(rootValue, args, contextValue, info));\n }).then(function (eventStream) {\n if (eventStream instanceof Error) {\n throw Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"locatedError\"])(eventStream, fieldNodes, Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_2__[\"pathToArray\"])(path));\n } // Assert field returned an event stream, otherwise yield an error.\n\n\n if (!Object(_jsutils_isAsyncIterable_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(eventStream)) {\n throw new Error('Subscription field must return Async Iterable. ' + \"Received: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(eventStream), \".\"));\n }\n\n return eventStream;\n }, function (error) {\n throw Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"locatedError\"])(error, fieldNodes, Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_2__[\"pathToArray\"])(path));\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvc3Vic2NyaXB0aW9uL3N1YnNjcmliZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC9zdWJzY3JpcHRpb24vc3Vic2NyaWJlLm1qcz9jNmJlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnNwZWN0IGZyb20gXCIuLi9qc3V0aWxzL2luc3BlY3QubWpzXCI7XG5pbXBvcnQgaXNBc3luY0l0ZXJhYmxlIGZyb20gXCIuLi9qc3V0aWxzL2lzQXN5bmNJdGVyYWJsZS5tanNcIjtcbmltcG9ydCB7IGFkZFBhdGgsIHBhdGhUb0FycmF5IH0gZnJvbSBcIi4uL2pzdXRpbHMvUGF0aC5tanNcIjtcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5pbXBvcnQgeyBsb2NhdGVkRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvbG9jYXRlZEVycm9yLm1qc1wiO1xuaW1wb3J0IHsgZ2V0QXJndW1lbnRWYWx1ZXMgfSBmcm9tIFwiLi4vZXhlY3V0aW9uL3ZhbHVlcy5tanNcIjtcbmltcG9ydCB7IGFzc2VydFZhbGlkRXhlY3V0aW9uQXJndW1lbnRzLCBidWlsZEV4ZWN1dGlvbkNvbnRleHQsIGJ1aWxkUmVzb2x2ZUluZm8sIGNvbGxlY3RGaWVsZHMsIGV4ZWN1dGUsIGdldEZpZWxkRGVmIH0gZnJvbSBcIi4uL2V4ZWN1dGlvbi9leGVjdXRlLm1qc1wiO1xuaW1wb3J0IHsgZ2V0T3BlcmF0aW9uUm9vdFR5cGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2dldE9wZXJhdGlvblJvb3RUeXBlLm1qc1wiO1xuaW1wb3J0IG1hcEFzeW5jSXRlcmF0b3IgZnJvbSBcIi4vbWFwQXN5bmNJdGVyYXRvci5tanNcIjtcbmltcG9ydCBmbGF0dGVuQXN5bmNJdGVyYXRvciBmcm9tIFwiLi9mbGF0dGVuQXN5bmNJdGVyYXRvci5tanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBzdWJzY3JpYmUoYXJnc09yU2NoZW1hLCBkb2N1bWVudCwgcm9vdFZhbHVlLCBjb250ZXh0VmFsdWUsIHZhcmlhYmxlVmFsdWVzLCBvcGVyYXRpb25OYW1lLCBmaWVsZFJlc29sdmVyLCBzdWJzY3JpYmVGaWVsZFJlc29sdmVyKSB7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tcmVkZWNsYXJlICovXG4gIC8vIEV4dHJhY3QgYXJndW1lbnRzIGZyb20gb2JqZWN0IGFyZ3MgaWYgcHJvdmlkZWQuXG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gc3Vic2NyaWJlSW1wbChhcmdzT3JTY2hlbWEpIDogc3Vic2NyaWJlSW1wbCh7XG4gICAgc2NoZW1hOiBhcmdzT3JTY2hlbWEsXG4gICAgZG9jdW1lbnQ6IGRvY3VtZW50LFxuICAgIHJvb3RWYWx1ZTogcm9vdFZhbHVlLFxuICAgIGNvbnRleHRWYWx1ZTogY29udGV4dFZhbHVlLFxuICAgIHZhcmlhYmxlVmFsdWVzOiB2YXJpYWJsZVZhbHVlcyxcbiAgICBvcGVyYXRpb25OYW1lOiBvcGVyYXRpb25OYW1lLFxuICAgIGZpZWxkUmVzb2x2ZXI6IGZpZWxkUmVzb2x2ZXIsXG4gICAgc3Vic2NyaWJlRmllbGRSZXNvbHZlcjogc3Vic2NyaWJlRmllbGRSZXNvbHZlclxuICB9KTtcbn1cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGVycm9yIGlzIGEgR3JhcGhRTEVycm9yLiBJZiBpdCBpcywgcmVwb3J0IGl0IGFzXG4gKiBhbiBFeGVjdXRpb25SZXN1bHQsIGNvbnRhaW5pbmcgb25seSBlcnJvcnMgYW5kIG5vIGRhdGEuIE90aGVyd2lzZSB0cmVhdCB0aGVcbiAqIGVycm9yIGFzIGEgc3lzdGVtLWNsYXNzIGVycm9yIGFuZCByZS10aHJvdyBpdC5cbiAqL1xuXG5mdW5jdGlvbiByZXBvcnRHcmFwaFFMRXJyb3IoZXJyb3IpIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgR3JhcGhRTEVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yczogW2Vycm9yXVxuICAgIH07XG4gIH1cblxuICB0aHJvdyBlcnJvcjtcbn1cblxuZnVuY3Rpb24gc3Vic2NyaWJlSW1wbChhcmdzKSB7XG4gIHZhciBzY2hlbWEgPSBhcmdzLnNjaGVtYSxcbiAgICAgIGRvY3VtZW50ID0gYXJncy5kb2N1bWVudCxcbiAgICAgIHJvb3RWYWx1ZSA9IGFyZ3Mucm9vdFZhbHVlLFxuICAgICAgY29udGV4dFZhbHVlID0gYXJncy5jb250ZXh0VmFsdWUsXG4gICAgICB2YXJpYWJsZVZhbHVlcyA9IGFyZ3MudmFyaWFibGVWYWx1ZXMsXG4gICAgICBvcGVyYXRpb25OYW1lID0gYXJncy5vcGVyYXRpb25OYW1lLFxuICAgICAgZmllbGRSZXNvbHZlciA9IGFyZ3MuZmllbGRSZXNvbHZlcixcbiAgICAgIHN1YnNjcmliZUZpZWxkUmVzb2x2ZXIgPSBhcmdzLnN1YnNjcmliZUZpZWxkUmVzb2x2ZXI7XG4gIHZhciBzb3VyY2VQcm9taXNlID0gY3JlYXRlU291cmNlRXZlbnRTdHJlYW0oc2NoZW1hLCBkb2N1bWVudCwgcm9vdFZhbHVlLCBjb250ZXh0VmFsdWUsIHZhcmlhYmxlVmFsdWVzLCBvcGVyYXRpb25OYW1lLCBzdWJzY3JpYmVGaWVsZFJlc29sdmVyKTsgLy8gRm9yIGVhY2ggcGF5bG9hZCB5aWVsZGVkIGZyb20gYSBzdWJzY3JpcHRpb24sIG1hcCBpdCBvdmVyIHRoZSBub3JtYWxcbiAgLy8gR3JhcGhRTCBgZXhlY3V0ZWAgZnVuY3Rpb24sIHdpdGggYHBheWxvYWRgIGFzIHRoZSByb290VmFsdWUuXG4gIC8vIFRoaXMgaW1wbGVtZW50cyB0aGUgXCJNYXBTb3VyY2VUb1Jlc3BvbnNlRXZlbnRcIiBhbGdvcml0aG0gZGVzY3JpYmVkIGluXG4gIC8vIHRoZSBHcmFwaFFMIHNwZWNpZmljYXRpb24uIFRoZSBgZXhlY3V0ZWAgZnVuY3Rpb24gcHJvdmlkZXMgdGhlXG4gIC8vIFwiRXhlY3V0ZVN1YnNjcmlwdGlvbkV2ZW50XCIgYWxnb3JpdGhtLCBhcyBpdCBpcyBuZWFybHkgaWRlbnRpY2FsIHRvIHRoZVxuICAvLyBcIkV4ZWN1dGVRdWVyeVwiIGFsZ29yaXRobSwgZm9yIHdoaWNoIGBleGVjdXRlYCBpcyBhbHNvIHVzZWQuXG5cbiAgdmFyIG1hcFNvdXJjZVRvUmVzcG9uc2UgPSBmdW5jdGlvbiBtYXBTb3VyY2VUb1Jlc3BvbnNlKHBheWxvYWQpIHtcbiAgICByZXR1cm4gZXhlY3V0ZSh7XG4gICAgICBzY2hlbWE6IHNjaGVtYSxcbiAgICAgIGRvY3VtZW50OiBkb2N1bWVudCxcbiAgICAgIHJvb3RWYWx1ZTogcGF5bG9hZCxcbiAgICAgIGNvbnRleHRWYWx1ZTogY29udGV4dFZhbHVlLFxuICAgICAgdmFyaWFibGVWYWx1ZXM6IHZhcmlhYmxlVmFsdWVzLFxuICAgICAgb3BlcmF0aW9uTmFtZTogb3BlcmF0aW9uTmFtZSxcbiAgICAgIGZpZWxkUmVzb2x2ZXI6IGZpZWxkUmVzb2x2ZXJcbiAgICB9KTtcbiAgfTsgLy8gUmVzb2x2ZSB0aGUgU291cmNlIFN0cmVhbSwgdGhlbiBtYXAgZXZlcnkgc291cmNlIHZhbHVlIHRvIGFcbiAgLy8gRXhlY3V0aW9uUmVzdWx0IHZhbHVlIGFzIGRlc2NyaWJlZCBhYm92ZS5cblxuXG4gIHJldHVybiBzb3VyY2VQcm9taXNlLnRoZW4oZnVuY3Rpb24gKHJlc3VsdE9yU3RyZWFtKSB7XG4gICAgcmV0dXJuICgvLyBOb3RlOiBGbG93IGNhbid0IHJlZmluZSBpc0FzeW5jSXRlcmFibGUsIHNvIGV4cGxpY2l0IGNhc3RzIGFyZSB1c2VkLlxuICAgICAgaXNBc3luY0l0ZXJhYmxlKHJlc3VsdE9yU3RyZWFtKSA/IGZsYXR0ZW5Bc3luY0l0ZXJhdG9yKG1hcEFzeW5jSXRlcmF0b3IocmVzdWx0T3JTdHJlYW0sIG1hcFNvdXJjZVRvUmVzcG9uc2UsIHJlcG9ydEdyYXBoUUxFcnJvcikpIDogcmVzdWx0T3JTdHJlYW1cbiAgICApO1xuICB9KTtcbn1cbi8qKlxuICogSW1wbGVtZW50cyB0aGUgXCJDcmVhdGVTb3VyY2VFdmVudFN0cmVhbVwiIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gdGhlXG4gKiBHcmFwaFFMIHNwZWNpZmljYXRpb24sIHJlc29sdmluZyB0aGUgc3Vic2NyaXB0aW9uIHNvdXJjZSBldmVudCBzdHJlYW0uXG4gKlxuICogUmV0dXJucyBhIFByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgdG8gZWl0aGVyIGFuIEFzeW5jSXRlcmFibGUgKGlmIHN1Y2Nlc3NmdWwpXG4gKiBvciBhbiBFeGVjdXRpb25SZXN1bHQgKGVycm9yKS4gVGhlIHByb21pc2Ugd2lsbCBiZSByZWplY3RlZCBpZiB0aGUgc2NoZW1hIG9yXG4gKiBvdGhlciBhcmd1bWVudHMgdG8gdGhpcyBmdW5jdGlvbiBhcmUgaW52YWxpZCwgb3IgaWYgdGhlIHJlc29sdmVkIGV2ZW50IHN0cmVhbVxuICogaXMgbm90IGFuIGFzeW5jIGl0ZXJhYmxlLlxuICpcbiAqIElmIHRoZSBjbGllbnQtcHJvdmlkZWQgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24gZG8gbm90IHJlc3VsdCBpbiBhXG4gKiBjb21wbGlhbnQgc3Vic2NyaXB0aW9uLCBhIEdyYXBoUUwgUmVzcG9uc2UgKEV4ZWN1dGlvblJlc3VsdCkgd2l0aFxuICogZGVzY3JpcHRpdmUgZXJyb3JzIGFuZCBubyBkYXRhIHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogSWYgdGhlIHRoZSBzb3VyY2Ugc3RyZWFtIGNvdWxkIG5vdCBiZSBjcmVhdGVkIGR1ZSB0byBmYXVsdHkgc3Vic2NyaXB0aW9uXG4gKiByZXNvbHZlciBsb2dpYyBvciB1bmRlcmx5aW5nIHN5c3RlbXMsIHRoZSBwcm9taXNlIHdpbGwgcmVzb2x2ZSB0byBhIHNpbmdsZVxuICogRXhlY3V0aW9uUmVzdWx0IGNvbnRhaW5pbmcgYGVycm9yc2AgYW5kIG5vIGBkYXRhYC5cbiAqXG4gKiBJZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRlZCwgdGhlIHByb21pc2UgcmVzb2x2ZXMgdG8gdGhlIEFzeW5jSXRlcmFibGUgZm9yIHRoZVxuICogZXZlbnQgc3RyZWFtIHJldHVybmVkIGJ5IHRoZSByZXNvbHZlci5cbiAqXG4gKiBBIFNvdXJjZSBFdmVudCBTdHJlYW0gcmVwcmVzZW50cyBhIHNlcXVlbmNlIG9mIGV2ZW50cywgZWFjaCBvZiB3aGljaCB0cmlnZ2Vyc1xuICogYSBHcmFwaFFMIGV4ZWN1dGlvbiBmb3IgdGhhdCBldmVudC5cbiAqXG4gKiBUaGlzIG1heSBiZSB1c2VmdWwgd2hlbiBob3N0aW5nIHRoZSBzdGF0ZWZ1bCBzdWJzY3JpcHRpb24gc2VydmljZSBpbiBhXG4gKiBkaWZmZXJlbnQgcHJvY2VzcyBvciBtYWNoaW5lIHRoYW4gdGhlIHN0YXRlbGVzcyBHcmFwaFFMIGV4ZWN1dGlvbiBlbmdpbmUsXG4gKiBvciBvdGhlcndpc2Ugc2VwYXJhdGluZyB0aGVzZSB0d28gc3RlcHMuIEZvciBtb3JlIG9uIHRoaXMsIHNlZSB0aGVcbiAqIFwiU3VwcG9ydGluZyBTdWJzY3JpcHRpb25zIGF0IFNjYWxlXCIgaW5mb3JtYXRpb24gaW4gdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbi5cbiAqL1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTb3VyY2VFdmVudFN0cmVhbShzY2hlbWEsIGRvY3VtZW50LCByb290VmFsdWUsIGNvbnRleHRWYWx1ZSwgdmFyaWFibGVWYWx1ZXMsIG9wZXJhdGlvbk5hbWUsIGZpZWxkUmVzb2x2ZXIpIHtcbiAgLy8gSWYgYXJndW1lbnRzIGFyZSBtaXNzaW5nIG9yIGluY29ycmVjdGx5IHR5cGVkLCB0aGlzIGlzIGFuIGludGVybmFsXG4gIC8vIGRldmVsb3BlciBtaXN0YWtlIHdoaWNoIHNob3VsZCB0aHJvdyBhbiBlYXJseSBlcnJvci5cbiAgYXNzZXJ0VmFsaWRFeGVjdXRpb25Bcmd1bWVudHMoc2NoZW1hLCBkb2N1bWVudCwgdmFyaWFibGVWYWx1ZXMpO1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAvLyBJZiBhIHZhbGlkIGNvbnRleHQgY2Fubm90IGJlIGNyZWF0ZWQgZHVlIHRvIGluY29ycmVjdCBhcmd1bWVudHMsXG4gICAgLy8gdGhpcyB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgIHZhciBleGVDb250ZXh0ID0gYnVpbGRFeGVjdXRpb25Db250ZXh0KHNjaGVtYSwgZG9jdW1lbnQsIHJvb3RWYWx1ZSwgY29udGV4dFZhbHVlLCB2YXJpYWJsZVZhbHVlcywgb3BlcmF0aW9uTmFtZSwgZmllbGRSZXNvbHZlcik7XG4gICAgcmVzb2x2ZSggLy8gUmV0dXJuIGVhcmx5IGVycm9ycyBpZiBleGVjdXRpb24gY29udGV4dCBmYWlsZWQuXG4gICAgQXJyYXkuaXNBcnJheShleGVDb250ZXh0KSA/IHtcbiAgICAgIGVycm9yczogZXhlQ29udGV4dFxuICAgIH0gOiBleGVjdXRlU3Vic2NyaXB0aW9uKGV4ZUNvbnRleHQpKTtcbiAgfSkuY2F0Y2gocmVwb3J0R3JhcGhRTEVycm9yKTtcbn1cblxuZnVuY3Rpb24gZXhlY3V0ZVN1YnNjcmlwdGlvbihleGVDb250ZXh0KSB7XG4gIHZhciBzY2hlbWEgPSBleGVDb250ZXh0LnNjaGVtYSxcbiAgICAgIG9wZXJhdGlvbiA9IGV4ZUNvbnRleHQub3BlcmF0aW9uLFxuICAgICAgdmFyaWFibGVWYWx1ZXMgPSBleGVDb250ZXh0LnZhcmlhYmxlVmFsdWVzLFxuICAgICAgcm9vdFZhbHVlID0gZXhlQ29udGV4dC5yb290VmFsdWU7XG4gIHZhciB0eXBlID0gZ2V0T3BlcmF0aW9uUm9vdFR5cGUoc2NoZW1hLCBvcGVyYXRpb24pO1xuXG4gIHZhciBfY29sbGVjdEZpZWxkcyA9IGNvbGxlY3RGaWVsZHMoZXhlQ29udGV4dCwgdHlwZSwgb3BlcmF0aW9uLnNlbGVjdGlvblNldCwgT2JqZWN0LmNyZWF0ZShudWxsKSwgW10sIE9iamVjdC5jcmVhdGUobnVsbCkpLFxuICAgICAgZmllbGRzID0gX2NvbGxlY3RGaWVsZHMuZmllbGRzO1xuXG4gIHZhciByZXNwb25zZU5hbWVzID0gT2JqZWN0LmtleXMoZmllbGRzKTtcbiAgdmFyIHJlc3BvbnNlTmFtZSA9IHJlc3BvbnNlTmFtZXNbMF07XG4gIHZhciBmaWVsZE5vZGVzID0gZmllbGRzW3Jlc3BvbnNlTmFtZV07XG4gIHZhciBmaWVsZE5vZGUgPSBmaWVsZE5vZGVzWzBdO1xuICB2YXIgZmllbGROYW1lID0gZmllbGROb2RlLm5hbWUudmFsdWU7XG4gIHZhciBmaWVsZERlZiA9IGdldEZpZWxkRGVmKHNjaGVtYSwgdHlwZSwgZmllbGROYW1lKTtcblxuICBpZiAoIWZpZWxkRGVmKSB7XG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcIlRoZSBzdWJzY3JpcHRpb24gZmllbGQgXFxcIlwiLmNvbmNhdChmaWVsZE5hbWUsIFwiXFxcIiBpcyBub3QgZGVmaW5lZC5cIiksIGZpZWxkTm9kZXMpO1xuICB9XG5cbiAgdmFyIHBhdGggPSBhZGRQYXRoKHVuZGVmaW5lZCwgcmVzcG9uc2VOYW1lLCB0eXBlLm5hbWUpO1xuICB2YXIgaW5mbyA9IGJ1aWxkUmVzb2x2ZUluZm8oZXhlQ29udGV4dCwgZmllbGREZWYsIGZpZWxkTm9kZXMsIHR5cGUsIHBhdGgpOyAvLyBDb2VyY2UgdG8gUHJvbWlzZSBmb3IgZWFzaWVyIGVycm9yIGhhbmRsaW5nIGFuZCBjb25zaXN0ZW50IHJldHVybiB0eXBlLlxuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZVJlc3VsdCkge1xuICAgIHZhciBfZmllbGREZWYkc3Vic2NyaWJlO1xuXG4gICAgLy8gSW1wbGVtZW50cyB0aGUgXCJSZXNvbHZlRmllbGRFdmVudFN0cmVhbVwiIGFsZ29yaXRobSBmcm9tIEdyYXBoUUwgc3BlY2lmaWNhdGlvbi5cbiAgICAvLyBJdCBkaWZmZXJzIGZyb20gXCJSZXNvbHZlRmllbGRWYWx1ZVwiIGR1ZSB0byBwcm92aWRpbmcgYSBkaWZmZXJlbnQgYHJlc29sdmVGbmAuXG4gICAgLy8gQnVpbGQgYSBKUyBvYmplY3Qgb2YgYXJndW1lbnRzIGZyb20gdGhlIGZpZWxkLmFyZ3VtZW50cyBBU1QsIHVzaW5nIHRoZVxuICAgIC8vIHZhcmlhYmxlcyBzY29wZSB0byBmdWxmaWxsIGFueSB2YXJpYWJsZSByZWZlcmVuY2VzLlxuICAgIHZhciBhcmdzID0gZ2V0QXJndW1lbnRWYWx1ZXMoZmllbGREZWYsIGZpZWxkTm9kZXNbMF0sIHZhcmlhYmxlVmFsdWVzKTsgLy8gVGhlIHJlc29sdmUgZnVuY3Rpb24ncyBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpcyBhIGNvbnRleHQgdmFsdWUgdGhhdFxuICAgIC8vIGlzIHByb3ZpZGVkIHRvIGV2ZXJ5IHJlc29sdmUgZnVuY3Rpb24gd2l0aGluIGFuIGV4ZWN1dGlvbi4gSXQgaXMgY29tbW9ubHlcbiAgICAvLyB1c2VkIHRvIHJlcHJlc2VudCBhbiBhdXRoZW50aWNhdGVkIHVzZXIsIG9yIHJlcXVlc3Qtc3BlY2lmaWMgY2FjaGVzLlxuXG4gICAgdmFyIGNvbnRleHRWYWx1ZSA9IGV4ZUNvbnRleHQuY29udGV4dFZhbHVlOyAvLyBDYWxsIHRoZSBgc3Vic2NyaWJlKClgIHJlc29sdmVyIG9yIHRoZSBkZWZhdWx0IHJlc29sdmVyIHRvIHByb2R1Y2UgYW5cbiAgICAvLyBBc3luY0l0ZXJhYmxlIHlpZWxkaW5nIHJhdyBwYXlsb2Fkcy5cblxuICAgIHZhciByZXNvbHZlRm4gPSAoX2ZpZWxkRGVmJHN1YnNjcmliZSA9IGZpZWxkRGVmLnN1YnNjcmliZSkgIT09IG51bGwgJiYgX2ZpZWxkRGVmJHN1YnNjcmliZSAhPT0gdm9pZCAwID8gX2ZpZWxkRGVmJHN1YnNjcmliZSA6IGV4ZUNvbnRleHQuZmllbGRSZXNvbHZlcjtcbiAgICByZXNvbHZlUmVzdWx0KHJlc29sdmVGbihyb290VmFsdWUsIGFyZ3MsIGNvbnRleHRWYWx1ZSwgaW5mbykpO1xuICB9KS50aGVuKGZ1bmN0aW9uIChldmVudFN0cmVhbSkge1xuICAgIGlmIChldmVudFN0cmVhbSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICB0aHJvdyBsb2NhdGVkRXJyb3IoZXZlbnRTdHJlYW0sIGZpZWxkTm9kZXMsIHBhdGhUb0FycmF5KHBhdGgpKTtcbiAgICB9IC8vIEFzc2VydCBmaWVsZCByZXR1cm5lZCBhbiBldmVudCBzdHJlYW0sIG90aGVyd2lzZSB5aWVsZCBhbiBlcnJvci5cblxuXG4gICAgaWYgKCFpc0FzeW5jSXRlcmFibGUoZXZlbnRTdHJlYW0pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N1YnNjcmlwdGlvbiBmaWVsZCBtdXN0IHJldHVybiBBc3luYyBJdGVyYWJsZS4gJyArIFwiUmVjZWl2ZWQ6IFwiLmNvbmNhdChpbnNwZWN0KGV2ZW50U3RyZWFtKSwgXCIuXCIpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXZlbnRTdHJlYW07XG4gIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgIHRocm93IGxvY2F0ZWRFcnJvcihlcnJvciwgZmllbGROb2RlcywgcGF0aFRvQXJyYXkocGF0aCkpO1xuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/subscription/subscribe.mjs\n");
993
994/***/ }),
995
996/***/ "../../../node_modules/graphql/type/definition.mjs":
997/*!************************************************************************************!*\
998 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/type/definition.mjs ***!
999 \************************************************************************************/
1000/*! exports provided: isType, assertType, isScalarType, assertScalarType, isObjectType, assertObjectType, isInterfaceType, assertInterfaceType, isUnionType, assertUnionType, isEnumType, assertEnumType, isInputObjectType, assertInputObjectType, isListType, assertListType, isNonNullType, assertNonNullType, isInputType, assertInputType, isOutputType, assertOutputType, isLeafType, assertLeafType, isCompositeType, assertCompositeType, isAbstractType, assertAbstractType, GraphQLList, GraphQLNonNull, isWrappingType, assertWrappingType, isNullableType, assertNullableType, getNullableType, isNamedType, assertNamedType, getNamedType, GraphQLScalarType, GraphQLObjectType, argsToArgsConfig, isRequiredArgument, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, isRequiredInputField */
1001/***/ (function(module, __webpack_exports__, __webpack_require__) {
1002
1003"use strict";
1004eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isType\", function() { return isType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertType\", function() { return assertType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isScalarType\", function() { return isScalarType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertScalarType\", function() { return assertScalarType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObjectType\", function() { return isObjectType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertObjectType\", function() { return assertObjectType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isInterfaceType\", function() { return isInterfaceType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertInterfaceType\", function() { return assertInterfaceType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isUnionType\", function() { return isUnionType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertUnionType\", function() { return assertUnionType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isEnumType\", function() { return isEnumType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertEnumType\", function() { return assertEnumType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isInputObjectType\", function() { return isInputObjectType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertInputObjectType\", function() { return assertInputObjectType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isListType\", function() { return isListType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertListType\", function() { return assertListType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNonNullType\", function() { return isNonNullType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertNonNullType\", function() { return assertNonNullType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isInputType\", function() { return isInputType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertInputType\", function() { return assertInputType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isOutputType\", function() { return isOutputType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertOutputType\", function() { return assertOutputType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLeafType\", function() { return isLeafType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertLeafType\", function() { return assertLeafType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isCompositeType\", function() { return isCompositeType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertCompositeType\", function() { return assertCompositeType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAbstractType\", function() { return isAbstractType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertAbstractType\", function() { return assertAbstractType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLList\", function() { return GraphQLList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLNonNull\", function() { return GraphQLNonNull; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWrappingType\", function() { return isWrappingType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertWrappingType\", function() { return assertWrappingType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNullableType\", function() { return isNullableType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertNullableType\", function() { return assertNullableType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNullableType\", function() { return getNullableType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNamedType\", function() { return isNamedType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertNamedType\", function() { return assertNamedType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNamedType\", function() { return getNamedType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLScalarType\", function() { return GraphQLScalarType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLObjectType\", function() { return GraphQLObjectType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"argsToArgsConfig\", function() { return argsToArgsConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRequiredArgument\", function() { return isRequiredArgument; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInterfaceType\", function() { return GraphQLInterfaceType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLUnionType\", function() { return GraphQLUnionType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLEnumType\", function() { return GraphQLEnumType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInputObjectType\", function() { return GraphQLInputObjectType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRequiredInputField\", function() { return isRequiredInputField; });\n/* harmony import */ var _polyfills_objectEntries_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/objectEntries.mjs */ \"../../../node_modules/graphql/polyfills/objectEntries.mjs\");\n/* harmony import */ var _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../polyfills/symbols.mjs */ \"../../../node_modules/graphql/polyfills/symbols.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/mapValue.mjs */ \"../../../node_modules/graphql/jsutils/mapValue.mjs\");\n/* harmony import */ var _jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/toObjMap.mjs */ \"../../../node_modules/graphql/jsutils/toObjMap.mjs\");\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jsutils/keyValMap.mjs */ \"../../../node_modules/graphql/jsutils/keyValMap.mjs\");\n/* harmony import */ var _jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../jsutils/instanceOf.mjs */ \"../../../node_modules/graphql/jsutils/instanceOf.mjs\");\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_identityFunc_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../jsutils/identityFunc.mjs */ \"../../../node_modules/graphql/jsutils/identityFunc.mjs\");\n/* harmony import */ var _jsutils_defineInspect_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../jsutils/defineInspect.mjs */ \"../../../node_modules/graphql/jsutils/defineInspect.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../jsutils/suggestionList.mjs */ \"../../../node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _utilities_valueFromASTUntyped_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utilities/valueFromASTUntyped.mjs */ \"../../../node_modules/graphql/utilities/valueFromASTUntyped.mjs\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction isType(type) {\n return isScalarType(type) || isObjectType(type) || isInterfaceType(type) || isUnionType(type) || isEnumType(type) || isInputObjectType(type) || isListType(type) || isNonNullType(type);\n}\nfunction assertType(type) {\n if (!isType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL type.\"));\n }\n\n return type;\n}\n/**\n * There are predicates for each kind of GraphQL type.\n */\n\n// eslint-disable-next-line no-redeclare\nfunction isScalarType(type) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(type, GraphQLScalarType);\n}\nfunction assertScalarType(type) {\n if (!isScalarType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL Scalar type.\"));\n }\n\n return type;\n}\n// eslint-disable-next-line no-redeclare\nfunction isObjectType(type) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(type, GraphQLObjectType);\n}\nfunction assertObjectType(type) {\n if (!isObjectType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL Object type.\"));\n }\n\n return type;\n}\n// eslint-disable-next-line no-redeclare\nfunction isInterfaceType(type) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(type, GraphQLInterfaceType);\n}\nfunction assertInterfaceType(type) {\n if (!isInterfaceType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL Interface type.\"));\n }\n\n return type;\n}\n// eslint-disable-next-line no-redeclare\nfunction isUnionType(type) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(type, GraphQLUnionType);\n}\nfunction assertUnionType(type) {\n if (!isUnionType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL Union type.\"));\n }\n\n return type;\n}\n// eslint-disable-next-line no-redeclare\nfunction isEnumType(type) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(type, GraphQLEnumType);\n}\nfunction assertEnumType(type) {\n if (!isEnumType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL Enum type.\"));\n }\n\n return type;\n}\n// eslint-disable-next-line no-redeclare\nfunction isInputObjectType(type) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(type, GraphQLInputObjectType);\n}\nfunction assertInputObjectType(type) {\n if (!isInputObjectType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL Input Object type.\"));\n }\n\n return type;\n}\n// eslint-disable-next-line no-redeclare\nfunction isListType(type) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(type, GraphQLList);\n}\nfunction assertListType(type) {\n if (!isListType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL List type.\"));\n }\n\n return type;\n}\n// eslint-disable-next-line no-redeclare\nfunction isNonNullType(type) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(type, GraphQLNonNull);\n}\nfunction assertNonNullType(type) {\n if (!isNonNullType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL Non-Null type.\"));\n }\n\n return type;\n}\n/**\n * These types may be used as input types for arguments and directives.\n */\n\nfunction isInputType(type) {\n return isScalarType(type) || isEnumType(type) || isInputObjectType(type) || isWrappingType(type) && isInputType(type.ofType);\n}\nfunction assertInputType(type) {\n if (!isInputType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL input type.\"));\n }\n\n return type;\n}\n/**\n * These types may be used as output types as the result of fields.\n */\n\nfunction isOutputType(type) {\n return isScalarType(type) || isObjectType(type) || isInterfaceType(type) || isUnionType(type) || isEnumType(type) || isWrappingType(type) && isOutputType(type.ofType);\n}\nfunction assertOutputType(type) {\n if (!isOutputType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL output type.\"));\n }\n\n return type;\n}\n/**\n * These types may describe types which may be leaf values.\n */\n\nfunction isLeafType(type) {\n return isScalarType(type) || isEnumType(type);\n}\nfunction assertLeafType(type) {\n if (!isLeafType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL leaf type.\"));\n }\n\n return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nfunction isCompositeType(type) {\n return isObjectType(type) || isInterfaceType(type) || isUnionType(type);\n}\nfunction assertCompositeType(type) {\n if (!isCompositeType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL composite type.\"));\n }\n\n return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nfunction isAbstractType(type) {\n return isInterfaceType(type) || isUnionType(type);\n}\nfunction assertAbstractType(type) {\n if (!isAbstractType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL abstract type.\"));\n }\n\n return type;\n}\n/**\n * List Type Wrapper\n *\n * A list is a wrapping type which points to another type.\n * Lists are often created within the context of defining the fields of\n * an object type.\n *\n * Example:\n *\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * parents: { type: new GraphQLList(PersonType) },\n * children: { type: new GraphQLList(PersonType) },\n * })\n * })\n *\n */\n// FIXME: workaround to fix issue with Babel parser\n\n/* ::\ndeclare class GraphQLList<+T: GraphQLType> {\n +ofType: T;\n static <T>(ofType: T): GraphQLList<T>;\n // Note: constructors cannot be used for covariant types. Drop the \"new\".\n constructor(ofType: GraphQLType): void;\n}\n*/\n\nfunction GraphQLList(ofType) {\n // istanbul ignore else (to be removed in v16.0.0)\n if (this instanceof GraphQLList) {\n this.ofType = assertType(ofType);\n } else {\n return new GraphQLList(ofType);\n }\n} // Need to cast through any to alter the prototype.\n\nGraphQLList.prototype.toString = function toString() {\n return '[' + String(this.ofType) + ']';\n};\n\nGraphQLList.prototype.toJSON = function toJSON() {\n return this.toString();\n};\n\nObject.defineProperty(GraphQLList.prototype, _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_1__[\"SYMBOL_TO_STRING_TAG\"], {\n get: function get() {\n return 'GraphQLList';\n }\n}); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\nObject(_jsutils_defineInspect_mjs__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(GraphQLList);\n/**\n * Non-Null Type Wrapper\n *\n * A non-null is a wrapping type which points to another type.\n * Non-null types enforce that their values are never null and can ensure\n * an error is raised if this ever occurs during a request. It is useful for\n * fields which you can make a strong guarantee on non-nullability, for example\n * usually the id field of a database row will never be null.\n *\n * Example:\n *\n * const RowType = new GraphQLObjectType({\n * name: 'Row',\n * fields: () => ({\n * id: { type: new GraphQLNonNull(GraphQLString) },\n * })\n * })\n *\n * Note: the enforcement of non-nullability occurs within the executor.\n */\n// FIXME: workaround to fix issue with Babel parser\n\n/* ::\ndeclare class GraphQLNonNull<+T: GraphQLNullableType> {\n +ofType: T;\n static <T>(ofType: T): GraphQLNonNull<T>;\n // Note: constructors cannot be used for covariant types. Drop the \"new\".\n constructor(ofType: GraphQLType): void;\n}\n*/\n\nfunction GraphQLNonNull(ofType) {\n // istanbul ignore else (to be removed in v16.0.0)\n if (this instanceof GraphQLNonNull) {\n this.ofType = assertNullableType(ofType);\n } else {\n return new GraphQLNonNull(ofType);\n }\n} // Need to cast through any to alter the prototype.\n\nGraphQLNonNull.prototype.toString = function toString() {\n return String(this.ofType) + '!';\n};\n\nGraphQLNonNull.prototype.toJSON = function toJSON() {\n return this.toString();\n};\n\nObject.defineProperty(GraphQLNonNull.prototype, _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_1__[\"SYMBOL_TO_STRING_TAG\"], {\n get: function get() {\n return 'GraphQLNonNull';\n }\n}); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\nObject(_jsutils_defineInspect_mjs__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(GraphQLNonNull);\n/**\n * These types wrap and modify other types\n */\n\nfunction isWrappingType(type) {\n return isListType(type) || isNonNullType(type);\n}\nfunction assertWrappingType(type) {\n if (!isWrappingType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL wrapping type.\"));\n }\n\n return type;\n}\n/**\n * These types can all accept null as a value.\n */\n\nfunction isNullableType(type) {\n return isType(type) && !isNonNullType(type);\n}\nfunction assertNullableType(type) {\n if (!isNullableType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL nullable type.\"));\n }\n\n return type;\n}\n/* eslint-disable no-redeclare */\n\nfunction getNullableType(type) {\n /* eslint-enable no-redeclare */\n if (type) {\n return isNonNullType(type) ? type.ofType : type;\n }\n}\n/**\n * These named types do not include modifiers like List or NonNull.\n */\n\nfunction isNamedType(type) {\n return isScalarType(type) || isObjectType(type) || isInterfaceType(type) || isUnionType(type) || isEnumType(type) || isInputObjectType(type);\n}\nfunction assertNamedType(type) {\n if (!isNamedType(type)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" to be a GraphQL named type.\"));\n }\n\n return type;\n}\n/* eslint-disable no-redeclare */\n\nfunction getNamedType(type) {\n /* eslint-enable no-redeclare */\n if (type) {\n var unwrappedType = type;\n\n while (isWrappingType(unwrappedType)) {\n unwrappedType = unwrappedType.ofType;\n }\n\n return unwrappedType;\n }\n}\n/**\n * Used while defining GraphQL types to allow for circular references in\n * otherwise immutable type definitions.\n */\n\nfunction resolveThunk(thunk) {\n // $FlowFixMe[incompatible-use]\n return typeof thunk === 'function' ? thunk() : thunk;\n}\n\nfunction undefineIfEmpty(arr) {\n return arr && arr.length > 0 ? arr : undefined;\n}\n/**\n * Scalar Type Definition\n *\n * The leaf values of any request and input values to arguments are\n * Scalars (or Enums) and are defined with a name and a series of functions\n * used to parse input from ast or variables and to ensure validity.\n *\n * If a type's serialize function does not return a value (i.e. it returns\n * `undefined`) then an error will be raised and a `null` value will be returned\n * in the response. If the serialize function returns `null`, then no error will\n * be included in the response.\n *\n * Example:\n *\n * const OddType = new GraphQLScalarType({\n * name: 'Odd',\n * serialize(value) {\n * if (value % 2 === 1) {\n * return value;\n * }\n * }\n * });\n *\n */\n\n\nvar GraphQLScalarType = /*#__PURE__*/function () {\n function GraphQLScalarType(config) {\n var _config$parseValue, _config$serialize, _config$parseLiteral;\n\n var parseValue = (_config$parseValue = config.parseValue) !== null && _config$parseValue !== void 0 ? _config$parseValue : _jsutils_identityFunc_mjs__WEBPACK_IMPORTED_MODULE_11__[\"default\"];\n this.name = config.name;\n this.description = config.description;\n this.specifiedByUrl = config.specifiedByUrl;\n this.serialize = (_config$serialize = config.serialize) !== null && _config$serialize !== void 0 ? _config$serialize : _jsutils_identityFunc_mjs__WEBPACK_IMPORTED_MODULE_11__[\"default\"];\n this.parseValue = parseValue;\n this.parseLiteral = (_config$parseLiteral = config.parseLiteral) !== null && _config$parseLiteral !== void 0 ? _config$parseLiteral : function (node, variables) {\n return parseValue(Object(_utilities_valueFromASTUntyped_mjs__WEBPACK_IMPORTED_MODULE_17__[\"valueFromASTUntyped\"])(node, variables));\n };\n this.extensions = config.extensions && Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n typeof config.name === 'string' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, 'Must provide name.');\n config.specifiedByUrl == null || typeof config.specifiedByUrl === 'string' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(this.name, \" must provide \\\"specifiedByUrl\\\" as a string, \") + \"but got: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(config.specifiedByUrl), \".\"));\n config.serialize == null || typeof config.serialize === 'function' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(this.name, \" must provide \\\"serialize\\\" function. If this custom Scalar is also used as an input type, ensure \\\"parseValue\\\" and \\\"parseLiteral\\\" functions are also provided.\"));\n\n if (config.parseLiteral) {\n typeof config.parseValue === 'function' && typeof config.parseLiteral === 'function' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(this.name, \" must provide both \\\"parseValue\\\" and \\\"parseLiteral\\\" functions.\"));\n }\n }\n\n var _proto = GraphQLScalarType.prototype;\n\n _proto.toConfig = function toConfig() {\n var _this$extensionASTNod;\n\n return {\n name: this.name,\n description: this.description,\n specifiedByUrl: this.specifiedByUrl,\n serialize: this.serialize,\n parseValue: this.parseValue,\n parseLiteral: this.parseLiteral,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: (_this$extensionASTNod = this.extensionASTNodes) !== null && _this$extensionASTNod !== void 0 ? _this$extensionASTNod : []\n };\n };\n\n _proto.toString = function toString() {\n return this.name;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n ;\n\n _createClass(GraphQLScalarType, [{\n key: _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_1__[\"SYMBOL_TO_STRING_TAG\"],\n get: function get() {\n return 'GraphQLScalarType';\n }\n }]);\n\n return GraphQLScalarType;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\nObject(_jsutils_defineInspect_mjs__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(GraphQLScalarType);\n\n/**\n * Object Type Definition\n *\n * Almost all of the GraphQL types you define will be object types. Object types\n * have a name, but most importantly describe their fields.\n *\n * Example:\n *\n * const AddressType = new GraphQLObjectType({\n * name: 'Address',\n * fields: {\n * street: { type: GraphQLString },\n * number: { type: GraphQLInt },\n * formatted: {\n * type: GraphQLString,\n * resolve(obj) {\n * return obj.number + ' ' + obj.street\n * }\n * }\n * }\n * });\n *\n * When two types need to refer to each other, or a type needs to refer to\n * itself in a field, you can use a function expression (aka a closure or a\n * thunk) to supply the fields lazily.\n *\n * Example:\n *\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * name: { type: GraphQLString },\n * bestFriend: { type: PersonType },\n * })\n * });\n *\n */\nvar GraphQLObjectType = /*#__PURE__*/function () {\n function GraphQLObjectType(config) {\n this.name = config.name;\n this.description = config.description;\n this.isTypeOf = config.isTypeOf;\n this.extensions = config.extensions && Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n this._fields = defineFieldMap.bind(undefined, config);\n this._interfaces = defineInterfaces.bind(undefined, config);\n typeof config.name === 'string' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, 'Must provide name.');\n config.isTypeOf == null || typeof config.isTypeOf === 'function' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(this.name, \" must provide \\\"isTypeOf\\\" as a function, \") + \"but got: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(config.isTypeOf), \".\"));\n }\n\n var _proto2 = GraphQLObjectType.prototype;\n\n _proto2.getFields = function getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n };\n\n _proto2.getInterfaces = function getInterfaces() {\n if (typeof this._interfaces === 'function') {\n this._interfaces = this._interfaces();\n }\n\n return this._interfaces;\n };\n\n _proto2.toConfig = function toConfig() {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: fieldsToFieldsConfig(this.getFields()),\n isTypeOf: this.isTypeOf,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes || []\n };\n };\n\n _proto2.toString = function toString() {\n return this.name;\n };\n\n _proto2.toJSON = function toJSON() {\n return this.toString();\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n ;\n\n _createClass(GraphQLObjectType, [{\n key: _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_1__[\"SYMBOL_TO_STRING_TAG\"],\n get: function get() {\n return 'GraphQLObjectType';\n }\n }]);\n\n return GraphQLObjectType;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\nObject(_jsutils_defineInspect_mjs__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(GraphQLObjectType);\n\nfunction defineInterfaces(config) {\n var _resolveThunk;\n\n var interfaces = (_resolveThunk = resolveThunk(config.interfaces)) !== null && _resolveThunk !== void 0 ? _resolveThunk : [];\n Array.isArray(interfaces) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(config.name, \" interfaces must be an Array or a function which returns an Array.\"));\n return interfaces;\n}\n\nfunction defineFieldMap(config) {\n var fieldMap = resolveThunk(config.fields);\n isPlainObj(fieldMap) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(config.name, \" fields must be an object with field names as keys or a function which returns such an object.\"));\n return Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(fieldMap, function (fieldConfig, fieldName) {\n var _fieldConfig$args;\n\n isPlainObj(fieldConfig) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(config.name, \".\").concat(fieldName, \" field config must be an object.\"));\n !('isDeprecated' in fieldConfig) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(config.name, \".\").concat(fieldName, \" should provide \\\"deprecationReason\\\" instead of \\\"isDeprecated\\\".\"));\n fieldConfig.resolve == null || typeof fieldConfig.resolve === 'function' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(config.name, \".\").concat(fieldName, \" field resolver must be a function if \") + \"provided, but got: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(fieldConfig.resolve), \".\"));\n var argsConfig = (_fieldConfig$args = fieldConfig.args) !== null && _fieldConfig$args !== void 0 ? _fieldConfig$args : {};\n isPlainObj(argsConfig) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(config.name, \".\").concat(fieldName, \" args must be an object with argument names as keys.\"));\n var args = Object(_polyfills_objectEntries_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(argsConfig).map(function (_ref) {\n var argName = _ref[0],\n argConfig = _ref[1];\n return {\n name: argName,\n description: argConfig.description,\n type: argConfig.type,\n defaultValue: argConfig.defaultValue,\n deprecationReason: argConfig.deprecationReason,\n extensions: argConfig.extensions && Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(argConfig.extensions),\n astNode: argConfig.astNode\n };\n });\n return {\n name: fieldName,\n description: fieldConfig.description,\n type: fieldConfig.type,\n args: args,\n resolve: fieldConfig.resolve,\n subscribe: fieldConfig.subscribe,\n isDeprecated: fieldConfig.deprecationReason != null,\n deprecationReason: fieldConfig.deprecationReason,\n extensions: fieldConfig.extensions && Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(fieldConfig.extensions),\n astNode: fieldConfig.astNode\n };\n });\n}\n\nfunction isPlainObj(obj) {\n return Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(obj) && !Array.isArray(obj);\n}\n\nfunction fieldsToFieldsConfig(fields) {\n return Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(fields, function (field) {\n return {\n description: field.description,\n type: field.type,\n args: argsToArgsConfig(field.args),\n resolve: field.resolve,\n subscribe: field.subscribe,\n deprecationReason: field.deprecationReason,\n extensions: field.extensions,\n astNode: field.astNode\n };\n });\n}\n/**\n * @internal\n */\n\n\nfunction argsToArgsConfig(args) {\n return Object(_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(args, function (arg) {\n return arg.name;\n }, function (arg) {\n return {\n description: arg.description,\n type: arg.type,\n defaultValue: arg.defaultValue,\n deprecationReason: arg.deprecationReason,\n extensions: arg.extensions,\n astNode: arg.astNode\n };\n });\n}\nfunction isRequiredArgument(arg) {\n return isNonNullType(arg.type) && arg.defaultValue === undefined;\n}\n\n/**\n * Interface Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Interface type\n * is used to describe what types are possible, what fields are in common across\n * all types, as well as a function to determine which type is actually used\n * when the field is resolved.\n *\n * Example:\n *\n * const EntityType = new GraphQLInterfaceType({\n * name: 'Entity',\n * fields: {\n * name: { type: GraphQLString }\n * }\n * });\n *\n */\nvar GraphQLInterfaceType = /*#__PURE__*/function () {\n function GraphQLInterfaceType(config) {\n this.name = config.name;\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = config.extensions && Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n this._fields = defineFieldMap.bind(undefined, config);\n this._interfaces = defineInterfaces.bind(undefined, config);\n typeof config.name === 'string' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, 'Must provide name.');\n config.resolveType == null || typeof config.resolveType === 'function' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(this.name, \" must provide \\\"resolveType\\\" as a function, \") + \"but got: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(config.resolveType), \".\"));\n }\n\n var _proto3 = GraphQLInterfaceType.prototype;\n\n _proto3.getFields = function getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n };\n\n _proto3.getInterfaces = function getInterfaces() {\n if (typeof this._interfaces === 'function') {\n this._interfaces = this._interfaces();\n }\n\n return this._interfaces;\n };\n\n _proto3.toConfig = function toConfig() {\n var _this$extensionASTNod2;\n\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: fieldsToFieldsConfig(this.getFields()),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: (_this$extensionASTNod2 = this.extensionASTNodes) !== null && _this$extensionASTNod2 !== void 0 ? _this$extensionASTNod2 : []\n };\n };\n\n _proto3.toString = function toString() {\n return this.name;\n };\n\n _proto3.toJSON = function toJSON() {\n return this.toString();\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n ;\n\n _createClass(GraphQLInterfaceType, [{\n key: _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_1__[\"SYMBOL_TO_STRING_TAG\"],\n get: function get() {\n return 'GraphQLInterfaceType';\n }\n }]);\n\n return GraphQLInterfaceType;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\nObject(_jsutils_defineInspect_mjs__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(GraphQLInterfaceType);\n\n/**\n * Union Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Union type\n * is used to describe what types are possible as well as providing a function\n * to determine which type is actually used when the field is resolved.\n *\n * Example:\n *\n * const PetType = new GraphQLUnionType({\n * name: 'Pet',\n * types: [ DogType, CatType ],\n * resolveType(value) {\n * if (value instanceof Dog) {\n * return DogType;\n * }\n * if (value instanceof Cat) {\n * return CatType;\n * }\n * }\n * });\n *\n */\nvar GraphQLUnionType = /*#__PURE__*/function () {\n function GraphQLUnionType(config) {\n this.name = config.name;\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = config.extensions && Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n this._types = defineTypes.bind(undefined, config);\n typeof config.name === 'string' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, 'Must provide name.');\n config.resolveType == null || typeof config.resolveType === 'function' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(this.name, \" must provide \\\"resolveType\\\" as a function, \") + \"but got: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(config.resolveType), \".\"));\n }\n\n var _proto4 = GraphQLUnionType.prototype;\n\n _proto4.getTypes = function getTypes() {\n if (typeof this._types === 'function') {\n this._types = this._types();\n }\n\n return this._types;\n };\n\n _proto4.toConfig = function toConfig() {\n var _this$extensionASTNod3;\n\n return {\n name: this.name,\n description: this.description,\n types: this.getTypes(),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: (_this$extensionASTNod3 = this.extensionASTNodes) !== null && _this$extensionASTNod3 !== void 0 ? _this$extensionASTNod3 : []\n };\n };\n\n _proto4.toString = function toString() {\n return this.name;\n };\n\n _proto4.toJSON = function toJSON() {\n return this.toString();\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n ;\n\n _createClass(GraphQLUnionType, [{\n key: _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_1__[\"SYMBOL_TO_STRING_TAG\"],\n get: function get() {\n return 'GraphQLUnionType';\n }\n }]);\n\n return GraphQLUnionType;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\nObject(_jsutils_defineInspect_mjs__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(GraphQLUnionType);\n\nfunction defineTypes(config) {\n var types = resolveThunk(config.types);\n Array.isArray(types) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"Must provide Array of types or a function which returns such an array for Union \".concat(config.name, \".\"));\n return types;\n}\n\n/**\n * Enum Type Definition\n *\n * Some leaf values of requests and input values are Enums. GraphQL serializes\n * Enum values as strings, however internally Enums can be represented by any\n * kind of type, often integers.\n *\n * Example:\n *\n * const RGBType = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 }\n * }\n * });\n *\n * Note: If a value is not provided in a definition, the name of the enum value\n * will be used as its internal value.\n */\nvar GraphQLEnumType\n/* <T> */\n= /*#__PURE__*/function () {\n function GraphQLEnumType(config) {\n this.name = config.name;\n this.description = config.description;\n this.extensions = config.extensions && Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n this._values = defineEnumValues(this.name, config.values);\n this._valueLookup = new Map(this._values.map(function (enumValue) {\n return [enumValue.value, enumValue];\n }));\n this._nameLookup = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this._values, function (value) {\n return value.name;\n });\n typeof config.name === 'string' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, 'Must provide name.');\n }\n\n var _proto5 = GraphQLEnumType.prototype;\n\n _proto5.getValues = function getValues() {\n return this._values;\n };\n\n _proto5.getValue = function getValue(name) {\n return this._nameLookup[name];\n };\n\n _proto5.serialize = function serialize(outputValue) {\n var enumValue = this._valueLookup.get(outputValue);\n\n if (enumValue === undefined) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_14__[\"GraphQLError\"](\"Enum \\\"\".concat(this.name, \"\\\" cannot represent value: \").concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(outputValue)));\n }\n\n return enumValue.name;\n };\n\n _proto5.parseValue = function parseValue(inputValue)\n /* T */\n {\n if (typeof inputValue !== 'string') {\n var valueStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(inputValue);\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_14__[\"GraphQLError\"](\"Enum \\\"\".concat(this.name, \"\\\" cannot represent non-string value: \").concat(valueStr, \".\") + didYouMeanEnumValue(this, valueStr));\n }\n\n var enumValue = this.getValue(inputValue);\n\n if (enumValue == null) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_14__[\"GraphQLError\"](\"Value \\\"\".concat(inputValue, \"\\\" does not exist in \\\"\").concat(this.name, \"\\\" enum.\") + didYouMeanEnumValue(this, inputValue));\n }\n\n return enumValue.value;\n };\n\n _proto5.parseLiteral = function parseLiteral(valueNode, _variables)\n /* T */\n {\n // Note: variables will be resolved to a value before calling this function.\n if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_15__[\"Kind\"].ENUM) {\n var valueStr = Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_16__[\"print\"])(valueNode);\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_14__[\"GraphQLError\"](\"Enum \\\"\".concat(this.name, \"\\\" cannot represent non-enum value: \").concat(valueStr, \".\") + didYouMeanEnumValue(this, valueStr), valueNode);\n }\n\n var enumValue = this.getValue(valueNode.value);\n\n if (enumValue == null) {\n var _valueStr = Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_16__[\"print\"])(valueNode);\n\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_14__[\"GraphQLError\"](\"Value \\\"\".concat(_valueStr, \"\\\" does not exist in \\\"\").concat(this.name, \"\\\" enum.\") + didYouMeanEnumValue(this, _valueStr), valueNode);\n }\n\n return enumValue.value;\n };\n\n _proto5.toConfig = function toConfig() {\n var _this$extensionASTNod4;\n\n var values = Object(_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.getValues(), function (value) {\n return value.name;\n }, function (value) {\n return {\n description: value.description,\n value: value.value,\n deprecationReason: value.deprecationReason,\n extensions: value.extensions,\n astNode: value.astNode\n };\n });\n return {\n name: this.name,\n description: this.description,\n values: values,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: (_this$extensionASTNod4 = this.extensionASTNodes) !== null && _this$extensionASTNod4 !== void 0 ? _this$extensionASTNod4 : []\n };\n };\n\n _proto5.toString = function toString() {\n return this.name;\n };\n\n _proto5.toJSON = function toJSON() {\n return this.toString();\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n ;\n\n _createClass(GraphQLEnumType, [{\n key: _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_1__[\"SYMBOL_TO_STRING_TAG\"],\n get: function get() {\n return 'GraphQLEnumType';\n }\n }]);\n\n return GraphQLEnumType;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\nObject(_jsutils_defineInspect_mjs__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(GraphQLEnumType);\n\nfunction didYouMeanEnumValue(enumType, unknownValueStr) {\n var allNames = enumType.getValues().map(function (value) {\n return value.name;\n });\n var suggestedValues = Object(_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(unknownValueStr, allNames);\n return Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('the enum value', suggestedValues);\n}\n\nfunction defineEnumValues(typeName, valueMap) {\n isPlainObj(valueMap) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(typeName, \" values must be an object with value names as keys.\"));\n return Object(_polyfills_objectEntries_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(valueMap).map(function (_ref2) {\n var valueName = _ref2[0],\n valueConfig = _ref2[1];\n isPlainObj(valueConfig) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(typeName, \".\").concat(valueName, \" must refer to an object with a \\\"value\\\" key \") + \"representing an internal value but got: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(valueConfig), \".\"));\n !('isDeprecated' in valueConfig) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(typeName, \".\").concat(valueName, \" should provide \\\"deprecationReason\\\" instead of \\\"isDeprecated\\\".\"));\n return {\n name: valueName,\n description: valueConfig.description,\n value: valueConfig.value !== undefined ? valueConfig.value : valueName,\n isDeprecated: valueConfig.deprecationReason != null,\n deprecationReason: valueConfig.deprecationReason,\n extensions: valueConfig.extensions && Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(valueConfig.extensions),\n astNode: valueConfig.astNode\n };\n });\n}\n\n/**\n * Input Object Type Definition\n *\n * An input object defines a structured collection of fields which may be\n * supplied to a field argument.\n *\n * Using `NonNull` will ensure that a value must be provided by the query\n *\n * Example:\n *\n * const GeoPoint = new GraphQLInputObjectType({\n * name: 'GeoPoint',\n * fields: {\n * lat: { type: new GraphQLNonNull(GraphQLFloat) },\n * lon: { type: new GraphQLNonNull(GraphQLFloat) },\n * alt: { type: GraphQLFloat, defaultValue: 0 },\n * }\n * });\n *\n */\nvar GraphQLInputObjectType = /*#__PURE__*/function () {\n function GraphQLInputObjectType(config) {\n this.name = config.name;\n this.description = config.description;\n this.extensions = config.extensions && Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = undefineIfEmpty(config.extensionASTNodes);\n this._fields = defineInputFieldMap.bind(undefined, config);\n typeof config.name === 'string' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, 'Must provide name.');\n }\n\n var _proto6 = GraphQLInputObjectType.prototype;\n\n _proto6.getFields = function getFields() {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n\n return this._fields;\n };\n\n _proto6.toConfig = function toConfig() {\n var _this$extensionASTNod5;\n\n var fields = Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this.getFields(), function (field) {\n return {\n description: field.description,\n type: field.type,\n defaultValue: field.defaultValue,\n extensions: field.extensions,\n astNode: field.astNode\n };\n });\n return {\n name: this.name,\n description: this.description,\n fields: fields,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: (_this$extensionASTNod5 = this.extensionASTNodes) !== null && _this$extensionASTNod5 !== void 0 ? _this$extensionASTNod5 : []\n };\n };\n\n _proto6.toString = function toString() {\n return this.name;\n };\n\n _proto6.toJSON = function toJSON() {\n return this.toString();\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n ;\n\n _createClass(GraphQLInputObjectType, [{\n key: _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_1__[\"SYMBOL_TO_STRING_TAG\"],\n get: function get() {\n return 'GraphQLInputObjectType';\n }\n }]);\n\n return GraphQLInputObjectType;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\nObject(_jsutils_defineInspect_mjs__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(GraphQLInputObjectType);\n\nfunction defineInputFieldMap(config) {\n var fieldMap = resolveThunk(config.fields);\n isPlainObj(fieldMap) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(config.name, \" fields must be an object with field names as keys or a function which returns such an object.\"));\n return Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(fieldMap, function (fieldConfig, fieldName) {\n !('resolve' in fieldConfig) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\".concat(config.name, \".\").concat(fieldName, \" field has a resolve property, but Input Types cannot define resolvers.\"));\n return {\n name: fieldName,\n description: fieldConfig.description,\n type: fieldConfig.type,\n defaultValue: fieldConfig.defaultValue,\n deprecationReason: fieldConfig.deprecationReason,\n extensions: fieldConfig.extensions && Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(fieldConfig.extensions),\n astNode: fieldConfig.astNode\n };\n });\n}\n\nfunction isRequiredInputField(field) {\n return isNonNullType(field.type) && field.defaultValue === undefined;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9kZWZpbml0aW9uLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3R5cGUvZGVmaW5pdGlvbi5tanM/MjllNSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmltcG9ydCBvYmplY3RFbnRyaWVzIGZyb20gXCIuLi9wb2x5ZmlsbHMvb2JqZWN0RW50cmllcy5tanNcIjtcbmltcG9ydCB7IFNZTUJPTF9UT19TVFJJTkdfVEFHIH0gZnJvbSBcIi4uL3BvbHlmaWxscy9zeW1ib2xzLm1qc1wiO1xuaW1wb3J0IGluc3BlY3QgZnJvbSBcIi4uL2pzdXRpbHMvaW5zcGVjdC5tanNcIjtcbmltcG9ydCBrZXlNYXAgZnJvbSBcIi4uL2pzdXRpbHMva2V5TWFwLm1qc1wiO1xuaW1wb3J0IG1hcFZhbHVlIGZyb20gXCIuLi9qc3V0aWxzL21hcFZhbHVlLm1qc1wiO1xuaW1wb3J0IHRvT2JqTWFwIGZyb20gXCIuLi9qc3V0aWxzL3RvT2JqTWFwLm1qc1wiO1xuaW1wb3J0IGRldkFzc2VydCBmcm9tIFwiLi4vanN1dGlscy9kZXZBc3NlcnQubWpzXCI7XG5pbXBvcnQga2V5VmFsTWFwIGZyb20gXCIuLi9qc3V0aWxzL2tleVZhbE1hcC5tanNcIjtcbmltcG9ydCBpbnN0YW5jZU9mIGZyb20gXCIuLi9qc3V0aWxzL2luc3RhbmNlT2YubWpzXCI7XG5pbXBvcnQgZGlkWW91TWVhbiBmcm9tIFwiLi4vanN1dGlscy9kaWRZb3VNZWFuLm1qc1wiO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tIFwiLi4vanN1dGlscy9pc09iamVjdExpa2UubWpzXCI7XG5pbXBvcnQgaWRlbnRpdHlGdW5jIGZyb20gXCIuLi9qc3V0aWxzL2lkZW50aXR5RnVuYy5tanNcIjtcbmltcG9ydCBkZWZpbmVJbnNwZWN0IGZyb20gXCIuLi9qc3V0aWxzL2RlZmluZUluc3BlY3QubWpzXCI7XG5pbXBvcnQgc3VnZ2VzdGlvbkxpc3QgZnJvbSBcIi4uL2pzdXRpbHMvc3VnZ2VzdGlvbkxpc3QubWpzXCI7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qc1wiO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gXCIuLi9sYW5ndWFnZS9raW5kcy5tanNcIjtcbmltcG9ydCB7IHByaW50IH0gZnJvbSBcIi4uL2xhbmd1YWdlL3ByaW50ZXIubWpzXCI7XG5pbXBvcnQgeyB2YWx1ZUZyb21BU1RVbnR5cGVkIH0gZnJvbSBcIi4uL3V0aWxpdGllcy92YWx1ZUZyb21BU1RVbnR5cGVkLm1qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIGlzVHlwZSh0eXBlKSB7XG4gIHJldHVybiBpc1NjYWxhclR5cGUodHlwZSkgfHwgaXNPYmplY3RUeXBlKHR5cGUpIHx8IGlzSW50ZXJmYWNlVHlwZSh0eXBlKSB8fCBpc1VuaW9uVHlwZSh0eXBlKSB8fCBpc0VudW1UeXBlKHR5cGUpIHx8IGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpIHx8IGlzTGlzdFR5cGUodHlwZSkgfHwgaXNOb25OdWxsVHlwZSh0eXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc1R5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBcIi5jb25jYXQoaW5zcGVjdCh0eXBlKSwgXCIgdG8gYmUgYSBHcmFwaFFMIHR5cGUuXCIpKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuLyoqXG4gKiBUaGVyZSBhcmUgcHJlZGljYXRlcyBmb3IgZWFjaCBraW5kIG9mIEdyYXBoUUwgdHlwZS5cbiAqL1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVkZWNsYXJlXG5leHBvcnQgZnVuY3Rpb24gaXNTY2FsYXJUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGluc3RhbmNlT2YodHlwZSwgR3JhcGhRTFNjYWxhclR5cGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFNjYWxhclR5cGUodHlwZSkge1xuICBpZiAoIWlzU2NhbGFyVHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIFwiLmNvbmNhdChpbnNwZWN0KHR5cGUpLCBcIiB0byBiZSBhIEdyYXBoUUwgU2NhbGFyIHR5cGUuXCIpKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlZGVjbGFyZVxuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0VHlwZSh0eXBlKSB7XG4gIHJldHVybiBpbnN0YW5jZU9mKHR5cGUsIEdyYXBoUUxPYmplY3RUeXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRPYmplY3RUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc09iamVjdFR5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBcIi5jb25jYXQoaW5zcGVjdCh0eXBlKSwgXCIgdG8gYmUgYSBHcmFwaFFMIE9iamVjdCB0eXBlLlwiKSk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcbmV4cG9ydCBmdW5jdGlvbiBpc0ludGVyZmFjZVR5cGUodHlwZSkge1xuICByZXR1cm4gaW5zdGFuY2VPZih0eXBlLCBHcmFwaFFMSW50ZXJmYWNlVHlwZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SW50ZXJmYWNlVHlwZSh0eXBlKSB7XG4gIGlmICghaXNJbnRlcmZhY2VUeXBlKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgXCIuY29uY2F0KGluc3BlY3QodHlwZSksIFwiIHRvIGJlIGEgR3JhcGhRTCBJbnRlcmZhY2UgdHlwZS5cIikpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVkZWNsYXJlXG5leHBvcnQgZnVuY3Rpb24gaXNVbmlvblR5cGUodHlwZSkge1xuICByZXR1cm4gaW5zdGFuY2VPZih0eXBlLCBHcmFwaFFMVW5pb25UeXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRVbmlvblR5cGUodHlwZSkge1xuICBpZiAoIWlzVW5pb25UeXBlKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgXCIuY29uY2F0KGluc3BlY3QodHlwZSksIFwiIHRvIGJlIGEgR3JhcGhRTCBVbmlvbiB0eXBlLlwiKSk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcbmV4cG9ydCBmdW5jdGlvbiBpc0VudW1UeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGluc3RhbmNlT2YodHlwZSwgR3JhcGhRTEVudW1UeXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFbnVtVHlwZSh0eXBlKSB7XG4gIGlmICghaXNFbnVtVHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIFwiLmNvbmNhdChpbnNwZWN0KHR5cGUpLCBcIiB0byBiZSBhIEdyYXBoUUwgRW51bSB0eXBlLlwiKSk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcbmV4cG9ydCBmdW5jdGlvbiBpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSB7XG4gIHJldHVybiBpbnN0YW5jZU9mKHR5cGUsIEdyYXBoUUxJbnB1dE9iamVjdFR5cGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydElucHV0T2JqZWN0VHlwZSh0eXBlKSB7XG4gIGlmICghaXNJbnB1dE9iamVjdFR5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBcIi5jb25jYXQoaW5zcGVjdCh0eXBlKSwgXCIgdG8gYmUgYSBHcmFwaFFMIElucHV0IE9iamVjdCB0eXBlLlwiKSk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcbmV4cG9ydCBmdW5jdGlvbiBpc0xpc3RUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGluc3RhbmNlT2YodHlwZSwgR3JhcGhRTExpc3QpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydExpc3RUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc0xpc3RUeXBlKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgXCIuY29uY2F0KGluc3BlY3QodHlwZSksIFwiIHRvIGJlIGEgR3JhcGhRTCBMaXN0IHR5cGUuXCIpKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlZGVjbGFyZVxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9uTnVsbFR5cGUodHlwZSkge1xuICByZXR1cm4gaW5zdGFuY2VPZih0eXBlLCBHcmFwaFFMTm9uTnVsbCk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0Tm9uTnVsbFR5cGUodHlwZSkge1xuICBpZiAoIWlzTm9uTnVsbFR5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBcIi5jb25jYXQoaW5zcGVjdCh0eXBlKSwgXCIgdG8gYmUgYSBHcmFwaFFMIE5vbi1OdWxsIHR5cGUuXCIpKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuLyoqXG4gKiBUaGVzZSB0eXBlcyBtYXkgYmUgdXNlZCBhcyBpbnB1dCB0eXBlcyBmb3IgYXJndW1lbnRzIGFuZCBkaXJlY3RpdmVzLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0lucHV0VHlwZSh0eXBlKSB7XG4gIHJldHVybiBpc1NjYWxhclR5cGUodHlwZSkgfHwgaXNFbnVtVHlwZSh0eXBlKSB8fCBpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSB8fCBpc1dyYXBwaW5nVHlwZSh0eXBlKSAmJiBpc0lucHV0VHlwZSh0eXBlLm9mVHlwZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SW5wdXRUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc0lucHV0VHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIFwiLmNvbmNhdChpbnNwZWN0KHR5cGUpLCBcIiB0byBiZSBhIEdyYXBoUUwgaW5wdXQgdHlwZS5cIikpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG4vKipcbiAqIFRoZXNlIHR5cGVzIG1heSBiZSB1c2VkIGFzIG91dHB1dCB0eXBlcyBhcyB0aGUgcmVzdWx0IG9mIGZpZWxkcy5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNPdXRwdXRUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGlzU2NhbGFyVHlwZSh0eXBlKSB8fCBpc09iamVjdFR5cGUodHlwZSkgfHwgaXNJbnRlcmZhY2VUeXBlKHR5cGUpIHx8IGlzVW5pb25UeXBlKHR5cGUpIHx8IGlzRW51bVR5cGUodHlwZSkgfHwgaXNXcmFwcGluZ1R5cGUodHlwZSkgJiYgaXNPdXRwdXRUeXBlKHR5cGUub2ZUeXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRPdXRwdXRUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc091dHB1dFR5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBcIi5jb25jYXQoaW5zcGVjdCh0eXBlKSwgXCIgdG8gYmUgYSBHcmFwaFFMIG91dHB1dCB0eXBlLlwiKSk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbi8qKlxuICogVGhlc2UgdHlwZXMgbWF5IGRlc2NyaWJlIHR5cGVzIHdoaWNoIG1heSBiZSBsZWFmIHZhbHVlcy5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNMZWFmVHlwZSh0eXBlKSB7XG4gIHJldHVybiBpc1NjYWxhclR5cGUodHlwZSkgfHwgaXNFbnVtVHlwZSh0eXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRMZWFmVHlwZSh0eXBlKSB7XG4gIGlmICghaXNMZWFmVHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIFwiLmNvbmNhdChpbnNwZWN0KHR5cGUpLCBcIiB0byBiZSBhIEdyYXBoUUwgbGVhZiB0eXBlLlwiKSk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbi8qKlxuICogVGhlc2UgdHlwZXMgbWF5IGRlc2NyaWJlIHRoZSBwYXJlbnQgY29udGV4dCBvZiBhIHNlbGVjdGlvbiBzZXQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tcG9zaXRlVHlwZSh0eXBlKSB7XG4gIHJldHVybiBpc09iamVjdFR5cGUodHlwZSkgfHwgaXNJbnRlcmZhY2VUeXBlKHR5cGUpIHx8IGlzVW5pb25UeXBlKHR5cGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydENvbXBvc2l0ZVR5cGUodHlwZSkge1xuICBpZiAoIWlzQ29tcG9zaXRlVHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIFwiLmNvbmNhdChpbnNwZWN0KHR5cGUpLCBcIiB0byBiZSBhIEdyYXBoUUwgY29tcG9zaXRlIHR5cGUuXCIpKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuLyoqXG4gKiBUaGVzZSB0eXBlcyBtYXkgZGVzY3JpYmUgdGhlIHBhcmVudCBjb250ZXh0IG9mIGEgc2VsZWN0aW9uIHNldC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNBYnN0cmFjdFR5cGUodHlwZSkge1xuICByZXR1cm4gaXNJbnRlcmZhY2VUeXBlKHR5cGUpIHx8IGlzVW5pb25UeXBlKHR5cGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFic3RyYWN0VHlwZSh0eXBlKSB7XG4gIGlmICghaXNBYnN0cmFjdFR5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBcIi5jb25jYXQoaW5zcGVjdCh0eXBlKSwgXCIgdG8gYmUgYSBHcmFwaFFMIGFic3RyYWN0IHR5cGUuXCIpKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuLyoqXG4gKiBMaXN0IFR5cGUgV3JhcHBlclxuICpcbiAqIEEgbGlzdCBpcyBhIHdyYXBwaW5nIHR5cGUgd2hpY2ggcG9pbnRzIHRvIGFub3RoZXIgdHlwZS5cbiAqIExpc3RzIGFyZSBvZnRlbiBjcmVhdGVkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBkZWZpbmluZyB0aGUgZmllbGRzIG9mXG4gKiBhbiBvYmplY3QgdHlwZS5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqICAgICBjb25zdCBQZXJzb25UeXBlID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAqICAgICAgIG5hbWU6ICdQZXJzb24nLFxuICogICAgICAgZmllbGRzOiAoKSA9PiAoe1xuICogICAgICAgICBwYXJlbnRzOiB7IHR5cGU6IG5ldyBHcmFwaFFMTGlzdChQZXJzb25UeXBlKSB9LFxuICogICAgICAgICBjaGlsZHJlbjogeyB0eXBlOiBuZXcgR3JhcGhRTExpc3QoUGVyc29uVHlwZSkgfSxcbiAqICAgICAgIH0pXG4gKiAgICAgfSlcbiAqXG4gKi9cbi8vIEZJWE1FOiB3b3JrYXJvdW5kIHRvIGZpeCBpc3N1ZSB3aXRoIEJhYmVsIHBhcnNlclxuXG4vKiA6OlxuZGVjbGFyZSBjbGFzcyBHcmFwaFFMTGlzdDwrVDogR3JhcGhRTFR5cGU+IHtcbiAgK29mVHlwZTogVDtcbiAgc3RhdGljIDxUPihvZlR5cGU6IFQpOiBHcmFwaFFMTGlzdDxUPjtcbiAgLy8gTm90ZTogY29uc3RydWN0b3JzIGNhbm5vdCBiZSB1c2VkIGZvciBjb3ZhcmlhbnQgdHlwZXMuIERyb3AgdGhlIFwibmV3XCIuXG4gIGNvbnN0cnVjdG9yKG9mVHlwZTogR3JhcGhRTFR5cGUpOiB2b2lkO1xufVxuKi9cblxuZXhwb3J0IGZ1bmN0aW9uIEdyYXBoUUxMaXN0KG9mVHlwZSkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAodG8gYmUgcmVtb3ZlZCBpbiB2MTYuMC4wKVxuICBpZiAodGhpcyBpbnN0YW5jZW9mIEdyYXBoUUxMaXN0KSB7XG4gICAgdGhpcy5vZlR5cGUgPSBhc3NlcnRUeXBlKG9mVHlwZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMTGlzdChvZlR5cGUpO1xuICB9XG59IC8vIE5lZWQgdG8gY2FzdCB0aHJvdWdoIGFueSB0byBhbHRlciB0aGUgcHJvdG90eXBlLlxuXG5HcmFwaFFMTGlzdC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuICdbJyArIFN0cmluZyh0aGlzLm9mVHlwZSkgKyAnXSc7XG59O1xuXG5HcmFwaFFMTGlzdC5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkge1xuICByZXR1cm4gdGhpcy50b1N0cmluZygpO1xufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEdyYXBoUUxMaXN0LnByb3RvdHlwZSwgU1lNQk9MX1RPX1NUUklOR19UQUcsIHtcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuICdHcmFwaFFMTGlzdCc7XG4gIH1cbn0pOyAvLyBQcmludCBhIHNpbXBsaWZpZWQgZm9ybSB3aGVuIGFwcGVhcmluZyBpbiBgaW5zcGVjdGAgYW5kIGB1dGlsLmluc3BlY3RgLlxuXG5kZWZpbmVJbnNwZWN0KEdyYXBoUUxMaXN0KTtcbi8qKlxuICogTm9uLU51bGwgVHlwZSBXcmFwcGVyXG4gKlxuICogQSBub24tbnVsbCBpcyBhIHdyYXBwaW5nIHR5cGUgd2hpY2ggcG9pbnRzIHRvIGFub3RoZXIgdHlwZS5cbiAqIE5vbi1udWxsIHR5cGVzIGVuZm9yY2UgdGhhdCB0aGVpciB2YWx1ZXMgYXJlIG5ldmVyIG51bGwgYW5kIGNhbiBlbnN1cmVcbiAqIGFuIGVycm9yIGlzIHJhaXNlZCBpZiB0aGlzIGV2ZXIgb2NjdXJzIGR1cmluZyBhIHJlcXVlc3QuIEl0IGlzIHVzZWZ1bCBmb3JcbiAqIGZpZWxkcyB3aGljaCB5b3UgY2FuIG1ha2UgYSBzdHJvbmcgZ3VhcmFudGVlIG9uIG5vbi1udWxsYWJpbGl0eSwgZm9yIGV4YW1wbGVcbiAqIHVzdWFsbHkgdGhlIGlkIGZpZWxkIG9mIGEgZGF0YWJhc2Ugcm93IHdpbGwgbmV2ZXIgYmUgbnVsbC5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqICAgICBjb25zdCBSb3dUeXBlID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAqICAgICAgIG5hbWU6ICdSb3cnLFxuICogICAgICAgZmllbGRzOiAoKSA9PiAoe1xuICogICAgICAgICBpZDogeyB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZykgfSxcbiAqICAgICAgIH0pXG4gKiAgICAgfSlcbiAqXG4gKiBOb3RlOiB0aGUgZW5mb3JjZW1lbnQgb2Ygbm9uLW51bGxhYmlsaXR5IG9jY3VycyB3aXRoaW4gdGhlIGV4ZWN1dG9yLlxuICovXG4vLyBGSVhNRTogd29ya2Fyb3VuZCB0byBmaXggaXNzdWUgd2l0aCBCYWJlbCBwYXJzZXJcblxuLyogOjpcbmRlY2xhcmUgY2xhc3MgR3JhcGhRTE5vbk51bGw8K1Q6IEdyYXBoUUxOdWxsYWJsZVR5cGU+IHtcbiAgK29mVHlwZTogVDtcbiAgc3RhdGljIDxUPihvZlR5cGU6IFQpOiBHcmFwaFFMTm9uTnVsbDxUPjtcbiAgLy8gTm90ZTogY29uc3RydWN0b3JzIGNhbm5vdCBiZSB1c2VkIGZvciBjb3ZhcmlhbnQgdHlwZXMuIERyb3AgdGhlIFwibmV3XCIuXG4gIGNvbnN0cnVjdG9yKG9mVHlwZTogR3JhcGhRTFR5cGUpOiB2b2lkO1xufVxuKi9cblxuZXhwb3J0IGZ1bmN0aW9uIEdyYXBoUUxOb25OdWxsKG9mVHlwZSkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAodG8gYmUgcmVtb3ZlZCBpbiB2MTYuMC4wKVxuICBpZiAodGhpcyBpbnN0YW5jZW9mIEdyYXBoUUxOb25OdWxsKSB7XG4gICAgdGhpcy5vZlR5cGUgPSBhc3NlcnROdWxsYWJsZVR5cGUob2ZUeXBlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IEdyYXBoUUxOb25OdWxsKG9mVHlwZSk7XG4gIH1cbn0gLy8gTmVlZCB0byBjYXN0IHRocm91Z2ggYW55IHRvIGFsdGVyIHRoZSBwcm90b3R5cGUuXG5cbkdyYXBoUUxOb25OdWxsLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gU3RyaW5nKHRoaXMub2ZUeXBlKSArICchJztcbn07XG5cbkdyYXBoUUxOb25OdWxsLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gIHJldHVybiB0aGlzLnRvU3RyaW5nKCk7XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoR3JhcGhRTE5vbk51bGwucHJvdG90eXBlLCBTWU1CT0xfVE9fU1RSSU5HX1RBRywge1xuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gJ0dyYXBoUUxOb25OdWxsJztcbiAgfVxufSk7IC8vIFByaW50IGEgc2ltcGxpZmllZCBmb3JtIHdoZW4gYXBwZWFyaW5nIGluIGBpbnNwZWN0YCBhbmQgYHV0aWwuaW5zcGVjdGAuXG5cbmRlZmluZUluc3BlY3QoR3JhcGhRTE5vbk51bGwpO1xuLyoqXG4gKiBUaGVzZSB0eXBlcyB3cmFwIGFuZCBtb2RpZnkgb3RoZXIgdHlwZXNcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNXcmFwcGluZ1R5cGUodHlwZSkge1xuICByZXR1cm4gaXNMaXN0VHlwZSh0eXBlKSB8fCBpc05vbk51bGxUeXBlKHR5cGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFdyYXBwaW5nVHlwZSh0eXBlKSB7XG4gIGlmICghaXNXcmFwcGluZ1R5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBcIi5jb25jYXQoaW5zcGVjdCh0eXBlKSwgXCIgdG8gYmUgYSBHcmFwaFFMIHdyYXBwaW5nIHR5cGUuXCIpKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuLyoqXG4gKiBUaGVzZSB0eXBlcyBjYW4gYWxsIGFjY2VwdCBudWxsIGFzIGEgdmFsdWUuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbGFibGVUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGlzVHlwZSh0eXBlKSAmJiAhaXNOb25OdWxsVHlwZSh0eXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROdWxsYWJsZVR5cGUodHlwZSkge1xuICBpZiAoIWlzTnVsbGFibGVUeXBlKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgXCIuY29uY2F0KGluc3BlY3QodHlwZSksIFwiIHRvIGJlIGEgR3JhcGhRTCBudWxsYWJsZSB0eXBlLlwiKSk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlZGVjbGFyZSAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TnVsbGFibGVUeXBlKHR5cGUpIHtcbiAgLyogZXNsaW50LWVuYWJsZSBuby1yZWRlY2xhcmUgKi9cbiAgaWYgKHR5cGUpIHtcbiAgICByZXR1cm4gaXNOb25OdWxsVHlwZSh0eXBlKSA/IHR5cGUub2ZUeXBlIDogdHlwZTtcbiAgfVxufVxuLyoqXG4gKiBUaGVzZSBuYW1lZCB0eXBlcyBkbyBub3QgaW5jbHVkZSBtb2RpZmllcnMgbGlrZSBMaXN0IG9yIE5vbk51bGwuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTmFtZWRUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGlzU2NhbGFyVHlwZSh0eXBlKSB8fCBpc09iamVjdFR5cGUodHlwZSkgfHwgaXNJbnRlcmZhY2VUeXBlKHR5cGUpIHx8IGlzVW5pb25UeXBlKHR5cGUpIHx8IGlzRW51bVR5cGUodHlwZSkgfHwgaXNJbnB1dE9iamVjdFR5cGUodHlwZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0TmFtZWRUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc05hbWVkVHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIFwiLmNvbmNhdChpbnNwZWN0KHR5cGUpLCBcIiB0byBiZSBhIEdyYXBoUUwgbmFtZWQgdHlwZS5cIikpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZWRlY2xhcmUgKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5hbWVkVHlwZSh0eXBlKSB7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tcmVkZWNsYXJlICovXG4gIGlmICh0eXBlKSB7XG4gICAgdmFyIHVud3JhcHBlZFR5cGUgPSB0eXBlO1xuXG4gICAgd2hpbGUgKGlzV3JhcHBpbmdUeXBlKHVud3JhcHBlZFR5cGUpKSB7XG4gICAgICB1bndyYXBwZWRUeXBlID0gdW53cmFwcGVkVHlwZS5vZlR5cGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVud3JhcHBlZFR5cGU7XG4gIH1cbn1cbi8qKlxuICogVXNlZCB3aGlsZSBkZWZpbmluZyBHcmFwaFFMIHR5cGVzIHRvIGFsbG93IGZvciBjaXJjdWxhciByZWZlcmVuY2VzIGluXG4gKiBvdGhlcndpc2UgaW1tdXRhYmxlIHR5cGUgZGVmaW5pdGlvbnMuXG4gKi9cblxuZnVuY3Rpb24gcmVzb2x2ZVRodW5rKHRodW5rKSB7XG4gIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXVzZV1cbiAgcmV0dXJuIHR5cGVvZiB0aHVuayA9PT0gJ2Z1bmN0aW9uJyA/IHRodW5rKCkgOiB0aHVuaztcbn1cblxuZnVuY3Rpb24gdW5kZWZpbmVJZkVtcHR5KGFycikge1xuICByZXR1cm4gYXJyICYmIGFyci5sZW5ndGggPiAwID8gYXJyIDogdW5kZWZpbmVkO1xufVxuLyoqXG4gKiBTY2FsYXIgVHlwZSBEZWZpbml0aW9uXG4gKlxuICogVGhlIGxlYWYgdmFsdWVzIG9mIGFueSByZXF1ZXN0IGFuZCBpbnB1dCB2YWx1ZXMgdG8gYXJndW1lbnRzIGFyZVxuICogU2NhbGFycyAob3IgRW51bXMpIGFuZCBhcmUgZGVmaW5lZCB3aXRoIGEgbmFtZSBhbmQgYSBzZXJpZXMgb2YgZnVuY3Rpb25zXG4gKiB1c2VkIHRvIHBhcnNlIGlucHV0IGZyb20gYXN0IG9yIHZhcmlhYmxlcyBhbmQgdG8gZW5zdXJlIHZhbGlkaXR5LlxuICpcbiAqIElmIGEgdHlwZSdzIHNlcmlhbGl6ZSBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZSAoaS5lLiBpdCByZXR1cm5zXG4gKiBgdW5kZWZpbmVkYCkgdGhlbiBhbiBlcnJvciB3aWxsIGJlIHJhaXNlZCBhbmQgYSBgbnVsbGAgdmFsdWUgd2lsbCBiZSByZXR1cm5lZFxuICogaW4gdGhlIHJlc3BvbnNlLiBJZiB0aGUgc2VyaWFsaXplIGZ1bmN0aW9uIHJldHVybnMgYG51bGxgLCB0aGVuIG5vIGVycm9yIHdpbGxcbiAqIGJlIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZS5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqICAgICBjb25zdCBPZGRUeXBlID0gbmV3IEdyYXBoUUxTY2FsYXJUeXBlKHtcbiAqICAgICAgIG5hbWU6ICdPZGQnLFxuICogICAgICAgc2VyaWFsaXplKHZhbHVlKSB7XG4gKiAgICAgICAgIGlmICh2YWx1ZSAlIDIgPT09IDEpIHtcbiAqICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gKiAgICAgICAgIH1cbiAqICAgICAgIH1cbiAqICAgICB9KTtcbiAqXG4gKi9cblxuXG5leHBvcnQgdmFyIEdyYXBoUUxTY2FsYXJUeXBlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gR3JhcGhRTFNjYWxhclR5cGUoY29uZmlnKSB7XG4gICAgdmFyIF9jb25maWckcGFyc2VWYWx1ZSwgX2NvbmZpZyRzZXJpYWxpemUsIF9jb25maWckcGFyc2VMaXRlcmFsO1xuXG4gICAgdmFyIHBhcnNlVmFsdWUgPSAoX2NvbmZpZyRwYXJzZVZhbHVlID0gY29uZmlnLnBhcnNlVmFsdWUpICE9PSBudWxsICYmIF9jb25maWckcGFyc2VWYWx1ZSAhPT0gdm9pZCAwID8gX2NvbmZpZyRwYXJzZVZhbHVlIDogaWRlbnRpdHlGdW5jO1xuICAgIHRoaXMubmFtZSA9IGNvbmZpZy5uYW1lO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBjb25maWcuZGVzY3JpcHRpb247XG4gICAgdGhpcy5zcGVjaWZpZWRCeVVybCA9IGNvbmZpZy5zcGVjaWZpZWRCeVVybDtcbiAgICB0aGlzLnNlcmlhbGl6ZSA9IChfY29uZmlnJHNlcmlhbGl6ZSA9IGNvbmZpZy5zZXJpYWxpemUpICE9PSBudWxsICYmIF9jb25maWckc2VyaWFsaXplICE9PSB2b2lkIDAgPyBfY29uZmlnJHNlcmlhbGl6ZSA6IGlkZW50aXR5RnVuYztcbiAgICB0aGlzLnBhcnNlVmFsdWUgPSBwYXJzZVZhbHVlO1xuICAgIHRoaXMucGFyc2VMaXRlcmFsID0gKF9jb25maWckcGFyc2VMaXRlcmFsID0gY29uZmlnLnBhcnNlTGl0ZXJhbCkgIT09IG51bGwgJiYgX2NvbmZpZyRwYXJzZUxpdGVyYWwgIT09IHZvaWQgMCA/IF9jb25maWckcGFyc2VMaXRlcmFsIDogZnVuY3Rpb24gKG5vZGUsIHZhcmlhYmxlcykge1xuICAgICAgcmV0dXJuIHBhcnNlVmFsdWUodmFsdWVGcm9tQVNUVW50eXBlZChub2RlLCB2YXJpYWJsZXMpKTtcbiAgICB9O1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IGNvbmZpZy5leHRlbnNpb25zICYmIHRvT2JqTWFwKGNvbmZpZy5leHRlbnNpb25zKTtcbiAgICB0aGlzLmFzdE5vZGUgPSBjb25maWcuYXN0Tm9kZTtcbiAgICB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzID0gdW5kZWZpbmVJZkVtcHR5KGNvbmZpZy5leHRlbnNpb25BU1ROb2Rlcyk7XG4gICAgdHlwZW9mIGNvbmZpZy5uYW1lID09PSAnc3RyaW5nJyB8fCBkZXZBc3NlcnQoMCwgJ011c3QgcHJvdmlkZSBuYW1lLicpO1xuICAgIGNvbmZpZy5zcGVjaWZpZWRCeVVybCA9PSBudWxsIHx8IHR5cGVvZiBjb25maWcuc3BlY2lmaWVkQnlVcmwgPT09ICdzdHJpbmcnIHx8IGRldkFzc2VydCgwLCBcIlwiLmNvbmNhdCh0aGlzLm5hbWUsIFwiIG11c3QgcHJvdmlkZSBcXFwic3BlY2lmaWVkQnlVcmxcXFwiIGFzIGEgc3RyaW5nLCBcIikgKyBcImJ1dCBnb3Q6IFwiLmNvbmNhdChpbnNwZWN0KGNvbmZpZy5zcGVjaWZpZWRCeVVybCksIFwiLlwiKSk7XG4gICAgY29uZmlnLnNlcmlhbGl6ZSA9PSBudWxsIHx8IHR5cGVvZiBjb25maWcuc2VyaWFsaXplID09PSAnZnVuY3Rpb24nIHx8IGRldkFzc2VydCgwLCBcIlwiLmNvbmNhdCh0aGlzLm5hbWUsIFwiIG11c3QgcHJvdmlkZSBcXFwic2VyaWFsaXplXFxcIiBmdW5jdGlvbi4gSWYgdGhpcyBjdXN0b20gU2NhbGFyIGlzIGFsc28gdXNlZCBhcyBhbiBpbnB1dCB0eXBlLCBlbnN1cmUgXFxcInBhcnNlVmFsdWVcXFwiIGFuZCBcXFwicGFyc2VMaXRlcmFsXFxcIiBmdW5jdGlvbnMgYXJlIGFsc28gcHJvdmlkZWQuXCIpKTtcblxuICAgIGlmIChjb25maWcucGFyc2VMaXRlcmFsKSB7XG4gICAgICB0eXBlb2YgY29uZmlnLnBhcnNlVmFsdWUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGNvbmZpZy5wYXJzZUxpdGVyYWwgPT09ICdmdW5jdGlvbicgfHwgZGV2QXNzZXJ0KDAsIFwiXCIuY29uY2F0KHRoaXMubmFtZSwgXCIgbXVzdCBwcm92aWRlIGJvdGggXFxcInBhcnNlVmFsdWVcXFwiIGFuZCBcXFwicGFyc2VMaXRlcmFsXFxcIiBmdW5jdGlvbnMuXCIpKTtcbiAgICB9XG4gIH1cblxuICB2YXIgX3Byb3RvID0gR3JhcGhRTFNjYWxhclR5cGUucHJvdG90eXBlO1xuXG4gIF9wcm90by50b0NvbmZpZyA9IGZ1bmN0aW9uIHRvQ29uZmlnKCkge1xuICAgIHZhciBfdGhpcyRleHRlbnNpb25BU1ROb2Q7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBzcGVjaWZpZWRCeVVybDogdGhpcy5zcGVjaWZpZWRCeVVybCxcbiAgICAgIHNlcmlhbGl6ZTogdGhpcy5zZXJpYWxpemUsXG4gICAgICBwYXJzZVZhbHVlOiB0aGlzLnBhcnNlVmFsdWUsXG4gICAgICBwYXJzZUxpdGVyYWw6IHRoaXMucGFyc2VMaXRlcmFsLFxuICAgICAgZXh0ZW5zaW9uczogdGhpcy5leHRlbnNpb25zLFxuICAgICAgYXN0Tm9kZTogdGhpcy5hc3ROb2RlLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IChfdGhpcyRleHRlbnNpb25BU1ROb2QgPSB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzKSAhPT0gbnVsbCAmJiBfdGhpcyRleHRlbnNpb25BU1ROb2QgIT09IHZvaWQgMCA/IF90aGlzJGV4dGVuc2lvbkFTVE5vZCA6IFtdXG4gICAgfTtcbiAgfTtcblxuICBfcHJvdG8udG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9O1xuXG4gIF9wcm90by50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfSAvLyAkRmxvd0ZpeE1lW3Vuc3VwcG9ydGVkLXN5bnRheF0gRmxvdyBkb2Vzbid0IHN1cHBvcnQgY29tcHV0ZWQgcHJvcGVydGllcyB5ZXRcbiAgO1xuXG4gIF9jcmVhdGVDbGFzcyhHcmFwaFFMU2NhbGFyVHlwZSwgW3tcbiAgICBrZXk6IFNZTUJPTF9UT19TVFJJTkdfVEFHLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuICdHcmFwaFFMU2NhbGFyVHlwZSc7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEdyYXBoUUxTY2FsYXJUeXBlO1xufSgpOyAvLyBQcmludCBhIHNpbXBsaWZpZWQgZm9ybSB3aGVuIGFwcGVhcmluZyBpbiBgaW5zcGVjdGAgYW5kIGB1dGlsLmluc3BlY3RgLlxuXG5kZWZpbmVJbnNwZWN0KEdyYXBoUUxTY2FsYXJUeXBlKTtcblxuLyoqXG4gKiBPYmplY3QgVHlwZSBEZWZpbml0aW9uXG4gKlxuICogQWxtb3N0IGFsbCBvZiB0aGUgR3JhcGhRTCB0eXBlcyB5b3UgZGVmaW5lIHdpbGwgYmUgb2JqZWN0IHR5cGVzLiBPYmplY3QgdHlwZXNcbiAqIGhhdmUgYSBuYW1lLCBidXQgbW9zdCBpbXBvcnRhbnRseSBkZXNjcmliZSB0aGVpciBmaWVsZHMuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiAgICAgY29uc3QgQWRkcmVzc1R5cGUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICogICAgICAgbmFtZTogJ0FkZHJlc3MnLFxuICogICAgICAgZmllbGRzOiB7XG4gKiAgICAgICAgIHN0cmVldDogeyB0eXBlOiBHcmFwaFFMU3RyaW5nIH0sXG4gKiAgICAgICAgIG51bWJlcjogeyB0eXBlOiBHcmFwaFFMSW50IH0sXG4gKiAgICAgICAgIGZvcm1hdHRlZDoge1xuICogICAgICAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gKiAgICAgICAgICAgcmVzb2x2ZShvYmopIHtcbiAqICAgICAgICAgICAgIHJldHVybiBvYmoubnVtYmVyICsgJyAnICsgb2JqLnN0cmVldFxuICogICAgICAgICAgIH1cbiAqICAgICAgICAgfVxuICogICAgICAgfVxuICogICAgIH0pO1xuICpcbiAqIFdoZW4gdHdvIHR5cGVzIG5lZWQgdG8gcmVmZXIgdG8gZWFjaCBvdGhlciwgb3IgYSB0eXBlIG5lZWRzIHRvIHJlZmVyIHRvXG4gKiBpdHNlbGYgaW4gYSBmaWVsZCwgeW91IGNhbiB1c2UgYSBmdW5jdGlvbiBleHByZXNzaW9uIChha2EgYSBjbG9zdXJlIG9yIGFcbiAqIHRodW5rKSB0byBzdXBwbHkgdGhlIGZpZWxkcyBsYXppbHkuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiAgICAgY29uc3QgUGVyc29uVHlwZSA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gKiAgICAgICBuYW1lOiAnUGVyc29uJyxcbiAqICAgICAgIGZpZWxkczogKCkgPT4gKHtcbiAqICAgICAgICAgbmFtZTogeyB0eXBlOiBHcmFwaFFMU3RyaW5nIH0sXG4gKiAgICAgICAgIGJlc3RGcmllbmQ6IHsgdHlwZTogUGVyc29uVHlwZSB9LFxuICogICAgICAgfSlcbiAqICAgICB9KTtcbiAqXG4gKi9cbmV4cG9ydCB2YXIgR3JhcGhRTE9iamVjdFR5cGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHcmFwaFFMT2JqZWN0VHlwZShjb25maWcpIHtcbiAgICB0aGlzLm5hbWUgPSBjb25maWcubmFtZTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gY29uZmlnLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMuaXNUeXBlT2YgPSBjb25maWcuaXNUeXBlT2Y7XG4gICAgdGhpcy5leHRlbnNpb25zID0gY29uZmlnLmV4dGVuc2lvbnMgJiYgdG9PYmpNYXAoY29uZmlnLmV4dGVuc2lvbnMpO1xuICAgIHRoaXMuYXN0Tm9kZSA9IGNvbmZpZy5hc3ROb2RlO1xuICAgIHRoaXMuZXh0ZW5zaW9uQVNUTm9kZXMgPSB1bmRlZmluZUlmRW1wdHkoY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzKTtcbiAgICB0aGlzLl9maWVsZHMgPSBkZWZpbmVGaWVsZE1hcC5iaW5kKHVuZGVmaW5lZCwgY29uZmlnKTtcbiAgICB0aGlzLl9pbnRlcmZhY2VzID0gZGVmaW5lSW50ZXJmYWNlcy5iaW5kKHVuZGVmaW5lZCwgY29uZmlnKTtcbiAgICB0eXBlb2YgY29uZmlnLm5hbWUgPT09ICdzdHJpbmcnIHx8IGRldkFzc2VydCgwLCAnTXVzdCBwcm92aWRlIG5hbWUuJyk7XG4gICAgY29uZmlnLmlzVHlwZU9mID09IG51bGwgfHwgdHlwZW9mIGNvbmZpZy5pc1R5cGVPZiA9PT0gJ2Z1bmN0aW9uJyB8fCBkZXZBc3NlcnQoMCwgXCJcIi5jb25jYXQodGhpcy5uYW1lLCBcIiBtdXN0IHByb3ZpZGUgXFxcImlzVHlwZU9mXFxcIiBhcyBhIGZ1bmN0aW9uLCBcIikgKyBcImJ1dCBnb3Q6IFwiLmNvbmNhdChpbnNwZWN0KGNvbmZpZy5pc1R5cGVPZiksIFwiLlwiKSk7XG4gIH1cblxuICB2YXIgX3Byb3RvMiA9IEdyYXBoUUxPYmplY3RUeXBlLnByb3RvdHlwZTtcblxuICBfcHJvdG8yLmdldEZpZWxkcyA9IGZ1bmN0aW9uIGdldEZpZWxkcygpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuX2ZpZWxkcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5fZmllbGRzID0gdGhpcy5fZmllbGRzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkcztcbiAgfTtcblxuICBfcHJvdG8yLmdldEludGVyZmFjZXMgPSBmdW5jdGlvbiBnZXRJbnRlcmZhY2VzKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5faW50ZXJmYWNlcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5faW50ZXJmYWNlcyA9IHRoaXMuX2ludGVyZmFjZXMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5faW50ZXJmYWNlcztcbiAgfTtcblxuICBfcHJvdG8yLnRvQ29uZmlnID0gZnVuY3Rpb24gdG9Db25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgaW50ZXJmYWNlczogdGhpcy5nZXRJbnRlcmZhY2VzKCksXG4gICAgICBmaWVsZHM6IGZpZWxkc1RvRmllbGRzQ29uZmlnKHRoaXMuZ2V0RmllbGRzKCkpLFxuICAgICAgaXNUeXBlT2Y6IHRoaXMuaXNUeXBlT2YsXG4gICAgICBleHRlbnNpb25zOiB0aGlzLmV4dGVuc2lvbnMsXG4gICAgICBhc3ROb2RlOiB0aGlzLmFzdE5vZGUsXG4gICAgICBleHRlbnNpb25BU1ROb2RlczogdGhpcy5leHRlbnNpb25BU1ROb2RlcyB8fCBbXVxuICAgIH07XG4gIH07XG5cbiAgX3Byb3RvMi50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH07XG5cbiAgX3Byb3RvMi50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfSAvLyAkRmxvd0ZpeE1lW3Vuc3VwcG9ydGVkLXN5bnRheF0gRmxvdyBkb2Vzbid0IHN1cHBvcnQgY29tcHV0ZWQgcHJvcGVydGllcyB5ZXRcbiAgO1xuXG4gIF9jcmVhdGVDbGFzcyhHcmFwaFFMT2JqZWN0VHlwZSwgW3tcbiAgICBrZXk6IFNZTUJPTF9UT19TVFJJTkdfVEFHLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuICdHcmFwaFFMT2JqZWN0VHlwZSc7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEdyYXBoUUxPYmplY3RUeXBlO1xufSgpOyAvLyBQcmludCBhIHNpbXBsaWZpZWQgZm9ybSB3aGVuIGFwcGVhcmluZyBpbiBgaW5zcGVjdGAgYW5kIGB1dGlsLmluc3BlY3RgLlxuXG5kZWZpbmVJbnNwZWN0KEdyYXBoUUxPYmplY3RUeXBlKTtcblxuZnVuY3Rpb24gZGVmaW5lSW50ZXJmYWNlcyhjb25maWcpIHtcbiAgdmFyIF9yZXNvbHZlVGh1bms7XG5cbiAgdmFyIGludGVyZmFjZXMgPSAoX3Jlc29sdmVUaHVuayA9IHJlc29sdmVUaHVuayhjb25maWcuaW50ZXJmYWNlcykpICE9PSBudWxsICYmIF9yZXNvbHZlVGh1bmsgIT09IHZvaWQgMCA/IF9yZXNvbHZlVGh1bmsgOiBbXTtcbiAgQXJyYXkuaXNBcnJheShpbnRlcmZhY2VzKSB8fCBkZXZBc3NlcnQoMCwgXCJcIi5jb25jYXQoY29uZmlnLm5hbWUsIFwiIGludGVyZmFjZXMgbXVzdCBiZSBhbiBBcnJheSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gQXJyYXkuXCIpKTtcbiAgcmV0dXJuIGludGVyZmFjZXM7XG59XG5cbmZ1bmN0aW9uIGRlZmluZUZpZWxkTWFwKGNvbmZpZykge1xuICB2YXIgZmllbGRNYXAgPSByZXNvbHZlVGh1bmsoY29uZmlnLmZpZWxkcyk7XG4gIGlzUGxhaW5PYmooZmllbGRNYXApIHx8IGRldkFzc2VydCgwLCBcIlwiLmNvbmNhdChjb25maWcubmFtZSwgXCIgZmllbGRzIG11c3QgYmUgYW4gb2JqZWN0IHdpdGggZmllbGQgbmFtZXMgYXMga2V5cyBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgc3VjaCBhbiBvYmplY3QuXCIpKTtcbiAgcmV0dXJuIG1hcFZhbHVlKGZpZWxkTWFwLCBmdW5jdGlvbiAoZmllbGRDb25maWcsIGZpZWxkTmFtZSkge1xuICAgIHZhciBfZmllbGRDb25maWckYXJncztcblxuICAgIGlzUGxhaW5PYmooZmllbGRDb25maWcpIHx8IGRldkFzc2VydCgwLCBcIlwiLmNvbmNhdChjb25maWcubmFtZSwgXCIuXCIpLmNvbmNhdChmaWVsZE5hbWUsIFwiIGZpZWxkIGNvbmZpZyBtdXN0IGJlIGFuIG9iamVjdC5cIikpO1xuICAgICEoJ2lzRGVwcmVjYXRlZCcgaW4gZmllbGRDb25maWcpIHx8IGRldkFzc2VydCgwLCBcIlwiLmNvbmNhdChjb25maWcubmFtZSwgXCIuXCIpLmNvbmNhdChmaWVsZE5hbWUsIFwiIHNob3VsZCBwcm92aWRlIFxcXCJkZXByZWNhdGlvblJlYXNvblxcXCIgaW5zdGVhZCBvZiBcXFwiaXNEZXByZWNhdGVkXFxcIi5cIikpO1xuICAgIGZpZWxkQ29uZmlnLnJlc29sdmUgPT0gbnVsbCB8fCB0eXBlb2YgZmllbGRDb25maWcucmVzb2x2ZSA9PT0gJ2Z1bmN0aW9uJyB8fCBkZXZBc3NlcnQoMCwgXCJcIi5jb25jYXQoY29uZmlnLm5hbWUsIFwiLlwiKS5jb25jYXQoZmllbGROYW1lLCBcIiBmaWVsZCByZXNvbHZlciBtdXN0IGJlIGEgZnVuY3Rpb24gaWYgXCIpICsgXCJwcm92aWRlZCwgYnV0IGdvdDogXCIuY29uY2F0KGluc3BlY3QoZmllbGRDb25maWcucmVzb2x2ZSksIFwiLlwiKSk7XG4gICAgdmFyIGFyZ3NDb25maWcgPSAoX2ZpZWxkQ29uZmlnJGFyZ3MgPSBmaWVsZENvbmZpZy5hcmdzKSAhPT0gbnVsbCAmJiBfZmllbGRDb25maWckYXJncyAhPT0gdm9pZCAwID8gX2ZpZWxkQ29uZmlnJGFyZ3MgOiB7fTtcbiAgICBpc1BsYWluT2JqKGFyZ3NDb25maWcpIHx8IGRldkFzc2VydCgwLCBcIlwiLmNvbmNhdChjb25maWcubmFtZSwgXCIuXCIpLmNvbmNhdChmaWVsZE5hbWUsIFwiIGFyZ3MgbXVzdCBiZSBhbiBvYmplY3Qgd2l0aCBhcmd1bWVudCBuYW1lcyBhcyBrZXlzLlwiKSk7XG4gICAgdmFyIGFyZ3MgPSBvYmplY3RFbnRyaWVzKGFyZ3NDb25maWcpLm1hcChmdW5jdGlvbiAoX3JlZikge1xuICAgICAgdmFyIGFyZ05hbWUgPSBfcmVmWzBdLFxuICAgICAgICAgIGFyZ0NvbmZpZyA9IF9yZWZbMV07XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBhcmdOYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogYXJnQ29uZmlnLmRlc2NyaXB0aW9uLFxuICAgICAgICB0eXBlOiBhcmdDb25maWcudHlwZSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBhcmdDb25maWcuZGVmYXVsdFZhbHVlLFxuICAgICAgICBkZXByZWNhdGlvblJlYXNvbjogYXJnQ29uZmlnLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgICAgICBleHRlbnNpb25zOiBhcmdDb25maWcuZXh0ZW5zaW9ucyAmJiB0b09iak1hcChhcmdDb25maWcuZXh0ZW5zaW9ucyksXG4gICAgICAgIGFzdE5vZGU6IGFyZ0NvbmZpZy5hc3ROb2RlXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBmaWVsZE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogZmllbGRDb25maWcuZGVzY3JpcHRpb24sXG4gICAgICB0eXBlOiBmaWVsZENvbmZpZy50eXBlLFxuICAgICAgYXJnczogYXJncyxcbiAgICAgIHJlc29sdmU6IGZpZWxkQ29uZmlnLnJlc29sdmUsXG4gICAgICBzdWJzY3JpYmU6IGZpZWxkQ29uZmlnLnN1YnNjcmliZSxcbiAgICAgIGlzRGVwcmVjYXRlZDogZmllbGRDb25maWcuZGVwcmVjYXRpb25SZWFzb24gIT0gbnVsbCxcbiAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiBmaWVsZENvbmZpZy5kZXByZWNhdGlvblJlYXNvbixcbiAgICAgIGV4dGVuc2lvbnM6IGZpZWxkQ29uZmlnLmV4dGVuc2lvbnMgJiYgdG9PYmpNYXAoZmllbGRDb25maWcuZXh0ZW5zaW9ucyksXG4gICAgICBhc3ROb2RlOiBmaWVsZENvbmZpZy5hc3ROb2RlXG4gICAgfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGlzUGxhaW5PYmoob2JqKSB7XG4gIHJldHVybiBpc09iamVjdExpa2Uob2JqKSAmJiAhQXJyYXkuaXNBcnJheShvYmopO1xufVxuXG5mdW5jdGlvbiBmaWVsZHNUb0ZpZWxkc0NvbmZpZyhmaWVsZHMpIHtcbiAgcmV0dXJuIG1hcFZhbHVlKGZpZWxkcywgZnVuY3Rpb24gKGZpZWxkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBmaWVsZC5kZXNjcmlwdGlvbixcbiAgICAgIHR5cGU6IGZpZWxkLnR5cGUsXG4gICAgICBhcmdzOiBhcmdzVG9BcmdzQ29uZmlnKGZpZWxkLmFyZ3MpLFxuICAgICAgcmVzb2x2ZTogZmllbGQucmVzb2x2ZSxcbiAgICAgIHN1YnNjcmliZTogZmllbGQuc3Vic2NyaWJlLFxuICAgICAgZGVwcmVjYXRpb25SZWFzb246IGZpZWxkLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgICAgZXh0ZW5zaW9uczogZmllbGQuZXh0ZW5zaW9ucyxcbiAgICAgIGFzdE5vZGU6IGZpZWxkLmFzdE5vZGVcbiAgICB9O1xuICB9KTtcbn1cbi8qKlxuICogQGludGVybmFsXG4gKi9cblxuXG5leHBvcnQgZnVuY3Rpb24gYXJnc1RvQXJnc0NvbmZpZyhhcmdzKSB7XG4gIHJldHVybiBrZXlWYWxNYXAoYXJncywgZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiBhcmcubmFtZTtcbiAgfSwgZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmlwdGlvbjogYXJnLmRlc2NyaXB0aW9uLFxuICAgICAgdHlwZTogYXJnLnR5cGUsXG4gICAgICBkZWZhdWx0VmFsdWU6IGFyZy5kZWZhdWx0VmFsdWUsXG4gICAgICBkZXByZWNhdGlvblJlYXNvbjogYXJnLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgICAgZXh0ZW5zaW9uczogYXJnLmV4dGVuc2lvbnMsXG4gICAgICBhc3ROb2RlOiBhcmcuYXN0Tm9kZVxuICAgIH07XG4gIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVxdWlyZWRBcmd1bWVudChhcmcpIHtcbiAgcmV0dXJuIGlzTm9uTnVsbFR5cGUoYXJnLnR5cGUpICYmIGFyZy5kZWZhdWx0VmFsdWUgPT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgVHlwZSBEZWZpbml0aW9uXG4gKlxuICogV2hlbiBhIGZpZWxkIGNhbiByZXR1cm4gb25lIG9mIGEgaGV0ZXJvZ2VuZW91cyBzZXQgb2YgdHlwZXMsIGEgSW50ZXJmYWNlIHR5cGVcbiAqIGlzIHVzZWQgdG8gZGVzY3JpYmUgd2hhdCB0eXBlcyBhcmUgcG9zc2libGUsIHdoYXQgZmllbGRzIGFyZSBpbiBjb21tb24gYWNyb3NzXG4gKiBhbGwgdHlwZXMsIGFzIHdlbGwgYXMgYSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgd2hpY2ggdHlwZSBpcyBhY3R1YWxseSB1c2VkXG4gKiB3aGVuIHRoZSBmaWVsZCBpcyByZXNvbHZlZC5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqICAgICBjb25zdCBFbnRpdHlUeXBlID0gbmV3IEdyYXBoUUxJbnRlcmZhY2VUeXBlKHtcbiAqICAgICAgIG5hbWU6ICdFbnRpdHknLFxuICogICAgICAgZmllbGRzOiB7XG4gKiAgICAgICAgIG5hbWU6IHsgdHlwZTogR3JhcGhRTFN0cmluZyB9XG4gKiAgICAgICB9XG4gKiAgICAgfSk7XG4gKlxuICovXG5leHBvcnQgdmFyIEdyYXBoUUxJbnRlcmZhY2VUeXBlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gR3JhcGhRTEludGVyZmFjZVR5cGUoY29uZmlnKSB7XG4gICAgdGhpcy5uYW1lID0gY29uZmlnLm5hbWU7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLnJlc29sdmVUeXBlID0gY29uZmlnLnJlc29sdmVUeXBlO1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IGNvbmZpZy5leHRlbnNpb25zICYmIHRvT2JqTWFwKGNvbmZpZy5leHRlbnNpb25zKTtcbiAgICB0aGlzLmFzdE5vZGUgPSBjb25maWcuYXN0Tm9kZTtcbiAgICB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzID0gdW5kZWZpbmVJZkVtcHR5KGNvbmZpZy5leHRlbnNpb25BU1ROb2Rlcyk7XG4gICAgdGhpcy5fZmllbGRzID0gZGVmaW5lRmllbGRNYXAuYmluZCh1bmRlZmluZWQsIGNvbmZpZyk7XG4gICAgdGhpcy5faW50ZXJmYWNlcyA9IGRlZmluZUludGVyZmFjZXMuYmluZCh1bmRlZmluZWQsIGNvbmZpZyk7XG4gICAgdHlwZW9mIGNvbmZpZy5uYW1lID09PSAnc3RyaW5nJyB8fCBkZXZBc3NlcnQoMCwgJ011c3QgcHJvdmlkZSBuYW1lLicpO1xuICAgIGNvbmZpZy5yZXNvbHZlVHlwZSA9PSBudWxsIHx8IHR5cGVvZiBjb25maWcucmVzb2x2ZVR5cGUgPT09ICdmdW5jdGlvbicgfHwgZGV2QXNzZXJ0KDAsIFwiXCIuY29uY2F0KHRoaXMubmFtZSwgXCIgbXVzdCBwcm92aWRlIFxcXCJyZXNvbHZlVHlwZVxcXCIgYXMgYSBmdW5jdGlvbiwgXCIpICsgXCJidXQgZ290OiBcIi5jb25jYXQoaW5zcGVjdChjb25maWcucmVzb2x2ZVR5cGUpLCBcIi5cIikpO1xuICB9XG5cbiAgdmFyIF9wcm90bzMgPSBHcmFwaFFMSW50ZXJmYWNlVHlwZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvMy5nZXRGaWVsZHMgPSBmdW5jdGlvbiBnZXRGaWVsZHMoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9maWVsZHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2ZpZWxkcygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9maWVsZHM7XG4gIH07XG5cbiAgX3Byb3RvMy5nZXRJbnRlcmZhY2VzID0gZnVuY3Rpb24gZ2V0SW50ZXJmYWNlcygpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuX2ludGVyZmFjZXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuX2ludGVyZmFjZXMgPSB0aGlzLl9pbnRlcmZhY2VzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2ludGVyZmFjZXM7XG4gIH07XG5cbiAgX3Byb3RvMy50b0NvbmZpZyA9IGZ1bmN0aW9uIHRvQ29uZmlnKCkge1xuICAgIHZhciBfdGhpcyRleHRlbnNpb25BU1ROb2QyO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgaW50ZXJmYWNlczogdGhpcy5nZXRJbnRlcmZhY2VzKCksXG4gICAgICBmaWVsZHM6IGZpZWxkc1RvRmllbGRzQ29uZmlnKHRoaXMuZ2V0RmllbGRzKCkpLFxuICAgICAgcmVzb2x2ZVR5cGU6IHRoaXMucmVzb2x2ZVR5cGUsXG4gICAgICBleHRlbnNpb25zOiB0aGlzLmV4dGVuc2lvbnMsXG4gICAgICBhc3ROb2RlOiB0aGlzLmFzdE5vZGUsXG4gICAgICBleHRlbnNpb25BU1ROb2RlczogKF90aGlzJGV4dGVuc2lvbkFTVE5vZDIgPSB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzKSAhPT0gbnVsbCAmJiBfdGhpcyRleHRlbnNpb25BU1ROb2QyICE9PSB2b2lkIDAgPyBfdGhpcyRleHRlbnNpb25BU1ROb2QyIDogW11cbiAgICB9O1xuICB9O1xuXG4gIF9wcm90bzMudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9O1xuXG4gIF9wcm90bzMudG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCk7XG4gIH0gLy8gJEZsb3dGaXhNZVt1bnN1cHBvcnRlZC1zeW50YXhdIEZsb3cgZG9lc24ndCBzdXBwb3J0IGNvbXB1dGVkIHByb3BlcnRpZXMgeWV0XG4gIDtcblxuICBfY3JlYXRlQ2xhc3MoR3JhcGhRTEludGVyZmFjZVR5cGUsIFt7XG4gICAga2V5OiBTWU1CT0xfVE9fU1RSSU5HX1RBRyxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiAnR3JhcGhRTEludGVyZmFjZVR5cGUnO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBHcmFwaFFMSW50ZXJmYWNlVHlwZTtcbn0oKTsgLy8gUHJpbnQgYSBzaW1wbGlmaWVkIGZvcm0gd2hlbiBhcHBlYXJpbmcgaW4gYGluc3BlY3RgIGFuZCBgdXRpbC5pbnNwZWN0YC5cblxuZGVmaW5lSW5zcGVjdChHcmFwaFFMSW50ZXJmYWNlVHlwZSk7XG5cbi8qKlxuICogVW5pb24gVHlwZSBEZWZpbml0aW9uXG4gKlxuICogV2hlbiBhIGZpZWxkIGNhbiByZXR1cm4gb25lIG9mIGEgaGV0ZXJvZ2VuZW91cyBzZXQgb2YgdHlwZXMsIGEgVW5pb24gdHlwZVxuICogaXMgdXNlZCB0byBkZXNjcmliZSB3aGF0IHR5cGVzIGFyZSBwb3NzaWJsZSBhcyB3ZWxsIGFzIHByb3ZpZGluZyBhIGZ1bmN0aW9uXG4gKiB0byBkZXRlcm1pbmUgd2hpY2ggdHlwZSBpcyBhY3R1YWxseSB1c2VkIHdoZW4gdGhlIGZpZWxkIGlzIHJlc29sdmVkLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogICAgIGNvbnN0IFBldFR5cGUgPSBuZXcgR3JhcGhRTFVuaW9uVHlwZSh7XG4gKiAgICAgICBuYW1lOiAnUGV0JyxcbiAqICAgICAgIHR5cGVzOiBbIERvZ1R5cGUsIENhdFR5cGUgXSxcbiAqICAgICAgIHJlc29sdmVUeXBlKHZhbHVlKSB7XG4gKiAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERvZykge1xuICogICAgICAgICAgIHJldHVybiBEb2dUeXBlO1xuICogICAgICAgICB9XG4gKiAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIENhdCkge1xuICogICAgICAgICAgIHJldHVybiBDYXRUeXBlO1xuICogICAgICAgICB9XG4gKiAgICAgICB9XG4gKiAgICAgfSk7XG4gKlxuICovXG5leHBvcnQgdmFyIEdyYXBoUUxVbmlvblR5cGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHcmFwaFFMVW5pb25UeXBlKGNvbmZpZykge1xuICAgIHRoaXMubmFtZSA9IGNvbmZpZy5uYW1lO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBjb25maWcuZGVzY3JpcHRpb247XG4gICAgdGhpcy5yZXNvbHZlVHlwZSA9IGNvbmZpZy5yZXNvbHZlVHlwZTtcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSBjb25maWcuZXh0ZW5zaW9ucyAmJiB0b09iak1hcChjb25maWcuZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5hc3ROb2RlID0gY29uZmlnLmFzdE5vZGU7XG4gICAgdGhpcy5leHRlbnNpb25BU1ROb2RlcyA9IHVuZGVmaW5lSWZFbXB0eShjb25maWcuZXh0ZW5zaW9uQVNUTm9kZXMpO1xuICAgIHRoaXMuX3R5cGVzID0gZGVmaW5lVHlwZXMuYmluZCh1bmRlZmluZWQsIGNvbmZpZyk7XG4gICAgdHlwZW9mIGNvbmZpZy5uYW1lID09PSAnc3RyaW5nJyB8fCBkZXZBc3NlcnQoMCwgJ011c3QgcHJvdmlkZSBuYW1lLicpO1xuICAgIGNvbmZpZy5yZXNvbHZlVHlwZSA9PSBudWxsIHx8IHR5cGVvZiBjb25maWcucmVzb2x2ZVR5cGUgPT09ICdmdW5jdGlvbicgfHwgZGV2QXNzZXJ0KDAsIFwiXCIuY29uY2F0KHRoaXMubmFtZSwgXCIgbXVzdCBwcm92aWRlIFxcXCJyZXNvbHZlVHlwZVxcXCIgYXMgYSBmdW5jdGlvbiwgXCIpICsgXCJidXQgZ290OiBcIi5jb25jYXQoaW5zcGVjdChjb25maWcucmVzb2x2ZVR5cGUpLCBcIi5cIikpO1xuICB9XG5cbiAgdmFyIF9wcm90bzQgPSBHcmFwaFFMVW5pb25UeXBlLnByb3RvdHlwZTtcblxuICBfcHJvdG80LmdldFR5cGVzID0gZnVuY3Rpb24gZ2V0VHlwZXMoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl90eXBlcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5fdHlwZXMgPSB0aGlzLl90eXBlcygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl90eXBlcztcbiAgfTtcblxuICBfcHJvdG80LnRvQ29uZmlnID0gZnVuY3Rpb24gdG9Db25maWcoKSB7XG4gICAgdmFyIF90aGlzJGV4dGVuc2lvbkFTVE5vZDM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICB0eXBlczogdGhpcy5nZXRUeXBlcygpLFxuICAgICAgcmVzb2x2ZVR5cGU6IHRoaXMucmVzb2x2ZVR5cGUsXG4gICAgICBleHRlbnNpb25zOiB0aGlzLmV4dGVuc2lvbnMsXG4gICAgICBhc3ROb2RlOiB0aGlzLmFzdE5vZGUsXG4gICAgICBleHRlbnNpb25BU1ROb2RlczogKF90aGlzJGV4dGVuc2lvbkFTVE5vZDMgPSB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzKSAhPT0gbnVsbCAmJiBfdGhpcyRleHRlbnNpb25BU1ROb2QzICE9PSB2b2lkIDAgPyBfdGhpcyRleHRlbnNpb25BU1ROb2QzIDogW11cbiAgICB9O1xuICB9O1xuXG4gIF9wcm90bzQudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9O1xuXG4gIF9wcm90bzQudG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCk7XG4gIH0gLy8gJEZsb3dGaXhNZVt1bnN1cHBvcnRlZC1zeW50YXhdIEZsb3cgZG9lc24ndCBzdXBwb3J0IGNvbXB1dGVkIHByb3BlcnRpZXMgeWV0XG4gIDtcblxuICBfY3JlYXRlQ2xhc3MoR3JhcGhRTFVuaW9uVHlwZSwgW3tcbiAgICBrZXk6IFNZTUJPTF9UT19TVFJJTkdfVEFHLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuICdHcmFwaFFMVW5pb25UeXBlJztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gR3JhcGhRTFVuaW9uVHlwZTtcbn0oKTsgLy8gUHJpbnQgYSBzaW1wbGlmaWVkIGZvcm0gd2hlbiBhcHBlYXJpbmcgaW4gYGluc3BlY3RgIGFuZCBgdXRpbC5pbnNwZWN0YC5cblxuZGVmaW5lSW5zcGVjdChHcmFwaFFMVW5pb25UeXBlKTtcblxuZnVuY3Rpb24gZGVmaW5lVHlwZXMoY29uZmlnKSB7XG4gIHZhciB0eXBlcyA9IHJlc29sdmVUaHVuayhjb25maWcudHlwZXMpO1xuICBBcnJheS5pc0FycmF5KHR5cGVzKSB8fCBkZXZBc3NlcnQoMCwgXCJNdXN0IHByb3ZpZGUgQXJyYXkgb2YgdHlwZXMgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIHN1Y2ggYW4gYXJyYXkgZm9yIFVuaW9uIFwiLmNvbmNhdChjb25maWcubmFtZSwgXCIuXCIpKTtcbiAgcmV0dXJuIHR5cGVzO1xufVxuXG4vKipcbiAqIEVudW0gVHlwZSBEZWZpbml0aW9uXG4gKlxuICogU29tZSBsZWFmIHZhbHVlcyBvZiByZXF1ZXN0cyBhbmQgaW5wdXQgdmFsdWVzIGFyZSBFbnVtcy4gR3JhcGhRTCBzZXJpYWxpemVzXG4gKiBFbnVtIHZhbHVlcyBhcyBzdHJpbmdzLCBob3dldmVyIGludGVybmFsbHkgRW51bXMgY2FuIGJlIHJlcHJlc2VudGVkIGJ5IGFueVxuICoga2luZCBvZiB0eXBlLCBvZnRlbiBpbnRlZ2Vycy5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqICAgICBjb25zdCBSR0JUeXBlID0gbmV3IEdyYXBoUUxFbnVtVHlwZSh7XG4gKiAgICAgICBuYW1lOiAnUkdCJyxcbiAqICAgICAgIHZhbHVlczoge1xuICogICAgICAgICBSRUQ6IHsgdmFsdWU6IDAgfSxcbiAqICAgICAgICAgR1JFRU46IHsgdmFsdWU6IDEgfSxcbiAqICAgICAgICAgQkxVRTogeyB2YWx1ZTogMiB9XG4gKiAgICAgICB9XG4gKiAgICAgfSk7XG4gKlxuICogTm90ZTogSWYgYSB2YWx1ZSBpcyBub3QgcHJvdmlkZWQgaW4gYSBkZWZpbml0aW9uLCB0aGUgbmFtZSBvZiB0aGUgZW51bSB2YWx1ZVxuICogd2lsbCBiZSB1c2VkIGFzIGl0cyBpbnRlcm5hbCB2YWx1ZS5cbiAqL1xuZXhwb3J0IHZhciBHcmFwaFFMRW51bVR5cGVcbi8qIDxUPiAqL1xuPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHcmFwaFFMRW51bVR5cGUoY29uZmlnKSB7XG4gICAgdGhpcy5uYW1lID0gY29uZmlnLm5hbWU7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSBjb25maWcuZXh0ZW5zaW9ucyAmJiB0b09iak1hcChjb25maWcuZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5hc3ROb2RlID0gY29uZmlnLmFzdE5vZGU7XG4gICAgdGhpcy5leHRlbnNpb25BU1ROb2RlcyA9IHVuZGVmaW5lSWZFbXB0eShjb25maWcuZXh0ZW5zaW9uQVNUTm9kZXMpO1xuICAgIHRoaXMuX3ZhbHVlcyA9IGRlZmluZUVudW1WYWx1ZXModGhpcy5uYW1lLCBjb25maWcudmFsdWVzKTtcbiAgICB0aGlzLl92YWx1ZUxvb2t1cCA9IG5ldyBNYXAodGhpcy5fdmFsdWVzLm1hcChmdW5jdGlvbiAoZW51bVZhbHVlKSB7XG4gICAgICByZXR1cm4gW2VudW1WYWx1ZS52YWx1ZSwgZW51bVZhbHVlXTtcbiAgICB9KSk7XG4gICAgdGhpcy5fbmFtZUxvb2t1cCA9IGtleU1hcCh0aGlzLl92YWx1ZXMsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLm5hbWU7XG4gICAgfSk7XG4gICAgdHlwZW9mIGNvbmZpZy5uYW1lID09PSAnc3RyaW5nJyB8fCBkZXZBc3NlcnQoMCwgJ011c3QgcHJvdmlkZSBuYW1lLicpO1xuICB9XG5cbiAgdmFyIF9wcm90bzUgPSBHcmFwaFFMRW51bVR5cGUucHJvdG90eXBlO1xuXG4gIF9wcm90bzUuZ2V0VmFsdWVzID0gZnVuY3Rpb24gZ2V0VmFsdWVzKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZXM7XG4gIH07XG5cbiAgX3Byb3RvNS5nZXRWYWx1ZSA9IGZ1bmN0aW9uIGdldFZhbHVlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZUxvb2t1cFtuYW1lXTtcbiAgfTtcblxuICBfcHJvdG81LnNlcmlhbGl6ZSA9IGZ1bmN0aW9uIHNlcmlhbGl6ZShvdXRwdXRWYWx1ZSkge1xuICAgIHZhciBlbnVtVmFsdWUgPSB0aGlzLl92YWx1ZUxvb2t1cC5nZXQob3V0cHV0VmFsdWUpO1xuXG4gICAgaWYgKGVudW1WYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFwiRW51bSBcXFwiXCIuY29uY2F0KHRoaXMubmFtZSwgXCJcXFwiIGNhbm5vdCByZXByZXNlbnQgdmFsdWU6IFwiKS5jb25jYXQoaW5zcGVjdChvdXRwdXRWYWx1ZSkpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW51bVZhbHVlLm5hbWU7XG4gIH07XG5cbiAgX3Byb3RvNS5wYXJzZVZhbHVlID0gZnVuY3Rpb24gcGFyc2VWYWx1ZShpbnB1dFZhbHVlKVxuICAvKiBUICovXG4gIHtcbiAgICBpZiAodHlwZW9mIGlucHV0VmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgdmFsdWVTdHIgPSBpbnNwZWN0KGlucHV0VmFsdWUpO1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcIkVudW0gXFxcIlwiLmNvbmNhdCh0aGlzLm5hbWUsIFwiXFxcIiBjYW5ub3QgcmVwcmVzZW50IG5vbi1zdHJpbmcgdmFsdWU6IFwiKS5jb25jYXQodmFsdWVTdHIsIFwiLlwiKSArIGRpZFlvdU1lYW5FbnVtVmFsdWUodGhpcywgdmFsdWVTdHIpKTtcbiAgICB9XG5cbiAgICB2YXIgZW51bVZhbHVlID0gdGhpcy5nZXRWYWx1ZShpbnB1dFZhbHVlKTtcblxuICAgIGlmIChlbnVtVmFsdWUgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcIlZhbHVlIFxcXCJcIi5jb25jYXQoaW5wdXRWYWx1ZSwgXCJcXFwiIGRvZXMgbm90IGV4aXN0IGluIFxcXCJcIikuY29uY2F0KHRoaXMubmFtZSwgXCJcXFwiIGVudW0uXCIpICsgZGlkWW91TWVhbkVudW1WYWx1ZSh0aGlzLCBpbnB1dFZhbHVlKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVudW1WYWx1ZS52YWx1ZTtcbiAgfTtcblxuICBfcHJvdG81LnBhcnNlTGl0ZXJhbCA9IGZ1bmN0aW9uIHBhcnNlTGl0ZXJhbCh2YWx1ZU5vZGUsIF92YXJpYWJsZXMpXG4gIC8qIFQgKi9cbiAge1xuICAgIC8vIE5vdGU6IHZhcmlhYmxlcyB3aWxsIGJlIHJlc29sdmVkIHRvIGEgdmFsdWUgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cbiAgICBpZiAodmFsdWVOb2RlLmtpbmQgIT09IEtpbmQuRU5VTSkge1xuICAgICAgdmFyIHZhbHVlU3RyID0gcHJpbnQodmFsdWVOb2RlKTtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXCJFbnVtIFxcXCJcIi5jb25jYXQodGhpcy5uYW1lLCBcIlxcXCIgY2Fubm90IHJlcHJlc2VudCBub24tZW51bSB2YWx1ZTogXCIpLmNvbmNhdCh2YWx1ZVN0ciwgXCIuXCIpICsgZGlkWW91TWVhbkVudW1WYWx1ZSh0aGlzLCB2YWx1ZVN0ciksIHZhbHVlTm9kZSk7XG4gICAgfVxuXG4gICAgdmFyIGVudW1WYWx1ZSA9IHRoaXMuZ2V0VmFsdWUodmFsdWVOb2RlLnZhbHVlKTtcblxuICAgIGlmIChlbnVtVmFsdWUgPT0gbnVsbCkge1xuICAgICAgdmFyIF92YWx1ZVN0ciA9IHByaW50KHZhbHVlTm9kZSk7XG5cbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXCJWYWx1ZSBcXFwiXCIuY29uY2F0KF92YWx1ZVN0ciwgXCJcXFwiIGRvZXMgbm90IGV4aXN0IGluIFxcXCJcIikuY29uY2F0KHRoaXMubmFtZSwgXCJcXFwiIGVudW0uXCIpICsgZGlkWW91TWVhbkVudW1WYWx1ZSh0aGlzLCBfdmFsdWVTdHIpLCB2YWx1ZU5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBlbnVtVmFsdWUudmFsdWU7XG4gIH07XG5cbiAgX3Byb3RvNS50b0NvbmZpZyA9IGZ1bmN0aW9uIHRvQ29uZmlnKCkge1xuICAgIHZhciBfdGhpcyRleHRlbnNpb25BU1ROb2Q0O1xuXG4gICAgdmFyIHZhbHVlcyA9IGtleVZhbE1hcCh0aGlzLmdldFZhbHVlcygpLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5uYW1lO1xuICAgIH0sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVzY3JpcHRpb246IHZhbHVlLmRlc2NyaXB0aW9uLFxuICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiB2YWx1ZS5kZXByZWNhdGlvblJlYXNvbixcbiAgICAgICAgZXh0ZW5zaW9uczogdmFsdWUuZXh0ZW5zaW9ucyxcbiAgICAgICAgYXN0Tm9kZTogdmFsdWUuYXN0Tm9kZVxuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICB2YWx1ZXM6IHZhbHVlcyxcbiAgICAgIGV4dGVuc2lvbnM6IHRoaXMuZXh0ZW5zaW9ucyxcbiAgICAgIGFzdE5vZGU6IHRoaXMuYXN0Tm9kZSxcbiAgICAgIGV4dGVuc2lvbkFTVE5vZGVzOiAoX3RoaXMkZXh0ZW5zaW9uQVNUTm9kNCA9IHRoaXMuZXh0ZW5zaW9uQVNUTm9kZXMpICE9PSBudWxsICYmIF90aGlzJGV4dGVuc2lvbkFTVE5vZDQgIT09IHZvaWQgMCA/IF90aGlzJGV4dGVuc2lvbkFTVE5vZDQgOiBbXVxuICAgIH07XG4gIH07XG5cbiAgX3Byb3RvNS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH07XG5cbiAgX3Byb3RvNS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfSAvLyAkRmxvd0ZpeE1lW3Vuc3VwcG9ydGVkLXN5bnRheF0gRmxvdyBkb2Vzbid0IHN1cHBvcnQgY29tcHV0ZWQgcHJvcGVydGllcyB5ZXRcbiAgO1xuXG4gIF9jcmVhdGVDbGFzcyhHcmFwaFFMRW51bVR5cGUsIFt7XG4gICAga2V5OiBTWU1CT0xfVE9fU1RSSU5HX1RBRyxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiAnR3JhcGhRTEVudW1UeXBlJztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gR3JhcGhRTEVudW1UeXBlO1xufSgpOyAvLyBQcmludCBhIHNpbXBsaWZpZWQgZm9ybSB3aGVuIGFwcGVhcmluZyBpbiBgaW5zcGVjdGAgYW5kIGB1dGlsLmluc3BlY3RgLlxuXG5kZWZpbmVJbnNwZWN0KEdyYXBoUUxFbnVtVHlwZSk7XG5cbmZ1bmN0aW9uIGRpZFlvdU1lYW5FbnVtVmFsdWUoZW51bVR5cGUsIHVua25vd25WYWx1ZVN0cikge1xuICB2YXIgYWxsTmFtZXMgPSBlbnVtVHlwZS5nZXRWYWx1ZXMoKS5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLm5hbWU7XG4gIH0pO1xuICB2YXIgc3VnZ2VzdGVkVmFsdWVzID0gc3VnZ2VzdGlvbkxpc3QodW5rbm93blZhbHVlU3RyLCBhbGxOYW1lcyk7XG4gIHJldHVybiBkaWRZb3VNZWFuKCd0aGUgZW51bSB2YWx1ZScsIHN1Z2dlc3RlZFZhbHVlcyk7XG59XG5cbmZ1bmN0aW9uIGRlZmluZUVudW1WYWx1ZXModHlwZU5hbWUsIHZhbHVlTWFwKSB7XG4gIGlzUGxhaW5PYmoodmFsdWVNYXApIHx8IGRldkFzc2VydCgwLCBcIlwiLmNvbmNhdCh0eXBlTmFtZSwgXCIgdmFsdWVzIG11c3QgYmUgYW4gb2JqZWN0IHdpdGggdmFsdWUgbmFtZXMgYXMga2V5cy5cIikpO1xuICByZXR1cm4gb2JqZWN0RW50cmllcyh2YWx1ZU1hcCkubWFwKGZ1bmN0aW9uIChfcmVmMikge1xuICAgIHZhciB2YWx1ZU5hbWUgPSBfcmVmMlswXSxcbiAgICAgICAgdmFsdWVDb25maWcgPSBfcmVmMlsxXTtcbiAgICBpc1BsYWluT2JqKHZhbHVlQ29uZmlnKSB8fCBkZXZBc3NlcnQoMCwgXCJcIi5jb25jYXQodHlwZU5hbWUsIFwiLlwiKS5jb25jYXQodmFsdWVOYW1lLCBcIiBtdXN0IHJlZmVyIHRvIGFuIG9iamVjdCB3aXRoIGEgXFxcInZhbHVlXFxcIiBrZXkgXCIpICsgXCJyZXByZXNlbnRpbmcgYW4gaW50ZXJuYWwgdmFsdWUgYnV0IGdvdDogXCIuY29uY2F0KGluc3BlY3QodmFsdWVDb25maWcpLCBcIi5cIikpO1xuICAgICEoJ2lzRGVwcmVjYXRlZCcgaW4gdmFsdWVDb25maWcpIHx8IGRldkFzc2VydCgwLCBcIlwiLmNvbmNhdCh0eXBlTmFtZSwgXCIuXCIpLmNvbmNhdCh2YWx1ZU5hbWUsIFwiIHNob3VsZCBwcm92aWRlIFxcXCJkZXByZWNhdGlvblJlYXNvblxcXCIgaW5zdGVhZCBvZiBcXFwiaXNEZXByZWNhdGVkXFxcIi5cIikpO1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB2YWx1ZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogdmFsdWVDb25maWcuZGVzY3JpcHRpb24sXG4gICAgICB2YWx1ZTogdmFsdWVDb25maWcudmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlQ29uZmlnLnZhbHVlIDogdmFsdWVOYW1lLFxuICAgICAgaXNEZXByZWNhdGVkOiB2YWx1ZUNvbmZpZy5kZXByZWNhdGlvblJlYXNvbiAhPSBudWxsLFxuICAgICAgZGVwcmVjYXRpb25SZWFzb246IHZhbHVlQ29uZmlnLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgICAgZXh0ZW5zaW9uczogdmFsdWVDb25maWcuZXh0ZW5zaW9ucyAmJiB0b09iak1hcCh2YWx1ZUNvbmZpZy5leHRlbnNpb25zKSxcbiAgICAgIGFzdE5vZGU6IHZhbHVlQ29uZmlnLmFzdE5vZGVcbiAgICB9O1xuICB9KTtcbn1cblxuLyoqXG4gKiBJbnB1dCBPYmplY3QgVHlwZSBEZWZpbml0aW9uXG4gKlxuICogQW4gaW5wdXQgb2JqZWN0IGRlZmluZXMgYSBzdHJ1Y3R1cmVkIGNvbGxlY3Rpb24gb2YgZmllbGRzIHdoaWNoIG1heSBiZVxuICogc3VwcGxpZWQgdG8gYSBmaWVsZCBhcmd1bWVudC5cbiAqXG4gKiBVc2luZyBgTm9uTnVsbGAgd2lsbCBlbnN1cmUgdGhhdCBhIHZhbHVlIG11c3QgYmUgcHJvdmlkZWQgYnkgdGhlIHF1ZXJ5XG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiAgICAgY29uc3QgR2VvUG9pbnQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gKiAgICAgICBuYW1lOiAnR2VvUG9pbnQnLFxuICogICAgICAgZmllbGRzOiB7XG4gKiAgICAgICAgIGxhdDogeyB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEZsb2F0KSB9LFxuICogICAgICAgICBsb246IHsgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxGbG9hdCkgfSxcbiAqICAgICAgICAgYWx0OiB7IHR5cGU6IEdyYXBoUUxGbG9hdCwgZGVmYXVsdFZhbHVlOiAwIH0sXG4gKiAgICAgICB9XG4gKiAgICAgfSk7XG4gKlxuICovXG5leHBvcnQgdmFyIEdyYXBoUUxJbnB1dE9iamVjdFR5cGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKGNvbmZpZykge1xuICAgIHRoaXMubmFtZSA9IGNvbmZpZy5uYW1lO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBjb25maWcuZGVzY3JpcHRpb247XG4gICAgdGhpcy5leHRlbnNpb25zID0gY29uZmlnLmV4dGVuc2lvbnMgJiYgdG9PYmpNYXAoY29uZmlnLmV4dGVuc2lvbnMpO1xuICAgIHRoaXMuYXN0Tm9kZSA9IGNvbmZpZy5hc3ROb2RlO1xuICAgIHRoaXMuZXh0ZW5zaW9uQVNUTm9kZXMgPSB1bmRlZmluZUlmRW1wdHkoY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzKTtcbiAgICB0aGlzLl9maWVsZHMgPSBkZWZpbmVJbnB1dEZpZWxkTWFwLmJpbmQodW5kZWZpbmVkLCBjb25maWcpO1xuICAgIHR5cGVvZiBjb25maWcubmFtZSA9PT0gJ3N0cmluZycgfHwgZGV2QXNzZXJ0KDAsICdNdXN0IHByb3ZpZGUgbmFtZS4nKTtcbiAgfVxuXG4gIHZhciBfcHJvdG82ID0gR3JhcGhRTElucHV0T2JqZWN0VHlwZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvNi5nZXRGaWVsZHMgPSBmdW5jdGlvbiBnZXRGaWVsZHMoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9maWVsZHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2ZpZWxkcygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9maWVsZHM7XG4gIH07XG5cbiAgX3Byb3RvNi50b0NvbmZpZyA9IGZ1bmN0aW9uIHRvQ29uZmlnKCkge1xuICAgIHZhciBfdGhpcyRleHRlbnNpb25BU1ROb2Q1O1xuXG4gICAgdmFyIGZpZWxkcyA9IG1hcFZhbHVlKHRoaXMuZ2V0RmllbGRzKCksIGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVzY3JpcHRpb246IGZpZWxkLmRlc2NyaXB0aW9uLFxuICAgICAgICB0eXBlOiBmaWVsZC50eXBlLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGZpZWxkLmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgZXh0ZW5zaW9uczogZmllbGQuZXh0ZW5zaW9ucyxcbiAgICAgICAgYXN0Tm9kZTogZmllbGQuYXN0Tm9kZVxuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBmaWVsZHM6IGZpZWxkcyxcbiAgICAgIGV4dGVuc2lvbnM6IHRoaXMuZXh0ZW5zaW9ucyxcbiAgICAgIGFzdE5vZGU6IHRoaXMuYXN0Tm9kZSxcbiAgICAgIGV4dGVuc2lvbkFTVE5vZGVzOiAoX3RoaXMkZXh0ZW5zaW9uQVNUTm9kNSA9IHRoaXMuZXh0ZW5zaW9uQVNUTm9kZXMpICE9PSBudWxsICYmIF90aGlzJGV4dGVuc2lvbkFTVE5vZDUgIT09IHZvaWQgMCA/IF90aGlzJGV4dGVuc2lvbkFTVE5vZDUgOiBbXVxuICAgIH07XG4gIH07XG5cbiAgX3Byb3RvNi50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH07XG5cbiAgX3Byb3RvNi50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfSAvLyAkRmxvd0ZpeE1lW3Vuc3VwcG9ydGVkLXN5bnRheF0gRmxvdyBkb2Vzbid0IHN1cHBvcnQgY29tcHV0ZWQgcHJvcGVydGllcyB5ZXRcbiAgO1xuXG4gIF9jcmVhdGVDbGFzcyhHcmFwaFFMSW5wdXRPYmplY3RUeXBlLCBbe1xuICAgIGtleTogU1lNQk9MX1RPX1NUUklOR19UQUcsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gJ0dyYXBoUUxJbnB1dE9iamVjdFR5cGUnO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBHcmFwaFFMSW5wdXRPYmplY3RUeXBlO1xufSgpOyAvLyBQcmludCBhIHNpbXBsaWZpZWQgZm9ybSB3aGVuIGFwcGVhcmluZyBpbiBgaW5zcGVjdGAgYW5kIGB1dGlsLmluc3BlY3RgLlxuXG5kZWZpbmVJbnNwZWN0KEdyYXBoUUxJbnB1dE9iamVjdFR5cGUpO1xuXG5mdW5jdGlvbiBkZWZpbmVJbnB1dEZpZWxkTWFwKGNvbmZpZykge1xuICB2YXIgZmllbGRNYXAgPSByZXNvbHZlVGh1bmsoY29uZmlnLmZpZWxkcyk7XG4gIGlzUGxhaW5PYmooZmllbGRNYXApIHx8IGRldkFzc2VydCgwLCBcIlwiLmNvbmNhdChjb25maWcubmFtZSwgXCIgZmllbGRzIG11c3QgYmUgYW4gb2JqZWN0IHdpdGggZmllbGQgbmFtZXMgYXMga2V5cyBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgc3VjaCBhbiBvYmplY3QuXCIpKTtcbiAgcmV0dXJuIG1hcFZhbHVlKGZpZWxkTWFwLCBmdW5jdGlvbiAoZmllbGRDb25maWcsIGZpZWxkTmFtZSkge1xuICAgICEoJ3Jlc29sdmUnIGluIGZpZWxkQ29uZmlnKSB8fCBkZXZBc3NlcnQoMCwgXCJcIi5jb25jYXQoY29uZmlnLm5hbWUsIFwiLlwiKS5jb25jYXQoZmllbGROYW1lLCBcIiBmaWVsZCBoYXMgYSByZXNvbHZlIHByb3BlcnR5LCBidXQgSW5wdXQgVHlwZXMgY2Fubm90IGRlZmluZSByZXNvbHZlcnMuXCIpKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogZmllbGROYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGZpZWxkQ29uZmlnLmRlc2NyaXB0aW9uLFxuICAgICAgdHlwZTogZmllbGRDb25maWcudHlwZSxcbiAgICAgIGRlZmF1bHRWYWx1ZTogZmllbGRDb25maWcuZGVmYXVsdFZhbHVlLFxuICAgICAgZGVwcmVjYXRpb25SZWFzb246IGZpZWxkQ29uZmlnLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgICAgZXh0ZW5zaW9uczogZmllbGRDb25maWcuZXh0ZW5zaW9ucyAmJiB0b09iak1hcChmaWVsZENvbmZpZy5leHRlbnNpb25zKSxcbiAgICAgIGFzdE5vZGU6IGZpZWxkQ29uZmlnLmFzdE5vZGVcbiAgICB9O1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVxdWlyZWRJbnB1dEZpZWxkKGZpZWxkKSB7XG4gIHJldHVybiBpc05vbk51bGxUeXBlKGZpZWxkLnR5cGUpICYmIGZpZWxkLmRlZmF1bHRWYWx1ZSA9PT0gdW5kZWZpbmVkO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/type/definition.mjs\n");
1005
1006/***/ }),
1007
1008/***/ "../../../node_modules/graphql/type/directives.mjs":
1009/*!************************************************************************************!*\
1010 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/type/directives.mjs ***!
1011 \************************************************************************************/
1012/*! exports provided: isDirective, assertDirective, GraphQLDirective, GraphQLIncludeDirective, GraphQLSkipDirective, GraphQLDeferDirective, GraphQLStreamDirective, DEFAULT_DEPRECATION_REASON, GraphQLDeprecatedDirective, GraphQLSpecifiedByDirective, specifiedDirectives, isSpecifiedDirective */
1013/***/ (function(module, __webpack_exports__, __webpack_require__) {
1014
1015"use strict";
1016eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDirective\", function() { return isDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertDirective\", function() { return assertDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLDirective\", function() { return GraphQLDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLIncludeDirective\", function() { return GraphQLIncludeDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSkipDirective\", function() { return GraphQLSkipDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLDeferDirective\", function() { return GraphQLDeferDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLStreamDirective\", function() { return GraphQLStreamDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_DEPRECATION_REASON\", function() { return DEFAULT_DEPRECATION_REASON; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLDeprecatedDirective\", function() { return GraphQLDeprecatedDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSpecifiedByDirective\", function() { return GraphQLSpecifiedByDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"specifiedDirectives\", function() { return specifiedDirectives; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSpecifiedDirective\", function() { return isSpecifiedDirective; });\n/* harmony import */ var _polyfills_objectEntries_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/objectEntries.mjs */ \"../../../node_modules/graphql/polyfills/objectEntries.mjs\");\n/* harmony import */ var _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../polyfills/symbols.mjs */ \"../../../node_modules/graphql/polyfills/symbols.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/toObjMap.mjs */ \"../../../node_modules/graphql/jsutils/toObjMap.mjs\");\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/instanceOf.mjs */ \"../../../node_modules/graphql/jsutils/instanceOf.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_defineInspect_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jsutils/defineInspect.mjs */ \"../../../node_modules/graphql/jsutils/defineInspect.mjs\");\n/* harmony import */ var _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../language/directiveLocation.mjs */ \"../../../node_modules/graphql/language/directiveLocation.mjs\");\n/* harmony import */ var _scalars_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Test if the given value is a GraphQL directive.\n */\n\n// eslint-disable-next-line no-redeclare\nfunction isDirective(directive) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(directive, GraphQLDirective);\n}\nfunction assertDirective(directive) {\n if (!isDirective(directive)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(directive), \" to be a GraphQL directive.\"));\n }\n\n return directive;\n}\n/**\n * Directives are used by the GraphQL runtime as a way of modifying execution\n * behavior. Type system creators will usually not create these directly.\n */\n\nvar GraphQLDirective = /*#__PURE__*/function () {\n function GraphQLDirective(config) {\n var _config$isRepeatable, _config$args;\n\n this.name = config.name;\n this.description = config.description;\n this.locations = config.locations;\n this.isRepeatable = (_config$isRepeatable = config.isRepeatable) !== null && _config$isRepeatable !== void 0 ? _config$isRepeatable : false;\n this.extensions = config.extensions && Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(config.extensions);\n this.astNode = config.astNode;\n config.name || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(0, 'Directive must be named.');\n Array.isArray(config.locations) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(0, \"@\".concat(config.name, \" locations must be an Array.\"));\n var args = (_config$args = config.args) !== null && _config$args !== void 0 ? _config$args : {};\n Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(args) && !Array.isArray(args) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(0, \"@\".concat(config.name, \" args must be an object with argument names as keys.\"));\n this.args = Object(_polyfills_objectEntries_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(args).map(function (_ref) {\n var argName = _ref[0],\n argConfig = _ref[1];\n return {\n name: argName,\n description: argConfig.description,\n type: argConfig.type,\n defaultValue: argConfig.defaultValue,\n deprecationReason: argConfig.deprecationReason,\n extensions: argConfig.extensions && Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(argConfig.extensions),\n astNode: argConfig.astNode\n };\n });\n }\n\n var _proto = GraphQLDirective.prototype;\n\n _proto.toConfig = function toConfig() {\n return {\n name: this.name,\n description: this.description,\n locations: this.locations,\n args: Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"argsToArgsConfig\"])(this.args),\n isRepeatable: this.isRepeatable,\n extensions: this.extensions,\n astNode: this.astNode\n };\n };\n\n _proto.toString = function toString() {\n return '@' + this.name;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n ;\n\n _createClass(GraphQLDirective, [{\n key: _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_1__[\"SYMBOL_TO_STRING_TAG\"],\n get: function get() {\n return 'GraphQLDirective';\n }\n }]);\n\n return GraphQLDirective;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\nObject(_jsutils_defineInspect_mjs__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(GraphQLDirective);\n\n/**\n * Used to conditionally include fields or fragments.\n */\nvar GraphQLIncludeDirective = new GraphQLDirective({\n name: 'include',\n description: 'Directs the executor to include this field or fragment only when the `if` argument is true.',\n locations: [_language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_8__[\"DirectiveLocation\"].FIELD, _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_8__[\"DirectiveLocation\"].FRAGMENT_SPREAD, _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_8__[\"DirectiveLocation\"].INLINE_FRAGMENT],\n args: {\n if: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_9__[\"GraphQLBoolean\"]),\n description: 'Included when true.'\n }\n }\n});\n/**\n * Used to conditionally skip (exclude) fields or fragments.\n */\n\nvar GraphQLSkipDirective = new GraphQLDirective({\n name: 'skip',\n description: 'Directs the executor to skip this field or fragment when the `if` argument is true.',\n locations: [_language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_8__[\"DirectiveLocation\"].FIELD, _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_8__[\"DirectiveLocation\"].FRAGMENT_SPREAD, _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_8__[\"DirectiveLocation\"].INLINE_FRAGMENT],\n args: {\n if: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_9__[\"GraphQLBoolean\"]),\n description: 'Skipped when true.'\n }\n }\n});\n/**\n * Used to conditionally defer fragments.\n */\n\nvar GraphQLDeferDirective = new GraphQLDirective({\n name: 'defer',\n description: 'Directs the executor to defer this fragment when the `if` argument is true or undefined.',\n locations: [_language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_8__[\"DirectiveLocation\"].FRAGMENT_SPREAD, _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_8__[\"DirectiveLocation\"].INLINE_FRAGMENT],\n args: {\n if: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_9__[\"GraphQLBoolean\"],\n description: 'Deferred when true or undefined.'\n },\n label: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_9__[\"GraphQLString\"],\n description: 'Unique name'\n }\n }\n});\n/**\n * Used to conditionally stream list fields.\n */\n\nvar GraphQLStreamDirective = new GraphQLDirective({\n name: 'stream',\n description: 'Directs the executor to stream plural fields when the `if` argument is true or undefined.',\n locations: [_language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_8__[\"DirectiveLocation\"].FIELD],\n args: {\n if: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_9__[\"GraphQLBoolean\"],\n description: 'Stream when true or undefined.'\n },\n label: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_9__[\"GraphQLString\"],\n description: 'Unique name'\n },\n initialCount: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_9__[\"GraphQLInt\"]),\n description: 'Number of items to return immediately'\n }\n }\n});\n/**\n * Constant string used for default reason for a deprecation.\n */\n\nvar DEFAULT_DEPRECATION_REASON = 'No longer supported';\n/**\n * Used to declare element of a GraphQL schema as deprecated.\n */\n\nvar GraphQLDeprecatedDirective = new GraphQLDirective({\n name: 'deprecated',\n description: 'Marks an element of a GraphQL schema as no longer supported.',\n locations: [_language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_8__[\"DirectiveLocation\"].FIELD_DEFINITION, _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_8__[\"DirectiveLocation\"].ARGUMENT_DEFINITION, _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_8__[\"DirectiveLocation\"].INPUT_FIELD_DEFINITION, _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_8__[\"DirectiveLocation\"].ENUM_VALUE],\n args: {\n reason: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_9__[\"GraphQLString\"],\n description: 'Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).',\n defaultValue: DEFAULT_DEPRECATION_REASON\n }\n }\n});\n/**\n * Used to provide a URL for specifying the behaviour of custom scalar definitions.\n */\n\nvar GraphQLSpecifiedByDirective = new GraphQLDirective({\n name: 'specifiedBy',\n description: 'Exposes a URL that specifies the behaviour of this scalar.',\n locations: [_language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_8__[\"DirectiveLocation\"].SCALAR],\n args: {\n url: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_9__[\"GraphQLString\"]),\n description: 'The URL that specifies the behaviour of this scalar.'\n }\n }\n});\n/**\n * The full list of specified directives.\n */\n\nvar specifiedDirectives = Object.freeze([GraphQLIncludeDirective, GraphQLSkipDirective, GraphQLDeferDirective, GraphQLStreamDirective, GraphQLDeprecatedDirective, GraphQLSpecifiedByDirective]);\nfunction isSpecifiedDirective(directive) {\n return specifiedDirectives.some(function (_ref2) {\n var name = _ref2.name;\n return name === directive.name;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9kaXJlY3RpdmVzLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3R5cGUvZGlyZWN0aXZlcy5tanM/Y2QzNiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmltcG9ydCBvYmplY3RFbnRyaWVzIGZyb20gXCIuLi9wb2x5ZmlsbHMvb2JqZWN0RW50cmllcy5tanNcIjtcbmltcG9ydCB7IFNZTUJPTF9UT19TVFJJTkdfVEFHIH0gZnJvbSBcIi4uL3BvbHlmaWxscy9zeW1ib2xzLm1qc1wiO1xuaW1wb3J0IGluc3BlY3QgZnJvbSBcIi4uL2pzdXRpbHMvaW5zcGVjdC5tanNcIjtcbmltcG9ydCB0b09iak1hcCBmcm9tIFwiLi4vanN1dGlscy90b09iak1hcC5tanNcIjtcbmltcG9ydCBkZXZBc3NlcnQgZnJvbSBcIi4uL2pzdXRpbHMvZGV2QXNzZXJ0Lm1qc1wiO1xuaW1wb3J0IGluc3RhbmNlT2YgZnJvbSBcIi4uL2pzdXRpbHMvaW5zdGFuY2VPZi5tanNcIjtcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSBcIi4uL2pzdXRpbHMvaXNPYmplY3RMaWtlLm1qc1wiO1xuaW1wb3J0IGRlZmluZUluc3BlY3QgZnJvbSBcIi4uL2pzdXRpbHMvZGVmaW5lSW5zcGVjdC5tanNcIjtcbmltcG9ydCB7IERpcmVjdGl2ZUxvY2F0aW9uIH0gZnJvbSBcIi4uL2xhbmd1YWdlL2RpcmVjdGl2ZUxvY2F0aW9uLm1qc1wiO1xuaW1wb3J0IHsgR3JhcGhRTFN0cmluZywgR3JhcGhRTEJvb2xlYW4sIEdyYXBoUUxJbnQgfSBmcm9tIFwiLi9zY2FsYXJzLm1qc1wiO1xuaW1wb3J0IHsgYXJnc1RvQXJnc0NvbmZpZywgR3JhcGhRTE5vbk51bGwgfSBmcm9tIFwiLi9kZWZpbml0aW9uLm1qc1wiO1xuLyoqXG4gKiBUZXN0IGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIEdyYXBoUUwgZGlyZWN0aXZlLlxuICovXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcbmV4cG9ydCBmdW5jdGlvbiBpc0RpcmVjdGl2ZShkaXJlY3RpdmUpIHtcbiAgcmV0dXJuIGluc3RhbmNlT2YoZGlyZWN0aXZlLCBHcmFwaFFMRGlyZWN0aXZlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnREaXJlY3RpdmUoZGlyZWN0aXZlKSB7XG4gIGlmICghaXNEaXJlY3RpdmUoZGlyZWN0aXZlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIFwiLmNvbmNhdChpbnNwZWN0KGRpcmVjdGl2ZSksIFwiIHRvIGJlIGEgR3JhcGhRTCBkaXJlY3RpdmUuXCIpKTtcbiAgfVxuXG4gIHJldHVybiBkaXJlY3RpdmU7XG59XG4vKipcbiAqIERpcmVjdGl2ZXMgYXJlIHVzZWQgYnkgdGhlIEdyYXBoUUwgcnVudGltZSBhcyBhIHdheSBvZiBtb2RpZnlpbmcgZXhlY3V0aW9uXG4gKiBiZWhhdmlvci4gVHlwZSBzeXN0ZW0gY3JlYXRvcnMgd2lsbCB1c3VhbGx5IG5vdCBjcmVhdGUgdGhlc2UgZGlyZWN0bHkuXG4gKi9cblxuZXhwb3J0IHZhciBHcmFwaFFMRGlyZWN0aXZlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gR3JhcGhRTERpcmVjdGl2ZShjb25maWcpIHtcbiAgICB2YXIgX2NvbmZpZyRpc1JlcGVhdGFibGUsIF9jb25maWckYXJncztcblxuICAgIHRoaXMubmFtZSA9IGNvbmZpZy5uYW1lO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBjb25maWcuZGVzY3JpcHRpb247XG4gICAgdGhpcy5sb2NhdGlvbnMgPSBjb25maWcubG9jYXRpb25zO1xuICAgIHRoaXMuaXNSZXBlYXRhYmxlID0gKF9jb25maWckaXNSZXBlYXRhYmxlID0gY29uZmlnLmlzUmVwZWF0YWJsZSkgIT09IG51bGwgJiYgX2NvbmZpZyRpc1JlcGVhdGFibGUgIT09IHZvaWQgMCA/IF9jb25maWckaXNSZXBlYXRhYmxlIDogZmFsc2U7XG4gICAgdGhpcy5leHRlbnNpb25zID0gY29uZmlnLmV4dGVuc2lvbnMgJiYgdG9PYmpNYXAoY29uZmlnLmV4dGVuc2lvbnMpO1xuICAgIHRoaXMuYXN0Tm9kZSA9IGNvbmZpZy5hc3ROb2RlO1xuICAgIGNvbmZpZy5uYW1lIHx8IGRldkFzc2VydCgwLCAnRGlyZWN0aXZlIG11c3QgYmUgbmFtZWQuJyk7XG4gICAgQXJyYXkuaXNBcnJheShjb25maWcubG9jYXRpb25zKSB8fCBkZXZBc3NlcnQoMCwgXCJAXCIuY29uY2F0KGNvbmZpZy5uYW1lLCBcIiBsb2NhdGlvbnMgbXVzdCBiZSBhbiBBcnJheS5cIikpO1xuICAgIHZhciBhcmdzID0gKF9jb25maWckYXJncyA9IGNvbmZpZy5hcmdzKSAhPT0gbnVsbCAmJiBfY29uZmlnJGFyZ3MgIT09IHZvaWQgMCA/IF9jb25maWckYXJncyA6IHt9O1xuICAgIGlzT2JqZWN0TGlrZShhcmdzKSAmJiAhQXJyYXkuaXNBcnJheShhcmdzKSB8fCBkZXZBc3NlcnQoMCwgXCJAXCIuY29uY2F0KGNvbmZpZy5uYW1lLCBcIiBhcmdzIG11c3QgYmUgYW4gb2JqZWN0IHdpdGggYXJndW1lbnQgbmFtZXMgYXMga2V5cy5cIikpO1xuICAgIHRoaXMuYXJncyA9IG9iamVjdEVudHJpZXMoYXJncykubWFwKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICB2YXIgYXJnTmFtZSA9IF9yZWZbMF0sXG4gICAgICAgICAgYXJnQ29uZmlnID0gX3JlZlsxXTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IGFyZ05hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBhcmdDb25maWcuZGVzY3JpcHRpb24sXG4gICAgICAgIHR5cGU6IGFyZ0NvbmZpZy50eXBlLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGFyZ0NvbmZpZy5kZWZhdWx0VmFsdWUsXG4gICAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiBhcmdDb25maWcuZGVwcmVjYXRpb25SZWFzb24sXG4gICAgICAgIGV4dGVuc2lvbnM6IGFyZ0NvbmZpZy5leHRlbnNpb25zICYmIHRvT2JqTWFwKGFyZ0NvbmZpZy5leHRlbnNpb25zKSxcbiAgICAgICAgYXN0Tm9kZTogYXJnQ29uZmlnLmFzdE5vZGVcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gR3JhcGhRTERpcmVjdGl2ZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnRvQ29uZmlnID0gZnVuY3Rpb24gdG9Db25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgbG9jYXRpb25zOiB0aGlzLmxvY2F0aW9ucyxcbiAgICAgIGFyZ3M6IGFyZ3NUb0FyZ3NDb25maWcodGhpcy5hcmdzKSxcbiAgICAgIGlzUmVwZWF0YWJsZTogdGhpcy5pc1JlcGVhdGFibGUsXG4gICAgICBleHRlbnNpb25zOiB0aGlzLmV4dGVuc2lvbnMsXG4gICAgICBhc3ROb2RlOiB0aGlzLmFzdE5vZGVcbiAgICB9O1xuICB9O1xuXG4gIF9wcm90by50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAnQCcgKyB0aGlzLm5hbWU7XG4gIH07XG5cbiAgX3Byb3RvLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygpO1xuICB9IC8vICRGbG93Rml4TWVbdW5zdXBwb3J0ZWQtc3ludGF4XSBGbG93IGRvZXNuJ3Qgc3VwcG9ydCBjb21wdXRlZCBwcm9wZXJ0aWVzIHlldFxuICA7XG5cbiAgX2NyZWF0ZUNsYXNzKEdyYXBoUUxEaXJlY3RpdmUsIFt7XG4gICAga2V5OiBTWU1CT0xfVE9fU1RSSU5HX1RBRyxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiAnR3JhcGhRTERpcmVjdGl2ZSc7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEdyYXBoUUxEaXJlY3RpdmU7XG59KCk7IC8vIFByaW50IGEgc2ltcGxpZmllZCBmb3JtIHdoZW4gYXBwZWFyaW5nIGluIGBpbnNwZWN0YCBhbmQgYHV0aWwuaW5zcGVjdGAuXG5cbmRlZmluZUluc3BlY3QoR3JhcGhRTERpcmVjdGl2ZSk7XG5cbi8qKlxuICogVXNlZCB0byBjb25kaXRpb25hbGx5IGluY2x1ZGUgZmllbGRzIG9yIGZyYWdtZW50cy5cbiAqL1xuZXhwb3J0IHZhciBHcmFwaFFMSW5jbHVkZURpcmVjdGl2ZSA9IG5ldyBHcmFwaFFMRGlyZWN0aXZlKHtcbiAgbmFtZTogJ2luY2x1ZGUnLFxuICBkZXNjcmlwdGlvbjogJ0RpcmVjdHMgdGhlIGV4ZWN1dG9yIHRvIGluY2x1ZGUgdGhpcyBmaWVsZCBvciBmcmFnbWVudCBvbmx5IHdoZW4gdGhlIGBpZmAgYXJndW1lbnQgaXMgdHJ1ZS4nLFxuICBsb2NhdGlvbnM6IFtEaXJlY3RpdmVMb2NhdGlvbi5GSUVMRCwgRGlyZWN0aXZlTG9jYXRpb24uRlJBR01FTlRfU1BSRUFELCBEaXJlY3RpdmVMb2NhdGlvbi5JTkxJTkVfRlJBR01FTlRdLFxuICBhcmdzOiB7XG4gICAgaWY6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMQm9vbGVhbiksXG4gICAgICBkZXNjcmlwdGlvbjogJ0luY2x1ZGVkIHdoZW4gdHJ1ZS4nXG4gICAgfVxuICB9XG59KTtcbi8qKlxuICogVXNlZCB0byBjb25kaXRpb25hbGx5IHNraXAgKGV4Y2x1ZGUpIGZpZWxkcyBvciBmcmFnbWVudHMuXG4gKi9cblxuZXhwb3J0IHZhciBHcmFwaFFMU2tpcERpcmVjdGl2ZSA9IG5ldyBHcmFwaFFMRGlyZWN0aXZlKHtcbiAgbmFtZTogJ3NraXAnLFxuICBkZXNjcmlwdGlvbjogJ0RpcmVjdHMgdGhlIGV4ZWN1dG9yIHRvIHNraXAgdGhpcyBmaWVsZCBvciBmcmFnbWVudCB3aGVuIHRoZSBgaWZgIGFyZ3VtZW50IGlzIHRydWUuJyxcbiAgbG9jYXRpb25zOiBbRGlyZWN0aXZlTG9jYXRpb24uRklFTEQsIERpcmVjdGl2ZUxvY2F0aW9uLkZSQUdNRU5UX1NQUkVBRCwgRGlyZWN0aXZlTG9jYXRpb24uSU5MSU5FX0ZSQUdNRU5UXSxcbiAgYXJnczoge1xuICAgIGlmOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgICAgZGVzY3JpcHRpb246ICdTa2lwcGVkIHdoZW4gdHJ1ZS4nXG4gICAgfVxuICB9XG59KTtcbi8qKlxuICogVXNlZCB0byBjb25kaXRpb25hbGx5IGRlZmVyIGZyYWdtZW50cy5cbiAqL1xuXG5leHBvcnQgdmFyIEdyYXBoUUxEZWZlckRpcmVjdGl2ZSA9IG5ldyBHcmFwaFFMRGlyZWN0aXZlKHtcbiAgbmFtZTogJ2RlZmVyJyxcbiAgZGVzY3JpcHRpb246ICdEaXJlY3RzIHRoZSBleGVjdXRvciB0byBkZWZlciB0aGlzIGZyYWdtZW50IHdoZW4gdGhlIGBpZmAgYXJndW1lbnQgaXMgdHJ1ZSBvciB1bmRlZmluZWQuJyxcbiAgbG9jYXRpb25zOiBbRGlyZWN0aXZlTG9jYXRpb24uRlJBR01FTlRfU1BSRUFELCBEaXJlY3RpdmVMb2NhdGlvbi5JTkxJTkVfRlJBR01FTlRdLFxuICBhcmdzOiB7XG4gICAgaWY6IHtcbiAgICAgIHR5cGU6IEdyYXBoUUxCb29sZWFuLFxuICAgICAgZGVzY3JpcHRpb246ICdEZWZlcnJlZCB3aGVuIHRydWUgb3IgdW5kZWZpbmVkLidcbiAgICB9LFxuICAgIGxhYmVsOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgZGVzY3JpcHRpb246ICdVbmlxdWUgbmFtZSdcbiAgICB9XG4gIH1cbn0pO1xuLyoqXG4gKiBVc2VkIHRvIGNvbmRpdGlvbmFsbHkgc3RyZWFtIGxpc3QgZmllbGRzLlxuICovXG5cbmV4cG9ydCB2YXIgR3JhcGhRTFN0cmVhbURpcmVjdGl2ZSA9IG5ldyBHcmFwaFFMRGlyZWN0aXZlKHtcbiAgbmFtZTogJ3N0cmVhbScsXG4gIGRlc2NyaXB0aW9uOiAnRGlyZWN0cyB0aGUgZXhlY3V0b3IgdG8gc3RyZWFtIHBsdXJhbCBmaWVsZHMgd2hlbiB0aGUgYGlmYCBhcmd1bWVudCBpcyB0cnVlIG9yIHVuZGVmaW5lZC4nLFxuICBsb2NhdGlvbnM6IFtEaXJlY3RpdmVMb2NhdGlvbi5GSUVMRF0sXG4gIGFyZ3M6IHtcbiAgICBpZjoge1xuICAgICAgdHlwZTogR3JhcGhRTEJvb2xlYW4sXG4gICAgICBkZXNjcmlwdGlvbjogJ1N0cmVhbSB3aGVuIHRydWUgb3IgdW5kZWZpbmVkLidcbiAgICB9LFxuICAgIGxhYmVsOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgZGVzY3JpcHRpb246ICdVbmlxdWUgbmFtZSdcbiAgICB9LFxuICAgIGluaXRpYWxDb3VudDoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxJbnQpLFxuICAgICAgZGVzY3JpcHRpb246ICdOdW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIGltbWVkaWF0ZWx5J1xuICAgIH1cbiAgfVxufSk7XG4vKipcbiAqIENvbnN0YW50IHN0cmluZyB1c2VkIGZvciBkZWZhdWx0IHJlYXNvbiBmb3IgYSBkZXByZWNhdGlvbi5cbiAqL1xuXG5leHBvcnQgdmFyIERFRkFVTFRfREVQUkVDQVRJT05fUkVBU09OID0gJ05vIGxvbmdlciBzdXBwb3J0ZWQnO1xuLyoqXG4gKiBVc2VkIHRvIGRlY2xhcmUgZWxlbWVudCBvZiBhIEdyYXBoUUwgc2NoZW1hIGFzIGRlcHJlY2F0ZWQuXG4gKi9cblxuZXhwb3J0IHZhciBHcmFwaFFMRGVwcmVjYXRlZERpcmVjdGl2ZSA9IG5ldyBHcmFwaFFMRGlyZWN0aXZlKHtcbiAgbmFtZTogJ2RlcHJlY2F0ZWQnLFxuICBkZXNjcmlwdGlvbjogJ01hcmtzIGFuIGVsZW1lbnQgb2YgYSBHcmFwaFFMIHNjaGVtYSBhcyBubyBsb25nZXIgc3VwcG9ydGVkLicsXG4gIGxvY2F0aW9uczogW0RpcmVjdGl2ZUxvY2F0aW9uLkZJRUxEX0RFRklOSVRJT04sIERpcmVjdGl2ZUxvY2F0aW9uLkFSR1VNRU5UX0RFRklOSVRJT04sIERpcmVjdGl2ZUxvY2F0aW9uLklOUFVUX0ZJRUxEX0RFRklOSVRJT04sIERpcmVjdGl2ZUxvY2F0aW9uLkVOVU1fVkFMVUVdLFxuICBhcmdzOiB7XG4gICAgcmVhc29uOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgZGVzY3JpcHRpb246ICdFeHBsYWlucyB3aHkgdGhpcyBlbGVtZW50IHdhcyBkZXByZWNhdGVkLCB1c3VhbGx5IGFsc28gaW5jbHVkaW5nIGEgc3VnZ2VzdGlvbiBmb3IgaG93IHRvIGFjY2VzcyBzdXBwb3J0ZWQgc2ltaWxhciBkYXRhLiBGb3JtYXR0ZWQgdXNpbmcgdGhlIE1hcmtkb3duIHN5bnRheCwgYXMgc3BlY2lmaWVkIGJ5IFtDb21tb25NYXJrXShodHRwczovL2NvbW1vbm1hcmsub3JnLykuJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9ERVBSRUNBVElPTl9SRUFTT05cbiAgICB9XG4gIH1cbn0pO1xuLyoqXG4gKiBVc2VkIHRvIHByb3ZpZGUgYSBVUkwgZm9yIHNwZWNpZnlpbmcgdGhlIGJlaGF2aW91ciBvZiBjdXN0b20gc2NhbGFyIGRlZmluaXRpb25zLlxuICovXG5cbmV4cG9ydCB2YXIgR3JhcGhRTFNwZWNpZmllZEJ5RGlyZWN0aXZlID0gbmV3IEdyYXBoUUxEaXJlY3RpdmUoe1xuICBuYW1lOiAnc3BlY2lmaWVkQnknLFxuICBkZXNjcmlwdGlvbjogJ0V4cG9zZXMgYSBVUkwgdGhhdCBzcGVjaWZpZXMgdGhlIGJlaGF2aW91ciBvZiB0aGlzIHNjYWxhci4nLFxuICBsb2NhdGlvbnM6IFtEaXJlY3RpdmVMb2NhdGlvbi5TQ0FMQVJdLFxuICBhcmdzOiB7XG4gICAgdXJsOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoZSBVUkwgdGhhdCBzcGVjaWZpZXMgdGhlIGJlaGF2aW91ciBvZiB0aGlzIHNjYWxhci4nXG4gICAgfVxuICB9XG59KTtcbi8qKlxuICogVGhlIGZ1bGwgbGlzdCBvZiBzcGVjaWZpZWQgZGlyZWN0aXZlcy5cbiAqL1xuXG5leHBvcnQgdmFyIHNwZWNpZmllZERpcmVjdGl2ZXMgPSBPYmplY3QuZnJlZXplKFtHcmFwaFFMSW5jbHVkZURpcmVjdGl2ZSwgR3JhcGhRTFNraXBEaXJlY3RpdmUsIEdyYXBoUUxEZWZlckRpcmVjdGl2ZSwgR3JhcGhRTFN0cmVhbURpcmVjdGl2ZSwgR3JhcGhRTERlcHJlY2F0ZWREaXJlY3RpdmUsIEdyYXBoUUxTcGVjaWZpZWRCeURpcmVjdGl2ZV0pO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3BlY2lmaWVkRGlyZWN0aXZlKGRpcmVjdGl2ZSkge1xuICByZXR1cm4gc3BlY2lmaWVkRGlyZWN0aXZlcy5zb21lKGZ1bmN0aW9uIChfcmVmMikge1xuICAgIHZhciBuYW1lID0gX3JlZjIubmFtZTtcbiAgICByZXR1cm4gbmFtZSA9PT0gZGlyZWN0aXZlLm5hbWU7XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/type/directives.mjs\n");
1017
1018/***/ }),
1019
1020/***/ "../../../node_modules/graphql/type/index.mjs":
1021/*!*******************************************************************************!*\
1022 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/type/index.mjs ***!
1023 \*******************************************************************************/
1024/*! exports provided: isSchema, assertSchema, GraphQLSchema, isType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isListType, isNonNullType, isInputType, isOutputType, isLeafType, isCompositeType, isAbstractType, isWrappingType, isNullableType, isNamedType, isRequiredArgument, isRequiredInputField, assertType, assertScalarType, assertObjectType, assertInterfaceType, assertUnionType, assertEnumType, assertInputObjectType, assertListType, assertNonNullType, assertInputType, assertOutputType, assertLeafType, assertCompositeType, assertAbstractType, assertWrappingType, assertNullableType, assertNamedType, getNullableType, getNamedType, GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull, isDirective, assertDirective, GraphQLDirective, isSpecifiedDirective, specifiedDirectives, GraphQLIncludeDirective, GraphQLSkipDirective, GraphQLDeferDirective, GraphQLStreamDirective, GraphQLDeprecatedDirective, GraphQLSpecifiedByDirective, DEFAULT_DEPRECATION_REASON, isSpecifiedScalarType, specifiedScalarTypes, GraphQLInt, GraphQLFloat, GraphQLString, GraphQLBoolean, GraphQLID, isIntrospectionType, introspectionTypes, __Schema, __Directive, __DirectiveLocation, __Type, __Field, __InputValue, __EnumValue, __TypeKind, TypeKind, SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef, validateSchema, assertValidSchema */
1025/***/ (function(module, __webpack_exports__, __webpack_require__) {
1026
1027"use strict";
1028eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _schema_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schema.mjs */ \"../../../node_modules/graphql/type/schema.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSchema\", function() { return _schema_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertSchema\", function() { return _schema_mjs__WEBPACK_IMPORTED_MODULE_0__[\"assertSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSchema\", function() { return _schema_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLSchema\"]; });\n\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isScalarType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isScalarType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isObjectType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isInterfaceType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isInterfaceType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isUnionType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isUnionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEnumType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isEnumType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isInputObjectType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isInputObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isListType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isListType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNonNullType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isNonNullType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isInputType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isInputType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isOutputType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isOutputType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isLeafType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isLeafType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isCompositeType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isCompositeType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isAbstractType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isAbstractType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isWrappingType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isWrappingType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNullableType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isNullableType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNamedType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isNamedType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRequiredArgument\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isRequiredArgument\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRequiredInputField\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isRequiredInputField\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertScalarType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertScalarType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertObjectType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertInterfaceType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertInterfaceType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertUnionType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertUnionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertEnumType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertEnumType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertInputObjectType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertInputObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertListType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertListType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertNonNullType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertNonNullType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertInputType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertInputType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertOutputType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertOutputType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertLeafType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertLeafType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertCompositeType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertCompositeType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertAbstractType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertAbstractType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertWrappingType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertWrappingType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertNullableType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertNullableType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertNamedType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"assertNamedType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getNullableType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"getNullableType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getNamedType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"getNamedType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLScalarType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLScalarType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLObjectType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInterfaceType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLInterfaceType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLUnionType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLUnionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLEnumType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLEnumType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInputObjectType\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLInputObjectType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLList\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLList\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLNonNull\", function() { return _definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLNonNull\"]; });\n\n/* harmony import */ var _directives_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"assertDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSpecifiedDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isSpecifiedDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"specifiedDirectives\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"specifiedDirectives\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLIncludeDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLIncludeDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSkipDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLSkipDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLDeferDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLDeferDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLStreamDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLStreamDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLDeprecatedDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLDeprecatedDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSpecifiedByDirective\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLSpecifiedByDirective\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_DEPRECATION_REASON\", function() { return _directives_mjs__WEBPACK_IMPORTED_MODULE_2__[\"DEFAULT_DEPRECATION_REASON\"]; });\n\n/* harmony import */ var _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSpecifiedScalarType\", function() { return _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isSpecifiedScalarType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"specifiedScalarTypes\", function() { return _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__[\"specifiedScalarTypes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInt\", function() { return _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLInt\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLFloat\", function() { return _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLFloat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLString\", function() { return _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLBoolean\", function() { return _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLBoolean\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GraphQLID\", function() { return _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLID\"]; });\n\n/* harmony import */ var _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isIntrospectionType\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isIntrospectionType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"introspectionTypes\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"introspectionTypes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__Schema\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"__Schema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__Directive\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"__Directive\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__DirectiveLocation\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"__DirectiveLocation\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__Type\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"__Type\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__Field\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"__Field\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__InputValue\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"__InputValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__EnumValue\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"__EnumValue\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"__TypeKind\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"__TypeKind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TypeKind\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TypeKind\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SchemaMetaFieldDef\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"SchemaMetaFieldDef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TypeMetaFieldDef\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TypeMetaFieldDef\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TypeNameMetaFieldDef\", function() { return _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TypeNameMetaFieldDef\"]; });\n\n/* harmony import */ var _validate_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./validate.mjs */ \"../../../node_modules/graphql/type/validate.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"validateSchema\", function() { return _validate_mjs__WEBPACK_IMPORTED_MODULE_5__[\"validateSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertValidSchema\", function() { return _validate_mjs__WEBPACK_IMPORTED_MODULE_5__[\"assertValidSchema\"]; });\n\n\n\n\n// Common built-in scalar instances.\n\n\n// Validate GraphQL schema.\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9pbmRleC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC90eXBlL2luZGV4Lm1qcz82Y2E5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IC8vIFByZWRpY2F0ZVxuaXNTY2hlbWEgLy8gQXNzZXJ0aW9uXG4sIGFzc2VydFNjaGVtYSAvLyBHcmFwaFFMIFNjaGVtYSBkZWZpbml0aW9uXG4sIEdyYXBoUUxTY2hlbWEgfSBmcm9tIFwiLi9zY2hlbWEubWpzXCI7XG5leHBvcnQgeyAvLyBQcmVkaWNhdGVzXG5pc1R5cGUsIGlzU2NhbGFyVHlwZSwgaXNPYmplY3RUeXBlLCBpc0ludGVyZmFjZVR5cGUsIGlzVW5pb25UeXBlLCBpc0VudW1UeXBlLCBpc0lucHV0T2JqZWN0VHlwZSwgaXNMaXN0VHlwZSwgaXNOb25OdWxsVHlwZSwgaXNJbnB1dFR5cGUsIGlzT3V0cHV0VHlwZSwgaXNMZWFmVHlwZSwgaXNDb21wb3NpdGVUeXBlLCBpc0Fic3RyYWN0VHlwZSwgaXNXcmFwcGluZ1R5cGUsIGlzTnVsbGFibGVUeXBlLCBpc05hbWVkVHlwZSwgaXNSZXF1aXJlZEFyZ3VtZW50LCBpc1JlcXVpcmVkSW5wdXRGaWVsZCAvLyBBc3NlcnRpb25zXG4sIGFzc2VydFR5cGUsIGFzc2VydFNjYWxhclR5cGUsIGFzc2VydE9iamVjdFR5cGUsIGFzc2VydEludGVyZmFjZVR5cGUsIGFzc2VydFVuaW9uVHlwZSwgYXNzZXJ0RW51bVR5cGUsIGFzc2VydElucHV0T2JqZWN0VHlwZSwgYXNzZXJ0TGlzdFR5cGUsIGFzc2VydE5vbk51bGxUeXBlLCBhc3NlcnRJbnB1dFR5cGUsIGFzc2VydE91dHB1dFR5cGUsIGFzc2VydExlYWZUeXBlLCBhc3NlcnRDb21wb3NpdGVUeXBlLCBhc3NlcnRBYnN0cmFjdFR5cGUsIGFzc2VydFdyYXBwaW5nVHlwZSwgYXNzZXJ0TnVsbGFibGVUeXBlLCBhc3NlcnROYW1lZFR5cGUgLy8gVW4tbW9kaWZpZXJzXG4sIGdldE51bGxhYmxlVHlwZSwgZ2V0TmFtZWRUeXBlIC8vIERlZmluaXRpb25zXG4sIEdyYXBoUUxTY2FsYXJUeXBlLCBHcmFwaFFMT2JqZWN0VHlwZSwgR3JhcGhRTEludGVyZmFjZVR5cGUsIEdyYXBoUUxVbmlvblR5cGUsIEdyYXBoUUxFbnVtVHlwZSwgR3JhcGhRTElucHV0T2JqZWN0VHlwZSAvLyBUeXBlIFdyYXBwZXJzXG4sIEdyYXBoUUxMaXN0LCBHcmFwaFFMTm9uTnVsbCB9IGZyb20gXCIuL2RlZmluaXRpb24ubWpzXCI7XG5leHBvcnQgeyAvLyBQcmVkaWNhdGVcbmlzRGlyZWN0aXZlIC8vIEFzc2VydGlvblxuLCBhc3NlcnREaXJlY3RpdmUgLy8gRGlyZWN0aXZlcyBEZWZpbml0aW9uXG4sIEdyYXBoUUxEaXJlY3RpdmUgLy8gQnVpbHQtaW4gRGlyZWN0aXZlcyBkZWZpbmVkIGJ5IHRoZSBTcGVjXG4sIGlzU3BlY2lmaWVkRGlyZWN0aXZlLCBzcGVjaWZpZWREaXJlY3RpdmVzLCBHcmFwaFFMSW5jbHVkZURpcmVjdGl2ZSwgR3JhcGhRTFNraXBEaXJlY3RpdmUsIEdyYXBoUUxEZWZlckRpcmVjdGl2ZSwgR3JhcGhRTFN0cmVhbURpcmVjdGl2ZSwgR3JhcGhRTERlcHJlY2F0ZWREaXJlY3RpdmUsIEdyYXBoUUxTcGVjaWZpZWRCeURpcmVjdGl2ZSAvLyBDb25zdGFudCBEZXByZWNhdGlvbiBSZWFzb25cbiwgREVGQVVMVF9ERVBSRUNBVElPTl9SRUFTT04gfSBmcm9tIFwiLi9kaXJlY3RpdmVzLm1qc1wiO1xuLy8gQ29tbW9uIGJ1aWx0LWluIHNjYWxhciBpbnN0YW5jZXMuXG5leHBvcnQgeyAvLyBQcmVkaWNhdGVcbmlzU3BlY2lmaWVkU2NhbGFyVHlwZSAvLyBTdGFuZGFyZCBHcmFwaFFMIFNjYWxhcnNcbiwgc3BlY2lmaWVkU2NhbGFyVHlwZXMsIEdyYXBoUUxJbnQsIEdyYXBoUUxGbG9hdCwgR3JhcGhRTFN0cmluZywgR3JhcGhRTEJvb2xlYW4sIEdyYXBoUUxJRCB9IGZyb20gXCIuL3NjYWxhcnMubWpzXCI7XG5leHBvcnQgeyAvLyBQcmVkaWNhdGVcbmlzSW50cm9zcGVjdGlvblR5cGUgLy8gR3JhcGhRTCBUeXBlcyBmb3IgaW50cm9zcGVjdGlvbi5cbiwgaW50cm9zcGVjdGlvblR5cGVzLCBfX1NjaGVtYSwgX19EaXJlY3RpdmUsIF9fRGlyZWN0aXZlTG9jYXRpb24sIF9fVHlwZSwgX19GaWVsZCwgX19JbnB1dFZhbHVlLCBfX0VudW1WYWx1ZSwgX19UeXBlS2luZCAvLyBcIkVudW1cIiBvZiBUeXBlIEtpbmRzXG4sIFR5cGVLaW5kIC8vIE1ldGEtZmllbGQgZGVmaW5pdGlvbnMuXG4sIFNjaGVtYU1ldGFGaWVsZERlZiwgVHlwZU1ldGFGaWVsZERlZiwgVHlwZU5hbWVNZXRhRmllbGREZWYgfSBmcm9tIFwiLi9pbnRyb3NwZWN0aW9uLm1qc1wiO1xuLy8gVmFsaWRhdGUgR3JhcGhRTCBzY2hlbWEuXG5leHBvcnQgeyB2YWxpZGF0ZVNjaGVtYSwgYXNzZXJ0VmFsaWRTY2hlbWEgfSBmcm9tIFwiLi92YWxpZGF0ZS5tanNcIjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQU1BO0FBTUE7QUFDQTtBQUdBO0FBS0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/type/index.mjs\n");
1029
1030/***/ }),
1031
1032/***/ "../../../node_modules/graphql/type/introspection.mjs":
1033/*!***************************************************************************************!*\
1034 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/type/introspection.mjs ***!
1035 \***************************************************************************************/
1036/*! exports provided: __Schema, __Directive, __DirectiveLocation, __Type, __Field, __InputValue, __EnumValue, TypeKind, __TypeKind, SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef, introspectionTypes, isIntrospectionType */
1037/***/ (function(module, __webpack_exports__, __webpack_require__) {
1038
1039"use strict";
1040eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__Schema\", function() { return __Schema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__Directive\", function() { return __Directive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__DirectiveLocation\", function() { return __DirectiveLocation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__Type\", function() { return __Type; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__Field\", function() { return __Field; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__InputValue\", function() { return __InputValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__EnumValue\", function() { return __EnumValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TypeKind\", function() { return TypeKind; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__TypeKind\", function() { return __TypeKind; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SchemaMetaFieldDef\", function() { return SchemaMetaFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TypeMetaFieldDef\", function() { return TypeMetaFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TypeNameMetaFieldDef\", function() { return TypeNameMetaFieldDef; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"introspectionTypes\", function() { return introspectionTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isIntrospectionType\", function() { return isIntrospectionType; });\n/* harmony import */ var _polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/objectValues.mjs */ \"../../../node_modules/graphql/polyfills/objectValues.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../language/directiveLocation.mjs */ \"../../../node_modules/graphql/language/directiveLocation.mjs\");\n/* harmony import */ var _utilities_astFromValue_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utilities/astFromValue.mjs */ \"../../../node_modules/graphql/utilities/astFromValue.mjs\");\n/* harmony import */ var _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n\n\nvar __Schema = new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLObjectType\"]({\n name: '__Schema',\n description: 'A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.',\n fields: function fields() {\n return {\n description: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: function resolve(schema) {\n return schema.description;\n }\n },\n types: {\n description: 'A list of all types supported by this server.',\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](__Type))),\n resolve: function resolve(schema) {\n return Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(schema.getTypeMap());\n }\n },\n queryType: {\n description: 'The type that query operations will be rooted at.',\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](__Type),\n resolve: function resolve(schema) {\n return schema.getQueryType();\n }\n },\n mutationType: {\n description: 'If this server supports mutation, the type that mutation operations will be rooted at.',\n type: __Type,\n resolve: function resolve(schema) {\n return schema.getMutationType();\n }\n },\n subscriptionType: {\n description: 'If this server support subscription, the type that subscription operations will be rooted at.',\n type: __Type,\n resolve: function resolve(schema) {\n return schema.getSubscriptionType();\n }\n },\n directives: {\n description: 'A list of all directives supported by this server.',\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](__Directive))),\n resolve: function resolve(schema) {\n return schema.getDirectives();\n }\n }\n };\n }\n});\nvar __Directive = new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLObjectType\"]({\n name: '__Directive',\n description: \"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\\n\\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.\",\n fields: function fields() {\n return {\n name: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"]),\n resolve: function resolve(directive) {\n return directive.name;\n }\n },\n description: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: function resolve(directive) {\n return directive.description;\n }\n },\n isRepeatable: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"]),\n resolve: function resolve(directive) {\n return directive.isRepeatable;\n }\n },\n locations: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](__DirectiveLocation))),\n resolve: function resolve(directive) {\n return directive.locations;\n }\n },\n args: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](__InputValue))),\n resolve: function resolve(directive) {\n return directive.args;\n }\n }\n };\n }\n});\nvar __DirectiveLocation = new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLEnumType\"]({\n name: '__DirectiveLocation',\n description: 'A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.',\n values: {\n QUERY: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].QUERY,\n description: 'Location adjacent to a query operation.'\n },\n MUTATION: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].MUTATION,\n description: 'Location adjacent to a mutation operation.'\n },\n SUBSCRIPTION: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].SUBSCRIPTION,\n description: 'Location adjacent to a subscription operation.'\n },\n FIELD: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].FIELD,\n description: 'Location adjacent to a field.'\n },\n FRAGMENT_DEFINITION: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].FRAGMENT_DEFINITION,\n description: 'Location adjacent to a fragment definition.'\n },\n FRAGMENT_SPREAD: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].FRAGMENT_SPREAD,\n description: 'Location adjacent to a fragment spread.'\n },\n INLINE_FRAGMENT: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].INLINE_FRAGMENT,\n description: 'Location adjacent to an inline fragment.'\n },\n VARIABLE_DEFINITION: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].VARIABLE_DEFINITION,\n description: 'Location adjacent to a variable definition.'\n },\n SCHEMA: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].SCHEMA,\n description: 'Location adjacent to a schema definition.'\n },\n SCALAR: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].SCALAR,\n description: 'Location adjacent to a scalar definition.'\n },\n OBJECT: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].OBJECT,\n description: 'Location adjacent to an object type definition.'\n },\n FIELD_DEFINITION: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].FIELD_DEFINITION,\n description: 'Location adjacent to a field definition.'\n },\n ARGUMENT_DEFINITION: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].ARGUMENT_DEFINITION,\n description: 'Location adjacent to an argument definition.'\n },\n INTERFACE: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].INTERFACE,\n description: 'Location adjacent to an interface definition.'\n },\n UNION: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].UNION,\n description: 'Location adjacent to a union definition.'\n },\n ENUM: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].ENUM,\n description: 'Location adjacent to an enum definition.'\n },\n ENUM_VALUE: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].ENUM_VALUE,\n description: 'Location adjacent to an enum value definition.'\n },\n INPUT_OBJECT: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].INPUT_OBJECT,\n description: 'Location adjacent to an input object type definition.'\n },\n INPUT_FIELD_DEFINITION: {\n value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].INPUT_FIELD_DEFINITION,\n description: 'Location adjacent to an input object field definition.'\n }\n }\n});\nvar __Type = new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLObjectType\"]({\n name: '__Type',\n description: 'The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\\n\\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByUrl`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.',\n fields: function fields() {\n return {\n kind: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](__TypeKind),\n resolve: function resolve(type) {\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isScalarType\"])(type)) {\n return TypeKind.SCALAR;\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isObjectType\"])(type)) {\n return TypeKind.OBJECT;\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInterfaceType\"])(type)) {\n return TypeKind.INTERFACE;\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isUnionType\"])(type)) {\n return TypeKind.UNION;\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isEnumType\"])(type)) {\n return TypeKind.ENUM;\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInputObjectType\"])(type)) {\n return TypeKind.INPUT_OBJECT;\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isListType\"])(type)) {\n return TypeKind.LIST;\n } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')\n\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNonNullType\"])(type)) {\n return TypeKind.NON_NULL;\n } // istanbul ignore next (Not reachable. All possible types have been considered)\n\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(0, \"Unexpected type: \\\"\".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(type), \"\\\".\"));\n }\n },\n name: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: function resolve(type) {\n return type.name !== undefined ? type.name : undefined;\n }\n },\n description: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: function resolve(type) {\n return type.description !== undefined ? type.description : undefined;\n }\n },\n specifiedByUrl: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: function resolve(obj) {\n return obj.specifiedByUrl !== undefined ? obj.specifiedByUrl : undefined;\n }\n },\n fields: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](__Field)),\n args: {\n includeDeprecated: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"],\n defaultValue: false\n }\n },\n resolve: function resolve(type, _ref) {\n var includeDeprecated = _ref.includeDeprecated;\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isObjectType\"])(type) || Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInterfaceType\"])(type)) {\n var fields = Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(type.getFields());\n return includeDeprecated ? fields : fields.filter(function (field) {\n return field.deprecationReason == null;\n });\n }\n }\n },\n interfaces: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](__Type)),\n resolve: function resolve(type) {\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isObjectType\"])(type) || Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInterfaceType\"])(type)) {\n return type.getInterfaces();\n }\n }\n },\n possibleTypes: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](__Type)),\n resolve: function resolve(type, _args, _context, _ref2) {\n var schema = _ref2.schema;\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isAbstractType\"])(type)) {\n return schema.getPossibleTypes(type);\n }\n }\n },\n enumValues: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](__EnumValue)),\n args: {\n includeDeprecated: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"],\n defaultValue: false\n }\n },\n resolve: function resolve(type, _ref3) {\n var includeDeprecated = _ref3.includeDeprecated;\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isEnumType\"])(type)) {\n var values = type.getValues();\n return includeDeprecated ? values : values.filter(function (field) {\n return field.deprecationReason == null;\n });\n }\n }\n },\n inputFields: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](__InputValue)),\n args: {\n includeDeprecated: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"],\n defaultValue: false\n }\n },\n resolve: function resolve(type, _ref4) {\n var includeDeprecated = _ref4.includeDeprecated;\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInputObjectType\"])(type)) {\n var values = Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(type.getFields());\n return includeDeprecated ? values : values.filter(function (field) {\n return field.deprecationReason == null;\n });\n }\n }\n },\n ofType: {\n type: __Type,\n resolve: function resolve(type) {\n return type.ofType !== undefined ? type.ofType : undefined;\n }\n }\n };\n }\n});\nvar __Field = new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLObjectType\"]({\n name: '__Field',\n description: 'Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.',\n fields: function fields() {\n return {\n name: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"]),\n resolve: function resolve(field) {\n return field.name;\n }\n },\n description: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: function resolve(field) {\n return field.description;\n }\n },\n args: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLList\"](new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](__InputValue))),\n args: {\n includeDeprecated: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"],\n defaultValue: false\n }\n },\n resolve: function resolve(field, _ref5) {\n var includeDeprecated = _ref5.includeDeprecated;\n return includeDeprecated ? field.args : field.args.filter(function (arg) {\n return arg.deprecationReason == null;\n });\n }\n },\n type: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](__Type),\n resolve: function resolve(field) {\n return field.type;\n }\n },\n isDeprecated: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"]),\n resolve: function resolve(field) {\n return field.deprecationReason != null;\n }\n },\n deprecationReason: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: function resolve(field) {\n return field.deprecationReason;\n }\n }\n };\n }\n});\nvar __InputValue = new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLObjectType\"]({\n name: '__InputValue',\n description: 'Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.',\n fields: function fields() {\n return {\n name: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"]),\n resolve: function resolve(inputValue) {\n return inputValue.name;\n }\n },\n description: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: function resolve(inputValue) {\n return inputValue.description;\n }\n },\n type: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](__Type),\n resolve: function resolve(inputValue) {\n return inputValue.type;\n }\n },\n defaultValue: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n description: 'A GraphQL-formatted string representing the default value for this input value.',\n resolve: function resolve(inputValue) {\n var type = inputValue.type,\n defaultValue = inputValue.defaultValue;\n var valueAST = Object(_utilities_astFromValue_mjs__WEBPACK_IMPORTED_MODULE_5__[\"astFromValue\"])(defaultValue, type);\n return valueAST ? Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_3__[\"print\"])(valueAST) : null;\n }\n },\n isDeprecated: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"]),\n resolve: function resolve(field) {\n return field.deprecationReason != null;\n }\n },\n deprecationReason: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: function resolve(obj) {\n return obj.deprecationReason;\n }\n }\n };\n }\n});\nvar __EnumValue = new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLObjectType\"]({\n name: '__EnumValue',\n description: 'One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.',\n fields: function fields() {\n return {\n name: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"]),\n resolve: function resolve(enumValue) {\n return enumValue.name;\n }\n },\n description: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: function resolve(enumValue) {\n return enumValue.description;\n }\n },\n isDeprecated: {\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLBoolean\"]),\n resolve: function resolve(enumValue) {\n return enumValue.deprecationReason != null;\n }\n },\n deprecationReason: {\n type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"],\n resolve: function resolve(enumValue) {\n return enumValue.deprecationReason;\n }\n }\n };\n }\n});\nvar TypeKind = Object.freeze({\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n INPUT_OBJECT: 'INPUT_OBJECT',\n LIST: 'LIST',\n NON_NULL: 'NON_NULL'\n});\nvar __TypeKind = new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLEnumType\"]({\n name: '__TypeKind',\n description: 'An enum describing what kind of type a given `__Type` is.',\n values: {\n SCALAR: {\n value: TypeKind.SCALAR,\n description: 'Indicates this type is a scalar.'\n },\n OBJECT: {\n value: TypeKind.OBJECT,\n description: 'Indicates this type is an object. `fields` and `interfaces` are valid fields.'\n },\n INTERFACE: {\n value: TypeKind.INTERFACE,\n description: 'Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.'\n },\n UNION: {\n value: TypeKind.UNION,\n description: 'Indicates this type is a union. `possibleTypes` is a valid field.'\n },\n ENUM: {\n value: TypeKind.ENUM,\n description: 'Indicates this type is an enum. `enumValues` is a valid field.'\n },\n INPUT_OBJECT: {\n value: TypeKind.INPUT_OBJECT,\n description: 'Indicates this type is an input object. `inputFields` is a valid field.'\n },\n LIST: {\n value: TypeKind.LIST,\n description: 'Indicates this type is a list. `ofType` is a valid field.'\n },\n NON_NULL: {\n value: TypeKind.NON_NULL,\n description: 'Indicates this type is a non-null. `ofType` is a valid field.'\n }\n }\n});\n/**\n * Note that these are GraphQLField and not GraphQLFieldConfig,\n * so the format for args is different.\n */\n\nvar SchemaMetaFieldDef = {\n name: '__schema',\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](__Schema),\n description: 'Access the current type schema of this server.',\n args: [],\n resolve: function resolve(_source, _args, _context, _ref6) {\n var schema = _ref6.schema;\n return schema;\n },\n isDeprecated: false,\n deprecationReason: undefined,\n extensions: undefined,\n astNode: undefined\n};\nvar TypeMetaFieldDef = {\n name: '__type',\n type: __Type,\n description: 'Request the type information of a single type.',\n args: [{\n name: 'name',\n description: undefined,\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"]),\n defaultValue: undefined,\n deprecationReason: undefined,\n extensions: undefined,\n astNode: undefined\n }],\n resolve: function resolve(_source, _ref7, _context, _ref8) {\n var name = _ref7.name;\n var schema = _ref8.schema;\n return schema.getType(name);\n },\n isDeprecated: false,\n deprecationReason: undefined,\n extensions: undefined,\n astNode: undefined\n};\nvar TypeNameMetaFieldDef = {\n name: '__typename',\n type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"]),\n description: 'The name of the current Object type at runtime.',\n args: [],\n resolve: function resolve(_source, _args, _context, _ref9) {\n var parentType = _ref9.parentType;\n return parentType.name;\n },\n isDeprecated: false,\n deprecationReason: undefined,\n extensions: undefined,\n astNode: undefined\n};\nvar introspectionTypes = Object.freeze([__Schema, __Directive, __DirectiveLocation, __Type, __Field, __InputValue, __EnumValue, __TypeKind]);\nfunction isIntrospectionType(type) {\n return introspectionTypes.some(function (_ref10) {\n var name = _ref10.name;\n return type.name === name;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9pbnRyb3NwZWN0aW9uLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3R5cGUvaW50cm9zcGVjdGlvbi5tanM/Y2YyMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgb2JqZWN0VmFsdWVzIGZyb20gXCIuLi9wb2x5ZmlsbHMvb2JqZWN0VmFsdWVzLm1qc1wiO1xuaW1wb3J0IGluc3BlY3QgZnJvbSBcIi4uL2pzdXRpbHMvaW5zcGVjdC5tanNcIjtcbmltcG9ydCBpbnZhcmlhbnQgZnJvbSBcIi4uL2pzdXRpbHMvaW52YXJpYW50Lm1qc1wiO1xuaW1wb3J0IHsgcHJpbnQgfSBmcm9tIFwiLi4vbGFuZ3VhZ2UvcHJpbnRlci5tanNcIjtcbmltcG9ydCB7IERpcmVjdGl2ZUxvY2F0aW9uIH0gZnJvbSBcIi4uL2xhbmd1YWdlL2RpcmVjdGl2ZUxvY2F0aW9uLm1qc1wiO1xuaW1wb3J0IHsgYXN0RnJvbVZhbHVlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hc3RGcm9tVmFsdWUubWpzXCI7XG5pbXBvcnQgeyBHcmFwaFFMU3RyaW5nLCBHcmFwaFFMQm9vbGVhbiB9IGZyb20gXCIuL3NjYWxhcnMubWpzXCI7XG5pbXBvcnQgeyBHcmFwaFFMTGlzdCwgR3JhcGhRTE5vbk51bGwsIEdyYXBoUUxPYmplY3RUeXBlLCBHcmFwaFFMRW51bVR5cGUsIGlzU2NhbGFyVHlwZSwgaXNPYmplY3RUeXBlLCBpc0ludGVyZmFjZVR5cGUsIGlzVW5pb25UeXBlLCBpc0VudW1UeXBlLCBpc0lucHV0T2JqZWN0VHlwZSwgaXNMaXN0VHlwZSwgaXNOb25OdWxsVHlwZSwgaXNBYnN0cmFjdFR5cGUgfSBmcm9tIFwiLi9kZWZpbml0aW9uLm1qc1wiO1xuZXhwb3J0IHZhciBfX1NjaGVtYSA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdfX1NjaGVtYScsXG4gIGRlc2NyaXB0aW9uOiAnQSBHcmFwaFFMIFNjaGVtYSBkZWZpbmVzIHRoZSBjYXBhYmlsaXRpZXMgb2YgYSBHcmFwaFFMIHNlcnZlci4gSXQgZXhwb3NlcyBhbGwgYXZhaWxhYmxlIHR5cGVzIGFuZCBkaXJlY3RpdmVzIG9uIHRoZSBzZXJ2ZXIsIGFzIHdlbGwgYXMgdGhlIGVudHJ5IHBvaW50cyBmb3IgcXVlcnksIG11dGF0aW9uLCBhbmQgc3Vic2NyaXB0aW9uIG9wZXJhdGlvbnMuJyxcbiAgZmllbGRzOiBmdW5jdGlvbiBmaWVsZHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoc2NoZW1hKSB7XG4gICAgICAgICAgcmV0dXJuIHNjaGVtYS5kZXNjcmlwdGlvbjtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHR5cGVzOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQSBsaXN0IG9mIGFsbCB0eXBlcyBzdXBwb3J0ZWQgYnkgdGhpcyBzZXJ2ZXIuJyxcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19UeXBlKSkpLFxuICAgICAgICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHNjaGVtYSkge1xuICAgICAgICAgIHJldHVybiBvYmplY3RWYWx1ZXMoc2NoZW1hLmdldFR5cGVNYXAoKSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBxdWVyeVR5cGU6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgdHlwZSB0aGF0IHF1ZXJ5IG9wZXJhdGlvbnMgd2lsbCBiZSByb290ZWQgYXQuJyxcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKF9fVHlwZSksXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoc2NoZW1hKSB7XG4gICAgICAgICAgcmV0dXJuIHNjaGVtYS5nZXRRdWVyeVR5cGUoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG11dGF0aW9uVHlwZToge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0lmIHRoaXMgc2VydmVyIHN1cHBvcnRzIG11dGF0aW9uLCB0aGUgdHlwZSB0aGF0IG11dGF0aW9uIG9wZXJhdGlvbnMgd2lsbCBiZSByb290ZWQgYXQuJyxcbiAgICAgICAgdHlwZTogX19UeXBlLFxuICAgICAgICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHNjaGVtYSkge1xuICAgICAgICAgIHJldHVybiBzY2hlbWEuZ2V0TXV0YXRpb25UeXBlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzdWJzY3JpcHRpb25UeXBlOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnSWYgdGhpcyBzZXJ2ZXIgc3VwcG9ydCBzdWJzY3JpcHRpb24sIHRoZSB0eXBlIHRoYXQgc3Vic2NyaXB0aW9uIG9wZXJhdGlvbnMgd2lsbCBiZSByb290ZWQgYXQuJyxcbiAgICAgICAgdHlwZTogX19UeXBlLFxuICAgICAgICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHNjaGVtYSkge1xuICAgICAgICAgIHJldHVybiBzY2hlbWEuZ2V0U3Vic2NyaXB0aW9uVHlwZSgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZGlyZWN0aXZlczoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0EgbGlzdCBvZiBhbGwgZGlyZWN0aXZlcyBzdXBwb3J0ZWQgYnkgdGhpcyBzZXJ2ZXIuJyxcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19EaXJlY3RpdmUpKSksXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoc2NoZW1hKSB7XG4gICAgICAgICAgcmV0dXJuIHNjaGVtYS5nZXREaXJlY3RpdmVzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcbmV4cG9ydCB2YXIgX19EaXJlY3RpdmUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICBuYW1lOiAnX19EaXJlY3RpdmUnLFxuICBkZXNjcmlwdGlvbjogXCJBIERpcmVjdGl2ZSBwcm92aWRlcyBhIHdheSB0byBkZXNjcmliZSBhbHRlcm5hdGUgcnVudGltZSBleGVjdXRpb24gYW5kIHR5cGUgdmFsaWRhdGlvbiBiZWhhdmlvciBpbiBhIEdyYXBoUUwgZG9jdW1lbnQuXFxuXFxuSW4gc29tZSBjYXNlcywgeW91IG5lZWQgdG8gcHJvdmlkZSBvcHRpb25zIHRvIGFsdGVyIEdyYXBoUUwncyBleGVjdXRpb24gYmVoYXZpb3IgaW4gd2F5cyBmaWVsZCBhcmd1bWVudHMgd2lsbCBub3Qgc3VmZmljZSwgc3VjaCBhcyBjb25kaXRpb25hbGx5IGluY2x1ZGluZyBvciBza2lwcGluZyBhIGZpZWxkLiBEaXJlY3RpdmVzIHByb3ZpZGUgdGhpcyBieSBkZXNjcmliaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gdGhlIGV4ZWN1dG9yLlwiLFxuICBmaWVsZHM6IGZ1bmN0aW9uIGZpZWxkcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZToge1xuICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoZGlyZWN0aXZlKSB7XG4gICAgICAgICAgcmV0dXJuIGRpcmVjdGl2ZS5uYW1lO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgdHlwZTogR3JhcGhRTFN0cmluZyxcbiAgICAgICAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZShkaXJlY3RpdmUpIHtcbiAgICAgICAgICByZXR1cm4gZGlyZWN0aXZlLmRlc2NyaXB0aW9uO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaXNSZXBlYXRhYmxlOiB7XG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMQm9vbGVhbiksXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoZGlyZWN0aXZlKSB7XG4gICAgICAgICAgcmV0dXJuIGRpcmVjdGl2ZS5pc1JlcGVhdGFibGU7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBsb2NhdGlvbnM6IHtcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19EaXJlY3RpdmVMb2NhdGlvbikpKSxcbiAgICAgICAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZShkaXJlY3RpdmUpIHtcbiAgICAgICAgICByZXR1cm4gZGlyZWN0aXZlLmxvY2F0aW9ucztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19JbnB1dFZhbHVlKSkpLFxuICAgICAgICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKGRpcmVjdGl2ZSkge1xuICAgICAgICAgIHJldHVybiBkaXJlY3RpdmUuYXJncztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbn0pO1xuZXhwb3J0IHZhciBfX0RpcmVjdGl2ZUxvY2F0aW9uID0gbmV3IEdyYXBoUUxFbnVtVHlwZSh7XG4gIG5hbWU6ICdfX0RpcmVjdGl2ZUxvY2F0aW9uJyxcbiAgZGVzY3JpcHRpb246ICdBIERpcmVjdGl2ZSBjYW4gYmUgYWRqYWNlbnQgdG8gbWFueSBwYXJ0cyBvZiB0aGUgR3JhcGhRTCBsYW5ndWFnZSwgYSBfX0RpcmVjdGl2ZUxvY2F0aW9uIGRlc2NyaWJlcyBvbmUgc3VjaCBwb3NzaWJsZSBhZGphY2VuY2llcy4nLFxuICB2YWx1ZXM6IHtcbiAgICBRVUVSWToge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLlFVRVJZLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhIHF1ZXJ5IG9wZXJhdGlvbi4nXG4gICAgfSxcbiAgICBNVVRBVElPTjoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLk1VVEFUSU9OLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhIG11dGF0aW9uIG9wZXJhdGlvbi4nXG4gICAgfSxcbiAgICBTVUJTQ1JJUFRJT046IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5TVUJTQ1JJUFRJT04sXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIGFkamFjZW50IHRvIGEgc3Vic2NyaXB0aW9uIG9wZXJhdGlvbi4nXG4gICAgfSxcbiAgICBGSUVMRDoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLkZJRUxELFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhIGZpZWxkLidcbiAgICB9LFxuICAgIEZSQUdNRU5UX0RFRklOSVRJT046IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5GUkFHTUVOVF9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhIGZyYWdtZW50IGRlZmluaXRpb24uJ1xuICAgIH0sXG4gICAgRlJBR01FTlRfU1BSRUFEOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uRlJBR01FTlRfU1BSRUFELFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhIGZyYWdtZW50IHNwcmVhZC4nXG4gICAgfSxcbiAgICBJTkxJTkVfRlJBR01FTlQ6IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5JTkxJTkVfRlJBR01FTlQsXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIGFkamFjZW50IHRvIGFuIGlubGluZSBmcmFnbWVudC4nXG4gICAgfSxcbiAgICBWQVJJQUJMRV9ERUZJTklUSU9OOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uVkFSSUFCTEVfREVGSU5JVElPTixcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYSB2YXJpYWJsZSBkZWZpbml0aW9uLidcbiAgICB9LFxuICAgIFNDSEVNQToge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLlNDSEVNQSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYSBzY2hlbWEgZGVmaW5pdGlvbi4nXG4gICAgfSxcbiAgICBTQ0FMQVI6IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5TQ0FMQVIsXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIGFkamFjZW50IHRvIGEgc2NhbGFyIGRlZmluaXRpb24uJ1xuICAgIH0sXG4gICAgT0JKRUNUOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uT0JKRUNULFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhbiBvYmplY3QgdHlwZSBkZWZpbml0aW9uLidcbiAgICB9LFxuICAgIEZJRUxEX0RFRklOSVRJT046IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5GSUVMRF9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhIGZpZWxkIGRlZmluaXRpb24uJ1xuICAgIH0sXG4gICAgQVJHVU1FTlRfREVGSU5JVElPTjoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLkFSR1VNRU5UX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIGFkamFjZW50IHRvIGFuIGFyZ3VtZW50IGRlZmluaXRpb24uJ1xuICAgIH0sXG4gICAgSU5URVJGQUNFOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uSU5URVJGQUNFLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhbiBpbnRlcmZhY2UgZGVmaW5pdGlvbi4nXG4gICAgfSxcbiAgICBVTklPTjoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLlVOSU9OLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhIHVuaW9uIGRlZmluaXRpb24uJ1xuICAgIH0sXG4gICAgRU5VTToge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLkVOVU0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIGFkamFjZW50IHRvIGFuIGVudW0gZGVmaW5pdGlvbi4nXG4gICAgfSxcbiAgICBFTlVNX1ZBTFVFOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uRU5VTV9WQUxVRSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYW4gZW51bSB2YWx1ZSBkZWZpbml0aW9uLidcbiAgICB9LFxuICAgIElOUFVUX09CSkVDVDoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLklOUFVUX09CSkVDVCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYW4gaW5wdXQgb2JqZWN0IHR5cGUgZGVmaW5pdGlvbi4nXG4gICAgfSxcbiAgICBJTlBVVF9GSUVMRF9ERUZJTklUSU9OOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uSU5QVVRfRklFTERfREVGSU5JVElPTixcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYW4gaW5wdXQgb2JqZWN0IGZpZWxkIGRlZmluaXRpb24uJ1xuICAgIH1cbiAgfVxufSk7XG5leHBvcnQgdmFyIF9fVHlwZSA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdfX1R5cGUnLFxuICBkZXNjcmlwdGlvbjogJ1RoZSBmdW5kYW1lbnRhbCB1bml0IG9mIGFueSBHcmFwaFFMIFNjaGVtYSBpcyB0aGUgdHlwZS4gVGhlcmUgYXJlIG1hbnkga2luZHMgb2YgdHlwZXMgaW4gR3JhcGhRTCBhcyByZXByZXNlbnRlZCBieSB0aGUgYF9fVHlwZUtpbmRgIGVudW0uXFxuXFxuRGVwZW5kaW5nIG9uIHRoZSBraW5kIG9mIGEgdHlwZSwgY2VydGFpbiBmaWVsZHMgZGVzY3JpYmUgaW5mb3JtYXRpb24gYWJvdXQgdGhhdCB0eXBlLiBTY2FsYXIgdHlwZXMgcHJvdmlkZSBubyBpbmZvcm1hdGlvbiBiZXlvbmQgYSBuYW1lLCBkZXNjcmlwdGlvbiBhbmQgb3B0aW9uYWwgYHNwZWNpZmllZEJ5VXJsYCwgd2hpbGUgRW51bSB0eXBlcyBwcm92aWRlIHRoZWlyIHZhbHVlcy4gT2JqZWN0IGFuZCBJbnRlcmZhY2UgdHlwZXMgcHJvdmlkZSB0aGUgZmllbGRzIHRoZXkgZGVzY3JpYmUuIEFic3RyYWN0IHR5cGVzLCBVbmlvbiBhbmQgSW50ZXJmYWNlLCBwcm92aWRlIHRoZSBPYmplY3QgdHlwZXMgcG9zc2libGUgYXQgcnVudGltZS4gTGlzdCBhbmQgTm9uTnVsbCB0eXBlcyBjb21wb3NlIG90aGVyIHR5cGVzLicsXG4gIGZpZWxkczogZnVuY3Rpb24gZmllbGRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiB7XG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChfX1R5cGVLaW5kKSxcbiAgICAgICAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh0eXBlKSB7XG4gICAgICAgICAgaWYgKGlzU2NhbGFyVHlwZSh0eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFR5cGVLaW5kLlNDQUxBUjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXNPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gVHlwZUtpbmQuT0JKRUNUO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBUeXBlS2luZC5JTlRFUkZBQ0U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGlzVW5pb25UeXBlKHR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gVHlwZUtpbmQuVU5JT047XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGlzRW51bVR5cGUodHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBUeXBlS2luZC5FTlVNO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFR5cGVLaW5kLklOUFVUX09CSkVDVDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXNMaXN0VHlwZSh0eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFR5cGVLaW5kLkxJU1Q7XG4gICAgICAgICAgfSAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjYxOCcpXG5cblxuICAgICAgICAgIGlmIChpc05vbk51bGxUeXBlKHR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gVHlwZUtpbmQuTk9OX05VTEw7XG4gICAgICAgICAgfSAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoTm90IHJlYWNoYWJsZS4gQWxsIHBvc3NpYmxlIHR5cGVzIGhhdmUgYmVlbiBjb25zaWRlcmVkKVxuXG5cbiAgICAgICAgICBmYWxzZSB8fCBpbnZhcmlhbnQoMCwgXCJVbmV4cGVjdGVkIHR5cGU6IFxcXCJcIi5jb25jYXQoaW5zcGVjdCh0eXBlKSwgXCJcXFwiLlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBuYW1lOiB7XG4gICAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUodHlwZSkge1xuICAgICAgICAgIHJldHVybiB0eXBlLm5hbWUgIT09IHVuZGVmaW5lZCA/IHR5cGUubmFtZSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUodHlwZSkge1xuICAgICAgICAgIHJldHVybiB0eXBlLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQgPyB0eXBlLmRlc2NyaXB0aW9uIDogdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc3BlY2lmaWVkQnlVcmw6IHtcbiAgICAgICAgdHlwZTogR3JhcGhRTFN0cmluZyxcbiAgICAgICAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZShvYmopIHtcbiAgICAgICAgICByZXR1cm4gb2JqLnNwZWNpZmllZEJ5VXJsICE9PSB1bmRlZmluZWQgPyBvYmouc3BlY2lmaWVkQnlVcmwgOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBmaWVsZHM6IHtcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChfX0ZpZWxkKSksXG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICBpbmNsdWRlRGVwcmVjYXRlZDoge1xuICAgICAgICAgICAgdHlwZTogR3JhcGhRTEJvb2xlYW4sXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHR5cGUsIF9yZWYpIHtcbiAgICAgICAgICB2YXIgaW5jbHVkZURlcHJlY2F0ZWQgPSBfcmVmLmluY2x1ZGVEZXByZWNhdGVkO1xuXG4gICAgICAgICAgaWYgKGlzT2JqZWN0VHlwZSh0eXBlKSB8fCBpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICAgICAgICAgIHZhciBmaWVsZHMgPSBvYmplY3RWYWx1ZXModHlwZS5nZXRGaWVsZHMoKSk7XG4gICAgICAgICAgICByZXR1cm4gaW5jbHVkZURlcHJlY2F0ZWQgPyBmaWVsZHMgOiBmaWVsZHMuZmlsdGVyKGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgICAgICAgICByZXR1cm4gZmllbGQuZGVwcmVjYXRpb25SZWFzb24gPT0gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGludGVyZmFjZXM6IHtcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChfX1R5cGUpKSxcbiAgICAgICAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh0eXBlKSB7XG4gICAgICAgICAgaWYgKGlzT2JqZWN0VHlwZSh0eXBlKSB8fCBpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlLmdldEludGVyZmFjZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBwb3NzaWJsZVR5cGVzOiB7XG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19UeXBlKSksXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUodHlwZSwgX2FyZ3MsIF9jb250ZXh0LCBfcmVmMikge1xuICAgICAgICAgIHZhciBzY2hlbWEgPSBfcmVmMi5zY2hlbWE7XG5cbiAgICAgICAgICBpZiAoaXNBYnN0cmFjdFR5cGUodHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzY2hlbWEuZ2V0UG9zc2libGVUeXBlcyh0eXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlbnVtVmFsdWVzOiB7XG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19FbnVtVmFsdWUpKSxcbiAgICAgICAgYXJnczoge1xuICAgICAgICAgIGluY2x1ZGVEZXByZWNhdGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBHcmFwaFFMQm9vbGVhbixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUodHlwZSwgX3JlZjMpIHtcbiAgICAgICAgICB2YXIgaW5jbHVkZURlcHJlY2F0ZWQgPSBfcmVmMy5pbmNsdWRlRGVwcmVjYXRlZDtcblxuICAgICAgICAgIGlmIChpc0VudW1UeXBlKHR5cGUpKSB7XG4gICAgICAgICAgICB2YXIgdmFsdWVzID0gdHlwZS5nZXRWYWx1ZXMoKTtcbiAgICAgICAgICAgIHJldHVybiBpbmNsdWRlRGVwcmVjYXRlZCA/IHZhbHVlcyA6IHZhbHVlcy5maWx0ZXIoZnVuY3Rpb24gKGZpZWxkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmaWVsZC5kZXByZWNhdGlvblJlYXNvbiA9PSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaW5wdXRGaWVsZHM6IHtcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChfX0lucHV0VmFsdWUpKSxcbiAgICAgICAgYXJnczoge1xuICAgICAgICAgIGluY2x1ZGVEZXByZWNhdGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBHcmFwaFFMQm9vbGVhbixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUodHlwZSwgX3JlZjQpIHtcbiAgICAgICAgICB2YXIgaW5jbHVkZURlcHJlY2F0ZWQgPSBfcmVmNC5pbmNsdWRlRGVwcmVjYXRlZDtcblxuICAgICAgICAgIGlmIChpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgICAgICAgICAgdmFyIHZhbHVlcyA9IG9iamVjdFZhbHVlcyh0eXBlLmdldEZpZWxkcygpKTtcbiAgICAgICAgICAgIHJldHVybiBpbmNsdWRlRGVwcmVjYXRlZCA/IHZhbHVlcyA6IHZhbHVlcy5maWx0ZXIoZnVuY3Rpb24gKGZpZWxkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmaWVsZC5kZXByZWNhdGlvblJlYXNvbiA9PSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb2ZUeXBlOiB7XG4gICAgICAgIHR5cGU6IF9fVHlwZSxcbiAgICAgICAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh0eXBlKSB7XG4gICAgICAgICAgcmV0dXJuIHR5cGUub2ZUeXBlICE9PSB1bmRlZmluZWQgPyB0eXBlLm9mVHlwZSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbn0pO1xuZXhwb3J0IHZhciBfX0ZpZWxkID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgbmFtZTogJ19fRmllbGQnLFxuICBkZXNjcmlwdGlvbjogJ09iamVjdCBhbmQgSW50ZXJmYWNlIHR5cGVzIGFyZSBkZXNjcmliZWQgYnkgYSBsaXN0IG9mIEZpZWxkcywgZWFjaCBvZiB3aGljaCBoYXMgYSBuYW1lLCBwb3RlbnRpYWxseSBhIGxpc3Qgb2YgYXJndW1lbnRzLCBhbmQgYSByZXR1cm4gdHlwZS4nLFxuICBmaWVsZHM6IGZ1bmN0aW9uIGZpZWxkcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZToge1xuICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoZmllbGQpIHtcbiAgICAgICAgICByZXR1cm4gZmllbGQubmFtZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoZmllbGQpIHtcbiAgICAgICAgICByZXR1cm4gZmllbGQuZGVzY3JpcHRpb247XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBhcmdzOiB7XG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKF9fSW5wdXRWYWx1ZSkpKSxcbiAgICAgICAgYXJnczoge1xuICAgICAgICAgIGluY2x1ZGVEZXByZWNhdGVkOiB7XG4gICAgICAgICAgICB0eXBlOiBHcmFwaFFMQm9vbGVhbixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoZmllbGQsIF9yZWY1KSB7XG4gICAgICAgICAgdmFyIGluY2x1ZGVEZXByZWNhdGVkID0gX3JlZjUuaW5jbHVkZURlcHJlY2F0ZWQ7XG4gICAgICAgICAgcmV0dXJuIGluY2x1ZGVEZXByZWNhdGVkID8gZmllbGQuYXJncyA6IGZpZWxkLmFyZ3MuZmlsdGVyKGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmcuZGVwcmVjYXRpb25SZWFzb24gPT0gbnVsbDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHR5cGU6IHtcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKF9fVHlwZSksXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoZmllbGQpIHtcbiAgICAgICAgICByZXR1cm4gZmllbGQudHlwZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGlzRGVwcmVjYXRlZDoge1xuICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgICAgICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKGZpZWxkKSB7XG4gICAgICAgICAgcmV0dXJuIGZpZWxkLmRlcHJlY2F0aW9uUmVhc29uICE9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBkZXByZWNhdGlvblJlYXNvbjoge1xuICAgICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKGZpZWxkKSB7XG4gICAgICAgICAgcmV0dXJuIGZpZWxkLmRlcHJlY2F0aW9uUmVhc29uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSk7XG5leHBvcnQgdmFyIF9fSW5wdXRWYWx1ZSA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdfX0lucHV0VmFsdWUnLFxuICBkZXNjcmlwdGlvbjogJ0FyZ3VtZW50cyBwcm92aWRlZCB0byBGaWVsZHMgb3IgRGlyZWN0aXZlcyBhbmQgdGhlIGlucHV0IGZpZWxkcyBvZiBhbiBJbnB1dE9iamVjdCBhcmUgcmVwcmVzZW50ZWQgYXMgSW5wdXQgVmFsdWVzIHdoaWNoIGRlc2NyaWJlIHRoZWlyIHR5cGUgYW5kIG9wdGlvbmFsbHkgYSBkZWZhdWx0IHZhbHVlLicsXG4gIGZpZWxkczogZnVuY3Rpb24gZmllbGRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB7XG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgICAgICAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZShpbnB1dFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGlucHV0VmFsdWUubmFtZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoaW5wdXRWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBpbnB1dFZhbHVlLmRlc2NyaXB0aW9uO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdHlwZToge1xuICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoX19UeXBlKSxcbiAgICAgICAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZShpbnB1dFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGlucHV0VmFsdWUudHlwZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRlZmF1bHRWYWx1ZToge1xuICAgICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0EgR3JhcGhRTC1mb3JtYXR0ZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBpbnB1dCB2YWx1ZS4nLFxuICAgICAgICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKGlucHV0VmFsdWUpIHtcbiAgICAgICAgICB2YXIgdHlwZSA9IGlucHV0VmFsdWUudHlwZSxcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlID0gaW5wdXRWYWx1ZS5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgdmFyIHZhbHVlQVNUID0gYXN0RnJvbVZhbHVlKGRlZmF1bHRWYWx1ZSwgdHlwZSk7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlQVNUID8gcHJpbnQodmFsdWVBU1QpIDogbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGlzRGVwcmVjYXRlZDoge1xuICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgICAgICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKGZpZWxkKSB7XG4gICAgICAgICAgcmV0dXJuIGZpZWxkLmRlcHJlY2F0aW9uUmVhc29uICE9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBkZXByZWNhdGlvblJlYXNvbjoge1xuICAgICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKG9iaikge1xuICAgICAgICAgIHJldHVybiBvYmouZGVwcmVjYXRpb25SZWFzb247XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcbmV4cG9ydCB2YXIgX19FbnVtVmFsdWUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICBuYW1lOiAnX19FbnVtVmFsdWUnLFxuICBkZXNjcmlwdGlvbjogJ09uZSBwb3NzaWJsZSB2YWx1ZSBmb3IgYSBnaXZlbiBFbnVtLiBFbnVtIHZhbHVlcyBhcmUgdW5pcXVlIHZhbHVlcywgbm90IGEgcGxhY2Vob2xkZXIgZm9yIGEgc3RyaW5nIG9yIG51bWVyaWMgdmFsdWUuIEhvd2V2ZXIgYW4gRW51bSB2YWx1ZSBpcyByZXR1cm5lZCBpbiBhIEpTT04gcmVzcG9uc2UgYXMgYSBzdHJpbmcuJyxcbiAgZmllbGRzOiBmdW5jdGlvbiBmaWVsZHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHtcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICAgICAgICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKGVudW1WYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBlbnVtVmFsdWUubmFtZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoZW51bVZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGVudW1WYWx1ZS5kZXNjcmlwdGlvbjtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGlzRGVwcmVjYXRlZDoge1xuICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgICAgICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKGVudW1WYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBlbnVtVmFsdWUuZGVwcmVjYXRpb25SZWFzb24gIT0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiB7XG4gICAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICAgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoZW51bVZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGVudW1WYWx1ZS5kZXByZWNhdGlvblJlYXNvbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbn0pO1xuZXhwb3J0IHZhciBUeXBlS2luZCA9IE9iamVjdC5mcmVlemUoe1xuICBTQ0FMQVI6ICdTQ0FMQVInLFxuICBPQkpFQ1Q6ICdPQkpFQ1QnLFxuICBJTlRFUkZBQ0U6ICdJTlRFUkZBQ0UnLFxuICBVTklPTjogJ1VOSU9OJyxcbiAgRU5VTTogJ0VOVU0nLFxuICBJTlBVVF9PQkpFQ1Q6ICdJTlBVVF9PQkpFQ1QnLFxuICBMSVNUOiAnTElTVCcsXG4gIE5PTl9OVUxMOiAnTk9OX05VTEwnXG59KTtcbmV4cG9ydCB2YXIgX19UeXBlS2luZCA9IG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICBuYW1lOiAnX19UeXBlS2luZCcsXG4gIGRlc2NyaXB0aW9uOiAnQW4gZW51bSBkZXNjcmliaW5nIHdoYXQga2luZCBvZiB0eXBlIGEgZ2l2ZW4gYF9fVHlwZWAgaXMuJyxcbiAgdmFsdWVzOiB7XG4gICAgU0NBTEFSOiB7XG4gICAgICB2YWx1ZTogVHlwZUtpbmQuU0NBTEFSLFxuICAgICAgZGVzY3JpcHRpb246ICdJbmRpY2F0ZXMgdGhpcyB0eXBlIGlzIGEgc2NhbGFyLidcbiAgICB9LFxuICAgIE9CSkVDVDoge1xuICAgICAgdmFsdWU6IFR5cGVLaW5kLk9CSkVDVCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW5kaWNhdGVzIHRoaXMgdHlwZSBpcyBhbiBvYmplY3QuIGBmaWVsZHNgIGFuZCBgaW50ZXJmYWNlc2AgYXJlIHZhbGlkIGZpZWxkcy4nXG4gICAgfSxcbiAgICBJTlRFUkZBQ0U6IHtcbiAgICAgIHZhbHVlOiBUeXBlS2luZC5JTlRFUkZBQ0UsXG4gICAgICBkZXNjcmlwdGlvbjogJ0luZGljYXRlcyB0aGlzIHR5cGUgaXMgYW4gaW50ZXJmYWNlLiBgZmllbGRzYCwgYGludGVyZmFjZXNgLCBhbmQgYHBvc3NpYmxlVHlwZXNgIGFyZSB2YWxpZCBmaWVsZHMuJ1xuICAgIH0sXG4gICAgVU5JT046IHtcbiAgICAgIHZhbHVlOiBUeXBlS2luZC5VTklPTixcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW5kaWNhdGVzIHRoaXMgdHlwZSBpcyBhIHVuaW9uLiBgcG9zc2libGVUeXBlc2AgaXMgYSB2YWxpZCBmaWVsZC4nXG4gICAgfSxcbiAgICBFTlVNOiB7XG4gICAgICB2YWx1ZTogVHlwZUtpbmQuRU5VTSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW5kaWNhdGVzIHRoaXMgdHlwZSBpcyBhbiBlbnVtLiBgZW51bVZhbHVlc2AgaXMgYSB2YWxpZCBmaWVsZC4nXG4gICAgfSxcbiAgICBJTlBVVF9PQkpFQ1Q6IHtcbiAgICAgIHZhbHVlOiBUeXBlS2luZC5JTlBVVF9PQkpFQ1QsXG4gICAgICBkZXNjcmlwdGlvbjogJ0luZGljYXRlcyB0aGlzIHR5cGUgaXMgYW4gaW5wdXQgb2JqZWN0LiBgaW5wdXRGaWVsZHNgIGlzIGEgdmFsaWQgZmllbGQuJ1xuICAgIH0sXG4gICAgTElTVDoge1xuICAgICAgdmFsdWU6IFR5cGVLaW5kLkxJU1QsXG4gICAgICBkZXNjcmlwdGlvbjogJ0luZGljYXRlcyB0aGlzIHR5cGUgaXMgYSBsaXN0LiBgb2ZUeXBlYCBpcyBhIHZhbGlkIGZpZWxkLidcbiAgICB9LFxuICAgIE5PTl9OVUxMOiB7XG4gICAgICB2YWx1ZTogVHlwZUtpbmQuTk9OX05VTEwsXG4gICAgICBkZXNjcmlwdGlvbjogJ0luZGljYXRlcyB0aGlzIHR5cGUgaXMgYSBub24tbnVsbC4gYG9mVHlwZWAgaXMgYSB2YWxpZCBmaWVsZC4nXG4gICAgfVxuICB9XG59KTtcbi8qKlxuICogTm90ZSB0aGF0IHRoZXNlIGFyZSBHcmFwaFFMRmllbGQgYW5kIG5vdCBHcmFwaFFMRmllbGRDb25maWcsXG4gKiBzbyB0aGUgZm9ybWF0IGZvciBhcmdzIGlzIGRpZmZlcmVudC5cbiAqL1xuXG5leHBvcnQgdmFyIFNjaGVtYU1ldGFGaWVsZERlZiA9IHtcbiAgbmFtZTogJ19fc2NoZW1hJyxcbiAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKF9fU2NoZW1hKSxcbiAgZGVzY3JpcHRpb246ICdBY2Nlc3MgdGhlIGN1cnJlbnQgdHlwZSBzY2hlbWEgb2YgdGhpcyBzZXJ2ZXIuJyxcbiAgYXJnczogW10sXG4gIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoX3NvdXJjZSwgX2FyZ3MsIF9jb250ZXh0LCBfcmVmNikge1xuICAgIHZhciBzY2hlbWEgPSBfcmVmNi5zY2hlbWE7XG4gICAgcmV0dXJuIHNjaGVtYTtcbiAgfSxcbiAgaXNEZXByZWNhdGVkOiBmYWxzZSxcbiAgZGVwcmVjYXRpb25SZWFzb246IHVuZGVmaW5lZCxcbiAgZXh0ZW5zaW9uczogdW5kZWZpbmVkLFxuICBhc3ROb2RlOiB1bmRlZmluZWRcbn07XG5leHBvcnQgdmFyIFR5cGVNZXRhRmllbGREZWYgPSB7XG4gIG5hbWU6ICdfX3R5cGUnLFxuICB0eXBlOiBfX1R5cGUsXG4gIGRlc2NyaXB0aW9uOiAnUmVxdWVzdCB0aGUgdHlwZSBpbmZvcm1hdGlvbiBvZiBhIHNpbmdsZSB0eXBlLicsXG4gIGFyZ3M6IFt7XG4gICAgbmFtZTogJ25hbWUnLFxuICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsXG4gICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICAgIGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkLFxuICAgIGRlcHJlY2F0aW9uUmVhc29uOiB1bmRlZmluZWQsXG4gICAgZXh0ZW5zaW9uczogdW5kZWZpbmVkLFxuICAgIGFzdE5vZGU6IHVuZGVmaW5lZFxuICB9XSxcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZShfc291cmNlLCBfcmVmNywgX2NvbnRleHQsIF9yZWY4KSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmNy5uYW1lO1xuICAgIHZhciBzY2hlbWEgPSBfcmVmOC5zY2hlbWE7XG4gICAgcmV0dXJuIHNjaGVtYS5nZXRUeXBlKG5hbWUpO1xuICB9LFxuICBpc0RlcHJlY2F0ZWQ6IGZhbHNlLFxuICBkZXByZWNhdGlvblJlYXNvbjogdW5kZWZpbmVkLFxuICBleHRlbnNpb25zOiB1bmRlZmluZWQsXG4gIGFzdE5vZGU6IHVuZGVmaW5lZFxufTtcbmV4cG9ydCB2YXIgVHlwZU5hbWVNZXRhRmllbGREZWYgPSB7XG4gIG5hbWU6ICdfX3R5cGVuYW1lJyxcbiAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICBkZXNjcmlwdGlvbjogJ1RoZSBuYW1lIG9mIHRoZSBjdXJyZW50IE9iamVjdCB0eXBlIGF0IHJ1bnRpbWUuJyxcbiAgYXJnczogW10sXG4gIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoX3NvdXJjZSwgX2FyZ3MsIF9jb250ZXh0LCBfcmVmOSkge1xuICAgIHZhciBwYXJlbnRUeXBlID0gX3JlZjkucGFyZW50VHlwZTtcbiAgICByZXR1cm4gcGFyZW50VHlwZS5uYW1lO1xuICB9LFxuICBpc0RlcHJlY2F0ZWQ6IGZhbHNlLFxuICBkZXByZWNhdGlvblJlYXNvbjogdW5kZWZpbmVkLFxuICBleHRlbnNpb25zOiB1bmRlZmluZWQsXG4gIGFzdE5vZGU6IHVuZGVmaW5lZFxufTtcbmV4cG9ydCB2YXIgaW50cm9zcGVjdGlvblR5cGVzID0gT2JqZWN0LmZyZWV6ZShbX19TY2hlbWEsIF9fRGlyZWN0aXZlLCBfX0RpcmVjdGl2ZUxvY2F0aW9uLCBfX1R5cGUsIF9fRmllbGQsIF9fSW5wdXRWYWx1ZSwgX19FbnVtVmFsdWUsIF9fVHlwZUtpbmRdKTtcbmV4cG9ydCBmdW5jdGlvbiBpc0ludHJvc3BlY3Rpb25UeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGludHJvc3BlY3Rpb25UeXBlcy5zb21lKGZ1bmN0aW9uIChfcmVmMTApIHtcbiAgICB2YXIgbmFtZSA9IF9yZWYxMC5uYW1lO1xuICAgIHJldHVybiB0eXBlLm5hbWUgPT09IG5hbWU7XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/type/introspection.mjs\n");
1041
1042/***/ }),
1043
1044/***/ "../../../node_modules/graphql/type/scalars.mjs":
1045/*!*********************************************************************************!*\
1046 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/type/scalars.mjs ***!
1047 \*********************************************************************************/
1048/*! exports provided: GraphQLInt, GraphQLFloat, GraphQLString, GraphQLBoolean, GraphQLID, specifiedScalarTypes, isSpecifiedScalarType */
1049/***/ (function(module, __webpack_exports__, __webpack_require__) {
1050
1051"use strict";
1052eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLInt\", function() { return GraphQLInt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLFloat\", function() { return GraphQLFloat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLString\", function() { return GraphQLString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLBoolean\", function() { return GraphQLBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLID\", function() { return GraphQLID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"specifiedScalarTypes\", function() { return specifiedScalarTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSpecifiedScalarType\", function() { return isSpecifiedScalarType; });\n/* harmony import */ var _polyfills_isFinite_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/isFinite.mjs */ \"../../../node_modules/graphql/polyfills/isFinite.mjs\");\n/* harmony import */ var _polyfills_isInteger_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../polyfills/isInteger.mjs */ \"../../../node_modules/graphql/polyfills/isInteger.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n\n // As per the GraphQL Spec, Integers are only treated as valid when a valid\n// 32-bit signed integer, providing the broadest support across platforms.\n//\n// n.b. JavaScript's integers are safe between -(2^53 - 1) and 2^53 - 1 because\n// they are internally represented as IEEE 754 doubles.\n\nvar MAX_INT = 2147483647;\nvar MIN_INT = -2147483648;\n\nfunction serializeInt(outputValue) {\n var coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 1 : 0;\n }\n\n var num = coercedValue;\n\n if (typeof coercedValue === 'string' && coercedValue !== '') {\n num = Number(coercedValue);\n }\n\n if (!Object(_polyfills_isInteger_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(num)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"](\"Int cannot represent non-integer value: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(coercedValue)));\n }\n\n if (num > MAX_INT || num < MIN_INT) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"]('Int cannot represent non 32-bit signed integer value: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(coercedValue));\n }\n\n return num;\n}\n\nfunction coerceInt(inputValue) {\n if (!Object(_polyfills_isInteger_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(inputValue)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"](\"Int cannot represent non-integer value: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(inputValue)));\n }\n\n if (inputValue > MAX_INT || inputValue < MIN_INT) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"](\"Int cannot represent non 32-bit signed integer value: \".concat(inputValue));\n }\n\n return inputValue;\n}\n\nvar GraphQLInt = new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLScalarType\"]({\n name: 'Int',\n description: 'The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.',\n serialize: serializeInt,\n parseValue: coerceInt,\n parseLiteral: function parseLiteral(valueNode) {\n if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].INT) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"](\"Int cannot represent non-integer value: \".concat(Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__[\"print\"])(valueNode)), valueNode);\n }\n\n var num = parseInt(valueNode.value, 10);\n\n if (num > MAX_INT || num < MIN_INT) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"](\"Int cannot represent non 32-bit signed integer value: \".concat(valueNode.value), valueNode);\n }\n\n return num;\n }\n});\n\nfunction serializeFloat(outputValue) {\n var coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 1 : 0;\n }\n\n var num = coercedValue;\n\n if (typeof coercedValue === 'string' && coercedValue !== '') {\n num = Number(coercedValue);\n }\n\n if (!Object(_polyfills_isFinite_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(num)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"](\"Float cannot represent non numeric value: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(coercedValue)));\n }\n\n return num;\n}\n\nfunction coerceFloat(inputValue) {\n if (!Object(_polyfills_isFinite_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(inputValue)) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"](\"Float cannot represent non numeric value: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(inputValue)));\n }\n\n return inputValue;\n}\n\nvar GraphQLFloat = new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLScalarType\"]({\n name: 'Float',\n description: 'The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).',\n serialize: serializeFloat,\n parseValue: coerceFloat,\n parseLiteral: function parseLiteral(valueNode) {\n if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].FLOAT && valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].INT) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"](\"Float cannot represent non numeric value: \".concat(Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__[\"print\"])(valueNode)), valueNode);\n }\n\n return parseFloat(valueNode.value);\n }\n}); // Support serializing objects with custom valueOf() or toJSON() functions -\n// a common way to represent a complex value which can be represented as\n// a string (ex: MongoDB id objects).\n\nfunction serializeObject(outputValue) {\n if (Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(outputValue)) {\n if (typeof outputValue.valueOf === 'function') {\n var valueOfResult = outputValue.valueOf();\n\n if (!Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(valueOfResult)) {\n return valueOfResult;\n }\n }\n\n if (typeof outputValue.toJSON === 'function') {\n // $FlowFixMe[incompatible-use]\n return outputValue.toJSON();\n }\n }\n\n return outputValue;\n}\n\nfunction serializeString(outputValue) {\n var coercedValue = serializeObject(outputValue); // Serialize string, boolean and number values to a string, but do not\n // attempt to coerce object, function, symbol, or other types as strings.\n\n if (typeof coercedValue === 'string') {\n return coercedValue;\n }\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 'true' : 'false';\n }\n\n if (Object(_polyfills_isFinite_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(coercedValue)) {\n return coercedValue.toString();\n }\n\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"](\"String cannot represent value: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(outputValue)));\n}\n\nfunction coerceString(inputValue) {\n if (typeof inputValue !== 'string') {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"](\"String cannot represent a non string value: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(inputValue)));\n }\n\n return inputValue;\n}\n\nvar GraphQLString = new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLScalarType\"]({\n name: 'String',\n description: 'The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.',\n serialize: serializeString,\n parseValue: coerceString,\n parseLiteral: function parseLiteral(valueNode) {\n if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].STRING) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"](\"String cannot represent a non string value: \".concat(Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__[\"print\"])(valueNode)), valueNode);\n }\n\n return valueNode.value;\n }\n});\n\nfunction serializeBoolean(outputValue) {\n var coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue;\n }\n\n if (Object(_polyfills_isFinite_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(coercedValue)) {\n return coercedValue !== 0;\n }\n\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"](\"Boolean cannot represent a non boolean value: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(coercedValue)));\n}\n\nfunction coerceBoolean(inputValue) {\n if (typeof inputValue !== 'boolean') {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"](\"Boolean cannot represent a non boolean value: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(inputValue)));\n }\n\n return inputValue;\n}\n\nvar GraphQLBoolean = new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLScalarType\"]({\n name: 'Boolean',\n description: 'The `Boolean` scalar type represents `true` or `false`.',\n serialize: serializeBoolean,\n parseValue: coerceBoolean,\n parseLiteral: function parseLiteral(valueNode) {\n if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].BOOLEAN) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"](\"Boolean cannot represent a non boolean value: \".concat(Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__[\"print\"])(valueNode)), valueNode);\n }\n\n return valueNode.value;\n }\n});\n\nfunction serializeID(outputValue) {\n var coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'string') {\n return coercedValue;\n }\n\n if (Object(_polyfills_isInteger_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(coercedValue)) {\n return String(coercedValue);\n }\n\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"](\"ID cannot represent value: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(outputValue)));\n}\n\nfunction coerceID(inputValue) {\n if (typeof inputValue === 'string') {\n return inputValue;\n }\n\n if (Object(_polyfills_isInteger_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(inputValue)) {\n return inputValue.toString();\n }\n\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"](\"ID cannot represent value: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(inputValue)));\n}\n\nvar GraphQLID = new _definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLScalarType\"]({\n name: 'ID',\n description: 'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.',\n serialize: serializeID,\n parseValue: coerceID,\n parseLiteral: function parseLiteral(valueNode) {\n if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].STRING && valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].INT) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLError\"]('ID cannot represent a non-string and non-integer value: ' + Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__[\"print\"])(valueNode), valueNode);\n }\n\n return valueNode.value;\n }\n});\nvar specifiedScalarTypes = Object.freeze([GraphQLString, GraphQLInt, GraphQLFloat, GraphQLBoolean, GraphQLID]);\nfunction isSpecifiedScalarType(type) {\n return specifiedScalarTypes.some(function (_ref) {\n var name = _ref.name;\n return type.name === name;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9zY2FsYXJzLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3R5cGUvc2NhbGFycy5tanM/NWY3NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNGaW5pdGUgZnJvbSBcIi4uL3BvbHlmaWxscy9pc0Zpbml0ZS5tanNcIjtcbmltcG9ydCBpc0ludGVnZXIgZnJvbSBcIi4uL3BvbHlmaWxscy9pc0ludGVnZXIubWpzXCI7XG5pbXBvcnQgaW5zcGVjdCBmcm9tIFwiLi4vanN1dGlscy9pbnNwZWN0Lm1qc1wiO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tIFwiLi4vanN1dGlscy9pc09iamVjdExpa2UubWpzXCI7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSBcIi4uL2xhbmd1YWdlL2tpbmRzLm1qc1wiO1xuaW1wb3J0IHsgcHJpbnQgfSBmcm9tIFwiLi4vbGFuZ3VhZ2UvcHJpbnRlci5tanNcIjtcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5pbXBvcnQgeyBHcmFwaFFMU2NhbGFyVHlwZSB9IGZyb20gXCIuL2RlZmluaXRpb24ubWpzXCI7IC8vIEFzIHBlciB0aGUgR3JhcGhRTCBTcGVjLCBJbnRlZ2VycyBhcmUgb25seSB0cmVhdGVkIGFzIHZhbGlkIHdoZW4gYSB2YWxpZFxuLy8gMzItYml0IHNpZ25lZCBpbnRlZ2VyLCBwcm92aWRpbmcgdGhlIGJyb2FkZXN0IHN1cHBvcnQgYWNyb3NzIHBsYXRmb3Jtcy5cbi8vXG4vLyBuLmIuIEphdmFTY3JpcHQncyBpbnRlZ2VycyBhcmUgc2FmZSBiZXR3ZWVuIC0oMl41MyAtIDEpIGFuZCAyXjUzIC0gMSBiZWNhdXNlXG4vLyB0aGV5IGFyZSBpbnRlcm5hbGx5IHJlcHJlc2VudGVkIGFzIElFRUUgNzU0IGRvdWJsZXMuXG5cbnZhciBNQVhfSU5UID0gMjE0NzQ4MzY0NztcbnZhciBNSU5fSU5UID0gLTIxNDc0ODM2NDg7XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZUludChvdXRwdXRWYWx1ZSkge1xuICB2YXIgY29lcmNlZFZhbHVlID0gc2VyaWFsaXplT2JqZWN0KG91dHB1dFZhbHVlKTtcblxuICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgcmV0dXJuIGNvZXJjZWRWYWx1ZSA/IDEgOiAwO1xuICB9XG5cbiAgdmFyIG51bSA9IGNvZXJjZWRWYWx1ZTtcblxuICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gJ3N0cmluZycgJiYgY29lcmNlZFZhbHVlICE9PSAnJykge1xuICAgIG51bSA9IE51bWJlcihjb2VyY2VkVmFsdWUpO1xuICB9XG5cbiAgaWYgKCFpc0ludGVnZXIobnVtKSkge1xuICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXCJJbnQgY2Fubm90IHJlcHJlc2VudCBub24taW50ZWdlciB2YWx1ZTogXCIuY29uY2F0KGluc3BlY3QoY29lcmNlZFZhbHVlKSkpO1xuICB9XG5cbiAgaWYgKG51bSA+IE1BWF9JTlQgfHwgbnVtIDwgTUlOX0lOVCkge1xuICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoJ0ludCBjYW5ub3QgcmVwcmVzZW50IG5vbiAzMi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWU6ICcgKyBpbnNwZWN0KGNvZXJjZWRWYWx1ZSkpO1xuICB9XG5cbiAgcmV0dXJuIG51bTtcbn1cblxuZnVuY3Rpb24gY29lcmNlSW50KGlucHV0VmFsdWUpIHtcbiAgaWYgKCFpc0ludGVnZXIoaW5wdXRWYWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFwiSW50IGNhbm5vdCByZXByZXNlbnQgbm9uLWludGVnZXIgdmFsdWU6IFwiLmNvbmNhdChpbnNwZWN0KGlucHV0VmFsdWUpKSk7XG4gIH1cblxuICBpZiAoaW5wdXRWYWx1ZSA+IE1BWF9JTlQgfHwgaW5wdXRWYWx1ZSA8IE1JTl9JTlQpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFwiSW50IGNhbm5vdCByZXByZXNlbnQgbm9uIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZTogXCIuY29uY2F0KGlucHV0VmFsdWUpKTtcbiAgfVxuXG4gIHJldHVybiBpbnB1dFZhbHVlO1xufVxuXG5leHBvcnQgdmFyIEdyYXBoUUxJbnQgPSBuZXcgR3JhcGhRTFNjYWxhclR5cGUoe1xuICBuYW1lOiAnSW50JyxcbiAgZGVzY3JpcHRpb246ICdUaGUgYEludGAgc2NhbGFyIHR5cGUgcmVwcmVzZW50cyBub24tZnJhY3Rpb25hbCBzaWduZWQgd2hvbGUgbnVtZXJpYyB2YWx1ZXMuIEludCBjYW4gcmVwcmVzZW50IHZhbHVlcyBiZXR3ZWVuIC0oMl4zMSkgYW5kIDJeMzEgLSAxLicsXG4gIHNlcmlhbGl6ZTogc2VyaWFsaXplSW50LFxuICBwYXJzZVZhbHVlOiBjb2VyY2VJbnQsXG4gIHBhcnNlTGl0ZXJhbDogZnVuY3Rpb24gcGFyc2VMaXRlcmFsKHZhbHVlTm9kZSkge1xuICAgIGlmICh2YWx1ZU5vZGUua2luZCAhPT0gS2luZC5JTlQpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXCJJbnQgY2Fubm90IHJlcHJlc2VudCBub24taW50ZWdlciB2YWx1ZTogXCIuY29uY2F0KHByaW50KHZhbHVlTm9kZSkpLCB2YWx1ZU5vZGUpO1xuICAgIH1cblxuICAgIHZhciBudW0gPSBwYXJzZUludCh2YWx1ZU5vZGUudmFsdWUsIDEwKTtcblxuICAgIGlmIChudW0gPiBNQVhfSU5UIHx8IG51bSA8IE1JTl9JTlQpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXCJJbnQgY2Fubm90IHJlcHJlc2VudCBub24gMzItYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlOiBcIi5jb25jYXQodmFsdWVOb2RlLnZhbHVlKSwgdmFsdWVOb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVtO1xuICB9XG59KTtcblxuZnVuY3Rpb24gc2VyaWFsaXplRmxvYXQob3V0cHV0VmFsdWUpIHtcbiAgdmFyIGNvZXJjZWRWYWx1ZSA9IHNlcmlhbGl6ZU9iamVjdChvdXRwdXRWYWx1ZSk7XG5cbiAgaWYgKHR5cGVvZiBjb2VyY2VkVmFsdWUgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBjb2VyY2VkVmFsdWUgPyAxIDogMDtcbiAgfVxuXG4gIHZhciBudW0gPSBjb2VyY2VkVmFsdWU7XG5cbiAgaWYgKHR5cGVvZiBjb2VyY2VkVmFsdWUgPT09ICdzdHJpbmcnICYmIGNvZXJjZWRWYWx1ZSAhPT0gJycpIHtcbiAgICBudW0gPSBOdW1iZXIoY29lcmNlZFZhbHVlKTtcbiAgfVxuXG4gIGlmICghaXNGaW5pdGUobnVtKSkge1xuICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXCJGbG9hdCBjYW5ub3QgcmVwcmVzZW50IG5vbiBudW1lcmljIHZhbHVlOiBcIi5jb25jYXQoaW5zcGVjdChjb2VyY2VkVmFsdWUpKSk7XG4gIH1cblxuICByZXR1cm4gbnVtO1xufVxuXG5mdW5jdGlvbiBjb2VyY2VGbG9hdChpbnB1dFZhbHVlKSB7XG4gIGlmICghaXNGaW5pdGUoaW5wdXRWYWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFwiRmxvYXQgY2Fubm90IHJlcHJlc2VudCBub24gbnVtZXJpYyB2YWx1ZTogXCIuY29uY2F0KGluc3BlY3QoaW5wdXRWYWx1ZSkpKTtcbiAgfVxuXG4gIHJldHVybiBpbnB1dFZhbHVlO1xufVxuXG5leHBvcnQgdmFyIEdyYXBoUUxGbG9hdCA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6ICdGbG9hdCcsXG4gIGRlc2NyaXB0aW9uOiAnVGhlIGBGbG9hdGAgc2NhbGFyIHR5cGUgcmVwcmVzZW50cyBzaWduZWQgZG91YmxlLXByZWNpc2lvbiBmcmFjdGlvbmFsIHZhbHVlcyBhcyBzcGVjaWZpZWQgYnkgW0lFRUUgNzU0XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JRUVFX2Zsb2F0aW5nX3BvaW50KS4nLFxuICBzZXJpYWxpemU6IHNlcmlhbGl6ZUZsb2F0LFxuICBwYXJzZVZhbHVlOiBjb2VyY2VGbG9hdCxcbiAgcGFyc2VMaXRlcmFsOiBmdW5jdGlvbiBwYXJzZUxpdGVyYWwodmFsdWVOb2RlKSB7XG4gICAgaWYgKHZhbHVlTm9kZS5raW5kICE9PSBLaW5kLkZMT0FUICYmIHZhbHVlTm9kZS5raW5kICE9PSBLaW5kLklOVCkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcIkZsb2F0IGNhbm5vdCByZXByZXNlbnQgbm9uIG51bWVyaWMgdmFsdWU6IFwiLmNvbmNhdChwcmludCh2YWx1ZU5vZGUpKSwgdmFsdWVOb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZU5vZGUudmFsdWUpO1xuICB9XG59KTsgLy8gU3VwcG9ydCBzZXJpYWxpemluZyBvYmplY3RzIHdpdGggY3VzdG9tIHZhbHVlT2YoKSBvciB0b0pTT04oKSBmdW5jdGlvbnMgLVxuLy8gYSBjb21tb24gd2F5IHRvIHJlcHJlc2VudCBhIGNvbXBsZXggdmFsdWUgd2hpY2ggY2FuIGJlIHJlcHJlc2VudGVkIGFzXG4vLyBhIHN0cmluZyAoZXg6IE1vbmdvREIgaWQgb2JqZWN0cykuXG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZU9iamVjdChvdXRwdXRWYWx1ZSkge1xuICBpZiAoaXNPYmplY3RMaWtlKG91dHB1dFZhbHVlKSkge1xuICAgIGlmICh0eXBlb2Ygb3V0cHV0VmFsdWUudmFsdWVPZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdmFyIHZhbHVlT2ZSZXN1bHQgPSBvdXRwdXRWYWx1ZS52YWx1ZU9mKCk7XG5cbiAgICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlT2ZSZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZU9mUmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3V0cHV0VmFsdWUudG9KU09OID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS11c2VdXG4gICAgICByZXR1cm4gb3V0cHV0VmFsdWUudG9KU09OKCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dHB1dFZhbHVlO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVTdHJpbmcob3V0cHV0VmFsdWUpIHtcbiAgdmFyIGNvZXJjZWRWYWx1ZSA9IHNlcmlhbGl6ZU9iamVjdChvdXRwdXRWYWx1ZSk7IC8vIFNlcmlhbGl6ZSBzdHJpbmcsIGJvb2xlYW4gYW5kIG51bWJlciB2YWx1ZXMgdG8gYSBzdHJpbmcsIGJ1dCBkbyBub3RcbiAgLy8gYXR0ZW1wdCB0byBjb2VyY2Ugb2JqZWN0LCBmdW5jdGlvbiwgc3ltYm9sLCBvciBvdGhlciB0eXBlcyBhcyBzdHJpbmdzLlxuXG4gIGlmICh0eXBlb2YgY29lcmNlZFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBjb2VyY2VkVmFsdWU7XG4gIH1cblxuICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgcmV0dXJuIGNvZXJjZWRWYWx1ZSA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gIH1cblxuICBpZiAoaXNGaW5pdGUoY29lcmNlZFZhbHVlKSkge1xuICAgIHJldHVybiBjb2VyY2VkVmFsdWUudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXCJTdHJpbmcgY2Fubm90IHJlcHJlc2VudCB2YWx1ZTogXCIuY29uY2F0KGluc3BlY3Qob3V0cHV0VmFsdWUpKSk7XG59XG5cbmZ1bmN0aW9uIGNvZXJjZVN0cmluZyhpbnB1dFZhbHVlKSB7XG4gIGlmICh0eXBlb2YgaW5wdXRWYWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFwiU3RyaW5nIGNhbm5vdCByZXByZXNlbnQgYSBub24gc3RyaW5nIHZhbHVlOiBcIi5jb25jYXQoaW5zcGVjdChpbnB1dFZhbHVlKSkpO1xuICB9XG5cbiAgcmV0dXJuIGlucHV0VmFsdWU7XG59XG5cbmV4cG9ydCB2YXIgR3JhcGhRTFN0cmluZyA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6ICdTdHJpbmcnLFxuICBkZXNjcmlwdGlvbjogJ1RoZSBgU3RyaW5nYCBzY2FsYXIgdHlwZSByZXByZXNlbnRzIHRleHR1YWwgZGF0YSwgcmVwcmVzZW50ZWQgYXMgVVRGLTggY2hhcmFjdGVyIHNlcXVlbmNlcy4gVGhlIFN0cmluZyB0eXBlIGlzIG1vc3Qgb2Z0ZW4gdXNlZCBieSBHcmFwaFFMIHRvIHJlcHJlc2VudCBmcmVlLWZvcm0gaHVtYW4tcmVhZGFibGUgdGV4dC4nLFxuICBzZXJpYWxpemU6IHNlcmlhbGl6ZVN0cmluZyxcbiAgcGFyc2VWYWx1ZTogY29lcmNlU3RyaW5nLFxuICBwYXJzZUxpdGVyYWw6IGZ1bmN0aW9uIHBhcnNlTGl0ZXJhbCh2YWx1ZU5vZGUpIHtcbiAgICBpZiAodmFsdWVOb2RlLmtpbmQgIT09IEtpbmQuU1RSSU5HKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFwiU3RyaW5nIGNhbm5vdCByZXByZXNlbnQgYSBub24gc3RyaW5nIHZhbHVlOiBcIi5jb25jYXQocHJpbnQodmFsdWVOb2RlKSksIHZhbHVlTm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlTm9kZS52YWx1ZTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZUJvb2xlYW4ob3V0cHV0VmFsdWUpIHtcbiAgdmFyIGNvZXJjZWRWYWx1ZSA9IHNlcmlhbGl6ZU9iamVjdChvdXRwdXRWYWx1ZSk7XG5cbiAgaWYgKHR5cGVvZiBjb2VyY2VkVmFsdWUgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBjb2VyY2VkVmFsdWU7XG4gIH1cblxuICBpZiAoaXNGaW5pdGUoY29lcmNlZFZhbHVlKSkge1xuICAgIHJldHVybiBjb2VyY2VkVmFsdWUgIT09IDA7XG4gIH1cblxuICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFwiQm9vbGVhbiBjYW5ub3QgcmVwcmVzZW50IGEgbm9uIGJvb2xlYW4gdmFsdWU6IFwiLmNvbmNhdChpbnNwZWN0KGNvZXJjZWRWYWx1ZSkpKTtcbn1cblxuZnVuY3Rpb24gY29lcmNlQm9vbGVhbihpbnB1dFZhbHVlKSB7XG4gIGlmICh0eXBlb2YgaW5wdXRWYWx1ZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcIkJvb2xlYW4gY2Fubm90IHJlcHJlc2VudCBhIG5vbiBib29sZWFuIHZhbHVlOiBcIi5jb25jYXQoaW5zcGVjdChpbnB1dFZhbHVlKSkpO1xuICB9XG5cbiAgcmV0dXJuIGlucHV0VmFsdWU7XG59XG5cbmV4cG9ydCB2YXIgR3JhcGhRTEJvb2xlYW4gPSBuZXcgR3JhcGhRTFNjYWxhclR5cGUoe1xuICBuYW1lOiAnQm9vbGVhbicsXG4gIGRlc2NyaXB0aW9uOiAnVGhlIGBCb29sZWFuYCBzY2FsYXIgdHlwZSByZXByZXNlbnRzIGB0cnVlYCBvciBgZmFsc2VgLicsXG4gIHNlcmlhbGl6ZTogc2VyaWFsaXplQm9vbGVhbixcbiAgcGFyc2VWYWx1ZTogY29lcmNlQm9vbGVhbixcbiAgcGFyc2VMaXRlcmFsOiBmdW5jdGlvbiBwYXJzZUxpdGVyYWwodmFsdWVOb2RlKSB7XG4gICAgaWYgKHZhbHVlTm9kZS5raW5kICE9PSBLaW5kLkJPT0xFQU4pIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXCJCb29sZWFuIGNhbm5vdCByZXByZXNlbnQgYSBub24gYm9vbGVhbiB2YWx1ZTogXCIuY29uY2F0KHByaW50KHZhbHVlTm9kZSkpLCB2YWx1ZU5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZU5vZGUudmFsdWU7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBzZXJpYWxpemVJRChvdXRwdXRWYWx1ZSkge1xuICB2YXIgY29lcmNlZFZhbHVlID0gc2VyaWFsaXplT2JqZWN0KG91dHB1dFZhbHVlKTtcblxuICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gY29lcmNlZFZhbHVlO1xuICB9XG5cbiAgaWYgKGlzSW50ZWdlcihjb2VyY2VkVmFsdWUpKSB7XG4gICAgcmV0dXJuIFN0cmluZyhjb2VyY2VkVmFsdWUpO1xuICB9XG5cbiAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcIklEIGNhbm5vdCByZXByZXNlbnQgdmFsdWU6IFwiLmNvbmNhdChpbnNwZWN0KG91dHB1dFZhbHVlKSkpO1xufVxuXG5mdW5jdGlvbiBjb2VyY2VJRChpbnB1dFZhbHVlKSB7XG4gIGlmICh0eXBlb2YgaW5wdXRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgfVxuXG4gIGlmIChpc0ludGVnZXIoaW5wdXRWYWx1ZSkpIHtcbiAgICByZXR1cm4gaW5wdXRWYWx1ZS50b1N0cmluZygpO1xuICB9XG5cbiAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcIklEIGNhbm5vdCByZXByZXNlbnQgdmFsdWU6IFwiLmNvbmNhdChpbnNwZWN0KGlucHV0VmFsdWUpKSk7XG59XG5cbmV4cG9ydCB2YXIgR3JhcGhRTElEID0gbmV3IEdyYXBoUUxTY2FsYXJUeXBlKHtcbiAgbmFtZTogJ0lEJyxcbiAgZGVzY3JpcHRpb246ICdUaGUgYElEYCBzY2FsYXIgdHlwZSByZXByZXNlbnRzIGEgdW5pcXVlIGlkZW50aWZpZXIsIG9mdGVuIHVzZWQgdG8gcmVmZXRjaCBhbiBvYmplY3Qgb3IgYXMga2V5IGZvciBhIGNhY2hlLiBUaGUgSUQgdHlwZSBhcHBlYXJzIGluIGEgSlNPTiByZXNwb25zZSBhcyBhIFN0cmluZzsgaG93ZXZlciwgaXQgaXMgbm90IGludGVuZGVkIHRvIGJlIGh1bWFuLXJlYWRhYmxlLiBXaGVuIGV4cGVjdGVkIGFzIGFuIGlucHV0IHR5cGUsIGFueSBzdHJpbmcgKHN1Y2ggYXMgYFwiNFwiYCkgb3IgaW50ZWdlciAoc3VjaCBhcyBgNGApIGlucHV0IHZhbHVlIHdpbGwgYmUgYWNjZXB0ZWQgYXMgYW4gSUQuJyxcbiAgc2VyaWFsaXplOiBzZXJpYWxpemVJRCxcbiAgcGFyc2VWYWx1ZTogY29lcmNlSUQsXG4gIHBhcnNlTGl0ZXJhbDogZnVuY3Rpb24gcGFyc2VMaXRlcmFsKHZhbHVlTm9kZSkge1xuICAgIGlmICh2YWx1ZU5vZGUua2luZCAhPT0gS2luZC5TVFJJTkcgJiYgdmFsdWVOb2RlLmtpbmQgIT09IEtpbmQuSU5UKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKCdJRCBjYW5ub3QgcmVwcmVzZW50IGEgbm9uLXN0cmluZyBhbmQgbm9uLWludGVnZXIgdmFsdWU6ICcgKyBwcmludCh2YWx1ZU5vZGUpLCB2YWx1ZU5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZU5vZGUudmFsdWU7XG4gIH1cbn0pO1xuZXhwb3J0IHZhciBzcGVjaWZpZWRTY2FsYXJUeXBlcyA9IE9iamVjdC5mcmVlemUoW0dyYXBoUUxTdHJpbmcsIEdyYXBoUUxJbnQsIEdyYXBoUUxGbG9hdCwgR3JhcGhRTEJvb2xlYW4sIEdyYXBoUUxJRF0pO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3BlY2lmaWVkU2NhbGFyVHlwZSh0eXBlKSB7XG4gIHJldHVybiBzcGVjaWZpZWRTY2FsYXJUeXBlcy5zb21lKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgcmV0dXJuIHR5cGUubmFtZSA9PT0gbmFtZTtcbiAgfSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/type/scalars.mjs\n");
1053
1054/***/ }),
1055
1056/***/ "../../../node_modules/graphql/type/schema.mjs":
1057/*!********************************************************************************!*\
1058 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/type/schema.mjs ***!
1059 \********************************************************************************/
1060/*! exports provided: isSchema, assertSchema, GraphQLSchema */
1061/***/ (function(module, __webpack_exports__, __webpack_require__) {
1062
1063"use strict";
1064eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSchema\", function() { return isSchema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertSchema\", function() { return assertSchema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GraphQLSchema\", function() { return GraphQLSchema; });\n/* harmony import */ var _polyfills_find_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/find.mjs */ \"../../../node_modules/graphql/polyfills/find.mjs\");\n/* harmony import */ var _polyfills_arrayFrom_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../polyfills/arrayFrom.mjs */ \"../../../node_modules/graphql/polyfills/arrayFrom.mjs\");\n/* harmony import */ var _polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../polyfills/objectValues.mjs */ \"../../../node_modules/graphql/polyfills/objectValues.mjs\");\n/* harmony import */ var _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../polyfills/symbols.mjs */ \"../../../node_modules/graphql/polyfills/symbols.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/toObjMap.mjs */ \"../../../node_modules/graphql/jsutils/toObjMap.mjs\");\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jsutils/instanceOf.mjs */ \"../../../node_modules/graphql/jsutils/instanceOf.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _introspection_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _directives_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Test if the given value is a GraphQL schema.\n */\n\n// eslint-disable-next-line no-redeclare\nfunction isSchema(schema) {\n return Object(_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(schema, GraphQLSchema);\n}\nfunction assertSchema(schema) {\n if (!isSchema(schema)) {\n throw new Error(\"Expected \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(schema), \" to be a GraphQL schema.\"));\n }\n\n return schema;\n}\n/**\n * Schema Definition\n *\n * A Schema is created by supplying the root types of each type of operation,\n * query and mutation (optional). A schema definition is then supplied to the\n * validator and executor.\n *\n * Example:\n *\n * const MyAppSchema = new GraphQLSchema({\n * query: MyAppQueryRootType,\n * mutation: MyAppMutationRootType,\n * })\n *\n * Note: When the schema is constructed, by default only the types that are\n * reachable by traversing the root types are included, other types must be\n * explicitly referenced.\n *\n * Example:\n *\n * const characterInterface = new GraphQLInterfaceType({\n * name: 'Character',\n * ...\n * });\n *\n * const humanType = new GraphQLObjectType({\n * name: 'Human',\n * interfaces: [characterInterface],\n * ...\n * });\n *\n * const droidType = new GraphQLObjectType({\n * name: 'Droid',\n * interfaces: [characterInterface],\n * ...\n * });\n *\n * const schema = new GraphQLSchema({\n * query: new GraphQLObjectType({\n * name: 'Query',\n * fields: {\n * hero: { type: characterInterface, ... },\n * }\n * }),\n * ...\n * // Since this schema references only the `Character` interface it's\n * // necessary to explicitly list the types that implement it if\n * // you want them to be included in the final schema.\n * types: [humanType, droidType],\n * })\n *\n * Note: If an array of `directives` are provided to GraphQLSchema, that will be\n * the exact list of directives represented and allowed. If `directives` is not\n * provided then a default set of the specified directives (e.g. @include and\n * @skip) will be used. If you wish to provide *additional* directives to these\n * specified directives, you must explicitly declare them. Example:\n *\n * const MyAppSchema = new GraphQLSchema({\n * ...\n * directives: specifiedDirectives.concat([ myCustomDirective ]),\n * })\n *\n */\n\nvar GraphQLSchema = /*#__PURE__*/function () {\n // Used as a cache for validateSchema().\n function GraphQLSchema(config) {\n var _config$directives;\n\n // If this schema was built from a source known to be valid, then it may be\n // marked with assumeValid to avoid an additional type system validation.\n this.__validationErrors = config.assumeValid === true ? [] : undefined; // Check for common mistakes during construction to produce early errors.\n\n Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(config) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, 'Must provide configuration object.');\n !config.types || Array.isArray(config.types) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, \"\\\"types\\\" must be Array if provided but got: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(config.types), \".\"));\n !config.directives || Array.isArray(config.directives) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, '\"directives\" must be Array if provided but got: ' + \"\".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(config.directives), \".\"));\n this.description = config.description;\n this.extensions = config.extensions && Object(_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = config.extensionASTNodes;\n this._queryType = config.query;\n this._mutationType = config.mutation;\n this._subscriptionType = config.subscription; // Provide specified directives (e.g. @include and @skip) by default.\n\n this._directives = (_config$directives = config.directives) !== null && _config$directives !== void 0 ? _config$directives : _directives_mjs__WEBPACK_IMPORTED_MODULE_10__[\"specifiedDirectives\"]; // To preserve order of user-provided types, we add first to add them to\n // the set of \"collected\" types, so `collectReferencedTypes` ignore them.\n\n var allReferencedTypes = new Set(config.types);\n\n if (config.types != null) {\n for (var _i2 = 0, _config$types2 = config.types; _i2 < _config$types2.length; _i2++) {\n var type = _config$types2[_i2];\n // When we ready to process this type, we remove it from \"collected\" types\n // and then add it together with all dependent types in the correct position.\n allReferencedTypes.delete(type);\n collectReferencedTypes(type, allReferencedTypes);\n }\n }\n\n if (this._queryType != null) {\n collectReferencedTypes(this._queryType, allReferencedTypes);\n }\n\n if (this._mutationType != null) {\n collectReferencedTypes(this._mutationType, allReferencedTypes);\n }\n\n if (this._subscriptionType != null) {\n collectReferencedTypes(this._subscriptionType, allReferencedTypes);\n }\n\n for (var _i4 = 0, _this$_directives2 = this._directives; _i4 < _this$_directives2.length; _i4++) {\n var directive = _this$_directives2[_i4];\n\n // Directives are not validated until validateSchema() is called.\n if (Object(_directives_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isDirective\"])(directive)) {\n for (var _i6 = 0, _directive$args2 = directive.args; _i6 < _directive$args2.length; _i6++) {\n var arg = _directive$args2[_i6];\n collectReferencedTypes(arg.type, allReferencedTypes);\n }\n }\n }\n\n collectReferencedTypes(_introspection_mjs__WEBPACK_IMPORTED_MODULE_9__[\"__Schema\"], allReferencedTypes); // Storing the resulting map for reference by the schema.\n\n this._typeMap = Object.create(null);\n this._subTypeMap = Object.create(null); // Keep track of all implementations by interface name.\n\n this._implementationsMap = Object.create(null);\n\n for (var _i8 = 0, _arrayFrom2 = Object(_polyfills_arrayFrom_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(allReferencedTypes); _i8 < _arrayFrom2.length; _i8++) {\n var namedType = _arrayFrom2[_i8];\n\n if (namedType == null) {\n continue;\n }\n\n var typeName = namedType.name;\n typeName || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(0, 'One of the provided types for building the Schema is missing a name.');\n\n if (this._typeMap[typeName] !== undefined) {\n throw new Error(\"Schema must contain uniquely named types but contains multiple types named \\\"\".concat(typeName, \"\\\".\"));\n }\n\n this._typeMap[typeName] = namedType;\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_11__[\"isInterfaceType\"])(namedType)) {\n // Store implementations by interface.\n for (var _i10 = 0, _namedType$getInterfa2 = namedType.getInterfaces(); _i10 < _namedType$getInterfa2.length; _i10++) {\n var iface = _namedType$getInterfa2[_i10];\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_11__[\"isInterfaceType\"])(iface)) {\n var implementations = this._implementationsMap[iface.name];\n\n if (implementations === undefined) {\n implementations = this._implementationsMap[iface.name] = {\n objects: [],\n interfaces: []\n };\n }\n\n implementations.interfaces.push(namedType);\n }\n }\n } else if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_11__[\"isObjectType\"])(namedType)) {\n // Store implementations by objects.\n for (var _i12 = 0, _namedType$getInterfa4 = namedType.getInterfaces(); _i12 < _namedType$getInterfa4.length; _i12++) {\n var _iface = _namedType$getInterfa4[_i12];\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_11__[\"isInterfaceType\"])(_iface)) {\n var _implementations = this._implementationsMap[_iface.name];\n\n if (_implementations === undefined) {\n _implementations = this._implementationsMap[_iface.name] = {\n objects: [],\n interfaces: []\n };\n }\n\n _implementations.objects.push(namedType);\n }\n }\n }\n }\n }\n\n var _proto = GraphQLSchema.prototype;\n\n _proto.getQueryType = function getQueryType() {\n return this._queryType;\n };\n\n _proto.getMutationType = function getMutationType() {\n return this._mutationType;\n };\n\n _proto.getSubscriptionType = function getSubscriptionType() {\n return this._subscriptionType;\n };\n\n _proto.getTypeMap = function getTypeMap() {\n return this._typeMap;\n };\n\n _proto.getType = function getType(name) {\n return this.getTypeMap()[name];\n };\n\n _proto.getPossibleTypes = function getPossibleTypes(abstractType) {\n return Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_11__[\"isUnionType\"])(abstractType) ? abstractType.getTypes() : this.getImplementations(abstractType).objects;\n };\n\n _proto.getImplementations = function getImplementations(interfaceType) {\n var implementations = this._implementationsMap[interfaceType.name];\n return implementations !== null && implementations !== void 0 ? implementations : {\n objects: [],\n interfaces: []\n };\n } // @deprecated: use isSubType instead - will be removed in v16.\n ;\n\n _proto.isPossibleType = function isPossibleType(abstractType, possibleType) {\n return this.isSubType(abstractType, possibleType);\n };\n\n _proto.isSubType = function isSubType(abstractType, maybeSubType) {\n var map = this._subTypeMap[abstractType.name];\n\n if (map === undefined) {\n map = Object.create(null);\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_11__[\"isUnionType\"])(abstractType)) {\n for (var _i14 = 0, _abstractType$getType2 = abstractType.getTypes(); _i14 < _abstractType$getType2.length; _i14++) {\n var type = _abstractType$getType2[_i14];\n map[type.name] = true;\n }\n } else {\n var implementations = this.getImplementations(abstractType);\n\n for (var _i16 = 0, _implementations$obje2 = implementations.objects; _i16 < _implementations$obje2.length; _i16++) {\n var _type = _implementations$obje2[_i16];\n map[_type.name] = true;\n }\n\n for (var _i18 = 0, _implementations$inte2 = implementations.interfaces; _i18 < _implementations$inte2.length; _i18++) {\n var _type2 = _implementations$inte2[_i18];\n map[_type2.name] = true;\n }\n }\n\n this._subTypeMap[abstractType.name] = map;\n }\n\n return map[maybeSubType.name] !== undefined;\n };\n\n _proto.getDirectives = function getDirectives() {\n return this._directives;\n };\n\n _proto.getDirective = function getDirective(name) {\n return Object(_polyfills_find_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this.getDirectives(), function (directive) {\n return directive.name === name;\n });\n };\n\n _proto.toConfig = function toConfig() {\n var _this$extensionASTNod;\n\n return {\n description: this.description,\n query: this.getQueryType(),\n mutation: this.getMutationType(),\n subscription: this.getSubscriptionType(),\n types: Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this.getTypeMap()),\n directives: this.getDirectives().slice(),\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: (_this$extensionASTNod = this.extensionASTNodes) !== null && _this$extensionASTNod !== void 0 ? _this$extensionASTNod : [],\n assumeValid: this.__validationErrors !== undefined\n };\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n ;\n\n _createClass(GraphQLSchema, [{\n key: _polyfills_symbols_mjs__WEBPACK_IMPORTED_MODULE_3__[\"SYMBOL_TO_STRING_TAG\"],\n get: function get() {\n return 'GraphQLSchema';\n }\n }]);\n\n return GraphQLSchema;\n}();\n\nfunction collectReferencedTypes(type, typeSet) {\n var namedType = Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_11__[\"getNamedType\"])(type);\n\n if (!typeSet.has(namedType)) {\n typeSet.add(namedType);\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_11__[\"isUnionType\"])(namedType)) {\n for (var _i20 = 0, _namedType$getTypes2 = namedType.getTypes(); _i20 < _namedType$getTypes2.length; _i20++) {\n var memberType = _namedType$getTypes2[_i20];\n collectReferencedTypes(memberType, typeSet);\n }\n } else if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_11__[\"isObjectType\"])(namedType) || Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_11__[\"isInterfaceType\"])(namedType)) {\n for (var _i22 = 0, _namedType$getInterfa6 = namedType.getInterfaces(); _i22 < _namedType$getInterfa6.length; _i22++) {\n var interfaceType = _namedType$getInterfa6[_i22];\n collectReferencedTypes(interfaceType, typeSet);\n }\n\n for (var _i24 = 0, _objectValues2 = Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(namedType.getFields()); _i24 < _objectValues2.length; _i24++) {\n var field = _objectValues2[_i24];\n collectReferencedTypes(field.type, typeSet);\n\n for (var _i26 = 0, _field$args2 = field.args; _i26 < _field$args2.length; _i26++) {\n var arg = _field$args2[_i26];\n collectReferencedTypes(arg.type, typeSet);\n }\n }\n } else if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_11__[\"isInputObjectType\"])(namedType)) {\n for (var _i28 = 0, _objectValues4 = Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(namedType.getFields()); _i28 < _objectValues4.length; _i28++) {\n var _field = _objectValues4[_i28];\n collectReferencedTypes(_field.type, typeSet);\n }\n }\n }\n\n return typeSet;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9zY2hlbWEubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9zY2hlbWEubWpzPzQ4OGMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5pbXBvcnQgZmluZCBmcm9tIFwiLi4vcG9seWZpbGxzL2ZpbmQubWpzXCI7XG5pbXBvcnQgYXJyYXlGcm9tIGZyb20gXCIuLi9wb2x5ZmlsbHMvYXJyYXlGcm9tLm1qc1wiO1xuaW1wb3J0IG9iamVjdFZhbHVlcyBmcm9tIFwiLi4vcG9seWZpbGxzL29iamVjdFZhbHVlcy5tanNcIjtcbmltcG9ydCB7IFNZTUJPTF9UT19TVFJJTkdfVEFHIH0gZnJvbSBcIi4uL3BvbHlmaWxscy9zeW1ib2xzLm1qc1wiO1xuaW1wb3J0IGluc3BlY3QgZnJvbSBcIi4uL2pzdXRpbHMvaW5zcGVjdC5tanNcIjtcbmltcG9ydCB0b09iak1hcCBmcm9tIFwiLi4vanN1dGlscy90b09iak1hcC5tanNcIjtcbmltcG9ydCBkZXZBc3NlcnQgZnJvbSBcIi4uL2pzdXRpbHMvZGV2QXNzZXJ0Lm1qc1wiO1xuaW1wb3J0IGluc3RhbmNlT2YgZnJvbSBcIi4uL2pzdXRpbHMvaW5zdGFuY2VPZi5tanNcIjtcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSBcIi4uL2pzdXRpbHMvaXNPYmplY3RMaWtlLm1qc1wiO1xuaW1wb3J0IHsgX19TY2hlbWEgfSBmcm9tIFwiLi9pbnRyb3NwZWN0aW9uLm1qc1wiO1xuaW1wb3J0IHsgR3JhcGhRTERpcmVjdGl2ZSwgaXNEaXJlY3RpdmUsIHNwZWNpZmllZERpcmVjdGl2ZXMgfSBmcm9tIFwiLi9kaXJlY3RpdmVzLm1qc1wiO1xuaW1wb3J0IHsgaXNPYmplY3RUeXBlLCBpc0ludGVyZmFjZVR5cGUsIGlzVW5pb25UeXBlLCBpc0lucHV0T2JqZWN0VHlwZSwgZ2V0TmFtZWRUeXBlIH0gZnJvbSBcIi4vZGVmaW5pdGlvbi5tanNcIjtcbi8qKlxuICogVGVzdCBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBHcmFwaFFMIHNjaGVtYS5cbiAqL1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVkZWNsYXJlXG5leHBvcnQgZnVuY3Rpb24gaXNTY2hlbWEoc2NoZW1hKSB7XG4gIHJldHVybiBpbnN0YW5jZU9mKHNjaGVtYSwgR3JhcGhRTFNjaGVtYSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0U2NoZW1hKHNjaGVtYSkge1xuICBpZiAoIWlzU2NoZW1hKHNjaGVtYSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBcIi5jb25jYXQoaW5zcGVjdChzY2hlbWEpLCBcIiB0byBiZSBhIEdyYXBoUUwgc2NoZW1hLlwiKSk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufVxuLyoqXG4gKiBTY2hlbWEgRGVmaW5pdGlvblxuICpcbiAqIEEgU2NoZW1hIGlzIGNyZWF0ZWQgYnkgc3VwcGx5aW5nIHRoZSByb290IHR5cGVzIG9mIGVhY2ggdHlwZSBvZiBvcGVyYXRpb24sXG4gKiBxdWVyeSBhbmQgbXV0YXRpb24gKG9wdGlvbmFsKS4gQSBzY2hlbWEgZGVmaW5pdGlvbiBpcyB0aGVuIHN1cHBsaWVkIHRvIHRoZVxuICogdmFsaWRhdG9yIGFuZCBleGVjdXRvci5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqICAgICBjb25zdCBNeUFwcFNjaGVtYSA9IG5ldyBHcmFwaFFMU2NoZW1hKHtcbiAqICAgICAgIHF1ZXJ5OiBNeUFwcFF1ZXJ5Um9vdFR5cGUsXG4gKiAgICAgICBtdXRhdGlvbjogTXlBcHBNdXRhdGlvblJvb3RUeXBlLFxuICogICAgIH0pXG4gKlxuICogTm90ZTogV2hlbiB0aGUgc2NoZW1hIGlzIGNvbnN0cnVjdGVkLCBieSBkZWZhdWx0IG9ubHkgdGhlIHR5cGVzIHRoYXQgYXJlXG4gKiByZWFjaGFibGUgYnkgdHJhdmVyc2luZyB0aGUgcm9vdCB0eXBlcyBhcmUgaW5jbHVkZWQsIG90aGVyIHR5cGVzIG11c3QgYmVcbiAqIGV4cGxpY2l0bHkgcmVmZXJlbmNlZC5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqICAgICBjb25zdCBjaGFyYWN0ZXJJbnRlcmZhY2UgPSBuZXcgR3JhcGhRTEludGVyZmFjZVR5cGUoe1xuICogICAgICAgbmFtZTogJ0NoYXJhY3RlcicsXG4gKiAgICAgICAuLi5cbiAqICAgICB9KTtcbiAqXG4gKiAgICAgY29uc3QgaHVtYW5UeXBlID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAqICAgICAgIG5hbWU6ICdIdW1hbicsXG4gKiAgICAgICBpbnRlcmZhY2VzOiBbY2hhcmFjdGVySW50ZXJmYWNlXSxcbiAqICAgICAgIC4uLlxuICogICAgIH0pO1xuICpcbiAqICAgICBjb25zdCBkcm9pZFR5cGUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICogICAgICAgbmFtZTogJ0Ryb2lkJyxcbiAqICAgICAgIGludGVyZmFjZXM6IFtjaGFyYWN0ZXJJbnRlcmZhY2VdLFxuICogICAgICAgLi4uXG4gKiAgICAgfSk7XG4gKlxuICogICAgIGNvbnN0IHNjaGVtYSA9IG5ldyBHcmFwaFFMU2NoZW1hKHtcbiAqICAgICAgIHF1ZXJ5OiBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICogICAgICAgICBuYW1lOiAnUXVlcnknLFxuICogICAgICAgICBmaWVsZHM6IHtcbiAqICAgICAgICAgICBoZXJvOiB7IHR5cGU6IGNoYXJhY3RlckludGVyZmFjZSwgLi4uIH0sXG4gKiAgICAgICAgIH1cbiAqICAgICAgIH0pLFxuICogICAgICAgLi4uXG4gKiAgICAgICAvLyBTaW5jZSB0aGlzIHNjaGVtYSByZWZlcmVuY2VzIG9ubHkgdGhlIGBDaGFyYWN0ZXJgIGludGVyZmFjZSBpdCdzXG4gKiAgICAgICAvLyBuZWNlc3NhcnkgdG8gZXhwbGljaXRseSBsaXN0IHRoZSB0eXBlcyB0aGF0IGltcGxlbWVudCBpdCBpZlxuICogICAgICAgLy8geW91IHdhbnQgdGhlbSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgZmluYWwgc2NoZW1hLlxuICogICAgICAgdHlwZXM6IFtodW1hblR5cGUsIGRyb2lkVHlwZV0sXG4gKiAgICAgfSlcbiAqXG4gKiBOb3RlOiBJZiBhbiBhcnJheSBvZiBgZGlyZWN0aXZlc2AgYXJlIHByb3ZpZGVkIHRvIEdyYXBoUUxTY2hlbWEsIHRoYXQgd2lsbCBiZVxuICogdGhlIGV4YWN0IGxpc3Qgb2YgZGlyZWN0aXZlcyByZXByZXNlbnRlZCBhbmQgYWxsb3dlZC4gSWYgYGRpcmVjdGl2ZXNgIGlzIG5vdFxuICogcHJvdmlkZWQgdGhlbiBhIGRlZmF1bHQgc2V0IG9mIHRoZSBzcGVjaWZpZWQgZGlyZWN0aXZlcyAoZS5nLiBAaW5jbHVkZSBhbmRcbiAqIEBza2lwKSB3aWxsIGJlIHVzZWQuIElmIHlvdSB3aXNoIHRvIHByb3ZpZGUgKmFkZGl0aW9uYWwqIGRpcmVjdGl2ZXMgdG8gdGhlc2VcbiAqIHNwZWNpZmllZCBkaXJlY3RpdmVzLCB5b3UgbXVzdCBleHBsaWNpdGx5IGRlY2xhcmUgdGhlbS4gRXhhbXBsZTpcbiAqXG4gKiAgICAgY29uc3QgTXlBcHBTY2hlbWEgPSBuZXcgR3JhcGhRTFNjaGVtYSh7XG4gKiAgICAgICAuLi5cbiAqICAgICAgIGRpcmVjdGl2ZXM6IHNwZWNpZmllZERpcmVjdGl2ZXMuY29uY2F0KFsgbXlDdXN0b21EaXJlY3RpdmUgXSksXG4gKiAgICAgfSlcbiAqXG4gKi9cblxuZXhwb3J0IHZhciBHcmFwaFFMU2NoZW1hID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgLy8gVXNlZCBhcyBhIGNhY2hlIGZvciB2YWxpZGF0ZVNjaGVtYSgpLlxuICBmdW5jdGlvbiBHcmFwaFFMU2NoZW1hKGNvbmZpZykge1xuICAgIHZhciBfY29uZmlnJGRpcmVjdGl2ZXM7XG5cbiAgICAvLyBJZiB0aGlzIHNjaGVtYSB3YXMgYnVpbHQgZnJvbSBhIHNvdXJjZSBrbm93biB0byBiZSB2YWxpZCwgdGhlbiBpdCBtYXkgYmVcbiAgICAvLyBtYXJrZWQgd2l0aCBhc3N1bWVWYWxpZCB0byBhdm9pZCBhbiBhZGRpdGlvbmFsIHR5cGUgc3lzdGVtIHZhbGlkYXRpb24uXG4gICAgdGhpcy5fX3ZhbGlkYXRpb25FcnJvcnMgPSBjb25maWcuYXNzdW1lVmFsaWQgPT09IHRydWUgPyBbXSA6IHVuZGVmaW5lZDsgLy8gQ2hlY2sgZm9yIGNvbW1vbiBtaXN0YWtlcyBkdXJpbmcgY29uc3RydWN0aW9uIHRvIHByb2R1Y2UgZWFybHkgZXJyb3JzLlxuXG4gICAgaXNPYmplY3RMaWtlKGNvbmZpZykgfHwgZGV2QXNzZXJ0KDAsICdNdXN0IHByb3ZpZGUgY29uZmlndXJhdGlvbiBvYmplY3QuJyk7XG4gICAgIWNvbmZpZy50eXBlcyB8fCBBcnJheS5pc0FycmF5KGNvbmZpZy50eXBlcykgfHwgZGV2QXNzZXJ0KDAsIFwiXFxcInR5cGVzXFxcIiBtdXN0IGJlIEFycmF5IGlmIHByb3ZpZGVkIGJ1dCBnb3Q6IFwiLmNvbmNhdChpbnNwZWN0KGNvbmZpZy50eXBlcyksIFwiLlwiKSk7XG4gICAgIWNvbmZpZy5kaXJlY3RpdmVzIHx8IEFycmF5LmlzQXJyYXkoY29uZmlnLmRpcmVjdGl2ZXMpIHx8IGRldkFzc2VydCgwLCAnXCJkaXJlY3RpdmVzXCIgbXVzdCBiZSBBcnJheSBpZiBwcm92aWRlZCBidXQgZ290OiAnICsgXCJcIi5jb25jYXQoaW5zcGVjdChjb25maWcuZGlyZWN0aXZlcyksIFwiLlwiKSk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSBjb25maWcuZXh0ZW5zaW9ucyAmJiB0b09iak1hcChjb25maWcuZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5hc3ROb2RlID0gY29uZmlnLmFzdE5vZGU7XG4gICAgdGhpcy5leHRlbnNpb25BU1ROb2RlcyA9IGNvbmZpZy5leHRlbnNpb25BU1ROb2RlcztcbiAgICB0aGlzLl9xdWVyeVR5cGUgPSBjb25maWcucXVlcnk7XG4gICAgdGhpcy5fbXV0YXRpb25UeXBlID0gY29uZmlnLm11dGF0aW9uO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvblR5cGUgPSBjb25maWcuc3Vic2NyaXB0aW9uOyAvLyBQcm92aWRlIHNwZWNpZmllZCBkaXJlY3RpdmVzIChlLmcuIEBpbmNsdWRlIGFuZCBAc2tpcCkgYnkgZGVmYXVsdC5cblxuICAgIHRoaXMuX2RpcmVjdGl2ZXMgPSAoX2NvbmZpZyRkaXJlY3RpdmVzID0gY29uZmlnLmRpcmVjdGl2ZXMpICE9PSBudWxsICYmIF9jb25maWckZGlyZWN0aXZlcyAhPT0gdm9pZCAwID8gX2NvbmZpZyRkaXJlY3RpdmVzIDogc3BlY2lmaWVkRGlyZWN0aXZlczsgLy8gVG8gcHJlc2VydmUgb3JkZXIgb2YgdXNlci1wcm92aWRlZCB0eXBlcywgd2UgYWRkIGZpcnN0IHRvIGFkZCB0aGVtIHRvXG4gICAgLy8gdGhlIHNldCBvZiBcImNvbGxlY3RlZFwiIHR5cGVzLCBzbyBgY29sbGVjdFJlZmVyZW5jZWRUeXBlc2AgaWdub3JlIHRoZW0uXG5cbiAgICB2YXIgYWxsUmVmZXJlbmNlZFR5cGVzID0gbmV3IFNldChjb25maWcudHlwZXMpO1xuXG4gICAgaWYgKGNvbmZpZy50eXBlcyAhPSBudWxsKSB7XG4gICAgICBmb3IgKHZhciBfaTIgPSAwLCBfY29uZmlnJHR5cGVzMiA9IGNvbmZpZy50eXBlczsgX2kyIDwgX2NvbmZpZyR0eXBlczIubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICB2YXIgdHlwZSA9IF9jb25maWckdHlwZXMyW19pMl07XG4gICAgICAgIC8vIFdoZW4gd2UgcmVhZHkgdG8gcHJvY2VzcyB0aGlzIHR5cGUsIHdlIHJlbW92ZSBpdCBmcm9tIFwiY29sbGVjdGVkXCIgdHlwZXNcbiAgICAgICAgLy8gYW5kIHRoZW4gYWRkIGl0IHRvZ2V0aGVyIHdpdGggYWxsIGRlcGVuZGVudCB0eXBlcyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbi5cbiAgICAgICAgYWxsUmVmZXJlbmNlZFR5cGVzLmRlbGV0ZSh0eXBlKTtcbiAgICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyh0eXBlLCBhbGxSZWZlcmVuY2VkVHlwZXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9xdWVyeVR5cGUgIT0gbnVsbCkge1xuICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyh0aGlzLl9xdWVyeVR5cGUsIGFsbFJlZmVyZW5jZWRUeXBlcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX211dGF0aW9uVHlwZSAhPSBudWxsKSB7XG4gICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKHRoaXMuX211dGF0aW9uVHlwZSwgYWxsUmVmZXJlbmNlZFR5cGVzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3Vic2NyaXB0aW9uVHlwZSAhPSBudWxsKSB7XG4gICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKHRoaXMuX3N1YnNjcmlwdGlvblR5cGUsIGFsbFJlZmVyZW5jZWRUeXBlcyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2k0ID0gMCwgX3RoaXMkX2RpcmVjdGl2ZXMyID0gdGhpcy5fZGlyZWN0aXZlczsgX2k0IDwgX3RoaXMkX2RpcmVjdGl2ZXMyLmxlbmd0aDsgX2k0KyspIHtcbiAgICAgIHZhciBkaXJlY3RpdmUgPSBfdGhpcyRfZGlyZWN0aXZlczJbX2k0XTtcblxuICAgICAgLy8gRGlyZWN0aXZlcyBhcmUgbm90IHZhbGlkYXRlZCB1bnRpbCB2YWxpZGF0ZVNjaGVtYSgpIGlzIGNhbGxlZC5cbiAgICAgIGlmIChpc0RpcmVjdGl2ZShkaXJlY3RpdmUpKSB7XG4gICAgICAgIGZvciAodmFyIF9pNiA9IDAsIF9kaXJlY3RpdmUkYXJnczIgPSBkaXJlY3RpdmUuYXJnczsgX2k2IDwgX2RpcmVjdGl2ZSRhcmdzMi5sZW5ndGg7IF9pNisrKSB7XG4gICAgICAgICAgdmFyIGFyZyA9IF9kaXJlY3RpdmUkYXJnczJbX2k2XTtcbiAgICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKGFyZy50eXBlLCBhbGxSZWZlcmVuY2VkVHlwZXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyhfX1NjaGVtYSwgYWxsUmVmZXJlbmNlZFR5cGVzKTsgLy8gU3RvcmluZyB0aGUgcmVzdWx0aW5nIG1hcCBmb3IgcmVmZXJlbmNlIGJ5IHRoZSBzY2hlbWEuXG5cbiAgICB0aGlzLl90eXBlTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB0aGlzLl9zdWJUeXBlTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTsgLy8gS2VlcCB0cmFjayBvZiBhbGwgaW1wbGVtZW50YXRpb25zIGJ5IGludGVyZmFjZSBuYW1lLlxuXG4gICAgdGhpcy5faW1wbGVtZW50YXRpb25zTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIGZvciAodmFyIF9pOCA9IDAsIF9hcnJheUZyb20yID0gYXJyYXlGcm9tKGFsbFJlZmVyZW5jZWRUeXBlcyk7IF9pOCA8IF9hcnJheUZyb20yLmxlbmd0aDsgX2k4KyspIHtcbiAgICAgIHZhciBuYW1lZFR5cGUgPSBfYXJyYXlGcm9tMltfaThdO1xuXG4gICAgICBpZiAobmFtZWRUeXBlID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciB0eXBlTmFtZSA9IG5hbWVkVHlwZS5uYW1lO1xuICAgICAgdHlwZU5hbWUgfHwgZGV2QXNzZXJ0KDAsICdPbmUgb2YgdGhlIHByb3ZpZGVkIHR5cGVzIGZvciBidWlsZGluZyB0aGUgU2NoZW1hIGlzIG1pc3NpbmcgYSBuYW1lLicpO1xuXG4gICAgICBpZiAodGhpcy5fdHlwZU1hcFt0eXBlTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTY2hlbWEgbXVzdCBjb250YWluIHVuaXF1ZWx5IG5hbWVkIHR5cGVzIGJ1dCBjb250YWlucyBtdWx0aXBsZSB0eXBlcyBuYW1lZCBcXFwiXCIuY29uY2F0KHR5cGVOYW1lLCBcIlxcXCIuXCIpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fdHlwZU1hcFt0eXBlTmFtZV0gPSBuYW1lZFR5cGU7XG5cbiAgICAgIGlmIChpc0ludGVyZmFjZVR5cGUobmFtZWRUeXBlKSkge1xuICAgICAgICAvLyBTdG9yZSBpbXBsZW1lbnRhdGlvbnMgYnkgaW50ZXJmYWNlLlxuICAgICAgICBmb3IgKHZhciBfaTEwID0gMCwgX25hbWVkVHlwZSRnZXRJbnRlcmZhMiA9IG5hbWVkVHlwZS5nZXRJbnRlcmZhY2VzKCk7IF9pMTAgPCBfbmFtZWRUeXBlJGdldEludGVyZmEyLmxlbmd0aDsgX2kxMCsrKSB7XG4gICAgICAgICAgdmFyIGlmYWNlID0gX25hbWVkVHlwZSRnZXRJbnRlcmZhMltfaTEwXTtcblxuICAgICAgICAgIGlmIChpc0ludGVyZmFjZVR5cGUoaWZhY2UpKSB7XG4gICAgICAgICAgICB2YXIgaW1wbGVtZW50YXRpb25zID0gdGhpcy5faW1wbGVtZW50YXRpb25zTWFwW2lmYWNlLm5hbWVdO1xuXG4gICAgICAgICAgICBpZiAoaW1wbGVtZW50YXRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zID0gdGhpcy5faW1wbGVtZW50YXRpb25zTWFwW2lmYWNlLm5hbWVdID0ge1xuICAgICAgICAgICAgICAgIG9iamVjdHM6IFtdLFxuICAgICAgICAgICAgICAgIGludGVyZmFjZXM6IFtdXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucy5pbnRlcmZhY2VzLnB1c2gobmFtZWRUeXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3RUeXBlKG5hbWVkVHlwZSkpIHtcbiAgICAgICAgLy8gU3RvcmUgaW1wbGVtZW50YXRpb25zIGJ5IG9iamVjdHMuXG4gICAgICAgIGZvciAodmFyIF9pMTIgPSAwLCBfbmFtZWRUeXBlJGdldEludGVyZmE0ID0gbmFtZWRUeXBlLmdldEludGVyZmFjZXMoKTsgX2kxMiA8IF9uYW1lZFR5cGUkZ2V0SW50ZXJmYTQubGVuZ3RoOyBfaTEyKyspIHtcbiAgICAgICAgICB2YXIgX2lmYWNlID0gX25hbWVkVHlwZSRnZXRJbnRlcmZhNFtfaTEyXTtcblxuICAgICAgICAgIGlmIChpc0ludGVyZmFjZVR5cGUoX2lmYWNlKSkge1xuICAgICAgICAgICAgdmFyIF9pbXBsZW1lbnRhdGlvbnMgPSB0aGlzLl9pbXBsZW1lbnRhdGlvbnNNYXBbX2lmYWNlLm5hbWVdO1xuXG4gICAgICAgICAgICBpZiAoX2ltcGxlbWVudGF0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIF9pbXBsZW1lbnRhdGlvbnMgPSB0aGlzLl9pbXBsZW1lbnRhdGlvbnNNYXBbX2lmYWNlLm5hbWVdID0ge1xuICAgICAgICAgICAgICAgIG9iamVjdHM6IFtdLFxuICAgICAgICAgICAgICAgIGludGVyZmFjZXM6IFtdXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF9pbXBsZW1lbnRhdGlvbnMub2JqZWN0cy5wdXNoKG5hbWVkVHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIF9wcm90byA9IEdyYXBoUUxTY2hlbWEucHJvdG90eXBlO1xuXG4gIF9wcm90by5nZXRRdWVyeVR5cGUgPSBmdW5jdGlvbiBnZXRRdWVyeVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5VHlwZTtcbiAgfTtcblxuICBfcHJvdG8uZ2V0TXV0YXRpb25UeXBlID0gZnVuY3Rpb24gZ2V0TXV0YXRpb25UeXBlKCkge1xuICAgIHJldHVybiB0aGlzLl9tdXRhdGlvblR5cGU7XG4gIH07XG5cbiAgX3Byb3RvLmdldFN1YnNjcmlwdGlvblR5cGUgPSBmdW5jdGlvbiBnZXRTdWJzY3JpcHRpb25UeXBlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdWJzY3JpcHRpb25UeXBlO1xuICB9O1xuXG4gIF9wcm90by5nZXRUeXBlTWFwID0gZnVuY3Rpb24gZ2V0VHlwZU1hcCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZU1hcDtcbiAgfTtcblxuICBfcHJvdG8uZ2V0VHlwZSA9IGZ1bmN0aW9uIGdldFR5cGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLmdldFR5cGVNYXAoKVtuYW1lXTtcbiAgfTtcblxuICBfcHJvdG8uZ2V0UG9zc2libGVUeXBlcyA9IGZ1bmN0aW9uIGdldFBvc3NpYmxlVHlwZXMoYWJzdHJhY3RUeXBlKSB7XG4gICAgcmV0dXJuIGlzVW5pb25UeXBlKGFic3RyYWN0VHlwZSkgPyBhYnN0cmFjdFR5cGUuZ2V0VHlwZXMoKSA6IHRoaXMuZ2V0SW1wbGVtZW50YXRpb25zKGFic3RyYWN0VHlwZSkub2JqZWN0cztcbiAgfTtcblxuICBfcHJvdG8uZ2V0SW1wbGVtZW50YXRpb25zID0gZnVuY3Rpb24gZ2V0SW1wbGVtZW50YXRpb25zKGludGVyZmFjZVR5cGUpIHtcbiAgICB2YXIgaW1wbGVtZW50YXRpb25zID0gdGhpcy5faW1wbGVtZW50YXRpb25zTWFwW2ludGVyZmFjZVR5cGUubmFtZV07XG4gICAgcmV0dXJuIGltcGxlbWVudGF0aW9ucyAhPT0gbnVsbCAmJiBpbXBsZW1lbnRhdGlvbnMgIT09IHZvaWQgMCA/IGltcGxlbWVudGF0aW9ucyA6IHtcbiAgICAgIG9iamVjdHM6IFtdLFxuICAgICAgaW50ZXJmYWNlczogW11cbiAgICB9O1xuICB9IC8vIEBkZXByZWNhdGVkOiB1c2UgaXNTdWJUeXBlIGluc3RlYWQgLSB3aWxsIGJlIHJlbW92ZWQgaW4gdjE2LlxuICA7XG5cbiAgX3Byb3RvLmlzUG9zc2libGVUeXBlID0gZnVuY3Rpb24gaXNQb3NzaWJsZVR5cGUoYWJzdHJhY3RUeXBlLCBwb3NzaWJsZVR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5pc1N1YlR5cGUoYWJzdHJhY3RUeXBlLCBwb3NzaWJsZVR5cGUpO1xuICB9O1xuXG4gIF9wcm90by5pc1N1YlR5cGUgPSBmdW5jdGlvbiBpc1N1YlR5cGUoYWJzdHJhY3RUeXBlLCBtYXliZVN1YlR5cGUpIHtcbiAgICB2YXIgbWFwID0gdGhpcy5fc3ViVHlwZU1hcFthYnN0cmFjdFR5cGUubmFtZV07XG5cbiAgICBpZiAobWFwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgIGlmIChpc1VuaW9uVHlwZShhYnN0cmFjdFR5cGUpKSB7XG4gICAgICAgIGZvciAodmFyIF9pMTQgPSAwLCBfYWJzdHJhY3RUeXBlJGdldFR5cGUyID0gYWJzdHJhY3RUeXBlLmdldFR5cGVzKCk7IF9pMTQgPCBfYWJzdHJhY3RUeXBlJGdldFR5cGUyLmxlbmd0aDsgX2kxNCsrKSB7XG4gICAgICAgICAgdmFyIHR5cGUgPSBfYWJzdHJhY3RUeXBlJGdldFR5cGUyW19pMTRdO1xuICAgICAgICAgIG1hcFt0eXBlLm5hbWVdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGltcGxlbWVudGF0aW9ucyA9IHRoaXMuZ2V0SW1wbGVtZW50YXRpb25zKGFic3RyYWN0VHlwZSk7XG5cbiAgICAgICAgZm9yICh2YXIgX2kxNiA9IDAsIF9pbXBsZW1lbnRhdGlvbnMkb2JqZTIgPSBpbXBsZW1lbnRhdGlvbnMub2JqZWN0czsgX2kxNiA8IF9pbXBsZW1lbnRhdGlvbnMkb2JqZTIubGVuZ3RoOyBfaTE2KyspIHtcbiAgICAgICAgICB2YXIgX3R5cGUgPSBfaW1wbGVtZW50YXRpb25zJG9iamUyW19pMTZdO1xuICAgICAgICAgIG1hcFtfdHlwZS5uYW1lXSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBfaTE4ID0gMCwgX2ltcGxlbWVudGF0aW9ucyRpbnRlMiA9IGltcGxlbWVudGF0aW9ucy5pbnRlcmZhY2VzOyBfaTE4IDwgX2ltcGxlbWVudGF0aW9ucyRpbnRlMi5sZW5ndGg7IF9pMTgrKykge1xuICAgICAgICAgIHZhciBfdHlwZTIgPSBfaW1wbGVtZW50YXRpb25zJGludGUyW19pMThdO1xuICAgICAgICAgIG1hcFtfdHlwZTIubmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3N1YlR5cGVNYXBbYWJzdHJhY3RUeXBlLm5hbWVdID0gbWFwO1xuICAgIH1cblxuICAgIHJldHVybiBtYXBbbWF5YmVTdWJUeXBlLm5hbWVdICE9PSB1bmRlZmluZWQ7XG4gIH07XG5cbiAgX3Byb3RvLmdldERpcmVjdGl2ZXMgPSBmdW5jdGlvbiBnZXREaXJlY3RpdmVzKCkge1xuICAgIHJldHVybiB0aGlzLl9kaXJlY3RpdmVzO1xuICB9O1xuXG4gIF9wcm90by5nZXREaXJlY3RpdmUgPSBmdW5jdGlvbiBnZXREaXJlY3RpdmUobmFtZSkge1xuICAgIHJldHVybiBmaW5kKHRoaXMuZ2V0RGlyZWN0aXZlcygpLCBmdW5jdGlvbiAoZGlyZWN0aXZlKSB7XG4gICAgICByZXR1cm4gZGlyZWN0aXZlLm5hbWUgPT09IG5hbWU7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvLnRvQ29uZmlnID0gZnVuY3Rpb24gdG9Db25maWcoKSB7XG4gICAgdmFyIF90aGlzJGV4dGVuc2lvbkFTVE5vZDtcblxuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIHF1ZXJ5OiB0aGlzLmdldFF1ZXJ5VHlwZSgpLFxuICAgICAgbXV0YXRpb246IHRoaXMuZ2V0TXV0YXRpb25UeXBlKCksXG4gICAgICBzdWJzY3JpcHRpb246IHRoaXMuZ2V0U3Vic2NyaXB0aW9uVHlwZSgpLFxuICAgICAgdHlwZXM6IG9iamVjdFZhbHVlcyh0aGlzLmdldFR5cGVNYXAoKSksXG4gICAgICBkaXJlY3RpdmVzOiB0aGlzLmdldERpcmVjdGl2ZXMoKS5zbGljZSgpLFxuICAgICAgZXh0ZW5zaW9uczogdGhpcy5leHRlbnNpb25zLFxuICAgICAgYXN0Tm9kZTogdGhpcy5hc3ROb2RlLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IChfdGhpcyRleHRlbnNpb25BU1ROb2QgPSB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzKSAhPT0gbnVsbCAmJiBfdGhpcyRleHRlbnNpb25BU1ROb2QgIT09IHZvaWQgMCA/IF90aGlzJGV4dGVuc2lvbkFTVE5vZCA6IFtdLFxuICAgICAgYXNzdW1lVmFsaWQ6IHRoaXMuX192YWxpZGF0aW9uRXJyb3JzICE9PSB1bmRlZmluZWRcbiAgICB9O1xuICB9IC8vICRGbG93Rml4TWVbdW5zdXBwb3J0ZWQtc3ludGF4XSBGbG93IGRvZXNuJ3Qgc3VwcG9ydCBjb21wdXRlZCBwcm9wZXJ0aWVzIHlldFxuICA7XG5cbiAgX2NyZWF0ZUNsYXNzKEdyYXBoUUxTY2hlbWEsIFt7XG4gICAga2V5OiBTWU1CT0xfVE9fU1RSSU5HX1RBRyxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiAnR3JhcGhRTFNjaGVtYSc7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEdyYXBoUUxTY2hlbWE7XG59KCk7XG5cbmZ1bmN0aW9uIGNvbGxlY3RSZWZlcmVuY2VkVHlwZXModHlwZSwgdHlwZVNldCkge1xuICB2YXIgbmFtZWRUeXBlID0gZ2V0TmFtZWRUeXBlKHR5cGUpO1xuXG4gIGlmICghdHlwZVNldC5oYXMobmFtZWRUeXBlKSkge1xuICAgIHR5cGVTZXQuYWRkKG5hbWVkVHlwZSk7XG5cbiAgICBpZiAoaXNVbmlvblR5cGUobmFtZWRUeXBlKSkge1xuICAgICAgZm9yICh2YXIgX2kyMCA9IDAsIF9uYW1lZFR5cGUkZ2V0VHlwZXMyID0gbmFtZWRUeXBlLmdldFR5cGVzKCk7IF9pMjAgPCBfbmFtZWRUeXBlJGdldFR5cGVzMi5sZW5ndGg7IF9pMjArKykge1xuICAgICAgICB2YXIgbWVtYmVyVHlwZSA9IF9uYW1lZFR5cGUkZ2V0VHlwZXMyW19pMjBdO1xuICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKG1lbWJlclR5cGUsIHR5cGVTZXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNPYmplY3RUeXBlKG5hbWVkVHlwZSkgfHwgaXNJbnRlcmZhY2VUeXBlKG5hbWVkVHlwZSkpIHtcbiAgICAgIGZvciAodmFyIF9pMjIgPSAwLCBfbmFtZWRUeXBlJGdldEludGVyZmE2ID0gbmFtZWRUeXBlLmdldEludGVyZmFjZXMoKTsgX2kyMiA8IF9uYW1lZFR5cGUkZ2V0SW50ZXJmYTYubGVuZ3RoOyBfaTIyKyspIHtcbiAgICAgICAgdmFyIGludGVyZmFjZVR5cGUgPSBfbmFtZWRUeXBlJGdldEludGVyZmE2W19pMjJdO1xuICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKGludGVyZmFjZVR5cGUsIHR5cGVTZXQpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBfaTI0ID0gMCwgX29iamVjdFZhbHVlczIgPSBvYmplY3RWYWx1ZXMobmFtZWRUeXBlLmdldEZpZWxkcygpKTsgX2kyNCA8IF9vYmplY3RWYWx1ZXMyLmxlbmd0aDsgX2kyNCsrKSB7XG4gICAgICAgIHZhciBmaWVsZCA9IF9vYmplY3RWYWx1ZXMyW19pMjRdO1xuICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKGZpZWxkLnR5cGUsIHR5cGVTZXQpO1xuXG4gICAgICAgIGZvciAodmFyIF9pMjYgPSAwLCBfZmllbGQkYXJnczIgPSBmaWVsZC5hcmdzOyBfaTI2IDwgX2ZpZWxkJGFyZ3MyLmxlbmd0aDsgX2kyNisrKSB7XG4gICAgICAgICAgdmFyIGFyZyA9IF9maWVsZCRhcmdzMltfaTI2XTtcbiAgICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKGFyZy50eXBlLCB0eXBlU2V0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNJbnB1dE9iamVjdFR5cGUobmFtZWRUeXBlKSkge1xuICAgICAgZm9yICh2YXIgX2kyOCA9IDAsIF9vYmplY3RWYWx1ZXM0ID0gb2JqZWN0VmFsdWVzKG5hbWVkVHlwZS5nZXRGaWVsZHMoKSk7IF9pMjggPCBfb2JqZWN0VmFsdWVzNC5sZW5ndGg7IF9pMjgrKykge1xuICAgICAgICB2YXIgX2ZpZWxkID0gX29iamVjdFZhbHVlczRbX2kyOF07XG4gICAgICAgIGNvbGxlY3RSZWZlcmVuY2VkVHlwZXMoX2ZpZWxkLnR5cGUsIHR5cGVTZXQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0eXBlU2V0O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/type/schema.mjs\n");
1065
1066/***/ }),
1067
1068/***/ "../../../node_modules/graphql/type/validate.mjs":
1069/*!**********************************************************************************!*\
1070 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/type/validate.mjs ***!
1071 \**********************************************************************************/
1072/*! exports provided: validateSchema, assertValidSchema */
1073/***/ (function(module, __webpack_exports__, __webpack_require__) {
1074
1075"use strict";
1076eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateSchema\", function() { return validateSchema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertValidSchema\", function() { return assertValidSchema; });\n/* harmony import */ var _polyfills_find_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/find.mjs */ \"../../../node_modules/graphql/polyfills/find.mjs\");\n/* harmony import */ var _polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../polyfills/objectValues.mjs */ \"../../../node_modules/graphql/polyfills/objectValues.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../error/locatedError.mjs */ \"../../../node_modules/graphql/error/locatedError.mjs\");\n/* harmony import */ var _utilities_assertValidName_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utilities/assertValidName.mjs */ \"../../../node_modules/graphql/utilities/assertValidName.mjs\");\n/* harmony import */ var _utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utilities/typeComparators.mjs */ \"../../../node_modules/graphql/utilities/typeComparators.mjs\");\n/* harmony import */ var _schema_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./schema.mjs */ \"../../../node_modules/graphql/type/schema.mjs\");\n/* harmony import */ var _introspection_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _directives_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Implements the \"Type Validation\" sub-sections of the specification's\n * \"Type System\" section.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the Schema is valid.\n */\n\nfunction validateSchema(schema) {\n // First check to ensure the provided value is in fact a GraphQLSchema.\n Object(_schema_mjs__WEBPACK_IMPORTED_MODULE_7__[\"assertSchema\"])(schema); // If this Schema has already been validated, return the previous results.\n\n if (schema.__validationErrors) {\n return schema.__validationErrors;\n } // Validate the schema, producing a list of errors.\n\n\n var context = new SchemaValidationContext(schema);\n validateRootTypes(context);\n validateDirectives(context);\n validateTypes(context); // Persist the results of validation before returning to ensure validation\n // does not run multiple times for this schema.\n\n var errors = context.getErrors();\n schema.__validationErrors = errors;\n return errors;\n}\n/**\n * Utility function which asserts a schema is valid by throwing an error if\n * it is invalid.\n */\n\nfunction assertValidSchema(schema) {\n var errors = validateSchema(schema);\n\n if (errors.length !== 0) {\n throw new Error(errors.map(function (error) {\n return error.message;\n }).join('\\n\\n'));\n }\n}\n\nvar SchemaValidationContext = /*#__PURE__*/function () {\n function SchemaValidationContext(schema) {\n this._errors = [];\n this.schema = schema;\n }\n\n var _proto = SchemaValidationContext.prototype;\n\n _proto.reportError = function reportError(message, nodes) {\n var _nodes = Array.isArray(nodes) ? nodes.filter(Boolean) : nodes;\n\n this.addError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLError\"](message, _nodes));\n };\n\n _proto.addError = function addError(error) {\n this._errors.push(error);\n };\n\n _proto.getErrors = function getErrors() {\n return this._errors;\n };\n\n return SchemaValidationContext;\n}();\n\nfunction validateRootTypes(context) {\n var schema = context.schema;\n var queryType = schema.getQueryType();\n\n if (!queryType) {\n context.reportError('Query root type must be provided.', schema.astNode);\n } else if (!Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isObjectType\"])(queryType)) {\n var _getOperationTypeNode;\n\n context.reportError(\"Query root type must be Object type, it cannot be \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(queryType), \".\"), (_getOperationTypeNode = getOperationTypeNode(schema, 'query')) !== null && _getOperationTypeNode !== void 0 ? _getOperationTypeNode : queryType.astNode);\n }\n\n var mutationType = schema.getMutationType();\n\n if (mutationType && !Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isObjectType\"])(mutationType)) {\n var _getOperationTypeNode2;\n\n context.reportError('Mutation root type must be Object type if provided, it cannot be ' + \"\".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(mutationType), \".\"), (_getOperationTypeNode2 = getOperationTypeNode(schema, 'mutation')) !== null && _getOperationTypeNode2 !== void 0 ? _getOperationTypeNode2 : mutationType.astNode);\n }\n\n var subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType && !Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isObjectType\"])(subscriptionType)) {\n var _getOperationTypeNode3;\n\n context.reportError('Subscription root type must be Object type if provided, it cannot be ' + \"\".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(subscriptionType), \".\"), (_getOperationTypeNode3 = getOperationTypeNode(schema, 'subscription')) !== null && _getOperationTypeNode3 !== void 0 ? _getOperationTypeNode3 : subscriptionType.astNode);\n }\n}\n\nfunction getOperationTypeNode(schema, operation) {\n var operationNodes = getAllSubNodes(schema, function (node) {\n return node.operationTypes;\n });\n\n for (var _i2 = 0; _i2 < operationNodes.length; _i2++) {\n var node = operationNodes[_i2];\n\n if (node.operation === operation) {\n return node.type;\n }\n }\n\n return undefined;\n}\n\nfunction validateDirectives(context) {\n for (var _i4 = 0, _context$schema$getDi2 = context.schema.getDirectives(); _i4 < _context$schema$getDi2.length; _i4++) {\n var directive = _context$schema$getDi2[_i4];\n\n // Ensure all directives are in fact GraphQL directives.\n if (!Object(_directives_mjs__WEBPACK_IMPORTED_MODULE_9__[\"isDirective\"])(directive)) {\n context.reportError(\"Expected directive but got: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(directive), \".\"), directive === null || directive === void 0 ? void 0 : directive.astNode);\n continue;\n } // Ensure they are named correctly.\n\n\n validateName(context, directive); // TODO: Ensure proper locations.\n // Ensure the arguments are valid.\n\n for (var _i6 = 0, _directive$args2 = directive.args; _i6 < _directive$args2.length; _i6++) {\n var arg = _directive$args2[_i6];\n // Ensure they are named correctly.\n validateName(context, arg); // Ensure the type is an input type.\n\n if (!Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isInputType\"])(arg.type)) {\n context.reportError(\"The type of @\".concat(directive.name, \"(\").concat(arg.name, \":) must be Input Type \") + \"but got: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(arg.type), \".\"), arg.astNode);\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isRequiredArgument\"])(arg) && arg.deprecationReason != null) {\n var _arg$astNode;\n\n context.reportError(\"Required argument @\".concat(directive.name, \"(\").concat(arg.name, \":) cannot be deprecated.\"), [getDeprecatedDirectiveNode(arg.astNode), // istanbul ignore next (TODO need to write coverage tests)\n (_arg$astNode = arg.astNode) === null || _arg$astNode === void 0 ? void 0 : _arg$astNode.type]);\n }\n }\n }\n}\n\nfunction validateName(context, node) {\n // Ensure names are valid, however introspection types opt out.\n var error = Object(_utilities_assertValidName_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isValidNameError\"])(node.name);\n\n if (error) {\n context.addError(Object(_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"locatedError\"])(error, node.astNode));\n }\n}\n\nfunction validateTypes(context) {\n var validateInputObjectCircularRefs = createInputObjectCircularRefsValidator(context);\n var typeMap = context.schema.getTypeMap();\n\n for (var _i8 = 0, _objectValues2 = Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(typeMap); _i8 < _objectValues2.length; _i8++) {\n var type = _objectValues2[_i8];\n\n // Ensure all provided types are in fact GraphQL type.\n if (!Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isNamedType\"])(type)) {\n context.reportError(\"Expected GraphQL named type but got: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \".\"), type.astNode);\n continue;\n } // Ensure it is named correctly (excluding introspection types).\n\n\n if (!Object(_introspection_mjs__WEBPACK_IMPORTED_MODULE_8__[\"isIntrospectionType\"])(type)) {\n validateName(context, type);\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isObjectType\"])(type)) {\n // Ensure fields are valid\n validateFields(context, type); // Ensure objects implement the interfaces they claim to.\n\n validateInterfaces(context, type);\n } else if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isInterfaceType\"])(type)) {\n // Ensure fields are valid.\n validateFields(context, type); // Ensure interfaces implement the interfaces they claim to.\n\n validateInterfaces(context, type);\n } else if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isUnionType\"])(type)) {\n // Ensure Unions include valid member types.\n validateUnionMembers(context, type);\n } else if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isEnumType\"])(type)) {\n // Ensure Enums have valid values.\n validateEnumValues(context, type);\n } else if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isInputObjectType\"])(type)) {\n // Ensure Input Object fields are valid.\n validateInputFields(context, type); // Ensure Input Objects do not contain non-nullable circular references\n\n validateInputObjectCircularRefs(type);\n }\n }\n}\n\nfunction validateFields(context, type) {\n var fields = Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(type.getFields()); // Objects and Interfaces both must define one or more fields.\n\n if (fields.length === 0) {\n context.reportError(\"Type \".concat(type.name, \" must define one or more fields.\"), getAllNodes(type));\n }\n\n for (var _i10 = 0; _i10 < fields.length; _i10++) {\n var field = fields[_i10];\n // Ensure they are named correctly.\n validateName(context, field); // Ensure the type is an output type\n\n if (!Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isOutputType\"])(field.type)) {\n var _field$astNode;\n\n context.reportError(\"The type of \".concat(type.name, \".\").concat(field.name, \" must be Output Type \") + \"but got: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(field.type), \".\"), (_field$astNode = field.astNode) === null || _field$astNode === void 0 ? void 0 : _field$astNode.type);\n } // Ensure the arguments are valid\n\n\n for (var _i12 = 0, _field$args2 = field.args; _i12 < _field$args2.length; _i12++) {\n var arg = _field$args2[_i12];\n var argName = arg.name; // Ensure they are named correctly.\n\n validateName(context, arg); // Ensure the type is an input type\n\n if (!Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isInputType\"])(arg.type)) {\n var _arg$astNode2;\n\n context.reportError(\"The type of \".concat(type.name, \".\").concat(field.name, \"(\").concat(argName, \":) must be Input \") + \"Type but got: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(arg.type), \".\"), (_arg$astNode2 = arg.astNode) === null || _arg$astNode2 === void 0 ? void 0 : _arg$astNode2.type);\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isRequiredArgument\"])(arg) && arg.deprecationReason != null) {\n var _arg$astNode3;\n\n context.reportError(\"Required argument \".concat(type.name, \".\").concat(field.name, \"(\").concat(argName, \":) cannot be deprecated.\"), [getDeprecatedDirectiveNode(arg.astNode), // istanbul ignore next (TODO need to write coverage tests)\n (_arg$astNode3 = arg.astNode) === null || _arg$astNode3 === void 0 ? void 0 : _arg$astNode3.type]);\n }\n }\n }\n}\n\nfunction validateInterfaces(context, type) {\n var ifaceTypeNames = Object.create(null);\n\n for (var _i14 = 0, _type$getInterfaces2 = type.getInterfaces(); _i14 < _type$getInterfaces2.length; _i14++) {\n var iface = _type$getInterfaces2[_i14];\n\n if (!Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isInterfaceType\"])(iface)) {\n context.reportError(\"Type \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \" must only implement Interface types, \") + \"it cannot implement \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(iface), \".\"), getAllImplementsInterfaceNodes(type, iface));\n continue;\n }\n\n if (type === iface) {\n context.reportError(\"Type \".concat(type.name, \" cannot implement itself because it would create a circular reference.\"), getAllImplementsInterfaceNodes(type, iface));\n continue;\n }\n\n if (ifaceTypeNames[iface.name]) {\n context.reportError(\"Type \".concat(type.name, \" can only implement \").concat(iface.name, \" once.\"), getAllImplementsInterfaceNodes(type, iface));\n continue;\n }\n\n ifaceTypeNames[iface.name] = true;\n validateTypeImplementsAncestors(context, type, iface);\n validateTypeImplementsInterface(context, type, iface);\n }\n}\n\nfunction validateTypeImplementsInterface(context, type, iface) {\n var typeFieldMap = type.getFields(); // Assert each interface field is implemented.\n\n for (var _i16 = 0, _objectValues4 = Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(iface.getFields()); _i16 < _objectValues4.length; _i16++) {\n var ifaceField = _objectValues4[_i16];\n var fieldName = ifaceField.name;\n var typeField = typeFieldMap[fieldName]; // Assert interface field exists on type.\n\n if (!typeField) {\n context.reportError(\"Interface field \".concat(iface.name, \".\").concat(fieldName, \" expected but \").concat(type.name, \" does not provide it.\"), [ifaceField.astNode].concat(getAllNodes(type)));\n continue;\n } // Assert interface field type is satisfied by type field type, by being\n // a valid subtype. (covariant)\n\n\n if (!Object(_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isTypeSubTypeOf\"])(context.schema, typeField.type, ifaceField.type)) {\n var _ifaceField$astNode, _typeField$astNode;\n\n context.reportError(\"Interface field \".concat(iface.name, \".\").concat(fieldName, \" expects type \") + \"\".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ifaceField.type), \" but \").concat(type.name, \".\").concat(fieldName, \" \") + \"is type \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(typeField.type), \".\"), [// istanbul ignore next (TODO need to write coverage tests)\n (_ifaceField$astNode = ifaceField.astNode) === null || _ifaceField$astNode === void 0 ? void 0 : _ifaceField$astNode.type, // istanbul ignore next (TODO need to write coverage tests)\n (_typeField$astNode = typeField.astNode) === null || _typeField$astNode === void 0 ? void 0 : _typeField$astNode.type]);\n } // Assert each interface field arg is implemented.\n\n\n var _loop = function _loop(_i18, _ifaceField$args2) {\n var ifaceArg = _ifaceField$args2[_i18];\n var argName = ifaceArg.name;\n var typeArg = Object(_polyfills_find_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(typeField.args, function (arg) {\n return arg.name === argName;\n }); // Assert interface field arg exists on object field.\n\n if (!typeArg) {\n context.reportError(\"Interface field argument \".concat(iface.name, \".\").concat(fieldName, \"(\").concat(argName, \":) expected but \").concat(type.name, \".\").concat(fieldName, \" does not provide it.\"), [ifaceArg.astNode, typeField.astNode]);\n return \"continue\";\n } // Assert interface field arg type matches object field arg type.\n // (invariant)\n // TODO: change to contravariant?\n\n\n if (!Object(_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isEqualType\"])(ifaceArg.type, typeArg.type)) {\n var _ifaceArg$astNode, _typeArg$astNode;\n\n context.reportError(\"Interface field argument \".concat(iface.name, \".\").concat(fieldName, \"(\").concat(argName, \":) \") + \"expects type \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ifaceArg.type), \" but \") + \"\".concat(type.name, \".\").concat(fieldName, \"(\").concat(argName, \":) is type \") + \"\".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(typeArg.type), \".\"), [// istanbul ignore next (TODO need to write coverage tests)\n (_ifaceArg$astNode = ifaceArg.astNode) === null || _ifaceArg$astNode === void 0 ? void 0 : _ifaceArg$astNode.type, // istanbul ignore next (TODO need to write coverage tests)\n (_typeArg$astNode = typeArg.astNode) === null || _typeArg$astNode === void 0 ? void 0 : _typeArg$astNode.type]);\n } // TODO: validate default values?\n\n };\n\n for (var _i18 = 0, _ifaceField$args2 = ifaceField.args; _i18 < _ifaceField$args2.length; _i18++) {\n var _ret = _loop(_i18, _ifaceField$args2);\n\n if (_ret === \"continue\") continue;\n } // Assert additional arguments must not be required.\n\n\n var _loop2 = function _loop2(_i20, _typeField$args2) {\n var typeArg = _typeField$args2[_i20];\n var argName = typeArg.name;\n var ifaceArg = Object(_polyfills_find_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ifaceField.args, function (arg) {\n return arg.name === argName;\n });\n\n if (!ifaceArg && Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isRequiredArgument\"])(typeArg)) {\n context.reportError(\"Object field \".concat(type.name, \".\").concat(fieldName, \" includes required argument \").concat(argName, \" that is missing from the Interface field \").concat(iface.name, \".\").concat(fieldName, \".\"), [typeArg.astNode, ifaceField.astNode]);\n }\n };\n\n for (var _i20 = 0, _typeField$args2 = typeField.args; _i20 < _typeField$args2.length; _i20++) {\n _loop2(_i20, _typeField$args2);\n }\n }\n}\n\nfunction validateTypeImplementsAncestors(context, type, iface) {\n var ifaceInterfaces = type.getInterfaces();\n\n for (var _i22 = 0, _iface$getInterfaces2 = iface.getInterfaces(); _i22 < _iface$getInterfaces2.length; _i22++) {\n var transitive = _iface$getInterfaces2[_i22];\n\n if (ifaceInterfaces.indexOf(transitive) === -1) {\n context.reportError(transitive === type ? \"Type \".concat(type.name, \" cannot implement \").concat(iface.name, \" because it would create a circular reference.\") : \"Type \".concat(type.name, \" must implement \").concat(transitive.name, \" because it is implemented by \").concat(iface.name, \".\"), [].concat(getAllImplementsInterfaceNodes(iface, transitive), getAllImplementsInterfaceNodes(type, iface)));\n }\n }\n}\n\nfunction validateUnionMembers(context, union) {\n var memberTypes = union.getTypes();\n\n if (memberTypes.length === 0) {\n context.reportError(\"Union type \".concat(union.name, \" must define one or more member types.\"), getAllNodes(union));\n }\n\n var includedTypeNames = Object.create(null);\n\n for (var _i24 = 0; _i24 < memberTypes.length; _i24++) {\n var memberType = memberTypes[_i24];\n\n if (includedTypeNames[memberType.name]) {\n context.reportError(\"Union type \".concat(union.name, \" can only include type \").concat(memberType.name, \" once.\"), getUnionMemberTypeNodes(union, memberType.name));\n continue;\n }\n\n includedTypeNames[memberType.name] = true;\n\n if (!Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isObjectType\"])(memberType)) {\n context.reportError(\"Union type \".concat(union.name, \" can only include Object types, \") + \"it cannot include \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(memberType), \".\"), getUnionMemberTypeNodes(union, String(memberType)));\n }\n }\n}\n\nfunction validateEnumValues(context, enumType) {\n var enumValues = enumType.getValues();\n\n if (enumValues.length === 0) {\n context.reportError(\"Enum type \".concat(enumType.name, \" must define one or more values.\"), getAllNodes(enumType));\n }\n\n for (var _i26 = 0; _i26 < enumValues.length; _i26++) {\n var enumValue = enumValues[_i26];\n var valueName = enumValue.name; // Ensure valid name.\n\n validateName(context, enumValue);\n\n if (valueName === 'true' || valueName === 'false' || valueName === 'null') {\n context.reportError(\"Enum type \".concat(enumType.name, \" cannot include value: \").concat(valueName, \".\"), enumValue.astNode);\n }\n }\n}\n\nfunction validateInputFields(context, inputObj) {\n var fields = Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(inputObj.getFields());\n\n if (fields.length === 0) {\n context.reportError(\"Input Object type \".concat(inputObj.name, \" must define one or more fields.\"), getAllNodes(inputObj));\n } // Ensure the arguments are valid\n\n\n for (var _i28 = 0; _i28 < fields.length; _i28++) {\n var field = fields[_i28];\n // Ensure they are named correctly.\n validateName(context, field); // Ensure the type is an input type\n\n if (!Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isInputType\"])(field.type)) {\n var _field$astNode2;\n\n context.reportError(\"The type of \".concat(inputObj.name, \".\").concat(field.name, \" must be Input Type \") + \"but got: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(field.type), \".\"), (_field$astNode2 = field.astNode) === null || _field$astNode2 === void 0 ? void 0 : _field$astNode2.type);\n }\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isRequiredInputField\"])(field) && field.deprecationReason != null) {\n var _field$astNode3;\n\n context.reportError(\"Required input field \".concat(inputObj.name, \".\").concat(field.name, \" cannot be deprecated.\"), [getDeprecatedDirectiveNode(field.astNode), // istanbul ignore next (TODO need to write coverage tests)\n (_field$astNode3 = field.astNode) === null || _field$astNode3 === void 0 ? void 0 : _field$astNode3.type]);\n }\n }\n}\n\nfunction createInputObjectCircularRefsValidator(context) {\n // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.\n // Tracks already visited types to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n var visitedTypes = Object.create(null); // Array of types nodes used to produce meaningful errors\n\n var fieldPath = []; // Position in the type path\n\n var fieldPathIndexByTypeName = Object.create(null);\n return detectCycleRecursive; // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n\n function detectCycleRecursive(inputObj) {\n if (visitedTypes[inputObj.name]) {\n return;\n }\n\n visitedTypes[inputObj.name] = true;\n fieldPathIndexByTypeName[inputObj.name] = fieldPath.length;\n var fields = Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(inputObj.getFields());\n\n for (var _i30 = 0; _i30 < fields.length; _i30++) {\n var field = fields[_i30];\n\n if (Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isNonNullType\"])(field.type) && Object(_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isInputObjectType\"])(field.type.ofType)) {\n var fieldType = field.type.ofType;\n var cycleIndex = fieldPathIndexByTypeName[fieldType.name];\n fieldPath.push(field);\n\n if (cycleIndex === undefined) {\n detectCycleRecursive(fieldType);\n } else {\n var cyclePath = fieldPath.slice(cycleIndex);\n var pathStr = cyclePath.map(function (fieldObj) {\n return fieldObj.name;\n }).join('.');\n context.reportError(\"Cannot reference Input Object \\\"\".concat(fieldType.name, \"\\\" within itself through a series of non-null fields: \\\"\").concat(pathStr, \"\\\".\"), cyclePath.map(function (fieldObj) {\n return fieldObj.astNode;\n }));\n }\n\n fieldPath.pop();\n }\n }\n\n fieldPathIndexByTypeName[inputObj.name] = undefined;\n }\n}\n\nfunction getAllNodes(object) {\n var astNode = object.astNode,\n extensionASTNodes = object.extensionASTNodes;\n return astNode ? extensionASTNodes ? [astNode].concat(extensionASTNodes) : [astNode] : extensionASTNodes !== null && extensionASTNodes !== void 0 ? extensionASTNodes : [];\n}\n\nfunction getAllSubNodes(object, getter) {\n var subNodes = [];\n\n for (var _i32 = 0, _getAllNodes2 = getAllNodes(object); _i32 < _getAllNodes2.length; _i32++) {\n var _getter;\n\n var node = _getAllNodes2[_i32];\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n subNodes = subNodes.concat((_getter = getter(node)) !== null && _getter !== void 0 ? _getter : []);\n }\n\n return subNodes;\n}\n\nfunction getAllImplementsInterfaceNodes(type, iface) {\n return getAllSubNodes(type, function (typeNode) {\n return typeNode.interfaces;\n }).filter(function (ifaceNode) {\n return ifaceNode.name.value === iface.name;\n });\n}\n\nfunction getUnionMemberTypeNodes(union, typeName) {\n return getAllSubNodes(union, function (unionNode) {\n return unionNode.types;\n }).filter(function (typeNode) {\n return typeNode.name.value === typeName;\n });\n}\n\nfunction getDeprecatedDirectiveNode(definitionNode) {\n var _definitionNode$direc;\n\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n return definitionNode === null || definitionNode === void 0 ? void 0 : (_definitionNode$direc = definitionNode.directives) === null || _definitionNode$direc === void 0 ? void 0 : _definitionNode$direc.find(function (node) {\n return node.name.value === _directives_mjs__WEBPACK_IMPORTED_MODULE_9__[\"GraphQLDeprecatedDirective\"].name;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS92YWxpZGF0ZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC90eXBlL3ZhbGlkYXRlLm1qcz81Nzc3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmaW5kIGZyb20gXCIuLi9wb2x5ZmlsbHMvZmluZC5tanNcIjtcbmltcG9ydCBvYmplY3RWYWx1ZXMgZnJvbSBcIi4uL3BvbHlmaWxscy9vYmplY3RWYWx1ZXMubWpzXCI7XG5pbXBvcnQgaW5zcGVjdCBmcm9tIFwiLi4vanN1dGlscy9pbnNwZWN0Lm1qc1wiO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanNcIjtcbmltcG9ydCB7IGxvY2F0ZWRFcnJvciB9IGZyb20gXCIuLi9lcnJvci9sb2NhdGVkRXJyb3IubWpzXCI7XG5pbXBvcnQgeyBpc1ZhbGlkTmFtZUVycm9yIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hc3NlcnRWYWxpZE5hbWUubWpzXCI7XG5pbXBvcnQgeyBpc0VxdWFsVHlwZSwgaXNUeXBlU3ViVHlwZU9mIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlQ29tcGFyYXRvcnMubWpzXCI7XG5pbXBvcnQgeyBhc3NlcnRTY2hlbWEgfSBmcm9tIFwiLi9zY2hlbWEubWpzXCI7XG5pbXBvcnQgeyBpc0ludHJvc3BlY3Rpb25UeXBlIH0gZnJvbSBcIi4vaW50cm9zcGVjdGlvbi5tanNcIjtcbmltcG9ydCB7IGlzRGlyZWN0aXZlLCBHcmFwaFFMRGVwcmVjYXRlZERpcmVjdGl2ZSB9IGZyb20gXCIuL2RpcmVjdGl2ZXMubWpzXCI7XG5pbXBvcnQgeyBpc09iamVjdFR5cGUsIGlzSW50ZXJmYWNlVHlwZSwgaXNVbmlvblR5cGUsIGlzRW51bVR5cGUsIGlzSW5wdXRPYmplY3RUeXBlLCBpc05hbWVkVHlwZSwgaXNOb25OdWxsVHlwZSwgaXNJbnB1dFR5cGUsIGlzT3V0cHV0VHlwZSwgaXNSZXF1aXJlZEFyZ3VtZW50LCBpc1JlcXVpcmVkSW5wdXRGaWVsZCB9IGZyb20gXCIuL2RlZmluaXRpb24ubWpzXCI7XG4vKipcbiAqIEltcGxlbWVudHMgdGhlIFwiVHlwZSBWYWxpZGF0aW9uXCIgc3ViLXNlY3Rpb25zIG9mIHRoZSBzcGVjaWZpY2F0aW9uJ3NcbiAqIFwiVHlwZSBTeXN0ZW1cIiBzZWN0aW9uLlxuICpcbiAqIFZhbGlkYXRpb24gcnVucyBzeW5jaHJvbm91c2x5LCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgZW5jb3VudGVyZWQgZXJyb3JzLCBvclxuICogYW4gZW1wdHkgYXJyYXkgaWYgbm8gZXJyb3JzIHdlcmUgZW5jb3VudGVyZWQgYW5kIHRoZSBTY2hlbWEgaXMgdmFsaWQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2NoZW1hKHNjaGVtYSkge1xuICAvLyBGaXJzdCBjaGVjayB0byBlbnN1cmUgdGhlIHByb3ZpZGVkIHZhbHVlIGlzIGluIGZhY3QgYSBHcmFwaFFMU2NoZW1hLlxuICBhc3NlcnRTY2hlbWEoc2NoZW1hKTsgLy8gSWYgdGhpcyBTY2hlbWEgaGFzIGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQsIHJldHVybiB0aGUgcHJldmlvdXMgcmVzdWx0cy5cblxuICBpZiAoc2NoZW1hLl9fdmFsaWRhdGlvbkVycm9ycykge1xuICAgIHJldHVybiBzY2hlbWEuX192YWxpZGF0aW9uRXJyb3JzO1xuICB9IC8vIFZhbGlkYXRlIHRoZSBzY2hlbWEsIHByb2R1Y2luZyBhIGxpc3Qgb2YgZXJyb3JzLlxuXG5cbiAgdmFyIGNvbnRleHQgPSBuZXcgU2NoZW1hVmFsaWRhdGlvbkNvbnRleHQoc2NoZW1hKTtcbiAgdmFsaWRhdGVSb290VHlwZXMoY29udGV4dCk7XG4gIHZhbGlkYXRlRGlyZWN0aXZlcyhjb250ZXh0KTtcbiAgdmFsaWRhdGVUeXBlcyhjb250ZXh0KTsgLy8gUGVyc2lzdCB0aGUgcmVzdWx0cyBvZiB2YWxpZGF0aW9uIGJlZm9yZSByZXR1cm5pbmcgdG8gZW5zdXJlIHZhbGlkYXRpb25cbiAgLy8gZG9lcyBub3QgcnVuIG11bHRpcGxlIHRpbWVzIGZvciB0aGlzIHNjaGVtYS5cblxuICB2YXIgZXJyb3JzID0gY29udGV4dC5nZXRFcnJvcnMoKTtcbiAgc2NoZW1hLl9fdmFsaWRhdGlvbkVycm9ycyA9IGVycm9ycztcbiAgcmV0dXJuIGVycm9ycztcbn1cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiB3aGljaCBhc3NlcnRzIGEgc2NoZW1hIGlzIHZhbGlkIGJ5IHRocm93aW5nIGFuIGVycm9yIGlmXG4gKiBpdCBpcyBpbnZhbGlkLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRWYWxpZFNjaGVtYShzY2hlbWEpIHtcbiAgdmFyIGVycm9ycyA9IHZhbGlkYXRlU2NoZW1hKHNjaGVtYSk7XG5cbiAgaWYgKGVycm9ycy5sZW5ndGggIT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLm1hcChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBlcnJvci5tZXNzYWdlO1xuICAgIH0pLmpvaW4oJ1xcblxcbicpKTtcbiAgfVxufVxuXG52YXIgU2NoZW1hVmFsaWRhdGlvbkNvbnRleHQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTY2hlbWFWYWxpZGF0aW9uQ29udGV4dChzY2hlbWEpIHtcbiAgICB0aGlzLl9lcnJvcnMgPSBbXTtcbiAgICB0aGlzLnNjaGVtYSA9IHNjaGVtYTtcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBTY2hlbWFWYWxpZGF0aW9uQ29udGV4dC5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnJlcG9ydEVycm9yID0gZnVuY3Rpb24gcmVwb3J0RXJyb3IobWVzc2FnZSwgbm9kZXMpIHtcbiAgICB2YXIgX25vZGVzID0gQXJyYXkuaXNBcnJheShub2RlcykgPyBub2Rlcy5maWx0ZXIoQm9vbGVhbikgOiBub2RlcztcblxuICAgIHRoaXMuYWRkRXJyb3IobmV3IEdyYXBoUUxFcnJvcihtZXNzYWdlLCBfbm9kZXMpKTtcbiAgfTtcblxuICBfcHJvdG8uYWRkRXJyb3IgPSBmdW5jdGlvbiBhZGRFcnJvcihlcnJvcikge1xuICAgIHRoaXMuX2Vycm9ycy5wdXNoKGVycm9yKTtcbiAgfTtcblxuICBfcHJvdG8uZ2V0RXJyb3JzID0gZnVuY3Rpb24gZ2V0RXJyb3JzKCkge1xuICAgIHJldHVybiB0aGlzLl9lcnJvcnM7XG4gIH07XG5cbiAgcmV0dXJuIFNjaGVtYVZhbGlkYXRpb25Db250ZXh0O1xufSgpO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZVJvb3RUeXBlcyhjb250ZXh0KSB7XG4gIHZhciBzY2hlbWEgPSBjb250ZXh0LnNjaGVtYTtcbiAgdmFyIHF1ZXJ5VHlwZSA9IHNjaGVtYS5nZXRRdWVyeVR5cGUoKTtcblxuICBpZiAoIXF1ZXJ5VHlwZSkge1xuICAgIGNvbnRleHQucmVwb3J0RXJyb3IoJ1F1ZXJ5IHJvb3QgdHlwZSBtdXN0IGJlIHByb3ZpZGVkLicsIHNjaGVtYS5hc3ROb2RlKTtcbiAgfSBlbHNlIGlmICghaXNPYmplY3RUeXBlKHF1ZXJ5VHlwZSkpIHtcbiAgICB2YXIgX2dldE9wZXJhdGlvblR5cGVOb2RlO1xuXG4gICAgY29udGV4dC5yZXBvcnRFcnJvcihcIlF1ZXJ5IHJvb3QgdHlwZSBtdXN0IGJlIE9iamVjdCB0eXBlLCBpdCBjYW5ub3QgYmUgXCIuY29uY2F0KGluc3BlY3QocXVlcnlUeXBlKSwgXCIuXCIpLCAoX2dldE9wZXJhdGlvblR5cGVOb2RlID0gZ2V0T3BlcmF0aW9uVHlwZU5vZGUoc2NoZW1hLCAncXVlcnknKSkgIT09IG51bGwgJiYgX2dldE9wZXJhdGlvblR5cGVOb2RlICE9PSB2b2lkIDAgPyBfZ2V0T3BlcmF0aW9uVHlwZU5vZGUgOiBxdWVyeVR5cGUuYXN0Tm9kZSk7XG4gIH1cblxuICB2YXIgbXV0YXRpb25UeXBlID0gc2NoZW1hLmdldE11dGF0aW9uVHlwZSgpO1xuXG4gIGlmIChtdXRhdGlvblR5cGUgJiYgIWlzT2JqZWN0VHlwZShtdXRhdGlvblR5cGUpKSB7XG4gICAgdmFyIF9nZXRPcGVyYXRpb25UeXBlTm9kZTI7XG5cbiAgICBjb250ZXh0LnJlcG9ydEVycm9yKCdNdXRhdGlvbiByb290IHR5cGUgbXVzdCBiZSBPYmplY3QgdHlwZSBpZiBwcm92aWRlZCwgaXQgY2Fubm90IGJlICcgKyBcIlwiLmNvbmNhdChpbnNwZWN0KG11dGF0aW9uVHlwZSksIFwiLlwiKSwgKF9nZXRPcGVyYXRpb25UeXBlTm9kZTIgPSBnZXRPcGVyYXRpb25UeXBlTm9kZShzY2hlbWEsICdtdXRhdGlvbicpKSAhPT0gbnVsbCAmJiBfZ2V0T3BlcmF0aW9uVHlwZU5vZGUyICE9PSB2b2lkIDAgPyBfZ2V0T3BlcmF0aW9uVHlwZU5vZGUyIDogbXV0YXRpb25UeXBlLmFzdE5vZGUpO1xuICB9XG5cbiAgdmFyIHN1YnNjcmlwdGlvblR5cGUgPSBzY2hlbWEuZ2V0U3Vic2NyaXB0aW9uVHlwZSgpO1xuXG4gIGlmIChzdWJzY3JpcHRpb25UeXBlICYmICFpc09iamVjdFR5cGUoc3Vic2NyaXB0aW9uVHlwZSkpIHtcbiAgICB2YXIgX2dldE9wZXJhdGlvblR5cGVOb2RlMztcblxuICAgIGNvbnRleHQucmVwb3J0RXJyb3IoJ1N1YnNjcmlwdGlvbiByb290IHR5cGUgbXVzdCBiZSBPYmplY3QgdHlwZSBpZiBwcm92aWRlZCwgaXQgY2Fubm90IGJlICcgKyBcIlwiLmNvbmNhdChpbnNwZWN0KHN1YnNjcmlwdGlvblR5cGUpLCBcIi5cIiksIChfZ2V0T3BlcmF0aW9uVHlwZU5vZGUzID0gZ2V0T3BlcmF0aW9uVHlwZU5vZGUoc2NoZW1hLCAnc3Vic2NyaXB0aW9uJykpICE9PSBudWxsICYmIF9nZXRPcGVyYXRpb25UeXBlTm9kZTMgIT09IHZvaWQgMCA/IF9nZXRPcGVyYXRpb25UeXBlTm9kZTMgOiBzdWJzY3JpcHRpb25UeXBlLmFzdE5vZGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldE9wZXJhdGlvblR5cGVOb2RlKHNjaGVtYSwgb3BlcmF0aW9uKSB7XG4gIHZhciBvcGVyYXRpb25Ob2RlcyA9IGdldEFsbFN1Yk5vZGVzKHNjaGVtYSwgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5vcGVyYXRpb25UeXBlcztcbiAgfSk7XG5cbiAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgb3BlcmF0aW9uTm9kZXMubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBub2RlID0gb3BlcmF0aW9uTm9kZXNbX2kyXTtcblxuICAgIGlmIChub2RlLm9wZXJhdGlvbiA9PT0gb3BlcmF0aW9uKSB7XG4gICAgICByZXR1cm4gbm9kZS50eXBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRGlyZWN0aXZlcyhjb250ZXh0KSB7XG4gIGZvciAodmFyIF9pNCA9IDAsIF9jb250ZXh0JHNjaGVtYSRnZXREaTIgPSBjb250ZXh0LnNjaGVtYS5nZXREaXJlY3RpdmVzKCk7IF9pNCA8IF9jb250ZXh0JHNjaGVtYSRnZXREaTIubGVuZ3RoOyBfaTQrKykge1xuICAgIHZhciBkaXJlY3RpdmUgPSBfY29udGV4dCRzY2hlbWEkZ2V0RGkyW19pNF07XG5cbiAgICAvLyBFbnN1cmUgYWxsIGRpcmVjdGl2ZXMgYXJlIGluIGZhY3QgR3JhcGhRTCBkaXJlY3RpdmVzLlxuICAgIGlmICghaXNEaXJlY3RpdmUoZGlyZWN0aXZlKSkge1xuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcIkV4cGVjdGVkIGRpcmVjdGl2ZSBidXQgZ290OiBcIi5jb25jYXQoaW5zcGVjdChkaXJlY3RpdmUpLCBcIi5cIiksIGRpcmVjdGl2ZSA9PT0gbnVsbCB8fCBkaXJlY3RpdmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRpcmVjdGl2ZS5hc3ROb2RlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8gRW5zdXJlIHRoZXkgYXJlIG5hbWVkIGNvcnJlY3RseS5cblxuXG4gICAgdmFsaWRhdGVOYW1lKGNvbnRleHQsIGRpcmVjdGl2ZSk7IC8vIFRPRE86IEVuc3VyZSBwcm9wZXIgbG9jYXRpb25zLlxuICAgIC8vIEVuc3VyZSB0aGUgYXJndW1lbnRzIGFyZSB2YWxpZC5cblxuICAgIGZvciAodmFyIF9pNiA9IDAsIF9kaXJlY3RpdmUkYXJnczIgPSBkaXJlY3RpdmUuYXJnczsgX2k2IDwgX2RpcmVjdGl2ZSRhcmdzMi5sZW5ndGg7IF9pNisrKSB7XG4gICAgICB2YXIgYXJnID0gX2RpcmVjdGl2ZSRhcmdzMltfaTZdO1xuICAgICAgLy8gRW5zdXJlIHRoZXkgYXJlIG5hbWVkIGNvcnJlY3RseS5cbiAgICAgIHZhbGlkYXRlTmFtZShjb250ZXh0LCBhcmcpOyAvLyBFbnN1cmUgdGhlIHR5cGUgaXMgYW4gaW5wdXQgdHlwZS5cblxuICAgICAgaWYgKCFpc0lucHV0VHlwZShhcmcudHlwZSkpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcIlRoZSB0eXBlIG9mIEBcIi5jb25jYXQoZGlyZWN0aXZlLm5hbWUsIFwiKFwiKS5jb25jYXQoYXJnLm5hbWUsIFwiOikgbXVzdCBiZSBJbnB1dCBUeXBlIFwiKSArIFwiYnV0IGdvdDogXCIuY29uY2F0KGluc3BlY3QoYXJnLnR5cGUpLCBcIi5cIiksIGFyZy5hc3ROb2RlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzUmVxdWlyZWRBcmd1bWVudChhcmcpICYmIGFyZy5kZXByZWNhdGlvblJlYXNvbiAhPSBudWxsKSB7XG4gICAgICAgIHZhciBfYXJnJGFzdE5vZGU7XG5cbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcIlJlcXVpcmVkIGFyZ3VtZW50IEBcIi5jb25jYXQoZGlyZWN0aXZlLm5hbWUsIFwiKFwiKS5jb25jYXQoYXJnLm5hbWUsIFwiOikgY2Fubm90IGJlIGRlcHJlY2F0ZWQuXCIpLCBbZ2V0RGVwcmVjYXRlZERpcmVjdGl2ZU5vZGUoYXJnLmFzdE5vZGUpLCAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoVE9ETyBuZWVkIHRvIHdyaXRlIGNvdmVyYWdlIHRlc3RzKVxuICAgICAgICAoX2FyZyRhc3ROb2RlID0gYXJnLmFzdE5vZGUpID09PSBudWxsIHx8IF9hcmckYXN0Tm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FyZyRhc3ROb2RlLnR5cGVdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVOYW1lKGNvbnRleHQsIG5vZGUpIHtcbiAgLy8gRW5zdXJlIG5hbWVzIGFyZSB2YWxpZCwgaG93ZXZlciBpbnRyb3NwZWN0aW9uIHR5cGVzIG9wdCBvdXQuXG4gIHZhciBlcnJvciA9IGlzVmFsaWROYW1lRXJyb3Iobm9kZS5uYW1lKTtcblxuICBpZiAoZXJyb3IpIHtcbiAgICBjb250ZXh0LmFkZEVycm9yKGxvY2F0ZWRFcnJvcihlcnJvciwgbm9kZS5hc3ROb2RlKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVUeXBlcyhjb250ZXh0KSB7XG4gIHZhciB2YWxpZGF0ZUlucHV0T2JqZWN0Q2lyY3VsYXJSZWZzID0gY3JlYXRlSW5wdXRPYmplY3RDaXJjdWxhclJlZnNWYWxpZGF0b3IoY29udGV4dCk7XG4gIHZhciB0eXBlTWFwID0gY29udGV4dC5zY2hlbWEuZ2V0VHlwZU1hcCgpO1xuXG4gIGZvciAodmFyIF9pOCA9IDAsIF9vYmplY3RWYWx1ZXMyID0gb2JqZWN0VmFsdWVzKHR5cGVNYXApOyBfaTggPCBfb2JqZWN0VmFsdWVzMi5sZW5ndGg7IF9pOCsrKSB7XG4gICAgdmFyIHR5cGUgPSBfb2JqZWN0VmFsdWVzMltfaThdO1xuXG4gICAgLy8gRW5zdXJlIGFsbCBwcm92aWRlZCB0eXBlcyBhcmUgaW4gZmFjdCBHcmFwaFFMIHR5cGUuXG4gICAgaWYgKCFpc05hbWVkVHlwZSh0eXBlKSkge1xuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcIkV4cGVjdGVkIEdyYXBoUUwgbmFtZWQgdHlwZSBidXQgZ290OiBcIi5jb25jYXQoaW5zcGVjdCh0eXBlKSwgXCIuXCIpLCB0eXBlLmFzdE5vZGUpO1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyBFbnN1cmUgaXQgaXMgbmFtZWQgY29ycmVjdGx5IChleGNsdWRpbmcgaW50cm9zcGVjdGlvbiB0eXBlcykuXG5cblxuICAgIGlmICghaXNJbnRyb3NwZWN0aW9uVHlwZSh0eXBlKSkge1xuICAgICAgdmFsaWRhdGVOYW1lKGNvbnRleHQsIHR5cGUpO1xuICAgIH1cblxuICAgIGlmIChpc09iamVjdFR5cGUodHlwZSkpIHtcbiAgICAgIC8vIEVuc3VyZSBmaWVsZHMgYXJlIHZhbGlkXG4gICAgICB2YWxpZGF0ZUZpZWxkcyhjb250ZXh0LCB0eXBlKTsgLy8gRW5zdXJlIG9iamVjdHMgaW1wbGVtZW50IHRoZSBpbnRlcmZhY2VzIHRoZXkgY2xhaW0gdG8uXG5cbiAgICAgIHZhbGlkYXRlSW50ZXJmYWNlcyhjb250ZXh0LCB0eXBlKTtcbiAgICB9IGVsc2UgaWYgKGlzSW50ZXJmYWNlVHlwZSh0eXBlKSkge1xuICAgICAgLy8gRW5zdXJlIGZpZWxkcyBhcmUgdmFsaWQuXG4gICAgICB2YWxpZGF0ZUZpZWxkcyhjb250ZXh0LCB0eXBlKTsgLy8gRW5zdXJlIGludGVyZmFjZXMgaW1wbGVtZW50IHRoZSBpbnRlcmZhY2VzIHRoZXkgY2xhaW0gdG8uXG5cbiAgICAgIHZhbGlkYXRlSW50ZXJmYWNlcyhjb250ZXh0LCB0eXBlKTtcbiAgICB9IGVsc2UgaWYgKGlzVW5pb25UeXBlKHR5cGUpKSB7XG4gICAgICAvLyBFbnN1cmUgVW5pb25zIGluY2x1ZGUgdmFsaWQgbWVtYmVyIHR5cGVzLlxuICAgICAgdmFsaWRhdGVVbmlvbk1lbWJlcnMoY29udGV4dCwgdHlwZSk7XG4gICAgfSBlbHNlIGlmIChpc0VudW1UeXBlKHR5cGUpKSB7XG4gICAgICAvLyBFbnN1cmUgRW51bXMgaGF2ZSB2YWxpZCB2YWx1ZXMuXG4gICAgICB2YWxpZGF0ZUVudW1WYWx1ZXMoY29udGV4dCwgdHlwZSk7XG4gICAgfSBlbHNlIGlmIChpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgICAgLy8gRW5zdXJlIElucHV0IE9iamVjdCBmaWVsZHMgYXJlIHZhbGlkLlxuICAgICAgdmFsaWRhdGVJbnB1dEZpZWxkcyhjb250ZXh0LCB0eXBlKTsgLy8gRW5zdXJlIElucHV0IE9iamVjdHMgZG8gbm90IGNvbnRhaW4gbm9uLW51bGxhYmxlIGNpcmN1bGFyIHJlZmVyZW5jZXNcblxuICAgICAgdmFsaWRhdGVJbnB1dE9iamVjdENpcmN1bGFyUmVmcyh0eXBlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVGaWVsZHMoY29udGV4dCwgdHlwZSkge1xuICB2YXIgZmllbGRzID0gb2JqZWN0VmFsdWVzKHR5cGUuZ2V0RmllbGRzKCkpOyAvLyBPYmplY3RzIGFuZCBJbnRlcmZhY2VzIGJvdGggbXVzdCBkZWZpbmUgb25lIG9yIG1vcmUgZmllbGRzLlxuXG4gIGlmIChmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgY29udGV4dC5yZXBvcnRFcnJvcihcIlR5cGUgXCIuY29uY2F0KHR5cGUubmFtZSwgXCIgbXVzdCBkZWZpbmUgb25lIG9yIG1vcmUgZmllbGRzLlwiKSwgZ2V0QWxsTm9kZXModHlwZSkpO1xuICB9XG5cbiAgZm9yICh2YXIgX2kxMCA9IDA7IF9pMTAgPCBmaWVsZHMubGVuZ3RoOyBfaTEwKyspIHtcbiAgICB2YXIgZmllbGQgPSBmaWVsZHNbX2kxMF07XG4gICAgLy8gRW5zdXJlIHRoZXkgYXJlIG5hbWVkIGNvcnJlY3RseS5cbiAgICB2YWxpZGF0ZU5hbWUoY29udGV4dCwgZmllbGQpOyAvLyBFbnN1cmUgdGhlIHR5cGUgaXMgYW4gb3V0cHV0IHR5cGVcblxuICAgIGlmICghaXNPdXRwdXRUeXBlKGZpZWxkLnR5cGUpKSB7XG4gICAgICB2YXIgX2ZpZWxkJGFzdE5vZGU7XG5cbiAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXCJUaGUgdHlwZSBvZiBcIi5jb25jYXQodHlwZS5uYW1lLCBcIi5cIikuY29uY2F0KGZpZWxkLm5hbWUsIFwiIG11c3QgYmUgT3V0cHV0IFR5cGUgXCIpICsgXCJidXQgZ290OiBcIi5jb25jYXQoaW5zcGVjdChmaWVsZC50eXBlKSwgXCIuXCIpLCAoX2ZpZWxkJGFzdE5vZGUgPSBmaWVsZC5hc3ROb2RlKSA9PT0gbnVsbCB8fCBfZmllbGQkYXN0Tm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2ZpZWxkJGFzdE5vZGUudHlwZSk7XG4gICAgfSAvLyBFbnN1cmUgdGhlIGFyZ3VtZW50cyBhcmUgdmFsaWRcblxuXG4gICAgZm9yICh2YXIgX2kxMiA9IDAsIF9maWVsZCRhcmdzMiA9IGZpZWxkLmFyZ3M7IF9pMTIgPCBfZmllbGQkYXJnczIubGVuZ3RoOyBfaTEyKyspIHtcbiAgICAgIHZhciBhcmcgPSBfZmllbGQkYXJnczJbX2kxMl07XG4gICAgICB2YXIgYXJnTmFtZSA9IGFyZy5uYW1lOyAvLyBFbnN1cmUgdGhleSBhcmUgbmFtZWQgY29ycmVjdGx5LlxuXG4gICAgICB2YWxpZGF0ZU5hbWUoY29udGV4dCwgYXJnKTsgLy8gRW5zdXJlIHRoZSB0eXBlIGlzIGFuIGlucHV0IHR5cGVcblxuICAgICAgaWYgKCFpc0lucHV0VHlwZShhcmcudHlwZSkpIHtcbiAgICAgICAgdmFyIF9hcmckYXN0Tm9kZTI7XG5cbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcIlRoZSB0eXBlIG9mIFwiLmNvbmNhdCh0eXBlLm5hbWUsIFwiLlwiKS5jb25jYXQoZmllbGQubmFtZSwgXCIoXCIpLmNvbmNhdChhcmdOYW1lLCBcIjopIG11c3QgYmUgSW5wdXQgXCIpICsgXCJUeXBlIGJ1dCBnb3Q6IFwiLmNvbmNhdChpbnNwZWN0KGFyZy50eXBlKSwgXCIuXCIpLCAoX2FyZyRhc3ROb2RlMiA9IGFyZy5hc3ROb2RlKSA9PT0gbnVsbCB8fCBfYXJnJGFzdE5vZGUyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYXJnJGFzdE5vZGUyLnR5cGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNSZXF1aXJlZEFyZ3VtZW50KGFyZykgJiYgYXJnLmRlcHJlY2F0aW9uUmVhc29uICE9IG51bGwpIHtcbiAgICAgICAgdmFyIF9hcmckYXN0Tm9kZTM7XG5cbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcIlJlcXVpcmVkIGFyZ3VtZW50IFwiLmNvbmNhdCh0eXBlLm5hbWUsIFwiLlwiKS5jb25jYXQoZmllbGQubmFtZSwgXCIoXCIpLmNvbmNhdChhcmdOYW1lLCBcIjopIGNhbm5vdCBiZSBkZXByZWNhdGVkLlwiKSwgW2dldERlcHJlY2F0ZWREaXJlY3RpdmVOb2RlKGFyZy5hc3ROb2RlKSwgLy8gaXN0YW5idWwgaWdub3JlIG5leHQgKFRPRE8gbmVlZCB0byB3cml0ZSBjb3ZlcmFnZSB0ZXN0cylcbiAgICAgICAgKF9hcmckYXN0Tm9kZTMgPSBhcmcuYXN0Tm9kZSkgPT09IG51bGwgfHwgX2FyZyRhc3ROb2RlMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FyZyRhc3ROb2RlMy50eXBlXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlSW50ZXJmYWNlcyhjb250ZXh0LCB0eXBlKSB7XG4gIHZhciBpZmFjZVR5cGVOYW1lcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZm9yICh2YXIgX2kxNCA9IDAsIF90eXBlJGdldEludGVyZmFjZXMyID0gdHlwZS5nZXRJbnRlcmZhY2VzKCk7IF9pMTQgPCBfdHlwZSRnZXRJbnRlcmZhY2VzMi5sZW5ndGg7IF9pMTQrKykge1xuICAgIHZhciBpZmFjZSA9IF90eXBlJGdldEludGVyZmFjZXMyW19pMTRdO1xuXG4gICAgaWYgKCFpc0ludGVyZmFjZVR5cGUoaWZhY2UpKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFwiVHlwZSBcIi5jb25jYXQoaW5zcGVjdCh0eXBlKSwgXCIgbXVzdCBvbmx5IGltcGxlbWVudCBJbnRlcmZhY2UgdHlwZXMsIFwiKSArIFwiaXQgY2Fubm90IGltcGxlbWVudCBcIi5jb25jYXQoaW5zcGVjdChpZmFjZSksIFwiLlwiKSwgZ2V0QWxsSW1wbGVtZW50c0ludGVyZmFjZU5vZGVzKHR5cGUsIGlmYWNlKSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gaWZhY2UpIHtcbiAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXCJUeXBlIFwiLmNvbmNhdCh0eXBlLm5hbWUsIFwiIGNhbm5vdCBpbXBsZW1lbnQgaXRzZWxmIGJlY2F1c2UgaXQgd291bGQgY3JlYXRlIGEgY2lyY3VsYXIgcmVmZXJlbmNlLlwiKSwgZ2V0QWxsSW1wbGVtZW50c0ludGVyZmFjZU5vZGVzKHR5cGUsIGlmYWNlKSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoaWZhY2VUeXBlTmFtZXNbaWZhY2UubmFtZV0pIHtcbiAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXCJUeXBlIFwiLmNvbmNhdCh0eXBlLm5hbWUsIFwiIGNhbiBvbmx5IGltcGxlbWVudCBcIikuY29uY2F0KGlmYWNlLm5hbWUsIFwiIG9uY2UuXCIpLCBnZXRBbGxJbXBsZW1lbnRzSW50ZXJmYWNlTm9kZXModHlwZSwgaWZhY2UpKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmYWNlVHlwZU5hbWVzW2lmYWNlLm5hbWVdID0gdHJ1ZTtcbiAgICB2YWxpZGF0ZVR5cGVJbXBsZW1lbnRzQW5jZXN0b3JzKGNvbnRleHQsIHR5cGUsIGlmYWNlKTtcbiAgICB2YWxpZGF0ZVR5cGVJbXBsZW1lbnRzSW50ZXJmYWNlKGNvbnRleHQsIHR5cGUsIGlmYWNlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVR5cGVJbXBsZW1lbnRzSW50ZXJmYWNlKGNvbnRleHQsIHR5cGUsIGlmYWNlKSB7XG4gIHZhciB0eXBlRmllbGRNYXAgPSB0eXBlLmdldEZpZWxkcygpOyAvLyBBc3NlcnQgZWFjaCBpbnRlcmZhY2UgZmllbGQgaXMgaW1wbGVtZW50ZWQuXG5cbiAgZm9yICh2YXIgX2kxNiA9IDAsIF9vYmplY3RWYWx1ZXM0ID0gb2JqZWN0VmFsdWVzKGlmYWNlLmdldEZpZWxkcygpKTsgX2kxNiA8IF9vYmplY3RWYWx1ZXM0Lmxlbmd0aDsgX2kxNisrKSB7XG4gICAgdmFyIGlmYWNlRmllbGQgPSBfb2JqZWN0VmFsdWVzNFtfaTE2XTtcbiAgICB2YXIgZmllbGROYW1lID0gaWZhY2VGaWVsZC5uYW1lO1xuICAgIHZhciB0eXBlRmllbGQgPSB0eXBlRmllbGRNYXBbZmllbGROYW1lXTsgLy8gQXNzZXJ0IGludGVyZmFjZSBmaWVsZCBleGlzdHMgb24gdHlwZS5cblxuICAgIGlmICghdHlwZUZpZWxkKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFwiSW50ZXJmYWNlIGZpZWxkIFwiLmNvbmNhdChpZmFjZS5uYW1lLCBcIi5cIikuY29uY2F0KGZpZWxkTmFtZSwgXCIgZXhwZWN0ZWQgYnV0IFwiKS5jb25jYXQodHlwZS5uYW1lLCBcIiBkb2VzIG5vdCBwcm92aWRlIGl0LlwiKSwgW2lmYWNlRmllbGQuYXN0Tm9kZV0uY29uY2F0KGdldEFsbE5vZGVzKHR5cGUpKSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIEFzc2VydCBpbnRlcmZhY2UgZmllbGQgdHlwZSBpcyBzYXRpc2ZpZWQgYnkgdHlwZSBmaWVsZCB0eXBlLCBieSBiZWluZ1xuICAgIC8vIGEgdmFsaWQgc3VidHlwZS4gKGNvdmFyaWFudClcblxuXG4gICAgaWYgKCFpc1R5cGVTdWJUeXBlT2YoY29udGV4dC5zY2hlbWEsIHR5cGVGaWVsZC50eXBlLCBpZmFjZUZpZWxkLnR5cGUpKSB7XG4gICAgICB2YXIgX2lmYWNlRmllbGQkYXN0Tm9kZSwgX3R5cGVGaWVsZCRhc3ROb2RlO1xuXG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFwiSW50ZXJmYWNlIGZpZWxkIFwiLmNvbmNhdChpZmFjZS5uYW1lLCBcIi5cIikuY29uY2F0KGZpZWxkTmFtZSwgXCIgZXhwZWN0cyB0eXBlIFwiKSArIFwiXCIuY29uY2F0KGluc3BlY3QoaWZhY2VGaWVsZC50eXBlKSwgXCIgYnV0IFwiKS5jb25jYXQodHlwZS5uYW1lLCBcIi5cIikuY29uY2F0KGZpZWxkTmFtZSwgXCIgXCIpICsgXCJpcyB0eXBlIFwiLmNvbmNhdChpbnNwZWN0KHR5cGVGaWVsZC50eXBlKSwgXCIuXCIpLCBbLy8gaXN0YW5idWwgaWdub3JlIG5leHQgKFRPRE8gbmVlZCB0byB3cml0ZSBjb3ZlcmFnZSB0ZXN0cylcbiAgICAgIChfaWZhY2VGaWVsZCRhc3ROb2RlID0gaWZhY2VGaWVsZC5hc3ROb2RlKSA9PT0gbnVsbCB8fCBfaWZhY2VGaWVsZCRhc3ROb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfaWZhY2VGaWVsZCRhc3ROb2RlLnR5cGUsIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChUT0RPIG5lZWQgdG8gd3JpdGUgY292ZXJhZ2UgdGVzdHMpXG4gICAgICAoX3R5cGVGaWVsZCRhc3ROb2RlID0gdHlwZUZpZWxkLmFzdE5vZGUpID09PSBudWxsIHx8IF90eXBlRmllbGQkYXN0Tm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3R5cGVGaWVsZCRhc3ROb2RlLnR5cGVdKTtcbiAgICB9IC8vIEFzc2VydCBlYWNoIGludGVyZmFjZSBmaWVsZCBhcmcgaXMgaW1wbGVtZW50ZWQuXG5cblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pMTgsIF9pZmFjZUZpZWxkJGFyZ3MyKSB7XG4gICAgICB2YXIgaWZhY2VBcmcgPSBfaWZhY2VGaWVsZCRhcmdzMltfaTE4XTtcbiAgICAgIHZhciBhcmdOYW1lID0gaWZhY2VBcmcubmFtZTtcbiAgICAgIHZhciB0eXBlQXJnID0gZmluZCh0eXBlRmllbGQuYXJncywgZnVuY3Rpb24gKGFyZykge1xuICAgICAgICByZXR1cm4gYXJnLm5hbWUgPT09IGFyZ05hbWU7XG4gICAgICB9KTsgLy8gQXNzZXJ0IGludGVyZmFjZSBmaWVsZCBhcmcgZXhpc3RzIG9uIG9iamVjdCBmaWVsZC5cblxuICAgICAgaWYgKCF0eXBlQXJnKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXCJJbnRlcmZhY2UgZmllbGQgYXJndW1lbnQgXCIuY29uY2F0KGlmYWNlLm5hbWUsIFwiLlwiKS5jb25jYXQoZmllbGROYW1lLCBcIihcIikuY29uY2F0KGFyZ05hbWUsIFwiOikgZXhwZWN0ZWQgYnV0IFwiKS5jb25jYXQodHlwZS5uYW1lLCBcIi5cIikuY29uY2F0KGZpZWxkTmFtZSwgXCIgZG9lcyBub3QgcHJvdmlkZSBpdC5cIiksIFtpZmFjZUFyZy5hc3ROb2RlLCB0eXBlRmllbGQuYXN0Tm9kZV0pO1xuICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgfSAvLyBBc3NlcnQgaW50ZXJmYWNlIGZpZWxkIGFyZyB0eXBlIG1hdGNoZXMgb2JqZWN0IGZpZWxkIGFyZyB0eXBlLlxuICAgICAgLy8gKGludmFyaWFudClcbiAgICAgIC8vIFRPRE86IGNoYW5nZSB0byBjb250cmF2YXJpYW50P1xuXG5cbiAgICAgIGlmICghaXNFcXVhbFR5cGUoaWZhY2VBcmcudHlwZSwgdHlwZUFyZy50eXBlKSkge1xuICAgICAgICB2YXIgX2lmYWNlQXJnJGFzdE5vZGUsIF90eXBlQXJnJGFzdE5vZGU7XG5cbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcIkludGVyZmFjZSBmaWVsZCBhcmd1bWVudCBcIi5jb25jYXQoaWZhY2UubmFtZSwgXCIuXCIpLmNvbmNhdChmaWVsZE5hbWUsIFwiKFwiKS5jb25jYXQoYXJnTmFtZSwgXCI6KSBcIikgKyBcImV4cGVjdHMgdHlwZSBcIi5jb25jYXQoaW5zcGVjdChpZmFjZUFyZy50eXBlKSwgXCIgYnV0IFwiKSArIFwiXCIuY29uY2F0KHR5cGUubmFtZSwgXCIuXCIpLmNvbmNhdChmaWVsZE5hbWUsIFwiKFwiKS5jb25jYXQoYXJnTmFtZSwgXCI6KSBpcyB0eXBlIFwiKSArIFwiXCIuY29uY2F0KGluc3BlY3QodHlwZUFyZy50eXBlKSwgXCIuXCIpLCBbLy8gaXN0YW5idWwgaWdub3JlIG5leHQgKFRPRE8gbmVlZCB0byB3cml0ZSBjb3ZlcmFnZSB0ZXN0cylcbiAgICAgICAgKF9pZmFjZUFyZyRhc3ROb2RlID0gaWZhY2VBcmcuYXN0Tm9kZSkgPT09IG51bGwgfHwgX2lmYWNlQXJnJGFzdE5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9pZmFjZUFyZyRhc3ROb2RlLnR5cGUsIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChUT0RPIG5lZWQgdG8gd3JpdGUgY292ZXJhZ2UgdGVzdHMpXG4gICAgICAgIChfdHlwZUFyZyRhc3ROb2RlID0gdHlwZUFyZy5hc3ROb2RlKSA9PT0gbnVsbCB8fCBfdHlwZUFyZyRhc3ROb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdHlwZUFyZyRhc3ROb2RlLnR5cGVdKTtcbiAgICAgIH0gLy8gVE9ETzogdmFsaWRhdGUgZGVmYXVsdCB2YWx1ZXM/XG5cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kxOCA9IDAsIF9pZmFjZUZpZWxkJGFyZ3MyID0gaWZhY2VGaWVsZC5hcmdzOyBfaTE4IDwgX2lmYWNlRmllbGQkYXJnczIubGVuZ3RoOyBfaTE4KyspIHtcbiAgICAgIHZhciBfcmV0ID0gX2xvb3AoX2kxOCwgX2lmYWNlRmllbGQkYXJnczIpO1xuXG4gICAgICBpZiAoX3JldCA9PT0gXCJjb250aW51ZVwiKSBjb250aW51ZTtcbiAgICB9IC8vIEFzc2VydCBhZGRpdGlvbmFsIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSByZXF1aXJlZC5cblxuXG4gICAgdmFyIF9sb29wMiA9IGZ1bmN0aW9uIF9sb29wMihfaTIwLCBfdHlwZUZpZWxkJGFyZ3MyKSB7XG4gICAgICB2YXIgdHlwZUFyZyA9IF90eXBlRmllbGQkYXJnczJbX2kyMF07XG4gICAgICB2YXIgYXJnTmFtZSA9IHR5cGVBcmcubmFtZTtcbiAgICAgIHZhciBpZmFjZUFyZyA9IGZpbmQoaWZhY2VGaWVsZC5hcmdzLCBmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgIHJldHVybiBhcmcubmFtZSA9PT0gYXJnTmFtZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWlmYWNlQXJnICYmIGlzUmVxdWlyZWRBcmd1bWVudCh0eXBlQXJnKSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFwiT2JqZWN0IGZpZWxkIFwiLmNvbmNhdCh0eXBlLm5hbWUsIFwiLlwiKS5jb25jYXQoZmllbGROYW1lLCBcIiBpbmNsdWRlcyByZXF1aXJlZCBhcmd1bWVudCBcIikuY29uY2F0KGFyZ05hbWUsIFwiIHRoYXQgaXMgbWlzc2luZyBmcm9tIHRoZSBJbnRlcmZhY2UgZmllbGQgXCIpLmNvbmNhdChpZmFjZS5uYW1lLCBcIi5cIikuY29uY2F0KGZpZWxkTmFtZSwgXCIuXCIpLCBbdHlwZUFyZy5hc3ROb2RlLCBpZmFjZUZpZWxkLmFzdE5vZGVdKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kyMCA9IDAsIF90eXBlRmllbGQkYXJnczIgPSB0eXBlRmllbGQuYXJnczsgX2kyMCA8IF90eXBlRmllbGQkYXJnczIubGVuZ3RoOyBfaTIwKyspIHtcbiAgICAgIF9sb29wMihfaTIwLCBfdHlwZUZpZWxkJGFyZ3MyKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVUeXBlSW1wbGVtZW50c0FuY2VzdG9ycyhjb250ZXh0LCB0eXBlLCBpZmFjZSkge1xuICB2YXIgaWZhY2VJbnRlcmZhY2VzID0gdHlwZS5nZXRJbnRlcmZhY2VzKCk7XG5cbiAgZm9yICh2YXIgX2kyMiA9IDAsIF9pZmFjZSRnZXRJbnRlcmZhY2VzMiA9IGlmYWNlLmdldEludGVyZmFjZXMoKTsgX2kyMiA8IF9pZmFjZSRnZXRJbnRlcmZhY2VzMi5sZW5ndGg7IF9pMjIrKykge1xuICAgIHZhciB0cmFuc2l0aXZlID0gX2lmYWNlJGdldEludGVyZmFjZXMyW19pMjJdO1xuXG4gICAgaWYgKGlmYWNlSW50ZXJmYWNlcy5pbmRleE9mKHRyYW5zaXRpdmUpID09PSAtMSkge1xuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcih0cmFuc2l0aXZlID09PSB0eXBlID8gXCJUeXBlIFwiLmNvbmNhdCh0eXBlLm5hbWUsIFwiIGNhbm5vdCBpbXBsZW1lbnQgXCIpLmNvbmNhdChpZmFjZS5uYW1lLCBcIiBiZWNhdXNlIGl0IHdvdWxkIGNyZWF0ZSBhIGNpcmN1bGFyIHJlZmVyZW5jZS5cIikgOiBcIlR5cGUgXCIuY29uY2F0KHR5cGUubmFtZSwgXCIgbXVzdCBpbXBsZW1lbnQgXCIpLmNvbmNhdCh0cmFuc2l0aXZlLm5hbWUsIFwiIGJlY2F1c2UgaXQgaXMgaW1wbGVtZW50ZWQgYnkgXCIpLmNvbmNhdChpZmFjZS5uYW1lLCBcIi5cIiksIFtdLmNvbmNhdChnZXRBbGxJbXBsZW1lbnRzSW50ZXJmYWNlTm9kZXMoaWZhY2UsIHRyYW5zaXRpdmUpLCBnZXRBbGxJbXBsZW1lbnRzSW50ZXJmYWNlTm9kZXModHlwZSwgaWZhY2UpKSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVW5pb25NZW1iZXJzKGNvbnRleHQsIHVuaW9uKSB7XG4gIHZhciBtZW1iZXJUeXBlcyA9IHVuaW9uLmdldFR5cGVzKCk7XG5cbiAgaWYgKG1lbWJlclR5cGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXCJVbmlvbiB0eXBlIFwiLmNvbmNhdCh1bmlvbi5uYW1lLCBcIiBtdXN0IGRlZmluZSBvbmUgb3IgbW9yZSBtZW1iZXIgdHlwZXMuXCIpLCBnZXRBbGxOb2Rlcyh1bmlvbikpO1xuICB9XG5cbiAgdmFyIGluY2x1ZGVkVHlwZU5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKHZhciBfaTI0ID0gMDsgX2kyNCA8IG1lbWJlclR5cGVzLmxlbmd0aDsgX2kyNCsrKSB7XG4gICAgdmFyIG1lbWJlclR5cGUgPSBtZW1iZXJUeXBlc1tfaTI0XTtcblxuICAgIGlmIChpbmNsdWRlZFR5cGVOYW1lc1ttZW1iZXJUeXBlLm5hbWVdKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFwiVW5pb24gdHlwZSBcIi5jb25jYXQodW5pb24ubmFtZSwgXCIgY2FuIG9ubHkgaW5jbHVkZSB0eXBlIFwiKS5jb25jYXQobWVtYmVyVHlwZS5uYW1lLCBcIiBvbmNlLlwiKSwgZ2V0VW5pb25NZW1iZXJUeXBlTm9kZXModW5pb24sIG1lbWJlclR5cGUubmFtZSkpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaW5jbHVkZWRUeXBlTmFtZXNbbWVtYmVyVHlwZS5uYW1lXSA9IHRydWU7XG5cbiAgICBpZiAoIWlzT2JqZWN0VHlwZShtZW1iZXJUeXBlKSkge1xuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcIlVuaW9uIHR5cGUgXCIuY29uY2F0KHVuaW9uLm5hbWUsIFwiIGNhbiBvbmx5IGluY2x1ZGUgT2JqZWN0IHR5cGVzLCBcIikgKyBcIml0IGNhbm5vdCBpbmNsdWRlIFwiLmNvbmNhdChpbnNwZWN0KG1lbWJlclR5cGUpLCBcIi5cIiksIGdldFVuaW9uTWVtYmVyVHlwZU5vZGVzKHVuaW9uLCBTdHJpbmcobWVtYmVyVHlwZSkpKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVFbnVtVmFsdWVzKGNvbnRleHQsIGVudW1UeXBlKSB7XG4gIHZhciBlbnVtVmFsdWVzID0gZW51bVR5cGUuZ2V0VmFsdWVzKCk7XG5cbiAgaWYgKGVudW1WYWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgY29udGV4dC5yZXBvcnRFcnJvcihcIkVudW0gdHlwZSBcIi5jb25jYXQoZW51bVR5cGUubmFtZSwgXCIgbXVzdCBkZWZpbmUgb25lIG9yIG1vcmUgdmFsdWVzLlwiKSwgZ2V0QWxsTm9kZXMoZW51bVR5cGUpKTtcbiAgfVxuXG4gIGZvciAodmFyIF9pMjYgPSAwOyBfaTI2IDwgZW51bVZhbHVlcy5sZW5ndGg7IF9pMjYrKykge1xuICAgIHZhciBlbnVtVmFsdWUgPSBlbnVtVmFsdWVzW19pMjZdO1xuICAgIHZhciB2YWx1ZU5hbWUgPSBlbnVtVmFsdWUubmFtZTsgLy8gRW5zdXJlIHZhbGlkIG5hbWUuXG5cbiAgICB2YWxpZGF0ZU5hbWUoY29udGV4dCwgZW51bVZhbHVlKTtcblxuICAgIGlmICh2YWx1ZU5hbWUgPT09ICd0cnVlJyB8fCB2YWx1ZU5hbWUgPT09ICdmYWxzZScgfHwgdmFsdWVOYW1lID09PSAnbnVsbCcpIHtcbiAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXCJFbnVtIHR5cGUgXCIuY29uY2F0KGVudW1UeXBlLm5hbWUsIFwiIGNhbm5vdCBpbmNsdWRlIHZhbHVlOiBcIikuY29uY2F0KHZhbHVlTmFtZSwgXCIuXCIpLCBlbnVtVmFsdWUuYXN0Tm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlSW5wdXRGaWVsZHMoY29udGV4dCwgaW5wdXRPYmopIHtcbiAgdmFyIGZpZWxkcyA9IG9iamVjdFZhbHVlcyhpbnB1dE9iai5nZXRGaWVsZHMoKSk7XG5cbiAgaWYgKGZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICBjb250ZXh0LnJlcG9ydEVycm9yKFwiSW5wdXQgT2JqZWN0IHR5cGUgXCIuY29uY2F0KGlucHV0T2JqLm5hbWUsIFwiIG11c3QgZGVmaW5lIG9uZSBvciBtb3JlIGZpZWxkcy5cIiksIGdldEFsbE5vZGVzKGlucHV0T2JqKSk7XG4gIH0gLy8gRW5zdXJlIHRoZSBhcmd1bWVudHMgYXJlIHZhbGlkXG5cblxuICBmb3IgKHZhciBfaTI4ID0gMDsgX2kyOCA8IGZpZWxkcy5sZW5ndGg7IF9pMjgrKykge1xuICAgIHZhciBmaWVsZCA9IGZpZWxkc1tfaTI4XTtcbiAgICAvLyBFbnN1cmUgdGhleSBhcmUgbmFtZWQgY29ycmVjdGx5LlxuICAgIHZhbGlkYXRlTmFtZShjb250ZXh0LCBmaWVsZCk7IC8vIEVuc3VyZSB0aGUgdHlwZSBpcyBhbiBpbnB1dCB0eXBlXG5cbiAgICBpZiAoIWlzSW5wdXRUeXBlKGZpZWxkLnR5cGUpKSB7XG4gICAgICB2YXIgX2ZpZWxkJGFzdE5vZGUyO1xuXG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFwiVGhlIHR5cGUgb2YgXCIuY29uY2F0KGlucHV0T2JqLm5hbWUsIFwiLlwiKS5jb25jYXQoZmllbGQubmFtZSwgXCIgbXVzdCBiZSBJbnB1dCBUeXBlIFwiKSArIFwiYnV0IGdvdDogXCIuY29uY2F0KGluc3BlY3QoZmllbGQudHlwZSksIFwiLlwiKSwgKF9maWVsZCRhc3ROb2RlMiA9IGZpZWxkLmFzdE5vZGUpID09PSBudWxsIHx8IF9maWVsZCRhc3ROb2RlMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2ZpZWxkJGFzdE5vZGUyLnR5cGUpO1xuICAgIH1cblxuICAgIGlmIChpc1JlcXVpcmVkSW5wdXRGaWVsZChmaWVsZCkgJiYgZmllbGQuZGVwcmVjYXRpb25SZWFzb24gIT0gbnVsbCkge1xuICAgICAgdmFyIF9maWVsZCRhc3ROb2RlMztcblxuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcIlJlcXVpcmVkIGlucHV0IGZpZWxkIFwiLmNvbmNhdChpbnB1dE9iai5uYW1lLCBcIi5cIikuY29uY2F0KGZpZWxkLm5hbWUsIFwiIGNhbm5vdCBiZSBkZXByZWNhdGVkLlwiKSwgW2dldERlcHJlY2F0ZWREaXJlY3RpdmVOb2RlKGZpZWxkLmFzdE5vZGUpLCAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoVE9ETyBuZWVkIHRvIHdyaXRlIGNvdmVyYWdlIHRlc3RzKVxuICAgICAgKF9maWVsZCRhc3ROb2RlMyA9IGZpZWxkLmFzdE5vZGUpID09PSBudWxsIHx8IF9maWVsZCRhc3ROb2RlMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2ZpZWxkJGFzdE5vZGUzLnR5cGVdKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlSW5wdXRPYmplY3RDaXJjdWxhclJlZnNWYWxpZGF0b3IoY29udGV4dCkge1xuICAvLyBNb2RpZmllZCBjb3B5IG9mIGFsZ29yaXRobSBmcm9tICdzcmMvdmFsaWRhdGlvbi9ydWxlcy9Ob0ZyYWdtZW50Q3ljbGVzLmpzJy5cbiAgLy8gVHJhY2tzIGFscmVhZHkgdmlzaXRlZCB0eXBlcyB0byBtYWludGFpbiBPKE4pIGFuZCB0byBlbnN1cmUgdGhhdCBjeWNsZXNcbiAgLy8gYXJlIG5vdCByZWR1bmRhbnRseSByZXBvcnRlZC5cbiAgdmFyIHZpc2l0ZWRUeXBlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7IC8vIEFycmF5IG9mIHR5cGVzIG5vZGVzIHVzZWQgdG8gcHJvZHVjZSBtZWFuaW5nZnVsIGVycm9yc1xuXG4gIHZhciBmaWVsZFBhdGggPSBbXTsgLy8gUG9zaXRpb24gaW4gdGhlIHR5cGUgcGF0aFxuXG4gIHZhciBmaWVsZFBhdGhJbmRleEJ5VHlwZU5hbWUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gZGV0ZWN0Q3ljbGVSZWN1cnNpdmU7IC8vIFRoaXMgZG9lcyBhIHN0cmFpZ2h0LWZvcndhcmQgREZTIHRvIGZpbmQgY3ljbGVzLlxuICAvLyBJdCBkb2VzIG5vdCB0ZXJtaW5hdGUgd2hlbiBhIGN5Y2xlIHdhcyBmb3VuZCBidXQgY29udGludWVzIHRvIGV4cGxvcmVcbiAgLy8gdGhlIGdyYXBoIHRvIGZpbmQgYWxsIHBvc3NpYmxlIGN5Y2xlcy5cblxuICBmdW5jdGlvbiBkZXRlY3RDeWNsZVJlY3Vyc2l2ZShpbnB1dE9iaikge1xuICAgIGlmICh2aXNpdGVkVHlwZXNbaW5wdXRPYmoubmFtZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2aXNpdGVkVHlwZXNbaW5wdXRPYmoubmFtZV0gPSB0cnVlO1xuICAgIGZpZWxkUGF0aEluZGV4QnlUeXBlTmFtZVtpbnB1dE9iai5uYW1lXSA9IGZpZWxkUGF0aC5sZW5ndGg7XG4gICAgdmFyIGZpZWxkcyA9IG9iamVjdFZhbHVlcyhpbnB1dE9iai5nZXRGaWVsZHMoKSk7XG5cbiAgICBmb3IgKHZhciBfaTMwID0gMDsgX2kzMCA8IGZpZWxkcy5sZW5ndGg7IF9pMzArKykge1xuICAgICAgdmFyIGZpZWxkID0gZmllbGRzW19pMzBdO1xuXG4gICAgICBpZiAoaXNOb25OdWxsVHlwZShmaWVsZC50eXBlKSAmJiBpc0lucHV0T2JqZWN0VHlwZShmaWVsZC50eXBlLm9mVHlwZSkpIHtcbiAgICAgICAgdmFyIGZpZWxkVHlwZSA9IGZpZWxkLnR5cGUub2ZUeXBlO1xuICAgICAgICB2YXIgY3ljbGVJbmRleCA9IGZpZWxkUGF0aEluZGV4QnlUeXBlTmFtZVtmaWVsZFR5cGUubmFtZV07XG4gICAgICAgIGZpZWxkUGF0aC5wdXNoKGZpZWxkKTtcblxuICAgICAgICBpZiAoY3ljbGVJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZGV0ZWN0Q3ljbGVSZWN1cnNpdmUoZmllbGRUeXBlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgY3ljbGVQYXRoID0gZmllbGRQYXRoLnNsaWNlKGN5Y2xlSW5kZXgpO1xuICAgICAgICAgIHZhciBwYXRoU3RyID0gY3ljbGVQYXRoLm1hcChmdW5jdGlvbiAoZmllbGRPYmopIHtcbiAgICAgICAgICAgIHJldHVybiBmaWVsZE9iai5uYW1lO1xuICAgICAgICAgIH0pLmpvaW4oJy4nKTtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFwiQ2Fubm90IHJlZmVyZW5jZSBJbnB1dCBPYmplY3QgXFxcIlwiLmNvbmNhdChmaWVsZFR5cGUubmFtZSwgXCJcXFwiIHdpdGhpbiBpdHNlbGYgdGhyb3VnaCBhIHNlcmllcyBvZiBub24tbnVsbCBmaWVsZHM6IFxcXCJcIikuY29uY2F0KHBhdGhTdHIsIFwiXFxcIi5cIiksIGN5Y2xlUGF0aC5tYXAoZnVuY3Rpb24gKGZpZWxkT2JqKSB7XG4gICAgICAgICAgICByZXR1cm4gZmllbGRPYmouYXN0Tm9kZTtcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBmaWVsZFBhdGgucG9wKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZmllbGRQYXRoSW5kZXhCeVR5cGVOYW1lW2lucHV0T2JqLm5hbWVdID0gdW5kZWZpbmVkO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEFsbE5vZGVzKG9iamVjdCkge1xuICB2YXIgYXN0Tm9kZSA9IG9iamVjdC5hc3ROb2RlLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXMgPSBvYmplY3QuZXh0ZW5zaW9uQVNUTm9kZXM7XG4gIHJldHVybiBhc3ROb2RlID8gZXh0ZW5zaW9uQVNUTm9kZXMgPyBbYXN0Tm9kZV0uY29uY2F0KGV4dGVuc2lvbkFTVE5vZGVzKSA6IFthc3ROb2RlXSA6IGV4dGVuc2lvbkFTVE5vZGVzICE9PSBudWxsICYmIGV4dGVuc2lvbkFTVE5vZGVzICE9PSB2b2lkIDAgPyBleHRlbnNpb25BU1ROb2RlcyA6IFtdO1xufVxuXG5mdW5jdGlvbiBnZXRBbGxTdWJOb2RlcyhvYmplY3QsIGdldHRlcikge1xuICB2YXIgc3ViTm9kZXMgPSBbXTtcblxuICBmb3IgKHZhciBfaTMyID0gMCwgX2dldEFsbE5vZGVzMiA9IGdldEFsbE5vZGVzKG9iamVjdCk7IF9pMzIgPCBfZ2V0QWxsTm9kZXMyLmxlbmd0aDsgX2kzMisrKSB7XG4gICAgdmFyIF9nZXR0ZXI7XG5cbiAgICB2YXIgbm9kZSA9IF9nZXRBbGxOb2RlczJbX2kzMl07XG4gICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQgKFNlZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDMnKVxuICAgIHN1Yk5vZGVzID0gc3ViTm9kZXMuY29uY2F0KChfZ2V0dGVyID0gZ2V0dGVyKG5vZGUpKSAhPT0gbnVsbCAmJiBfZ2V0dGVyICE9PSB2b2lkIDAgPyBfZ2V0dGVyIDogW10pO1xuICB9XG5cbiAgcmV0dXJuIHN1Yk5vZGVzO1xufVxuXG5mdW5jdGlvbiBnZXRBbGxJbXBsZW1lbnRzSW50ZXJmYWNlTm9kZXModHlwZSwgaWZhY2UpIHtcbiAgcmV0dXJuIGdldEFsbFN1Yk5vZGVzKHR5cGUsIGZ1bmN0aW9uICh0eXBlTm9kZSkge1xuICAgIHJldHVybiB0eXBlTm9kZS5pbnRlcmZhY2VzO1xuICB9KS5maWx0ZXIoZnVuY3Rpb24gKGlmYWNlTm9kZSkge1xuICAgIHJldHVybiBpZmFjZU5vZGUubmFtZS52YWx1ZSA9PT0gaWZhY2UubmFtZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFVuaW9uTWVtYmVyVHlwZU5vZGVzKHVuaW9uLCB0eXBlTmFtZSkge1xuICByZXR1cm4gZ2V0QWxsU3ViTm9kZXModW5pb24sIGZ1bmN0aW9uICh1bmlvbk5vZGUpIHtcbiAgICByZXR1cm4gdW5pb25Ob2RlLnR5cGVzO1xuICB9KS5maWx0ZXIoZnVuY3Rpb24gKHR5cGVOb2RlKSB7XG4gICAgcmV0dXJuIHR5cGVOb2RlLm5hbWUudmFsdWUgPT09IHR5cGVOYW1lO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0RGVwcmVjYXRlZERpcmVjdGl2ZU5vZGUoZGVmaW5pdGlvbk5vZGUpIHtcbiAgdmFyIF9kZWZpbml0aW9uTm9kZSRkaXJlYztcblxuICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwMycpXG4gIHJldHVybiBkZWZpbml0aW9uTm9kZSA9PT0gbnVsbCB8fCBkZWZpbml0aW9uTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZpbml0aW9uTm9kZSRkaXJlYyA9IGRlZmluaXRpb25Ob2RlLmRpcmVjdGl2ZXMpID09PSBudWxsIHx8IF9kZWZpbml0aW9uTm9kZSRkaXJlYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmluaXRpb25Ob2RlJGRpcmVjLmZpbmQoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5uYW1lLnZhbHVlID09PSBHcmFwaFFMRGVwcmVjYXRlZERpcmVjdGl2ZS5uYW1lO1xuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/type/validate.mjs\n");
1077
1078/***/ }),
1079
1080/***/ "../../../node_modules/graphql/utilities/TypeInfo.mjs":
1081/*!***************************************************************************************!*\
1082 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/TypeInfo.mjs ***!
1083 \***************************************************************************************/
1084/*! exports provided: TypeInfo, visitWithTypeInfo */
1085/***/ (function(module, __webpack_exports__, __webpack_require__) {
1086
1087"use strict";
1088eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TypeInfo\", function() { return TypeInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"visitWithTypeInfo\", function() { return visitWithTypeInfo; });\n/* harmony import */ var _polyfills_find_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/find.mjs */ \"../../../node_modules/graphql/polyfills/find.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_ast_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _language_visitor_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../language/visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n\n\n\n\n\n\n\n/**\n * TypeInfo is a utility class which, given a GraphQL schema, can keep track\n * of the current field and type definitions at any point in a GraphQL document\n * AST during a recursive descent by calling `enter(node)` and `leave(node)`.\n */\n\nvar TypeInfo = /*#__PURE__*/function () {\n function TypeInfo(schema, // NOTE: this experimental optional second parameter is only needed in order\n // to support non-spec-compliant code bases. You should never need to use it.\n // It may disappear in the future.\n getFieldDefFn, // Initial type may be provided in rare cases to facilitate traversals\n // beginning somewhere other than documents.\n initialType) {\n this._schema = schema;\n this._typeStack = [];\n this._parentTypeStack = [];\n this._inputTypeStack = [];\n this._fieldDefStack = [];\n this._defaultValueStack = [];\n this._directive = null;\n this._argument = null;\n this._enumValue = null;\n this._getFieldDef = getFieldDefFn !== null && getFieldDefFn !== void 0 ? getFieldDefFn : getFieldDef;\n\n if (initialType) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInputType\"])(initialType)) {\n this._inputTypeStack.push(initialType);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isCompositeType\"])(initialType)) {\n this._parentTypeStack.push(initialType);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isOutputType\"])(initialType)) {\n this._typeStack.push(initialType);\n }\n }\n }\n\n var _proto = TypeInfo.prototype;\n\n _proto.getType = function getType() {\n if (this._typeStack.length > 0) {\n return this._typeStack[this._typeStack.length - 1];\n }\n };\n\n _proto.getParentType = function getParentType() {\n if (this._parentTypeStack.length > 0) {\n return this._parentTypeStack[this._parentTypeStack.length - 1];\n }\n };\n\n _proto.getInputType = function getInputType() {\n if (this._inputTypeStack.length > 0) {\n return this._inputTypeStack[this._inputTypeStack.length - 1];\n }\n };\n\n _proto.getParentInputType = function getParentInputType() {\n if (this._inputTypeStack.length > 1) {\n return this._inputTypeStack[this._inputTypeStack.length - 2];\n }\n };\n\n _proto.getFieldDef = function getFieldDef() {\n if (this._fieldDefStack.length > 0) {\n return this._fieldDefStack[this._fieldDefStack.length - 1];\n }\n };\n\n _proto.getDefaultValue = function getDefaultValue() {\n if (this._defaultValueStack.length > 0) {\n return this._defaultValueStack[this._defaultValueStack.length - 1];\n }\n };\n\n _proto.getDirective = function getDirective() {\n return this._directive;\n };\n\n _proto.getArgument = function getArgument() {\n return this._argument;\n };\n\n _proto.getEnumValue = function getEnumValue() {\n return this._enumValue;\n };\n\n _proto.enter = function enter(node) {\n var schema = this._schema; // Note: many of the types below are explicitly typed as \"mixed\" to drop\n // any assumptions of a valid schema to ensure runtime types are properly\n // checked before continuing since TypeInfo is used as part of validation\n // which occurs before guarantees of schema and document validity.\n\n switch (node.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SELECTION_SET:\n {\n var namedType = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"getNamedType\"])(this.getType());\n\n this._parentTypeStack.push(Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isCompositeType\"])(namedType) ? namedType : undefined);\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FIELD:\n {\n var parentType = this.getParentType();\n var fieldDef;\n var fieldType;\n\n if (parentType) {\n fieldDef = this._getFieldDef(schema, parentType, node);\n\n if (fieldDef) {\n fieldType = fieldDef.type;\n }\n }\n\n this._fieldDefStack.push(fieldDef);\n\n this._typeStack.push(Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isOutputType\"])(fieldType) ? fieldType : undefined);\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].DIRECTIVE:\n this._directive = schema.getDirective(node.name.value);\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OPERATION_DEFINITION:\n {\n var type;\n\n switch (node.operation) {\n case 'query':\n type = schema.getQueryType();\n break;\n\n case 'mutation':\n type = schema.getMutationType();\n break;\n\n case 'subscription':\n type = schema.getSubscriptionType();\n break;\n }\n\n this._typeStack.push(Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectType\"])(type) ? type : undefined);\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].INLINE_FRAGMENT:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FRAGMENT_DEFINITION:\n {\n var typeConditionAST = node.typeCondition;\n var outputType = typeConditionAST ? Object(_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_6__[\"typeFromAST\"])(schema, typeConditionAST) : Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"getNamedType\"])(this.getType());\n\n this._typeStack.push(Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isOutputType\"])(outputType) ? outputType : undefined);\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].VARIABLE_DEFINITION:\n {\n var inputType = Object(_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_6__[\"typeFromAST\"])(schema, node.type);\n\n this._inputTypeStack.push(Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInputType\"])(inputType) ? inputType : undefined);\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].ARGUMENT:\n {\n var _this$getDirective;\n\n var argDef;\n var argType;\n var fieldOrDirective = (_this$getDirective = this.getDirective()) !== null && _this$getDirective !== void 0 ? _this$getDirective : this.getFieldDef();\n\n if (fieldOrDirective) {\n argDef = Object(_polyfills_find_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(fieldOrDirective.args, function (arg) {\n return arg.name === node.name.value;\n });\n\n if (argDef) {\n argType = argDef.type;\n }\n }\n\n this._argument = argDef;\n\n this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);\n\n this._inputTypeStack.push(Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInputType\"])(argType) ? argType : undefined);\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].LIST:\n {\n var listType = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"getNullableType\"])(this.getInputType());\n var itemType = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isListType\"])(listType) ? listType.ofType : listType; // List positions never have a default value.\n\n this._defaultValueStack.push(undefined);\n\n this._inputTypeStack.push(Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInputType\"])(itemType) ? itemType : undefined);\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OBJECT_FIELD:\n {\n var objectType = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"getNamedType\"])(this.getInputType());\n var inputFieldType;\n var inputField;\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInputObjectType\"])(objectType)) {\n inputField = objectType.getFields()[node.name.value];\n\n if (inputField) {\n inputFieldType = inputField.type;\n }\n }\n\n this._defaultValueStack.push(inputField ? inputField.defaultValue : undefined);\n\n this._inputTypeStack.push(Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInputType\"])(inputFieldType) ? inputFieldType : undefined);\n\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].ENUM:\n {\n var enumType = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"getNamedType\"])(this.getInputType());\n var enumValue;\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isEnumType\"])(enumType)) {\n enumValue = enumType.getValue(node.value);\n }\n\n this._enumValue = enumValue;\n break;\n }\n }\n };\n\n _proto.leave = function leave(node) {\n switch (node.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SELECTION_SET:\n this._parentTypeStack.pop();\n\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FIELD:\n this._fieldDefStack.pop();\n\n this._typeStack.pop();\n\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].DIRECTIVE:\n this._directive = null;\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OPERATION_DEFINITION:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].INLINE_FRAGMENT:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].FRAGMENT_DEFINITION:\n this._typeStack.pop();\n\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].VARIABLE_DEFINITION:\n this._inputTypeStack.pop();\n\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].ARGUMENT:\n this._argument = null;\n\n this._defaultValueStack.pop();\n\n this._inputTypeStack.pop();\n\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].LIST:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OBJECT_FIELD:\n this._defaultValueStack.pop();\n\n this._inputTypeStack.pop();\n\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].ENUM:\n this._enumValue = null;\n break;\n }\n };\n\n return TypeInfo;\n}();\n/**\n * Not exactly the same as the executor's definition of getFieldDef, in this\n * statically evaluated environment we do not always have an Object type,\n * and need to handle Interface and Union types.\n */\n\nfunction getFieldDef(schema, parentType, fieldNode) {\n var name = fieldNode.name.value;\n\n if (name === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__[\"SchemaMetaFieldDef\"].name && schema.getQueryType() === parentType) {\n return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__[\"SchemaMetaFieldDef\"];\n }\n\n if (name === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__[\"TypeMetaFieldDef\"].name && schema.getQueryType() === parentType) {\n return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__[\"TypeMetaFieldDef\"];\n }\n\n if (name === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__[\"TypeNameMetaFieldDef\"].name && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isCompositeType\"])(parentType)) {\n return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__[\"TypeNameMetaFieldDef\"];\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectType\"])(parentType) || Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInterfaceType\"])(parentType)) {\n return parentType.getFields()[name];\n }\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\n\nfunction visitWithTypeInfo(typeInfo, visitor) {\n return {\n enter: function enter(node) {\n typeInfo.enter(node);\n var fn = Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getVisitFn\"])(visitor, node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitor, arguments);\n\n if (result !== undefined) {\n typeInfo.leave(node);\n\n if (Object(_language_ast_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isNode\"])(result)) {\n typeInfo.enter(result);\n }\n }\n\n return result;\n }\n },\n leave: function leave(node) {\n var fn = Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getVisitFn\"])(visitor, node.kind,\n /* isLeaving */\n true);\n var result;\n\n if (fn) {\n result = fn.apply(visitor, arguments);\n }\n\n typeInfo.leave(node);\n return result;\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL1R5cGVJbmZvLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9UeXBlSW5mby5tanM/MjhmZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZmluZCBmcm9tIFwiLi4vcG9seWZpbGxzL2ZpbmQubWpzXCI7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSBcIi4uL2xhbmd1YWdlL2tpbmRzLm1qc1wiO1xuaW1wb3J0IHsgaXNOb2RlIH0gZnJvbSBcIi4uL2xhbmd1YWdlL2FzdC5tanNcIjtcbmltcG9ydCB7IGdldFZpc2l0Rm4gfSBmcm9tIFwiLi4vbGFuZ3VhZ2UvdmlzaXRvci5tanNcIjtcbmltcG9ydCB7IGlzT2JqZWN0VHlwZSwgaXNJbnRlcmZhY2VUeXBlLCBpc0VudW1UeXBlLCBpc0lucHV0T2JqZWN0VHlwZSwgaXNMaXN0VHlwZSwgaXNDb21wb3NpdGVUeXBlLCBpc0lucHV0VHlwZSwgaXNPdXRwdXRUeXBlLCBnZXROdWxsYWJsZVR5cGUsIGdldE5hbWVkVHlwZSB9IGZyb20gXCIuLi90eXBlL2RlZmluaXRpb24ubWpzXCI7XG5pbXBvcnQgeyBTY2hlbWFNZXRhRmllbGREZWYsIFR5cGVNZXRhRmllbGREZWYsIFR5cGVOYW1lTWV0YUZpZWxkRGVmIH0gZnJvbSBcIi4uL3R5cGUvaW50cm9zcGVjdGlvbi5tanNcIjtcbmltcG9ydCB7IHR5cGVGcm9tQVNUIH0gZnJvbSBcIi4vdHlwZUZyb21BU1QubWpzXCI7XG4vKipcbiAqIFR5cGVJbmZvIGlzIGEgdXRpbGl0eSBjbGFzcyB3aGljaCwgZ2l2ZW4gYSBHcmFwaFFMIHNjaGVtYSwgY2FuIGtlZXAgdHJhY2tcbiAqIG9mIHRoZSBjdXJyZW50IGZpZWxkIGFuZCB0eXBlIGRlZmluaXRpb25zIGF0IGFueSBwb2ludCBpbiBhIEdyYXBoUUwgZG9jdW1lbnRcbiAqIEFTVCBkdXJpbmcgYSByZWN1cnNpdmUgZGVzY2VudCBieSBjYWxsaW5nIGBlbnRlcihub2RlKWAgYW5kIGBsZWF2ZShub2RlKWAuXG4gKi9cblxuZXhwb3J0IHZhciBUeXBlSW5mbyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFR5cGVJbmZvKHNjaGVtYSwgLy8gTk9URTogdGhpcyBleHBlcmltZW50YWwgb3B0aW9uYWwgc2Vjb25kIHBhcmFtZXRlciBpcyBvbmx5IG5lZWRlZCBpbiBvcmRlclxuICAvLyB0byBzdXBwb3J0IG5vbi1zcGVjLWNvbXBsaWFudCBjb2RlIGJhc2VzLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gdXNlIGl0LlxuICAvLyBJdCBtYXkgZGlzYXBwZWFyIGluIHRoZSBmdXR1cmUuXG4gIGdldEZpZWxkRGVmRm4sIC8vIEluaXRpYWwgdHlwZSBtYXkgYmUgcHJvdmlkZWQgaW4gcmFyZSBjYXNlcyB0byBmYWNpbGl0YXRlIHRyYXZlcnNhbHNcbiAgLy8gYmVnaW5uaW5nIHNvbWV3aGVyZSBvdGhlciB0aGFuIGRvY3VtZW50cy5cbiAgaW5pdGlhbFR5cGUpIHtcbiAgICB0aGlzLl9zY2hlbWEgPSBzY2hlbWE7XG4gICAgdGhpcy5fdHlwZVN0YWNrID0gW107XG4gICAgdGhpcy5fcGFyZW50VHlwZVN0YWNrID0gW107XG4gICAgdGhpcy5faW5wdXRUeXBlU3RhY2sgPSBbXTtcbiAgICB0aGlzLl9maWVsZERlZlN0YWNrID0gW107XG4gICAgdGhpcy5fZGVmYXVsdFZhbHVlU3RhY2sgPSBbXTtcbiAgICB0aGlzLl9kaXJlY3RpdmUgPSBudWxsO1xuICAgIHRoaXMuX2FyZ3VtZW50ID0gbnVsbDtcbiAgICB0aGlzLl9lbnVtVmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX2dldEZpZWxkRGVmID0gZ2V0RmllbGREZWZGbiAhPT0gbnVsbCAmJiBnZXRGaWVsZERlZkZuICE9PSB2b2lkIDAgPyBnZXRGaWVsZERlZkZuIDogZ2V0RmllbGREZWY7XG5cbiAgICBpZiAoaW5pdGlhbFR5cGUpIHtcbiAgICAgIGlmIChpc0lucHV0VHlwZShpbml0aWFsVHlwZSkpIHtcbiAgICAgICAgdGhpcy5faW5wdXRUeXBlU3RhY2sucHVzaChpbml0aWFsVHlwZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0NvbXBvc2l0ZVR5cGUoaW5pdGlhbFR5cGUpKSB7XG4gICAgICAgIHRoaXMuX3BhcmVudFR5cGVTdGFjay5wdXNoKGluaXRpYWxUeXBlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzT3V0cHV0VHlwZShpbml0aWFsVHlwZSkpIHtcbiAgICAgICAgdGhpcy5fdHlwZVN0YWNrLnB1c2goaW5pdGlhbFR5cGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBUeXBlSW5mby5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmdldFR5cGUgPSBmdW5jdGlvbiBnZXRUeXBlKCkge1xuICAgIGlmICh0aGlzLl90eXBlU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3R5cGVTdGFja1t0aGlzLl90eXBlU3RhY2subGVuZ3RoIC0gMV07XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5nZXRQYXJlbnRUeXBlID0gZnVuY3Rpb24gZ2V0UGFyZW50VHlwZSgpIHtcbiAgICBpZiAodGhpcy5fcGFyZW50VHlwZVN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRUeXBlU3RhY2tbdGhpcy5fcGFyZW50VHlwZVN0YWNrLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8uZ2V0SW5wdXRUeXBlID0gZnVuY3Rpb24gZ2V0SW5wdXRUeXBlKCkge1xuICAgIGlmICh0aGlzLl9pbnB1dFR5cGVTdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5wdXRUeXBlU3RhY2tbdGhpcy5faW5wdXRUeXBlU3RhY2subGVuZ3RoIC0gMV07XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5nZXRQYXJlbnRJbnB1dFR5cGUgPSBmdW5jdGlvbiBnZXRQYXJlbnRJbnB1dFR5cGUoKSB7XG4gICAgaWYgKHRoaXMuX2lucHV0VHlwZVN0YWNrLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnB1dFR5cGVTdGFja1t0aGlzLl9pbnB1dFR5cGVTdGFjay5sZW5ndGggLSAyXTtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvLmdldEZpZWxkRGVmID0gZnVuY3Rpb24gZ2V0RmllbGREZWYoKSB7XG4gICAgaWYgKHRoaXMuX2ZpZWxkRGVmU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkRGVmU3RhY2tbdGhpcy5fZmllbGREZWZTdGFjay5sZW5ndGggLSAxXTtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvLmdldERlZmF1bHRWYWx1ZSA9IGZ1bmN0aW9uIGdldERlZmF1bHRWYWx1ZSgpIHtcbiAgICBpZiAodGhpcy5fZGVmYXVsdFZhbHVlU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWYWx1ZVN0YWNrW3RoaXMuX2RlZmF1bHRWYWx1ZVN0YWNrLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8uZ2V0RGlyZWN0aXZlID0gZnVuY3Rpb24gZ2V0RGlyZWN0aXZlKCkge1xuICAgIHJldHVybiB0aGlzLl9kaXJlY3RpdmU7XG4gIH07XG5cbiAgX3Byb3RvLmdldEFyZ3VtZW50ID0gZnVuY3Rpb24gZ2V0QXJndW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FyZ3VtZW50O1xuICB9O1xuXG4gIF9wcm90by5nZXRFbnVtVmFsdWUgPSBmdW5jdGlvbiBnZXRFbnVtVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VudW1WYWx1ZTtcbiAgfTtcblxuICBfcHJvdG8uZW50ZXIgPSBmdW5jdGlvbiBlbnRlcihub2RlKSB7XG4gICAgdmFyIHNjaGVtYSA9IHRoaXMuX3NjaGVtYTsgLy8gTm90ZTogbWFueSBvZiB0aGUgdHlwZXMgYmVsb3cgYXJlIGV4cGxpY2l0bHkgdHlwZWQgYXMgXCJtaXhlZFwiIHRvIGRyb3BcbiAgICAvLyBhbnkgYXNzdW1wdGlvbnMgb2YgYSB2YWxpZCBzY2hlbWEgdG8gZW5zdXJlIHJ1bnRpbWUgdHlwZXMgYXJlIHByb3Blcmx5XG4gICAgLy8gY2hlY2tlZCBiZWZvcmUgY29udGludWluZyBzaW5jZSBUeXBlSW5mbyBpcyB1c2VkIGFzIHBhcnQgb2YgdmFsaWRhdGlvblxuICAgIC8vIHdoaWNoIG9jY3VycyBiZWZvcmUgZ3VhcmFudGVlcyBvZiBzY2hlbWEgYW5kIGRvY3VtZW50IHZhbGlkaXR5LlxuXG4gICAgc3dpdGNoIChub2RlLmtpbmQpIHtcbiAgICAgIGNhc2UgS2luZC5TRUxFQ1RJT05fU0VUOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIG5hbWVkVHlwZSA9IGdldE5hbWVkVHlwZSh0aGlzLmdldFR5cGUoKSk7XG5cbiAgICAgICAgICB0aGlzLl9wYXJlbnRUeXBlU3RhY2sucHVzaChpc0NvbXBvc2l0ZVR5cGUobmFtZWRUeXBlKSA/IG5hbWVkVHlwZSA6IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuRklFTEQ6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgcGFyZW50VHlwZSA9IHRoaXMuZ2V0UGFyZW50VHlwZSgpO1xuICAgICAgICAgIHZhciBmaWVsZERlZjtcbiAgICAgICAgICB2YXIgZmllbGRUeXBlO1xuXG4gICAgICAgICAgaWYgKHBhcmVudFR5cGUpIHtcbiAgICAgICAgICAgIGZpZWxkRGVmID0gdGhpcy5fZ2V0RmllbGREZWYoc2NoZW1hLCBwYXJlbnRUeXBlLCBub2RlKTtcblxuICAgICAgICAgICAgaWYgKGZpZWxkRGVmKSB7XG4gICAgICAgICAgICAgIGZpZWxkVHlwZSA9IGZpZWxkRGVmLnR5cGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fZmllbGREZWZTdGFjay5wdXNoKGZpZWxkRGVmKTtcblxuICAgICAgICAgIHRoaXMuX3R5cGVTdGFjay5wdXNoKGlzT3V0cHV0VHlwZShmaWVsZFR5cGUpID8gZmllbGRUeXBlIDogdW5kZWZpbmVkKTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgS2luZC5ESVJFQ1RJVkU6XG4gICAgICAgIHRoaXMuX2RpcmVjdGl2ZSA9IHNjaGVtYS5nZXREaXJlY3RpdmUobm9kZS5uYW1lLnZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgS2luZC5PUEVSQVRJT05fREVGSU5JVElPTjpcbiAgICAgICAge1xuICAgICAgICAgIHZhciB0eXBlO1xuXG4gICAgICAgICAgc3dpdGNoIChub2RlLm9wZXJhdGlvbikge1xuICAgICAgICAgICAgY2FzZSAncXVlcnknOlxuICAgICAgICAgICAgICB0eXBlID0gc2NoZW1hLmdldFF1ZXJ5VHlwZSgpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnbXV0YXRpb24nOlxuICAgICAgICAgICAgICB0eXBlID0gc2NoZW1hLmdldE11dGF0aW9uVHlwZSgpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnc3Vic2NyaXB0aW9uJzpcbiAgICAgICAgICAgICAgdHlwZSA9IHNjaGVtYS5nZXRTdWJzY3JpcHRpb25UeXBlKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX3R5cGVTdGFjay5wdXNoKGlzT2JqZWN0VHlwZSh0eXBlKSA/IHR5cGUgOiB1bmRlZmluZWQpO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBLaW5kLklOTElORV9GUkFHTUVOVDpcbiAgICAgIGNhc2UgS2luZC5GUkFHTUVOVF9ERUZJTklUSU9OOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIHR5cGVDb25kaXRpb25BU1QgPSBub2RlLnR5cGVDb25kaXRpb247XG4gICAgICAgICAgdmFyIG91dHB1dFR5cGUgPSB0eXBlQ29uZGl0aW9uQVNUID8gdHlwZUZyb21BU1Qoc2NoZW1hLCB0eXBlQ29uZGl0aW9uQVNUKSA6IGdldE5hbWVkVHlwZSh0aGlzLmdldFR5cGUoKSk7XG5cbiAgICAgICAgICB0aGlzLl90eXBlU3RhY2sucHVzaChpc091dHB1dFR5cGUob3V0cHV0VHlwZSkgPyBvdXRwdXRUeXBlIDogdW5kZWZpbmVkKTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgS2luZC5WQVJJQUJMRV9ERUZJTklUSU9OOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGlucHV0VHlwZSA9IHR5cGVGcm9tQVNUKHNjaGVtYSwgbm9kZS50eXBlKTtcblxuICAgICAgICAgIHRoaXMuX2lucHV0VHlwZVN0YWNrLnB1c2goaXNJbnB1dFR5cGUoaW5wdXRUeXBlKSA/IGlucHV0VHlwZSA6IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuQVJHVU1FTlQ6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgX3RoaXMkZ2V0RGlyZWN0aXZlO1xuXG4gICAgICAgICAgdmFyIGFyZ0RlZjtcbiAgICAgICAgICB2YXIgYXJnVHlwZTtcbiAgICAgICAgICB2YXIgZmllbGRPckRpcmVjdGl2ZSA9IChfdGhpcyRnZXREaXJlY3RpdmUgPSB0aGlzLmdldERpcmVjdGl2ZSgpKSAhPT0gbnVsbCAmJiBfdGhpcyRnZXREaXJlY3RpdmUgIT09IHZvaWQgMCA/IF90aGlzJGdldERpcmVjdGl2ZSA6IHRoaXMuZ2V0RmllbGREZWYoKTtcblxuICAgICAgICAgIGlmIChmaWVsZE9yRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICBhcmdEZWYgPSBmaW5kKGZpZWxkT3JEaXJlY3RpdmUuYXJncywgZnVuY3Rpb24gKGFyZykge1xuICAgICAgICAgICAgICByZXR1cm4gYXJnLm5hbWUgPT09IG5vZGUubmFtZS52YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoYXJnRGVmKSB7XG4gICAgICAgICAgICAgIGFyZ1R5cGUgPSBhcmdEZWYudHlwZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9hcmd1bWVudCA9IGFyZ0RlZjtcblxuICAgICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZVN0YWNrLnB1c2goYXJnRGVmID8gYXJnRGVmLmRlZmF1bHRWYWx1ZSA6IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICB0aGlzLl9pbnB1dFR5cGVTdGFjay5wdXNoKGlzSW5wdXRUeXBlKGFyZ1R5cGUpID8gYXJnVHlwZSA6IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuTElTVDpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBsaXN0VHlwZSA9IGdldE51bGxhYmxlVHlwZSh0aGlzLmdldElucHV0VHlwZSgpKTtcbiAgICAgICAgICB2YXIgaXRlbVR5cGUgPSBpc0xpc3RUeXBlKGxpc3RUeXBlKSA/IGxpc3RUeXBlLm9mVHlwZSA6IGxpc3RUeXBlOyAvLyBMaXN0IHBvc2l0aW9ucyBuZXZlciBoYXZlIGEgZGVmYXVsdCB2YWx1ZS5cblxuICAgICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZVN0YWNrLnB1c2godW5kZWZpbmVkKTtcblxuICAgICAgICAgIHRoaXMuX2lucHV0VHlwZVN0YWNrLnB1c2goaXNJbnB1dFR5cGUoaXRlbVR5cGUpID8gaXRlbVR5cGUgOiB1bmRlZmluZWQpO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBLaW5kLk9CSkVDVF9GSUVMRDpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBvYmplY3RUeXBlID0gZ2V0TmFtZWRUeXBlKHRoaXMuZ2V0SW5wdXRUeXBlKCkpO1xuICAgICAgICAgIHZhciBpbnB1dEZpZWxkVHlwZTtcbiAgICAgICAgICB2YXIgaW5wdXRGaWVsZDtcblxuICAgICAgICAgIGlmIChpc0lucHV0T2JqZWN0VHlwZShvYmplY3RUeXBlKSkge1xuICAgICAgICAgICAgaW5wdXRGaWVsZCA9IG9iamVjdFR5cGUuZ2V0RmllbGRzKClbbm9kZS5uYW1lLnZhbHVlXTtcblxuICAgICAgICAgICAgaWYgKGlucHV0RmllbGQpIHtcbiAgICAgICAgICAgICAgaW5wdXRGaWVsZFR5cGUgPSBpbnB1dEZpZWxkLnR5cGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlU3RhY2sucHVzaChpbnB1dEZpZWxkID8gaW5wdXRGaWVsZC5kZWZhdWx0VmFsdWUgOiB1bmRlZmluZWQpO1xuXG4gICAgICAgICAgdGhpcy5faW5wdXRUeXBlU3RhY2sucHVzaChpc0lucHV0VHlwZShpbnB1dEZpZWxkVHlwZSkgPyBpbnB1dEZpZWxkVHlwZSA6IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuRU5VTTpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBlbnVtVHlwZSA9IGdldE5hbWVkVHlwZSh0aGlzLmdldElucHV0VHlwZSgpKTtcbiAgICAgICAgICB2YXIgZW51bVZhbHVlO1xuXG4gICAgICAgICAgaWYgKGlzRW51bVR5cGUoZW51bVR5cGUpKSB7XG4gICAgICAgICAgICBlbnVtVmFsdWUgPSBlbnVtVHlwZS5nZXRWYWx1ZShub2RlLnZhbHVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9lbnVtVmFsdWUgPSBlbnVtVmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvLmxlYXZlID0gZnVuY3Rpb24gbGVhdmUobm9kZSkge1xuICAgIHN3aXRjaCAobm9kZS5raW5kKSB7XG4gICAgICBjYXNlIEtpbmQuU0VMRUNUSU9OX1NFVDpcbiAgICAgICAgdGhpcy5fcGFyZW50VHlwZVN0YWNrLnBvcCgpO1xuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEtpbmQuRklFTEQ6XG4gICAgICAgIHRoaXMuX2ZpZWxkRGVmU3RhY2sucG9wKCk7XG5cbiAgICAgICAgdGhpcy5fdHlwZVN0YWNrLnBvcCgpO1xuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEtpbmQuRElSRUNUSVZFOlxuICAgICAgICB0aGlzLl9kaXJlY3RpdmUgPSBudWxsO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBLaW5kLk9QRVJBVElPTl9ERUZJTklUSU9OOlxuICAgICAgY2FzZSBLaW5kLklOTElORV9GUkFHTUVOVDpcbiAgICAgIGNhc2UgS2luZC5GUkFHTUVOVF9ERUZJTklUSU9OOlxuICAgICAgICB0aGlzLl90eXBlU3RhY2sucG9wKCk7XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgS2luZC5WQVJJQUJMRV9ERUZJTklUSU9OOlxuICAgICAgICB0aGlzLl9pbnB1dFR5cGVTdGFjay5wb3AoKTtcblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBLaW5kLkFSR1VNRU5UOlxuICAgICAgICB0aGlzLl9hcmd1bWVudCA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlU3RhY2sucG9wKCk7XG5cbiAgICAgICAgdGhpcy5faW5wdXRUeXBlU3RhY2sucG9wKCk7XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgS2luZC5MSVNUOlxuICAgICAgY2FzZSBLaW5kLk9CSkVDVF9GSUVMRDpcbiAgICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlU3RhY2sucG9wKCk7XG5cbiAgICAgICAgdGhpcy5faW5wdXRUeXBlU3RhY2sucG9wKCk7XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgS2luZC5FTlVNOlxuICAgICAgICB0aGlzLl9lbnVtVmFsdWUgPSBudWxsO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFR5cGVJbmZvO1xufSgpO1xuLyoqXG4gKiBOb3QgZXhhY3RseSB0aGUgc2FtZSBhcyB0aGUgZXhlY3V0b3IncyBkZWZpbml0aW9uIG9mIGdldEZpZWxkRGVmLCBpbiB0aGlzXG4gKiBzdGF0aWNhbGx5IGV2YWx1YXRlZCBlbnZpcm9ubWVudCB3ZSBkbyBub3QgYWx3YXlzIGhhdmUgYW4gT2JqZWN0IHR5cGUsXG4gKiBhbmQgbmVlZCB0byBoYW5kbGUgSW50ZXJmYWNlIGFuZCBVbmlvbiB0eXBlcy5cbiAqL1xuXG5mdW5jdGlvbiBnZXRGaWVsZERlZihzY2hlbWEsIHBhcmVudFR5cGUsIGZpZWxkTm9kZSkge1xuICB2YXIgbmFtZSA9IGZpZWxkTm9kZS5uYW1lLnZhbHVlO1xuXG4gIGlmIChuYW1lID09PSBTY2hlbWFNZXRhRmllbGREZWYubmFtZSAmJiBzY2hlbWEuZ2V0UXVlcnlUeXBlKCkgPT09IHBhcmVudFR5cGUpIHtcbiAgICByZXR1cm4gU2NoZW1hTWV0YUZpZWxkRGVmO1xuICB9XG5cbiAgaWYgKG5hbWUgPT09IFR5cGVNZXRhRmllbGREZWYubmFtZSAmJiBzY2hlbWEuZ2V0UXVlcnlUeXBlKCkgPT09IHBhcmVudFR5cGUpIHtcbiAgICByZXR1cm4gVHlwZU1ldGFGaWVsZERlZjtcbiAgfVxuXG4gIGlmIChuYW1lID09PSBUeXBlTmFtZU1ldGFGaWVsZERlZi5uYW1lICYmIGlzQ29tcG9zaXRlVHlwZShwYXJlbnRUeXBlKSkge1xuICAgIHJldHVybiBUeXBlTmFtZU1ldGFGaWVsZERlZjtcbiAgfVxuXG4gIGlmIChpc09iamVjdFR5cGUocGFyZW50VHlwZSkgfHwgaXNJbnRlcmZhY2VUeXBlKHBhcmVudFR5cGUpKSB7XG4gICAgcmV0dXJuIHBhcmVudFR5cGUuZ2V0RmllbGRzKClbbmFtZV07XG4gIH1cbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB2aXNpdG9yIGluc3RhbmNlIHdoaWNoIG1haW50YWlucyBhIHByb3ZpZGVkIFR5cGVJbmZvIGluc3RhbmNlXG4gKiBhbG9uZyB3aXRoIHZpc2l0aW5nIHZpc2l0b3IuXG4gKi9cblxuXG5leHBvcnQgZnVuY3Rpb24gdmlzaXRXaXRoVHlwZUluZm8odHlwZUluZm8sIHZpc2l0b3IpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnRlcjogZnVuY3Rpb24gZW50ZXIobm9kZSkge1xuICAgICAgdHlwZUluZm8uZW50ZXIobm9kZSk7XG4gICAgICB2YXIgZm4gPSBnZXRWaXNpdEZuKHZpc2l0b3IsIG5vZGUua2luZCxcbiAgICAgIC8qIGlzTGVhdmluZyAqL1xuICAgICAgZmFsc2UpO1xuXG4gICAgICBpZiAoZm4pIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGZuLmFwcGx5KHZpc2l0b3IsIGFyZ3VtZW50cyk7XG5cbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdHlwZUluZm8ubGVhdmUobm9kZSk7XG5cbiAgICAgICAgICBpZiAoaXNOb2RlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgIHR5cGVJbmZvLmVudGVyKHJlc3VsdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9LFxuICAgIGxlYXZlOiBmdW5jdGlvbiBsZWF2ZShub2RlKSB7XG4gICAgICB2YXIgZm4gPSBnZXRWaXNpdEZuKHZpc2l0b3IsIG5vZGUua2luZCxcbiAgICAgIC8qIGlzTGVhdmluZyAqL1xuICAgICAgdHJ1ZSk7XG4gICAgICB2YXIgcmVzdWx0O1xuXG4gICAgICBpZiAoZm4pIHtcbiAgICAgICAgcmVzdWx0ID0gZm4uYXBwbHkodmlzaXRvciwgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgdHlwZUluZm8ubGVhdmUobm9kZSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/TypeInfo.mjs\n");
1089
1090/***/ }),
1091
1092/***/ "../../../node_modules/graphql/utilities/assertValidName.mjs":
1093/*!**********************************************************************************************!*\
1094 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/assertValidName.mjs ***!
1095 \**********************************************************************************************/
1096/*! exports provided: assertValidName, isValidNameError */
1097/***/ (function(module, __webpack_exports__, __webpack_require__) {
1098
1099"use strict";
1100eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertValidName\", function() { return assertValidName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isValidNameError\", function() { return isValidNameError; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\nvar NAME_RX = /^[_a-zA-Z][_a-zA-Z0-9]*$/;\n/**\n * Upholds the spec rules about naming.\n */\n\nfunction assertValidName(name) {\n var error = isValidNameError(name);\n\n if (error) {\n throw error;\n }\n\n return name;\n}\n/**\n * Returns an Error if a name is invalid.\n */\n\nfunction isValidNameError(name) {\n typeof name === 'string' || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0, 'Expected name to be a string.');\n\n if (name.length > 1 && name[0] === '_' && name[1] === '_') {\n return new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\"Name \\\"\".concat(name, \"\\\" must not begin with \\\"__\\\", which is reserved by GraphQL introspection.\"));\n }\n\n if (!NAME_RX.test(name)) {\n return new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\"Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but \\\"\".concat(name, \"\\\" does not.\"));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2Fzc2VydFZhbGlkTmFtZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvYXNzZXJ0VmFsaWROYW1lLm1qcz83OWZhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZXZBc3NlcnQgZnJvbSBcIi4uL2pzdXRpbHMvZGV2QXNzZXJ0Lm1qc1wiO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanNcIjtcbnZhciBOQU1FX1JYID0gL15bX2EtekEtWl1bX2EtekEtWjAtOV0qJC87XG4vKipcbiAqIFVwaG9sZHMgdGhlIHNwZWMgcnVsZXMgYWJvdXQgbmFtaW5nLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRWYWxpZE5hbWUobmFtZSkge1xuICB2YXIgZXJyb3IgPSBpc1ZhbGlkTmFtZUVycm9yKG5hbWUpO1xuXG4gIGlmIChlcnJvcikge1xuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgcmV0dXJuIG5hbWU7XG59XG4vKipcbiAqIFJldHVybnMgYW4gRXJyb3IgaWYgYSBuYW1lIGlzIGludmFsaWQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWROYW1lRXJyb3IobmFtZSkge1xuICB0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycgfHwgZGV2QXNzZXJ0KDAsICdFeHBlY3RlZCBuYW1lIHRvIGJlIGEgc3RyaW5nLicpO1xuXG4gIGlmIChuYW1lLmxlbmd0aCA+IDEgJiYgbmFtZVswXSA9PT0gJ18nICYmIG5hbWVbMV0gPT09ICdfJykge1xuICAgIHJldHVybiBuZXcgR3JhcGhRTEVycm9yKFwiTmFtZSBcXFwiXCIuY29uY2F0KG5hbWUsIFwiXFxcIiBtdXN0IG5vdCBiZWdpbiB3aXRoIFxcXCJfX1xcXCIsIHdoaWNoIGlzIHJlc2VydmVkIGJ5IEdyYXBoUUwgaW50cm9zcGVjdGlvbi5cIikpO1xuICB9XG5cbiAgaWYgKCFOQU1FX1JYLnRlc3QobmFtZSkpIHtcbiAgICByZXR1cm4gbmV3IEdyYXBoUUxFcnJvcihcIk5hbWVzIG11c3QgbWF0Y2ggL15bX2EtekEtWl1bX2EtekEtWjAtOV0qJC8gYnV0IFxcXCJcIi5jb25jYXQobmFtZSwgXCJcXFwiIGRvZXMgbm90LlwiKSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/assertValidName.mjs\n");
1101
1102/***/ }),
1103
1104/***/ "../../../node_modules/graphql/utilities/astFromValue.mjs":
1105/*!*******************************************************************************************!*\
1106 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/astFromValue.mjs ***!
1107 \*******************************************************************************************/
1108/*! exports provided: astFromValue */
1109/***/ (function(module, __webpack_exports__, __webpack_require__) {
1110
1111"use strict";
1112eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"astFromValue\", function() { return astFromValue; });\n/* harmony import */ var _polyfills_isFinite_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/isFinite.mjs */ \"../../../node_modules/graphql/polyfills/isFinite.mjs\");\n/* harmony import */ var _polyfills_arrayFrom_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../polyfills/arrayFrom.mjs */ \"../../../node_modules/graphql/polyfills/arrayFrom.mjs\");\n/* harmony import */ var _polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../polyfills/objectValues.mjs */ \"../../../node_modules/graphql/polyfills/objectValues.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_isCollection_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../jsutils/isCollection.mjs */ \"../../../node_modules/graphql/jsutils/isCollection.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../type/scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n\n\n\n\n/**\n * Produces a GraphQL Value AST given a JavaScript object.\n * Function will match JavaScript/JSON values to GraphQL AST schema format\n * by using suggested GraphQLInputType. For example:\n *\n * astFromValue(\"value\", GraphQLString)\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * JavaScript values.\n *\n * | JSON Value | GraphQL Value |\n * | ------------- | -------------------- |\n * | Object | Input Object |\n * | Array | List |\n * | Boolean | Boolean |\n * | String | String / Enum Value |\n * | Number | Int / Float |\n * | Mixed | Enum Value |\n * | null | NullValue |\n *\n */\n\nfunction astFromValue(value, type) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_9__[\"isNonNullType\"])(type)) {\n var astValue = astFromValue(value, type.ofType);\n\n if ((astValue === null || astValue === void 0 ? void 0 : astValue.kind) === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_7__[\"Kind\"].NULL) {\n return null;\n }\n\n return astValue;\n } // only explicit null, not undefined, NaN\n\n\n if (value === null) {\n return {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_7__[\"Kind\"].NULL\n };\n } // undefined\n\n\n if (value === undefined) {\n return null;\n } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n // the value is not an array, convert the value using the list's item type.\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_9__[\"isListType\"])(type)) {\n var itemType = type.ofType;\n\n if (Object(_jsutils_isCollection_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(value)) {\n var valuesNodes = []; // Since we transpile for-of in loose mode it doesn't support iterators\n // and it's required to first convert iteratable into array\n\n for (var _i2 = 0, _arrayFrom2 = Object(_polyfills_arrayFrom_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value); _i2 < _arrayFrom2.length; _i2++) {\n var item = _arrayFrom2[_i2];\n var itemNode = astFromValue(item, itemType);\n\n if (itemNode != null) {\n valuesNodes.push(itemNode);\n }\n }\n\n return {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_7__[\"Kind\"].LIST,\n values: valuesNodes\n };\n }\n\n return astFromValue(value, itemType);\n } // Populate the fields of the input object by creating ASTs from each value\n // in the JavaScript object according to the fields in the input type.\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_9__[\"isInputObjectType\"])(type)) {\n if (!Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(value)) {\n return null;\n }\n\n var fieldNodes = [];\n\n for (var _i4 = 0, _objectValues2 = Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type.getFields()); _i4 < _objectValues2.length; _i4++) {\n var field = _objectValues2[_i4];\n var fieldValue = astFromValue(value[field.name], field.type);\n\n if (fieldValue) {\n fieldNodes.push({\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_7__[\"Kind\"].OBJECT_FIELD,\n name: {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_7__[\"Kind\"].NAME,\n value: field.name\n },\n value: fieldValue\n });\n }\n }\n\n return {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_7__[\"Kind\"].OBJECT,\n fields: fieldNodes\n };\n } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_9__[\"isLeafType\"])(type)) {\n // Since value is an internally represented value, it must be serialized\n // to an externally represented value before converting into an AST.\n var serialized = type.serialize(value);\n\n if (serialized == null) {\n return null;\n } // Others serialize based on their corresponding JavaScript scalar types.\n\n\n if (typeof serialized === 'boolean') {\n return {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_7__[\"Kind\"].BOOLEAN,\n value: serialized\n };\n } // JavaScript numbers can be Int or Float values.\n\n\n if (typeof serialized === 'number' && Object(_polyfills_isFinite_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(serialized)) {\n var stringNum = String(serialized);\n return integerStringRegExp.test(stringNum) ? {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_7__[\"Kind\"].INT,\n value: stringNum\n } : {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_7__[\"Kind\"].FLOAT,\n value: stringNum\n };\n }\n\n if (typeof serialized === 'string') {\n // Enum types use Enum literals.\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_9__[\"isEnumType\"])(type)) {\n return {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_7__[\"Kind\"].ENUM,\n value: serialized\n };\n } // ID types can use Int literals.\n\n\n if (type === _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_8__[\"GraphQLID\"] && integerStringRegExp.test(serialized)) {\n return {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_7__[\"Kind\"].INT,\n value: serialized\n };\n }\n\n return {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_7__[\"Kind\"].STRING,\n value: serialized\n };\n }\n\n throw new TypeError(\"Cannot convert value to AST: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(serialized), \".\"));\n } // istanbul ignore next (Not reachable. All possible input types have been considered)\n\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(0, 'Unexpected input type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(type));\n}\n/**\n * IntValue:\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit ( Digit+ )?\n */\n\nvar integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2FzdEZyb21WYWx1ZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvYXN0RnJvbVZhbHVlLm1qcz8yODQxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0Zpbml0ZSBmcm9tIFwiLi4vcG9seWZpbGxzL2lzRmluaXRlLm1qc1wiO1xuaW1wb3J0IGFycmF5RnJvbSBmcm9tIFwiLi4vcG9seWZpbGxzL2FycmF5RnJvbS5tanNcIjtcbmltcG9ydCBvYmplY3RWYWx1ZXMgZnJvbSBcIi4uL3BvbHlmaWxscy9vYmplY3RWYWx1ZXMubWpzXCI7XG5pbXBvcnQgaW5zcGVjdCBmcm9tIFwiLi4vanN1dGlscy9pbnNwZWN0Lm1qc1wiO1xuaW1wb3J0IGludmFyaWFudCBmcm9tIFwiLi4vanN1dGlscy9pbnZhcmlhbnQubWpzXCI7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gXCIuLi9qc3V0aWxzL2lzT2JqZWN0TGlrZS5tanNcIjtcbmltcG9ydCBpc0NvbGxlY3Rpb24gZnJvbSBcIi4uL2pzdXRpbHMvaXNDb2xsZWN0aW9uLm1qc1wiO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gXCIuLi9sYW5ndWFnZS9raW5kcy5tanNcIjtcbmltcG9ydCB7IEdyYXBoUUxJRCB9IGZyb20gXCIuLi90eXBlL3NjYWxhcnMubWpzXCI7XG5pbXBvcnQgeyBpc0xlYWZUeXBlLCBpc0VudW1UeXBlLCBpc0lucHV0T2JqZWN0VHlwZSwgaXNMaXN0VHlwZSwgaXNOb25OdWxsVHlwZSB9IGZyb20gXCIuLi90eXBlL2RlZmluaXRpb24ubWpzXCI7XG4vKipcbiAqIFByb2R1Y2VzIGEgR3JhcGhRTCBWYWx1ZSBBU1QgZ2l2ZW4gYSBKYXZhU2NyaXB0IG9iamVjdC5cbiAqIEZ1bmN0aW9uIHdpbGwgbWF0Y2ggSmF2YVNjcmlwdC9KU09OIHZhbHVlcyB0byBHcmFwaFFMIEFTVCBzY2hlbWEgZm9ybWF0XG4gKiBieSB1c2luZyBzdWdnZXN0ZWQgR3JhcGhRTElucHV0VHlwZS4gRm9yIGV4YW1wbGU6XG4gKlxuICogICAgIGFzdEZyb21WYWx1ZShcInZhbHVlXCIsIEdyYXBoUUxTdHJpbmcpXG4gKlxuICogQSBHcmFwaFFMIHR5cGUgbXVzdCBiZSBwcm92aWRlZCwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGludGVycHJldCBkaWZmZXJlbnRcbiAqIEphdmFTY3JpcHQgdmFsdWVzLlxuICpcbiAqIHwgSlNPTiBWYWx1ZSAgICB8IEdyYXBoUUwgVmFsdWUgICAgICAgIHxcbiAqIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAqIHwgT2JqZWN0ICAgICAgICB8IElucHV0IE9iamVjdCAgICAgICAgIHxcbiAqIHwgQXJyYXkgICAgICAgICB8IExpc3QgICAgICAgICAgICAgICAgIHxcbiAqIHwgQm9vbGVhbiAgICAgICB8IEJvb2xlYW4gICAgICAgICAgICAgIHxcbiAqIHwgU3RyaW5nICAgICAgICB8IFN0cmluZyAvIEVudW0gVmFsdWUgIHxcbiAqIHwgTnVtYmVyICAgICAgICB8IEludCAvIEZsb2F0ICAgICAgICAgIHxcbiAqIHwgTWl4ZWQgICAgICAgICB8IEVudW0gVmFsdWUgICAgICAgICAgIHxcbiAqIHwgbnVsbCAgICAgICAgICB8IE51bGxWYWx1ZSAgICAgICAgICAgIHxcbiAqXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFzdEZyb21WYWx1ZSh2YWx1ZSwgdHlwZSkge1xuICBpZiAoaXNOb25OdWxsVHlwZSh0eXBlKSkge1xuICAgIHZhciBhc3RWYWx1ZSA9IGFzdEZyb21WYWx1ZSh2YWx1ZSwgdHlwZS5vZlR5cGUpO1xuXG4gICAgaWYgKChhc3RWYWx1ZSA9PT0gbnVsbCB8fCBhc3RWYWx1ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXN0VmFsdWUua2luZCkgPT09IEtpbmQuTlVMTCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzdFZhbHVlO1xuICB9IC8vIG9ubHkgZXhwbGljaXQgbnVsbCwgbm90IHVuZGVmaW5lZCwgTmFOXG5cblxuICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogS2luZC5OVUxMXG4gICAgfTtcbiAgfSAvLyB1bmRlZmluZWRcblxuXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gQ29udmVydCBKYXZhU2NyaXB0IGFycmF5IHRvIEdyYXBoUUwgbGlzdC4gSWYgdGhlIEdyYXBoUUxUeXBlIGlzIGEgbGlzdCwgYnV0XG4gIC8vIHRoZSB2YWx1ZSBpcyBub3QgYW4gYXJyYXksIGNvbnZlcnQgdGhlIHZhbHVlIHVzaW5nIHRoZSBsaXN0J3MgaXRlbSB0eXBlLlxuXG5cbiAgaWYgKGlzTGlzdFR5cGUodHlwZSkpIHtcbiAgICB2YXIgaXRlbVR5cGUgPSB0eXBlLm9mVHlwZTtcblxuICAgIGlmIChpc0NvbGxlY3Rpb24odmFsdWUpKSB7XG4gICAgICB2YXIgdmFsdWVzTm9kZXMgPSBbXTsgLy8gU2luY2Ugd2UgdHJhbnNwaWxlIGZvci1vZiBpbiBsb29zZSBtb2RlIGl0IGRvZXNuJ3Qgc3VwcG9ydCBpdGVyYXRvcnNcbiAgICAgIC8vIGFuZCBpdCdzIHJlcXVpcmVkIHRvIGZpcnN0IGNvbnZlcnQgaXRlcmF0YWJsZSBpbnRvIGFycmF5XG5cbiAgICAgIGZvciAodmFyIF9pMiA9IDAsIF9hcnJheUZyb20yID0gYXJyYXlGcm9tKHZhbHVlKTsgX2kyIDwgX2FycmF5RnJvbTIubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICB2YXIgaXRlbSA9IF9hcnJheUZyb20yW19pMl07XG4gICAgICAgIHZhciBpdGVtTm9kZSA9IGFzdEZyb21WYWx1ZShpdGVtLCBpdGVtVHlwZSk7XG5cbiAgICAgICAgaWYgKGl0ZW1Ob2RlICE9IG51bGwpIHtcbiAgICAgICAgICB2YWx1ZXNOb2Rlcy5wdXNoKGl0ZW1Ob2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBraW5kOiBLaW5kLkxJU1QsXG4gICAgICAgIHZhbHVlczogdmFsdWVzTm9kZXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzdEZyb21WYWx1ZSh2YWx1ZSwgaXRlbVR5cGUpO1xuICB9IC8vIFBvcHVsYXRlIHRoZSBmaWVsZHMgb2YgdGhlIGlucHV0IG9iamVjdCBieSBjcmVhdGluZyBBU1RzIGZyb20gZWFjaCB2YWx1ZVxuICAvLyBpbiB0aGUgSmF2YVNjcmlwdCBvYmplY3QgYWNjb3JkaW5nIHRvIHRoZSBmaWVsZHMgaW4gdGhlIGlucHV0IHR5cGUuXG5cblxuICBpZiAoaXNJbnB1dE9iamVjdFR5cGUodHlwZSkpIHtcbiAgICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBmaWVsZE5vZGVzID0gW107XG5cbiAgICBmb3IgKHZhciBfaTQgPSAwLCBfb2JqZWN0VmFsdWVzMiA9IG9iamVjdFZhbHVlcyh0eXBlLmdldEZpZWxkcygpKTsgX2k0IDwgX29iamVjdFZhbHVlczIubGVuZ3RoOyBfaTQrKykge1xuICAgICAgdmFyIGZpZWxkID0gX29iamVjdFZhbHVlczJbX2k0XTtcbiAgICAgIHZhciBmaWVsZFZhbHVlID0gYXN0RnJvbVZhbHVlKHZhbHVlW2ZpZWxkLm5hbWVdLCBmaWVsZC50eXBlKTtcblxuICAgICAgaWYgKGZpZWxkVmFsdWUpIHtcbiAgICAgICAgZmllbGROb2Rlcy5wdXNoKHtcbiAgICAgICAgICBraW5kOiBLaW5kLk9CSkVDVF9GSUVMRCxcbiAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICBraW5kOiBLaW5kLk5BTUUsXG4gICAgICAgICAgICB2YWx1ZTogZmllbGQubmFtZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdmFsdWU6IGZpZWxkVmFsdWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuT0JKRUNULFxuICAgICAgZmllbGRzOiBmaWVsZE5vZGVzXG4gICAgfTtcbiAgfSAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjYxOCcpXG5cblxuICBpZiAoaXNMZWFmVHlwZSh0eXBlKSkge1xuICAgIC8vIFNpbmNlIHZhbHVlIGlzIGFuIGludGVybmFsbHkgcmVwcmVzZW50ZWQgdmFsdWUsIGl0IG11c3QgYmUgc2VyaWFsaXplZFxuICAgIC8vIHRvIGFuIGV4dGVybmFsbHkgcmVwcmVzZW50ZWQgdmFsdWUgYmVmb3JlIGNvbnZlcnRpbmcgaW50byBhbiBBU1QuXG4gICAgdmFyIHNlcmlhbGl6ZWQgPSB0eXBlLnNlcmlhbGl6ZSh2YWx1ZSk7XG5cbiAgICBpZiAoc2VyaWFsaXplZCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IC8vIE90aGVycyBzZXJpYWxpemUgYmFzZWQgb24gdGhlaXIgY29ycmVzcG9uZGluZyBKYXZhU2NyaXB0IHNjYWxhciB0eXBlcy5cblxuXG4gICAgaWYgKHR5cGVvZiBzZXJpYWxpemVkID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6IEtpbmQuQk9PTEVBTixcbiAgICAgICAgdmFsdWU6IHNlcmlhbGl6ZWRcbiAgICAgIH07XG4gICAgfSAvLyBKYXZhU2NyaXB0IG51bWJlcnMgY2FuIGJlIEludCBvciBGbG9hdCB2YWx1ZXMuXG5cblxuICAgIGlmICh0eXBlb2Ygc2VyaWFsaXplZCA9PT0gJ251bWJlcicgJiYgaXNGaW5pdGUoc2VyaWFsaXplZCkpIHtcbiAgICAgIHZhciBzdHJpbmdOdW0gPSBTdHJpbmcoc2VyaWFsaXplZCk7XG4gICAgICByZXR1cm4gaW50ZWdlclN0cmluZ1JlZ0V4cC50ZXN0KHN0cmluZ051bSkgPyB7XG4gICAgICAgIGtpbmQ6IEtpbmQuSU5ULFxuICAgICAgICB2YWx1ZTogc3RyaW5nTnVtXG4gICAgICB9IDoge1xuICAgICAgICBraW5kOiBLaW5kLkZMT0FULFxuICAgICAgICB2YWx1ZTogc3RyaW5nTnVtXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygc2VyaWFsaXplZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIEVudW0gdHlwZXMgdXNlIEVudW0gbGl0ZXJhbHMuXG4gICAgICBpZiAoaXNFbnVtVHlwZSh0eXBlKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtpbmQ6IEtpbmQuRU5VTSxcbiAgICAgICAgICB2YWx1ZTogc2VyaWFsaXplZFxuICAgICAgICB9O1xuICAgICAgfSAvLyBJRCB0eXBlcyBjYW4gdXNlIEludCBsaXRlcmFscy5cblxuXG4gICAgICBpZiAodHlwZSA9PT0gR3JhcGhRTElEICYmIGludGVnZXJTdHJpbmdSZWdFeHAudGVzdChzZXJpYWxpemVkKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtpbmQ6IEtpbmQuSU5ULFxuICAgICAgICAgIHZhbHVlOiBzZXJpYWxpemVkXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6IEtpbmQuU1RSSU5HLFxuICAgICAgICB2YWx1ZTogc2VyaWFsaXplZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNvbnZlcnQgdmFsdWUgdG8gQVNUOiBcIi5jb25jYXQoaW5zcGVjdChzZXJpYWxpemVkKSwgXCIuXCIpKTtcbiAgfSAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoTm90IHJlYWNoYWJsZS4gQWxsIHBvc3NpYmxlIGlucHV0IHR5cGVzIGhhdmUgYmVlbiBjb25zaWRlcmVkKVxuXG5cbiAgZmFsc2UgfHwgaW52YXJpYW50KDAsICdVbmV4cGVjdGVkIGlucHV0IHR5cGU6ICcgKyBpbnNwZWN0KHR5cGUpKTtcbn1cbi8qKlxuICogSW50VmFsdWU6XG4gKiAgIC0gTmVnYXRpdmVTaWduPyAwXG4gKiAgIC0gTmVnYXRpdmVTaWduPyBOb25aZXJvRGlnaXQgKCBEaWdpdCsgKT9cbiAqL1xuXG52YXIgaW50ZWdlclN0cmluZ1JlZ0V4cCA9IC9eLT8oPzowfFsxLTldWzAtOV0qKSQvO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/astFromValue.mjs\n");
1113
1114/***/ }),
1115
1116/***/ "../../../node_modules/graphql/utilities/buildASTSchema.mjs":
1117/*!*********************************************************************************************!*\
1118 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/buildASTSchema.mjs ***!
1119 \*********************************************************************************************/
1120/*! exports provided: buildASTSchema, buildSchema */
1121/***/ (function(module, __webpack_exports__, __webpack_require__) {
1122
1123"use strict";
1124eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildASTSchema\", function() { return buildASTSchema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildSchema\", function() { return buildSchema; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_parser_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/parser.mjs */ \"../../../node_modules/graphql/language/parser.mjs\");\n/* harmony import */ var _validation_validate_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../validation/validate.mjs */ \"../../../node_modules/graphql/validation/validate.mjs\");\n/* harmony import */ var _type_schema_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../type/schema.mjs */ \"../../../node_modules/graphql/type/schema.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _extendSchema_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./extendSchema.mjs */ \"../../../node_modules/graphql/utilities/extendSchema.mjs\");\n\n\n\n\n\n\n\n\n/**\n * This takes the ast of a schema document produced by the parse function in\n * src/language/parser.js.\n *\n * If no schema definition is provided, then it will look for types named Query\n * and Mutation.\n *\n * Given that AST it constructs a GraphQLSchema. The resulting schema\n * has no resolve methods, so execution will use default resolvers.\n *\n * Accepts options as a second argument:\n *\n * - commentDescriptions:\n * Provide true to use preceding comments as the description.\n *\n */\nfunction buildASTSchema(documentAST, options) {\n documentAST != null && documentAST.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].DOCUMENT || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0, 'Must provide valid Document AST.');\n\n if ((options === null || options === void 0 ? void 0 : options.assumeValid) !== true && (options === null || options === void 0 ? void 0 : options.assumeValidSDL) !== true) {\n Object(_validation_validate_mjs__WEBPACK_IMPORTED_MODULE_3__[\"assertValidSDL\"])(documentAST);\n }\n\n var emptySchemaConfig = {\n description: undefined,\n types: [],\n directives: [],\n extensions: undefined,\n extensionASTNodes: [],\n assumeValid: false\n };\n var config = Object(_extendSchema_mjs__WEBPACK_IMPORTED_MODULE_6__[\"extendSchemaImpl\"])(emptySchemaConfig, documentAST, options);\n\n if (config.astNode == null) {\n for (var _i2 = 0, _config$types2 = config.types; _i2 < _config$types2.length; _i2++) {\n var type = _config$types2[_i2];\n\n switch (type.name) {\n // Note: While this could make early assertions to get the correctly\n // typed values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n case 'Query':\n config.query = type;\n break;\n\n case 'Mutation':\n config.mutation = type;\n break;\n\n case 'Subscription':\n config.subscription = type;\n break;\n }\n }\n }\n\n var directives = config.directives; // If specified directives were not explicitly declared, add them.\n\n var _loop = function _loop(_i4) {\n var stdDirective = _type_directives_mjs__WEBPACK_IMPORTED_MODULE_5__[\"specifiedDirectives\"][_i4];\n\n if (directives.every(function (directive) {\n return directive.name !== stdDirective.name;\n })) {\n directives.push(stdDirective);\n }\n };\n\n for (var _i4 = 0; _i4 < _type_directives_mjs__WEBPACK_IMPORTED_MODULE_5__[\"specifiedDirectives\"].length; _i4++) {\n _loop(_i4);\n }\n\n return new _type_schema_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLSchema\"](config);\n}\n/**\n * A helper function to build a GraphQLSchema directly from a source\n * document.\n */\n\nfunction buildSchema(source, options) {\n var document = Object(_language_parser_mjs__WEBPACK_IMPORTED_MODULE_2__[\"parse\"])(source, {\n noLocation: options === null || options === void 0 ? void 0 : options.noLocation,\n allowLegacySDLEmptyFields: options === null || options === void 0 ? void 0 : options.allowLegacySDLEmptyFields,\n allowLegacySDLImplementsInterfaces: options === null || options === void 0 ? void 0 : options.allowLegacySDLImplementsInterfaces,\n experimentalFragmentVariables: options === null || options === void 0 ? void 0 : options.experimentalFragmentVariables\n });\n return buildASTSchema(document, {\n commentDescriptions: options === null || options === void 0 ? void 0 : options.commentDescriptions,\n assumeValidSDL: options === null || options === void 0 ? void 0 : options.assumeValidSDL,\n assumeValid: options === null || options === void 0 ? void 0 : options.assumeValid\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2J1aWxkQVNUU2NoZW1hLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9idWlsZEFTVFNjaGVtYS5tanM/NjVlNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGV2QXNzZXJ0IGZyb20gXCIuLi9qc3V0aWxzL2RldkFzc2VydC5tanNcIjtcbmltcG9ydCB7IEtpbmQgfSBmcm9tIFwiLi4vbGFuZ3VhZ2Uva2luZHMubWpzXCI7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCIuLi9sYW5ndWFnZS9wYXJzZXIubWpzXCI7XG5pbXBvcnQgeyBhc3NlcnRWYWxpZFNETCB9IGZyb20gXCIuLi92YWxpZGF0aW9uL3ZhbGlkYXRlLm1qc1wiO1xuaW1wb3J0IHsgR3JhcGhRTFNjaGVtYSB9IGZyb20gXCIuLi90eXBlL3NjaGVtYS5tanNcIjtcbmltcG9ydCB7IHNwZWNpZmllZERpcmVjdGl2ZXMgfSBmcm9tIFwiLi4vdHlwZS9kaXJlY3RpdmVzLm1qc1wiO1xuaW1wb3J0IHsgZXh0ZW5kU2NoZW1hSW1wbCB9IGZyb20gXCIuL2V4dGVuZFNjaGVtYS5tanNcIjtcblxuLyoqXG4gKiBUaGlzIHRha2VzIHRoZSBhc3Qgb2YgYSBzY2hlbWEgZG9jdW1lbnQgcHJvZHVjZWQgYnkgdGhlIHBhcnNlIGZ1bmN0aW9uIGluXG4gKiBzcmMvbGFuZ3VhZ2UvcGFyc2VyLmpzLlxuICpcbiAqIElmIG5vIHNjaGVtYSBkZWZpbml0aW9uIGlzIHByb3ZpZGVkLCB0aGVuIGl0IHdpbGwgbG9vayBmb3IgdHlwZXMgbmFtZWQgUXVlcnlcbiAqIGFuZCBNdXRhdGlvbi5cbiAqXG4gKiBHaXZlbiB0aGF0IEFTVCBpdCBjb25zdHJ1Y3RzIGEgR3JhcGhRTFNjaGVtYS4gVGhlIHJlc3VsdGluZyBzY2hlbWFcbiAqIGhhcyBubyByZXNvbHZlIG1ldGhvZHMsIHNvIGV4ZWN1dGlvbiB3aWxsIHVzZSBkZWZhdWx0IHJlc29sdmVycy5cbiAqXG4gKiBBY2NlcHRzIG9wdGlvbnMgYXMgYSBzZWNvbmQgYXJndW1lbnQ6XG4gKlxuICogICAgLSBjb21tZW50RGVzY3JpcHRpb25zOlxuICogICAgICAgIFByb3ZpZGUgdHJ1ZSB0byB1c2UgcHJlY2VkaW5nIGNvbW1lbnRzIGFzIHRoZSBkZXNjcmlwdGlvbi5cbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEFTVFNjaGVtYShkb2N1bWVudEFTVCwgb3B0aW9ucykge1xuICBkb2N1bWVudEFTVCAhPSBudWxsICYmIGRvY3VtZW50QVNULmtpbmQgPT09IEtpbmQuRE9DVU1FTlQgfHwgZGV2QXNzZXJ0KDAsICdNdXN0IHByb3ZpZGUgdmFsaWQgRG9jdW1lbnQgQVNULicpO1xuXG4gIGlmICgob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmFzc3VtZVZhbGlkKSAhPT0gdHJ1ZSAmJiAob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmFzc3VtZVZhbGlkU0RMKSAhPT0gdHJ1ZSkge1xuICAgIGFzc2VydFZhbGlkU0RMKGRvY3VtZW50QVNUKTtcbiAgfVxuXG4gIHZhciBlbXB0eVNjaGVtYUNvbmZpZyA9IHtcbiAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLFxuICAgIHR5cGVzOiBbXSxcbiAgICBkaXJlY3RpdmVzOiBbXSxcbiAgICBleHRlbnNpb25zOiB1bmRlZmluZWQsXG4gICAgZXh0ZW5zaW9uQVNUTm9kZXM6IFtdLFxuICAgIGFzc3VtZVZhbGlkOiBmYWxzZVxuICB9O1xuICB2YXIgY29uZmlnID0gZXh0ZW5kU2NoZW1hSW1wbChlbXB0eVNjaGVtYUNvbmZpZywgZG9jdW1lbnRBU1QsIG9wdGlvbnMpO1xuXG4gIGlmIChjb25maWcuYXN0Tm9kZSA9PSBudWxsKSB7XG4gICAgZm9yICh2YXIgX2kyID0gMCwgX2NvbmZpZyR0eXBlczIgPSBjb25maWcudHlwZXM7IF9pMiA8IF9jb25maWckdHlwZXMyLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgIHZhciB0eXBlID0gX2NvbmZpZyR0eXBlczJbX2kyXTtcblxuICAgICAgc3dpdGNoICh0eXBlLm5hbWUpIHtcbiAgICAgICAgLy8gTm90ZTogV2hpbGUgdGhpcyBjb3VsZCBtYWtlIGVhcmx5IGFzc2VydGlvbnMgdG8gZ2V0IHRoZSBjb3JyZWN0bHlcbiAgICAgICAgLy8gdHlwZWQgdmFsdWVzIGJlbG93LCB0aGF0IHdvdWxkIHRocm93IGltbWVkaWF0ZWx5IHdoaWxlIHR5cGUgc3lzdGVtXG4gICAgICAgIC8vIHZhbGlkYXRpb24gd2l0aCB2YWxpZGF0ZVNjaGVtYSgpIHdpbGwgcHJvZHVjZSBtb3JlIGFjdGlvbmFibGUgcmVzdWx0cy5cbiAgICAgICAgY2FzZSAnUXVlcnknOlxuICAgICAgICAgIGNvbmZpZy5xdWVyeSA9IHR5cGU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnTXV0YXRpb24nOlxuICAgICAgICAgIGNvbmZpZy5tdXRhdGlvbiA9IHR5cGU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnU3Vic2NyaXB0aW9uJzpcbiAgICAgICAgICBjb25maWcuc3Vic2NyaXB0aW9uID0gdHlwZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgZGlyZWN0aXZlcyA9IGNvbmZpZy5kaXJlY3RpdmVzOyAvLyBJZiBzcGVjaWZpZWQgZGlyZWN0aXZlcyB3ZXJlIG5vdCBleHBsaWNpdGx5IGRlY2xhcmVkLCBhZGQgdGhlbS5cblxuICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChfaTQpIHtcbiAgICB2YXIgc3RkRGlyZWN0aXZlID0gc3BlY2lmaWVkRGlyZWN0aXZlc1tfaTRdO1xuXG4gICAgaWYgKGRpcmVjdGl2ZXMuZXZlcnkoZnVuY3Rpb24gKGRpcmVjdGl2ZSkge1xuICAgICAgcmV0dXJuIGRpcmVjdGl2ZS5uYW1lICE9PSBzdGREaXJlY3RpdmUubmFtZTtcbiAgICB9KSkge1xuICAgICAgZGlyZWN0aXZlcy5wdXNoKHN0ZERpcmVjdGl2ZSk7XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IHNwZWNpZmllZERpcmVjdGl2ZXMubGVuZ3RoOyBfaTQrKykge1xuICAgIF9sb29wKF9pNCk7XG4gIH1cblxuICByZXR1cm4gbmV3IEdyYXBoUUxTY2hlbWEoY29uZmlnKTtcbn1cbi8qKlxuICogQSBoZWxwZXIgZnVuY3Rpb24gdG8gYnVpbGQgYSBHcmFwaFFMU2NoZW1hIGRpcmVjdGx5IGZyb20gYSBzb3VyY2VcbiAqIGRvY3VtZW50LlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNjaGVtYShzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGRvY3VtZW50ID0gcGFyc2Uoc291cmNlLCB7XG4gICAgbm9Mb2NhdGlvbjogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLm5vTG9jYXRpb24sXG4gICAgYWxsb3dMZWdhY3lTRExFbXB0eUZpZWxkczogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmFsbG93TGVnYWN5U0RMRW1wdHlGaWVsZHMsXG4gICAgYWxsb3dMZWdhY3lTRExJbXBsZW1lbnRzSW50ZXJmYWNlczogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmFsbG93TGVnYWN5U0RMSW1wbGVtZW50c0ludGVyZmFjZXMsXG4gICAgZXhwZXJpbWVudGFsRnJhZ21lbnRWYXJpYWJsZXM6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5leHBlcmltZW50YWxGcmFnbWVudFZhcmlhYmxlc1xuICB9KTtcbiAgcmV0dXJuIGJ1aWxkQVNUU2NoZW1hKGRvY3VtZW50LCB7XG4gICAgY29tbWVudERlc2NyaXB0aW9uczogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmNvbW1lbnREZXNjcmlwdGlvbnMsXG4gICAgYXNzdW1lVmFsaWRTREw6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5hc3N1bWVWYWxpZFNETCxcbiAgICBhc3N1bWVWYWxpZDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmFzc3VtZVZhbGlkXG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/buildASTSchema.mjs\n");
1125
1126/***/ }),
1127
1128/***/ "../../../node_modules/graphql/utilities/buildClientSchema.mjs":
1129/*!************************************************************************************************!*\
1130 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/buildClientSchema.mjs ***!
1131 \************************************************************************************************/
1132/*! exports provided: buildClientSchema */
1133/***/ (function(module, __webpack_exports__, __webpack_require__) {
1134
1135"use strict";
1136eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildClientSchema\", function() { return buildClientSchema; });\n/* harmony import */ var _polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/objectValues.mjs */ \"../../../node_modules/graphql/polyfills/objectValues.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/keyValMap.mjs */ \"../../../node_modules/graphql/jsutils/keyValMap.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _language_parser_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../language/parser.mjs */ \"../../../node_modules/graphql/language/parser.mjs\");\n/* harmony import */ var _type_schema_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../type/schema.mjs */ \"../../../node_modules/graphql/type/schema.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../type/scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./valueFromAST.mjs */ \"../../../node_modules/graphql/utilities/valueFromAST.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Build a GraphQLSchema for use by client tools.\n *\n * Given the result of a client running the introspection query, creates and\n * returns a GraphQLSchema instance which can be then used with all graphql-js\n * tools, but cannot be used to execute a query, as introspection does not\n * represent the \"resolver\", \"parse\" or \"serialize\" functions or any other\n * server-internal mechanisms.\n *\n * This function expects a complete introspection result. Don't forget to check\n * the \"errors\" field of a server response before calling this function.\n */\n\nfunction buildClientSchema(introspection, options) {\n Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(introspection) && Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(introspection.__schema) || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(0, \"Invalid or incomplete introspection result. Ensure that you are passing \\\"data\\\" property of introspection response and no \\\"errors\\\" was returned alongside: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(introspection), \".\")); // Get the schema from the introspection result.\n\n var schemaIntrospection = introspection.__schema; // Iterate through all types, getting the type definition for each.\n\n var typeMap = Object(_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(schemaIntrospection.types, function (typeIntrospection) {\n return typeIntrospection.name;\n }, function (typeIntrospection) {\n return buildType(typeIntrospection);\n }); // Include standard types only if they are used.\n\n for (var _i2 = 0, _ref2 = [].concat(_type_scalars_mjs__WEBPACK_IMPORTED_MODULE_8__[\"specifiedScalarTypes\"], _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_9__[\"introspectionTypes\"]); _i2 < _ref2.length; _i2++) {\n var stdType = _ref2[_i2];\n\n if (typeMap[stdType.name]) {\n typeMap[stdType.name] = stdType;\n }\n } // Get the root Query, Mutation, and Subscription types.\n\n\n var queryType = schemaIntrospection.queryType ? getObjectType(schemaIntrospection.queryType) : null;\n var mutationType = schemaIntrospection.mutationType ? getObjectType(schemaIntrospection.mutationType) : null;\n var subscriptionType = schemaIntrospection.subscriptionType ? getObjectType(schemaIntrospection.subscriptionType) : null; // Get the directives supported by Introspection, assuming empty-set if\n // directives were not queried for.\n\n var directives = schemaIntrospection.directives ? schemaIntrospection.directives.map(buildDirective) : []; // Then produce and return a Schema with these types.\n\n return new _type_schema_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLSchema\"]({\n description: schemaIntrospection.description,\n query: queryType,\n mutation: mutationType,\n subscription: subscriptionType,\n types: Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(typeMap),\n directives: directives,\n assumeValid: options === null || options === void 0 ? void 0 : options.assumeValid\n }); // Given a type reference in introspection, return the GraphQLType instance.\n // preferring cached instances before building new instances.\n\n function getType(typeRef) {\n if (typeRef.kind === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_9__[\"TypeKind\"].LIST) {\n var itemRef = typeRef.ofType;\n\n if (!itemRef) {\n throw new Error('Decorated type deeper than introspection query.');\n }\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLList\"](getType(itemRef));\n }\n\n if (typeRef.kind === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_9__[\"TypeKind\"].NON_NULL) {\n var nullableRef = typeRef.ofType;\n\n if (!nullableRef) {\n throw new Error('Decorated type deeper than introspection query.');\n }\n\n var nullableType = getType(nullableRef);\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLNonNull\"](Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"assertNullableType\"])(nullableType));\n }\n\n return getNamedType(typeRef);\n }\n\n function getNamedType(typeRef) {\n var typeName = typeRef.name;\n\n if (!typeName) {\n throw new Error(\"Unknown type reference: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(typeRef), \".\"));\n }\n\n var type = typeMap[typeName];\n\n if (!type) {\n throw new Error(\"Invalid or incomplete schema, unknown type: \".concat(typeName, \". Ensure that a full introspection query is used in order to build a client schema.\"));\n }\n\n return type;\n }\n\n function getObjectType(typeRef) {\n return Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"assertObjectType\"])(getNamedType(typeRef));\n }\n\n function getInterfaceType(typeRef) {\n return Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"assertInterfaceType\"])(getNamedType(typeRef));\n } // Given a type's introspection result, construct the correct\n // GraphQLType instance.\n\n\n function buildType(type) {\n if (type != null && type.name != null && type.kind != null) {\n switch (type.kind) {\n case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_9__[\"TypeKind\"].SCALAR:\n return buildScalarDef(type);\n\n case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_9__[\"TypeKind\"].OBJECT:\n return buildObjectDef(type);\n\n case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_9__[\"TypeKind\"].INTERFACE:\n return buildInterfaceDef(type);\n\n case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_9__[\"TypeKind\"].UNION:\n return buildUnionDef(type);\n\n case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_9__[\"TypeKind\"].ENUM:\n return buildEnumDef(type);\n\n case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_9__[\"TypeKind\"].INPUT_OBJECT:\n return buildInputObjectDef(type);\n }\n }\n\n var typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(type);\n throw new Error(\"Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: \".concat(typeStr, \".\"));\n }\n\n function buildScalarDef(scalarIntrospection) {\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLScalarType\"]({\n name: scalarIntrospection.name,\n description: scalarIntrospection.description,\n specifiedByUrl: scalarIntrospection.specifiedByUrl\n });\n }\n\n function buildImplementationsList(implementingIntrospection) {\n // TODO: Temporary workaround until GraphQL ecosystem will fully support\n // 'interfaces' on interface types.\n if (implementingIntrospection.interfaces === null && implementingIntrospection.kind === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_9__[\"TypeKind\"].INTERFACE) {\n return [];\n }\n\n if (!implementingIntrospection.interfaces) {\n var implementingIntrospectionStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(implementingIntrospection);\n throw new Error(\"Introspection result missing interfaces: \".concat(implementingIntrospectionStr, \".\"));\n }\n\n return implementingIntrospection.interfaces.map(getInterfaceType);\n }\n\n function buildObjectDef(objectIntrospection) {\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLObjectType\"]({\n name: objectIntrospection.name,\n description: objectIntrospection.description,\n interfaces: function interfaces() {\n return buildImplementationsList(objectIntrospection);\n },\n fields: function fields() {\n return buildFieldDefMap(objectIntrospection);\n }\n });\n }\n\n function buildInterfaceDef(interfaceIntrospection) {\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLInterfaceType\"]({\n name: interfaceIntrospection.name,\n description: interfaceIntrospection.description,\n interfaces: function interfaces() {\n return buildImplementationsList(interfaceIntrospection);\n },\n fields: function fields() {\n return buildFieldDefMap(interfaceIntrospection);\n }\n });\n }\n\n function buildUnionDef(unionIntrospection) {\n if (!unionIntrospection.possibleTypes) {\n var unionIntrospectionStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(unionIntrospection);\n throw new Error(\"Introspection result missing possibleTypes: \".concat(unionIntrospectionStr, \".\"));\n }\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLUnionType\"]({\n name: unionIntrospection.name,\n description: unionIntrospection.description,\n types: function types() {\n return unionIntrospection.possibleTypes.map(getObjectType);\n }\n });\n }\n\n function buildEnumDef(enumIntrospection) {\n if (!enumIntrospection.enumValues) {\n var enumIntrospectionStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enumIntrospection);\n throw new Error(\"Introspection result missing enumValues: \".concat(enumIntrospectionStr, \".\"));\n }\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLEnumType\"]({\n name: enumIntrospection.name,\n description: enumIntrospection.description,\n values: Object(_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(enumIntrospection.enumValues, function (valueIntrospection) {\n return valueIntrospection.name;\n }, function (valueIntrospection) {\n return {\n description: valueIntrospection.description,\n deprecationReason: valueIntrospection.deprecationReason\n };\n })\n });\n }\n\n function buildInputObjectDef(inputObjectIntrospection) {\n if (!inputObjectIntrospection.inputFields) {\n var inputObjectIntrospectionStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(inputObjectIntrospection);\n throw new Error(\"Introspection result missing inputFields: \".concat(inputObjectIntrospectionStr, \".\"));\n }\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLInputObjectType\"]({\n name: inputObjectIntrospection.name,\n description: inputObjectIntrospection.description,\n fields: function fields() {\n return buildInputValueDefMap(inputObjectIntrospection.inputFields);\n }\n });\n }\n\n function buildFieldDefMap(typeIntrospection) {\n if (!typeIntrospection.fields) {\n throw new Error(\"Introspection result missing fields: \".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(typeIntrospection), \".\"));\n }\n\n return Object(_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(typeIntrospection.fields, function (fieldIntrospection) {\n return fieldIntrospection.name;\n }, buildField);\n }\n\n function buildField(fieldIntrospection) {\n var type = getType(fieldIntrospection.type);\n\n if (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isOutputType\"])(type)) {\n var typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(type);\n throw new Error(\"Introspection must provide output type for fields, but received: \".concat(typeStr, \".\"));\n }\n\n if (!fieldIntrospection.args) {\n var fieldIntrospectionStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(fieldIntrospection);\n throw new Error(\"Introspection result missing field args: \".concat(fieldIntrospectionStr, \".\"));\n }\n\n return {\n description: fieldIntrospection.description,\n deprecationReason: fieldIntrospection.deprecationReason,\n type: type,\n args: buildInputValueDefMap(fieldIntrospection.args)\n };\n }\n\n function buildInputValueDefMap(inputValueIntrospections) {\n return Object(_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(inputValueIntrospections, function (inputValue) {\n return inputValue.name;\n }, buildInputValue);\n }\n\n function buildInputValue(inputValueIntrospection) {\n var type = getType(inputValueIntrospection.type);\n\n if (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_10__[\"isInputType\"])(type)) {\n var typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(type);\n throw new Error(\"Introspection must provide input type for arguments, but received: \".concat(typeStr, \".\"));\n }\n\n var defaultValue = inputValueIntrospection.defaultValue != null ? Object(_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_11__[\"valueFromAST\"])(Object(_language_parser_mjs__WEBPACK_IMPORTED_MODULE_5__[\"parseValue\"])(inputValueIntrospection.defaultValue), type) : undefined;\n return {\n description: inputValueIntrospection.description,\n type: type,\n defaultValue: defaultValue\n };\n }\n\n function buildDirective(directiveIntrospection) {\n if (!directiveIntrospection.args) {\n var directiveIntrospectionStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(directiveIntrospection);\n throw new Error(\"Introspection result missing directive args: \".concat(directiveIntrospectionStr, \".\"));\n }\n\n if (!directiveIntrospection.locations) {\n var _directiveIntrospectionStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(directiveIntrospection);\n\n throw new Error(\"Introspection result missing directive locations: \".concat(_directiveIntrospectionStr, \".\"));\n }\n\n return new _type_directives_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLDirective\"]({\n name: directiveIntrospection.name,\n description: directiveIntrospection.description,\n isRepeatable: directiveIntrospection.isRepeatable,\n locations: directiveIntrospection.locations.slice(),\n args: buildInputValueDefMap(directiveIntrospection.args)\n });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2J1aWxkQ2xpZW50U2NoZW1hLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9idWlsZENsaWVudFNjaGVtYS5tanM/NWY0NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgb2JqZWN0VmFsdWVzIGZyb20gXCIuLi9wb2x5ZmlsbHMvb2JqZWN0VmFsdWVzLm1qc1wiO1xuaW1wb3J0IGluc3BlY3QgZnJvbSBcIi4uL2pzdXRpbHMvaW5zcGVjdC5tanNcIjtcbmltcG9ydCBkZXZBc3NlcnQgZnJvbSBcIi4uL2pzdXRpbHMvZGV2QXNzZXJ0Lm1qc1wiO1xuaW1wb3J0IGtleVZhbE1hcCBmcm9tIFwiLi4vanN1dGlscy9rZXlWYWxNYXAubWpzXCI7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gXCIuLi9qc3V0aWxzL2lzT2JqZWN0TGlrZS5tanNcIjtcbmltcG9ydCB7IHBhcnNlVmFsdWUgfSBmcm9tIFwiLi4vbGFuZ3VhZ2UvcGFyc2VyLm1qc1wiO1xuaW1wb3J0IHsgR3JhcGhRTFNjaGVtYSB9IGZyb20gXCIuLi90eXBlL3NjaGVtYS5tanNcIjtcbmltcG9ydCB7IEdyYXBoUUxEaXJlY3RpdmUgfSBmcm9tIFwiLi4vdHlwZS9kaXJlY3RpdmVzLm1qc1wiO1xuaW1wb3J0IHsgc3BlY2lmaWVkU2NhbGFyVHlwZXMgfSBmcm9tIFwiLi4vdHlwZS9zY2FsYXJzLm1qc1wiO1xuaW1wb3J0IHsgaW50cm9zcGVjdGlvblR5cGVzLCBUeXBlS2luZCB9IGZyb20gXCIuLi90eXBlL2ludHJvc3BlY3Rpb24ubWpzXCI7XG5pbXBvcnQgeyBpc0lucHV0VHlwZSwgaXNPdXRwdXRUeXBlLCBHcmFwaFFMTGlzdCwgR3JhcGhRTE5vbk51bGwsIEdyYXBoUUxTY2FsYXJUeXBlLCBHcmFwaFFMT2JqZWN0VHlwZSwgR3JhcGhRTEludGVyZmFjZVR5cGUsIEdyYXBoUUxVbmlvblR5cGUsIEdyYXBoUUxFbnVtVHlwZSwgR3JhcGhRTElucHV0T2JqZWN0VHlwZSwgYXNzZXJ0TnVsbGFibGVUeXBlLCBhc3NlcnRPYmplY3RUeXBlLCBhc3NlcnRJbnRlcmZhY2VUeXBlIH0gZnJvbSBcIi4uL3R5cGUvZGVmaW5pdGlvbi5tanNcIjtcbmltcG9ydCB7IHZhbHVlRnJvbUFTVCB9IGZyb20gXCIuL3ZhbHVlRnJvbUFTVC5tanNcIjtcbi8qKlxuICogQnVpbGQgYSBHcmFwaFFMU2NoZW1hIGZvciB1c2UgYnkgY2xpZW50IHRvb2xzLlxuICpcbiAqIEdpdmVuIHRoZSByZXN1bHQgb2YgYSBjbGllbnQgcnVubmluZyB0aGUgaW50cm9zcGVjdGlvbiBxdWVyeSwgY3JlYXRlcyBhbmRcbiAqIHJldHVybnMgYSBHcmFwaFFMU2NoZW1hIGluc3RhbmNlIHdoaWNoIGNhbiBiZSB0aGVuIHVzZWQgd2l0aCBhbGwgZ3JhcGhxbC1qc1xuICogdG9vbHMsIGJ1dCBjYW5ub3QgYmUgdXNlZCB0byBleGVjdXRlIGEgcXVlcnksIGFzIGludHJvc3BlY3Rpb24gZG9lcyBub3RcbiAqIHJlcHJlc2VudCB0aGUgXCJyZXNvbHZlclwiLCBcInBhcnNlXCIgb3IgXCJzZXJpYWxpemVcIiBmdW5jdGlvbnMgb3IgYW55IG90aGVyXG4gKiBzZXJ2ZXItaW50ZXJuYWwgbWVjaGFuaXNtcy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGV4cGVjdHMgYSBjb21wbGV0ZSBpbnRyb3NwZWN0aW9uIHJlc3VsdC4gRG9uJ3QgZm9yZ2V0IHRvIGNoZWNrXG4gKiB0aGUgXCJlcnJvcnNcIiBmaWVsZCBvZiBhIHNlcnZlciByZXNwb25zZSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZENsaWVudFNjaGVtYShpbnRyb3NwZWN0aW9uLCBvcHRpb25zKSB7XG4gIGlzT2JqZWN0TGlrZShpbnRyb3NwZWN0aW9uKSAmJiBpc09iamVjdExpa2UoaW50cm9zcGVjdGlvbi5fX3NjaGVtYSkgfHwgZGV2QXNzZXJ0KDAsIFwiSW52YWxpZCBvciBpbmNvbXBsZXRlIGludHJvc3BlY3Rpb24gcmVzdWx0LiBFbnN1cmUgdGhhdCB5b3UgYXJlIHBhc3NpbmcgXFxcImRhdGFcXFwiIHByb3BlcnR5IG9mIGludHJvc3BlY3Rpb24gcmVzcG9uc2UgYW5kIG5vIFxcXCJlcnJvcnNcXFwiIHdhcyByZXR1cm5lZCBhbG9uZ3NpZGU6IFwiLmNvbmNhdChpbnNwZWN0KGludHJvc3BlY3Rpb24pLCBcIi5cIikpOyAvLyBHZXQgdGhlIHNjaGVtYSBmcm9tIHRoZSBpbnRyb3NwZWN0aW9uIHJlc3VsdC5cblxuICB2YXIgc2NoZW1hSW50cm9zcGVjdGlvbiA9IGludHJvc3BlY3Rpb24uX19zY2hlbWE7IC8vIEl0ZXJhdGUgdGhyb3VnaCBhbGwgdHlwZXMsIGdldHRpbmcgdGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgZWFjaC5cblxuICB2YXIgdHlwZU1hcCA9IGtleVZhbE1hcChzY2hlbWFJbnRyb3NwZWN0aW9uLnR5cGVzLCBmdW5jdGlvbiAodHlwZUludHJvc3BlY3Rpb24pIHtcbiAgICByZXR1cm4gdHlwZUludHJvc3BlY3Rpb24ubmFtZTtcbiAgfSwgZnVuY3Rpb24gKHR5cGVJbnRyb3NwZWN0aW9uKSB7XG4gICAgcmV0dXJuIGJ1aWxkVHlwZSh0eXBlSW50cm9zcGVjdGlvbik7XG4gIH0pOyAvLyBJbmNsdWRlIHN0YW5kYXJkIHR5cGVzIG9ubHkgaWYgdGhleSBhcmUgdXNlZC5cblxuICBmb3IgKHZhciBfaTIgPSAwLCBfcmVmMiA9IFtdLmNvbmNhdChzcGVjaWZpZWRTY2FsYXJUeXBlcywgaW50cm9zcGVjdGlvblR5cGVzKTsgX2kyIDwgX3JlZjIubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBzdGRUeXBlID0gX3JlZjJbX2kyXTtcblxuICAgIGlmICh0eXBlTWFwW3N0ZFR5cGUubmFtZV0pIHtcbiAgICAgIHR5cGVNYXBbc3RkVHlwZS5uYW1lXSA9IHN0ZFR5cGU7XG4gICAgfVxuICB9IC8vIEdldCB0aGUgcm9vdCBRdWVyeSwgTXV0YXRpb24sIGFuZCBTdWJzY3JpcHRpb24gdHlwZXMuXG5cblxuICB2YXIgcXVlcnlUeXBlID0gc2NoZW1hSW50cm9zcGVjdGlvbi5xdWVyeVR5cGUgPyBnZXRPYmplY3RUeXBlKHNjaGVtYUludHJvc3BlY3Rpb24ucXVlcnlUeXBlKSA6IG51bGw7XG4gIHZhciBtdXRhdGlvblR5cGUgPSBzY2hlbWFJbnRyb3NwZWN0aW9uLm11dGF0aW9uVHlwZSA/IGdldE9iamVjdFR5cGUoc2NoZW1hSW50cm9zcGVjdGlvbi5tdXRhdGlvblR5cGUpIDogbnVsbDtcbiAgdmFyIHN1YnNjcmlwdGlvblR5cGUgPSBzY2hlbWFJbnRyb3NwZWN0aW9uLnN1YnNjcmlwdGlvblR5cGUgPyBnZXRPYmplY3RUeXBlKHNjaGVtYUludHJvc3BlY3Rpb24uc3Vic2NyaXB0aW9uVHlwZSkgOiBudWxsOyAvLyBHZXQgdGhlIGRpcmVjdGl2ZXMgc3VwcG9ydGVkIGJ5IEludHJvc3BlY3Rpb24sIGFzc3VtaW5nIGVtcHR5LXNldCBpZlxuICAvLyBkaXJlY3RpdmVzIHdlcmUgbm90IHF1ZXJpZWQgZm9yLlxuXG4gIHZhciBkaXJlY3RpdmVzID0gc2NoZW1hSW50cm9zcGVjdGlvbi5kaXJlY3RpdmVzID8gc2NoZW1hSW50cm9zcGVjdGlvbi5kaXJlY3RpdmVzLm1hcChidWlsZERpcmVjdGl2ZSkgOiBbXTsgLy8gVGhlbiBwcm9kdWNlIGFuZCByZXR1cm4gYSBTY2hlbWEgd2l0aCB0aGVzZSB0eXBlcy5cblxuICByZXR1cm4gbmV3IEdyYXBoUUxTY2hlbWEoe1xuICAgIGRlc2NyaXB0aW9uOiBzY2hlbWFJbnRyb3NwZWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgIHF1ZXJ5OiBxdWVyeVR5cGUsXG4gICAgbXV0YXRpb246IG11dGF0aW9uVHlwZSxcbiAgICBzdWJzY3JpcHRpb246IHN1YnNjcmlwdGlvblR5cGUsXG4gICAgdHlwZXM6IG9iamVjdFZhbHVlcyh0eXBlTWFwKSxcbiAgICBkaXJlY3RpdmVzOiBkaXJlY3RpdmVzLFxuICAgIGFzc3VtZVZhbGlkOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYXNzdW1lVmFsaWRcbiAgfSk7IC8vIEdpdmVuIGEgdHlwZSByZWZlcmVuY2UgaW4gaW50cm9zcGVjdGlvbiwgcmV0dXJuIHRoZSBHcmFwaFFMVHlwZSBpbnN0YW5jZS5cbiAgLy8gcHJlZmVycmluZyBjYWNoZWQgaW5zdGFuY2VzIGJlZm9yZSBidWlsZGluZyBuZXcgaW5zdGFuY2VzLlxuXG4gIGZ1bmN0aW9uIGdldFR5cGUodHlwZVJlZikge1xuICAgIGlmICh0eXBlUmVmLmtpbmQgPT09IFR5cGVLaW5kLkxJU1QpIHtcbiAgICAgIHZhciBpdGVtUmVmID0gdHlwZVJlZi5vZlR5cGU7XG5cbiAgICAgIGlmICghaXRlbVJlZikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RlY29yYXRlZCB0eXBlIGRlZXBlciB0aGFuIGludHJvc3BlY3Rpb24gcXVlcnkuJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgR3JhcGhRTExpc3QoZ2V0VHlwZShpdGVtUmVmKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVSZWYua2luZCA9PT0gVHlwZUtpbmQuTk9OX05VTEwpIHtcbiAgICAgIHZhciBudWxsYWJsZVJlZiA9IHR5cGVSZWYub2ZUeXBlO1xuXG4gICAgICBpZiAoIW51bGxhYmxlUmVmKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGVjb3JhdGVkIHR5cGUgZGVlcGVyIHRoYW4gaW50cm9zcGVjdGlvbiBxdWVyeS4nKTtcbiAgICAgIH1cblxuICAgICAgdmFyIG51bGxhYmxlVHlwZSA9IGdldFR5cGUobnVsbGFibGVSZWYpO1xuICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMTm9uTnVsbChhc3NlcnROdWxsYWJsZVR5cGUobnVsbGFibGVUeXBlKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldE5hbWVkVHlwZSh0eXBlUmVmKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE5hbWVkVHlwZSh0eXBlUmVmKSB7XG4gICAgdmFyIHR5cGVOYW1lID0gdHlwZVJlZi5uYW1lO1xuXG4gICAgaWYgKCF0eXBlTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biB0eXBlIHJlZmVyZW5jZTogXCIuY29uY2F0KGluc3BlY3QodHlwZVJlZiksIFwiLlwiKSk7XG4gICAgfVxuXG4gICAgdmFyIHR5cGUgPSB0eXBlTWFwW3R5cGVOYW1lXTtcblxuICAgIGlmICghdHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBvciBpbmNvbXBsZXRlIHNjaGVtYSwgdW5rbm93biB0eXBlOiBcIi5jb25jYXQodHlwZU5hbWUsIFwiLiBFbnN1cmUgdGhhdCBhIGZ1bGwgaW50cm9zcGVjdGlvbiBxdWVyeSBpcyB1c2VkIGluIG9yZGVyIHRvIGJ1aWxkIGEgY2xpZW50IHNjaGVtYS5cIikpO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0T2JqZWN0VHlwZSh0eXBlUmVmKSB7XG4gICAgcmV0dXJuIGFzc2VydE9iamVjdFR5cGUoZ2V0TmFtZWRUeXBlKHR5cGVSZWYpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEludGVyZmFjZVR5cGUodHlwZVJlZikge1xuICAgIHJldHVybiBhc3NlcnRJbnRlcmZhY2VUeXBlKGdldE5hbWVkVHlwZSh0eXBlUmVmKSk7XG4gIH0gLy8gR2l2ZW4gYSB0eXBlJ3MgaW50cm9zcGVjdGlvbiByZXN1bHQsIGNvbnN0cnVjdCB0aGUgY29ycmVjdFxuICAvLyBHcmFwaFFMVHlwZSBpbnN0YW5jZS5cblxuXG4gIGZ1bmN0aW9uIGJ1aWxkVHlwZSh0eXBlKSB7XG4gICAgaWYgKHR5cGUgIT0gbnVsbCAmJiB0eXBlLm5hbWUgIT0gbnVsbCAmJiB0eXBlLmtpbmQgIT0gbnVsbCkge1xuICAgICAgc3dpdGNoICh0eXBlLmtpbmQpIHtcbiAgICAgICAgY2FzZSBUeXBlS2luZC5TQ0FMQVI6XG4gICAgICAgICAgcmV0dXJuIGJ1aWxkU2NhbGFyRGVmKHR5cGUpO1xuXG4gICAgICAgIGNhc2UgVHlwZUtpbmQuT0JKRUNUOlxuICAgICAgICAgIHJldHVybiBidWlsZE9iamVjdERlZih0eXBlKTtcblxuICAgICAgICBjYXNlIFR5cGVLaW5kLklOVEVSRkFDRTpcbiAgICAgICAgICByZXR1cm4gYnVpbGRJbnRlcmZhY2VEZWYodHlwZSk7XG5cbiAgICAgICAgY2FzZSBUeXBlS2luZC5VTklPTjpcbiAgICAgICAgICByZXR1cm4gYnVpbGRVbmlvbkRlZih0eXBlKTtcblxuICAgICAgICBjYXNlIFR5cGVLaW5kLkVOVU06XG4gICAgICAgICAgcmV0dXJuIGJ1aWxkRW51bURlZih0eXBlKTtcblxuICAgICAgICBjYXNlIFR5cGVLaW5kLklOUFVUX09CSkVDVDpcbiAgICAgICAgICByZXR1cm4gYnVpbGRJbnB1dE9iamVjdERlZih0eXBlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdHlwZVN0ciA9IGluc3BlY3QodHlwZSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBvciBpbmNvbXBsZXRlIGludHJvc3BlY3Rpb24gcmVzdWx0LiBFbnN1cmUgdGhhdCBhIGZ1bGwgaW50cm9zcGVjdGlvbiBxdWVyeSBpcyB1c2VkIGluIG9yZGVyIHRvIGJ1aWxkIGEgY2xpZW50IHNjaGVtYTogXCIuY29uY2F0KHR5cGVTdHIsIFwiLlwiKSk7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZFNjYWxhckRlZihzY2FsYXJJbnRyb3NwZWN0aW9uKSB7XG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gICAgICBuYW1lOiBzY2FsYXJJbnRyb3NwZWN0aW9uLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogc2NhbGFySW50cm9zcGVjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIHNwZWNpZmllZEJ5VXJsOiBzY2FsYXJJbnRyb3NwZWN0aW9uLnNwZWNpZmllZEJ5VXJsXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZEltcGxlbWVudGF0aW9uc0xpc3QoaW1wbGVtZW50aW5nSW50cm9zcGVjdGlvbikge1xuICAgIC8vIFRPRE86IFRlbXBvcmFyeSB3b3JrYXJvdW5kIHVudGlsIEdyYXBoUUwgZWNvc3lzdGVtIHdpbGwgZnVsbHkgc3VwcG9ydFxuICAgIC8vICdpbnRlcmZhY2VzJyBvbiBpbnRlcmZhY2UgdHlwZXMuXG4gICAgaWYgKGltcGxlbWVudGluZ0ludHJvc3BlY3Rpb24uaW50ZXJmYWNlcyA9PT0gbnVsbCAmJiBpbXBsZW1lbnRpbmdJbnRyb3NwZWN0aW9uLmtpbmQgPT09IFR5cGVLaW5kLklOVEVSRkFDRSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGlmICghaW1wbGVtZW50aW5nSW50cm9zcGVjdGlvbi5pbnRlcmZhY2VzKSB7XG4gICAgICB2YXIgaW1wbGVtZW50aW5nSW50cm9zcGVjdGlvblN0ciA9IGluc3BlY3QoaW1wbGVtZW50aW5nSW50cm9zcGVjdGlvbik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnRyb3NwZWN0aW9uIHJlc3VsdCBtaXNzaW5nIGludGVyZmFjZXM6IFwiLmNvbmNhdChpbXBsZW1lbnRpbmdJbnRyb3NwZWN0aW9uU3RyLCBcIi5cIikpO1xuICAgIH1cblxuICAgIHJldHVybiBpbXBsZW1lbnRpbmdJbnRyb3NwZWN0aW9uLmludGVyZmFjZXMubWFwKGdldEludGVyZmFjZVR5cGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRPYmplY3REZWYob2JqZWN0SW50cm9zcGVjdGlvbikge1xuICAgIHJldHVybiBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgICAgbmFtZTogb2JqZWN0SW50cm9zcGVjdGlvbi5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IG9iamVjdEludHJvc3BlY3Rpb24uZGVzY3JpcHRpb24sXG4gICAgICBpbnRlcmZhY2VzOiBmdW5jdGlvbiBpbnRlcmZhY2VzKCkge1xuICAgICAgICByZXR1cm4gYnVpbGRJbXBsZW1lbnRhdGlvbnNMaXN0KG9iamVjdEludHJvc3BlY3Rpb24pO1xuICAgICAgfSxcbiAgICAgIGZpZWxkczogZnVuY3Rpb24gZmllbGRzKCkge1xuICAgICAgICByZXR1cm4gYnVpbGRGaWVsZERlZk1hcChvYmplY3RJbnRyb3NwZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkSW50ZXJmYWNlRGVmKGludGVyZmFjZUludHJvc3BlY3Rpb24pIHtcbiAgICByZXR1cm4gbmV3IEdyYXBoUUxJbnRlcmZhY2VUeXBlKHtcbiAgICAgIG5hbWU6IGludGVyZmFjZUludHJvc3BlY3Rpb24ubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBpbnRlcmZhY2VJbnRyb3NwZWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgaW50ZXJmYWNlczogZnVuY3Rpb24gaW50ZXJmYWNlcygpIHtcbiAgICAgICAgcmV0dXJuIGJ1aWxkSW1wbGVtZW50YXRpb25zTGlzdChpbnRlcmZhY2VJbnRyb3NwZWN0aW9uKTtcbiAgICAgIH0sXG4gICAgICBmaWVsZHM6IGZ1bmN0aW9uIGZpZWxkcygpIHtcbiAgICAgICAgcmV0dXJuIGJ1aWxkRmllbGREZWZNYXAoaW50ZXJmYWNlSW50cm9zcGVjdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZFVuaW9uRGVmKHVuaW9uSW50cm9zcGVjdGlvbikge1xuICAgIGlmICghdW5pb25JbnRyb3NwZWN0aW9uLnBvc3NpYmxlVHlwZXMpIHtcbiAgICAgIHZhciB1bmlvbkludHJvc3BlY3Rpb25TdHIgPSBpbnNwZWN0KHVuaW9uSW50cm9zcGVjdGlvbik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnRyb3NwZWN0aW9uIHJlc3VsdCBtaXNzaW5nIHBvc3NpYmxlVHlwZXM6IFwiLmNvbmNhdCh1bmlvbkludHJvc3BlY3Rpb25TdHIsIFwiLlwiKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMVW5pb25UeXBlKHtcbiAgICAgIG5hbWU6IHVuaW9uSW50cm9zcGVjdGlvbi5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHVuaW9uSW50cm9zcGVjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIHR5cGVzOiBmdW5jdGlvbiB0eXBlcygpIHtcbiAgICAgICAgcmV0dXJuIHVuaW9uSW50cm9zcGVjdGlvbi5wb3NzaWJsZVR5cGVzLm1hcChnZXRPYmplY3RUeXBlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkRW51bURlZihlbnVtSW50cm9zcGVjdGlvbikge1xuICAgIGlmICghZW51bUludHJvc3BlY3Rpb24uZW51bVZhbHVlcykge1xuICAgICAgdmFyIGVudW1JbnRyb3NwZWN0aW9uU3RyID0gaW5zcGVjdChlbnVtSW50cm9zcGVjdGlvbik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnRyb3NwZWN0aW9uIHJlc3VsdCBtaXNzaW5nIGVudW1WYWx1ZXM6IFwiLmNvbmNhdChlbnVtSW50cm9zcGVjdGlvblN0ciwgXCIuXCIpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEdyYXBoUUxFbnVtVHlwZSh7XG4gICAgICBuYW1lOiBlbnVtSW50cm9zcGVjdGlvbi5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGVudW1JbnRyb3NwZWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgdmFsdWVzOiBrZXlWYWxNYXAoZW51bUludHJvc3BlY3Rpb24uZW51bVZhbHVlcywgZnVuY3Rpb24gKHZhbHVlSW50cm9zcGVjdGlvbikge1xuICAgICAgICByZXR1cm4gdmFsdWVJbnRyb3NwZWN0aW9uLm5hbWU7XG4gICAgICB9LCBmdW5jdGlvbiAodmFsdWVJbnRyb3NwZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246IHZhbHVlSW50cm9zcGVjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICBkZXByZWNhdGlvblJlYXNvbjogdmFsdWVJbnRyb3NwZWN0aW9uLmRlcHJlY2F0aW9uUmVhc29uXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRJbnB1dE9iamVjdERlZihpbnB1dE9iamVjdEludHJvc3BlY3Rpb24pIHtcbiAgICBpZiAoIWlucHV0T2JqZWN0SW50cm9zcGVjdGlvbi5pbnB1dEZpZWxkcykge1xuICAgICAgdmFyIGlucHV0T2JqZWN0SW50cm9zcGVjdGlvblN0ciA9IGluc3BlY3QoaW5wdXRPYmplY3RJbnRyb3NwZWN0aW9uKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludHJvc3BlY3Rpb24gcmVzdWx0IG1pc3NpbmcgaW5wdXRGaWVsZHM6IFwiLmNvbmNhdChpbnB1dE9iamVjdEludHJvc3BlY3Rpb25TdHIsIFwiLlwiKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgICAgIG5hbWU6IGlucHV0T2JqZWN0SW50cm9zcGVjdGlvbi5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGlucHV0T2JqZWN0SW50cm9zcGVjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIGZpZWxkczogZnVuY3Rpb24gZmllbGRzKCkge1xuICAgICAgICByZXR1cm4gYnVpbGRJbnB1dFZhbHVlRGVmTWFwKGlucHV0T2JqZWN0SW50cm9zcGVjdGlvbi5pbnB1dEZpZWxkcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZEZpZWxkRGVmTWFwKHR5cGVJbnRyb3NwZWN0aW9uKSB7XG4gICAgaWYgKCF0eXBlSW50cm9zcGVjdGlvbi5maWVsZHMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludHJvc3BlY3Rpb24gcmVzdWx0IG1pc3NpbmcgZmllbGRzOiBcIi5jb25jYXQoaW5zcGVjdCh0eXBlSW50cm9zcGVjdGlvbiksIFwiLlwiKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleVZhbE1hcCh0eXBlSW50cm9zcGVjdGlvbi5maWVsZHMsIGZ1bmN0aW9uIChmaWVsZEludHJvc3BlY3Rpb24pIHtcbiAgICAgIHJldHVybiBmaWVsZEludHJvc3BlY3Rpb24ubmFtZTtcbiAgICB9LCBidWlsZEZpZWxkKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkRmllbGQoZmllbGRJbnRyb3NwZWN0aW9uKSB7XG4gICAgdmFyIHR5cGUgPSBnZXRUeXBlKGZpZWxkSW50cm9zcGVjdGlvbi50eXBlKTtcblxuICAgIGlmICghaXNPdXRwdXRUeXBlKHR5cGUpKSB7XG4gICAgICB2YXIgdHlwZVN0ciA9IGluc3BlY3QodHlwZSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnRyb3NwZWN0aW9uIG11c3QgcHJvdmlkZSBvdXRwdXQgdHlwZSBmb3IgZmllbGRzLCBidXQgcmVjZWl2ZWQ6IFwiLmNvbmNhdCh0eXBlU3RyLCBcIi5cIikpO1xuICAgIH1cblxuICAgIGlmICghZmllbGRJbnRyb3NwZWN0aW9uLmFyZ3MpIHtcbiAgICAgIHZhciBmaWVsZEludHJvc3BlY3Rpb25TdHIgPSBpbnNwZWN0KGZpZWxkSW50cm9zcGVjdGlvbik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnRyb3NwZWN0aW9uIHJlc3VsdCBtaXNzaW5nIGZpZWxkIGFyZ3M6IFwiLmNvbmNhdChmaWVsZEludHJvc3BlY3Rpb25TdHIsIFwiLlwiKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBmaWVsZEludHJvc3BlY3Rpb24uZGVzY3JpcHRpb24sXG4gICAgICBkZXByZWNhdGlvblJlYXNvbjogZmllbGRJbnRyb3NwZWN0aW9uLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIGFyZ3M6IGJ1aWxkSW5wdXRWYWx1ZURlZk1hcChmaWVsZEludHJvc3BlY3Rpb24uYXJncylcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRJbnB1dFZhbHVlRGVmTWFwKGlucHV0VmFsdWVJbnRyb3NwZWN0aW9ucykge1xuICAgIHJldHVybiBrZXlWYWxNYXAoaW5wdXRWYWx1ZUludHJvc3BlY3Rpb25zLCBmdW5jdGlvbiAoaW5wdXRWYWx1ZSkge1xuICAgICAgcmV0dXJuIGlucHV0VmFsdWUubmFtZTtcbiAgICB9LCBidWlsZElucHV0VmFsdWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRJbnB1dFZhbHVlKGlucHV0VmFsdWVJbnRyb3NwZWN0aW9uKSB7XG4gICAgdmFyIHR5cGUgPSBnZXRUeXBlKGlucHV0VmFsdWVJbnRyb3NwZWN0aW9uLnR5cGUpO1xuXG4gICAgaWYgKCFpc0lucHV0VHlwZSh0eXBlKSkge1xuICAgICAgdmFyIHR5cGVTdHIgPSBpbnNwZWN0KHR5cGUpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW50cm9zcGVjdGlvbiBtdXN0IHByb3ZpZGUgaW5wdXQgdHlwZSBmb3IgYXJndW1lbnRzLCBidXQgcmVjZWl2ZWQ6IFwiLmNvbmNhdCh0eXBlU3RyLCBcIi5cIikpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0VmFsdWUgPSBpbnB1dFZhbHVlSW50cm9zcGVjdGlvbi5kZWZhdWx0VmFsdWUgIT0gbnVsbCA/IHZhbHVlRnJvbUFTVChwYXJzZVZhbHVlKGlucHV0VmFsdWVJbnRyb3NwZWN0aW9uLmRlZmF1bHRWYWx1ZSksIHR5cGUpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmlwdGlvbjogaW5wdXRWYWx1ZUludHJvc3BlY3Rpb24uZGVzY3JpcHRpb24sXG4gICAgICB0eXBlOiB0eXBlLFxuICAgICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWVcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGREaXJlY3RpdmUoZGlyZWN0aXZlSW50cm9zcGVjdGlvbikge1xuICAgIGlmICghZGlyZWN0aXZlSW50cm9zcGVjdGlvbi5hcmdzKSB7XG4gICAgICB2YXIgZGlyZWN0aXZlSW50cm9zcGVjdGlvblN0ciA9IGluc3BlY3QoZGlyZWN0aXZlSW50cm9zcGVjdGlvbik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnRyb3NwZWN0aW9uIHJlc3VsdCBtaXNzaW5nIGRpcmVjdGl2ZSBhcmdzOiBcIi5jb25jYXQoZGlyZWN0aXZlSW50cm9zcGVjdGlvblN0ciwgXCIuXCIpKTtcbiAgICB9XG5cbiAgICBpZiAoIWRpcmVjdGl2ZUludHJvc3BlY3Rpb24ubG9jYXRpb25zKSB7XG4gICAgICB2YXIgX2RpcmVjdGl2ZUludHJvc3BlY3Rpb25TdHIgPSBpbnNwZWN0KGRpcmVjdGl2ZUludHJvc3BlY3Rpb24pO1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnRyb3NwZWN0aW9uIHJlc3VsdCBtaXNzaW5nIGRpcmVjdGl2ZSBsb2NhdGlvbnM6IFwiLmNvbmNhdChfZGlyZWN0aXZlSW50cm9zcGVjdGlvblN0ciwgXCIuXCIpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEdyYXBoUUxEaXJlY3RpdmUoe1xuICAgICAgbmFtZTogZGlyZWN0aXZlSW50cm9zcGVjdGlvbi5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGRpcmVjdGl2ZUludHJvc3BlY3Rpb24uZGVzY3JpcHRpb24sXG4gICAgICBpc1JlcGVhdGFibGU6IGRpcmVjdGl2ZUludHJvc3BlY3Rpb24uaXNSZXBlYXRhYmxlLFxuICAgICAgbG9jYXRpb25zOiBkaXJlY3RpdmVJbnRyb3NwZWN0aW9uLmxvY2F0aW9ucy5zbGljZSgpLFxuICAgICAgYXJnczogYnVpbGRJbnB1dFZhbHVlRGVmTWFwKGRpcmVjdGl2ZUludHJvc3BlY3Rpb24uYXJncylcbiAgICB9KTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/buildClientSchema.mjs\n");
1137
1138/***/ }),
1139
1140/***/ "../../../node_modules/graphql/utilities/coerceInputValue.mjs":
1141/*!***********************************************************************************************!*\
1142 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/coerceInputValue.mjs ***!
1143 \***********************************************************************************************/
1144/*! exports provided: coerceInputValue */
1145/***/ (function(module, __webpack_exports__, __webpack_require__) {
1146
1147"use strict";
1148eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"coerceInputValue\", function() { return coerceInputValue; });\n/* harmony import */ var _polyfills_arrayFrom_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/arrayFrom.mjs */ \"../../../node_modules/graphql/polyfills/arrayFrom.mjs\");\n/* harmony import */ var _polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../polyfills/objectValues.mjs */ \"../../../node_modules/graphql/polyfills/objectValues.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_isCollection_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../jsutils/isCollection.mjs */ \"../../../node_modules/graphql/jsutils/isCollection.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jsutils/suggestionList.mjs */ \"../../../node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _jsutils_printPathArray_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../jsutils/printPathArray.mjs */ \"../../../node_modules/graphql/jsutils/printPathArray.mjs\");\n/* harmony import */ var _jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../jsutils/Path.mjs */ \"../../../node_modules/graphql/jsutils/Path.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Coerces a JavaScript value given a GraphQL Input Type.\n */\nfunction coerceInputValue(inputValue, type) {\n var onError = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultOnError;\n return coerceInputValueImpl(inputValue, type, onError);\n}\n\nfunction defaultOnError(path, invalidValue, error) {\n var errorPrefix = 'Invalid value ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(invalidValue);\n\n if (path.length > 0) {\n errorPrefix += \" at \\\"value\".concat(Object(_jsutils_printPathArray_mjs__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(path), \"\\\"\");\n }\n\n error.message = errorPrefix + ': ' + error.message;\n throw error;\n}\n\nfunction coerceInputValueImpl(inputValue, type, onError, path) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_11__[\"isNonNullType\"])(type)) {\n if (inputValue != null) {\n return coerceInputValueImpl(inputValue, type.ofType, onError, path);\n }\n\n onError(Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_9__[\"pathToArray\"])(path), inputValue, new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](\"Expected non-nullable type \\\"\".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \"\\\" not to be null.\")));\n return;\n }\n\n if (inputValue == null) {\n // Explicitly return the value null.\n return null;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_11__[\"isListType\"])(type)) {\n var itemType = type.ofType;\n\n if (Object(_jsutils_isCollection_mjs__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(inputValue)) {\n return Object(_polyfills_arrayFrom_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(inputValue, function (itemValue, index) {\n var itemPath = Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_9__[\"addPath\"])(path, index, undefined);\n return coerceInputValueImpl(itemValue, itemType, onError, itemPath);\n });\n } // Lists accept a non-list value as a list of one.\n\n\n return [coerceInputValueImpl(inputValue, itemType, onError, path)];\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_11__[\"isInputObjectType\"])(type)) {\n if (!Object(_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(inputValue)) {\n onError(Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_9__[\"pathToArray\"])(path), inputValue, new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](\"Expected type \\\"\".concat(type.name, \"\\\" to be an object.\")));\n return;\n }\n\n var coercedValue = {};\n var fieldDefs = type.getFields();\n\n for (var _i2 = 0, _objectValues2 = Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(fieldDefs); _i2 < _objectValues2.length; _i2++) {\n var field = _objectValues2[_i2];\n var fieldValue = inputValue[field.name];\n\n if (fieldValue === undefined) {\n if (field.defaultValue !== undefined) {\n coercedValue[field.name] = field.defaultValue;\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_11__[\"isNonNullType\"])(field.type)) {\n var typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(field.type);\n onError(Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_9__[\"pathToArray\"])(path), inputValue, new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](\"Field \\\"\".concat(field.name, \"\\\" of required type \\\"\").concat(typeStr, \"\\\" was not provided.\")));\n }\n\n continue;\n }\n\n coercedValue[field.name] = coerceInputValueImpl(fieldValue, field.type, onError, Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_9__[\"addPath\"])(path, field.name, type.name));\n } // Ensure every provided field is defined.\n\n\n for (var _i4 = 0, _Object$keys2 = Object.keys(inputValue); _i4 < _Object$keys2.length; _i4++) {\n var fieldName = _Object$keys2[_i4];\n\n if (!fieldDefs[fieldName]) {\n var suggestions = Object(_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(fieldName, Object.keys(type.getFields()));\n onError(Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_9__[\"pathToArray\"])(path), inputValue, new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](\"Field \\\"\".concat(fieldName, \"\\\" is not defined by type \\\"\").concat(type.name, \"\\\".\") + Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(suggestions)));\n }\n }\n\n return coercedValue;\n } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_11__[\"isLeafType\"])(type)) {\n var parseResult; // Scalars and Enums determine if a input value is valid via parseValue(),\n // which can throw to indicate failure. If it throws, maintain a reference\n // to the original error.\n\n try {\n parseResult = type.parseValue(inputValue);\n } catch (error) {\n if (error instanceof _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"]) {\n onError(Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_9__[\"pathToArray\"])(path), inputValue, error);\n } else {\n onError(Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_9__[\"pathToArray\"])(path), inputValue, new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](\"Expected type \\\"\".concat(type.name, \"\\\". \") + error.message, undefined, undefined, undefined, undefined, error));\n }\n\n return;\n }\n\n if (parseResult === undefined) {\n onError(Object(_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_9__[\"pathToArray\"])(path), inputValue, new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_10__[\"GraphQLError\"](\"Expected type \\\"\".concat(type.name, \"\\\".\")));\n }\n\n return parseResult;\n } // istanbul ignore next (Not reachable. All possible input types have been considered)\n\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(0, 'Unexpected input type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2NvZXJjZUlucHV0VmFsdWUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2NvZXJjZUlucHV0VmFsdWUubWpzPzk2YWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFycmF5RnJvbSBmcm9tIFwiLi4vcG9seWZpbGxzL2FycmF5RnJvbS5tanNcIjtcbmltcG9ydCBvYmplY3RWYWx1ZXMgZnJvbSBcIi4uL3BvbHlmaWxscy9vYmplY3RWYWx1ZXMubWpzXCI7XG5pbXBvcnQgaW5zcGVjdCBmcm9tIFwiLi4vanN1dGlscy9pbnNwZWN0Lm1qc1wiO1xuaW1wb3J0IGludmFyaWFudCBmcm9tIFwiLi4vanN1dGlscy9pbnZhcmlhbnQubWpzXCI7XG5pbXBvcnQgZGlkWW91TWVhbiBmcm9tIFwiLi4vanN1dGlscy9kaWRZb3VNZWFuLm1qc1wiO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tIFwiLi4vanN1dGlscy9pc09iamVjdExpa2UubWpzXCI7XG5pbXBvcnQgaXNDb2xsZWN0aW9uIGZyb20gXCIuLi9qc3V0aWxzL2lzQ29sbGVjdGlvbi5tanNcIjtcbmltcG9ydCBzdWdnZXN0aW9uTGlzdCBmcm9tIFwiLi4vanN1dGlscy9zdWdnZXN0aW9uTGlzdC5tanNcIjtcbmltcG9ydCBwcmludFBhdGhBcnJheSBmcm9tIFwiLi4vanN1dGlscy9wcmludFBhdGhBcnJheS5tanNcIjtcbmltcG9ydCB7IGFkZFBhdGgsIHBhdGhUb0FycmF5IH0gZnJvbSBcIi4uL2pzdXRpbHMvUGF0aC5tanNcIjtcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5pbXBvcnQgeyBpc0xlYWZUeXBlLCBpc0lucHV0T2JqZWN0VHlwZSwgaXNMaXN0VHlwZSwgaXNOb25OdWxsVHlwZSB9IGZyb20gXCIuLi90eXBlL2RlZmluaXRpb24ubWpzXCI7XG5cbi8qKlxuICogQ29lcmNlcyBhIEphdmFTY3JpcHQgdmFsdWUgZ2l2ZW4gYSBHcmFwaFFMIElucHV0IFR5cGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VJbnB1dFZhbHVlKGlucHV0VmFsdWUsIHR5cGUpIHtcbiAgdmFyIG9uRXJyb3IgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IGRlZmF1bHRPbkVycm9yO1xuICByZXR1cm4gY29lcmNlSW5wdXRWYWx1ZUltcGwoaW5wdXRWYWx1ZSwgdHlwZSwgb25FcnJvcik7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRPbkVycm9yKHBhdGgsIGludmFsaWRWYWx1ZSwgZXJyb3IpIHtcbiAgdmFyIGVycm9yUHJlZml4ID0gJ0ludmFsaWQgdmFsdWUgJyArIGluc3BlY3QoaW52YWxpZFZhbHVlKTtcblxuICBpZiAocGF0aC5sZW5ndGggPiAwKSB7XG4gICAgZXJyb3JQcmVmaXggKz0gXCIgYXQgXFxcInZhbHVlXCIuY29uY2F0KHByaW50UGF0aEFycmF5KHBhdGgpLCBcIlxcXCJcIik7XG4gIH1cblxuICBlcnJvci5tZXNzYWdlID0gZXJyb3JQcmVmaXggKyAnOiAnICsgZXJyb3IubWVzc2FnZTtcbiAgdGhyb3cgZXJyb3I7XG59XG5cbmZ1bmN0aW9uIGNvZXJjZUlucHV0VmFsdWVJbXBsKGlucHV0VmFsdWUsIHR5cGUsIG9uRXJyb3IsIHBhdGgpIHtcbiAgaWYgKGlzTm9uTnVsbFR5cGUodHlwZSkpIHtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gY29lcmNlSW5wdXRWYWx1ZUltcGwoaW5wdXRWYWx1ZSwgdHlwZS5vZlR5cGUsIG9uRXJyb3IsIHBhdGgpO1xuICAgIH1cblxuICAgIG9uRXJyb3IocGF0aFRvQXJyYXkocGF0aCksIGlucHV0VmFsdWUsIG5ldyBHcmFwaFFMRXJyb3IoXCJFeHBlY3RlZCBub24tbnVsbGFibGUgdHlwZSBcXFwiXCIuY29uY2F0KGluc3BlY3QodHlwZSksIFwiXFxcIiBub3QgdG8gYmUgbnVsbC5cIikpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoaW5wdXRWYWx1ZSA9PSBudWxsKSB7XG4gICAgLy8gRXhwbGljaXRseSByZXR1cm4gdGhlIHZhbHVlIG51bGwuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoaXNMaXN0VHlwZSh0eXBlKSkge1xuICAgIHZhciBpdGVtVHlwZSA9IHR5cGUub2ZUeXBlO1xuXG4gICAgaWYgKGlzQ29sbGVjdGlvbihpbnB1dFZhbHVlKSkge1xuICAgICAgcmV0dXJuIGFycmF5RnJvbShpbnB1dFZhbHVlLCBmdW5jdGlvbiAoaXRlbVZhbHVlLCBpbmRleCkge1xuICAgICAgICB2YXIgaXRlbVBhdGggPSBhZGRQYXRoKHBhdGgsIGluZGV4LCB1bmRlZmluZWQpO1xuICAgICAgICByZXR1cm4gY29lcmNlSW5wdXRWYWx1ZUltcGwoaXRlbVZhbHVlLCBpdGVtVHlwZSwgb25FcnJvciwgaXRlbVBhdGgpO1xuICAgICAgfSk7XG4gICAgfSAvLyBMaXN0cyBhY2NlcHQgYSBub24tbGlzdCB2YWx1ZSBhcyBhIGxpc3Qgb2Ygb25lLlxuXG5cbiAgICByZXR1cm4gW2NvZXJjZUlucHV0VmFsdWVJbXBsKGlucHV0VmFsdWUsIGl0ZW1UeXBlLCBvbkVycm9yLCBwYXRoKV07XG4gIH1cblxuICBpZiAoaXNJbnB1dE9iamVjdFR5cGUodHlwZSkpIHtcbiAgICBpZiAoIWlzT2JqZWN0TGlrZShpbnB1dFZhbHVlKSkge1xuICAgICAgb25FcnJvcihwYXRoVG9BcnJheShwYXRoKSwgaW5wdXRWYWx1ZSwgbmV3IEdyYXBoUUxFcnJvcihcIkV4cGVjdGVkIHR5cGUgXFxcIlwiLmNvbmNhdCh0eXBlLm5hbWUsIFwiXFxcIiB0byBiZSBhbiBvYmplY3QuXCIpKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGNvZXJjZWRWYWx1ZSA9IHt9O1xuICAgIHZhciBmaWVsZERlZnMgPSB0eXBlLmdldEZpZWxkcygpO1xuXG4gICAgZm9yICh2YXIgX2kyID0gMCwgX29iamVjdFZhbHVlczIgPSBvYmplY3RWYWx1ZXMoZmllbGREZWZzKTsgX2kyIDwgX29iamVjdFZhbHVlczIubGVuZ3RoOyBfaTIrKykge1xuICAgICAgdmFyIGZpZWxkID0gX29iamVjdFZhbHVlczJbX2kyXTtcbiAgICAgIHZhciBmaWVsZFZhbHVlID0gaW5wdXRWYWx1ZVtmaWVsZC5uYW1lXTtcblxuICAgICAgaWYgKGZpZWxkVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoZmllbGQuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb2VyY2VkVmFsdWVbZmllbGQubmFtZV0gPSBmaWVsZC5kZWZhdWx0VmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOb25OdWxsVHlwZShmaWVsZC50eXBlKSkge1xuICAgICAgICAgIHZhciB0eXBlU3RyID0gaW5zcGVjdChmaWVsZC50eXBlKTtcbiAgICAgICAgICBvbkVycm9yKHBhdGhUb0FycmF5KHBhdGgpLCBpbnB1dFZhbHVlLCBuZXcgR3JhcGhRTEVycm9yKFwiRmllbGQgXFxcIlwiLmNvbmNhdChmaWVsZC5uYW1lLCBcIlxcXCIgb2YgcmVxdWlyZWQgdHlwZSBcXFwiXCIpLmNvbmNhdCh0eXBlU3RyLCBcIlxcXCIgd2FzIG5vdCBwcm92aWRlZC5cIikpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb2VyY2VkVmFsdWVbZmllbGQubmFtZV0gPSBjb2VyY2VJbnB1dFZhbHVlSW1wbChmaWVsZFZhbHVlLCBmaWVsZC50eXBlLCBvbkVycm9yLCBhZGRQYXRoKHBhdGgsIGZpZWxkLm5hbWUsIHR5cGUubmFtZSkpO1xuICAgIH0gLy8gRW5zdXJlIGV2ZXJ5IHByb3ZpZGVkIGZpZWxkIGlzIGRlZmluZWQuXG5cblxuICAgIGZvciAodmFyIF9pNCA9IDAsIF9PYmplY3Qka2V5czIgPSBPYmplY3Qua2V5cyhpbnB1dFZhbHVlKTsgX2k0IDwgX09iamVjdCRrZXlzMi5sZW5ndGg7IF9pNCsrKSB7XG4gICAgICB2YXIgZmllbGROYW1lID0gX09iamVjdCRrZXlzMltfaTRdO1xuXG4gICAgICBpZiAoIWZpZWxkRGVmc1tmaWVsZE5hbWVdKSB7XG4gICAgICAgIHZhciBzdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25MaXN0KGZpZWxkTmFtZSwgT2JqZWN0LmtleXModHlwZS5nZXRGaWVsZHMoKSkpO1xuICAgICAgICBvbkVycm9yKHBhdGhUb0FycmF5KHBhdGgpLCBpbnB1dFZhbHVlLCBuZXcgR3JhcGhRTEVycm9yKFwiRmllbGQgXFxcIlwiLmNvbmNhdChmaWVsZE5hbWUsIFwiXFxcIiBpcyBub3QgZGVmaW5lZCBieSB0eXBlIFxcXCJcIikuY29uY2F0KHR5cGUubmFtZSwgXCJcXFwiLlwiKSArIGRpZFlvdU1lYW4oc3VnZ2VzdGlvbnMpKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvZXJjZWRWYWx1ZTtcbiAgfSAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjYxOCcpXG5cblxuICBpZiAoaXNMZWFmVHlwZSh0eXBlKSkge1xuICAgIHZhciBwYXJzZVJlc3VsdDsgLy8gU2NhbGFycyBhbmQgRW51bXMgZGV0ZXJtaW5lIGlmIGEgaW5wdXQgdmFsdWUgaXMgdmFsaWQgdmlhIHBhcnNlVmFsdWUoKSxcbiAgICAvLyB3aGljaCBjYW4gdGhyb3cgdG8gaW5kaWNhdGUgZmFpbHVyZS4gSWYgaXQgdGhyb3dzLCBtYWludGFpbiBhIHJlZmVyZW5jZVxuICAgIC8vIHRvIHRoZSBvcmlnaW5hbCBlcnJvci5cblxuICAgIHRyeSB7XG4gICAgICBwYXJzZVJlc3VsdCA9IHR5cGUucGFyc2VWYWx1ZShpbnB1dFZhbHVlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgR3JhcGhRTEVycm9yKSB7XG4gICAgICAgIG9uRXJyb3IocGF0aFRvQXJyYXkocGF0aCksIGlucHV0VmFsdWUsIGVycm9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uRXJyb3IocGF0aFRvQXJyYXkocGF0aCksIGlucHV0VmFsdWUsIG5ldyBHcmFwaFFMRXJyb3IoXCJFeHBlY3RlZCB0eXBlIFxcXCJcIi5jb25jYXQodHlwZS5uYW1lLCBcIlxcXCIuIFwiKSArIGVycm9yLm1lc3NhZ2UsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZXJyb3IpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwYXJzZVJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBvbkVycm9yKHBhdGhUb0FycmF5KHBhdGgpLCBpbnB1dFZhbHVlLCBuZXcgR3JhcGhRTEVycm9yKFwiRXhwZWN0ZWQgdHlwZSBcXFwiXCIuY29uY2F0KHR5cGUubmFtZSwgXCJcXFwiLlwiKSkpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZVJlc3VsdDtcbiAgfSAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoTm90IHJlYWNoYWJsZS4gQWxsIHBvc3NpYmxlIGlucHV0IHR5cGVzIGhhdmUgYmVlbiBjb25zaWRlcmVkKVxuXG5cbiAgZmFsc2UgfHwgaW52YXJpYW50KDAsICdVbmV4cGVjdGVkIGlucHV0IHR5cGU6ICcgKyBpbnNwZWN0KHR5cGUpKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/coerceInputValue.mjs\n");
1149
1150/***/ }),
1151
1152/***/ "../../../node_modules/graphql/utilities/concatAST.mjs":
1153/*!****************************************************************************************!*\
1154 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/concatAST.mjs ***!
1155 \****************************************************************************************/
1156/*! exports provided: concatAST */
1157/***/ (function(module, __webpack_exports__, __webpack_require__) {
1158
1159"use strict";
1160eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"concatAST\", function() { return concatAST; });\n/**\n * Provided a collection of ASTs, presumably each from different files,\n * concatenate the ASTs together into batched AST, useful for validating many\n * GraphQL source files which together represent one conceptual application.\n */\nfunction concatAST(documents) {\n var definitions = [];\n\n for (var _i2 = 0; _i2 < documents.length; _i2++) {\n var doc = documents[_i2];\n definitions = definitions.concat(doc.definitions);\n }\n\n return {\n kind: 'Document',\n definitions: definitions\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2NvbmNhdEFTVC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvY29uY2F0QVNULm1qcz84MTc2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHJvdmlkZWQgYSBjb2xsZWN0aW9uIG9mIEFTVHMsIHByZXN1bWFibHkgZWFjaCBmcm9tIGRpZmZlcmVudCBmaWxlcyxcbiAqIGNvbmNhdGVuYXRlIHRoZSBBU1RzIHRvZ2V0aGVyIGludG8gYmF0Y2hlZCBBU1QsIHVzZWZ1bCBmb3IgdmFsaWRhdGluZyBtYW55XG4gKiBHcmFwaFFMIHNvdXJjZSBmaWxlcyB3aGljaCB0b2dldGhlciByZXByZXNlbnQgb25lIGNvbmNlcHR1YWwgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25jYXRBU1QoZG9jdW1lbnRzKSB7XG4gIHZhciBkZWZpbml0aW9ucyA9IFtdO1xuXG4gIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGRvY3VtZW50cy5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIGRvYyA9IGRvY3VtZW50c1tfaTJdO1xuICAgIGRlZmluaXRpb25zID0gZGVmaW5pdGlvbnMuY29uY2F0KGRvYy5kZWZpbml0aW9ucyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGtpbmQ6ICdEb2N1bWVudCcsXG4gICAgZGVmaW5pdGlvbnM6IGRlZmluaXRpb25zXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/concatAST.mjs\n");
1161
1162/***/ }),
1163
1164/***/ "../../../node_modules/graphql/utilities/extendSchema.mjs":
1165/*!*******************************************************************************************!*\
1166 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/extendSchema.mjs ***!
1167 \*******************************************************************************************/
1168/*! exports provided: extendSchema, extendSchemaImpl, getDescription */
1169/***/ (function(module, __webpack_exports__, __webpack_require__) {
1170
1171"use strict";
1172eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extendSchema\", function() { return extendSchema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extendSchemaImpl\", function() { return extendSchemaImpl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDescription\", function() { return getDescription; });\n/* harmony import */ var _polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/objectValues.mjs */ \"../../../node_modules/graphql/polyfills/objectValues.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/mapValue.mjs */ \"../../../node_modules/graphql/jsutils/mapValue.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../language/tokenKind.mjs */ \"../../../node_modules/graphql/language/tokenKind.mjs\");\n/* harmony import */ var _language_blockString_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../language/blockString.mjs */ \"../../../node_modules/graphql/language/blockString.mjs\");\n/* harmony import */ var _language_predicates_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../language/predicates.mjs */ \"../../../node_modules/graphql/language/predicates.mjs\");\n/* harmony import */ var _validation_validate_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../validation/validate.mjs */ \"../../../node_modules/graphql/validation/validate.mjs\");\n/* harmony import */ var _execution_values_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../execution/values.mjs */ \"../../../node_modules/graphql/execution/values.mjs\");\n/* harmony import */ var _type_schema_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../type/schema.mjs */ \"../../../node_modules/graphql/type/schema.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../type/scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./valueFromAST.mjs */ \"../../../node_modules/graphql/utilities/valueFromAST.mjs\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Produces a new schema given an existing schema and a document which may\n * contain GraphQL type extensions and definitions. The original schema will\n * remain unaltered.\n *\n * Because a schema represents a graph of references, a schema cannot be\n * extended without effectively making an entire copy. We do not know until it's\n * too late if subgraphs remain unchanged.\n *\n * This algorithm copies the provided schema, applying extensions while\n * producing the copy. The original schema remains unaltered.\n *\n * Accepts options as a third argument:\n *\n * - commentDescriptions:\n * Provide true to use preceding comments as the description.\n *\n */\nfunction extendSchema(schema, documentAST, options) {\n Object(_type_schema_mjs__WEBPACK_IMPORTED_MODULE_12__[\"assertSchema\"])(schema);\n documentAST != null && documentAST.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_6__[\"Kind\"].DOCUMENT || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(0, 'Must provide valid Document AST.');\n\n if ((options === null || options === void 0 ? void 0 : options.assumeValid) !== true && (options === null || options === void 0 ? void 0 : options.assumeValidSDL) !== true) {\n Object(_validation_validate_mjs__WEBPACK_IMPORTED_MODULE_10__[\"assertValidSDLExtension\"])(documentAST, schema);\n }\n\n var schemaConfig = schema.toConfig();\n var extendedConfig = extendSchemaImpl(schemaConfig, documentAST, options);\n return schemaConfig === extendedConfig ? schema : new _type_schema_mjs__WEBPACK_IMPORTED_MODULE_12__[\"GraphQLSchema\"](extendedConfig);\n}\n/**\n * @internal\n */\n\nfunction extendSchemaImpl(schemaConfig, documentAST, options) {\n var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid;\n\n // Collect the type definitions and extensions found in the document.\n var typeDefs = [];\n var typeExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can\n // have the same name. For example, a type named \"skip\".\n\n var directiveDefs = [];\n var schemaDef; // Schema extensions are collected which may add additional operation types.\n\n var schemaExtensions = [];\n\n for (var _i2 = 0, _documentAST$definiti2 = documentAST.definitions; _i2 < _documentAST$definiti2.length; _i2++) {\n var def = _documentAST$definiti2[_i2];\n\n if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_6__[\"Kind\"].SCHEMA_DEFINITION) {\n schemaDef = def;\n } else if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_6__[\"Kind\"].SCHEMA_EXTENSION) {\n schemaExtensions.push(def);\n } else if (Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_9__[\"isTypeDefinitionNode\"])(def)) {\n typeDefs.push(def);\n } else if (Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_9__[\"isTypeExtensionNode\"])(def)) {\n var extendedTypeName = def.name.value;\n var existingTypeExtensions = typeExtensionsMap[extendedTypeName];\n typeExtensionsMap[extendedTypeName] = existingTypeExtensions ? existingTypeExtensions.concat([def]) : [def];\n } else if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_6__[\"Kind\"].DIRECTIVE_DEFINITION) {\n directiveDefs.push(def);\n }\n } // If this document contains no new types, extensions, or directives then\n // return the same unmodified GraphQLSchema instance.\n\n\n if (Object.keys(typeExtensionsMap).length === 0 && typeDefs.length === 0 && directiveDefs.length === 0 && schemaExtensions.length === 0 && schemaDef == null) {\n return schemaConfig;\n }\n\n var typeMap = Object.create(null);\n\n for (var _i4 = 0, _schemaConfig$types2 = schemaConfig.types; _i4 < _schemaConfig$types2.length; _i4++) {\n var existingType = _schemaConfig$types2[_i4];\n typeMap[existingType.name] = extendNamedType(existingType);\n }\n\n for (var _i6 = 0; _i6 < typeDefs.length; _i6++) {\n var _stdTypeMap$name;\n\n var typeNode = typeDefs[_i6];\n var name = typeNode.name.value;\n typeMap[name] = (_stdTypeMap$name = stdTypeMap[name]) !== null && _stdTypeMap$name !== void 0 ? _stdTypeMap$name : buildType(typeNode);\n }\n\n var operationTypes = _objectSpread(_objectSpread({\n // Get the extended root operation types.\n query: schemaConfig.query && replaceNamedType(schemaConfig.query),\n mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation),\n subscription: schemaConfig.subscription && replaceNamedType(schemaConfig.subscription)\n }, schemaDef && getOperationTypes([schemaDef])), getOperationTypes(schemaExtensions)); // Then produce and return a Schema config with these types.\n\n\n return _objectSpread(_objectSpread({\n description: (_schemaDef = schemaDef) === null || _schemaDef === void 0 ? void 0 : (_schemaDef$descriptio = _schemaDef.description) === null || _schemaDef$descriptio === void 0 ? void 0 : _schemaDef$descriptio.value\n }, operationTypes), {}, {\n types: Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(typeMap),\n directives: [].concat(schemaConfig.directives.map(replaceDirective), directiveDefs.map(buildDirective)),\n extensions: undefined,\n astNode: (_schemaDef2 = schemaDef) !== null && _schemaDef2 !== void 0 ? _schemaDef2 : schemaConfig.astNode,\n extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions),\n assumeValid: (_options$assumeValid = options === null || options === void 0 ? void 0 : options.assumeValid) !== null && _options$assumeValid !== void 0 ? _options$assumeValid : false\n }); // Below are functions used for producing this schema that have closed over\n // this scope and have access to the schema, cache, and newly defined types.\n\n function replaceType(type) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"isListType\"])(type)) {\n // $FlowFixMe[incompatible-return]\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"GraphQLList\"](replaceType(type.ofType));\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"isNonNullType\"])(type)) {\n // $FlowFixMe[incompatible-return]\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"GraphQLNonNull\"](replaceType(type.ofType));\n }\n\n return replaceNamedType(type);\n }\n\n function replaceNamedType(type) {\n // Note: While this could make early assertions to get the correctly\n // typed values, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n return typeMap[type.name];\n }\n\n function replaceDirective(directive) {\n var config = directive.toConfig();\n return new _type_directives_mjs__WEBPACK_IMPORTED_MODULE_15__[\"GraphQLDirective\"](_objectSpread(_objectSpread({}, config), {}, {\n args: Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(config.args, extendArg)\n }));\n }\n\n function extendNamedType(type) {\n if (Object(_type_introspection_mjs__WEBPACK_IMPORTED_MODULE_14__[\"isIntrospectionType\"])(type) || Object(_type_scalars_mjs__WEBPACK_IMPORTED_MODULE_13__[\"isSpecifiedScalarType\"])(type)) {\n // Builtin types are not extended.\n return type;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"isScalarType\"])(type)) {\n return extendScalarType(type);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"isObjectType\"])(type)) {\n return extendObjectType(type);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"isInterfaceType\"])(type)) {\n return extendInterfaceType(type);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"isUnionType\"])(type)) {\n return extendUnionType(type);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"isEnumType\"])(type)) {\n return extendEnumType(type);\n } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"isInputObjectType\"])(type)) {\n return extendInputObjectType(type);\n } // istanbul ignore next (Not reachable. All possible types have been considered)\n\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(0, 'Unexpected type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type));\n }\n\n function extendInputObjectType(type) {\n var _typeExtensionsMap$co;\n\n var config = type.toConfig();\n var extensions = (_typeExtensionsMap$co = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co !== void 0 ? _typeExtensionsMap$co : [];\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"GraphQLInputObjectType\"](_objectSpread(_objectSpread({}, config), {}, {\n fields: function fields() {\n return _objectSpread(_objectSpread({}, Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(config.fields, function (field) {\n return _objectSpread(_objectSpread({}, field), {}, {\n type: replaceType(field.type)\n });\n })), buildInputFieldMap(extensions));\n },\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendEnumType(type) {\n var _typeExtensionsMap$ty;\n\n var config = type.toConfig();\n var extensions = (_typeExtensionsMap$ty = typeExtensionsMap[type.name]) !== null && _typeExtensionsMap$ty !== void 0 ? _typeExtensionsMap$ty : [];\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"GraphQLEnumType\"](_objectSpread(_objectSpread({}, config), {}, {\n values: _objectSpread(_objectSpread({}, config.values), buildEnumValueMap(extensions)),\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendScalarType(type) {\n var _typeExtensionsMap$co2;\n\n var config = type.toConfig();\n var extensions = (_typeExtensionsMap$co2 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co2 !== void 0 ? _typeExtensionsMap$co2 : [];\n var specifiedByUrl = config.specifiedByUrl;\n\n for (var _i8 = 0; _i8 < extensions.length; _i8++) {\n var _getSpecifiedByUrl;\n\n var extensionNode = extensions[_i8];\n specifiedByUrl = (_getSpecifiedByUrl = getSpecifiedByUrl(extensionNode)) !== null && _getSpecifiedByUrl !== void 0 ? _getSpecifiedByUrl : specifiedByUrl;\n }\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"GraphQLScalarType\"](_objectSpread(_objectSpread({}, config), {}, {\n specifiedByUrl: specifiedByUrl,\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendObjectType(type) {\n var _typeExtensionsMap$co3;\n\n var config = type.toConfig();\n var extensions = (_typeExtensionsMap$co3 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co3 !== void 0 ? _typeExtensionsMap$co3 : [];\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"GraphQLObjectType\"](_objectSpread(_objectSpread({}, config), {}, {\n interfaces: function interfaces() {\n return [].concat(type.getInterfaces().map(replaceNamedType), buildInterfaces(extensions));\n },\n fields: function fields() {\n return _objectSpread(_objectSpread({}, Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(config.fields, extendField)), buildFieldMap(extensions));\n },\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendInterfaceType(type) {\n var _typeExtensionsMap$co4;\n\n var config = type.toConfig();\n var extensions = (_typeExtensionsMap$co4 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co4 !== void 0 ? _typeExtensionsMap$co4 : [];\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"GraphQLInterfaceType\"](_objectSpread(_objectSpread({}, config), {}, {\n interfaces: function interfaces() {\n return [].concat(type.getInterfaces().map(replaceNamedType), buildInterfaces(extensions));\n },\n fields: function fields() {\n return _objectSpread(_objectSpread({}, Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(config.fields, extendField)), buildFieldMap(extensions));\n },\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendUnionType(type) {\n var _typeExtensionsMap$co5;\n\n var config = type.toConfig();\n var extensions = (_typeExtensionsMap$co5 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co5 !== void 0 ? _typeExtensionsMap$co5 : [];\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"GraphQLUnionType\"](_objectSpread(_objectSpread({}, config), {}, {\n types: function types() {\n return [].concat(type.getTypes().map(replaceNamedType), buildUnionTypes(extensions));\n },\n extensionASTNodes: config.extensionASTNodes.concat(extensions)\n }));\n }\n\n function extendField(field) {\n return _objectSpread(_objectSpread({}, field), {}, {\n type: replaceType(field.type),\n // $FlowFixMe[incompatible-call]\n args: Object(_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(field.args, extendArg)\n });\n }\n\n function extendArg(arg) {\n return _objectSpread(_objectSpread({}, arg), {}, {\n type: replaceType(arg.type)\n });\n }\n\n function getOperationTypes(nodes) {\n var opTypes = {};\n\n for (var _i10 = 0; _i10 < nodes.length; _i10++) {\n var _node$operationTypes;\n\n var node = nodes[_i10];\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n var operationTypesNodes = (_node$operationTypes = node.operationTypes) !== null && _node$operationTypes !== void 0 ? _node$operationTypes : [];\n\n for (var _i12 = 0; _i12 < operationTypesNodes.length; _i12++) {\n var operationType = operationTypesNodes[_i12];\n opTypes[operationType.operation] = getNamedType(operationType.type);\n }\n } // Note: While this could make early assertions to get the correctly\n // typed values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n\n\n return opTypes;\n }\n\n function getNamedType(node) {\n var _stdTypeMap$name2;\n\n var name = node.name.value;\n var type = (_stdTypeMap$name2 = stdTypeMap[name]) !== null && _stdTypeMap$name2 !== void 0 ? _stdTypeMap$name2 : typeMap[name];\n\n if (type === undefined) {\n throw new Error(\"Unknown type: \\\"\".concat(name, \"\\\".\"));\n }\n\n return type;\n }\n\n function getWrappedType(node) {\n if (node.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_6__[\"Kind\"].LIST_TYPE) {\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"GraphQLList\"](getWrappedType(node.type));\n }\n\n if (node.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_6__[\"Kind\"].NON_NULL_TYPE) {\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"GraphQLNonNull\"](getWrappedType(node.type));\n }\n\n return getNamedType(node);\n }\n\n function buildDirective(node) {\n var locations = node.locations.map(function (_ref) {\n var value = _ref.value;\n return value;\n });\n return new _type_directives_mjs__WEBPACK_IMPORTED_MODULE_15__[\"GraphQLDirective\"]({\n name: node.name.value,\n description: getDescription(node, options),\n locations: locations,\n isRepeatable: node.repeatable,\n args: buildArgumentMap(node.arguments),\n astNode: node\n });\n }\n\n function buildFieldMap(nodes) {\n var fieldConfigMap = Object.create(null);\n\n for (var _i14 = 0; _i14 < nodes.length; _i14++) {\n var _node$fields;\n\n var node = nodes[_i14];\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n var nodeFields = (_node$fields = node.fields) !== null && _node$fields !== void 0 ? _node$fields : [];\n\n for (var _i16 = 0; _i16 < nodeFields.length; _i16++) {\n var field = nodeFields[_i16];\n fieldConfigMap[field.name.value] = {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n type: getWrappedType(field.type),\n description: getDescription(field, options),\n args: buildArgumentMap(field.arguments),\n deprecationReason: getDeprecationReason(field),\n astNode: field\n };\n }\n }\n\n return fieldConfigMap;\n }\n\n function buildArgumentMap(args) {\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n var argsNodes = args !== null && args !== void 0 ? args : [];\n var argConfigMap = Object.create(null);\n\n for (var _i18 = 0; _i18 < argsNodes.length; _i18++) {\n var arg = argsNodes[_i18];\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n var type = getWrappedType(arg.type);\n argConfigMap[arg.name.value] = {\n type: type,\n description: getDescription(arg, options),\n defaultValue: Object(_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_17__[\"valueFromAST\"])(arg.defaultValue, type),\n deprecationReason: getDeprecationReason(arg),\n astNode: arg\n };\n }\n\n return argConfigMap;\n }\n\n function buildInputFieldMap(nodes) {\n var inputFieldMap = Object.create(null);\n\n for (var _i20 = 0; _i20 < nodes.length; _i20++) {\n var _node$fields2;\n\n var node = nodes[_i20];\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n var fieldsNodes = (_node$fields2 = node.fields) !== null && _node$fields2 !== void 0 ? _node$fields2 : [];\n\n for (var _i22 = 0; _i22 < fieldsNodes.length; _i22++) {\n var field = fieldsNodes[_i22];\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n var type = getWrappedType(field.type);\n inputFieldMap[field.name.value] = {\n type: type,\n description: getDescription(field, options),\n defaultValue: Object(_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_17__[\"valueFromAST\"])(field.defaultValue, type),\n deprecationReason: getDeprecationReason(field),\n astNode: field\n };\n }\n }\n\n return inputFieldMap;\n }\n\n function buildEnumValueMap(nodes) {\n var enumValueMap = Object.create(null);\n\n for (var _i24 = 0; _i24 < nodes.length; _i24++) {\n var _node$values;\n\n var node = nodes[_i24];\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n var valuesNodes = (_node$values = node.values) !== null && _node$values !== void 0 ? _node$values : [];\n\n for (var _i26 = 0; _i26 < valuesNodes.length; _i26++) {\n var value = valuesNodes[_i26];\n enumValueMap[value.name.value] = {\n description: getDescription(value, options),\n deprecationReason: getDeprecationReason(value),\n astNode: value\n };\n }\n }\n\n return enumValueMap;\n }\n\n function buildInterfaces(nodes) {\n var interfaces = [];\n\n for (var _i28 = 0; _i28 < nodes.length; _i28++) {\n var _node$interfaces;\n\n var node = nodes[_i28];\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n var interfacesNodes = (_node$interfaces = node.interfaces) !== null && _node$interfaces !== void 0 ? _node$interfaces : [];\n\n for (var _i30 = 0; _i30 < interfacesNodes.length; _i30++) {\n var type = interfacesNodes[_i30];\n // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable\n // results.\n interfaces.push(getNamedType(type));\n }\n }\n\n return interfaces;\n }\n\n function buildUnionTypes(nodes) {\n var types = [];\n\n for (var _i32 = 0; _i32 < nodes.length; _i32++) {\n var _node$types;\n\n var node = nodes[_i32];\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n var typeNodes = (_node$types = node.types) !== null && _node$types !== void 0 ? _node$types : [];\n\n for (var _i34 = 0; _i34 < typeNodes.length; _i34++) {\n var type = typeNodes[_i34];\n // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable\n // results.\n types.push(getNamedType(type));\n }\n }\n\n return types;\n }\n\n function buildType(astNode) {\n var _typeExtensionsMap$na;\n\n var name = astNode.name.value;\n var description = getDescription(astNode, options);\n var extensionNodes = (_typeExtensionsMap$na = typeExtensionsMap[name]) !== null && _typeExtensionsMap$na !== void 0 ? _typeExtensionsMap$na : [];\n\n switch (astNode.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_6__[\"Kind\"].OBJECT_TYPE_DEFINITION:\n {\n var extensionASTNodes = extensionNodes;\n var allNodes = [astNode].concat(extensionASTNodes);\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"GraphQLObjectType\"]({\n name: name,\n description: description,\n interfaces: function interfaces() {\n return buildInterfaces(allNodes);\n },\n fields: function fields() {\n return buildFieldMap(allNodes);\n },\n astNode: astNode,\n extensionASTNodes: extensionASTNodes\n });\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_6__[\"Kind\"].INTERFACE_TYPE_DEFINITION:\n {\n var _extensionASTNodes = extensionNodes;\n\n var _allNodes = [astNode].concat(_extensionASTNodes);\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"GraphQLInterfaceType\"]({\n name: name,\n description: description,\n interfaces: function interfaces() {\n return buildInterfaces(_allNodes);\n },\n fields: function fields() {\n return buildFieldMap(_allNodes);\n },\n astNode: astNode,\n extensionASTNodes: _extensionASTNodes\n });\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_6__[\"Kind\"].ENUM_TYPE_DEFINITION:\n {\n var _extensionASTNodes2 = extensionNodes;\n\n var _allNodes2 = [astNode].concat(_extensionASTNodes2);\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"GraphQLEnumType\"]({\n name: name,\n description: description,\n values: buildEnumValueMap(_allNodes2),\n astNode: astNode,\n extensionASTNodes: _extensionASTNodes2\n });\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_6__[\"Kind\"].UNION_TYPE_DEFINITION:\n {\n var _extensionASTNodes3 = extensionNodes;\n\n var _allNodes3 = [astNode].concat(_extensionASTNodes3);\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"GraphQLUnionType\"]({\n name: name,\n description: description,\n types: function types() {\n return buildUnionTypes(_allNodes3);\n },\n astNode: astNode,\n extensionASTNodes: _extensionASTNodes3\n });\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_6__[\"Kind\"].SCALAR_TYPE_DEFINITION:\n {\n var _extensionASTNodes4 = extensionNodes;\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"GraphQLScalarType\"]({\n name: name,\n description: description,\n specifiedByUrl: getSpecifiedByUrl(astNode),\n astNode: astNode,\n extensionASTNodes: _extensionASTNodes4\n });\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_6__[\"Kind\"].INPUT_OBJECT_TYPE_DEFINITION:\n {\n var _extensionASTNodes5 = extensionNodes;\n\n var _allNodes4 = [astNode].concat(_extensionASTNodes5);\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_16__[\"GraphQLInputObjectType\"]({\n name: name,\n description: description,\n fields: function fields() {\n return buildInputFieldMap(_allNodes4);\n },\n astNode: astNode,\n extensionASTNodes: _extensionASTNodes5\n });\n }\n } // istanbul ignore next (Not reachable. All possible type definition nodes have been considered)\n\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(0, 'Unexpected type definition node: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(astNode));\n }\n}\nvar stdTypeMap = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_type_scalars_mjs__WEBPACK_IMPORTED_MODULE_13__[\"specifiedScalarTypes\"].concat(_type_introspection_mjs__WEBPACK_IMPORTED_MODULE_14__[\"introspectionTypes\"]), function (type) {\n return type.name;\n});\n/**\n * Given a field or enum value node, returns the string value for the\n * deprecation reason.\n */\n\nfunction getDeprecationReason(node) {\n var deprecated = Object(_execution_values_mjs__WEBPACK_IMPORTED_MODULE_11__[\"getDirectiveValues\"])(_type_directives_mjs__WEBPACK_IMPORTED_MODULE_15__[\"GraphQLDeprecatedDirective\"], node);\n return deprecated === null || deprecated === void 0 ? void 0 : deprecated.reason;\n}\n/**\n * Given a scalar node, returns the string value for the specifiedByUrl.\n */\n\n\nfunction getSpecifiedByUrl(node) {\n var specifiedBy = Object(_execution_values_mjs__WEBPACK_IMPORTED_MODULE_11__[\"getDirectiveValues\"])(_type_directives_mjs__WEBPACK_IMPORTED_MODULE_15__[\"GraphQLSpecifiedByDirective\"], node);\n return specifiedBy === null || specifiedBy === void 0 ? void 0 : specifiedBy.url;\n}\n/**\n * Given an ast node, returns its string description.\n * @deprecated: provided to ease adoption and will be removed in v16.\n *\n * Accepts options as a second argument:\n *\n * - commentDescriptions:\n * Provide true to use preceding comments as the description.\n *\n */\n\n\nfunction getDescription(node, options) {\n if (node.description) {\n return node.description.value;\n }\n\n if ((options === null || options === void 0 ? void 0 : options.commentDescriptions) === true) {\n var rawValue = getLeadingCommentBlock(node);\n\n if (rawValue !== undefined) {\n return Object(_language_blockString_mjs__WEBPACK_IMPORTED_MODULE_8__[\"dedentBlockStringValue\"])('\\n' + rawValue);\n }\n }\n}\n\nfunction getLeadingCommentBlock(node) {\n var loc = node.loc;\n\n if (!loc) {\n return;\n }\n\n var comments = [];\n var token = loc.startToken.prev;\n\n while (token != null && token.kind === _language_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_7__[\"TokenKind\"].COMMENT && token.next && token.prev && token.line + 1 === token.next.line && token.line !== token.prev.line) {\n var value = String(token.value);\n comments.push(value);\n token = token.prev;\n }\n\n return comments.length > 0 ? comments.reverse().join('\\n') : undefined;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2V4dGVuZFNjaGVtYS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvZXh0ZW5kU2NoZW1hLm1qcz8wM2ZiIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgb2JqZWN0VmFsdWVzIGZyb20gXCIuLi9wb2x5ZmlsbHMvb2JqZWN0VmFsdWVzLm1qc1wiO1xuaW1wb3J0IGtleU1hcCBmcm9tIFwiLi4vanN1dGlscy9rZXlNYXAubWpzXCI7XG5pbXBvcnQgaW5zcGVjdCBmcm9tIFwiLi4vanN1dGlscy9pbnNwZWN0Lm1qc1wiO1xuaW1wb3J0IG1hcFZhbHVlIGZyb20gXCIuLi9qc3V0aWxzL21hcFZhbHVlLm1qc1wiO1xuaW1wb3J0IGludmFyaWFudCBmcm9tIFwiLi4vanN1dGlscy9pbnZhcmlhbnQubWpzXCI7XG5pbXBvcnQgZGV2QXNzZXJ0IGZyb20gXCIuLi9qc3V0aWxzL2RldkFzc2VydC5tanNcIjtcbmltcG9ydCB7IEtpbmQgfSBmcm9tIFwiLi4vbGFuZ3VhZ2Uva2luZHMubWpzXCI7XG5pbXBvcnQgeyBUb2tlbktpbmQgfSBmcm9tIFwiLi4vbGFuZ3VhZ2UvdG9rZW5LaW5kLm1qc1wiO1xuaW1wb3J0IHsgZGVkZW50QmxvY2tTdHJpbmdWYWx1ZSB9IGZyb20gXCIuLi9sYW5ndWFnZS9ibG9ja1N0cmluZy5tanNcIjtcbmltcG9ydCB7IGlzVHlwZURlZmluaXRpb25Ob2RlLCBpc1R5cGVFeHRlbnNpb25Ob2RlIH0gZnJvbSBcIi4uL2xhbmd1YWdlL3ByZWRpY2F0ZXMubWpzXCI7XG5pbXBvcnQgeyBhc3NlcnRWYWxpZFNETEV4dGVuc2lvbiB9IGZyb20gXCIuLi92YWxpZGF0aW9uL3ZhbGlkYXRlLm1qc1wiO1xuaW1wb3J0IHsgZ2V0RGlyZWN0aXZlVmFsdWVzIH0gZnJvbSBcIi4uL2V4ZWN1dGlvbi92YWx1ZXMubWpzXCI7XG5pbXBvcnQgeyBhc3NlcnRTY2hlbWEsIEdyYXBoUUxTY2hlbWEgfSBmcm9tIFwiLi4vdHlwZS9zY2hlbWEubWpzXCI7XG5pbXBvcnQgeyBzcGVjaWZpZWRTY2FsYXJUeXBlcywgaXNTcGVjaWZpZWRTY2FsYXJUeXBlIH0gZnJvbSBcIi4uL3R5cGUvc2NhbGFycy5tanNcIjtcbmltcG9ydCB7IGludHJvc3BlY3Rpb25UeXBlcywgaXNJbnRyb3NwZWN0aW9uVHlwZSB9IGZyb20gXCIuLi90eXBlL2ludHJvc3BlY3Rpb24ubWpzXCI7XG5pbXBvcnQgeyBHcmFwaFFMRGlyZWN0aXZlLCBHcmFwaFFMRGVwcmVjYXRlZERpcmVjdGl2ZSwgR3JhcGhRTFNwZWNpZmllZEJ5RGlyZWN0aXZlIH0gZnJvbSBcIi4uL3R5cGUvZGlyZWN0aXZlcy5tanNcIjtcbmltcG9ydCB7IGlzU2NhbGFyVHlwZSwgaXNPYmplY3RUeXBlLCBpc0ludGVyZmFjZVR5cGUsIGlzVW5pb25UeXBlLCBpc0xpc3RUeXBlLCBpc05vbk51bGxUeXBlLCBpc0VudW1UeXBlLCBpc0lucHV0T2JqZWN0VHlwZSwgR3JhcGhRTExpc3QsIEdyYXBoUUxOb25OdWxsLCBHcmFwaFFMU2NhbGFyVHlwZSwgR3JhcGhRTE9iamVjdFR5cGUsIEdyYXBoUUxJbnRlcmZhY2VUeXBlLCBHcmFwaFFMVW5pb25UeXBlLCBHcmFwaFFMRW51bVR5cGUsIEdyYXBoUUxJbnB1dE9iamVjdFR5cGUgfSBmcm9tIFwiLi4vdHlwZS9kZWZpbml0aW9uLm1qc1wiO1xuaW1wb3J0IHsgdmFsdWVGcm9tQVNUIH0gZnJvbSBcIi4vdmFsdWVGcm9tQVNULm1qc1wiO1xuXG4vKipcbiAqIFByb2R1Y2VzIGEgbmV3IHNjaGVtYSBnaXZlbiBhbiBleGlzdGluZyBzY2hlbWEgYW5kIGEgZG9jdW1lbnQgd2hpY2ggbWF5XG4gKiBjb250YWluIEdyYXBoUUwgdHlwZSBleHRlbnNpb25zIGFuZCBkZWZpbml0aW9ucy4gVGhlIG9yaWdpbmFsIHNjaGVtYSB3aWxsXG4gKiByZW1haW4gdW5hbHRlcmVkLlxuICpcbiAqIEJlY2F1c2UgYSBzY2hlbWEgcmVwcmVzZW50cyBhIGdyYXBoIG9mIHJlZmVyZW5jZXMsIGEgc2NoZW1hIGNhbm5vdCBiZVxuICogZXh0ZW5kZWQgd2l0aG91dCBlZmZlY3RpdmVseSBtYWtpbmcgYW4gZW50aXJlIGNvcHkuIFdlIGRvIG5vdCBrbm93IHVudGlsIGl0J3NcbiAqIHRvbyBsYXRlIGlmIHN1YmdyYXBocyByZW1haW4gdW5jaGFuZ2VkLlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIGNvcGllcyB0aGUgcHJvdmlkZWQgc2NoZW1hLCBhcHBseWluZyBleHRlbnNpb25zIHdoaWxlXG4gKiBwcm9kdWNpbmcgdGhlIGNvcHkuIFRoZSBvcmlnaW5hbCBzY2hlbWEgcmVtYWlucyB1bmFsdGVyZWQuXG4gKlxuICogQWNjZXB0cyBvcHRpb25zIGFzIGEgdGhpcmQgYXJndW1lbnQ6XG4gKlxuICogICAgLSBjb21tZW50RGVzY3JpcHRpb25zOlxuICogICAgICAgIFByb3ZpZGUgdHJ1ZSB0byB1c2UgcHJlY2VkaW5nIGNvbW1lbnRzIGFzIHRoZSBkZXNjcmlwdGlvbi5cbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmRTY2hlbWEoc2NoZW1hLCBkb2N1bWVudEFTVCwgb3B0aW9ucykge1xuICBhc3NlcnRTY2hlbWEoc2NoZW1hKTtcbiAgZG9jdW1lbnRBU1QgIT0gbnVsbCAmJiBkb2N1bWVudEFTVC5raW5kID09PSBLaW5kLkRPQ1VNRU5UIHx8IGRldkFzc2VydCgwLCAnTXVzdCBwcm92aWRlIHZhbGlkIERvY3VtZW50IEFTVC4nKTtcblxuICBpZiAoKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5hc3N1bWVWYWxpZCkgIT09IHRydWUgJiYgKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5hc3N1bWVWYWxpZFNETCkgIT09IHRydWUpIHtcbiAgICBhc3NlcnRWYWxpZFNETEV4dGVuc2lvbihkb2N1bWVudEFTVCwgc2NoZW1hKTtcbiAgfVxuXG4gIHZhciBzY2hlbWFDb25maWcgPSBzY2hlbWEudG9Db25maWcoKTtcbiAgdmFyIGV4dGVuZGVkQ29uZmlnID0gZXh0ZW5kU2NoZW1hSW1wbChzY2hlbWFDb25maWcsIGRvY3VtZW50QVNULCBvcHRpb25zKTtcbiAgcmV0dXJuIHNjaGVtYUNvbmZpZyA9PT0gZXh0ZW5kZWRDb25maWcgPyBzY2hlbWEgOiBuZXcgR3JhcGhRTFNjaGVtYShleHRlbmRlZENvbmZpZyk7XG59XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmRTY2hlbWFJbXBsKHNjaGVtYUNvbmZpZywgZG9jdW1lbnRBU1QsIG9wdGlvbnMpIHtcbiAgdmFyIF9zY2hlbWFEZWYsIF9zY2hlbWFEZWYkZGVzY3JpcHRpbywgX3NjaGVtYURlZjIsIF9vcHRpb25zJGFzc3VtZVZhbGlkO1xuXG4gIC8vIENvbGxlY3QgdGhlIHR5cGUgZGVmaW5pdGlvbnMgYW5kIGV4dGVuc2lvbnMgZm91bmQgaW4gdGhlIGRvY3VtZW50LlxuICB2YXIgdHlwZURlZnMgPSBbXTtcbiAgdmFyIHR5cGVFeHRlbnNpb25zTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTsgLy8gTmV3IGRpcmVjdGl2ZXMgYW5kIHR5cGVzIGFyZSBzZXBhcmF0ZSBiZWNhdXNlIGEgZGlyZWN0aXZlcyBhbmQgdHlwZXMgY2FuXG4gIC8vIGhhdmUgdGhlIHNhbWUgbmFtZS4gRm9yIGV4YW1wbGUsIGEgdHlwZSBuYW1lZCBcInNraXBcIi5cblxuICB2YXIgZGlyZWN0aXZlRGVmcyA9IFtdO1xuICB2YXIgc2NoZW1hRGVmOyAvLyBTY2hlbWEgZXh0ZW5zaW9ucyBhcmUgY29sbGVjdGVkIHdoaWNoIG1heSBhZGQgYWRkaXRpb25hbCBvcGVyYXRpb24gdHlwZXMuXG5cbiAgdmFyIHNjaGVtYUV4dGVuc2lvbnMgPSBbXTtcblxuICBmb3IgKHZhciBfaTIgPSAwLCBfZG9jdW1lbnRBU1QkZGVmaW5pdGkyID0gZG9jdW1lbnRBU1QuZGVmaW5pdGlvbnM7IF9pMiA8IF9kb2N1bWVudEFTVCRkZWZpbml0aTIubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBkZWYgPSBfZG9jdW1lbnRBU1QkZGVmaW5pdGkyW19pMl07XG5cbiAgICBpZiAoZGVmLmtpbmQgPT09IEtpbmQuU0NIRU1BX0RFRklOSVRJT04pIHtcbiAgICAgIHNjaGVtYURlZiA9IGRlZjtcbiAgICB9IGVsc2UgaWYgKGRlZi5raW5kID09PSBLaW5kLlNDSEVNQV9FWFRFTlNJT04pIHtcbiAgICAgIHNjaGVtYUV4dGVuc2lvbnMucHVzaChkZWYpO1xuICAgIH0gZWxzZSBpZiAoaXNUeXBlRGVmaW5pdGlvbk5vZGUoZGVmKSkge1xuICAgICAgdHlwZURlZnMucHVzaChkZWYpO1xuICAgIH0gZWxzZSBpZiAoaXNUeXBlRXh0ZW5zaW9uTm9kZShkZWYpKSB7XG4gICAgICB2YXIgZXh0ZW5kZWRUeXBlTmFtZSA9IGRlZi5uYW1lLnZhbHVlO1xuICAgICAgdmFyIGV4aXN0aW5nVHlwZUV4dGVuc2lvbnMgPSB0eXBlRXh0ZW5zaW9uc01hcFtleHRlbmRlZFR5cGVOYW1lXTtcbiAgICAgIHR5cGVFeHRlbnNpb25zTWFwW2V4dGVuZGVkVHlwZU5hbWVdID0gZXhpc3RpbmdUeXBlRXh0ZW5zaW9ucyA/IGV4aXN0aW5nVHlwZUV4dGVuc2lvbnMuY29uY2F0KFtkZWZdKSA6IFtkZWZdO1xuICAgIH0gZWxzZSBpZiAoZGVmLmtpbmQgPT09IEtpbmQuRElSRUNUSVZFX0RFRklOSVRJT04pIHtcbiAgICAgIGRpcmVjdGl2ZURlZnMucHVzaChkZWYpO1xuICAgIH1cbiAgfSAvLyBJZiB0aGlzIGRvY3VtZW50IGNvbnRhaW5zIG5vIG5ldyB0eXBlcywgZXh0ZW5zaW9ucywgb3IgZGlyZWN0aXZlcyB0aGVuXG4gIC8vIHJldHVybiB0aGUgc2FtZSB1bm1vZGlmaWVkIEdyYXBoUUxTY2hlbWEgaW5zdGFuY2UuXG5cblxuICBpZiAoT2JqZWN0LmtleXModHlwZUV4dGVuc2lvbnNNYXApLmxlbmd0aCA9PT0gMCAmJiB0eXBlRGVmcy5sZW5ndGggPT09IDAgJiYgZGlyZWN0aXZlRGVmcy5sZW5ndGggPT09IDAgJiYgc2NoZW1hRXh0ZW5zaW9ucy5sZW5ndGggPT09IDAgJiYgc2NoZW1hRGVmID09IG51bGwpIHtcbiAgICByZXR1cm4gc2NoZW1hQ29uZmlnO1xuICB9XG5cbiAgdmFyIHR5cGVNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAodmFyIF9pNCA9IDAsIF9zY2hlbWFDb25maWckdHlwZXMyID0gc2NoZW1hQ29uZmlnLnR5cGVzOyBfaTQgPCBfc2NoZW1hQ29uZmlnJHR5cGVzMi5sZW5ndGg7IF9pNCsrKSB7XG4gICAgdmFyIGV4aXN0aW5nVHlwZSA9IF9zY2hlbWFDb25maWckdHlwZXMyW19pNF07XG4gICAgdHlwZU1hcFtleGlzdGluZ1R5cGUubmFtZV0gPSBleHRlbmROYW1lZFR5cGUoZXhpc3RpbmdUeXBlKTtcbiAgfVxuXG4gIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IHR5cGVEZWZzLmxlbmd0aDsgX2k2KyspIHtcbiAgICB2YXIgX3N0ZFR5cGVNYXAkbmFtZTtcblxuICAgIHZhciB0eXBlTm9kZSA9IHR5cGVEZWZzW19pNl07XG4gICAgdmFyIG5hbWUgPSB0eXBlTm9kZS5uYW1lLnZhbHVlO1xuICAgIHR5cGVNYXBbbmFtZV0gPSAoX3N0ZFR5cGVNYXAkbmFtZSA9IHN0ZFR5cGVNYXBbbmFtZV0pICE9PSBudWxsICYmIF9zdGRUeXBlTWFwJG5hbWUgIT09IHZvaWQgMCA/IF9zdGRUeXBlTWFwJG5hbWUgOiBidWlsZFR5cGUodHlwZU5vZGUpO1xuICB9XG5cbiAgdmFyIG9wZXJhdGlvblR5cGVzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAvLyBHZXQgdGhlIGV4dGVuZGVkIHJvb3Qgb3BlcmF0aW9uIHR5cGVzLlxuICAgIHF1ZXJ5OiBzY2hlbWFDb25maWcucXVlcnkgJiYgcmVwbGFjZU5hbWVkVHlwZShzY2hlbWFDb25maWcucXVlcnkpLFxuICAgIG11dGF0aW9uOiBzY2hlbWFDb25maWcubXV0YXRpb24gJiYgcmVwbGFjZU5hbWVkVHlwZShzY2hlbWFDb25maWcubXV0YXRpb24pLFxuICAgIHN1YnNjcmlwdGlvbjogc2NoZW1hQ29uZmlnLnN1YnNjcmlwdGlvbiAmJiByZXBsYWNlTmFtZWRUeXBlKHNjaGVtYUNvbmZpZy5zdWJzY3JpcHRpb24pXG4gIH0sIHNjaGVtYURlZiAmJiBnZXRPcGVyYXRpb25UeXBlcyhbc2NoZW1hRGVmXSkpLCBnZXRPcGVyYXRpb25UeXBlcyhzY2hlbWFFeHRlbnNpb25zKSk7IC8vIFRoZW4gcHJvZHVjZSBhbmQgcmV0dXJuIGEgU2NoZW1hIGNvbmZpZyB3aXRoIHRoZXNlIHR5cGVzLlxuXG5cbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgZGVzY3JpcHRpb246IChfc2NoZW1hRGVmID0gc2NoZW1hRGVmKSA9PT0gbnVsbCB8fCBfc2NoZW1hRGVmID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX3NjaGVtYURlZiRkZXNjcmlwdGlvID0gX3NjaGVtYURlZi5kZXNjcmlwdGlvbikgPT09IG51bGwgfHwgX3NjaGVtYURlZiRkZXNjcmlwdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfc2NoZW1hRGVmJGRlc2NyaXB0aW8udmFsdWVcbiAgfSwgb3BlcmF0aW9uVHlwZXMpLCB7fSwge1xuICAgIHR5cGVzOiBvYmplY3RWYWx1ZXModHlwZU1hcCksXG4gICAgZGlyZWN0aXZlczogW10uY29uY2F0KHNjaGVtYUNvbmZpZy5kaXJlY3RpdmVzLm1hcChyZXBsYWNlRGlyZWN0aXZlKSwgZGlyZWN0aXZlRGVmcy5tYXAoYnVpbGREaXJlY3RpdmUpKSxcbiAgICBleHRlbnNpb25zOiB1bmRlZmluZWQsXG4gICAgYXN0Tm9kZTogKF9zY2hlbWFEZWYyID0gc2NoZW1hRGVmKSAhPT0gbnVsbCAmJiBfc2NoZW1hRGVmMiAhPT0gdm9pZCAwID8gX3NjaGVtYURlZjIgOiBzY2hlbWFDb25maWcuYXN0Tm9kZSxcbiAgICBleHRlbnNpb25BU1ROb2Rlczogc2NoZW1hQ29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzLmNvbmNhdChzY2hlbWFFeHRlbnNpb25zKSxcbiAgICBhc3N1bWVWYWxpZDogKF9vcHRpb25zJGFzc3VtZVZhbGlkID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmFzc3VtZVZhbGlkKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRhc3N1bWVWYWxpZCAhPT0gdm9pZCAwID8gX29wdGlvbnMkYXNzdW1lVmFsaWQgOiBmYWxzZVxuICB9KTsgLy8gQmVsb3cgYXJlIGZ1bmN0aW9ucyB1c2VkIGZvciBwcm9kdWNpbmcgdGhpcyBzY2hlbWEgdGhhdCBoYXZlIGNsb3NlZCBvdmVyXG4gIC8vIHRoaXMgc2NvcGUgYW5kIGhhdmUgYWNjZXNzIHRvIHRoZSBzY2hlbWEsIGNhY2hlLCBhbmQgbmV3bHkgZGVmaW5lZCB0eXBlcy5cblxuICBmdW5jdGlvbiByZXBsYWNlVHlwZSh0eXBlKSB7XG4gICAgaWYgKGlzTGlzdFR5cGUodHlwZSkpIHtcbiAgICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl1cbiAgICAgIHJldHVybiBuZXcgR3JhcGhRTExpc3QocmVwbGFjZVR5cGUodHlwZS5vZlR5cGUpKTtcbiAgICB9XG5cbiAgICBpZiAoaXNOb25OdWxsVHlwZSh0eXBlKSkge1xuICAgICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXVxuICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMTm9uTnVsbChyZXBsYWNlVHlwZSh0eXBlLm9mVHlwZSkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXBsYWNlTmFtZWRUeXBlKHR5cGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZU5hbWVkVHlwZSh0eXBlKSB7XG4gICAgLy8gTm90ZTogV2hpbGUgdGhpcyBjb3VsZCBtYWtlIGVhcmx5IGFzc2VydGlvbnMgdG8gZ2V0IHRoZSBjb3JyZWN0bHlcbiAgICAvLyB0eXBlZCB2YWx1ZXMsIHRoYXQgd291bGQgdGhyb3cgaW1tZWRpYXRlbHkgd2hpbGUgdHlwZSBzeXN0ZW1cbiAgICAvLyB2YWxpZGF0aW9uIHdpdGggdmFsaWRhdGVTY2hlbWEoKSB3aWxsIHByb2R1Y2UgbW9yZSBhY3Rpb25hYmxlIHJlc3VsdHMuXG4gICAgcmV0dXJuIHR5cGVNYXBbdHlwZS5uYW1lXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlcGxhY2VEaXJlY3RpdmUoZGlyZWN0aXZlKSB7XG4gICAgdmFyIGNvbmZpZyA9IGRpcmVjdGl2ZS50b0NvbmZpZygpO1xuICAgIHJldHVybiBuZXcgR3JhcGhRTERpcmVjdGl2ZShfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGNvbmZpZyksIHt9LCB7XG4gICAgICBhcmdzOiBtYXBWYWx1ZShjb25maWcuYXJncywgZXh0ZW5kQXJnKVxuICAgIH0pKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dGVuZE5hbWVkVHlwZSh0eXBlKSB7XG4gICAgaWYgKGlzSW50cm9zcGVjdGlvblR5cGUodHlwZSkgfHwgaXNTcGVjaWZpZWRTY2FsYXJUeXBlKHR5cGUpKSB7XG4gICAgICAvLyBCdWlsdGluIHR5cGVzIGFyZSBub3QgZXh0ZW5kZWQuXG4gICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG5cbiAgICBpZiAoaXNTY2FsYXJUeXBlKHR5cGUpKSB7XG4gICAgICByZXR1cm4gZXh0ZW5kU2NhbGFyVHlwZSh0eXBlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgICByZXR1cm4gZXh0ZW5kT2JqZWN0VHlwZSh0eXBlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNJbnRlcmZhY2VUeXBlKHR5cGUpKSB7XG4gICAgICByZXR1cm4gZXh0ZW5kSW50ZXJmYWNlVHlwZSh0eXBlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNVbmlvblR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybiBleHRlbmRVbmlvblR5cGUodHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzRW51bVR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybiBleHRlbmRFbnVtVHlwZSh0eXBlKTtcbiAgICB9IC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlIChTZWU6ICdodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yNjE4JylcblxuXG4gICAgaWYgKGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgICByZXR1cm4gZXh0ZW5kSW5wdXRPYmplY3RUeXBlKHR5cGUpO1xuICAgIH0gLy8gaXN0YW5idWwgaWdub3JlIG5leHQgKE5vdCByZWFjaGFibGUuIEFsbCBwb3NzaWJsZSB0eXBlcyBoYXZlIGJlZW4gY29uc2lkZXJlZClcblxuXG4gICAgZmFsc2UgfHwgaW52YXJpYW50KDAsICdVbmV4cGVjdGVkIHR5cGU6ICcgKyBpbnNwZWN0KHR5cGUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dGVuZElucHV0T2JqZWN0VHlwZSh0eXBlKSB7XG4gICAgdmFyIF90eXBlRXh0ZW5zaW9uc01hcCRjbztcblxuICAgIHZhciBjb25maWcgPSB0eXBlLnRvQ29uZmlnKCk7XG4gICAgdmFyIGV4dGVuc2lvbnMgPSAoX3R5cGVFeHRlbnNpb25zTWFwJGNvID0gdHlwZUV4dGVuc2lvbnNNYXBbY29uZmlnLm5hbWVdKSAhPT0gbnVsbCAmJiBfdHlwZUV4dGVuc2lvbnNNYXAkY28gIT09IHZvaWQgMCA/IF90eXBlRXh0ZW5zaW9uc01hcCRjbyA6IFtdO1xuICAgIHJldHVybiBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZShfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGNvbmZpZyksIHt9LCB7XG4gICAgICBmaWVsZHM6IGZ1bmN0aW9uIGZpZWxkcygpIHtcbiAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgbWFwVmFsdWUoY29uZmlnLmZpZWxkcywgZnVuY3Rpb24gKGZpZWxkKSB7XG4gICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZmllbGQpLCB7fSwge1xuICAgICAgICAgICAgdHlwZTogcmVwbGFjZVR5cGUoZmllbGQudHlwZSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSkpLCBidWlsZElucHV0RmllbGRNYXAoZXh0ZW5zaW9ucykpO1xuICAgICAgfSxcbiAgICAgIGV4dGVuc2lvbkFTVE5vZGVzOiBjb25maWcuZXh0ZW5zaW9uQVNUTm9kZXMuY29uY2F0KGV4dGVuc2lvbnMpXG4gICAgfSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gZXh0ZW5kRW51bVR5cGUodHlwZSkge1xuICAgIHZhciBfdHlwZUV4dGVuc2lvbnNNYXAkdHk7XG5cbiAgICB2YXIgY29uZmlnID0gdHlwZS50b0NvbmZpZygpO1xuICAgIHZhciBleHRlbnNpb25zID0gKF90eXBlRXh0ZW5zaW9uc01hcCR0eSA9IHR5cGVFeHRlbnNpb25zTWFwW3R5cGUubmFtZV0pICE9PSBudWxsICYmIF90eXBlRXh0ZW5zaW9uc01hcCR0eSAhPT0gdm9pZCAwID8gX3R5cGVFeHRlbnNpb25zTWFwJHR5IDogW107XG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMRW51bVR5cGUoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBjb25maWcpLCB7fSwge1xuICAgICAgdmFsdWVzOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGNvbmZpZy52YWx1ZXMpLCBidWlsZEVudW1WYWx1ZU1hcChleHRlbnNpb25zKSksXG4gICAgICBleHRlbnNpb25BU1ROb2RlczogY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzLmNvbmNhdChleHRlbnNpb25zKVxuICAgIH0pKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dGVuZFNjYWxhclR5cGUodHlwZSkge1xuICAgIHZhciBfdHlwZUV4dGVuc2lvbnNNYXAkY28yO1xuXG4gICAgdmFyIGNvbmZpZyA9IHR5cGUudG9Db25maWcoKTtcbiAgICB2YXIgZXh0ZW5zaW9ucyA9IChfdHlwZUV4dGVuc2lvbnNNYXAkY28yID0gdHlwZUV4dGVuc2lvbnNNYXBbY29uZmlnLm5hbWVdKSAhPT0gbnVsbCAmJiBfdHlwZUV4dGVuc2lvbnNNYXAkY28yICE9PSB2b2lkIDAgPyBfdHlwZUV4dGVuc2lvbnNNYXAkY28yIDogW107XG4gICAgdmFyIHNwZWNpZmllZEJ5VXJsID0gY29uZmlnLnNwZWNpZmllZEJ5VXJsO1xuXG4gICAgZm9yICh2YXIgX2k4ID0gMDsgX2k4IDwgZXh0ZW5zaW9ucy5sZW5ndGg7IF9pOCsrKSB7XG4gICAgICB2YXIgX2dldFNwZWNpZmllZEJ5VXJsO1xuXG4gICAgICB2YXIgZXh0ZW5zaW9uTm9kZSA9IGV4dGVuc2lvbnNbX2k4XTtcbiAgICAgIHNwZWNpZmllZEJ5VXJsID0gKF9nZXRTcGVjaWZpZWRCeVVybCA9IGdldFNwZWNpZmllZEJ5VXJsKGV4dGVuc2lvbk5vZGUpKSAhPT0gbnVsbCAmJiBfZ2V0U3BlY2lmaWVkQnlVcmwgIT09IHZvaWQgMCA/IF9nZXRTcGVjaWZpZWRCeVVybCA6IHNwZWNpZmllZEJ5VXJsO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgR3JhcGhRTFNjYWxhclR5cGUoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBjb25maWcpLCB7fSwge1xuICAgICAgc3BlY2lmaWVkQnlVcmw6IHNwZWNpZmllZEJ5VXJsLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IGNvbmZpZy5leHRlbnNpb25BU1ROb2Rlcy5jb25jYXQoZXh0ZW5zaW9ucylcbiAgICB9KSk7XG4gIH1cblxuICBmdW5jdGlvbiBleHRlbmRPYmplY3RUeXBlKHR5cGUpIHtcbiAgICB2YXIgX3R5cGVFeHRlbnNpb25zTWFwJGNvMztcblxuICAgIHZhciBjb25maWcgPSB0eXBlLnRvQ29uZmlnKCk7XG4gICAgdmFyIGV4dGVuc2lvbnMgPSAoX3R5cGVFeHRlbnNpb25zTWFwJGNvMyA9IHR5cGVFeHRlbnNpb25zTWFwW2NvbmZpZy5uYW1lXSkgIT09IG51bGwgJiYgX3R5cGVFeHRlbnNpb25zTWFwJGNvMyAhPT0gdm9pZCAwID8gX3R5cGVFeHRlbnNpb25zTWFwJGNvMyA6IFtdO1xuICAgIHJldHVybiBuZXcgR3JhcGhRTE9iamVjdFR5cGUoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBjb25maWcpLCB7fSwge1xuICAgICAgaW50ZXJmYWNlczogZnVuY3Rpb24gaW50ZXJmYWNlcygpIHtcbiAgICAgICAgcmV0dXJuIFtdLmNvbmNhdCh0eXBlLmdldEludGVyZmFjZXMoKS5tYXAocmVwbGFjZU5hbWVkVHlwZSksIGJ1aWxkSW50ZXJmYWNlcyhleHRlbnNpb25zKSk7XG4gICAgICB9LFxuICAgICAgZmllbGRzOiBmdW5jdGlvbiBmaWVsZHMoKSB7XG4gICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG1hcFZhbHVlKGNvbmZpZy5maWVsZHMsIGV4dGVuZEZpZWxkKSksIGJ1aWxkRmllbGRNYXAoZXh0ZW5zaW9ucykpO1xuICAgICAgfSxcbiAgICAgIGV4dGVuc2lvbkFTVE5vZGVzOiBjb25maWcuZXh0ZW5zaW9uQVNUTm9kZXMuY29uY2F0KGV4dGVuc2lvbnMpXG4gICAgfSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gZXh0ZW5kSW50ZXJmYWNlVHlwZSh0eXBlKSB7XG4gICAgdmFyIF90eXBlRXh0ZW5zaW9uc01hcCRjbzQ7XG5cbiAgICB2YXIgY29uZmlnID0gdHlwZS50b0NvbmZpZygpO1xuICAgIHZhciBleHRlbnNpb25zID0gKF90eXBlRXh0ZW5zaW9uc01hcCRjbzQgPSB0eXBlRXh0ZW5zaW9uc01hcFtjb25maWcubmFtZV0pICE9PSBudWxsICYmIF90eXBlRXh0ZW5zaW9uc01hcCRjbzQgIT09IHZvaWQgMCA/IF90eXBlRXh0ZW5zaW9uc01hcCRjbzQgOiBbXTtcbiAgICByZXR1cm4gbmV3IEdyYXBoUUxJbnRlcmZhY2VUeXBlKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY29uZmlnKSwge30sIHtcbiAgICAgIGludGVyZmFjZXM6IGZ1bmN0aW9uIGludGVyZmFjZXMoKSB7XG4gICAgICAgIHJldHVybiBbXS5jb25jYXQodHlwZS5nZXRJbnRlcmZhY2VzKCkubWFwKHJlcGxhY2VOYW1lZFR5cGUpLCBidWlsZEludGVyZmFjZXMoZXh0ZW5zaW9ucykpO1xuICAgICAgfSxcbiAgICAgIGZpZWxkczogZnVuY3Rpb24gZmllbGRzKCkge1xuICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBtYXBWYWx1ZShjb25maWcuZmllbGRzLCBleHRlbmRGaWVsZCkpLCBidWlsZEZpZWxkTWFwKGV4dGVuc2lvbnMpKTtcbiAgICAgIH0sXG4gICAgICBleHRlbnNpb25BU1ROb2RlczogY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzLmNvbmNhdChleHRlbnNpb25zKVxuICAgIH0pKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dGVuZFVuaW9uVHlwZSh0eXBlKSB7XG4gICAgdmFyIF90eXBlRXh0ZW5zaW9uc01hcCRjbzU7XG5cbiAgICB2YXIgY29uZmlnID0gdHlwZS50b0NvbmZpZygpO1xuICAgIHZhciBleHRlbnNpb25zID0gKF90eXBlRXh0ZW5zaW9uc01hcCRjbzUgPSB0eXBlRXh0ZW5zaW9uc01hcFtjb25maWcubmFtZV0pICE9PSBudWxsICYmIF90eXBlRXh0ZW5zaW9uc01hcCRjbzUgIT09IHZvaWQgMCA/IF90eXBlRXh0ZW5zaW9uc01hcCRjbzUgOiBbXTtcbiAgICByZXR1cm4gbmV3IEdyYXBoUUxVbmlvblR5cGUoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBjb25maWcpLCB7fSwge1xuICAgICAgdHlwZXM6IGZ1bmN0aW9uIHR5cGVzKCkge1xuICAgICAgICByZXR1cm4gW10uY29uY2F0KHR5cGUuZ2V0VHlwZXMoKS5tYXAocmVwbGFjZU5hbWVkVHlwZSksIGJ1aWxkVW5pb25UeXBlcyhleHRlbnNpb25zKSk7XG4gICAgICB9LFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IGNvbmZpZy5leHRlbnNpb25BU1ROb2Rlcy5jb25jYXQoZXh0ZW5zaW9ucylcbiAgICB9KSk7XG4gIH1cblxuICBmdW5jdGlvbiBleHRlbmRGaWVsZChmaWVsZCkge1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGZpZWxkKSwge30sIHtcbiAgICAgIHR5cGU6IHJlcGxhY2VUeXBlKGZpZWxkLnR5cGUpLFxuICAgICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FsbF1cbiAgICAgIGFyZ3M6IG1hcFZhbHVlKGZpZWxkLmFyZ3MsIGV4dGVuZEFyZylcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dGVuZEFyZyhhcmcpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBhcmcpLCB7fSwge1xuICAgICAgdHlwZTogcmVwbGFjZVR5cGUoYXJnLnR5cGUpXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRPcGVyYXRpb25UeXBlcyhub2Rlcykge1xuICAgIHZhciBvcFR5cGVzID0ge307XG5cbiAgICBmb3IgKHZhciBfaTEwID0gMDsgX2kxMCA8IG5vZGVzLmxlbmd0aDsgX2kxMCsrKSB7XG4gICAgICB2YXIgX25vZGUkb3BlcmF0aW9uVHlwZXM7XG5cbiAgICAgIHZhciBub2RlID0gbm9kZXNbX2kxMF07XG4gICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwMycpXG4gICAgICB2YXIgb3BlcmF0aW9uVHlwZXNOb2RlcyA9IChfbm9kZSRvcGVyYXRpb25UeXBlcyA9IG5vZGUub3BlcmF0aW9uVHlwZXMpICE9PSBudWxsICYmIF9ub2RlJG9wZXJhdGlvblR5cGVzICE9PSB2b2lkIDAgPyBfbm9kZSRvcGVyYXRpb25UeXBlcyA6IFtdO1xuXG4gICAgICBmb3IgKHZhciBfaTEyID0gMDsgX2kxMiA8IG9wZXJhdGlvblR5cGVzTm9kZXMubGVuZ3RoOyBfaTEyKyspIHtcbiAgICAgICAgdmFyIG9wZXJhdGlvblR5cGUgPSBvcGVyYXRpb25UeXBlc05vZGVzW19pMTJdO1xuICAgICAgICBvcFR5cGVzW29wZXJhdGlvblR5cGUub3BlcmF0aW9uXSA9IGdldE5hbWVkVHlwZShvcGVyYXRpb25UeXBlLnR5cGUpO1xuICAgICAgfVxuICAgIH0gLy8gTm90ZTogV2hpbGUgdGhpcyBjb3VsZCBtYWtlIGVhcmx5IGFzc2VydGlvbnMgdG8gZ2V0IHRoZSBjb3JyZWN0bHlcbiAgICAvLyB0eXBlZCB2YWx1ZXMgYmVsb3csIHRoYXQgd291bGQgdGhyb3cgaW1tZWRpYXRlbHkgd2hpbGUgdHlwZSBzeXN0ZW1cbiAgICAvLyB2YWxpZGF0aW9uIHdpdGggdmFsaWRhdGVTY2hlbWEoKSB3aWxsIHByb2R1Y2UgbW9yZSBhY3Rpb25hYmxlIHJlc3VsdHMuXG5cblxuICAgIHJldHVybiBvcFR5cGVzO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TmFtZWRUeXBlKG5vZGUpIHtcbiAgICB2YXIgX3N0ZFR5cGVNYXAkbmFtZTI7XG5cbiAgICB2YXIgbmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcbiAgICB2YXIgdHlwZSA9IChfc3RkVHlwZU1hcCRuYW1lMiA9IHN0ZFR5cGVNYXBbbmFtZV0pICE9PSBudWxsICYmIF9zdGRUeXBlTWFwJG5hbWUyICE9PSB2b2lkIDAgPyBfc3RkVHlwZU1hcCRuYW1lMiA6IHR5cGVNYXBbbmFtZV07XG5cbiAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHR5cGU6IFxcXCJcIi5jb25jYXQobmFtZSwgXCJcXFwiLlwiKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRXcmFwcGVkVHlwZShub2RlKSB7XG4gICAgaWYgKG5vZGUua2luZCA9PT0gS2luZC5MSVNUX1RZUEUpIHtcbiAgICAgIHJldHVybiBuZXcgR3JhcGhRTExpc3QoZ2V0V3JhcHBlZFR5cGUobm9kZS50eXBlKSk7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUua2luZCA9PT0gS2luZC5OT05fTlVMTF9UWVBFKSB7XG4gICAgICByZXR1cm4gbmV3IEdyYXBoUUxOb25OdWxsKGdldFdyYXBwZWRUeXBlKG5vZGUudHlwZSkpO1xuICAgIH1cblxuICAgIHJldHVybiBnZXROYW1lZFR5cGUobm9kZSk7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZERpcmVjdGl2ZShub2RlKSB7XG4gICAgdmFyIGxvY2F0aW9ucyA9IG5vZGUubG9jYXRpb25zLm1hcChmdW5jdGlvbiAoX3JlZikge1xuICAgICAgdmFyIHZhbHVlID0gX3JlZi52YWx1ZTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IEdyYXBoUUxEaXJlY3RpdmUoe1xuICAgICAgbmFtZTogbm9kZS5uYW1lLnZhbHVlLFxuICAgICAgZGVzY3JpcHRpb246IGdldERlc2NyaXB0aW9uKG5vZGUsIG9wdGlvbnMpLFxuICAgICAgbG9jYXRpb25zOiBsb2NhdGlvbnMsXG4gICAgICBpc1JlcGVhdGFibGU6IG5vZGUucmVwZWF0YWJsZSxcbiAgICAgIGFyZ3M6IGJ1aWxkQXJndW1lbnRNYXAobm9kZS5hcmd1bWVudHMpLFxuICAgICAgYXN0Tm9kZTogbm9kZVxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRGaWVsZE1hcChub2Rlcykge1xuICAgIHZhciBmaWVsZENvbmZpZ01hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICBmb3IgKHZhciBfaTE0ID0gMDsgX2kxNCA8IG5vZGVzLmxlbmd0aDsgX2kxNCsrKSB7XG4gICAgICB2YXIgX25vZGUkZmllbGRzO1xuXG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW19pMTRdO1xuICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQgKFNlZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDMnKVxuICAgICAgdmFyIG5vZGVGaWVsZHMgPSAoX25vZGUkZmllbGRzID0gbm9kZS5maWVsZHMpICE9PSBudWxsICYmIF9ub2RlJGZpZWxkcyAhPT0gdm9pZCAwID8gX25vZGUkZmllbGRzIDogW107XG5cbiAgICAgIGZvciAodmFyIF9pMTYgPSAwOyBfaTE2IDwgbm9kZUZpZWxkcy5sZW5ndGg7IF9pMTYrKykge1xuICAgICAgICB2YXIgZmllbGQgPSBub2RlRmllbGRzW19pMTZdO1xuICAgICAgICBmaWVsZENvbmZpZ01hcFtmaWVsZC5uYW1lLnZhbHVlXSA9IHtcbiAgICAgICAgICAvLyBOb3RlOiBXaGlsZSB0aGlzIGNvdWxkIG1ha2UgYXNzZXJ0aW9ucyB0byBnZXQgdGhlIGNvcnJlY3RseSB0eXBlZFxuICAgICAgICAgIC8vIHZhbHVlLCB0aGF0IHdvdWxkIHRocm93IGltbWVkaWF0ZWx5IHdoaWxlIHR5cGUgc3lzdGVtIHZhbGlkYXRpb25cbiAgICAgICAgICAvLyB3aXRoIHZhbGlkYXRlU2NoZW1hKCkgd2lsbCBwcm9kdWNlIG1vcmUgYWN0aW9uYWJsZSByZXN1bHRzLlxuICAgICAgICAgIHR5cGU6IGdldFdyYXBwZWRUeXBlKGZpZWxkLnR5cGUpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXREZXNjcmlwdGlvbihmaWVsZCwgb3B0aW9ucyksXG4gICAgICAgICAgYXJnczogYnVpbGRBcmd1bWVudE1hcChmaWVsZC5hcmd1bWVudHMpLFxuICAgICAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiBnZXREZXByZWNhdGlvblJlYXNvbihmaWVsZCksXG4gICAgICAgICAgYXN0Tm9kZTogZmllbGRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmllbGRDb25maWdNYXA7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZEFyZ3VtZW50TWFwKGFyZ3MpIHtcbiAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwMycpXG4gICAgdmFyIGFyZ3NOb2RlcyA9IGFyZ3MgIT09IG51bGwgJiYgYXJncyAhPT0gdm9pZCAwID8gYXJncyA6IFtdO1xuICAgIHZhciBhcmdDb25maWdNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgZm9yICh2YXIgX2kxOCA9IDA7IF9pMTggPCBhcmdzTm9kZXMubGVuZ3RoOyBfaTE4KyspIHtcbiAgICAgIHZhciBhcmcgPSBhcmdzTm9kZXNbX2kxOF07XG4gICAgICAvLyBOb3RlOiBXaGlsZSB0aGlzIGNvdWxkIG1ha2UgYXNzZXJ0aW9ucyB0byBnZXQgdGhlIGNvcnJlY3RseSB0eXBlZFxuICAgICAgLy8gdmFsdWUsIHRoYXQgd291bGQgdGhyb3cgaW1tZWRpYXRlbHkgd2hpbGUgdHlwZSBzeXN0ZW0gdmFsaWRhdGlvblxuICAgICAgLy8gd2l0aCB2YWxpZGF0ZVNjaGVtYSgpIHdpbGwgcHJvZHVjZSBtb3JlIGFjdGlvbmFibGUgcmVzdWx0cy5cbiAgICAgIHZhciB0eXBlID0gZ2V0V3JhcHBlZFR5cGUoYXJnLnR5cGUpO1xuICAgICAgYXJnQ29uZmlnTWFwW2FyZy5uYW1lLnZhbHVlXSA9IHtcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgZGVzY3JpcHRpb246IGdldERlc2NyaXB0aW9uKGFyZywgb3B0aW9ucyksXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdmFsdWVGcm9tQVNUKGFyZy5kZWZhdWx0VmFsdWUsIHR5cGUpLFxuICAgICAgICBkZXByZWNhdGlvblJlYXNvbjogZ2V0RGVwcmVjYXRpb25SZWFzb24oYXJnKSxcbiAgICAgICAgYXN0Tm9kZTogYXJnXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBhcmdDb25maWdNYXA7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZElucHV0RmllbGRNYXAobm9kZXMpIHtcbiAgICB2YXIgaW5wdXRGaWVsZE1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICBmb3IgKHZhciBfaTIwID0gMDsgX2kyMCA8IG5vZGVzLmxlbmd0aDsgX2kyMCsrKSB7XG4gICAgICB2YXIgX25vZGUkZmllbGRzMjtcblxuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tfaTIwXTtcbiAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChTZWU6ICdodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzJylcbiAgICAgIHZhciBmaWVsZHNOb2RlcyA9IChfbm9kZSRmaWVsZHMyID0gbm9kZS5maWVsZHMpICE9PSBudWxsICYmIF9ub2RlJGZpZWxkczIgIT09IHZvaWQgMCA/IF9ub2RlJGZpZWxkczIgOiBbXTtcblxuICAgICAgZm9yICh2YXIgX2kyMiA9IDA7IF9pMjIgPCBmaWVsZHNOb2Rlcy5sZW5ndGg7IF9pMjIrKykge1xuICAgICAgICB2YXIgZmllbGQgPSBmaWVsZHNOb2Rlc1tfaTIyXTtcbiAgICAgICAgLy8gTm90ZTogV2hpbGUgdGhpcyBjb3VsZCBtYWtlIGFzc2VydGlvbnMgdG8gZ2V0IHRoZSBjb3JyZWN0bHkgdHlwZWRcbiAgICAgICAgLy8gdmFsdWUsIHRoYXQgd291bGQgdGhyb3cgaW1tZWRpYXRlbHkgd2hpbGUgdHlwZSBzeXN0ZW0gdmFsaWRhdGlvblxuICAgICAgICAvLyB3aXRoIHZhbGlkYXRlU2NoZW1hKCkgd2lsbCBwcm9kdWNlIG1vcmUgYWN0aW9uYWJsZSByZXN1bHRzLlxuICAgICAgICB2YXIgdHlwZSA9IGdldFdyYXBwZWRUeXBlKGZpZWxkLnR5cGUpO1xuICAgICAgICBpbnB1dEZpZWxkTWFwW2ZpZWxkLm5hbWUudmFsdWVdID0ge1xuICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGdldERlc2NyaXB0aW9uKGZpZWxkLCBvcHRpb25zKSxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IHZhbHVlRnJvbUFTVChmaWVsZC5kZWZhdWx0VmFsdWUsIHR5cGUpLFxuICAgICAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiBnZXREZXByZWNhdGlvblJlYXNvbihmaWVsZCksXG4gICAgICAgICAgYXN0Tm9kZTogZmllbGRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaW5wdXRGaWVsZE1hcDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkRW51bVZhbHVlTWFwKG5vZGVzKSB7XG4gICAgdmFyIGVudW1WYWx1ZU1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICBmb3IgKHZhciBfaTI0ID0gMDsgX2kyNCA8IG5vZGVzLmxlbmd0aDsgX2kyNCsrKSB7XG4gICAgICB2YXIgX25vZGUkdmFsdWVzO1xuXG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW19pMjRdO1xuICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQgKFNlZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDMnKVxuICAgICAgdmFyIHZhbHVlc05vZGVzID0gKF9ub2RlJHZhbHVlcyA9IG5vZGUudmFsdWVzKSAhPT0gbnVsbCAmJiBfbm9kZSR2YWx1ZXMgIT09IHZvaWQgMCA/IF9ub2RlJHZhbHVlcyA6IFtdO1xuXG4gICAgICBmb3IgKHZhciBfaTI2ID0gMDsgX2kyNiA8IHZhbHVlc05vZGVzLmxlbmd0aDsgX2kyNisrKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHZhbHVlc05vZGVzW19pMjZdO1xuICAgICAgICBlbnVtVmFsdWVNYXBbdmFsdWUubmFtZS52YWx1ZV0gPSB7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGdldERlc2NyaXB0aW9uKHZhbHVlLCBvcHRpb25zKSxcbiAgICAgICAgICBkZXByZWNhdGlvblJlYXNvbjogZ2V0RGVwcmVjYXRpb25SZWFzb24odmFsdWUpLFxuICAgICAgICAgIGFzdE5vZGU6IHZhbHVlXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVudW1WYWx1ZU1hcDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkSW50ZXJmYWNlcyhub2Rlcykge1xuICAgIHZhciBpbnRlcmZhY2VzID0gW107XG5cbiAgICBmb3IgKHZhciBfaTI4ID0gMDsgX2kyOCA8IG5vZGVzLmxlbmd0aDsgX2kyOCsrKSB7XG4gICAgICB2YXIgX25vZGUkaW50ZXJmYWNlcztcblxuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tfaTI4XTtcbiAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChTZWU6ICdodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzJylcbiAgICAgIHZhciBpbnRlcmZhY2VzTm9kZXMgPSAoX25vZGUkaW50ZXJmYWNlcyA9IG5vZGUuaW50ZXJmYWNlcykgIT09IG51bGwgJiYgX25vZGUkaW50ZXJmYWNlcyAhPT0gdm9pZCAwID8gX25vZGUkaW50ZXJmYWNlcyA6IFtdO1xuXG4gICAgICBmb3IgKHZhciBfaTMwID0gMDsgX2kzMCA8IGludGVyZmFjZXNOb2Rlcy5sZW5ndGg7IF9pMzArKykge1xuICAgICAgICB2YXIgdHlwZSA9IGludGVyZmFjZXNOb2Rlc1tfaTMwXTtcbiAgICAgICAgLy8gTm90ZTogV2hpbGUgdGhpcyBjb3VsZCBtYWtlIGFzc2VydGlvbnMgdG8gZ2V0IHRoZSBjb3JyZWN0bHkgdHlwZWRcbiAgICAgICAgLy8gdmFsdWVzIGJlbG93LCB0aGF0IHdvdWxkIHRocm93IGltbWVkaWF0ZWx5IHdoaWxlIHR5cGUgc3lzdGVtXG4gICAgICAgIC8vIHZhbGlkYXRpb24gd2l0aCB2YWxpZGF0ZVNjaGVtYSgpIHdpbGwgcHJvZHVjZSBtb3JlIGFjdGlvbmFibGVcbiAgICAgICAgLy8gcmVzdWx0cy5cbiAgICAgICAgaW50ZXJmYWNlcy5wdXNoKGdldE5hbWVkVHlwZSh0eXBlKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGludGVyZmFjZXM7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZFVuaW9uVHlwZXMobm9kZXMpIHtcbiAgICB2YXIgdHlwZXMgPSBbXTtcblxuICAgIGZvciAodmFyIF9pMzIgPSAwOyBfaTMyIDwgbm9kZXMubGVuZ3RoOyBfaTMyKyspIHtcbiAgICAgIHZhciBfbm9kZSR0eXBlcztcblxuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tfaTMyXTtcbiAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChTZWU6ICdodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzJylcbiAgICAgIHZhciB0eXBlTm9kZXMgPSAoX25vZGUkdHlwZXMgPSBub2RlLnR5cGVzKSAhPT0gbnVsbCAmJiBfbm9kZSR0eXBlcyAhPT0gdm9pZCAwID8gX25vZGUkdHlwZXMgOiBbXTtcblxuICAgICAgZm9yICh2YXIgX2kzNCA9IDA7IF9pMzQgPCB0eXBlTm9kZXMubGVuZ3RoOyBfaTM0KyspIHtcbiAgICAgICAgdmFyIHR5cGUgPSB0eXBlTm9kZXNbX2kzNF07XG4gICAgICAgIC8vIE5vdGU6IFdoaWxlIHRoaXMgY291bGQgbWFrZSBhc3NlcnRpb25zIHRvIGdldCB0aGUgY29ycmVjdGx5IHR5cGVkXG4gICAgICAgIC8vIHZhbHVlcyBiZWxvdywgdGhhdCB3b3VsZCB0aHJvdyBpbW1lZGlhdGVseSB3aGlsZSB0eXBlIHN5c3RlbVxuICAgICAgICAvLyB2YWxpZGF0aW9uIHdpdGggdmFsaWRhdGVTY2hlbWEoKSB3aWxsIHByb2R1Y2UgbW9yZSBhY3Rpb25hYmxlXG4gICAgICAgIC8vIHJlc3VsdHMuXG4gICAgICAgIHR5cGVzLnB1c2goZ2V0TmFtZWRUeXBlKHR5cGUpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZXM7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZFR5cGUoYXN0Tm9kZSkge1xuICAgIHZhciBfdHlwZUV4dGVuc2lvbnNNYXAkbmE7XG5cbiAgICB2YXIgbmFtZSA9IGFzdE5vZGUubmFtZS52YWx1ZTtcbiAgICB2YXIgZGVzY3JpcHRpb24gPSBnZXREZXNjcmlwdGlvbihhc3ROb2RlLCBvcHRpb25zKTtcbiAgICB2YXIgZXh0ZW5zaW9uTm9kZXMgPSAoX3R5cGVFeHRlbnNpb25zTWFwJG5hID0gdHlwZUV4dGVuc2lvbnNNYXBbbmFtZV0pICE9PSBudWxsICYmIF90eXBlRXh0ZW5zaW9uc01hcCRuYSAhPT0gdm9pZCAwID8gX3R5cGVFeHRlbnNpb25zTWFwJG5hIDogW107XG5cbiAgICBzd2l0Y2ggKGFzdE5vZGUua2luZCkge1xuICAgICAgY2FzZSBLaW5kLk9CSkVDVF9UWVBFX0RFRklOSVRJT046XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgZXh0ZW5zaW9uQVNUTm9kZXMgPSBleHRlbnNpb25Ob2RlcztcbiAgICAgICAgICB2YXIgYWxsTm9kZXMgPSBbYXN0Tm9kZV0uY29uY2F0KGV4dGVuc2lvbkFTVE5vZGVzKTtcbiAgICAgICAgICByZXR1cm4gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbnRlcmZhY2VzOiBmdW5jdGlvbiBpbnRlcmZhY2VzKCkge1xuICAgICAgICAgICAgICByZXR1cm4gYnVpbGRJbnRlcmZhY2VzKGFsbE5vZGVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWVsZHM6IGZ1bmN0aW9uIGZpZWxkcygpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGJ1aWxkRmllbGRNYXAoYWxsTm9kZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFzdE5vZGU6IGFzdE5vZGUsXG4gICAgICAgICAgICBleHRlbnNpb25BU1ROb2RlczogZXh0ZW5zaW9uQVNUTm9kZXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuSU5URVJGQUNFX1RZUEVfREVGSU5JVElPTjpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBfZXh0ZW5zaW9uQVNUTm9kZXMgPSBleHRlbnNpb25Ob2RlcztcblxuICAgICAgICAgIHZhciBfYWxsTm9kZXMgPSBbYXN0Tm9kZV0uY29uY2F0KF9leHRlbnNpb25BU1ROb2Rlcyk7XG5cbiAgICAgICAgICByZXR1cm4gbmV3IEdyYXBoUUxJbnRlcmZhY2VUeXBlKHtcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbnRlcmZhY2VzOiBmdW5jdGlvbiBpbnRlcmZhY2VzKCkge1xuICAgICAgICAgICAgICByZXR1cm4gYnVpbGRJbnRlcmZhY2VzKF9hbGxOb2Rlcyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmllbGRzOiBmdW5jdGlvbiBmaWVsZHMoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBidWlsZEZpZWxkTWFwKF9hbGxOb2Rlcyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXN0Tm9kZTogYXN0Tm9kZSxcbiAgICAgICAgICAgIGV4dGVuc2lvbkFTVE5vZGVzOiBfZXh0ZW5zaW9uQVNUTm9kZXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuRU5VTV9UWVBFX0RFRklOSVRJT046XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgX2V4dGVuc2lvbkFTVE5vZGVzMiA9IGV4dGVuc2lvbk5vZGVzO1xuXG4gICAgICAgICAgdmFyIF9hbGxOb2RlczIgPSBbYXN0Tm9kZV0uY29uY2F0KF9leHRlbnNpb25BU1ROb2RlczIpO1xuXG4gICAgICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHZhbHVlczogYnVpbGRFbnVtVmFsdWVNYXAoX2FsbE5vZGVzMiksXG4gICAgICAgICAgICBhc3ROb2RlOiBhc3ROb2RlLFxuICAgICAgICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IF9leHRlbnNpb25BU1ROb2RlczJcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuVU5JT05fVFlQRV9ERUZJTklUSU9OOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIF9leHRlbnNpb25BU1ROb2RlczMgPSBleHRlbnNpb25Ob2RlcztcblxuICAgICAgICAgIHZhciBfYWxsTm9kZXMzID0gW2FzdE5vZGVdLmNvbmNhdChfZXh0ZW5zaW9uQVNUTm9kZXMzKTtcblxuICAgICAgICAgIHJldHVybiBuZXcgR3JhcGhRTFVuaW9uVHlwZSh7XG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgdHlwZXM6IGZ1bmN0aW9uIHR5cGVzKCkge1xuICAgICAgICAgICAgICByZXR1cm4gYnVpbGRVbmlvblR5cGVzKF9hbGxOb2RlczMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFzdE5vZGU6IGFzdE5vZGUsXG4gICAgICAgICAgICBleHRlbnNpb25BU1ROb2RlczogX2V4dGVuc2lvbkFTVE5vZGVzM1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgS2luZC5TQ0FMQVJfVFlQRV9ERUZJTklUSU9OOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIF9leHRlbnNpb25BU1ROb2RlczQgPSBleHRlbnNpb25Ob2RlcztcbiAgICAgICAgICByZXR1cm4gbmV3IEdyYXBoUUxTY2FsYXJUeXBlKHtcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBzcGVjaWZpZWRCeVVybDogZ2V0U3BlY2lmaWVkQnlVcmwoYXN0Tm9kZSksXG4gICAgICAgICAgICBhc3ROb2RlOiBhc3ROb2RlLFxuICAgICAgICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IF9leHRlbnNpb25BU1ROb2RlczRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuSU5QVVRfT0JKRUNUX1RZUEVfREVGSU5JVElPTjpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBfZXh0ZW5zaW9uQVNUTm9kZXM1ID0gZXh0ZW5zaW9uTm9kZXM7XG5cbiAgICAgICAgICB2YXIgX2FsbE5vZGVzNCA9IFthc3ROb2RlXS5jb25jYXQoX2V4dGVuc2lvbkFTVE5vZGVzNSk7XG5cbiAgICAgICAgICByZXR1cm4gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGZpZWxkczogZnVuY3Rpb24gZmllbGRzKCkge1xuICAgICAgICAgICAgICByZXR1cm4gYnVpbGRJbnB1dEZpZWxkTWFwKF9hbGxOb2RlczQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFzdE5vZGU6IGFzdE5vZGUsXG4gICAgICAgICAgICBleHRlbnNpb25BU1ROb2RlczogX2V4dGVuc2lvbkFTVE5vZGVzNVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoTm90IHJlYWNoYWJsZS4gQWxsIHBvc3NpYmxlIHR5cGUgZGVmaW5pdGlvbiBub2RlcyBoYXZlIGJlZW4gY29uc2lkZXJlZClcblxuXG4gICAgZmFsc2UgfHwgaW52YXJpYW50KDAsICdVbmV4cGVjdGVkIHR5cGUgZGVmaW5pdGlvbiBub2RlOiAnICsgaW5zcGVjdChhc3ROb2RlKSk7XG4gIH1cbn1cbnZhciBzdGRUeXBlTWFwID0ga2V5TWFwKHNwZWNpZmllZFNjYWxhclR5cGVzLmNvbmNhdChpbnRyb3NwZWN0aW9uVHlwZXMpLCBmdW5jdGlvbiAodHlwZSkge1xuICByZXR1cm4gdHlwZS5uYW1lO1xufSk7XG4vKipcbiAqIEdpdmVuIGEgZmllbGQgb3IgZW51bSB2YWx1ZSBub2RlLCByZXR1cm5zIHRoZSBzdHJpbmcgdmFsdWUgZm9yIHRoZVxuICogZGVwcmVjYXRpb24gcmVhc29uLlxuICovXG5cbmZ1bmN0aW9uIGdldERlcHJlY2F0aW9uUmVhc29uKG5vZGUpIHtcbiAgdmFyIGRlcHJlY2F0ZWQgPSBnZXREaXJlY3RpdmVWYWx1ZXMoR3JhcGhRTERlcHJlY2F0ZWREaXJlY3RpdmUsIG5vZGUpO1xuICByZXR1cm4gZGVwcmVjYXRlZCA9PT0gbnVsbCB8fCBkZXByZWNhdGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZXByZWNhdGVkLnJlYXNvbjtcbn1cbi8qKlxuICogR2l2ZW4gYSBzY2FsYXIgbm9kZSwgcmV0dXJucyB0aGUgc3RyaW5nIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkQnlVcmwuXG4gKi9cblxuXG5mdW5jdGlvbiBnZXRTcGVjaWZpZWRCeVVybChub2RlKSB7XG4gIHZhciBzcGVjaWZpZWRCeSA9IGdldERpcmVjdGl2ZVZhbHVlcyhHcmFwaFFMU3BlY2lmaWVkQnlEaXJlY3RpdmUsIG5vZGUpO1xuICByZXR1cm4gc3BlY2lmaWVkQnkgPT09IG51bGwgfHwgc3BlY2lmaWVkQnkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNwZWNpZmllZEJ5LnVybDtcbn1cbi8qKlxuICogR2l2ZW4gYW4gYXN0IG5vZGUsIHJldHVybnMgaXRzIHN0cmluZyBkZXNjcmlwdGlvbi5cbiAqIEBkZXByZWNhdGVkOiBwcm92aWRlZCB0byBlYXNlIGFkb3B0aW9uIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdjE2LlxuICpcbiAqIEFjY2VwdHMgb3B0aW9ucyBhcyBhIHNlY29uZCBhcmd1bWVudDpcbiAqXG4gKiAgICAtIGNvbW1lbnREZXNjcmlwdGlvbnM6XG4gKiAgICAgICAgUHJvdmlkZSB0cnVlIHRvIHVzZSBwcmVjZWRpbmcgY29tbWVudHMgYXMgdGhlIGRlc2NyaXB0aW9uLlxuICpcbiAqL1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXNjcmlwdGlvbihub2RlLCBvcHRpb25zKSB7XG4gIGlmIChub2RlLmRlc2NyaXB0aW9uKSB7XG4gICAgcmV0dXJuIG5vZGUuZGVzY3JpcHRpb24udmFsdWU7XG4gIH1cblxuICBpZiAoKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5jb21tZW50RGVzY3JpcHRpb25zKSA9PT0gdHJ1ZSkge1xuICAgIHZhciByYXdWYWx1ZSA9IGdldExlYWRpbmdDb21tZW50QmxvY2sobm9kZSk7XG5cbiAgICBpZiAocmF3VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGRlZGVudEJsb2NrU3RyaW5nVmFsdWUoJ1xcbicgKyByYXdWYWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldExlYWRpbmdDb21tZW50QmxvY2sobm9kZSkge1xuICB2YXIgbG9jID0gbm9kZS5sb2M7XG5cbiAgaWYgKCFsb2MpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgY29tbWVudHMgPSBbXTtcbiAgdmFyIHRva2VuID0gbG9jLnN0YXJ0VG9rZW4ucHJldjtcblxuICB3aGlsZSAodG9rZW4gIT0gbnVsbCAmJiB0b2tlbi5raW5kID09PSBUb2tlbktpbmQuQ09NTUVOVCAmJiB0b2tlbi5uZXh0ICYmIHRva2VuLnByZXYgJiYgdG9rZW4ubGluZSArIDEgPT09IHRva2VuLm5leHQubGluZSAmJiB0b2tlbi5saW5lICE9PSB0b2tlbi5wcmV2LmxpbmUpIHtcbiAgICB2YXIgdmFsdWUgPSBTdHJpbmcodG9rZW4udmFsdWUpO1xuICAgIGNvbW1lbnRzLnB1c2godmFsdWUpO1xuICAgIHRva2VuID0gdG9rZW4ucHJldjtcbiAgfVxuXG4gIHJldHVybiBjb21tZW50cy5sZW5ndGggPiAwID8gY29tbWVudHMucmV2ZXJzZSgpLmpvaW4oJ1xcbicpIDogdW5kZWZpbmVkO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/extendSchema.mjs\n");
1173
1174/***/ }),
1175
1176/***/ "../../../node_modules/graphql/utilities/findBreakingChanges.mjs":
1177/*!**************************************************************************************************!*\
1178 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/findBreakingChanges.mjs ***!
1179 \**************************************************************************************************/
1180/*! exports provided: BreakingChangeType, DangerousChangeType, findBreakingChanges, findDangerousChanges */
1181/***/ (function(module, __webpack_exports__, __webpack_require__) {
1182
1183"use strict";
1184eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BreakingChangeType\", function() { return BreakingChangeType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DangerousChangeType\", function() { return DangerousChangeType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findBreakingChanges\", function() { return findBreakingChanges; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findDangerousChanges\", function() { return findDangerousChanges; });\n/* harmony import */ var _polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/objectValues.mjs */ \"../../../node_modules/graphql/polyfills/objectValues.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _language_visitor_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../language/visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../type/scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _astFromValue_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./astFromValue.mjs */ \"../../../node_modules/graphql/utilities/astFromValue.mjs\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\nvar BreakingChangeType = Object.freeze({\n TYPE_REMOVED: 'TYPE_REMOVED',\n TYPE_CHANGED_KIND: 'TYPE_CHANGED_KIND',\n TYPE_REMOVED_FROM_UNION: 'TYPE_REMOVED_FROM_UNION',\n VALUE_REMOVED_FROM_ENUM: 'VALUE_REMOVED_FROM_ENUM',\n REQUIRED_INPUT_FIELD_ADDED: 'REQUIRED_INPUT_FIELD_ADDED',\n IMPLEMENTED_INTERFACE_REMOVED: 'IMPLEMENTED_INTERFACE_REMOVED',\n FIELD_REMOVED: 'FIELD_REMOVED',\n FIELD_CHANGED_KIND: 'FIELD_CHANGED_KIND',\n REQUIRED_ARG_ADDED: 'REQUIRED_ARG_ADDED',\n ARG_REMOVED: 'ARG_REMOVED',\n ARG_CHANGED_KIND: 'ARG_CHANGED_KIND',\n DIRECTIVE_REMOVED: 'DIRECTIVE_REMOVED',\n DIRECTIVE_ARG_REMOVED: 'DIRECTIVE_ARG_REMOVED',\n REQUIRED_DIRECTIVE_ARG_ADDED: 'REQUIRED_DIRECTIVE_ARG_ADDED',\n DIRECTIVE_REPEATABLE_REMOVED: 'DIRECTIVE_REPEATABLE_REMOVED',\n DIRECTIVE_LOCATION_REMOVED: 'DIRECTIVE_LOCATION_REMOVED'\n});\nvar DangerousChangeType = Object.freeze({\n VALUE_ADDED_TO_ENUM: 'VALUE_ADDED_TO_ENUM',\n TYPE_ADDED_TO_UNION: 'TYPE_ADDED_TO_UNION',\n OPTIONAL_INPUT_FIELD_ADDED: 'OPTIONAL_INPUT_FIELD_ADDED',\n OPTIONAL_ARG_ADDED: 'OPTIONAL_ARG_ADDED',\n IMPLEMENTED_INTERFACE_ADDED: 'IMPLEMENTED_INTERFACE_ADDED',\n ARG_DEFAULT_VALUE_CHANGE: 'ARG_DEFAULT_VALUE_CHANGE'\n});\n\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of breaking changes covered by the other functions down below.\n */\nfunction findBreakingChanges(oldSchema, newSchema) {\n var breakingChanges = findSchemaChanges(oldSchema, newSchema).filter(function (change) {\n return change.type in BreakingChangeType;\n });\n return breakingChanges;\n}\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of potentially dangerous changes covered by the other functions down below.\n */\n\nfunction findDangerousChanges(oldSchema, newSchema) {\n var dangerousChanges = findSchemaChanges(oldSchema, newSchema).filter(function (change) {\n return change.type in DangerousChangeType;\n });\n return dangerousChanges;\n}\n\nfunction findSchemaChanges(oldSchema, newSchema) {\n return [].concat(findTypeChanges(oldSchema, newSchema), findDirectiveChanges(oldSchema, newSchema));\n}\n\nfunction findDirectiveChanges(oldSchema, newSchema) {\n var schemaChanges = [];\n var directivesDiff = diff(oldSchema.getDirectives(), newSchema.getDirectives());\n\n for (var _i2 = 0, _directivesDiff$remov2 = directivesDiff.removed; _i2 < _directivesDiff$remov2.length; _i2++) {\n var oldDirective = _directivesDiff$remov2[_i2];\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_REMOVED,\n description: \"\".concat(oldDirective.name, \" was removed.\")\n });\n }\n\n for (var _i4 = 0, _directivesDiff$persi2 = directivesDiff.persisted; _i4 < _directivesDiff$persi2.length; _i4++) {\n var _ref2 = _directivesDiff$persi2[_i4];\n var _oldDirective = _ref2[0];\n var newDirective = _ref2[1];\n var argsDiff = diff(_oldDirective.args, newDirective.args);\n\n for (var _i6 = 0, _argsDiff$added2 = argsDiff.added; _i6 < _argsDiff$added2.length; _i6++) {\n var newArg = _argsDiff$added2[_i6];\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isRequiredArgument\"])(newArg)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_DIRECTIVE_ARG_ADDED,\n description: \"A required arg \".concat(newArg.name, \" on directive \").concat(_oldDirective.name, \" was added.\")\n });\n }\n }\n\n for (var _i8 = 0, _argsDiff$removed2 = argsDiff.removed; _i8 < _argsDiff$removed2.length; _i8++) {\n var oldArg = _argsDiff$removed2[_i8];\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_ARG_REMOVED,\n description: \"\".concat(oldArg.name, \" was removed from \").concat(_oldDirective.name, \".\")\n });\n }\n\n if (_oldDirective.isRepeatable && !newDirective.isRepeatable) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_REPEATABLE_REMOVED,\n description: \"Repeatable flag was removed from \".concat(_oldDirective.name, \".\")\n });\n }\n\n for (var _i10 = 0, _oldDirective$locatio2 = _oldDirective.locations; _i10 < _oldDirective$locatio2.length; _i10++) {\n var location = _oldDirective$locatio2[_i10];\n\n if (newDirective.locations.indexOf(location) === -1) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_LOCATION_REMOVED,\n description: \"\".concat(location, \" was removed from \").concat(_oldDirective.name, \".\")\n });\n }\n }\n }\n\n return schemaChanges;\n}\n\nfunction findTypeChanges(oldSchema, newSchema) {\n var schemaChanges = [];\n var typesDiff = diff(Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(oldSchema.getTypeMap()), Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(newSchema.getTypeMap()));\n\n for (var _i12 = 0, _typesDiff$removed2 = typesDiff.removed; _i12 < _typesDiff$removed2.length; _i12++) {\n var oldType = _typesDiff$removed2[_i12];\n schemaChanges.push({\n type: BreakingChangeType.TYPE_REMOVED,\n description: Object(_type_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isSpecifiedScalarType\"])(oldType) ? \"Standard scalar \".concat(oldType.name, \" was removed because it is not referenced anymore.\") : \"\".concat(oldType.name, \" was removed.\")\n });\n }\n\n for (var _i14 = 0, _typesDiff$persisted2 = typesDiff.persisted; _i14 < _typesDiff$persisted2.length; _i14++) {\n var _ref4 = _typesDiff$persisted2[_i14];\n var _oldType = _ref4[0];\n var newType = _ref4[1];\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isEnumType\"])(_oldType) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isEnumType\"])(newType)) {\n schemaChanges.push.apply(schemaChanges, findEnumTypeChanges(_oldType, newType));\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isUnionType\"])(_oldType) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isUnionType\"])(newType)) {\n schemaChanges.push.apply(schemaChanges, findUnionTypeChanges(_oldType, newType));\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInputObjectType\"])(_oldType) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInputObjectType\"])(newType)) {\n schemaChanges.push.apply(schemaChanges, findInputObjectTypeChanges(_oldType, newType));\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isObjectType\"])(_oldType) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isObjectType\"])(newType)) {\n schemaChanges.push.apply(schemaChanges, findFieldChanges(_oldType, newType).concat(findImplementedInterfacesChanges(_oldType, newType)));\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInterfaceType\"])(_oldType) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInterfaceType\"])(newType)) {\n schemaChanges.push.apply(schemaChanges, findFieldChanges(_oldType, newType).concat(findImplementedInterfacesChanges(_oldType, newType)));\n } else if (_oldType.constructor !== newType.constructor) {\n schemaChanges.push({\n type: BreakingChangeType.TYPE_CHANGED_KIND,\n description: \"\".concat(_oldType.name, \" changed from \") + \"\".concat(typeKindName(_oldType), \" to \").concat(typeKindName(newType), \".\")\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findInputObjectTypeChanges(oldType, newType) {\n var schemaChanges = [];\n var fieldsDiff = diff(Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(oldType.getFields()), Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(newType.getFields()));\n\n for (var _i16 = 0, _fieldsDiff$added2 = fieldsDiff.added; _i16 < _fieldsDiff$added2.length; _i16++) {\n var newField = _fieldsDiff$added2[_i16];\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isRequiredInputField\"])(newField)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_INPUT_FIELD_ADDED,\n description: \"A required field \".concat(newField.name, \" on input type \").concat(oldType.name, \" was added.\")\n });\n } else {\n schemaChanges.push({\n type: DangerousChangeType.OPTIONAL_INPUT_FIELD_ADDED,\n description: \"An optional field \".concat(newField.name, \" on input type \").concat(oldType.name, \" was added.\")\n });\n }\n }\n\n for (var _i18 = 0, _fieldsDiff$removed2 = fieldsDiff.removed; _i18 < _fieldsDiff$removed2.length; _i18++) {\n var oldField = _fieldsDiff$removed2[_i18];\n schemaChanges.push({\n type: BreakingChangeType.FIELD_REMOVED,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" was removed.\")\n });\n }\n\n for (var _i20 = 0, _fieldsDiff$persisted2 = fieldsDiff.persisted; _i20 < _fieldsDiff$persisted2.length; _i20++) {\n var _ref6 = _fieldsDiff$persisted2[_i20];\n var _oldField = _ref6[0];\n var _newField = _ref6[1];\n var isSafe = isChangeSafeForInputObjectFieldOrFieldArg(_oldField.type, _newField.type);\n\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_CHANGED_KIND,\n description: \"\".concat(oldType.name, \".\").concat(_oldField.name, \" changed type from \") + \"\".concat(String(_oldField.type), \" to \").concat(String(_newField.type), \".\")\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findUnionTypeChanges(oldType, newType) {\n var schemaChanges = [];\n var possibleTypesDiff = diff(oldType.getTypes(), newType.getTypes());\n\n for (var _i22 = 0, _possibleTypesDiff$ad2 = possibleTypesDiff.added; _i22 < _possibleTypesDiff$ad2.length; _i22++) {\n var newPossibleType = _possibleTypesDiff$ad2[_i22];\n schemaChanges.push({\n type: DangerousChangeType.TYPE_ADDED_TO_UNION,\n description: \"\".concat(newPossibleType.name, \" was added to union type \").concat(oldType.name, \".\")\n });\n }\n\n for (var _i24 = 0, _possibleTypesDiff$re2 = possibleTypesDiff.removed; _i24 < _possibleTypesDiff$re2.length; _i24++) {\n var oldPossibleType = _possibleTypesDiff$re2[_i24];\n schemaChanges.push({\n type: BreakingChangeType.TYPE_REMOVED_FROM_UNION,\n description: \"\".concat(oldPossibleType.name, \" was removed from union type \").concat(oldType.name, \".\")\n });\n }\n\n return schemaChanges;\n}\n\nfunction findEnumTypeChanges(oldType, newType) {\n var schemaChanges = [];\n var valuesDiff = diff(oldType.getValues(), newType.getValues());\n\n for (var _i26 = 0, _valuesDiff$added2 = valuesDiff.added; _i26 < _valuesDiff$added2.length; _i26++) {\n var newValue = _valuesDiff$added2[_i26];\n schemaChanges.push({\n type: DangerousChangeType.VALUE_ADDED_TO_ENUM,\n description: \"\".concat(newValue.name, \" was added to enum type \").concat(oldType.name, \".\")\n });\n }\n\n for (var _i28 = 0, _valuesDiff$removed2 = valuesDiff.removed; _i28 < _valuesDiff$removed2.length; _i28++) {\n var oldValue = _valuesDiff$removed2[_i28];\n schemaChanges.push({\n type: BreakingChangeType.VALUE_REMOVED_FROM_ENUM,\n description: \"\".concat(oldValue.name, \" was removed from enum type \").concat(oldType.name, \".\")\n });\n }\n\n return schemaChanges;\n}\n\nfunction findImplementedInterfacesChanges(oldType, newType) {\n var schemaChanges = [];\n var interfacesDiff = diff(oldType.getInterfaces(), newType.getInterfaces());\n\n for (var _i30 = 0, _interfacesDiff$added2 = interfacesDiff.added; _i30 < _interfacesDiff$added2.length; _i30++) {\n var newInterface = _interfacesDiff$added2[_i30];\n schemaChanges.push({\n type: DangerousChangeType.IMPLEMENTED_INTERFACE_ADDED,\n description: \"\".concat(newInterface.name, \" added to interfaces implemented by \").concat(oldType.name, \".\")\n });\n }\n\n for (var _i32 = 0, _interfacesDiff$remov2 = interfacesDiff.removed; _i32 < _interfacesDiff$remov2.length; _i32++) {\n var oldInterface = _interfacesDiff$remov2[_i32];\n schemaChanges.push({\n type: BreakingChangeType.IMPLEMENTED_INTERFACE_REMOVED,\n description: \"\".concat(oldType.name, \" no longer implements interface \").concat(oldInterface.name, \".\")\n });\n }\n\n return schemaChanges;\n}\n\nfunction findFieldChanges(oldType, newType) {\n var schemaChanges = [];\n var fieldsDiff = diff(Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(oldType.getFields()), Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(newType.getFields()));\n\n for (var _i34 = 0, _fieldsDiff$removed4 = fieldsDiff.removed; _i34 < _fieldsDiff$removed4.length; _i34++) {\n var oldField = _fieldsDiff$removed4[_i34];\n schemaChanges.push({\n type: BreakingChangeType.FIELD_REMOVED,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" was removed.\")\n });\n }\n\n for (var _i36 = 0, _fieldsDiff$persisted4 = fieldsDiff.persisted; _i36 < _fieldsDiff$persisted4.length; _i36++) {\n var _ref8 = _fieldsDiff$persisted4[_i36];\n var _oldField2 = _ref8[0];\n var newField = _ref8[1];\n schemaChanges.push.apply(schemaChanges, findArgChanges(oldType, _oldField2, newField));\n var isSafe = isChangeSafeForObjectOrInterfaceField(_oldField2.type, newField.type);\n\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_CHANGED_KIND,\n description: \"\".concat(oldType.name, \".\").concat(_oldField2.name, \" changed type from \") + \"\".concat(String(_oldField2.type), \" to \").concat(String(newField.type), \".\")\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findArgChanges(oldType, oldField, newField) {\n var schemaChanges = [];\n var argsDiff = diff(oldField.args, newField.args);\n\n for (var _i38 = 0, _argsDiff$removed4 = argsDiff.removed; _i38 < _argsDiff$removed4.length; _i38++) {\n var oldArg = _argsDiff$removed4[_i38];\n schemaChanges.push({\n type: BreakingChangeType.ARG_REMOVED,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" arg \").concat(oldArg.name, \" was removed.\")\n });\n }\n\n for (var _i40 = 0, _argsDiff$persisted2 = argsDiff.persisted; _i40 < _argsDiff$persisted2.length; _i40++) {\n var _ref10 = _argsDiff$persisted2[_i40];\n var _oldArg = _ref10[0];\n var newArg = _ref10[1];\n var isSafe = isChangeSafeForInputObjectFieldOrFieldArg(_oldArg.type, newArg.type);\n\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.ARG_CHANGED_KIND,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" arg \").concat(_oldArg.name, \" has changed type from \") + \"\".concat(String(_oldArg.type), \" to \").concat(String(newArg.type), \".\")\n });\n } else if (_oldArg.defaultValue !== undefined) {\n if (newArg.defaultValue === undefined) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" arg \").concat(_oldArg.name, \" defaultValue was removed.\")\n });\n } else {\n // Since we looking only for client's observable changes we should\n // compare default values in the same representation as they are\n // represented inside introspection.\n var oldValueStr = stringifyValue(_oldArg.defaultValue, _oldArg.type);\n var newValueStr = stringifyValue(newArg.defaultValue, newArg.type);\n\n if (oldValueStr !== newValueStr) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: \"\".concat(oldType.name, \".\").concat(oldField.name, \" arg \").concat(_oldArg.name, \" has changed defaultValue from \").concat(oldValueStr, \" to \").concat(newValueStr, \".\")\n });\n }\n }\n }\n }\n\n for (var _i42 = 0, _argsDiff$added4 = argsDiff.added; _i42 < _argsDiff$added4.length; _i42++) {\n var _newArg = _argsDiff$added4[_i42];\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isRequiredArgument\"])(_newArg)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_ARG_ADDED,\n description: \"A required arg \".concat(_newArg.name, \" on \").concat(oldType.name, \".\").concat(oldField.name, \" was added.\")\n });\n } else {\n schemaChanges.push({\n type: DangerousChangeType.OPTIONAL_ARG_ADDED,\n description: \"An optional arg \".concat(_newArg.name, \" on \").concat(oldType.name, \".\").concat(oldField.name, \" was added.\")\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction isChangeSafeForObjectOrInterfaceField(oldType, newType) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isListType\"])(oldType)) {\n return (// if they're both lists, make sure the underlying types are compatible\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isListType\"])(newType) && isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType) || // moving from nullable to non-null of the same underlying type is safe\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNonNullType\"])(newType) && isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType)\n );\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNonNullType\"])(oldType)) {\n // if they're both non-null, make sure the underlying types are compatible\n return Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNonNullType\"])(newType) && isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType);\n }\n\n return (// if they're both named types, see if their names are equivalent\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNamedType\"])(newType) && oldType.name === newType.name || // moving from nullable to non-null of the same underlying type is safe\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNonNullType\"])(newType) && isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType)\n );\n}\n\nfunction isChangeSafeForInputObjectFieldOrFieldArg(oldType, newType) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isListType\"])(oldType)) {\n // if they're both lists, make sure the underlying types are compatible\n return Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isListType\"])(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNonNullType\"])(oldType)) {\n return (// if they're both non-null, make sure the underlying types are\n // compatible\n Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNonNullType\"])(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType) || // moving from non-null to nullable of the same underlying type is safe\n !Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNonNullType\"])(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType)\n );\n } // if they're both named types, see if their names are equivalent\n\n\n return Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNamedType\"])(newType) && oldType.name === newType.name;\n}\n\nfunction typeKindName(type) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isScalarType\"])(type)) {\n return 'a Scalar type';\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isObjectType\"])(type)) {\n return 'an Object type';\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInterfaceType\"])(type)) {\n return 'an Interface type';\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isUnionType\"])(type)) {\n return 'a Union type';\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isEnumType\"])(type)) {\n return 'an Enum type';\n } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInputObjectType\"])(type)) {\n return 'an Input type';\n } // istanbul ignore next (Not reachable. All possible named types have been considered)\n\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(0, 'Unexpected type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type));\n}\n\nfunction stringifyValue(value, type) {\n var ast = Object(_astFromValue_mjs__WEBPACK_IMPORTED_MODULE_8__[\"astFromValue\"])(value, type);\n ast != null || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(0);\n var sortedAST = Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_5__[\"visit\"])(ast, {\n ObjectValue: function ObjectValue(objectNode) {\n var fields = [].concat(objectNode.fields).sort(function (fieldA, fieldB) {\n return fieldA.name.value.localeCompare(fieldB.name.value);\n });\n return _objectSpread(_objectSpread({}, objectNode), {}, {\n fields: fields\n });\n }\n });\n return Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__[\"print\"])(sortedAST);\n}\n\nfunction diff(oldArray, newArray) {\n var added = [];\n var removed = [];\n var persisted = [];\n var oldMap = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(oldArray, function (_ref11) {\n var name = _ref11.name;\n return name;\n });\n var newMap = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(newArray, function (_ref12) {\n var name = _ref12.name;\n return name;\n });\n\n for (var _i44 = 0; _i44 < oldArray.length; _i44++) {\n var oldItem = oldArray[_i44];\n var newItem = newMap[oldItem.name];\n\n if (newItem === undefined) {\n removed.push(oldItem);\n } else {\n persisted.push([oldItem, newItem]);\n }\n }\n\n for (var _i46 = 0; _i46 < newArray.length; _i46++) {\n var _newItem = newArray[_i46];\n\n if (oldMap[_newItem.name] === undefined) {\n added.push(_newItem);\n }\n }\n\n return {\n added: added,\n persisted: persisted,\n removed: removed\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2ZpbmRCcmVha2luZ0NoYW5nZXMubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2ZpbmRCcmVha2luZ0NoYW5nZXMubWpzP2M1MGQiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBvYmplY3RWYWx1ZXMgZnJvbSBcIi4uL3BvbHlmaWxscy9vYmplY3RWYWx1ZXMubWpzXCI7XG5pbXBvcnQga2V5TWFwIGZyb20gXCIuLi9qc3V0aWxzL2tleU1hcC5tanNcIjtcbmltcG9ydCBpbnNwZWN0IGZyb20gXCIuLi9qc3V0aWxzL2luc3BlY3QubWpzXCI7XG5pbXBvcnQgaW52YXJpYW50IGZyb20gXCIuLi9qc3V0aWxzL2ludmFyaWFudC5tanNcIjtcbmltcG9ydCB7IHByaW50IH0gZnJvbSBcIi4uL2xhbmd1YWdlL3ByaW50ZXIubWpzXCI7XG5pbXBvcnQgeyB2aXNpdCB9IGZyb20gXCIuLi9sYW5ndWFnZS92aXNpdG9yLm1qc1wiO1xuaW1wb3J0IHsgaXNTcGVjaWZpZWRTY2FsYXJUeXBlIH0gZnJvbSBcIi4uL3R5cGUvc2NhbGFycy5tanNcIjtcbmltcG9ydCB7IGlzU2NhbGFyVHlwZSwgaXNPYmplY3RUeXBlLCBpc0ludGVyZmFjZVR5cGUsIGlzVW5pb25UeXBlLCBpc0VudW1UeXBlLCBpc0lucHV0T2JqZWN0VHlwZSwgaXNOb25OdWxsVHlwZSwgaXNMaXN0VHlwZSwgaXNOYW1lZFR5cGUsIGlzUmVxdWlyZWRBcmd1bWVudCwgaXNSZXF1aXJlZElucHV0RmllbGQgfSBmcm9tIFwiLi4vdHlwZS9kZWZpbml0aW9uLm1qc1wiO1xuaW1wb3J0IHsgYXN0RnJvbVZhbHVlIH0gZnJvbSBcIi4vYXN0RnJvbVZhbHVlLm1qc1wiO1xuZXhwb3J0IHZhciBCcmVha2luZ0NoYW5nZVR5cGUgPSBPYmplY3QuZnJlZXplKHtcbiAgVFlQRV9SRU1PVkVEOiAnVFlQRV9SRU1PVkVEJyxcbiAgVFlQRV9DSEFOR0VEX0tJTkQ6ICdUWVBFX0NIQU5HRURfS0lORCcsXG4gIFRZUEVfUkVNT1ZFRF9GUk9NX1VOSU9OOiAnVFlQRV9SRU1PVkVEX0ZST01fVU5JT04nLFxuICBWQUxVRV9SRU1PVkVEX0ZST01fRU5VTTogJ1ZBTFVFX1JFTU9WRURfRlJPTV9FTlVNJyxcbiAgUkVRVUlSRURfSU5QVVRfRklFTERfQURERUQ6ICdSRVFVSVJFRF9JTlBVVF9GSUVMRF9BRERFRCcsXG4gIElNUExFTUVOVEVEX0lOVEVSRkFDRV9SRU1PVkVEOiAnSU1QTEVNRU5URURfSU5URVJGQUNFX1JFTU9WRUQnLFxuICBGSUVMRF9SRU1PVkVEOiAnRklFTERfUkVNT1ZFRCcsXG4gIEZJRUxEX0NIQU5HRURfS0lORDogJ0ZJRUxEX0NIQU5HRURfS0lORCcsXG4gIFJFUVVJUkVEX0FSR19BRERFRDogJ1JFUVVJUkVEX0FSR19BRERFRCcsXG4gIEFSR19SRU1PVkVEOiAnQVJHX1JFTU9WRUQnLFxuICBBUkdfQ0hBTkdFRF9LSU5EOiAnQVJHX0NIQU5HRURfS0lORCcsXG4gIERJUkVDVElWRV9SRU1PVkVEOiAnRElSRUNUSVZFX1JFTU9WRUQnLFxuICBESVJFQ1RJVkVfQVJHX1JFTU9WRUQ6ICdESVJFQ1RJVkVfQVJHX1JFTU9WRUQnLFxuICBSRVFVSVJFRF9ESVJFQ1RJVkVfQVJHX0FEREVEOiAnUkVRVUlSRURfRElSRUNUSVZFX0FSR19BRERFRCcsXG4gIERJUkVDVElWRV9SRVBFQVRBQkxFX1JFTU9WRUQ6ICdESVJFQ1RJVkVfUkVQRUFUQUJMRV9SRU1PVkVEJyxcbiAgRElSRUNUSVZFX0xPQ0FUSU9OX1JFTU9WRUQ6ICdESVJFQ1RJVkVfTE9DQVRJT05fUkVNT1ZFRCdcbn0pO1xuZXhwb3J0IHZhciBEYW5nZXJvdXNDaGFuZ2VUeXBlID0gT2JqZWN0LmZyZWV6ZSh7XG4gIFZBTFVFX0FEREVEX1RPX0VOVU06ICdWQUxVRV9BRERFRF9UT19FTlVNJyxcbiAgVFlQRV9BRERFRF9UT19VTklPTjogJ1RZUEVfQURERURfVE9fVU5JT04nLFxuICBPUFRJT05BTF9JTlBVVF9GSUVMRF9BRERFRDogJ09QVElPTkFMX0lOUFVUX0ZJRUxEX0FEREVEJyxcbiAgT1BUSU9OQUxfQVJHX0FEREVEOiAnT1BUSU9OQUxfQVJHX0FEREVEJyxcbiAgSU1QTEVNRU5URURfSU5URVJGQUNFX0FEREVEOiAnSU1QTEVNRU5URURfSU5URVJGQUNFX0FEREVEJyxcbiAgQVJHX0RFRkFVTFRfVkFMVUVfQ0hBTkdFOiAnQVJHX0RFRkFVTFRfVkFMVUVfQ0hBTkdFJ1xufSk7XG5cbi8qKlxuICogR2l2ZW4gdHdvIHNjaGVtYXMsIHJldHVybnMgYW4gQXJyYXkgY29udGFpbmluZyBkZXNjcmlwdGlvbnMgb2YgYWxsIHRoZSB0eXBlc1xuICogb2YgYnJlYWtpbmcgY2hhbmdlcyBjb3ZlcmVkIGJ5IHRoZSBvdGhlciBmdW5jdGlvbnMgZG93biBiZWxvdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRCcmVha2luZ0NoYW5nZXMob2xkU2NoZW1hLCBuZXdTY2hlbWEpIHtcbiAgdmFyIGJyZWFraW5nQ2hhbmdlcyA9IGZpbmRTY2hlbWFDaGFuZ2VzKG9sZFNjaGVtYSwgbmV3U2NoZW1hKS5maWx0ZXIoZnVuY3Rpb24gKGNoYW5nZSkge1xuICAgIHJldHVybiBjaGFuZ2UudHlwZSBpbiBCcmVha2luZ0NoYW5nZVR5cGU7XG4gIH0pO1xuICByZXR1cm4gYnJlYWtpbmdDaGFuZ2VzO1xufVxuLyoqXG4gKiBHaXZlbiB0d28gc2NoZW1hcywgcmV0dXJucyBhbiBBcnJheSBjb250YWluaW5nIGRlc2NyaXB0aW9ucyBvZiBhbGwgdGhlIHR5cGVzXG4gKiBvZiBwb3RlbnRpYWxseSBkYW5nZXJvdXMgY2hhbmdlcyBjb3ZlcmVkIGJ5IHRoZSBvdGhlciBmdW5jdGlvbnMgZG93biBiZWxvdy5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZmluZERhbmdlcm91c0NoYW5nZXMob2xkU2NoZW1hLCBuZXdTY2hlbWEpIHtcbiAgdmFyIGRhbmdlcm91c0NoYW5nZXMgPSBmaW5kU2NoZW1hQ2hhbmdlcyhvbGRTY2hlbWEsIG5ld1NjaGVtYSkuZmlsdGVyKGZ1bmN0aW9uIChjaGFuZ2UpIHtcbiAgICByZXR1cm4gY2hhbmdlLnR5cGUgaW4gRGFuZ2Vyb3VzQ2hhbmdlVHlwZTtcbiAgfSk7XG4gIHJldHVybiBkYW5nZXJvdXNDaGFuZ2VzO1xufVxuXG5mdW5jdGlvbiBmaW5kU2NoZW1hQ2hhbmdlcyhvbGRTY2hlbWEsIG5ld1NjaGVtYSkge1xuICByZXR1cm4gW10uY29uY2F0KGZpbmRUeXBlQ2hhbmdlcyhvbGRTY2hlbWEsIG5ld1NjaGVtYSksIGZpbmREaXJlY3RpdmVDaGFuZ2VzKG9sZFNjaGVtYSwgbmV3U2NoZW1hKSk7XG59XG5cbmZ1bmN0aW9uIGZpbmREaXJlY3RpdmVDaGFuZ2VzKG9sZFNjaGVtYSwgbmV3U2NoZW1hKSB7XG4gIHZhciBzY2hlbWFDaGFuZ2VzID0gW107XG4gIHZhciBkaXJlY3RpdmVzRGlmZiA9IGRpZmYob2xkU2NoZW1hLmdldERpcmVjdGl2ZXMoKSwgbmV3U2NoZW1hLmdldERpcmVjdGl2ZXMoKSk7XG5cbiAgZm9yICh2YXIgX2kyID0gMCwgX2RpcmVjdGl2ZXNEaWZmJHJlbW92MiA9IGRpcmVjdGl2ZXNEaWZmLnJlbW92ZWQ7IF9pMiA8IF9kaXJlY3RpdmVzRGlmZiRyZW1vdjIubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBvbGREaXJlY3RpdmUgPSBfZGlyZWN0aXZlc0RpZmYkcmVtb3YyW19pMl07XG4gICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgIHR5cGU6IEJyZWFraW5nQ2hhbmdlVHlwZS5ESVJFQ1RJVkVfUkVNT1ZFRCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlwiLmNvbmNhdChvbGREaXJlY3RpdmUubmFtZSwgXCIgd2FzIHJlbW92ZWQuXCIpXG4gICAgfSk7XG4gIH1cblxuICBmb3IgKHZhciBfaTQgPSAwLCBfZGlyZWN0aXZlc0RpZmYkcGVyc2kyID0gZGlyZWN0aXZlc0RpZmYucGVyc2lzdGVkOyBfaTQgPCBfZGlyZWN0aXZlc0RpZmYkcGVyc2kyLmxlbmd0aDsgX2k0KyspIHtcbiAgICB2YXIgX3JlZjIgPSBfZGlyZWN0aXZlc0RpZmYkcGVyc2kyW19pNF07XG4gICAgdmFyIF9vbGREaXJlY3RpdmUgPSBfcmVmMlswXTtcbiAgICB2YXIgbmV3RGlyZWN0aXZlID0gX3JlZjJbMV07XG4gICAgdmFyIGFyZ3NEaWZmID0gZGlmZihfb2xkRGlyZWN0aXZlLmFyZ3MsIG5ld0RpcmVjdGl2ZS5hcmdzKTtcblxuICAgIGZvciAodmFyIF9pNiA9IDAsIF9hcmdzRGlmZiRhZGRlZDIgPSBhcmdzRGlmZi5hZGRlZDsgX2k2IDwgX2FyZ3NEaWZmJGFkZGVkMi5sZW5ndGg7IF9pNisrKSB7XG4gICAgICB2YXIgbmV3QXJnID0gX2FyZ3NEaWZmJGFkZGVkMltfaTZdO1xuXG4gICAgICBpZiAoaXNSZXF1aXJlZEFyZ3VtZW50KG5ld0FyZykpIHtcbiAgICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuUkVRVUlSRURfRElSRUNUSVZFX0FSR19BRERFRCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJBIHJlcXVpcmVkIGFyZyBcIi5jb25jYXQobmV3QXJnLm5hbWUsIFwiIG9uIGRpcmVjdGl2ZSBcIikuY29uY2F0KF9vbGREaXJlY3RpdmUubmFtZSwgXCIgd2FzIGFkZGVkLlwiKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaTggPSAwLCBfYXJnc0RpZmYkcmVtb3ZlZDIgPSBhcmdzRGlmZi5yZW1vdmVkOyBfaTggPCBfYXJnc0RpZmYkcmVtb3ZlZDIubGVuZ3RoOyBfaTgrKykge1xuICAgICAgdmFyIG9sZEFyZyA9IF9hcmdzRGlmZiRyZW1vdmVkMltfaThdO1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLkRJUkVDVElWRV9BUkdfUkVNT1ZFRCxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiXCIuY29uY2F0KG9sZEFyZy5uYW1lLCBcIiB3YXMgcmVtb3ZlZCBmcm9tIFwiKS5jb25jYXQoX29sZERpcmVjdGl2ZS5uYW1lLCBcIi5cIilcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChfb2xkRGlyZWN0aXZlLmlzUmVwZWF0YWJsZSAmJiAhbmV3RGlyZWN0aXZlLmlzUmVwZWF0YWJsZSkge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLkRJUkVDVElWRV9SRVBFQVRBQkxFX1JFTU9WRUQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlJlcGVhdGFibGUgZmxhZyB3YXMgcmVtb3ZlZCBmcm9tIFwiLmNvbmNhdChfb2xkRGlyZWN0aXZlLm5hbWUsIFwiLlwiKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2kxMCA9IDAsIF9vbGREaXJlY3RpdmUkbG9jYXRpbzIgPSBfb2xkRGlyZWN0aXZlLmxvY2F0aW9uczsgX2kxMCA8IF9vbGREaXJlY3RpdmUkbG9jYXRpbzIubGVuZ3RoOyBfaTEwKyspIHtcbiAgICAgIHZhciBsb2NhdGlvbiA9IF9vbGREaXJlY3RpdmUkbG9jYXRpbzJbX2kxMF07XG5cbiAgICAgIGlmIChuZXdEaXJlY3RpdmUubG9jYXRpb25zLmluZGV4T2YobG9jYXRpb24pID09PSAtMSkge1xuICAgICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgICAgIHR5cGU6IEJyZWFraW5nQ2hhbmdlVHlwZS5ESVJFQ1RJVkVfTE9DQVRJT05fUkVNT1ZFRCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJcIi5jb25jYXQobG9jYXRpb24sIFwiIHdhcyByZW1vdmVkIGZyb20gXCIpLmNvbmNhdChfb2xkRGlyZWN0aXZlLm5hbWUsIFwiLlwiKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2NoZW1hQ2hhbmdlcztcbn1cblxuZnVuY3Rpb24gZmluZFR5cGVDaGFuZ2VzKG9sZFNjaGVtYSwgbmV3U2NoZW1hKSB7XG4gIHZhciBzY2hlbWFDaGFuZ2VzID0gW107XG4gIHZhciB0eXBlc0RpZmYgPSBkaWZmKG9iamVjdFZhbHVlcyhvbGRTY2hlbWEuZ2V0VHlwZU1hcCgpKSwgb2JqZWN0VmFsdWVzKG5ld1NjaGVtYS5nZXRUeXBlTWFwKCkpKTtcblxuICBmb3IgKHZhciBfaTEyID0gMCwgX3R5cGVzRGlmZiRyZW1vdmVkMiA9IHR5cGVzRGlmZi5yZW1vdmVkOyBfaTEyIDwgX3R5cGVzRGlmZiRyZW1vdmVkMi5sZW5ndGg7IF9pMTIrKykge1xuICAgIHZhciBvbGRUeXBlID0gX3R5cGVzRGlmZiRyZW1vdmVkMltfaTEyXTtcbiAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLlRZUEVfUkVNT1ZFRCxcbiAgICAgIGRlc2NyaXB0aW9uOiBpc1NwZWNpZmllZFNjYWxhclR5cGUob2xkVHlwZSkgPyBcIlN0YW5kYXJkIHNjYWxhciBcIi5jb25jYXQob2xkVHlwZS5uYW1lLCBcIiB3YXMgcmVtb3ZlZCBiZWNhdXNlIGl0IGlzIG5vdCByZWZlcmVuY2VkIGFueW1vcmUuXCIpIDogXCJcIi5jb25jYXQob2xkVHlwZS5uYW1lLCBcIiB3YXMgcmVtb3ZlZC5cIilcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAodmFyIF9pMTQgPSAwLCBfdHlwZXNEaWZmJHBlcnNpc3RlZDIgPSB0eXBlc0RpZmYucGVyc2lzdGVkOyBfaTE0IDwgX3R5cGVzRGlmZiRwZXJzaXN0ZWQyLmxlbmd0aDsgX2kxNCsrKSB7XG4gICAgdmFyIF9yZWY0ID0gX3R5cGVzRGlmZiRwZXJzaXN0ZWQyW19pMTRdO1xuICAgIHZhciBfb2xkVHlwZSA9IF9yZWY0WzBdO1xuICAgIHZhciBuZXdUeXBlID0gX3JlZjRbMV07XG5cbiAgICBpZiAoaXNFbnVtVHlwZShfb2xkVHlwZSkgJiYgaXNFbnVtVHlwZShuZXdUeXBlKSkge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoLmFwcGx5KHNjaGVtYUNoYW5nZXMsIGZpbmRFbnVtVHlwZUNoYW5nZXMoX29sZFR5cGUsIG5ld1R5cGUpKTtcbiAgICB9IGVsc2UgaWYgKGlzVW5pb25UeXBlKF9vbGRUeXBlKSAmJiBpc1VuaW9uVHlwZShuZXdUeXBlKSkge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoLmFwcGx5KHNjaGVtYUNoYW5nZXMsIGZpbmRVbmlvblR5cGVDaGFuZ2VzKF9vbGRUeXBlLCBuZXdUeXBlKSk7XG4gICAgfSBlbHNlIGlmIChpc0lucHV0T2JqZWN0VHlwZShfb2xkVHlwZSkgJiYgaXNJbnB1dE9iamVjdFR5cGUobmV3VHlwZSkpIHtcbiAgICAgIHNjaGVtYUNoYW5nZXMucHVzaC5hcHBseShzY2hlbWFDaGFuZ2VzLCBmaW5kSW5wdXRPYmplY3RUeXBlQ2hhbmdlcyhfb2xkVHlwZSwgbmV3VHlwZSkpO1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3RUeXBlKF9vbGRUeXBlKSAmJiBpc09iamVjdFR5cGUobmV3VHlwZSkpIHtcbiAgICAgIHNjaGVtYUNoYW5nZXMucHVzaC5hcHBseShzY2hlbWFDaGFuZ2VzLCBmaW5kRmllbGRDaGFuZ2VzKF9vbGRUeXBlLCBuZXdUeXBlKS5jb25jYXQoZmluZEltcGxlbWVudGVkSW50ZXJmYWNlc0NoYW5nZXMoX29sZFR5cGUsIG5ld1R5cGUpKSk7XG4gICAgfSBlbHNlIGlmIChpc0ludGVyZmFjZVR5cGUoX29sZFR5cGUpICYmIGlzSW50ZXJmYWNlVHlwZShuZXdUeXBlKSkge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoLmFwcGx5KHNjaGVtYUNoYW5nZXMsIGZpbmRGaWVsZENoYW5nZXMoX29sZFR5cGUsIG5ld1R5cGUpLmNvbmNhdChmaW5kSW1wbGVtZW50ZWRJbnRlcmZhY2VzQ2hhbmdlcyhfb2xkVHlwZSwgbmV3VHlwZSkpKTtcbiAgICB9IGVsc2UgaWYgKF9vbGRUeXBlLmNvbnN0cnVjdG9yICE9PSBuZXdUeXBlLmNvbnN0cnVjdG9yKSB7XG4gICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuVFlQRV9DSEFOR0VEX0tJTkQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlwiLmNvbmNhdChfb2xkVHlwZS5uYW1lLCBcIiBjaGFuZ2VkIGZyb20gXCIpICsgXCJcIi5jb25jYXQodHlwZUtpbmROYW1lKF9vbGRUeXBlKSwgXCIgdG8gXCIpLmNvbmNhdCh0eXBlS2luZE5hbWUobmV3VHlwZSksIFwiLlwiKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNjaGVtYUNoYW5nZXM7XG59XG5cbmZ1bmN0aW9uIGZpbmRJbnB1dE9iamVjdFR5cGVDaGFuZ2VzKG9sZFR5cGUsIG5ld1R5cGUpIHtcbiAgdmFyIHNjaGVtYUNoYW5nZXMgPSBbXTtcbiAgdmFyIGZpZWxkc0RpZmYgPSBkaWZmKG9iamVjdFZhbHVlcyhvbGRUeXBlLmdldEZpZWxkcygpKSwgb2JqZWN0VmFsdWVzKG5ld1R5cGUuZ2V0RmllbGRzKCkpKTtcblxuICBmb3IgKHZhciBfaTE2ID0gMCwgX2ZpZWxkc0RpZmYkYWRkZWQyID0gZmllbGRzRGlmZi5hZGRlZDsgX2kxNiA8IF9maWVsZHNEaWZmJGFkZGVkMi5sZW5ndGg7IF9pMTYrKykge1xuICAgIHZhciBuZXdGaWVsZCA9IF9maWVsZHNEaWZmJGFkZGVkMltfaTE2XTtcblxuICAgIGlmIChpc1JlcXVpcmVkSW5wdXRGaWVsZChuZXdGaWVsZCkpIHtcbiAgICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICAgIHR5cGU6IEJyZWFraW5nQ2hhbmdlVHlwZS5SRVFVSVJFRF9JTlBVVF9GSUVMRF9BRERFRCxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiQSByZXF1aXJlZCBmaWVsZCBcIi5jb25jYXQobmV3RmllbGQubmFtZSwgXCIgb24gaW5wdXQgdHlwZSBcIikuY29uY2F0KG9sZFR5cGUubmFtZSwgXCIgd2FzIGFkZGVkLlwiKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICAgIHR5cGU6IERhbmdlcm91c0NoYW5nZVR5cGUuT1BUSU9OQUxfSU5QVVRfRklFTERfQURERUQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkFuIG9wdGlvbmFsIGZpZWxkIFwiLmNvbmNhdChuZXdGaWVsZC5uYW1lLCBcIiBvbiBpbnB1dCB0eXBlIFwiKS5jb25jYXQob2xkVHlwZS5uYW1lLCBcIiB3YXMgYWRkZWQuXCIpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBfaTE4ID0gMCwgX2ZpZWxkc0RpZmYkcmVtb3ZlZDIgPSBmaWVsZHNEaWZmLnJlbW92ZWQ7IF9pMTggPCBfZmllbGRzRGlmZiRyZW1vdmVkMi5sZW5ndGg7IF9pMTgrKykge1xuICAgIHZhciBvbGRGaWVsZCA9IF9maWVsZHNEaWZmJHJlbW92ZWQyW19pMThdO1xuICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuRklFTERfUkVNT1ZFRCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlwiLmNvbmNhdChvbGRUeXBlLm5hbWUsIFwiLlwiKS5jb25jYXQob2xkRmllbGQubmFtZSwgXCIgd2FzIHJlbW92ZWQuXCIpXG4gICAgfSk7XG4gIH1cblxuICBmb3IgKHZhciBfaTIwID0gMCwgX2ZpZWxkc0RpZmYkcGVyc2lzdGVkMiA9IGZpZWxkc0RpZmYucGVyc2lzdGVkOyBfaTIwIDwgX2ZpZWxkc0RpZmYkcGVyc2lzdGVkMi5sZW5ndGg7IF9pMjArKykge1xuICAgIHZhciBfcmVmNiA9IF9maWVsZHNEaWZmJHBlcnNpc3RlZDJbX2kyMF07XG4gICAgdmFyIF9vbGRGaWVsZCA9IF9yZWY2WzBdO1xuICAgIHZhciBfbmV3RmllbGQgPSBfcmVmNlsxXTtcbiAgICB2YXIgaXNTYWZlID0gaXNDaGFuZ2VTYWZlRm9ySW5wdXRPYmplY3RGaWVsZE9yRmllbGRBcmcoX29sZEZpZWxkLnR5cGUsIF9uZXdGaWVsZC50eXBlKTtcblxuICAgIGlmICghaXNTYWZlKSB7XG4gICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuRklFTERfQ0hBTkdFRF9LSU5ELFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJcIi5jb25jYXQob2xkVHlwZS5uYW1lLCBcIi5cIikuY29uY2F0KF9vbGRGaWVsZC5uYW1lLCBcIiBjaGFuZ2VkIHR5cGUgZnJvbSBcIikgKyBcIlwiLmNvbmNhdChTdHJpbmcoX29sZEZpZWxkLnR5cGUpLCBcIiB0byBcIikuY29uY2F0KFN0cmluZyhfbmV3RmllbGQudHlwZSksIFwiLlwiKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNjaGVtYUNoYW5nZXM7XG59XG5cbmZ1bmN0aW9uIGZpbmRVbmlvblR5cGVDaGFuZ2VzKG9sZFR5cGUsIG5ld1R5cGUpIHtcbiAgdmFyIHNjaGVtYUNoYW5nZXMgPSBbXTtcbiAgdmFyIHBvc3NpYmxlVHlwZXNEaWZmID0gZGlmZihvbGRUeXBlLmdldFR5cGVzKCksIG5ld1R5cGUuZ2V0VHlwZXMoKSk7XG5cbiAgZm9yICh2YXIgX2kyMiA9IDAsIF9wb3NzaWJsZVR5cGVzRGlmZiRhZDIgPSBwb3NzaWJsZVR5cGVzRGlmZi5hZGRlZDsgX2kyMiA8IF9wb3NzaWJsZVR5cGVzRGlmZiRhZDIubGVuZ3RoOyBfaTIyKyspIHtcbiAgICB2YXIgbmV3UG9zc2libGVUeXBlID0gX3Bvc3NpYmxlVHlwZXNEaWZmJGFkMltfaTIyXTtcbiAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgdHlwZTogRGFuZ2Vyb3VzQ2hhbmdlVHlwZS5UWVBFX0FEREVEX1RPX1VOSU9OLFxuICAgICAgZGVzY3JpcHRpb246IFwiXCIuY29uY2F0KG5ld1Bvc3NpYmxlVHlwZS5uYW1lLCBcIiB3YXMgYWRkZWQgdG8gdW5pb24gdHlwZSBcIikuY29uY2F0KG9sZFR5cGUubmFtZSwgXCIuXCIpXG4gICAgfSk7XG4gIH1cblxuICBmb3IgKHZhciBfaTI0ID0gMCwgX3Bvc3NpYmxlVHlwZXNEaWZmJHJlMiA9IHBvc3NpYmxlVHlwZXNEaWZmLnJlbW92ZWQ7IF9pMjQgPCBfcG9zc2libGVUeXBlc0RpZmYkcmUyLmxlbmd0aDsgX2kyNCsrKSB7XG4gICAgdmFyIG9sZFBvc3NpYmxlVHlwZSA9IF9wb3NzaWJsZVR5cGVzRGlmZiRyZTJbX2kyNF07XG4gICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgIHR5cGU6IEJyZWFraW5nQ2hhbmdlVHlwZS5UWVBFX1JFTU9WRURfRlJPTV9VTklPTixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlwiLmNvbmNhdChvbGRQb3NzaWJsZVR5cGUubmFtZSwgXCIgd2FzIHJlbW92ZWQgZnJvbSB1bmlvbiB0eXBlIFwiKS5jb25jYXQob2xkVHlwZS5uYW1lLCBcIi5cIilcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWFDaGFuZ2VzO1xufVxuXG5mdW5jdGlvbiBmaW5kRW51bVR5cGVDaGFuZ2VzKG9sZFR5cGUsIG5ld1R5cGUpIHtcbiAgdmFyIHNjaGVtYUNoYW5nZXMgPSBbXTtcbiAgdmFyIHZhbHVlc0RpZmYgPSBkaWZmKG9sZFR5cGUuZ2V0VmFsdWVzKCksIG5ld1R5cGUuZ2V0VmFsdWVzKCkpO1xuXG4gIGZvciAodmFyIF9pMjYgPSAwLCBfdmFsdWVzRGlmZiRhZGRlZDIgPSB2YWx1ZXNEaWZmLmFkZGVkOyBfaTI2IDwgX3ZhbHVlc0RpZmYkYWRkZWQyLmxlbmd0aDsgX2kyNisrKSB7XG4gICAgdmFyIG5ld1ZhbHVlID0gX3ZhbHVlc0RpZmYkYWRkZWQyW19pMjZdO1xuICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICB0eXBlOiBEYW5nZXJvdXNDaGFuZ2VUeXBlLlZBTFVFX0FEREVEX1RPX0VOVU0sXG4gICAgICBkZXNjcmlwdGlvbjogXCJcIi5jb25jYXQobmV3VmFsdWUubmFtZSwgXCIgd2FzIGFkZGVkIHRvIGVudW0gdHlwZSBcIikuY29uY2F0KG9sZFR5cGUubmFtZSwgXCIuXCIpXG4gICAgfSk7XG4gIH1cblxuICBmb3IgKHZhciBfaTI4ID0gMCwgX3ZhbHVlc0RpZmYkcmVtb3ZlZDIgPSB2YWx1ZXNEaWZmLnJlbW92ZWQ7IF9pMjggPCBfdmFsdWVzRGlmZiRyZW1vdmVkMi5sZW5ndGg7IF9pMjgrKykge1xuICAgIHZhciBvbGRWYWx1ZSA9IF92YWx1ZXNEaWZmJHJlbW92ZWQyW19pMjhdO1xuICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuVkFMVUVfUkVNT1ZFRF9GUk9NX0VOVU0sXG4gICAgICBkZXNjcmlwdGlvbjogXCJcIi5jb25jYXQob2xkVmFsdWUubmFtZSwgXCIgd2FzIHJlbW92ZWQgZnJvbSBlbnVtIHR5cGUgXCIpLmNvbmNhdChvbGRUeXBlLm5hbWUsIFwiLlwiKVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHNjaGVtYUNoYW5nZXM7XG59XG5cbmZ1bmN0aW9uIGZpbmRJbXBsZW1lbnRlZEludGVyZmFjZXNDaGFuZ2VzKG9sZFR5cGUsIG5ld1R5cGUpIHtcbiAgdmFyIHNjaGVtYUNoYW5nZXMgPSBbXTtcbiAgdmFyIGludGVyZmFjZXNEaWZmID0gZGlmZihvbGRUeXBlLmdldEludGVyZmFjZXMoKSwgbmV3VHlwZS5nZXRJbnRlcmZhY2VzKCkpO1xuXG4gIGZvciAodmFyIF9pMzAgPSAwLCBfaW50ZXJmYWNlc0RpZmYkYWRkZWQyID0gaW50ZXJmYWNlc0RpZmYuYWRkZWQ7IF9pMzAgPCBfaW50ZXJmYWNlc0RpZmYkYWRkZWQyLmxlbmd0aDsgX2kzMCsrKSB7XG4gICAgdmFyIG5ld0ludGVyZmFjZSA9IF9pbnRlcmZhY2VzRGlmZiRhZGRlZDJbX2kzMF07XG4gICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgIHR5cGU6IERhbmdlcm91c0NoYW5nZVR5cGUuSU1QTEVNRU5URURfSU5URVJGQUNFX0FEREVELFxuICAgICAgZGVzY3JpcHRpb246IFwiXCIuY29uY2F0KG5ld0ludGVyZmFjZS5uYW1lLCBcIiBhZGRlZCB0byBpbnRlcmZhY2VzIGltcGxlbWVudGVkIGJ5IFwiKS5jb25jYXQob2xkVHlwZS5uYW1lLCBcIi5cIilcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAodmFyIF9pMzIgPSAwLCBfaW50ZXJmYWNlc0RpZmYkcmVtb3YyID0gaW50ZXJmYWNlc0RpZmYucmVtb3ZlZDsgX2kzMiA8IF9pbnRlcmZhY2VzRGlmZiRyZW1vdjIubGVuZ3RoOyBfaTMyKyspIHtcbiAgICB2YXIgb2xkSW50ZXJmYWNlID0gX2ludGVyZmFjZXNEaWZmJHJlbW92MltfaTMyXTtcbiAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLklNUExFTUVOVEVEX0lOVEVSRkFDRV9SRU1PVkVELFxuICAgICAgZGVzY3JpcHRpb246IFwiXCIuY29uY2F0KG9sZFR5cGUubmFtZSwgXCIgbm8gbG9uZ2VyIGltcGxlbWVudHMgaW50ZXJmYWNlIFwiKS5jb25jYXQob2xkSW50ZXJmYWNlLm5hbWUsIFwiLlwiKVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHNjaGVtYUNoYW5nZXM7XG59XG5cbmZ1bmN0aW9uIGZpbmRGaWVsZENoYW5nZXMob2xkVHlwZSwgbmV3VHlwZSkge1xuICB2YXIgc2NoZW1hQ2hhbmdlcyA9IFtdO1xuICB2YXIgZmllbGRzRGlmZiA9IGRpZmYob2JqZWN0VmFsdWVzKG9sZFR5cGUuZ2V0RmllbGRzKCkpLCBvYmplY3RWYWx1ZXMobmV3VHlwZS5nZXRGaWVsZHMoKSkpO1xuXG4gIGZvciAodmFyIF9pMzQgPSAwLCBfZmllbGRzRGlmZiRyZW1vdmVkNCA9IGZpZWxkc0RpZmYucmVtb3ZlZDsgX2kzNCA8IF9maWVsZHNEaWZmJHJlbW92ZWQ0Lmxlbmd0aDsgX2kzNCsrKSB7XG4gICAgdmFyIG9sZEZpZWxkID0gX2ZpZWxkc0RpZmYkcmVtb3ZlZDRbX2kzNF07XG4gICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgIHR5cGU6IEJyZWFraW5nQ2hhbmdlVHlwZS5GSUVMRF9SRU1PVkVELFxuICAgICAgZGVzY3JpcHRpb246IFwiXCIuY29uY2F0KG9sZFR5cGUubmFtZSwgXCIuXCIpLmNvbmNhdChvbGRGaWVsZC5uYW1lLCBcIiB3YXMgcmVtb3ZlZC5cIilcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAodmFyIF9pMzYgPSAwLCBfZmllbGRzRGlmZiRwZXJzaXN0ZWQ0ID0gZmllbGRzRGlmZi5wZXJzaXN0ZWQ7IF9pMzYgPCBfZmllbGRzRGlmZiRwZXJzaXN0ZWQ0Lmxlbmd0aDsgX2kzNisrKSB7XG4gICAgdmFyIF9yZWY4ID0gX2ZpZWxkc0RpZmYkcGVyc2lzdGVkNFtfaTM2XTtcbiAgICB2YXIgX29sZEZpZWxkMiA9IF9yZWY4WzBdO1xuICAgIHZhciBuZXdGaWVsZCA9IF9yZWY4WzFdO1xuICAgIHNjaGVtYUNoYW5nZXMucHVzaC5hcHBseShzY2hlbWFDaGFuZ2VzLCBmaW5kQXJnQ2hhbmdlcyhvbGRUeXBlLCBfb2xkRmllbGQyLCBuZXdGaWVsZCkpO1xuICAgIHZhciBpc1NhZmUgPSBpc0NoYW5nZVNhZmVGb3JPYmplY3RPckludGVyZmFjZUZpZWxkKF9vbGRGaWVsZDIudHlwZSwgbmV3RmllbGQudHlwZSk7XG5cbiAgICBpZiAoIWlzU2FmZSkge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLkZJRUxEX0NIQU5HRURfS0lORCxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiXCIuY29uY2F0KG9sZFR5cGUubmFtZSwgXCIuXCIpLmNvbmNhdChfb2xkRmllbGQyLm5hbWUsIFwiIGNoYW5nZWQgdHlwZSBmcm9tIFwiKSArIFwiXCIuY29uY2F0KFN0cmluZyhfb2xkRmllbGQyLnR5cGUpLCBcIiB0byBcIikuY29uY2F0KFN0cmluZyhuZXdGaWVsZC50eXBlKSwgXCIuXCIpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2NoZW1hQ2hhbmdlcztcbn1cblxuZnVuY3Rpb24gZmluZEFyZ0NoYW5nZXMob2xkVHlwZSwgb2xkRmllbGQsIG5ld0ZpZWxkKSB7XG4gIHZhciBzY2hlbWFDaGFuZ2VzID0gW107XG4gIHZhciBhcmdzRGlmZiA9IGRpZmYob2xkRmllbGQuYXJncywgbmV3RmllbGQuYXJncyk7XG5cbiAgZm9yICh2YXIgX2kzOCA9IDAsIF9hcmdzRGlmZiRyZW1vdmVkNCA9IGFyZ3NEaWZmLnJlbW92ZWQ7IF9pMzggPCBfYXJnc0RpZmYkcmVtb3ZlZDQubGVuZ3RoOyBfaTM4KyspIHtcbiAgICB2YXIgb2xkQXJnID0gX2FyZ3NEaWZmJHJlbW92ZWQ0W19pMzhdO1xuICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuQVJHX1JFTU9WRUQsXG4gICAgICBkZXNjcmlwdGlvbjogXCJcIi5jb25jYXQob2xkVHlwZS5uYW1lLCBcIi5cIikuY29uY2F0KG9sZEZpZWxkLm5hbWUsIFwiIGFyZyBcIikuY29uY2F0KG9sZEFyZy5uYW1lLCBcIiB3YXMgcmVtb3ZlZC5cIilcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAodmFyIF9pNDAgPSAwLCBfYXJnc0RpZmYkcGVyc2lzdGVkMiA9IGFyZ3NEaWZmLnBlcnNpc3RlZDsgX2k0MCA8IF9hcmdzRGlmZiRwZXJzaXN0ZWQyLmxlbmd0aDsgX2k0MCsrKSB7XG4gICAgdmFyIF9yZWYxMCA9IF9hcmdzRGlmZiRwZXJzaXN0ZWQyW19pNDBdO1xuICAgIHZhciBfb2xkQXJnID0gX3JlZjEwWzBdO1xuICAgIHZhciBuZXdBcmcgPSBfcmVmMTBbMV07XG4gICAgdmFyIGlzU2FmZSA9IGlzQ2hhbmdlU2FmZUZvcklucHV0T2JqZWN0RmllbGRPckZpZWxkQXJnKF9vbGRBcmcudHlwZSwgbmV3QXJnLnR5cGUpO1xuXG4gICAgaWYgKCFpc1NhZmUpIHtcbiAgICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICAgIHR5cGU6IEJyZWFraW5nQ2hhbmdlVHlwZS5BUkdfQ0hBTkdFRF9LSU5ELFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJcIi5jb25jYXQob2xkVHlwZS5uYW1lLCBcIi5cIikuY29uY2F0KG9sZEZpZWxkLm5hbWUsIFwiIGFyZyBcIikuY29uY2F0KF9vbGRBcmcubmFtZSwgXCIgaGFzIGNoYW5nZWQgdHlwZSBmcm9tIFwiKSArIFwiXCIuY29uY2F0KFN0cmluZyhfb2xkQXJnLnR5cGUpLCBcIiB0byBcIikuY29uY2F0KFN0cmluZyhuZXdBcmcudHlwZSksIFwiLlwiKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChfb2xkQXJnLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAobmV3QXJnLmRlZmF1bHRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgdHlwZTogRGFuZ2Vyb3VzQ2hhbmdlVHlwZS5BUkdfREVGQVVMVF9WQUxVRV9DSEFOR0UsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiXCIuY29uY2F0KG9sZFR5cGUubmFtZSwgXCIuXCIpLmNvbmNhdChvbGRGaWVsZC5uYW1lLCBcIiBhcmcgXCIpLmNvbmNhdChfb2xkQXJnLm5hbWUsIFwiIGRlZmF1bHRWYWx1ZSB3YXMgcmVtb3ZlZC5cIilcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTaW5jZSB3ZSBsb29raW5nIG9ubHkgZm9yIGNsaWVudCdzIG9ic2VydmFibGUgY2hhbmdlcyB3ZSBzaG91bGRcbiAgICAgICAgLy8gY29tcGFyZSBkZWZhdWx0IHZhbHVlcyBpbiB0aGUgc2FtZSByZXByZXNlbnRhdGlvbiBhcyB0aGV5IGFyZVxuICAgICAgICAvLyByZXByZXNlbnRlZCBpbnNpZGUgaW50cm9zcGVjdGlvbi5cbiAgICAgICAgdmFyIG9sZFZhbHVlU3RyID0gc3RyaW5naWZ5VmFsdWUoX29sZEFyZy5kZWZhdWx0VmFsdWUsIF9vbGRBcmcudHlwZSk7XG4gICAgICAgIHZhciBuZXdWYWx1ZVN0ciA9IHN0cmluZ2lmeVZhbHVlKG5ld0FyZy5kZWZhdWx0VmFsdWUsIG5ld0FyZy50eXBlKTtcblxuICAgICAgICBpZiAob2xkVmFsdWVTdHIgIT09IG5ld1ZhbHVlU3RyKSB7XG4gICAgICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IERhbmdlcm91c0NoYW5nZVR5cGUuQVJHX0RFRkFVTFRfVkFMVUVfQ0hBTkdFLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiXCIuY29uY2F0KG9sZFR5cGUubmFtZSwgXCIuXCIpLmNvbmNhdChvbGRGaWVsZC5uYW1lLCBcIiBhcmcgXCIpLmNvbmNhdChfb2xkQXJnLm5hbWUsIFwiIGhhcyBjaGFuZ2VkIGRlZmF1bHRWYWx1ZSBmcm9tIFwiKS5jb25jYXQob2xkVmFsdWVTdHIsIFwiIHRvIFwiKS5jb25jYXQobmV3VmFsdWVTdHIsIFwiLlwiKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgX2k0MiA9IDAsIF9hcmdzRGlmZiRhZGRlZDQgPSBhcmdzRGlmZi5hZGRlZDsgX2k0MiA8IF9hcmdzRGlmZiRhZGRlZDQubGVuZ3RoOyBfaTQyKyspIHtcbiAgICB2YXIgX25ld0FyZyA9IF9hcmdzRGlmZiRhZGRlZDRbX2k0Ml07XG5cbiAgICBpZiAoaXNSZXF1aXJlZEFyZ3VtZW50KF9uZXdBcmcpKSB7XG4gICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuUkVRVUlSRURfQVJHX0FEREVELFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJBIHJlcXVpcmVkIGFyZyBcIi5jb25jYXQoX25ld0FyZy5uYW1lLCBcIiBvbiBcIikuY29uY2F0KG9sZFR5cGUubmFtZSwgXCIuXCIpLmNvbmNhdChvbGRGaWVsZC5uYW1lLCBcIiB3YXMgYWRkZWQuXCIpXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogRGFuZ2Vyb3VzQ2hhbmdlVHlwZS5PUFRJT05BTF9BUkdfQURERUQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkFuIG9wdGlvbmFsIGFyZyBcIi5jb25jYXQoX25ld0FyZy5uYW1lLCBcIiBvbiBcIikuY29uY2F0KG9sZFR5cGUubmFtZSwgXCIuXCIpLmNvbmNhdChvbGRGaWVsZC5uYW1lLCBcIiB3YXMgYWRkZWQuXCIpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2NoZW1hQ2hhbmdlcztcbn1cblxuZnVuY3Rpb24gaXNDaGFuZ2VTYWZlRm9yT2JqZWN0T3JJbnRlcmZhY2VGaWVsZChvbGRUeXBlLCBuZXdUeXBlKSB7XG4gIGlmIChpc0xpc3RUeXBlKG9sZFR5cGUpKSB7XG4gICAgcmV0dXJuICgvLyBpZiB0aGV5J3JlIGJvdGggbGlzdHMsIG1ha2Ugc3VyZSB0aGUgdW5kZXJseWluZyB0eXBlcyBhcmUgY29tcGF0aWJsZVxuICAgICAgaXNMaXN0VHlwZShuZXdUeXBlKSAmJiBpc0NoYW5nZVNhZmVGb3JPYmplY3RPckludGVyZmFjZUZpZWxkKG9sZFR5cGUub2ZUeXBlLCBuZXdUeXBlLm9mVHlwZSkgfHwgLy8gbW92aW5nIGZyb20gbnVsbGFibGUgdG8gbm9uLW51bGwgb2YgdGhlIHNhbWUgdW5kZXJseWluZyB0eXBlIGlzIHNhZmVcbiAgICAgIGlzTm9uTnVsbFR5cGUobmV3VHlwZSkgJiYgaXNDaGFuZ2VTYWZlRm9yT2JqZWN0T3JJbnRlcmZhY2VGaWVsZChvbGRUeXBlLCBuZXdUeXBlLm9mVHlwZSlcbiAgICApO1xuICB9XG5cbiAgaWYgKGlzTm9uTnVsbFR5cGUob2xkVHlwZSkpIHtcbiAgICAvLyBpZiB0aGV5J3JlIGJvdGggbm9uLW51bGwsIG1ha2Ugc3VyZSB0aGUgdW5kZXJseWluZyB0eXBlcyBhcmUgY29tcGF0aWJsZVxuICAgIHJldHVybiBpc05vbk51bGxUeXBlKG5ld1R5cGUpICYmIGlzQ2hhbmdlU2FmZUZvck9iamVjdE9ySW50ZXJmYWNlRmllbGQob2xkVHlwZS5vZlR5cGUsIG5ld1R5cGUub2ZUeXBlKTtcbiAgfVxuXG4gIHJldHVybiAoLy8gaWYgdGhleSdyZSBib3RoIG5hbWVkIHR5cGVzLCBzZWUgaWYgdGhlaXIgbmFtZXMgYXJlIGVxdWl2YWxlbnRcbiAgICBpc05hbWVkVHlwZShuZXdUeXBlKSAmJiBvbGRUeXBlLm5hbWUgPT09IG5ld1R5cGUubmFtZSB8fCAvLyBtb3ZpbmcgZnJvbSBudWxsYWJsZSB0byBub24tbnVsbCBvZiB0aGUgc2FtZSB1bmRlcmx5aW5nIHR5cGUgaXMgc2FmZVxuICAgIGlzTm9uTnVsbFR5cGUobmV3VHlwZSkgJiYgaXNDaGFuZ2VTYWZlRm9yT2JqZWN0T3JJbnRlcmZhY2VGaWVsZChvbGRUeXBlLCBuZXdUeXBlLm9mVHlwZSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gaXNDaGFuZ2VTYWZlRm9ySW5wdXRPYmplY3RGaWVsZE9yRmllbGRBcmcob2xkVHlwZSwgbmV3VHlwZSkge1xuICBpZiAoaXNMaXN0VHlwZShvbGRUeXBlKSkge1xuICAgIC8vIGlmIHRoZXkncmUgYm90aCBsaXN0cywgbWFrZSBzdXJlIHRoZSB1bmRlcmx5aW5nIHR5cGVzIGFyZSBjb21wYXRpYmxlXG4gICAgcmV0dXJuIGlzTGlzdFR5cGUobmV3VHlwZSkgJiYgaXNDaGFuZ2VTYWZlRm9ySW5wdXRPYmplY3RGaWVsZE9yRmllbGRBcmcob2xkVHlwZS5vZlR5cGUsIG5ld1R5cGUub2ZUeXBlKTtcbiAgfVxuXG4gIGlmIChpc05vbk51bGxUeXBlKG9sZFR5cGUpKSB7XG4gICAgcmV0dXJuICgvLyBpZiB0aGV5J3JlIGJvdGggbm9uLW51bGwsIG1ha2Ugc3VyZSB0aGUgdW5kZXJseWluZyB0eXBlcyBhcmVcbiAgICAgIC8vIGNvbXBhdGlibGVcbiAgICAgIGlzTm9uTnVsbFR5cGUobmV3VHlwZSkgJiYgaXNDaGFuZ2VTYWZlRm9ySW5wdXRPYmplY3RGaWVsZE9yRmllbGRBcmcob2xkVHlwZS5vZlR5cGUsIG5ld1R5cGUub2ZUeXBlKSB8fCAvLyBtb3ZpbmcgZnJvbSBub24tbnVsbCB0byBudWxsYWJsZSBvZiB0aGUgc2FtZSB1bmRlcmx5aW5nIHR5cGUgaXMgc2FmZVxuICAgICAgIWlzTm9uTnVsbFR5cGUobmV3VHlwZSkgJiYgaXNDaGFuZ2VTYWZlRm9ySW5wdXRPYmplY3RGaWVsZE9yRmllbGRBcmcob2xkVHlwZS5vZlR5cGUsIG5ld1R5cGUpXG4gICAgKTtcbiAgfSAvLyBpZiB0aGV5J3JlIGJvdGggbmFtZWQgdHlwZXMsIHNlZSBpZiB0aGVpciBuYW1lcyBhcmUgZXF1aXZhbGVudFxuXG5cbiAgcmV0dXJuIGlzTmFtZWRUeXBlKG5ld1R5cGUpICYmIG9sZFR5cGUubmFtZSA9PT0gbmV3VHlwZS5uYW1lO1xufVxuXG5mdW5jdGlvbiB0eXBlS2luZE5hbWUodHlwZSkge1xuICBpZiAoaXNTY2FsYXJUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuICdhIFNjYWxhciB0eXBlJztcbiAgfVxuXG4gIGlmIChpc09iamVjdFR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gJ2FuIE9iamVjdCB0eXBlJztcbiAgfVxuXG4gIGlmIChpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gJ2FuIEludGVyZmFjZSB0eXBlJztcbiAgfVxuXG4gIGlmIChpc1VuaW9uVHlwZSh0eXBlKSkge1xuICAgIHJldHVybiAnYSBVbmlvbiB0eXBlJztcbiAgfVxuXG4gIGlmIChpc0VudW1UeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuICdhbiBFbnVtIHR5cGUnO1xuICB9IC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlIChTZWU6ICdodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yNjE4JylcblxuXG4gIGlmIChpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgIHJldHVybiAnYW4gSW5wdXQgdHlwZSc7XG4gIH0gLy8gaXN0YW5idWwgaWdub3JlIG5leHQgKE5vdCByZWFjaGFibGUuIEFsbCBwb3NzaWJsZSBuYW1lZCB0eXBlcyBoYXZlIGJlZW4gY29uc2lkZXJlZClcblxuXG4gIGZhbHNlIHx8IGludmFyaWFudCgwLCAnVW5leHBlY3RlZCB0eXBlOiAnICsgaW5zcGVjdCh0eXBlKSk7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeVZhbHVlKHZhbHVlLCB0eXBlKSB7XG4gIHZhciBhc3QgPSBhc3RGcm9tVmFsdWUodmFsdWUsIHR5cGUpO1xuICBhc3QgIT0gbnVsbCB8fCBpbnZhcmlhbnQoMCk7XG4gIHZhciBzb3J0ZWRBU1QgPSB2aXNpdChhc3QsIHtcbiAgICBPYmplY3RWYWx1ZTogZnVuY3Rpb24gT2JqZWN0VmFsdWUob2JqZWN0Tm9kZSkge1xuICAgICAgdmFyIGZpZWxkcyA9IFtdLmNvbmNhdChvYmplY3ROb2RlLmZpZWxkcykuc29ydChmdW5jdGlvbiAoZmllbGRBLCBmaWVsZEIpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkQS5uYW1lLnZhbHVlLmxvY2FsZUNvbXBhcmUoZmllbGRCLm5hbWUudmFsdWUpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvYmplY3ROb2RlKSwge30sIHtcbiAgICAgICAgZmllbGRzOiBmaWVsZHNcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBwcmludChzb3J0ZWRBU1QpO1xufVxuXG5mdW5jdGlvbiBkaWZmKG9sZEFycmF5LCBuZXdBcnJheSkge1xuICB2YXIgYWRkZWQgPSBbXTtcbiAgdmFyIHJlbW92ZWQgPSBbXTtcbiAgdmFyIHBlcnNpc3RlZCA9IFtdO1xuICB2YXIgb2xkTWFwID0ga2V5TWFwKG9sZEFycmF5LCBmdW5jdGlvbiAoX3JlZjExKSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmMTEubmFtZTtcbiAgICByZXR1cm4gbmFtZTtcbiAgfSk7XG4gIHZhciBuZXdNYXAgPSBrZXlNYXAobmV3QXJyYXksIGZ1bmN0aW9uIChfcmVmMTIpIHtcbiAgICB2YXIgbmFtZSA9IF9yZWYxMi5uYW1lO1xuICAgIHJldHVybiBuYW1lO1xuICB9KTtcblxuICBmb3IgKHZhciBfaTQ0ID0gMDsgX2k0NCA8IG9sZEFycmF5Lmxlbmd0aDsgX2k0NCsrKSB7XG4gICAgdmFyIG9sZEl0ZW0gPSBvbGRBcnJheVtfaTQ0XTtcbiAgICB2YXIgbmV3SXRlbSA9IG5ld01hcFtvbGRJdGVtLm5hbWVdO1xuXG4gICAgaWYgKG5ld0l0ZW0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVtb3ZlZC5wdXNoKG9sZEl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwZXJzaXN0ZWQucHVzaChbb2xkSXRlbSwgbmV3SXRlbV0pO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIF9pNDYgPSAwOyBfaTQ2IDwgbmV3QXJyYXkubGVuZ3RoOyBfaTQ2KyspIHtcbiAgICB2YXIgX25ld0l0ZW0gPSBuZXdBcnJheVtfaTQ2XTtcblxuICAgIGlmIChvbGRNYXBbX25ld0l0ZW0ubmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgYWRkZWQucHVzaChfbmV3SXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRlZDogYWRkZWQsXG4gICAgcGVyc2lzdGVkOiBwZXJzaXN0ZWQsXG4gICAgcmVtb3ZlZDogcmVtb3ZlZFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/findBreakingChanges.mjs\n");
1185
1186/***/ }),
1187
1188/***/ "../../../node_modules/graphql/utilities/findDeprecatedUsages.mjs":
1189/*!***************************************************************************************************!*\
1190 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/findDeprecatedUsages.mjs ***!
1191 \***************************************************************************************************/
1192/*! exports provided: findDeprecatedUsages */
1193/***/ (function(module, __webpack_exports__, __webpack_require__) {
1194
1195"use strict";
1196eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findDeprecatedUsages\", function() { return findDeprecatedUsages; });\n/* harmony import */ var _validation_validate_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../validation/validate.mjs */ \"../../../node_modules/graphql/validation/validate.mjs\");\n/* harmony import */ var _validation_rules_custom_NoDeprecatedCustomRule_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../validation/rules/custom/NoDeprecatedCustomRule.mjs */ \"../../../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs\");\n\n\n/**\n * A validation rule which reports deprecated usages.\n *\n * Returns a list of GraphQLError instances describing each deprecated use.\n *\n * @deprecated Please use `validate` with `NoDeprecatedCustomRule` instead:\n *\n * ```\n * import { validate, NoDeprecatedCustomRule } from 'graphql'\n *\n * const errors = validate(schema, document, [NoDeprecatedCustomRule])\n * ```\n */\n\nfunction findDeprecatedUsages(schema, ast) {\n return Object(_validation_validate_mjs__WEBPACK_IMPORTED_MODULE_0__[\"validate\"])(schema, ast, [_validation_rules_custom_NoDeprecatedCustomRule_mjs__WEBPACK_IMPORTED_MODULE_1__[\"NoDeprecatedCustomRule\"]]);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2ZpbmREZXByZWNhdGVkVXNhZ2VzLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9maW5kRGVwcmVjYXRlZFVzYWdlcy5tanM/NmM2MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2YWxpZGF0ZSB9IGZyb20gXCIuLi92YWxpZGF0aW9uL3ZhbGlkYXRlLm1qc1wiO1xuaW1wb3J0IHsgTm9EZXByZWNhdGVkQ3VzdG9tUnVsZSB9IGZyb20gXCIuLi92YWxpZGF0aW9uL3J1bGVzL2N1c3RvbS9Ob0RlcHJlY2F0ZWRDdXN0b21SdWxlLm1qc1wiO1xuLyoqXG4gKiBBIHZhbGlkYXRpb24gcnVsZSB3aGljaCByZXBvcnRzIGRlcHJlY2F0ZWQgdXNhZ2VzLlxuICpcbiAqIFJldHVybnMgYSBsaXN0IG9mIEdyYXBoUUxFcnJvciBpbnN0YW5jZXMgZGVzY3JpYmluZyBlYWNoIGRlcHJlY2F0ZWQgdXNlLlxuICpcbiAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYHZhbGlkYXRlYCB3aXRoIGBOb0RlcHJlY2F0ZWRDdXN0b21SdWxlYCBpbnN0ZWFkOlxuICpcbiAqIGBgYFxuICogaW1wb3J0IHsgdmFsaWRhdGUsIE5vRGVwcmVjYXRlZEN1c3RvbVJ1bGUgfSBmcm9tICdncmFwaHFsJ1xuICpcbiAqIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlKHNjaGVtYSwgZG9jdW1lbnQsIFtOb0RlcHJlY2F0ZWRDdXN0b21SdWxlXSlcbiAqIGBgYFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRGVwcmVjYXRlZFVzYWdlcyhzY2hlbWEsIGFzdCkge1xuICByZXR1cm4gdmFsaWRhdGUoc2NoZW1hLCBhc3QsIFtOb0RlcHJlY2F0ZWRDdXN0b21SdWxlXSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/findDeprecatedUsages.mjs\n");
1197
1198/***/ }),
1199
1200/***/ "../../../node_modules/graphql/utilities/getIntrospectionQuery.mjs":
1201/*!****************************************************************************************************!*\
1202 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/getIntrospectionQuery.mjs ***!
1203 \****************************************************************************************************/
1204/*! exports provided: getIntrospectionQuery */
1205/***/ (function(module, __webpack_exports__, __webpack_require__) {
1206
1207"use strict";
1208eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getIntrospectionQuery\", function() { return getIntrospectionQuery; });\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction getIntrospectionQuery(options) {\n var optionsWithDefault = _objectSpread({\n descriptions: true,\n specifiedByUrl: false,\n directiveIsRepeatable: false,\n schemaDescription: false\n }, options);\n\n var descriptions = optionsWithDefault.descriptions ? 'description' : '';\n var specifiedByUrl = optionsWithDefault.specifiedByUrl ? 'specifiedByUrl' : '';\n var directiveIsRepeatable = optionsWithDefault.directiveIsRepeatable ? 'isRepeatable' : '';\n var schemaDescription = optionsWithDefault.schemaDescription ? descriptions : '';\n return \"\\n query IntrospectionQuery {\\n __schema {\\n \".concat(schemaDescription, \"\\n queryType { name }\\n mutationType { name }\\n subscriptionType { name }\\n types {\\n ...FullType\\n }\\n directives {\\n name\\n \").concat(descriptions, \"\\n \").concat(directiveIsRepeatable, \"\\n locations\\n args {\\n ...InputValue\\n }\\n }\\n }\\n }\\n\\n fragment FullType on __Type {\\n kind\\n name\\n \").concat(descriptions, \"\\n \").concat(specifiedByUrl, \"\\n fields(includeDeprecated: true) {\\n name\\n \").concat(descriptions, \"\\n args {\\n ...InputValue\\n }\\n type {\\n ...TypeRef\\n }\\n isDeprecated\\n deprecationReason\\n }\\n inputFields {\\n ...InputValue\\n }\\n interfaces {\\n ...TypeRef\\n }\\n enumValues(includeDeprecated: true) {\\n name\\n \").concat(descriptions, \"\\n isDeprecated\\n deprecationReason\\n }\\n possibleTypes {\\n ...TypeRef\\n }\\n }\\n\\n fragment InputValue on __InputValue {\\n name\\n \").concat(descriptions, \"\\n type { ...TypeRef }\\n defaultValue\\n }\\n\\n fragment TypeRef on __Type {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n ofType {\\n kind\\n name\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n \");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2dldEludHJvc3BlY3Rpb25RdWVyeS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvZ2V0SW50cm9zcGVjdGlvblF1ZXJ5Lm1qcz8wOTU4Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50cm9zcGVjdGlvblF1ZXJ5KG9wdGlvbnMpIHtcbiAgdmFyIG9wdGlvbnNXaXRoRGVmYXVsdCA9IF9vYmplY3RTcHJlYWQoe1xuICAgIGRlc2NyaXB0aW9uczogdHJ1ZSxcbiAgICBzcGVjaWZpZWRCeVVybDogZmFsc2UsXG4gICAgZGlyZWN0aXZlSXNSZXBlYXRhYmxlOiBmYWxzZSxcbiAgICBzY2hlbWFEZXNjcmlwdGlvbjogZmFsc2VcbiAgfSwgb3B0aW9ucyk7XG5cbiAgdmFyIGRlc2NyaXB0aW9ucyA9IG9wdGlvbnNXaXRoRGVmYXVsdC5kZXNjcmlwdGlvbnMgPyAnZGVzY3JpcHRpb24nIDogJyc7XG4gIHZhciBzcGVjaWZpZWRCeVVybCA9IG9wdGlvbnNXaXRoRGVmYXVsdC5zcGVjaWZpZWRCeVVybCA/ICdzcGVjaWZpZWRCeVVybCcgOiAnJztcbiAgdmFyIGRpcmVjdGl2ZUlzUmVwZWF0YWJsZSA9IG9wdGlvbnNXaXRoRGVmYXVsdC5kaXJlY3RpdmVJc1JlcGVhdGFibGUgPyAnaXNSZXBlYXRhYmxlJyA6ICcnO1xuICB2YXIgc2NoZW1hRGVzY3JpcHRpb24gPSBvcHRpb25zV2l0aERlZmF1bHQuc2NoZW1hRGVzY3JpcHRpb24gPyBkZXNjcmlwdGlvbnMgOiAnJztcbiAgcmV0dXJuIFwiXFxuICAgIHF1ZXJ5IEludHJvc3BlY3Rpb25RdWVyeSB7XFxuICAgICAgX19zY2hlbWEge1xcbiAgICAgICAgXCIuY29uY2F0KHNjaGVtYURlc2NyaXB0aW9uLCBcIlxcbiAgICAgICAgcXVlcnlUeXBlIHsgbmFtZSB9XFxuICAgICAgICBtdXRhdGlvblR5cGUgeyBuYW1lIH1cXG4gICAgICAgIHN1YnNjcmlwdGlvblR5cGUgeyBuYW1lIH1cXG4gICAgICAgIHR5cGVzIHtcXG4gICAgICAgICAgLi4uRnVsbFR5cGVcXG4gICAgICAgIH1cXG4gICAgICAgIGRpcmVjdGl2ZXMge1xcbiAgICAgICAgICBuYW1lXFxuICAgICAgICAgIFwiKS5jb25jYXQoZGVzY3JpcHRpb25zLCBcIlxcbiAgICAgICAgICBcIikuY29uY2F0KGRpcmVjdGl2ZUlzUmVwZWF0YWJsZSwgXCJcXG4gICAgICAgICAgbG9jYXRpb25zXFxuICAgICAgICAgIGFyZ3Mge1xcbiAgICAgICAgICAgIC4uLklucHV0VmFsdWVcXG4gICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICBmcmFnbWVudCBGdWxsVHlwZSBvbiBfX1R5cGUge1xcbiAgICAgIGtpbmRcXG4gICAgICBuYW1lXFxuICAgICAgXCIpLmNvbmNhdChkZXNjcmlwdGlvbnMsIFwiXFxuICAgICAgXCIpLmNvbmNhdChzcGVjaWZpZWRCeVVybCwgXCJcXG4gICAgICBmaWVsZHMoaW5jbHVkZURlcHJlY2F0ZWQ6IHRydWUpIHtcXG4gICAgICAgIG5hbWVcXG4gICAgICAgIFwiKS5jb25jYXQoZGVzY3JpcHRpb25zLCBcIlxcbiAgICAgICAgYXJncyB7XFxuICAgICAgICAgIC4uLklucHV0VmFsdWVcXG4gICAgICAgIH1cXG4gICAgICAgIHR5cGUge1xcbiAgICAgICAgICAuLi5UeXBlUmVmXFxuICAgICAgICB9XFxuICAgICAgICBpc0RlcHJlY2F0ZWRcXG4gICAgICAgIGRlcHJlY2F0aW9uUmVhc29uXFxuICAgICAgfVxcbiAgICAgIGlucHV0RmllbGRzIHtcXG4gICAgICAgIC4uLklucHV0VmFsdWVcXG4gICAgICB9XFxuICAgICAgaW50ZXJmYWNlcyB7XFxuICAgICAgICAuLi5UeXBlUmVmXFxuICAgICAgfVxcbiAgICAgIGVudW1WYWx1ZXMoaW5jbHVkZURlcHJlY2F0ZWQ6IHRydWUpIHtcXG4gICAgICAgIG5hbWVcXG4gICAgICAgIFwiKS5jb25jYXQoZGVzY3JpcHRpb25zLCBcIlxcbiAgICAgICAgaXNEZXByZWNhdGVkXFxuICAgICAgICBkZXByZWNhdGlvblJlYXNvblxcbiAgICAgIH1cXG4gICAgICBwb3NzaWJsZVR5cGVzIHtcXG4gICAgICAgIC4uLlR5cGVSZWZcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgZnJhZ21lbnQgSW5wdXRWYWx1ZSBvbiBfX0lucHV0VmFsdWUge1xcbiAgICAgIG5hbWVcXG4gICAgICBcIikuY29uY2F0KGRlc2NyaXB0aW9ucywgXCJcXG4gICAgICB0eXBlIHsgLi4uVHlwZVJlZiB9XFxuICAgICAgZGVmYXVsdFZhbHVlXFxuICAgIH1cXG5cXG4gICAgZnJhZ21lbnQgVHlwZVJlZiBvbiBfX1R5cGUge1xcbiAgICAgIGtpbmRcXG4gICAgICBuYW1lXFxuICAgICAgb2ZUeXBlIHtcXG4gICAgICAgIGtpbmRcXG4gICAgICAgIG5hbWVcXG4gICAgICAgIG9mVHlwZSB7XFxuICAgICAgICAgIGtpbmRcXG4gICAgICAgICAgbmFtZVxcbiAgICAgICAgICBvZlR5cGUge1xcbiAgICAgICAgICAgIGtpbmRcXG4gICAgICAgICAgICBuYW1lXFxuICAgICAgICAgICAgb2ZUeXBlIHtcXG4gICAgICAgICAgICAgIGtpbmRcXG4gICAgICAgICAgICAgIG5hbWVcXG4gICAgICAgICAgICAgIG9mVHlwZSB7XFxuICAgICAgICAgICAgICAgIGtpbmRcXG4gICAgICAgICAgICAgICAgbmFtZVxcbiAgICAgICAgICAgICAgICBvZlR5cGUge1xcbiAgICAgICAgICAgICAgICAgIGtpbmRcXG4gICAgICAgICAgICAgICAgICBuYW1lXFxuICAgICAgICAgICAgICAgICAgb2ZUeXBlIHtcXG4gICAgICAgICAgICAgICAgICAgIGtpbmRcXG4gICAgICAgICAgICAgICAgICAgIG5hbWVcXG4gICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH1cXG4gIFwiKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/getIntrospectionQuery.mjs\n");
1209
1210/***/ }),
1211
1212/***/ "../../../node_modules/graphql/utilities/getOperationAST.mjs":
1213/*!**********************************************************************************************!*\
1214 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/getOperationAST.mjs ***!
1215 \**********************************************************************************************/
1216/*! exports provided: getOperationAST */
1217/***/ (function(module, __webpack_exports__, __webpack_require__) {
1218
1219"use strict";
1220eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOperationAST\", function() { return getOperationAST; });\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n\n/**\n * Returns an operation AST given a document AST and optionally an operation\n * name. If a name is not provided, an operation is only returned if only one is\n * provided in the document.\n */\n\nfunction getOperationAST(documentAST, operationName) {\n var operation = null;\n\n for (var _i2 = 0, _documentAST$definiti2 = documentAST.definitions; _i2 < _documentAST$definiti2.length; _i2++) {\n var definition = _documentAST$definiti2[_i2];\n\n if (definition.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].OPERATION_DEFINITION) {\n var _definition$name;\n\n if (operationName == null) {\n // If no operation name was provided, only return an Operation if there\n // is one defined in the document. Upon encountering the second, return\n // null.\n if (operation) {\n return null;\n }\n\n operation = definition;\n } else if (((_definition$name = definition.name) === null || _definition$name === void 0 ? void 0 : _definition$name.value) === operationName) {\n return definition;\n }\n }\n }\n\n return operation;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2dldE9wZXJhdGlvbkFTVC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvZ2V0T3BlcmF0aW9uQVNULm1qcz83MDlkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtpbmQgfSBmcm9tIFwiLi4vbGFuZ3VhZ2Uva2luZHMubWpzXCI7XG4vKipcbiAqIFJldHVybnMgYW4gb3BlcmF0aW9uIEFTVCBnaXZlbiBhIGRvY3VtZW50IEFTVCBhbmQgb3B0aW9uYWxseSBhbiBvcGVyYXRpb25cbiAqIG5hbWUuIElmIGEgbmFtZSBpcyBub3QgcHJvdmlkZWQsIGFuIG9wZXJhdGlvbiBpcyBvbmx5IHJldHVybmVkIGlmIG9ubHkgb25lIGlzXG4gKiBwcm92aWRlZCBpbiB0aGUgZG9jdW1lbnQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wZXJhdGlvbkFTVChkb2N1bWVudEFTVCwgb3BlcmF0aW9uTmFtZSkge1xuICB2YXIgb3BlcmF0aW9uID0gbnVsbDtcblxuICBmb3IgKHZhciBfaTIgPSAwLCBfZG9jdW1lbnRBU1QkZGVmaW5pdGkyID0gZG9jdW1lbnRBU1QuZGVmaW5pdGlvbnM7IF9pMiA8IF9kb2N1bWVudEFTVCRkZWZpbml0aTIubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBkZWZpbml0aW9uID0gX2RvY3VtZW50QVNUJGRlZmluaXRpMltfaTJdO1xuXG4gICAgaWYgKGRlZmluaXRpb24ua2luZCA9PT0gS2luZC5PUEVSQVRJT05fREVGSU5JVElPTikge1xuICAgICAgdmFyIF9kZWZpbml0aW9uJG5hbWU7XG5cbiAgICAgIGlmIChvcGVyYXRpb25OYW1lID09IG51bGwpIHtcbiAgICAgICAgLy8gSWYgbm8gb3BlcmF0aW9uIG5hbWUgd2FzIHByb3ZpZGVkLCBvbmx5IHJldHVybiBhbiBPcGVyYXRpb24gaWYgdGhlcmVcbiAgICAgICAgLy8gaXMgb25lIGRlZmluZWQgaW4gdGhlIGRvY3VtZW50LiBVcG9uIGVuY291bnRlcmluZyB0aGUgc2Vjb25kLCByZXR1cm5cbiAgICAgICAgLy8gbnVsbC5cbiAgICAgICAgaWYgKG9wZXJhdGlvbikge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgb3BlcmF0aW9uID0gZGVmaW5pdGlvbjtcbiAgICAgIH0gZWxzZSBpZiAoKChfZGVmaW5pdGlvbiRuYW1lID0gZGVmaW5pdGlvbi5uYW1lKSA9PT0gbnVsbCB8fCBfZGVmaW5pdGlvbiRuYW1lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGVmaW5pdGlvbiRuYW1lLnZhbHVlKSA9PT0gb3BlcmF0aW9uTmFtZSkge1xuICAgICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3BlcmF0aW9uO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/getOperationAST.mjs\n");
1221
1222/***/ }),
1223
1224/***/ "../../../node_modules/graphql/utilities/getOperationRootType.mjs":
1225/*!***************************************************************************************************!*\
1226 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/getOperationRootType.mjs ***!
1227 \***************************************************************************************************/
1228/*! exports provided: getOperationRootType */
1229/***/ (function(module, __webpack_exports__, __webpack_require__) {
1230
1231"use strict";
1232eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOperationRootType\", function() { return getOperationRootType; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Extracts the root type of the operation from the schema.\n */\nfunction getOperationRootType(schema, operation) {\n if (operation.operation === 'query') {\n var queryType = schema.getQueryType();\n\n if (!queryType) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"]('Schema does not define the required query root type.', operation);\n }\n\n return queryType;\n }\n\n if (operation.operation === 'mutation') {\n var mutationType = schema.getMutationType();\n\n if (!mutationType) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"]('Schema is not configured for mutations.', operation);\n }\n\n return mutationType;\n }\n\n if (operation.operation === 'subscription') {\n var subscriptionType = schema.getSubscriptionType();\n\n if (!subscriptionType) {\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"]('Schema is not configured for subscriptions.', operation);\n }\n\n return subscriptionType;\n }\n\n throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"]('Can only have query, mutation and subscription operations.', operation);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2dldE9wZXJhdGlvblJvb3RUeXBlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9nZXRPcGVyYXRpb25Sb290VHlwZS5tanM/MWViYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qc1wiO1xuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSByb290IHR5cGUgb2YgdGhlIG9wZXJhdGlvbiBmcm9tIHRoZSBzY2hlbWEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcGVyYXRpb25Sb290VHlwZShzY2hlbWEsIG9wZXJhdGlvbikge1xuICBpZiAob3BlcmF0aW9uLm9wZXJhdGlvbiA9PT0gJ3F1ZXJ5Jykge1xuICAgIHZhciBxdWVyeVR5cGUgPSBzY2hlbWEuZ2V0UXVlcnlUeXBlKCk7XG5cbiAgICBpZiAoIXF1ZXJ5VHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcignU2NoZW1hIGRvZXMgbm90IGRlZmluZSB0aGUgcmVxdWlyZWQgcXVlcnkgcm9vdCB0eXBlLicsIG9wZXJhdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5VHlwZTtcbiAgfVxuXG4gIGlmIChvcGVyYXRpb24ub3BlcmF0aW9uID09PSAnbXV0YXRpb24nKSB7XG4gICAgdmFyIG11dGF0aW9uVHlwZSA9IHNjaGVtYS5nZXRNdXRhdGlvblR5cGUoKTtcblxuICAgIGlmICghbXV0YXRpb25UeXBlKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKCdTY2hlbWEgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIG11dGF0aW9ucy4nLCBvcGVyYXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBtdXRhdGlvblR5cGU7XG4gIH1cblxuICBpZiAob3BlcmF0aW9uLm9wZXJhdGlvbiA9PT0gJ3N1YnNjcmlwdGlvbicpIHtcbiAgICB2YXIgc3Vic2NyaXB0aW9uVHlwZSA9IHNjaGVtYS5nZXRTdWJzY3JpcHRpb25UeXBlKCk7XG5cbiAgICBpZiAoIXN1YnNjcmlwdGlvblR5cGUpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoJ1NjaGVtYSBpcyBub3QgY29uZmlndXJlZCBmb3Igc3Vic2NyaXB0aW9ucy4nLCBvcGVyYXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJzY3JpcHRpb25UeXBlO1xuICB9XG5cbiAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcignQ2FuIG9ubHkgaGF2ZSBxdWVyeSwgbXV0YXRpb24gYW5kIHN1YnNjcmlwdGlvbiBvcGVyYXRpb25zLicsIG9wZXJhdGlvbik7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/getOperationRootType.mjs\n");
1233
1234/***/ }),
1235
1236/***/ "../../../node_modules/graphql/utilities/index.mjs":
1237/*!************************************************************************************!*\
1238 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/index.mjs ***!
1239 \************************************************************************************/
1240/*! exports provided: getIntrospectionQuery, getOperationAST, getOperationRootType, introspectionFromSchema, buildClientSchema, buildASTSchema, buildSchema, extendSchema, getDescription, lexicographicSortSchema, printSchema, printType, printIntrospectionSchema, typeFromAST, valueFromAST, valueFromASTUntyped, astFromValue, TypeInfo, visitWithTypeInfo, coerceInputValue, concatAST, separateOperations, stripIgnoredCharacters, isEqualType, isTypeSubTypeOf, doTypesOverlap, assertValidName, isValidNameError, BreakingChangeType, DangerousChangeType, findBreakingChanges, findDangerousChanges, findDeprecatedUsages */
1241/***/ (function(module, __webpack_exports__, __webpack_require__) {
1242
1243"use strict";
1244eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getIntrospectionQuery_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getIntrospectionQuery.mjs */ \"../../../node_modules/graphql/utilities/getIntrospectionQuery.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getIntrospectionQuery\", function() { return _getIntrospectionQuery_mjs__WEBPACK_IMPORTED_MODULE_0__[\"getIntrospectionQuery\"]; });\n\n/* harmony import */ var _getOperationAST_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getOperationAST.mjs */ \"../../../node_modules/graphql/utilities/getOperationAST.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOperationAST\", function() { return _getOperationAST_mjs__WEBPACK_IMPORTED_MODULE_1__[\"getOperationAST\"]; });\n\n/* harmony import */ var _getOperationRootType_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getOperationRootType.mjs */ \"../../../node_modules/graphql/utilities/getOperationRootType.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOperationRootType\", function() { return _getOperationRootType_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getOperationRootType\"]; });\n\n/* harmony import */ var _introspectionFromSchema_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./introspectionFromSchema.mjs */ \"../../../node_modules/graphql/utilities/introspectionFromSchema.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"introspectionFromSchema\", function() { return _introspectionFromSchema_mjs__WEBPACK_IMPORTED_MODULE_3__[\"introspectionFromSchema\"]; });\n\n/* harmony import */ var _buildClientSchema_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./buildClientSchema.mjs */ \"../../../node_modules/graphql/utilities/buildClientSchema.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"buildClientSchema\", function() { return _buildClientSchema_mjs__WEBPACK_IMPORTED_MODULE_4__[\"buildClientSchema\"]; });\n\n/* harmony import */ var _buildASTSchema_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./buildASTSchema.mjs */ \"../../../node_modules/graphql/utilities/buildASTSchema.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"buildASTSchema\", function() { return _buildASTSchema_mjs__WEBPACK_IMPORTED_MODULE_5__[\"buildASTSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"buildSchema\", function() { return _buildASTSchema_mjs__WEBPACK_IMPORTED_MODULE_5__[\"buildSchema\"]; });\n\n/* harmony import */ var _extendSchema_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./extendSchema.mjs */ \"../../../node_modules/graphql/utilities/extendSchema.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"extendSchema\", function() { return _extendSchema_mjs__WEBPACK_IMPORTED_MODULE_6__[\"extendSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDescription\", function() { return _extendSchema_mjs__WEBPACK_IMPORTED_MODULE_6__[\"getDescription\"]; });\n\n/* harmony import */ var _lexicographicSortSchema_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./lexicographicSortSchema.mjs */ \"../../../node_modules/graphql/utilities/lexicographicSortSchema.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lexicographicSortSchema\", function() { return _lexicographicSortSchema_mjs__WEBPACK_IMPORTED_MODULE_7__[\"lexicographicSortSchema\"]; });\n\n/* harmony import */ var _printSchema_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./printSchema.mjs */ \"../../../node_modules/graphql/utilities/printSchema.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printSchema\", function() { return _printSchema_mjs__WEBPACK_IMPORTED_MODULE_8__[\"printSchema\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printType\", function() { return _printSchema_mjs__WEBPACK_IMPORTED_MODULE_8__[\"printType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"printIntrospectionSchema\", function() { return _printSchema_mjs__WEBPACK_IMPORTED_MODULE_8__[\"printIntrospectionSchema\"]; });\n\n/* harmony import */ var _typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"typeFromAST\", function() { return _typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_9__[\"typeFromAST\"]; });\n\n/* harmony import */ var _valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./valueFromAST.mjs */ \"../../../node_modules/graphql/utilities/valueFromAST.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"valueFromAST\", function() { return _valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_10__[\"valueFromAST\"]; });\n\n/* harmony import */ var _valueFromASTUntyped_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./valueFromASTUntyped.mjs */ \"../../../node_modules/graphql/utilities/valueFromASTUntyped.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"valueFromASTUntyped\", function() { return _valueFromASTUntyped_mjs__WEBPACK_IMPORTED_MODULE_11__[\"valueFromASTUntyped\"]; });\n\n/* harmony import */ var _astFromValue_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./astFromValue.mjs */ \"../../../node_modules/graphql/utilities/astFromValue.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"astFromValue\", function() { return _astFromValue_mjs__WEBPACK_IMPORTED_MODULE_12__[\"astFromValue\"]; });\n\n/* harmony import */ var _TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./TypeInfo.mjs */ \"../../../node_modules/graphql/utilities/TypeInfo.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TypeInfo\", function() { return _TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_13__[\"TypeInfo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"visitWithTypeInfo\", function() { return _TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_13__[\"visitWithTypeInfo\"]; });\n\n/* harmony import */ var _coerceInputValue_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./coerceInputValue.mjs */ \"../../../node_modules/graphql/utilities/coerceInputValue.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"coerceInputValue\", function() { return _coerceInputValue_mjs__WEBPACK_IMPORTED_MODULE_14__[\"coerceInputValue\"]; });\n\n/* harmony import */ var _concatAST_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./concatAST.mjs */ \"../../../node_modules/graphql/utilities/concatAST.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"concatAST\", function() { return _concatAST_mjs__WEBPACK_IMPORTED_MODULE_15__[\"concatAST\"]; });\n\n/* harmony import */ var _separateOperations_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./separateOperations.mjs */ \"../../../node_modules/graphql/utilities/separateOperations.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"separateOperations\", function() { return _separateOperations_mjs__WEBPACK_IMPORTED_MODULE_16__[\"separateOperations\"]; });\n\n/* harmony import */ var _stripIgnoredCharacters_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./stripIgnoredCharacters.mjs */ \"../../../node_modules/graphql/utilities/stripIgnoredCharacters.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stripIgnoredCharacters\", function() { return _stripIgnoredCharacters_mjs__WEBPACK_IMPORTED_MODULE_17__[\"stripIgnoredCharacters\"]; });\n\n/* harmony import */ var _typeComparators_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./typeComparators.mjs */ \"../../../node_modules/graphql/utilities/typeComparators.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEqualType\", function() { return _typeComparators_mjs__WEBPACK_IMPORTED_MODULE_18__[\"isEqualType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isTypeSubTypeOf\", function() { return _typeComparators_mjs__WEBPACK_IMPORTED_MODULE_18__[\"isTypeSubTypeOf\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"doTypesOverlap\", function() { return _typeComparators_mjs__WEBPACK_IMPORTED_MODULE_18__[\"doTypesOverlap\"]; });\n\n/* harmony import */ var _assertValidName_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./assertValidName.mjs */ \"../../../node_modules/graphql/utilities/assertValidName.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assertValidName\", function() { return _assertValidName_mjs__WEBPACK_IMPORTED_MODULE_19__[\"assertValidName\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isValidNameError\", function() { return _assertValidName_mjs__WEBPACK_IMPORTED_MODULE_19__[\"isValidNameError\"]; });\n\n/* harmony import */ var _findBreakingChanges_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./findBreakingChanges.mjs */ \"../../../node_modules/graphql/utilities/findBreakingChanges.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BreakingChangeType\", function() { return _findBreakingChanges_mjs__WEBPACK_IMPORTED_MODULE_20__[\"BreakingChangeType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DangerousChangeType\", function() { return _findBreakingChanges_mjs__WEBPACK_IMPORTED_MODULE_20__[\"DangerousChangeType\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findBreakingChanges\", function() { return _findBreakingChanges_mjs__WEBPACK_IMPORTED_MODULE_20__[\"findBreakingChanges\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findDangerousChanges\", function() { return _findBreakingChanges_mjs__WEBPACK_IMPORTED_MODULE_20__[\"findDangerousChanges\"]; });\n\n/* harmony import */ var _findDeprecatedUsages_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./findDeprecatedUsages.mjs */ \"../../../node_modules/graphql/utilities/findDeprecatedUsages.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findDeprecatedUsages\", function() { return _findDeprecatedUsages_mjs__WEBPACK_IMPORTED_MODULE_21__[\"findDeprecatedUsages\"]; });\n\n// Produce the GraphQL query recommended for a full schema introspection.\n// Accepts optional IntrospectionOptions.\n\n// Gets the target Operation from a Document.\n // Gets the Type for the target Operation AST.\n\n // Convert a GraphQLSchema to an IntrospectionQuery.\n\n // Build a GraphQLSchema from an introspection result.\n\n // Build a GraphQLSchema from GraphQL Schema language.\n\n\n// Extends an existing GraphQLSchema from a parsed GraphQL Schema language AST.\n // Sort a GraphQLSchema.\n\n // Print a GraphQLSchema to GraphQL Schema language.\n\n // Create a GraphQLType from a GraphQL language AST.\n\n // Create a JavaScript value from a GraphQL language AST with a type.\n\n // Create a JavaScript value from a GraphQL language AST without a type.\n\n // Create a GraphQL language AST from a JavaScript value.\n\n // A helper to use within recursive-descent visitors which need to be aware of\n// the GraphQL type system.\n\n // Coerces a JavaScript value to a GraphQL type, or produces errors.\n\n // Concatenates multiple AST together.\n\n // Separates an AST into an AST per Operation.\n\n // Strips characters that are not significant to the validity or execution\n// of a GraphQL document.\n\n // Comparators for types\n\n // Asserts that a string is a valid GraphQL name\n\n // Compares two GraphQLSchemas and detects breaking changes.\n\n\n// @deprecated: Report all deprecated usage within a GraphQL document.\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2luZGV4Lm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9pbmRleC5tanM/MTE4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQcm9kdWNlIHRoZSBHcmFwaFFMIHF1ZXJ5IHJlY29tbWVuZGVkIGZvciBhIGZ1bGwgc2NoZW1hIGludHJvc3BlY3Rpb24uXG4vLyBBY2NlcHRzIG9wdGlvbmFsIEludHJvc3BlY3Rpb25PcHRpb25zLlxuZXhwb3J0IHsgZ2V0SW50cm9zcGVjdGlvblF1ZXJ5IH0gZnJvbSBcIi4vZ2V0SW50cm9zcGVjdGlvblF1ZXJ5Lm1qc1wiO1xuLy8gR2V0cyB0aGUgdGFyZ2V0IE9wZXJhdGlvbiBmcm9tIGEgRG9jdW1lbnQuXG5leHBvcnQgeyBnZXRPcGVyYXRpb25BU1QgfSBmcm9tIFwiLi9nZXRPcGVyYXRpb25BU1QubWpzXCI7IC8vIEdldHMgdGhlIFR5cGUgZm9yIHRoZSB0YXJnZXQgT3BlcmF0aW9uIEFTVC5cblxuZXhwb3J0IHsgZ2V0T3BlcmF0aW9uUm9vdFR5cGUgfSBmcm9tIFwiLi9nZXRPcGVyYXRpb25Sb290VHlwZS5tanNcIjsgLy8gQ29udmVydCBhIEdyYXBoUUxTY2hlbWEgdG8gYW4gSW50cm9zcGVjdGlvblF1ZXJ5LlxuXG5leHBvcnQgeyBpbnRyb3NwZWN0aW9uRnJvbVNjaGVtYSB9IGZyb20gXCIuL2ludHJvc3BlY3Rpb25Gcm9tU2NoZW1hLm1qc1wiOyAvLyBCdWlsZCBhIEdyYXBoUUxTY2hlbWEgZnJvbSBhbiBpbnRyb3NwZWN0aW9uIHJlc3VsdC5cblxuZXhwb3J0IHsgYnVpbGRDbGllbnRTY2hlbWEgfSBmcm9tIFwiLi9idWlsZENsaWVudFNjaGVtYS5tanNcIjsgLy8gQnVpbGQgYSBHcmFwaFFMU2NoZW1hIGZyb20gR3JhcGhRTCBTY2hlbWEgbGFuZ3VhZ2UuXG5cbmV4cG9ydCB7IGJ1aWxkQVNUU2NoZW1hLCBidWlsZFNjaGVtYSB9IGZyb20gXCIuL2J1aWxkQVNUU2NoZW1hLm1qc1wiO1xuLy8gRXh0ZW5kcyBhbiBleGlzdGluZyBHcmFwaFFMU2NoZW1hIGZyb20gYSBwYXJzZWQgR3JhcGhRTCBTY2hlbWEgbGFuZ3VhZ2UgQVNULlxuZXhwb3J0IHsgZXh0ZW5kU2NoZW1hIC8vIEBkZXByZWNhdGVkOiBHZXQgdGhlIGRlc2NyaXB0aW9uIGZyb20gYSBzY2hlbWEgQVNUIG5vZGUgYW5kIHN1cHBvcnRzIGxlZ2FjeVxuLy8gc3ludGF4IGZvciBzcGVjaWZ5aW5nIGRlc2NyaXB0aW9ucyAtIHdpbGwgYmUgcmVtb3ZlZCBpbiB2MTYuXG4sIGdldERlc2NyaXB0aW9uIH0gZnJvbSBcIi4vZXh0ZW5kU2NoZW1hLm1qc1wiOyAvLyBTb3J0IGEgR3JhcGhRTFNjaGVtYS5cblxuZXhwb3J0IHsgbGV4aWNvZ3JhcGhpY1NvcnRTY2hlbWEgfSBmcm9tIFwiLi9sZXhpY29ncmFwaGljU29ydFNjaGVtYS5tanNcIjsgLy8gUHJpbnQgYSBHcmFwaFFMU2NoZW1hIHRvIEdyYXBoUUwgU2NoZW1hIGxhbmd1YWdlLlxuXG5leHBvcnQgeyBwcmludFNjaGVtYSwgcHJpbnRUeXBlLCBwcmludEludHJvc3BlY3Rpb25TY2hlbWEgfSBmcm9tIFwiLi9wcmludFNjaGVtYS5tanNcIjsgLy8gQ3JlYXRlIGEgR3JhcGhRTFR5cGUgZnJvbSBhIEdyYXBoUUwgbGFuZ3VhZ2UgQVNULlxuXG5leHBvcnQgeyB0eXBlRnJvbUFTVCB9IGZyb20gXCIuL3R5cGVGcm9tQVNULm1qc1wiOyAvLyBDcmVhdGUgYSBKYXZhU2NyaXB0IHZhbHVlIGZyb20gYSBHcmFwaFFMIGxhbmd1YWdlIEFTVCB3aXRoIGEgdHlwZS5cblxuZXhwb3J0IHsgdmFsdWVGcm9tQVNUIH0gZnJvbSBcIi4vdmFsdWVGcm9tQVNULm1qc1wiOyAvLyBDcmVhdGUgYSBKYXZhU2NyaXB0IHZhbHVlIGZyb20gYSBHcmFwaFFMIGxhbmd1YWdlIEFTVCB3aXRob3V0IGEgdHlwZS5cblxuZXhwb3J0IHsgdmFsdWVGcm9tQVNUVW50eXBlZCB9IGZyb20gXCIuL3ZhbHVlRnJvbUFTVFVudHlwZWQubWpzXCI7IC8vIENyZWF0ZSBhIEdyYXBoUUwgbGFuZ3VhZ2UgQVNUIGZyb20gYSBKYXZhU2NyaXB0IHZhbHVlLlxuXG5leHBvcnQgeyBhc3RGcm9tVmFsdWUgfSBmcm9tIFwiLi9hc3RGcm9tVmFsdWUubWpzXCI7IC8vIEEgaGVscGVyIHRvIHVzZSB3aXRoaW4gcmVjdXJzaXZlLWRlc2NlbnQgdmlzaXRvcnMgd2hpY2ggbmVlZCB0byBiZSBhd2FyZSBvZlxuLy8gdGhlIEdyYXBoUUwgdHlwZSBzeXN0ZW0uXG5cbmV4cG9ydCB7IFR5cGVJbmZvLCB2aXNpdFdpdGhUeXBlSW5mbyB9IGZyb20gXCIuL1R5cGVJbmZvLm1qc1wiOyAvLyBDb2VyY2VzIGEgSmF2YVNjcmlwdCB2YWx1ZSB0byBhIEdyYXBoUUwgdHlwZSwgb3IgcHJvZHVjZXMgZXJyb3JzLlxuXG5leHBvcnQgeyBjb2VyY2VJbnB1dFZhbHVlIH0gZnJvbSBcIi4vY29lcmNlSW5wdXRWYWx1ZS5tanNcIjsgLy8gQ29uY2F0ZW5hdGVzIG11bHRpcGxlIEFTVCB0b2dldGhlci5cblxuZXhwb3J0IHsgY29uY2F0QVNUIH0gZnJvbSBcIi4vY29uY2F0QVNULm1qc1wiOyAvLyBTZXBhcmF0ZXMgYW4gQVNUIGludG8gYW4gQVNUIHBlciBPcGVyYXRpb24uXG5cbmV4cG9ydCB7IHNlcGFyYXRlT3BlcmF0aW9ucyB9IGZyb20gXCIuL3NlcGFyYXRlT3BlcmF0aW9ucy5tanNcIjsgLy8gU3RyaXBzIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IHNpZ25pZmljYW50IHRvIHRoZSB2YWxpZGl0eSBvciBleGVjdXRpb25cbi8vIG9mIGEgR3JhcGhRTCBkb2N1bWVudC5cblxuZXhwb3J0IHsgc3RyaXBJZ25vcmVkQ2hhcmFjdGVycyB9IGZyb20gXCIuL3N0cmlwSWdub3JlZENoYXJhY3RlcnMubWpzXCI7IC8vIENvbXBhcmF0b3JzIGZvciB0eXBlc1xuXG5leHBvcnQgeyBpc0VxdWFsVHlwZSwgaXNUeXBlU3ViVHlwZU9mLCBkb1R5cGVzT3ZlcmxhcCB9IGZyb20gXCIuL3R5cGVDb21wYXJhdG9ycy5tanNcIjsgLy8gQXNzZXJ0cyB0aGF0IGEgc3RyaW5nIGlzIGEgdmFsaWQgR3JhcGhRTCBuYW1lXG5cbmV4cG9ydCB7IGFzc2VydFZhbGlkTmFtZSwgaXNWYWxpZE5hbWVFcnJvciB9IGZyb20gXCIuL2Fzc2VydFZhbGlkTmFtZS5tanNcIjsgLy8gQ29tcGFyZXMgdHdvIEdyYXBoUUxTY2hlbWFzIGFuZCBkZXRlY3RzIGJyZWFraW5nIGNoYW5nZXMuXG5cbmV4cG9ydCB7IEJyZWFraW5nQ2hhbmdlVHlwZSwgRGFuZ2Vyb3VzQ2hhbmdlVHlwZSwgZmluZEJyZWFraW5nQ2hhbmdlcywgZmluZERhbmdlcm91c0NoYW5nZXMgfSBmcm9tIFwiLi9maW5kQnJlYWtpbmdDaGFuZ2VzLm1qc1wiO1xuLy8gQGRlcHJlY2F0ZWQ6IFJlcG9ydCBhbGwgZGVwcmVjYXRlZCB1c2FnZSB3aXRoaW4gYSBHcmFwaFFMIGRvY3VtZW50LlxuZXhwb3J0IHsgZmluZERlcHJlY2F0ZWRVc2FnZXMgfSBmcm9tIFwiLi9maW5kRGVwcmVjYXRlZFVzYWdlcy5tanNcIjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/index.mjs\n");
1245
1246/***/ }),
1247
1248/***/ "../../../node_modules/graphql/utilities/introspectionFromSchema.mjs":
1249/*!******************************************************************************************************!*\
1250 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/introspectionFromSchema.mjs ***!
1251 \******************************************************************************************************/
1252/*! exports provided: introspectionFromSchema */
1253/***/ (function(module, __webpack_exports__, __webpack_require__) {
1254
1255"use strict";
1256eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"introspectionFromSchema\", function() { return introspectionFromSchema; });\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _language_parser_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/parser.mjs */ \"../../../node_modules/graphql/language/parser.mjs\");\n/* harmony import */ var _execution_execute_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../execution/execute.mjs */ \"../../../node_modules/graphql/execution/execute.mjs\");\n/* harmony import */ var _getIntrospectionQuery_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getIntrospectionQuery.mjs */ \"../../../node_modules/graphql/utilities/getIntrospectionQuery.mjs\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n/**\n * Build an IntrospectionQuery from a GraphQLSchema\n *\n * IntrospectionQuery is useful for utilities that care about type and field\n * relationships, but do not need to traverse through those relationships.\n *\n * This is the inverse of buildClientSchema. The primary use case is outside\n * of the server context, for instance when doing schema comparisons.\n */\n\nfunction introspectionFromSchema(schema, options) {\n var optionsWithDefaults = _objectSpread({\n directiveIsRepeatable: true,\n schemaDescription: true\n }, options);\n\n var document = Object(_language_parser_mjs__WEBPACK_IMPORTED_MODULE_1__[\"parse\"])(Object(_getIntrospectionQuery_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getIntrospectionQuery\"])(optionsWithDefaults));\n var result = Object(_execution_execute_mjs__WEBPACK_IMPORTED_MODULE_2__[\"executeSync\"])({\n schema: schema,\n document: document\n });\n !result.errors && result.data || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0);\n return result.data;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2ludHJvc3BlY3Rpb25Gcm9tU2NoZW1hLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9pbnRyb3NwZWN0aW9uRnJvbVNjaGVtYS5tanM/MzVhZiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IGludmFyaWFudCBmcm9tIFwiLi4vanN1dGlscy9pbnZhcmlhbnQubWpzXCI7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCIuLi9sYW5ndWFnZS9wYXJzZXIubWpzXCI7XG5pbXBvcnQgeyBleGVjdXRlU3luYyB9IGZyb20gXCIuLi9leGVjdXRpb24vZXhlY3V0ZS5tanNcIjtcbmltcG9ydCB7IGdldEludHJvc3BlY3Rpb25RdWVyeSB9IGZyb20gXCIuL2dldEludHJvc3BlY3Rpb25RdWVyeS5tanNcIjtcbi8qKlxuICogQnVpbGQgYW4gSW50cm9zcGVjdGlvblF1ZXJ5IGZyb20gYSBHcmFwaFFMU2NoZW1hXG4gKlxuICogSW50cm9zcGVjdGlvblF1ZXJ5IGlzIHVzZWZ1bCBmb3IgdXRpbGl0aWVzIHRoYXQgY2FyZSBhYm91dCB0eXBlIGFuZCBmaWVsZFxuICogcmVsYXRpb25zaGlwcywgYnV0IGRvIG5vdCBuZWVkIHRvIHRyYXZlcnNlIHRocm91Z2ggdGhvc2UgcmVsYXRpb25zaGlwcy5cbiAqXG4gKiBUaGlzIGlzIHRoZSBpbnZlcnNlIG9mIGJ1aWxkQ2xpZW50U2NoZW1hLiBUaGUgcHJpbWFyeSB1c2UgY2FzZSBpcyBvdXRzaWRlXG4gKiBvZiB0aGUgc2VydmVyIGNvbnRleHQsIGZvciBpbnN0YW5jZSB3aGVuIGRvaW5nIHNjaGVtYSBjb21wYXJpc29ucy5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaW50cm9zcGVjdGlvbkZyb21TY2hlbWEoc2NoZW1hLCBvcHRpb25zKSB7XG4gIHZhciBvcHRpb25zV2l0aERlZmF1bHRzID0gX29iamVjdFNwcmVhZCh7XG4gICAgZGlyZWN0aXZlSXNSZXBlYXRhYmxlOiB0cnVlLFxuICAgIHNjaGVtYURlc2NyaXB0aW9uOiB0cnVlXG4gIH0sIG9wdGlvbnMpO1xuXG4gIHZhciBkb2N1bWVudCA9IHBhcnNlKGdldEludHJvc3BlY3Rpb25RdWVyeShvcHRpb25zV2l0aERlZmF1bHRzKSk7XG4gIHZhciByZXN1bHQgPSBleGVjdXRlU3luYyh7XG4gICAgc2NoZW1hOiBzY2hlbWEsXG4gICAgZG9jdW1lbnQ6IGRvY3VtZW50XG4gIH0pO1xuICAhcmVzdWx0LmVycm9ycyAmJiByZXN1bHQuZGF0YSB8fCBpbnZhcmlhbnQoMCk7XG4gIHJldHVybiByZXN1bHQuZGF0YTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/introspectionFromSchema.mjs\n");
1257
1258/***/ }),
1259
1260/***/ "../../../node_modules/graphql/utilities/lexicographicSortSchema.mjs":
1261/*!******************************************************************************************************!*\
1262 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/lexicographicSortSchema.mjs ***!
1263 \******************************************************************************************************/
1264/*! exports provided: lexicographicSortSchema */
1265/***/ (function(module, __webpack_exports__, __webpack_require__) {
1266
1267"use strict";
1268eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lexicographicSortSchema\", function() { return lexicographicSortSchema; });\n/* harmony import */ var _polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/objectValues.mjs */ \"../../../node_modules/graphql/polyfills/objectValues.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/keyValMap.mjs */ \"../../../node_modules/graphql/jsutils/keyValMap.mjs\");\n/* harmony import */ var _type_schema_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../type/schema.mjs */ \"../../../node_modules/graphql/type/schema.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n/**\n * Sort GraphQLSchema.\n *\n * This function returns a sorted copy of the given GraphQLSchema.\n */\n\nfunction lexicographicSortSchema(schema) {\n var schemaConfig = schema.toConfig();\n var typeMap = Object(_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(sortByName(schemaConfig.types), function (type) {\n return type.name;\n }, sortNamedType);\n return new _type_schema_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLSchema\"](_objectSpread(_objectSpread({}, schemaConfig), {}, {\n types: Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(typeMap),\n directives: sortByName(schemaConfig.directives).map(sortDirective),\n query: replaceMaybeType(schemaConfig.query),\n mutation: replaceMaybeType(schemaConfig.mutation),\n subscription: replaceMaybeType(schemaConfig.subscription)\n }));\n\n function replaceType(type) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isListType\"])(type)) {\n // $FlowFixMe[incompatible-return]\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLList\"](replaceType(type.ofType));\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNonNullType\"])(type)) {\n // $FlowFixMe[incompatible-return]\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLNonNull\"](replaceType(type.ofType));\n }\n\n return replaceNamedType(type);\n }\n\n function replaceNamedType(type) {\n return typeMap[type.name];\n }\n\n function replaceMaybeType(maybeType) {\n return maybeType && replaceNamedType(maybeType);\n }\n\n function sortDirective(directive) {\n var config = directive.toConfig();\n return new _type_directives_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLDirective\"](_objectSpread(_objectSpread({}, config), {}, {\n locations: sortBy(config.locations, function (x) {\n return x;\n }),\n args: sortArgs(config.args)\n }));\n }\n\n function sortArgs(args) {\n return sortObjMap(args, function (arg) {\n return _objectSpread(_objectSpread({}, arg), {}, {\n type: replaceType(arg.type)\n });\n });\n }\n\n function sortFields(fieldsMap) {\n return sortObjMap(fieldsMap, function (field) {\n return _objectSpread(_objectSpread({}, field), {}, {\n type: replaceType(field.type),\n args: sortArgs(field.args)\n });\n });\n }\n\n function sortInputFields(fieldsMap) {\n return sortObjMap(fieldsMap, function (field) {\n return _objectSpread(_objectSpread({}, field), {}, {\n type: replaceType(field.type)\n });\n });\n }\n\n function sortTypes(arr) {\n return sortByName(arr).map(replaceNamedType);\n }\n\n function sortNamedType(type) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isScalarType\"])(type) || Object(_type_introspection_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isIntrospectionType\"])(type)) {\n return type;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isObjectType\"])(type)) {\n var config = type.toConfig();\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLObjectType\"](_objectSpread(_objectSpread({}, config), {}, {\n interfaces: function interfaces() {\n return sortTypes(config.interfaces);\n },\n fields: function fields() {\n return sortFields(config.fields);\n }\n }));\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInterfaceType\"])(type)) {\n var _config = type.toConfig();\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLInterfaceType\"](_objectSpread(_objectSpread({}, _config), {}, {\n interfaces: function interfaces() {\n return sortTypes(_config.interfaces);\n },\n fields: function fields() {\n return sortFields(_config.fields);\n }\n }));\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isUnionType\"])(type)) {\n var _config2 = type.toConfig();\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLUnionType\"](_objectSpread(_objectSpread({}, _config2), {}, {\n types: function types() {\n return sortTypes(_config2.types);\n }\n }));\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isEnumType\"])(type)) {\n var _config3 = type.toConfig();\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLEnumType\"](_objectSpread(_objectSpread({}, _config3), {}, {\n values: sortObjMap(_config3.values)\n }));\n } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInputObjectType\"])(type)) {\n var _config4 = type.toConfig();\n\n return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"GraphQLInputObjectType\"](_objectSpread(_objectSpread({}, _config4), {}, {\n fields: function fields() {\n return sortInputFields(_config4.fields);\n }\n }));\n } // istanbul ignore next (Not reachable. All possible types have been considered)\n\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(0, 'Unexpected type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(type));\n }\n}\n\nfunction sortObjMap(map, sortValueFn) {\n var sortedMap = Object.create(null);\n var sortedKeys = sortBy(Object.keys(map), function (x) {\n return x;\n });\n\n for (var _i2 = 0; _i2 < sortedKeys.length; _i2++) {\n var key = sortedKeys[_i2];\n var value = map[key];\n sortedMap[key] = sortValueFn ? sortValueFn(value) : value;\n }\n\n return sortedMap;\n}\n\nfunction sortByName(array) {\n return sortBy(array, function (obj) {\n return obj.name;\n });\n}\n\nfunction sortBy(array, mapToKey) {\n return array.slice().sort(function (obj1, obj2) {\n var key1 = mapToKey(obj1);\n var key2 = mapToKey(obj2);\n return key1.localeCompare(key2);\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2xleGljb2dyYXBoaWNTb3J0U2NoZW1hLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9sZXhpY29ncmFwaGljU29ydFNjaGVtYS5tanM/ODc2YSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IG9iamVjdFZhbHVlcyBmcm9tIFwiLi4vcG9seWZpbGxzL29iamVjdFZhbHVlcy5tanNcIjtcbmltcG9ydCBpbnNwZWN0IGZyb20gXCIuLi9qc3V0aWxzL2luc3BlY3QubWpzXCI7XG5pbXBvcnQgaW52YXJpYW50IGZyb20gXCIuLi9qc3V0aWxzL2ludmFyaWFudC5tanNcIjtcbmltcG9ydCBrZXlWYWxNYXAgZnJvbSBcIi4uL2pzdXRpbHMva2V5VmFsTWFwLm1qc1wiO1xuaW1wb3J0IHsgR3JhcGhRTFNjaGVtYSB9IGZyb20gXCIuLi90eXBlL3NjaGVtYS5tanNcIjtcbmltcG9ydCB7IEdyYXBoUUxEaXJlY3RpdmUgfSBmcm9tIFwiLi4vdHlwZS9kaXJlY3RpdmVzLm1qc1wiO1xuaW1wb3J0IHsgaXNJbnRyb3NwZWN0aW9uVHlwZSB9IGZyb20gXCIuLi90eXBlL2ludHJvc3BlY3Rpb24ubWpzXCI7XG5pbXBvcnQgeyBHcmFwaFFMTGlzdCwgR3JhcGhRTE5vbk51bGwsIEdyYXBoUUxPYmplY3RUeXBlLCBHcmFwaFFMSW50ZXJmYWNlVHlwZSwgR3JhcGhRTFVuaW9uVHlwZSwgR3JhcGhRTEVudW1UeXBlLCBHcmFwaFFMSW5wdXRPYmplY3RUeXBlLCBpc0xpc3RUeXBlLCBpc05vbk51bGxUeXBlLCBpc1NjYWxhclR5cGUsIGlzT2JqZWN0VHlwZSwgaXNJbnRlcmZhY2VUeXBlLCBpc1VuaW9uVHlwZSwgaXNFbnVtVHlwZSwgaXNJbnB1dE9iamVjdFR5cGUgfSBmcm9tIFwiLi4vdHlwZS9kZWZpbml0aW9uLm1qc1wiO1xuLyoqXG4gKiBTb3J0IEdyYXBoUUxTY2hlbWEuXG4gKlxuICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgc29ydGVkIGNvcHkgb2YgdGhlIGdpdmVuIEdyYXBoUUxTY2hlbWEuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGxleGljb2dyYXBoaWNTb3J0U2NoZW1hKHNjaGVtYSkge1xuICB2YXIgc2NoZW1hQ29uZmlnID0gc2NoZW1hLnRvQ29uZmlnKCk7XG4gIHZhciB0eXBlTWFwID0ga2V5VmFsTWFwKHNvcnRCeU5hbWUoc2NoZW1hQ29uZmlnLnR5cGVzKSwgZnVuY3Rpb24gKHR5cGUpIHtcbiAgICByZXR1cm4gdHlwZS5uYW1lO1xuICB9LCBzb3J0TmFtZWRUeXBlKTtcbiAgcmV0dXJuIG5ldyBHcmFwaFFMU2NoZW1hKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgc2NoZW1hQ29uZmlnKSwge30sIHtcbiAgICB0eXBlczogb2JqZWN0VmFsdWVzKHR5cGVNYXApLFxuICAgIGRpcmVjdGl2ZXM6IHNvcnRCeU5hbWUoc2NoZW1hQ29uZmlnLmRpcmVjdGl2ZXMpLm1hcChzb3J0RGlyZWN0aXZlKSxcbiAgICBxdWVyeTogcmVwbGFjZU1heWJlVHlwZShzY2hlbWFDb25maWcucXVlcnkpLFxuICAgIG11dGF0aW9uOiByZXBsYWNlTWF5YmVUeXBlKHNjaGVtYUNvbmZpZy5tdXRhdGlvbiksXG4gICAgc3Vic2NyaXB0aW9uOiByZXBsYWNlTWF5YmVUeXBlKHNjaGVtYUNvbmZpZy5zdWJzY3JpcHRpb24pXG4gIH0pKTtcblxuICBmdW5jdGlvbiByZXBsYWNlVHlwZSh0eXBlKSB7XG4gICAgaWYgKGlzTGlzdFR5cGUodHlwZSkpIHtcbiAgICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl1cbiAgICAgIHJldHVybiBuZXcgR3JhcGhRTExpc3QocmVwbGFjZVR5cGUodHlwZS5vZlR5cGUpKTtcbiAgICB9IGVsc2UgaWYgKGlzTm9uTnVsbFR5cGUodHlwZSkpIHtcbiAgICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl1cbiAgICAgIHJldHVybiBuZXcgR3JhcGhRTE5vbk51bGwocmVwbGFjZVR5cGUodHlwZS5vZlR5cGUpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVwbGFjZU5hbWVkVHlwZSh0eXBlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlcGxhY2VOYW1lZFR5cGUodHlwZSkge1xuICAgIHJldHVybiB0eXBlTWFwW3R5cGUubmFtZV07XG4gIH1cblxuICBmdW5jdGlvbiByZXBsYWNlTWF5YmVUeXBlKG1heWJlVHlwZSkge1xuICAgIHJldHVybiBtYXliZVR5cGUgJiYgcmVwbGFjZU5hbWVkVHlwZShtYXliZVR5cGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gc29ydERpcmVjdGl2ZShkaXJlY3RpdmUpIHtcbiAgICB2YXIgY29uZmlnID0gZGlyZWN0aXZlLnRvQ29uZmlnKCk7XG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMRGlyZWN0aXZlKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY29uZmlnKSwge30sIHtcbiAgICAgIGxvY2F0aW9uczogc29ydEJ5KGNvbmZpZy5sb2NhdGlvbnMsIGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfSksXG4gICAgICBhcmdzOiBzb3J0QXJncyhjb25maWcuYXJncylcbiAgICB9KSk7XG4gIH1cblxuICBmdW5jdGlvbiBzb3J0QXJncyhhcmdzKSB7XG4gICAgcmV0dXJuIHNvcnRPYmpNYXAoYXJncywgZnVuY3Rpb24gKGFyZykge1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYXJnKSwge30sIHtcbiAgICAgICAgdHlwZTogcmVwbGFjZVR5cGUoYXJnLnR5cGUpXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNvcnRGaWVsZHMoZmllbGRzTWFwKSB7XG4gICAgcmV0dXJuIHNvcnRPYmpNYXAoZmllbGRzTWFwLCBmdW5jdGlvbiAoZmllbGQpIHtcbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGZpZWxkKSwge30sIHtcbiAgICAgICAgdHlwZTogcmVwbGFjZVR5cGUoZmllbGQudHlwZSksXG4gICAgICAgIGFyZ3M6IHNvcnRBcmdzKGZpZWxkLmFyZ3MpXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNvcnRJbnB1dEZpZWxkcyhmaWVsZHNNYXApIHtcbiAgICByZXR1cm4gc29ydE9iak1hcChmaWVsZHNNYXAsIGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZmllbGQpLCB7fSwge1xuICAgICAgICB0eXBlOiByZXBsYWNlVHlwZShmaWVsZC50eXBlKVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBzb3J0VHlwZXMoYXJyKSB7XG4gICAgcmV0dXJuIHNvcnRCeU5hbWUoYXJyKS5tYXAocmVwbGFjZU5hbWVkVHlwZSk7XG4gIH1cblxuICBmdW5jdGlvbiBzb3J0TmFtZWRUeXBlKHR5cGUpIHtcbiAgICBpZiAoaXNTY2FsYXJUeXBlKHR5cGUpIHx8IGlzSW50cm9zcGVjdGlvblR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cblxuICAgIGlmIChpc09iamVjdFR5cGUodHlwZSkpIHtcbiAgICAgIHZhciBjb25maWcgPSB0eXBlLnRvQ29uZmlnKCk7XG4gICAgICByZXR1cm4gbmV3IEdyYXBoUUxPYmplY3RUeXBlKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY29uZmlnKSwge30sIHtcbiAgICAgICAgaW50ZXJmYWNlczogZnVuY3Rpb24gaW50ZXJmYWNlcygpIHtcbiAgICAgICAgICByZXR1cm4gc29ydFR5cGVzKGNvbmZpZy5pbnRlcmZhY2VzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmllbGRzOiBmdW5jdGlvbiBmaWVsZHMoKSB7XG4gICAgICAgICAgcmV0dXJuIHNvcnRGaWVsZHMoY29uZmlnLmZpZWxkcyk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBpZiAoaXNJbnRlcmZhY2VUeXBlKHR5cGUpKSB7XG4gICAgICB2YXIgX2NvbmZpZyA9IHR5cGUudG9Db25maWcoKTtcblxuICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMSW50ZXJmYWNlVHlwZShfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIF9jb25maWcpLCB7fSwge1xuICAgICAgICBpbnRlcmZhY2VzOiBmdW5jdGlvbiBpbnRlcmZhY2VzKCkge1xuICAgICAgICAgIHJldHVybiBzb3J0VHlwZXMoX2NvbmZpZy5pbnRlcmZhY2VzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmllbGRzOiBmdW5jdGlvbiBmaWVsZHMoKSB7XG4gICAgICAgICAgcmV0dXJuIHNvcnRGaWVsZHMoX2NvbmZpZy5maWVsZHMpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgaWYgKGlzVW5pb25UeXBlKHR5cGUpKSB7XG4gICAgICB2YXIgX2NvbmZpZzIgPSB0eXBlLnRvQ29uZmlnKCk7XG5cbiAgICAgIHJldHVybiBuZXcgR3JhcGhRTFVuaW9uVHlwZShfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIF9jb25maWcyKSwge30sIHtcbiAgICAgICAgdHlwZXM6IGZ1bmN0aW9uIHR5cGVzKCkge1xuICAgICAgICAgIHJldHVybiBzb3J0VHlwZXMoX2NvbmZpZzIudHlwZXMpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgaWYgKGlzRW51bVR5cGUodHlwZSkpIHtcbiAgICAgIHZhciBfY29uZmlnMyA9IHR5cGUudG9Db25maWcoKTtcblxuICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMRW51bVR5cGUoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBfY29uZmlnMyksIHt9LCB7XG4gICAgICAgIHZhbHVlczogc29ydE9iak1hcChfY29uZmlnMy52YWx1ZXMpXG4gICAgICB9KSk7XG4gICAgfSAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjYxOCcpXG5cblxuICAgIGlmIChpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgICAgdmFyIF9jb25maWc0ID0gdHlwZS50b0NvbmZpZygpO1xuXG4gICAgICByZXR1cm4gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBfY29uZmlnNCksIHt9LCB7XG4gICAgICAgIGZpZWxkczogZnVuY3Rpb24gZmllbGRzKCkge1xuICAgICAgICAgIHJldHVybiBzb3J0SW5wdXRGaWVsZHMoX2NvbmZpZzQuZmllbGRzKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0gLy8gaXN0YW5idWwgaWdub3JlIG5leHQgKE5vdCByZWFjaGFibGUuIEFsbCBwb3NzaWJsZSB0eXBlcyBoYXZlIGJlZW4gY29uc2lkZXJlZClcblxuXG4gICAgZmFsc2UgfHwgaW52YXJpYW50KDAsICdVbmV4cGVjdGVkIHR5cGU6ICcgKyBpbnNwZWN0KHR5cGUpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzb3J0T2JqTWFwKG1hcCwgc29ydFZhbHVlRm4pIHtcbiAgdmFyIHNvcnRlZE1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciBzb3J0ZWRLZXlzID0gc29ydEJ5KE9iamVjdC5rZXlzKG1hcCksIGZ1bmN0aW9uICh4KSB7XG4gICAgcmV0dXJuIHg7XG4gIH0pO1xuXG4gIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHNvcnRlZEtleXMubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBrZXkgPSBzb3J0ZWRLZXlzW19pMl07XG4gICAgdmFyIHZhbHVlID0gbWFwW2tleV07XG4gICAgc29ydGVkTWFwW2tleV0gPSBzb3J0VmFsdWVGbiA/IHNvcnRWYWx1ZUZuKHZhbHVlKSA6IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHNvcnRlZE1hcDtcbn1cblxuZnVuY3Rpb24gc29ydEJ5TmFtZShhcnJheSkge1xuICByZXR1cm4gc29ydEJ5KGFycmF5LCBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIG9iai5uYW1lO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc29ydEJ5KGFycmF5LCBtYXBUb0tleSkge1xuICByZXR1cm4gYXJyYXkuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uIChvYmoxLCBvYmoyKSB7XG4gICAgdmFyIGtleTEgPSBtYXBUb0tleShvYmoxKTtcbiAgICB2YXIga2V5MiA9IG1hcFRvS2V5KG9iajIpO1xuICAgIHJldHVybiBrZXkxLmxvY2FsZUNvbXBhcmUoa2V5Mik7XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/lexicographicSortSchema.mjs\n");
1269
1270/***/ }),
1271
1272/***/ "../../../node_modules/graphql/utilities/printSchema.mjs":
1273/*!******************************************************************************************!*\
1274 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/printSchema.mjs ***!
1275 \******************************************************************************************/
1276/*! exports provided: printSchema, printIntrospectionSchema, printType */
1277/***/ (function(module, __webpack_exports__, __webpack_require__) {
1278
1279"use strict";
1280eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"printSchema\", function() { return printSchema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"printIntrospectionSchema\", function() { return printIntrospectionSchema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"printType\", function() { return printType; });\n/* harmony import */ var _polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/objectValues.mjs */ \"../../../node_modules/graphql/polyfills/objectValues.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _language_blockString_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../language/blockString.mjs */ \"../../../node_modules/graphql/language/blockString.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../type/scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _astFromValue_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./astFromValue.mjs */ \"../../../node_modules/graphql/utilities/astFromValue.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Accepts options as a second argument:\n *\n * - commentDescriptions:\n * Provide true to use preceding comments as the description.\n *\n */\nfunction printSchema(schema, options) {\n return printFilteredSchema(schema, function (n) {\n return !Object(_type_directives_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isSpecifiedDirective\"])(n);\n }, isDefinedType, options);\n}\nfunction printIntrospectionSchema(schema, options) {\n return printFilteredSchema(schema, _type_directives_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isSpecifiedDirective\"], _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isIntrospectionType\"], options);\n}\n\nfunction isDefinedType(type) {\n return !Object(_type_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isSpecifiedScalarType\"])(type) && !Object(_type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isIntrospectionType\"])(type);\n}\n\nfunction printFilteredSchema(schema, directiveFilter, typeFilter, options) {\n var directives = schema.getDirectives().filter(directiveFilter);\n var types = Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(schema.getTypeMap()).filter(typeFilter);\n return [printSchemaDefinition(schema)].concat(directives.map(function (directive) {\n return printDirective(directive, options);\n }), types.map(function (type) {\n return printType(type, options);\n })).filter(Boolean).join('\\n\\n') + '\\n';\n}\n\nfunction printSchemaDefinition(schema) {\n if (schema.description == null && isSchemaOfCommonNames(schema)) {\n return;\n }\n\n var operationTypes = [];\n var queryType = schema.getQueryType();\n\n if (queryType) {\n operationTypes.push(\" query: \".concat(queryType.name));\n }\n\n var mutationType = schema.getMutationType();\n\n if (mutationType) {\n operationTypes.push(\" mutation: \".concat(mutationType.name));\n }\n\n var subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType) {\n operationTypes.push(\" subscription: \".concat(subscriptionType.name));\n }\n\n return printDescription({}, schema) + \"schema {\\n\".concat(operationTypes.join('\\n'), \"\\n}\");\n}\n/**\n * GraphQL schema define root types for each type of operation. These types are\n * the same as any other type and can be named in any manner, however there is\n * a common naming convention:\n *\n * schema {\n * query: Query\n * mutation: Mutation\n * }\n *\n * When using this naming convention, the schema description can be omitted.\n */\n\n\nfunction isSchemaOfCommonNames(schema) {\n var queryType = schema.getQueryType();\n\n if (queryType && queryType.name !== 'Query') {\n return false;\n }\n\n var mutationType = schema.getMutationType();\n\n if (mutationType && mutationType.name !== 'Mutation') {\n return false;\n }\n\n var subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType && subscriptionType.name !== 'Subscription') {\n return false;\n }\n\n return true;\n}\n\nfunction printType(type, options) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_8__[\"isScalarType\"])(type)) {\n return printScalar(type, options);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_8__[\"isObjectType\"])(type)) {\n return printObject(type, options);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_8__[\"isInterfaceType\"])(type)) {\n return printInterface(type, options);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_8__[\"isUnionType\"])(type)) {\n return printUnion(type, options);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_8__[\"isEnumType\"])(type)) {\n return printEnum(type, options);\n } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_8__[\"isInputObjectType\"])(type)) {\n return printInputObject(type, options);\n } // istanbul ignore next (Not reachable. All possible types have been considered)\n\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(0, 'Unexpected type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(type));\n}\n\nfunction printScalar(type, options) {\n return printDescription(options, type) + \"scalar \".concat(type.name) + printSpecifiedByUrl(type);\n}\n\nfunction printImplementedInterfaces(type) {\n var interfaces = type.getInterfaces();\n return interfaces.length ? ' implements ' + interfaces.map(function (i) {\n return i.name;\n }).join(' & ') : '';\n}\n\nfunction printObject(type, options) {\n return printDescription(options, type) + \"type \".concat(type.name) + printImplementedInterfaces(type) + printFields(options, type);\n}\n\nfunction printInterface(type, options) {\n return printDescription(options, type) + \"interface \".concat(type.name) + printImplementedInterfaces(type) + printFields(options, type);\n}\n\nfunction printUnion(type, options) {\n var types = type.getTypes();\n var possibleTypes = types.length ? ' = ' + types.join(' | ') : '';\n return printDescription(options, type) + 'union ' + type.name + possibleTypes;\n}\n\nfunction printEnum(type, options) {\n var values = type.getValues().map(function (value, i) {\n return printDescription(options, value, ' ', !i) + ' ' + value.name + printDeprecated(value.deprecationReason);\n });\n return printDescription(options, type) + \"enum \".concat(type.name) + printBlock(values);\n}\n\nfunction printInputObject(type, options) {\n var fields = Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(type.getFields()).map(function (f, i) {\n return printDescription(options, f, ' ', !i) + ' ' + printInputValue(f);\n });\n return printDescription(options, type) + \"input \".concat(type.name) + printBlock(fields);\n}\n\nfunction printFields(options, type) {\n var fields = Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(type.getFields()).map(function (f, i) {\n return printDescription(options, f, ' ', !i) + ' ' + f.name + printArgs(options, f.args, ' ') + ': ' + String(f.type) + printDeprecated(f.deprecationReason);\n });\n return printBlock(fields);\n}\n\nfunction printBlock(items) {\n return items.length !== 0 ? ' {\\n' + items.join('\\n') + '\\n}' : '';\n}\n\nfunction printArgs(options, args) {\n var indentation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n if (args.length === 0) {\n return '';\n } // If every arg does not have a description, print them on one line.\n\n\n if (args.every(function (arg) {\n return !arg.description;\n })) {\n return '(' + args.map(printInputValue).join(', ') + ')';\n }\n\n return '(\\n' + args.map(function (arg, i) {\n return printDescription(options, arg, ' ' + indentation, !i) + ' ' + indentation + printInputValue(arg);\n }).join('\\n') + '\\n' + indentation + ')';\n}\n\nfunction printInputValue(arg) {\n var defaultAST = Object(_astFromValue_mjs__WEBPACK_IMPORTED_MODULE_9__[\"astFromValue\"])(arg.defaultValue, arg.type);\n var argDecl = arg.name + ': ' + String(arg.type);\n\n if (defaultAST) {\n argDecl += \" = \".concat(Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_3__[\"print\"])(defaultAST));\n }\n\n return argDecl + printDeprecated(arg.deprecationReason);\n}\n\nfunction printDirective(directive, options) {\n return printDescription(options, directive) + 'directive @' + directive.name + printArgs(options, directive.args) + (directive.isRepeatable ? ' repeatable' : '') + ' on ' + directive.locations.join(' | ');\n}\n\nfunction printDeprecated(reason) {\n if (reason == null) {\n return '';\n }\n\n var reasonAST = Object(_astFromValue_mjs__WEBPACK_IMPORTED_MODULE_9__[\"astFromValue\"])(reason, _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"]);\n\n if (reasonAST && reason !== _type_directives_mjs__WEBPACK_IMPORTED_MODULE_7__[\"DEFAULT_DEPRECATION_REASON\"]) {\n return ' @deprecated(reason: ' + Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_3__[\"print\"])(reasonAST) + ')';\n }\n\n return ' @deprecated';\n}\n\nfunction printSpecifiedByUrl(scalar) {\n if (scalar.specifiedByUrl == null) {\n return '';\n }\n\n var url = scalar.specifiedByUrl;\n var urlAST = Object(_astFromValue_mjs__WEBPACK_IMPORTED_MODULE_9__[\"astFromValue\"])(url, _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_6__[\"GraphQLString\"]);\n urlAST || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(0, 'Unexpected null value returned from `astFromValue` for specifiedByUrl');\n return ' @specifiedBy(url: ' + Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_3__[\"print\"])(urlAST) + ')';\n}\n\nfunction printDescription(options, def) {\n var indentation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var firstInBlock = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var description = def.description;\n\n if (description == null) {\n return '';\n }\n\n if ((options === null || options === void 0 ? void 0 : options.commentDescriptions) === true) {\n return printDescriptionWithComments(description, indentation, firstInBlock);\n }\n\n var preferMultipleLines = description.length > 70;\n var blockString = Object(_language_blockString_mjs__WEBPACK_IMPORTED_MODULE_4__[\"printBlockString\"])(description, '', preferMultipleLines);\n var prefix = indentation && !firstInBlock ? '\\n' + indentation : indentation;\n return prefix + blockString.replace(/\\n/g, '\\n' + indentation) + '\\n';\n}\n\nfunction printDescriptionWithComments(description, indentation, firstInBlock) {\n var prefix = indentation && !firstInBlock ? '\\n' : '';\n var comment = description.split('\\n').map(function (line) {\n return indentation + (line !== '' ? '# ' + line : '#');\n }).join('\\n');\n return prefix + comment + '\\n';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3ByaW50U2NoZW1hLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9wcmludFNjaGVtYS5tanM/YjEwYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgb2JqZWN0VmFsdWVzIGZyb20gXCIuLi9wb2x5ZmlsbHMvb2JqZWN0VmFsdWVzLm1qc1wiO1xuaW1wb3J0IGluc3BlY3QgZnJvbSBcIi4uL2pzdXRpbHMvaW5zcGVjdC5tanNcIjtcbmltcG9ydCBpbnZhcmlhbnQgZnJvbSBcIi4uL2pzdXRpbHMvaW52YXJpYW50Lm1qc1wiO1xuaW1wb3J0IHsgcHJpbnQgfSBmcm9tIFwiLi4vbGFuZ3VhZ2UvcHJpbnRlci5tanNcIjtcbmltcG9ydCB7IHByaW50QmxvY2tTdHJpbmcgfSBmcm9tIFwiLi4vbGFuZ3VhZ2UvYmxvY2tTdHJpbmcubWpzXCI7XG5pbXBvcnQgeyBpc0ludHJvc3BlY3Rpb25UeXBlIH0gZnJvbSBcIi4uL3R5cGUvaW50cm9zcGVjdGlvbi5tanNcIjtcbmltcG9ydCB7IEdyYXBoUUxTdHJpbmcsIGlzU3BlY2lmaWVkU2NhbGFyVHlwZSB9IGZyb20gXCIuLi90eXBlL3NjYWxhcnMubWpzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0RFUFJFQ0FUSU9OX1JFQVNPTiwgaXNTcGVjaWZpZWREaXJlY3RpdmUgfSBmcm9tIFwiLi4vdHlwZS9kaXJlY3RpdmVzLm1qc1wiO1xuaW1wb3J0IHsgaXNTY2FsYXJUeXBlLCBpc09iamVjdFR5cGUsIGlzSW50ZXJmYWNlVHlwZSwgaXNVbmlvblR5cGUsIGlzRW51bVR5cGUsIGlzSW5wdXRPYmplY3RUeXBlIH0gZnJvbSBcIi4uL3R5cGUvZGVmaW5pdGlvbi5tanNcIjtcbmltcG9ydCB7IGFzdEZyb21WYWx1ZSB9IGZyb20gXCIuL2FzdEZyb21WYWx1ZS5tanNcIjtcblxuLyoqXG4gKiBBY2NlcHRzIG9wdGlvbnMgYXMgYSBzZWNvbmQgYXJndW1lbnQ6XG4gKlxuICogICAgLSBjb21tZW50RGVzY3JpcHRpb25zOlxuICogICAgICAgIFByb3ZpZGUgdHJ1ZSB0byB1c2UgcHJlY2VkaW5nIGNvbW1lbnRzIGFzIHRoZSBkZXNjcmlwdGlvbi5cbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludFNjaGVtYShzY2hlbWEsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHByaW50RmlsdGVyZWRTY2hlbWEoc2NoZW1hLCBmdW5jdGlvbiAobikge1xuICAgIHJldHVybiAhaXNTcGVjaWZpZWREaXJlY3RpdmUobik7XG4gIH0sIGlzRGVmaW5lZFR5cGUsIG9wdGlvbnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHByaW50SW50cm9zcGVjdGlvblNjaGVtYShzY2hlbWEsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHByaW50RmlsdGVyZWRTY2hlbWEoc2NoZW1hLCBpc1NwZWNpZmllZERpcmVjdGl2ZSwgaXNJbnRyb3NwZWN0aW9uVHlwZSwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIGlzRGVmaW5lZFR5cGUodHlwZSkge1xuICByZXR1cm4gIWlzU3BlY2lmaWVkU2NhbGFyVHlwZSh0eXBlKSAmJiAhaXNJbnRyb3NwZWN0aW9uVHlwZSh0eXBlKTtcbn1cblxuZnVuY3Rpb24gcHJpbnRGaWx0ZXJlZFNjaGVtYShzY2hlbWEsIGRpcmVjdGl2ZUZpbHRlciwgdHlwZUZpbHRlciwgb3B0aW9ucykge1xuICB2YXIgZGlyZWN0aXZlcyA9IHNjaGVtYS5nZXREaXJlY3RpdmVzKCkuZmlsdGVyKGRpcmVjdGl2ZUZpbHRlcik7XG4gIHZhciB0eXBlcyA9IG9iamVjdFZhbHVlcyhzY2hlbWEuZ2V0VHlwZU1hcCgpKS5maWx0ZXIodHlwZUZpbHRlcik7XG4gIHJldHVybiBbcHJpbnRTY2hlbWFEZWZpbml0aW9uKHNjaGVtYSldLmNvbmNhdChkaXJlY3RpdmVzLm1hcChmdW5jdGlvbiAoZGlyZWN0aXZlKSB7XG4gICAgcmV0dXJuIHByaW50RGlyZWN0aXZlKGRpcmVjdGl2ZSwgb3B0aW9ucyk7XG4gIH0pLCB0eXBlcy5tYXAoZnVuY3Rpb24gKHR5cGUpIHtcbiAgICByZXR1cm4gcHJpbnRUeXBlKHR5cGUsIG9wdGlvbnMpO1xuICB9KSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcblxcbicpICsgJ1xcbic7XG59XG5cbmZ1bmN0aW9uIHByaW50U2NoZW1hRGVmaW5pdGlvbihzY2hlbWEpIHtcbiAgaWYgKHNjaGVtYS5kZXNjcmlwdGlvbiA9PSBudWxsICYmIGlzU2NoZW1hT2ZDb21tb25OYW1lcyhzY2hlbWEpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIG9wZXJhdGlvblR5cGVzID0gW107XG4gIHZhciBxdWVyeVR5cGUgPSBzY2hlbWEuZ2V0UXVlcnlUeXBlKCk7XG5cbiAgaWYgKHF1ZXJ5VHlwZSkge1xuICAgIG9wZXJhdGlvblR5cGVzLnB1c2goXCIgIHF1ZXJ5OiBcIi5jb25jYXQocXVlcnlUeXBlLm5hbWUpKTtcbiAgfVxuXG4gIHZhciBtdXRhdGlvblR5cGUgPSBzY2hlbWEuZ2V0TXV0YXRpb25UeXBlKCk7XG5cbiAgaWYgKG11dGF0aW9uVHlwZSkge1xuICAgIG9wZXJhdGlvblR5cGVzLnB1c2goXCIgIG11dGF0aW9uOiBcIi5jb25jYXQobXV0YXRpb25UeXBlLm5hbWUpKTtcbiAgfVxuXG4gIHZhciBzdWJzY3JpcHRpb25UeXBlID0gc2NoZW1hLmdldFN1YnNjcmlwdGlvblR5cGUoKTtcblxuICBpZiAoc3Vic2NyaXB0aW9uVHlwZSkge1xuICAgIG9wZXJhdGlvblR5cGVzLnB1c2goXCIgIHN1YnNjcmlwdGlvbjogXCIuY29uY2F0KHN1YnNjcmlwdGlvblR5cGUubmFtZSkpO1xuICB9XG5cbiAgcmV0dXJuIHByaW50RGVzY3JpcHRpb24oe30sIHNjaGVtYSkgKyBcInNjaGVtYSB7XFxuXCIuY29uY2F0KG9wZXJhdGlvblR5cGVzLmpvaW4oJ1xcbicpLCBcIlxcbn1cIik7XG59XG4vKipcbiAqIEdyYXBoUUwgc2NoZW1hIGRlZmluZSByb290IHR5cGVzIGZvciBlYWNoIHR5cGUgb2Ygb3BlcmF0aW9uLiBUaGVzZSB0eXBlcyBhcmVcbiAqIHRoZSBzYW1lIGFzIGFueSBvdGhlciB0eXBlIGFuZCBjYW4gYmUgbmFtZWQgaW4gYW55IG1hbm5lciwgaG93ZXZlciB0aGVyZSBpc1xuICogYSBjb21tb24gbmFtaW5nIGNvbnZlbnRpb246XG4gKlxuICogICBzY2hlbWEge1xuICogICAgIHF1ZXJ5OiBRdWVyeVxuICogICAgIG11dGF0aW9uOiBNdXRhdGlvblxuICogICB9XG4gKlxuICogV2hlbiB1c2luZyB0aGlzIG5hbWluZyBjb252ZW50aW9uLCB0aGUgc2NoZW1hIGRlc2NyaXB0aW9uIGNhbiBiZSBvbWl0dGVkLlxuICovXG5cblxuZnVuY3Rpb24gaXNTY2hlbWFPZkNvbW1vbk5hbWVzKHNjaGVtYSkge1xuICB2YXIgcXVlcnlUeXBlID0gc2NoZW1hLmdldFF1ZXJ5VHlwZSgpO1xuXG4gIGlmIChxdWVyeVR5cGUgJiYgcXVlcnlUeXBlLm5hbWUgIT09ICdRdWVyeScpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgbXV0YXRpb25UeXBlID0gc2NoZW1hLmdldE11dGF0aW9uVHlwZSgpO1xuXG4gIGlmIChtdXRhdGlvblR5cGUgJiYgbXV0YXRpb25UeXBlLm5hbWUgIT09ICdNdXRhdGlvbicpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgc3Vic2NyaXB0aW9uVHlwZSA9IHNjaGVtYS5nZXRTdWJzY3JpcHRpb25UeXBlKCk7XG5cbiAgaWYgKHN1YnNjcmlwdGlvblR5cGUgJiYgc3Vic2NyaXB0aW9uVHlwZS5uYW1lICE9PSAnU3Vic2NyaXB0aW9uJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRUeXBlKHR5cGUsIG9wdGlvbnMpIHtcbiAgaWYgKGlzU2NhbGFyVHlwZSh0eXBlKSkge1xuICAgIHJldHVybiBwcmludFNjYWxhcih0eXBlLCBvcHRpb25zKTtcbiAgfVxuXG4gIGlmIChpc09iamVjdFR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gcHJpbnRPYmplY3QodHlwZSwgb3B0aW9ucyk7XG4gIH1cblxuICBpZiAoaXNJbnRlcmZhY2VUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIHByaW50SW50ZXJmYWNlKHR5cGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKGlzVW5pb25UeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIHByaW50VW5pb24odHlwZSwgb3B0aW9ucyk7XG4gIH1cblxuICBpZiAoaXNFbnVtVHlwZSh0eXBlKSkge1xuICAgIHJldHVybiBwcmludEVudW0odHlwZSwgb3B0aW9ucyk7XG4gIH0gLy8gaXN0YW5idWwgaWdub3JlIGVsc2UgKFNlZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzI2MTgnKVxuXG5cbiAgaWYgKGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIHByaW50SW5wdXRPYmplY3QodHlwZSwgb3B0aW9ucyk7XG4gIH0gLy8gaXN0YW5idWwgaWdub3JlIG5leHQgKE5vdCByZWFjaGFibGUuIEFsbCBwb3NzaWJsZSB0eXBlcyBoYXZlIGJlZW4gY29uc2lkZXJlZClcblxuXG4gIGZhbHNlIHx8IGludmFyaWFudCgwLCAnVW5leHBlY3RlZCB0eXBlOiAnICsgaW5zcGVjdCh0eXBlKSk7XG59XG5cbmZ1bmN0aW9uIHByaW50U2NhbGFyKHR5cGUsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHByaW50RGVzY3JpcHRpb24ob3B0aW9ucywgdHlwZSkgKyBcInNjYWxhciBcIi5jb25jYXQodHlwZS5uYW1lKSArIHByaW50U3BlY2lmaWVkQnlVcmwodHlwZSk7XG59XG5cbmZ1bmN0aW9uIHByaW50SW1wbGVtZW50ZWRJbnRlcmZhY2VzKHR5cGUpIHtcbiAgdmFyIGludGVyZmFjZXMgPSB0eXBlLmdldEludGVyZmFjZXMoKTtcbiAgcmV0dXJuIGludGVyZmFjZXMubGVuZ3RoID8gJyBpbXBsZW1lbnRzICcgKyBpbnRlcmZhY2VzLm1hcChmdW5jdGlvbiAoaSkge1xuICAgIHJldHVybiBpLm5hbWU7XG4gIH0pLmpvaW4oJyAmICcpIDogJyc7XG59XG5cbmZ1bmN0aW9uIHByaW50T2JqZWN0KHR5cGUsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHByaW50RGVzY3JpcHRpb24ob3B0aW9ucywgdHlwZSkgKyBcInR5cGUgXCIuY29uY2F0KHR5cGUubmFtZSkgKyBwcmludEltcGxlbWVudGVkSW50ZXJmYWNlcyh0eXBlKSArIHByaW50RmllbGRzKG9wdGlvbnMsIHR5cGUpO1xufVxuXG5mdW5jdGlvbiBwcmludEludGVyZmFjZSh0eXBlLCBvcHRpb25zKSB7XG4gIHJldHVybiBwcmludERlc2NyaXB0aW9uKG9wdGlvbnMsIHR5cGUpICsgXCJpbnRlcmZhY2UgXCIuY29uY2F0KHR5cGUubmFtZSkgKyBwcmludEltcGxlbWVudGVkSW50ZXJmYWNlcyh0eXBlKSArIHByaW50RmllbGRzKG9wdGlvbnMsIHR5cGUpO1xufVxuXG5mdW5jdGlvbiBwcmludFVuaW9uKHR5cGUsIG9wdGlvbnMpIHtcbiAgdmFyIHR5cGVzID0gdHlwZS5nZXRUeXBlcygpO1xuICB2YXIgcG9zc2libGVUeXBlcyA9IHR5cGVzLmxlbmd0aCA/ICcgPSAnICsgdHlwZXMuam9pbignIHwgJykgOiAnJztcbiAgcmV0dXJuIHByaW50RGVzY3JpcHRpb24ob3B0aW9ucywgdHlwZSkgKyAndW5pb24gJyArIHR5cGUubmFtZSArIHBvc3NpYmxlVHlwZXM7XG59XG5cbmZ1bmN0aW9uIHByaW50RW51bSh0eXBlLCBvcHRpb25zKSB7XG4gIHZhciB2YWx1ZXMgPSB0eXBlLmdldFZhbHVlcygpLm1hcChmdW5jdGlvbiAodmFsdWUsIGkpIHtcbiAgICByZXR1cm4gcHJpbnREZXNjcmlwdGlvbihvcHRpb25zLCB2YWx1ZSwgJyAgJywgIWkpICsgJyAgJyArIHZhbHVlLm5hbWUgKyBwcmludERlcHJlY2F0ZWQodmFsdWUuZGVwcmVjYXRpb25SZWFzb24pO1xuICB9KTtcbiAgcmV0dXJuIHByaW50RGVzY3JpcHRpb24ob3B0aW9ucywgdHlwZSkgKyBcImVudW0gXCIuY29uY2F0KHR5cGUubmFtZSkgKyBwcmludEJsb2NrKHZhbHVlcyk7XG59XG5cbmZ1bmN0aW9uIHByaW50SW5wdXRPYmplY3QodHlwZSwgb3B0aW9ucykge1xuICB2YXIgZmllbGRzID0gb2JqZWN0VmFsdWVzKHR5cGUuZ2V0RmllbGRzKCkpLm1hcChmdW5jdGlvbiAoZiwgaSkge1xuICAgIHJldHVybiBwcmludERlc2NyaXB0aW9uKG9wdGlvbnMsIGYsICcgICcsICFpKSArICcgICcgKyBwcmludElucHV0VmFsdWUoZik7XG4gIH0pO1xuICByZXR1cm4gcHJpbnREZXNjcmlwdGlvbihvcHRpb25zLCB0eXBlKSArIFwiaW5wdXQgXCIuY29uY2F0KHR5cGUubmFtZSkgKyBwcmludEJsb2NrKGZpZWxkcyk7XG59XG5cbmZ1bmN0aW9uIHByaW50RmllbGRzKG9wdGlvbnMsIHR5cGUpIHtcbiAgdmFyIGZpZWxkcyA9IG9iamVjdFZhbHVlcyh0eXBlLmdldEZpZWxkcygpKS5tYXAoZnVuY3Rpb24gKGYsIGkpIHtcbiAgICByZXR1cm4gcHJpbnREZXNjcmlwdGlvbihvcHRpb25zLCBmLCAnICAnLCAhaSkgKyAnICAnICsgZi5uYW1lICsgcHJpbnRBcmdzKG9wdGlvbnMsIGYuYXJncywgJyAgJykgKyAnOiAnICsgU3RyaW5nKGYudHlwZSkgKyBwcmludERlcHJlY2F0ZWQoZi5kZXByZWNhdGlvblJlYXNvbik7XG4gIH0pO1xuICByZXR1cm4gcHJpbnRCbG9jayhmaWVsZHMpO1xufVxuXG5mdW5jdGlvbiBwcmludEJsb2NrKGl0ZW1zKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggIT09IDAgPyAnIHtcXG4nICsgaXRlbXMuam9pbignXFxuJykgKyAnXFxufScgOiAnJztcbn1cblxuZnVuY3Rpb24gcHJpbnRBcmdzKG9wdGlvbnMsIGFyZ3MpIHtcbiAgdmFyIGluZGVudGF0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAnJztcblxuICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJyc7XG4gIH0gLy8gSWYgZXZlcnkgYXJnIGRvZXMgbm90IGhhdmUgYSBkZXNjcmlwdGlvbiwgcHJpbnQgdGhlbSBvbiBvbmUgbGluZS5cblxuXG4gIGlmIChhcmdzLmV2ZXJ5KGZ1bmN0aW9uIChhcmcpIHtcbiAgICByZXR1cm4gIWFyZy5kZXNjcmlwdGlvbjtcbiAgfSkpIHtcbiAgICByZXR1cm4gJygnICsgYXJncy5tYXAocHJpbnRJbnB1dFZhbHVlKS5qb2luKCcsICcpICsgJyknO1xuICB9XG5cbiAgcmV0dXJuICcoXFxuJyArIGFyZ3MubWFwKGZ1bmN0aW9uIChhcmcsIGkpIHtcbiAgICByZXR1cm4gcHJpbnREZXNjcmlwdGlvbihvcHRpb25zLCBhcmcsICcgICcgKyBpbmRlbnRhdGlvbiwgIWkpICsgJyAgJyArIGluZGVudGF0aW9uICsgcHJpbnRJbnB1dFZhbHVlKGFyZyk7XG4gIH0pLmpvaW4oJ1xcbicpICsgJ1xcbicgKyBpbmRlbnRhdGlvbiArICcpJztcbn1cblxuZnVuY3Rpb24gcHJpbnRJbnB1dFZhbHVlKGFyZykge1xuICB2YXIgZGVmYXVsdEFTVCA9IGFzdEZyb21WYWx1ZShhcmcuZGVmYXVsdFZhbHVlLCBhcmcudHlwZSk7XG4gIHZhciBhcmdEZWNsID0gYXJnLm5hbWUgKyAnOiAnICsgU3RyaW5nKGFyZy50eXBlKTtcblxuICBpZiAoZGVmYXVsdEFTVCkge1xuICAgIGFyZ0RlY2wgKz0gXCIgPSBcIi5jb25jYXQocHJpbnQoZGVmYXVsdEFTVCkpO1xuICB9XG5cbiAgcmV0dXJuIGFyZ0RlY2wgKyBwcmludERlcHJlY2F0ZWQoYXJnLmRlcHJlY2F0aW9uUmVhc29uKTtcbn1cblxuZnVuY3Rpb24gcHJpbnREaXJlY3RpdmUoZGlyZWN0aXZlLCBvcHRpb25zKSB7XG4gIHJldHVybiBwcmludERlc2NyaXB0aW9uKG9wdGlvbnMsIGRpcmVjdGl2ZSkgKyAnZGlyZWN0aXZlIEAnICsgZGlyZWN0aXZlLm5hbWUgKyBwcmludEFyZ3Mob3B0aW9ucywgZGlyZWN0aXZlLmFyZ3MpICsgKGRpcmVjdGl2ZS5pc1JlcGVhdGFibGUgPyAnIHJlcGVhdGFibGUnIDogJycpICsgJyBvbiAnICsgZGlyZWN0aXZlLmxvY2F0aW9ucy5qb2luKCcgfCAnKTtcbn1cblxuZnVuY3Rpb24gcHJpbnREZXByZWNhdGVkKHJlYXNvbikge1xuICBpZiAocmVhc29uID09IG51bGwpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICB2YXIgcmVhc29uQVNUID0gYXN0RnJvbVZhbHVlKHJlYXNvbiwgR3JhcGhRTFN0cmluZyk7XG5cbiAgaWYgKHJlYXNvbkFTVCAmJiByZWFzb24gIT09IERFRkFVTFRfREVQUkVDQVRJT05fUkVBU09OKSB7XG4gICAgcmV0dXJuICcgQGRlcHJlY2F0ZWQocmVhc29uOiAnICsgcHJpbnQocmVhc29uQVNUKSArICcpJztcbiAgfVxuXG4gIHJldHVybiAnIEBkZXByZWNhdGVkJztcbn1cblxuZnVuY3Rpb24gcHJpbnRTcGVjaWZpZWRCeVVybChzY2FsYXIpIHtcbiAgaWYgKHNjYWxhci5zcGVjaWZpZWRCeVVybCA9PSBudWxsKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgdmFyIHVybCA9IHNjYWxhci5zcGVjaWZpZWRCeVVybDtcbiAgdmFyIHVybEFTVCA9IGFzdEZyb21WYWx1ZSh1cmwsIEdyYXBoUUxTdHJpbmcpO1xuICB1cmxBU1QgfHwgaW52YXJpYW50KDAsICdVbmV4cGVjdGVkIG51bGwgdmFsdWUgcmV0dXJuZWQgZnJvbSBgYXN0RnJvbVZhbHVlYCBmb3Igc3BlY2lmaWVkQnlVcmwnKTtcbiAgcmV0dXJuICcgQHNwZWNpZmllZEJ5KHVybDogJyArIHByaW50KHVybEFTVCkgKyAnKSc7XG59XG5cbmZ1bmN0aW9uIHByaW50RGVzY3JpcHRpb24ob3B0aW9ucywgZGVmKSB7XG4gIHZhciBpbmRlbnRhdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogJyc7XG4gIHZhciBmaXJzdEluQmxvY2sgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IHRydWU7XG4gIHZhciBkZXNjcmlwdGlvbiA9IGRlZi5kZXNjcmlwdGlvbjtcblxuICBpZiAoZGVzY3JpcHRpb24gPT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGlmICgob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmNvbW1lbnREZXNjcmlwdGlvbnMpID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHByaW50RGVzY3JpcHRpb25XaXRoQ29tbWVudHMoZGVzY3JpcHRpb24sIGluZGVudGF0aW9uLCBmaXJzdEluQmxvY2spO1xuICB9XG5cbiAgdmFyIHByZWZlck11bHRpcGxlTGluZXMgPSBkZXNjcmlwdGlvbi5sZW5ndGggPiA3MDtcbiAgdmFyIGJsb2NrU3RyaW5nID0gcHJpbnRCbG9ja1N0cmluZyhkZXNjcmlwdGlvbiwgJycsIHByZWZlck11bHRpcGxlTGluZXMpO1xuICB2YXIgcHJlZml4ID0gaW5kZW50YXRpb24gJiYgIWZpcnN0SW5CbG9jayA/ICdcXG4nICsgaW5kZW50YXRpb24gOiBpbmRlbnRhdGlvbjtcbiAgcmV0dXJuIHByZWZpeCArIGJsb2NrU3RyaW5nLnJlcGxhY2UoL1xcbi9nLCAnXFxuJyArIGluZGVudGF0aW9uKSArICdcXG4nO1xufVxuXG5mdW5jdGlvbiBwcmludERlc2NyaXB0aW9uV2l0aENvbW1lbnRzKGRlc2NyaXB0aW9uLCBpbmRlbnRhdGlvbiwgZmlyc3RJbkJsb2NrKSB7XG4gIHZhciBwcmVmaXggPSBpbmRlbnRhdGlvbiAmJiAhZmlyc3RJbkJsb2NrID8gJ1xcbicgOiAnJztcbiAgdmFyIGNvbW1lbnQgPSBkZXNjcmlwdGlvbi5zcGxpdCgnXFxuJykubWFwKGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgcmV0dXJuIGluZGVudGF0aW9uICsgKGxpbmUgIT09ICcnID8gJyMgJyArIGxpbmUgOiAnIycpO1xuICB9KS5qb2luKCdcXG4nKTtcbiAgcmV0dXJuIHByZWZpeCArIGNvbW1lbnQgKyAnXFxuJztcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/printSchema.mjs\n");
1281
1282/***/ }),
1283
1284/***/ "../../../node_modules/graphql/utilities/separateOperations.mjs":
1285/*!*************************************************************************************************!*\
1286 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/separateOperations.mjs ***!
1287 \*************************************************************************************************/
1288/*! exports provided: separateOperations */
1289/***/ (function(module, __webpack_exports__, __webpack_require__) {
1290
1291"use strict";
1292eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"separateOperations\", function() { return separateOperations; });\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_visitor_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n\n\n/**\n * separateOperations accepts a single AST document which may contain many\n * operations and fragments and returns a collection of AST documents each of\n * which contains a single operation as well the fragment definitions it\n * refers to.\n */\n\nfunction separateOperations(documentAST) {\n var operations = [];\n var depGraph = Object.create(null);\n var fromName; // Populate metadata and build a dependency graph.\n\n Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_1__[\"visit\"])(documentAST, {\n OperationDefinition: function OperationDefinition(node) {\n fromName = opName(node);\n operations.push(node);\n },\n FragmentDefinition: function FragmentDefinition(node) {\n fromName = node.name.value;\n },\n FragmentSpread: function FragmentSpread(node) {\n var toName = node.name.value;\n var dependents = depGraph[fromName];\n\n if (dependents === undefined) {\n dependents = depGraph[fromName] = Object.create(null);\n }\n\n dependents[toName] = true;\n }\n }); // For each operation, produce a new synthesized AST which includes only what\n // is necessary for completing that operation.\n\n var separatedDocumentASTs = Object.create(null);\n\n var _loop = function _loop(_i2) {\n var operation = operations[_i2];\n var operationName = opName(operation);\n var dependencies = Object.create(null);\n collectTransitiveDependencies(dependencies, depGraph, operationName); // The list of definition nodes to be included for this operation, sorted\n // to retain the same order as the original document.\n\n separatedDocumentASTs[operationName] = {\n kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].DOCUMENT,\n definitions: documentAST.definitions.filter(function (node) {\n return node === operation || node.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FRAGMENT_DEFINITION && dependencies[node.name.value];\n })\n };\n };\n\n for (var _i2 = 0; _i2 < operations.length; _i2++) {\n _loop(_i2);\n }\n\n return separatedDocumentASTs;\n}\n\n// Provides the empty string for anonymous operations.\nfunction opName(operation) {\n return operation.name ? operation.name.value : '';\n} // From a dependency graph, collects a list of transitive dependencies by\n// recursing through a dependency graph.\n\n\nfunction collectTransitiveDependencies(collected, depGraph, fromName) {\n var immediateDeps = depGraph[fromName];\n\n if (immediateDeps) {\n for (var _i4 = 0, _Object$keys2 = Object.keys(immediateDeps); _i4 < _Object$keys2.length; _i4++) {\n var toName = _Object$keys2[_i4];\n\n if (!collected[toName]) {\n collected[toName] = true;\n collectTransitiveDependencies(collected, depGraph, toName);\n }\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3NlcGFyYXRlT3BlcmF0aW9ucy5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvc2VwYXJhdGVPcGVyYXRpb25zLm1qcz8yNzU5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtpbmQgfSBmcm9tIFwiLi4vbGFuZ3VhZ2Uva2luZHMubWpzXCI7XG5pbXBvcnQgeyB2aXNpdCB9IGZyb20gXCIuLi9sYW5ndWFnZS92aXNpdG9yLm1qc1wiO1xuLyoqXG4gKiBzZXBhcmF0ZU9wZXJhdGlvbnMgYWNjZXB0cyBhIHNpbmdsZSBBU1QgZG9jdW1lbnQgd2hpY2ggbWF5IGNvbnRhaW4gbWFueVxuICogb3BlcmF0aW9ucyBhbmQgZnJhZ21lbnRzIGFuZCByZXR1cm5zIGEgY29sbGVjdGlvbiBvZiBBU1QgZG9jdW1lbnRzIGVhY2ggb2ZcbiAqIHdoaWNoIGNvbnRhaW5zIGEgc2luZ2xlIG9wZXJhdGlvbiBhcyB3ZWxsIHRoZSBmcmFnbWVudCBkZWZpbml0aW9ucyBpdFxuICogcmVmZXJzIHRvLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXBhcmF0ZU9wZXJhdGlvbnMoZG9jdW1lbnRBU1QpIHtcbiAgdmFyIG9wZXJhdGlvbnMgPSBbXTtcbiAgdmFyIGRlcEdyYXBoID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIGZyb21OYW1lOyAvLyBQb3B1bGF0ZSBtZXRhZGF0YSBhbmQgYnVpbGQgYSBkZXBlbmRlbmN5IGdyYXBoLlxuXG4gIHZpc2l0KGRvY3VtZW50QVNULCB7XG4gICAgT3BlcmF0aW9uRGVmaW5pdGlvbjogZnVuY3Rpb24gT3BlcmF0aW9uRGVmaW5pdGlvbihub2RlKSB7XG4gICAgICBmcm9tTmFtZSA9IG9wTmFtZShub2RlKTtcbiAgICAgIG9wZXJhdGlvbnMucHVzaChub2RlKTtcbiAgICB9LFxuICAgIEZyYWdtZW50RGVmaW5pdGlvbjogZnVuY3Rpb24gRnJhZ21lbnREZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgIGZyb21OYW1lID0gbm9kZS5uYW1lLnZhbHVlO1xuICAgIH0sXG4gICAgRnJhZ21lbnRTcHJlYWQ6IGZ1bmN0aW9uIEZyYWdtZW50U3ByZWFkKG5vZGUpIHtcbiAgICAgIHZhciB0b05hbWUgPSBub2RlLm5hbWUudmFsdWU7XG4gICAgICB2YXIgZGVwZW5kZW50cyA9IGRlcEdyYXBoW2Zyb21OYW1lXTtcblxuICAgICAgaWYgKGRlcGVuZGVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkZXBlbmRlbnRzID0gZGVwR3JhcGhbZnJvbU5hbWVdID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIH1cblxuICAgICAgZGVwZW5kZW50c1t0b05hbWVdID0gdHJ1ZTtcbiAgICB9XG4gIH0pOyAvLyBGb3IgZWFjaCBvcGVyYXRpb24sIHByb2R1Y2UgYSBuZXcgc3ludGhlc2l6ZWQgQVNUIHdoaWNoIGluY2x1ZGVzIG9ubHkgd2hhdFxuICAvLyBpcyBuZWNlc3NhcnkgZm9yIGNvbXBsZXRpbmcgdGhhdCBvcGVyYXRpb24uXG5cbiAgdmFyIHNlcGFyYXRlZERvY3VtZW50QVNUcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoX2kyKSB7XG4gICAgdmFyIG9wZXJhdGlvbiA9IG9wZXJhdGlvbnNbX2kyXTtcbiAgICB2YXIgb3BlcmF0aW9uTmFtZSA9IG9wTmFtZShvcGVyYXRpb24pO1xuICAgIHZhciBkZXBlbmRlbmNpZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIGNvbGxlY3RUcmFuc2l0aXZlRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcywgZGVwR3JhcGgsIG9wZXJhdGlvbk5hbWUpOyAvLyBUaGUgbGlzdCBvZiBkZWZpbml0aW9uIG5vZGVzIHRvIGJlIGluY2x1ZGVkIGZvciB0aGlzIG9wZXJhdGlvbiwgc29ydGVkXG4gICAgLy8gdG8gcmV0YWluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBvcmlnaW5hbCBkb2N1bWVudC5cblxuICAgIHNlcGFyYXRlZERvY3VtZW50QVNUc1tvcGVyYXRpb25OYW1lXSA9IHtcbiAgICAgIGtpbmQ6IEtpbmQuRE9DVU1FTlQsXG4gICAgICBkZWZpbml0aW9uczogZG9jdW1lbnRBU1QuZGVmaW5pdGlvbnMuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlID09PSBvcGVyYXRpb24gfHwgbm9kZS5raW5kID09PSBLaW5kLkZSQUdNRU5UX0RFRklOSVRJT04gJiYgZGVwZW5kZW5jaWVzW25vZGUubmFtZS52YWx1ZV07XG4gICAgICB9KVxuICAgIH07XG4gIH07XG5cbiAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgb3BlcmF0aW9ucy5sZW5ndGg7IF9pMisrKSB7XG4gICAgX2xvb3AoX2kyKTtcbiAgfVxuXG4gIHJldHVybiBzZXBhcmF0ZWREb2N1bWVudEFTVHM7XG59XG5cbi8vIFByb3ZpZGVzIHRoZSBlbXB0eSBzdHJpbmcgZm9yIGFub255bW91cyBvcGVyYXRpb25zLlxuZnVuY3Rpb24gb3BOYW1lKG9wZXJhdGlvbikge1xuICByZXR1cm4gb3BlcmF0aW9uLm5hbWUgPyBvcGVyYXRpb24ubmFtZS52YWx1ZSA6ICcnO1xufSAvLyBGcm9tIGEgZGVwZW5kZW5jeSBncmFwaCwgY29sbGVjdHMgYSBsaXN0IG9mIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzIGJ5XG4vLyByZWN1cnNpbmcgdGhyb3VnaCBhIGRlcGVuZGVuY3kgZ3JhcGguXG5cblxuZnVuY3Rpb24gY29sbGVjdFRyYW5zaXRpdmVEZXBlbmRlbmNpZXMoY29sbGVjdGVkLCBkZXBHcmFwaCwgZnJvbU5hbWUpIHtcbiAgdmFyIGltbWVkaWF0ZURlcHMgPSBkZXBHcmFwaFtmcm9tTmFtZV07XG5cbiAgaWYgKGltbWVkaWF0ZURlcHMpIHtcbiAgICBmb3IgKHZhciBfaTQgPSAwLCBfT2JqZWN0JGtleXMyID0gT2JqZWN0LmtleXMoaW1tZWRpYXRlRGVwcyk7IF9pNCA8IF9PYmplY3Qka2V5czIubGVuZ3RoOyBfaTQrKykge1xuICAgICAgdmFyIHRvTmFtZSA9IF9PYmplY3Qka2V5czJbX2k0XTtcblxuICAgICAgaWYgKCFjb2xsZWN0ZWRbdG9OYW1lXSkge1xuICAgICAgICBjb2xsZWN0ZWRbdG9OYW1lXSA9IHRydWU7XG4gICAgICAgIGNvbGxlY3RUcmFuc2l0aXZlRGVwZW5kZW5jaWVzKGNvbGxlY3RlZCwgZGVwR3JhcGgsIHRvTmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/separateOperations.mjs\n");
1293
1294/***/ }),
1295
1296/***/ "../../../node_modules/graphql/utilities/stripIgnoredCharacters.mjs":
1297/*!*****************************************************************************************************!*\
1298 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/stripIgnoredCharacters.mjs ***!
1299 \*****************************************************************************************************/
1300/*! exports provided: stripIgnoredCharacters */
1301/***/ (function(module, __webpack_exports__, __webpack_require__) {
1302
1303"use strict";
1304eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stripIgnoredCharacters\", function() { return stripIgnoredCharacters; });\n/* harmony import */ var _language_source_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/source.mjs */ \"../../../node_modules/graphql/language/source.mjs\");\n/* harmony import */ var _language_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/tokenKind.mjs */ \"../../../node_modules/graphql/language/tokenKind.mjs\");\n/* harmony import */ var _language_lexer_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/lexer.mjs */ \"../../../node_modules/graphql/language/lexer.mjs\");\n/* harmony import */ var _language_blockString_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../language/blockString.mjs */ \"../../../node_modules/graphql/language/blockString.mjs\");\n\n\n\n\n/**\n * Strips characters that are not significant to the validity or execution\n * of a GraphQL document:\n * - UnicodeBOM\n * - WhiteSpace\n * - LineTerminator\n * - Comment\n * - Comma\n * - BlockString indentation\n *\n * Note: It is required to have a delimiter character between neighboring\n * non-punctuator tokens and this function always uses single space as delimiter.\n *\n * It is guaranteed that both input and output documents if parsed would result\n * in the exact same AST except for nodes location.\n *\n * Warning: It is guaranteed that this function will always produce stable results.\n * However, it's not guaranteed that it will stay the same between different\n * releases due to bugfixes or changes in the GraphQL specification.\n *\n * Query example:\n *\n * query SomeQuery($foo: String!, $bar: String) {\n * someField(foo: $foo, bar: $bar) {\n * a\n * b {\n * c\n * d\n * }\n * }\n * }\n *\n * Becomes:\n *\n * query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}}\n *\n * SDL example:\n *\n * \"\"\"\n * Type description\n * \"\"\"\n * type Foo {\n * \"\"\"\n * Field description\n * \"\"\"\n * bar: String\n * }\n *\n * Becomes:\n *\n * \"\"\"Type description\"\"\" type Foo{\"\"\"Field description\"\"\" bar:String}\n */\n\nfunction stripIgnoredCharacters(source) {\n var sourceObj = Object(_language_source_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isSource\"])(source) ? source : new _language_source_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Source\"](source);\n var body = sourceObj.body;\n var lexer = new _language_lexer_mjs__WEBPACK_IMPORTED_MODULE_2__[\"Lexer\"](sourceObj);\n var strippedBody = '';\n var wasLastAddedTokenNonPunctuator = false;\n\n while (lexer.advance().kind !== _language_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__[\"TokenKind\"].EOF) {\n var currentToken = lexer.token;\n var tokenKind = currentToken.kind;\n /**\n * Every two non-punctuator tokens should have space between them.\n * Also prevent case of non-punctuator token following by spread resulting\n * in invalid token (e.g. `1...` is invalid Float token).\n */\n\n var isNonPunctuator = !Object(_language_lexer_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isPunctuatorTokenKind\"])(currentToken.kind);\n\n if (wasLastAddedTokenNonPunctuator) {\n if (isNonPunctuator || currentToken.kind === _language_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__[\"TokenKind\"].SPREAD) {\n strippedBody += ' ';\n }\n }\n\n var tokenBody = body.slice(currentToken.start, currentToken.end);\n\n if (tokenKind === _language_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__[\"TokenKind\"].BLOCK_STRING) {\n strippedBody += dedentBlockString(tokenBody);\n } else {\n strippedBody += tokenBody;\n }\n\n wasLastAddedTokenNonPunctuator = isNonPunctuator;\n }\n\n return strippedBody;\n}\n\nfunction dedentBlockString(blockStr) {\n // skip leading and trailing triple quotations\n var rawStr = blockStr.slice(3, -3);\n var body = Object(_language_blockString_mjs__WEBPACK_IMPORTED_MODULE_3__[\"dedentBlockStringValue\"])(rawStr);\n\n if (Object(_language_blockString_mjs__WEBPACK_IMPORTED_MODULE_3__[\"getBlockStringIndentation\"])(body) > 0) {\n body = '\\n' + body;\n }\n\n var lastChar = body[body.length - 1];\n var hasTrailingQuote = lastChar === '\"' && body.slice(-4) !== '\\\\\"\"\"';\n\n if (hasTrailingQuote || lastChar === '\\\\') {\n body += '\\n';\n }\n\n return '\"\"\"' + body + '\"\"\"';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3N0cmlwSWdub3JlZENoYXJhY3RlcnMubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3N0cmlwSWdub3JlZENoYXJhY3RlcnMubWpzPzg5NTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU291cmNlLCBpc1NvdXJjZSB9IGZyb20gXCIuLi9sYW5ndWFnZS9zb3VyY2UubWpzXCI7XG5pbXBvcnQgeyBUb2tlbktpbmQgfSBmcm9tIFwiLi4vbGFuZ3VhZ2UvdG9rZW5LaW5kLm1qc1wiO1xuaW1wb3J0IHsgTGV4ZXIsIGlzUHVuY3R1YXRvclRva2VuS2luZCB9IGZyb20gXCIuLi9sYW5ndWFnZS9sZXhlci5tanNcIjtcbmltcG9ydCB7IGRlZGVudEJsb2NrU3RyaW5nVmFsdWUsIGdldEJsb2NrU3RyaW5nSW5kZW50YXRpb24gfSBmcm9tIFwiLi4vbGFuZ3VhZ2UvYmxvY2tTdHJpbmcubWpzXCI7XG4vKipcbiAqIFN0cmlwcyBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBzaWduaWZpY2FudCB0byB0aGUgdmFsaWRpdHkgb3IgZXhlY3V0aW9uXG4gKiBvZiBhIEdyYXBoUUwgZG9jdW1lbnQ6XG4gKiAgIC0gVW5pY29kZUJPTVxuICogICAtIFdoaXRlU3BhY2VcbiAqICAgLSBMaW5lVGVybWluYXRvclxuICogICAtIENvbW1lbnRcbiAqICAgLSBDb21tYVxuICogICAtIEJsb2NrU3RyaW5nIGluZGVudGF0aW9uXG4gKlxuICogTm90ZTogSXQgaXMgcmVxdWlyZWQgdG8gaGF2ZSBhIGRlbGltaXRlciBjaGFyYWN0ZXIgYmV0d2VlbiBuZWlnaGJvcmluZ1xuICogbm9uLXB1bmN0dWF0b3IgdG9rZW5zIGFuZCB0aGlzIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHNpbmdsZSBzcGFjZSBhcyBkZWxpbWl0ZXIuXG4gKlxuICogSXQgaXMgZ3VhcmFudGVlZCB0aGF0IGJvdGggaW5wdXQgYW5kIG91dHB1dCBkb2N1bWVudHMgaWYgcGFyc2VkIHdvdWxkIHJlc3VsdFxuICogaW4gdGhlIGV4YWN0IHNhbWUgQVNUIGV4Y2VwdCBmb3Igbm9kZXMgbG9jYXRpb24uXG4gKlxuICogV2FybmluZzogSXQgaXMgZ3VhcmFudGVlZCB0aGF0IHRoaXMgZnVuY3Rpb24gd2lsbCBhbHdheXMgcHJvZHVjZSBzdGFibGUgcmVzdWx0cy5cbiAqIEhvd2V2ZXIsIGl0J3Mgbm90IGd1YXJhbnRlZWQgdGhhdCBpdCB3aWxsIHN0YXkgdGhlIHNhbWUgYmV0d2VlbiBkaWZmZXJlbnRcbiAqIHJlbGVhc2VzIGR1ZSB0byBidWdmaXhlcyBvciBjaGFuZ2VzIGluIHRoZSBHcmFwaFFMIHNwZWNpZmljYXRpb24uXG4gKlxuICogUXVlcnkgZXhhbXBsZTpcbiAqXG4gKiBxdWVyeSBTb21lUXVlcnkoJGZvbzogU3RyaW5nISwgJGJhcjogU3RyaW5nKSB7XG4gKiAgIHNvbWVGaWVsZChmb286ICRmb28sIGJhcjogJGJhcikge1xuICogICAgIGFcbiAqICAgICBiIHtcbiAqICAgICAgIGNcbiAqICAgICAgIGRcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBCZWNvbWVzOlxuICpcbiAqIHF1ZXJ5IFNvbWVRdWVyeSgkZm9vOlN0cmluZyEkYmFyOlN0cmluZyl7c29tZUZpZWxkKGZvbzokZm9vIGJhcjokYmFyKXthIGJ7YyBkfX19XG4gKlxuICogU0RMIGV4YW1wbGU6XG4gKlxuICogXCJcIlwiXG4gKiBUeXBlIGRlc2NyaXB0aW9uXG4gKiBcIlwiXCJcbiAqIHR5cGUgRm9vIHtcbiAqICAgXCJcIlwiXG4gKiAgIEZpZWxkIGRlc2NyaXB0aW9uXG4gKiAgIFwiXCJcIlxuICogICBiYXI6IFN0cmluZ1xuICogfVxuICpcbiAqIEJlY29tZXM6XG4gKlxuICogXCJcIlwiVHlwZSBkZXNjcmlwdGlvblwiXCJcIiB0eXBlIEZvb3tcIlwiXCJGaWVsZCBkZXNjcmlwdGlvblwiXCJcIiBiYXI6U3RyaW5nfVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcElnbm9yZWRDaGFyYWN0ZXJzKHNvdXJjZSkge1xuICB2YXIgc291cmNlT2JqID0gaXNTb3VyY2Uoc291cmNlKSA/IHNvdXJjZSA6IG5ldyBTb3VyY2Uoc291cmNlKTtcbiAgdmFyIGJvZHkgPSBzb3VyY2VPYmouYm9keTtcbiAgdmFyIGxleGVyID0gbmV3IExleGVyKHNvdXJjZU9iaik7XG4gIHZhciBzdHJpcHBlZEJvZHkgPSAnJztcbiAgdmFyIHdhc0xhc3RBZGRlZFRva2VuTm9uUHVuY3R1YXRvciA9IGZhbHNlO1xuXG4gIHdoaWxlIChsZXhlci5hZHZhbmNlKCkua2luZCAhPT0gVG9rZW5LaW5kLkVPRikge1xuICAgIHZhciBjdXJyZW50VG9rZW4gPSBsZXhlci50b2tlbjtcbiAgICB2YXIgdG9rZW5LaW5kID0gY3VycmVudFRva2VuLmtpbmQ7XG4gICAgLyoqXG4gICAgICogRXZlcnkgdHdvIG5vbi1wdW5jdHVhdG9yIHRva2VucyBzaG91bGQgaGF2ZSBzcGFjZSBiZXR3ZWVuIHRoZW0uXG4gICAgICogQWxzbyBwcmV2ZW50IGNhc2Ugb2Ygbm9uLXB1bmN0dWF0b3IgdG9rZW4gZm9sbG93aW5nIGJ5IHNwcmVhZCByZXN1bHRpbmdcbiAgICAgKiBpbiBpbnZhbGlkIHRva2VuIChlLmcuIGAxLi4uYCBpcyBpbnZhbGlkIEZsb2F0IHRva2VuKS5cbiAgICAgKi9cblxuICAgIHZhciBpc05vblB1bmN0dWF0b3IgPSAhaXNQdW5jdHVhdG9yVG9rZW5LaW5kKGN1cnJlbnRUb2tlbi5raW5kKTtcblxuICAgIGlmICh3YXNMYXN0QWRkZWRUb2tlbk5vblB1bmN0dWF0b3IpIHtcbiAgICAgIGlmIChpc05vblB1bmN0dWF0b3IgfHwgY3VycmVudFRva2VuLmtpbmQgPT09IFRva2VuS2luZC5TUFJFQUQpIHtcbiAgICAgICAgc3RyaXBwZWRCb2R5ICs9ICcgJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdG9rZW5Cb2R5ID0gYm9keS5zbGljZShjdXJyZW50VG9rZW4uc3RhcnQsIGN1cnJlbnRUb2tlbi5lbmQpO1xuXG4gICAgaWYgKHRva2VuS2luZCA9PT0gVG9rZW5LaW5kLkJMT0NLX1NUUklORykge1xuICAgICAgc3RyaXBwZWRCb2R5ICs9IGRlZGVudEJsb2NrU3RyaW5nKHRva2VuQm9keSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmlwcGVkQm9keSArPSB0b2tlbkJvZHk7XG4gICAgfVxuXG4gICAgd2FzTGFzdEFkZGVkVG9rZW5Ob25QdW5jdHVhdG9yID0gaXNOb25QdW5jdHVhdG9yO1xuICB9XG5cbiAgcmV0dXJuIHN0cmlwcGVkQm9keTtcbn1cblxuZnVuY3Rpb24gZGVkZW50QmxvY2tTdHJpbmcoYmxvY2tTdHIpIHtcbiAgLy8gc2tpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyB0cmlwbGUgcXVvdGF0aW9uc1xuICB2YXIgcmF3U3RyID0gYmxvY2tTdHIuc2xpY2UoMywgLTMpO1xuICB2YXIgYm9keSA9IGRlZGVudEJsb2NrU3RyaW5nVmFsdWUocmF3U3RyKTtcblxuICBpZiAoZ2V0QmxvY2tTdHJpbmdJbmRlbnRhdGlvbihib2R5KSA+IDApIHtcbiAgICBib2R5ID0gJ1xcbicgKyBib2R5O1xuICB9XG5cbiAgdmFyIGxhc3RDaGFyID0gYm9keVtib2R5Lmxlbmd0aCAtIDFdO1xuICB2YXIgaGFzVHJhaWxpbmdRdW90ZSA9IGxhc3RDaGFyID09PSAnXCInICYmIGJvZHkuc2xpY2UoLTQpICE9PSAnXFxcXFwiXCJcIic7XG5cbiAgaWYgKGhhc1RyYWlsaW5nUXVvdGUgfHwgbGFzdENoYXIgPT09ICdcXFxcJykge1xuICAgIGJvZHkgKz0gJ1xcbic7XG4gIH1cblxuICByZXR1cm4gJ1wiXCJcIicgKyBib2R5ICsgJ1wiXCJcIic7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/stripIgnoredCharacters.mjs\n");
1305
1306/***/ }),
1307
1308/***/ "../../../node_modules/graphql/utilities/typeComparators.mjs":
1309/*!**********************************************************************************************!*\
1310 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/typeComparators.mjs ***!
1311 \**********************************************************************************************/
1312/*! exports provided: isEqualType, isTypeSubTypeOf, doTypesOverlap */
1313/***/ (function(module, __webpack_exports__, __webpack_require__) {
1314
1315"use strict";
1316eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isEqualType\", function() { return isEqualType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypeSubTypeOf\", function() { return isTypeSubTypeOf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"doTypesOverlap\", function() { return doTypesOverlap; });\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n/**\n * Provided two types, return true if the types are equal (invariant).\n */\n\nfunction isEqualType(typeA, typeB) {\n // Equivalent types are equal.\n if (typeA === typeB) {\n return true;\n } // If either type is non-null, the other must also be non-null.\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isNonNullType\"])(typeA) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isNonNullType\"])(typeB)) {\n return isEqualType(typeA.ofType, typeB.ofType);\n } // If either type is a list, the other must also be a list.\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isListType\"])(typeA) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isListType\"])(typeB)) {\n return isEqualType(typeA.ofType, typeB.ofType);\n } // Otherwise the types are not equal.\n\n\n return false;\n}\n/**\n * Provided a type and a super type, return true if the first type is either\n * equal or a subset of the second super type (covariant).\n */\n\nfunction isTypeSubTypeOf(schema, maybeSubType, superType) {\n // Equivalent type is a valid subtype\n if (maybeSubType === superType) {\n return true;\n } // If superType is non-null, maybeSubType must also be non-null.\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isNonNullType\"])(superType)) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isNonNullType\"])(maybeSubType)) {\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n }\n\n return false;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isNonNullType\"])(maybeSubType)) {\n // If superType is nullable, maybeSubType may be non-null or nullable.\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType);\n } // If superType type is a list, maybeSubType type must also be a list.\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isListType\"])(superType)) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isListType\"])(maybeSubType)) {\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n }\n\n return false;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isListType\"])(maybeSubType)) {\n // If superType is not a list, maybeSubType must also be not a list.\n return false;\n } // If superType type is an abstract type, check if it is super type of maybeSubType.\n // Otherwise, the child type is not a valid subtype of the parent type.\n\n\n return Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isAbstractType\"])(superType) && (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isInterfaceType\"])(maybeSubType) || Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isObjectType\"])(maybeSubType)) && schema.isSubType(superType, maybeSubType);\n}\n/**\n * Provided two composite types, determine if they \"overlap\". Two composite\n * types overlap when the Sets of possible concrete types for each intersect.\n *\n * This is often used to determine if a fragment of a given type could possibly\n * be visited in a context of another type.\n *\n * This function is commutative.\n */\n\nfunction doTypesOverlap(schema, typeA, typeB) {\n // Equivalent types overlap\n if (typeA === typeB) {\n return true;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isAbstractType\"])(typeA)) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isAbstractType\"])(typeB)) {\n // If both types are abstract, then determine if there is any intersection\n // between possible concrete types of each.\n return schema.getPossibleTypes(typeA).some(function (type) {\n return schema.isSubType(typeB, type);\n });\n } // Determine if the latter type is a possible concrete type of the former.\n\n\n return schema.isSubType(typeA, typeB);\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__[\"isAbstractType\"])(typeB)) {\n // Determine if the former type is a possible concrete type of the latter.\n return schema.isSubType(typeB, typeA);\n } // Otherwise the types do not overlap.\n\n\n return false;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3R5cGVDb21wYXJhdG9ycy5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvdHlwZUNvbXBhcmF0b3JzLm1qcz8yNGMwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzSW50ZXJmYWNlVHlwZSwgaXNPYmplY3RUeXBlLCBpc0xpc3RUeXBlLCBpc05vbk51bGxUeXBlLCBpc0Fic3RyYWN0VHlwZSB9IGZyb20gXCIuLi90eXBlL2RlZmluaXRpb24ubWpzXCI7XG4vKipcbiAqIFByb3ZpZGVkIHR3byB0eXBlcywgcmV0dXJuIHRydWUgaWYgdGhlIHR5cGVzIGFyZSBlcXVhbCAoaW52YXJpYW50KS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNFcXVhbFR5cGUodHlwZUEsIHR5cGVCKSB7XG4gIC8vIEVxdWl2YWxlbnQgdHlwZXMgYXJlIGVxdWFsLlxuICBpZiAodHlwZUEgPT09IHR5cGVCKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gSWYgZWl0aGVyIHR5cGUgaXMgbm9uLW51bGwsIHRoZSBvdGhlciBtdXN0IGFsc28gYmUgbm9uLW51bGwuXG5cblxuICBpZiAoaXNOb25OdWxsVHlwZSh0eXBlQSkgJiYgaXNOb25OdWxsVHlwZSh0eXBlQikpIHtcbiAgICByZXR1cm4gaXNFcXVhbFR5cGUodHlwZUEub2ZUeXBlLCB0eXBlQi5vZlR5cGUpO1xuICB9IC8vIElmIGVpdGhlciB0eXBlIGlzIGEgbGlzdCwgdGhlIG90aGVyIG11c3QgYWxzbyBiZSBhIGxpc3QuXG5cblxuICBpZiAoaXNMaXN0VHlwZSh0eXBlQSkgJiYgaXNMaXN0VHlwZSh0eXBlQikpIHtcbiAgICByZXR1cm4gaXNFcXVhbFR5cGUodHlwZUEub2ZUeXBlLCB0eXBlQi5vZlR5cGUpO1xuICB9IC8vIE90aGVyd2lzZSB0aGUgdHlwZXMgYXJlIG5vdCBlcXVhbC5cblxuXG4gIHJldHVybiBmYWxzZTtcbn1cbi8qKlxuICogUHJvdmlkZWQgYSB0eXBlIGFuZCBhIHN1cGVyIHR5cGUsIHJldHVybiB0cnVlIGlmIHRoZSBmaXJzdCB0eXBlIGlzIGVpdGhlclxuICogZXF1YWwgb3IgYSBzdWJzZXQgb2YgdGhlIHNlY29uZCBzdXBlciB0eXBlIChjb3ZhcmlhbnQpLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGVTdWJUeXBlT2Yoc2NoZW1hLCBtYXliZVN1YlR5cGUsIHN1cGVyVHlwZSkge1xuICAvLyBFcXVpdmFsZW50IHR5cGUgaXMgYSB2YWxpZCBzdWJ0eXBlXG4gIGlmIChtYXliZVN1YlR5cGUgPT09IHN1cGVyVHlwZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIElmIHN1cGVyVHlwZSBpcyBub24tbnVsbCwgbWF5YmVTdWJUeXBlIG11c3QgYWxzbyBiZSBub24tbnVsbC5cblxuXG4gIGlmIChpc05vbk51bGxUeXBlKHN1cGVyVHlwZSkpIHtcbiAgICBpZiAoaXNOb25OdWxsVHlwZShtYXliZVN1YlR5cGUpKSB7XG4gICAgICByZXR1cm4gaXNUeXBlU3ViVHlwZU9mKHNjaGVtYSwgbWF5YmVTdWJUeXBlLm9mVHlwZSwgc3VwZXJUeXBlLm9mVHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGlzTm9uTnVsbFR5cGUobWF5YmVTdWJUeXBlKSkge1xuICAgIC8vIElmIHN1cGVyVHlwZSBpcyBudWxsYWJsZSwgbWF5YmVTdWJUeXBlIG1heSBiZSBub24tbnVsbCBvciBudWxsYWJsZS5cbiAgICByZXR1cm4gaXNUeXBlU3ViVHlwZU9mKHNjaGVtYSwgbWF5YmVTdWJUeXBlLm9mVHlwZSwgc3VwZXJUeXBlKTtcbiAgfSAvLyBJZiBzdXBlclR5cGUgdHlwZSBpcyBhIGxpc3QsIG1heWJlU3ViVHlwZSB0eXBlIG11c3QgYWxzbyBiZSBhIGxpc3QuXG5cblxuICBpZiAoaXNMaXN0VHlwZShzdXBlclR5cGUpKSB7XG4gICAgaWYgKGlzTGlzdFR5cGUobWF5YmVTdWJUeXBlKSkge1xuICAgICAgcmV0dXJuIGlzVHlwZVN1YlR5cGVPZihzY2hlbWEsIG1heWJlU3ViVHlwZS5vZlR5cGUsIHN1cGVyVHlwZS5vZlR5cGUpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChpc0xpc3RUeXBlKG1heWJlU3ViVHlwZSkpIHtcbiAgICAvLyBJZiBzdXBlclR5cGUgaXMgbm90IGEgbGlzdCwgbWF5YmVTdWJUeXBlIG11c3QgYWxzbyBiZSBub3QgYSBsaXN0LlxuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyBJZiBzdXBlclR5cGUgdHlwZSBpcyBhbiBhYnN0cmFjdCB0eXBlLCBjaGVjayBpZiBpdCBpcyBzdXBlciB0eXBlIG9mIG1heWJlU3ViVHlwZS5cbiAgLy8gT3RoZXJ3aXNlLCB0aGUgY2hpbGQgdHlwZSBpcyBub3QgYSB2YWxpZCBzdWJ0eXBlIG9mIHRoZSBwYXJlbnQgdHlwZS5cblxuXG4gIHJldHVybiBpc0Fic3RyYWN0VHlwZShzdXBlclR5cGUpICYmIChpc0ludGVyZmFjZVR5cGUobWF5YmVTdWJUeXBlKSB8fCBpc09iamVjdFR5cGUobWF5YmVTdWJUeXBlKSkgJiYgc2NoZW1hLmlzU3ViVHlwZShzdXBlclR5cGUsIG1heWJlU3ViVHlwZSk7XG59XG4vKipcbiAqIFByb3ZpZGVkIHR3byBjb21wb3NpdGUgdHlwZXMsIGRldGVybWluZSBpZiB0aGV5IFwib3ZlcmxhcFwiLiBUd28gY29tcG9zaXRlXG4gKiB0eXBlcyBvdmVybGFwIHdoZW4gdGhlIFNldHMgb2YgcG9zc2libGUgY29uY3JldGUgdHlwZXMgZm9yIGVhY2ggaW50ZXJzZWN0LlxuICpcbiAqIFRoaXMgaXMgb2Z0ZW4gdXNlZCB0byBkZXRlcm1pbmUgaWYgYSBmcmFnbWVudCBvZiBhIGdpdmVuIHR5cGUgY291bGQgcG9zc2libHlcbiAqIGJlIHZpc2l0ZWQgaW4gYSBjb250ZXh0IG9mIGFub3RoZXIgdHlwZS5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGNvbW11dGF0aXZlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBkb1R5cGVzT3ZlcmxhcChzY2hlbWEsIHR5cGVBLCB0eXBlQikge1xuICAvLyBFcXVpdmFsZW50IHR5cGVzIG92ZXJsYXBcbiAgaWYgKHR5cGVBID09PSB0eXBlQikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKGlzQWJzdHJhY3RUeXBlKHR5cGVBKSkge1xuICAgIGlmIChpc0Fic3RyYWN0VHlwZSh0eXBlQikpIHtcbiAgICAgIC8vIElmIGJvdGggdHlwZXMgYXJlIGFic3RyYWN0LCB0aGVuIGRldGVybWluZSBpZiB0aGVyZSBpcyBhbnkgaW50ZXJzZWN0aW9uXG4gICAgICAvLyBiZXR3ZWVuIHBvc3NpYmxlIGNvbmNyZXRlIHR5cGVzIG9mIGVhY2guXG4gICAgICByZXR1cm4gc2NoZW1hLmdldFBvc3NpYmxlVHlwZXModHlwZUEpLnNvbWUoZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYS5pc1N1YlR5cGUodHlwZUIsIHR5cGUpO1xuICAgICAgfSk7XG4gICAgfSAvLyBEZXRlcm1pbmUgaWYgdGhlIGxhdHRlciB0eXBlIGlzIGEgcG9zc2libGUgY29uY3JldGUgdHlwZSBvZiB0aGUgZm9ybWVyLlxuXG5cbiAgICByZXR1cm4gc2NoZW1hLmlzU3ViVHlwZSh0eXBlQSwgdHlwZUIpO1xuICB9XG5cbiAgaWYgKGlzQWJzdHJhY3RUeXBlKHR5cGVCKSkge1xuICAgIC8vIERldGVybWluZSBpZiB0aGUgZm9ybWVyIHR5cGUgaXMgYSBwb3NzaWJsZSBjb25jcmV0ZSB0eXBlIG9mIHRoZSBsYXR0ZXIuXG4gICAgcmV0dXJuIHNjaGVtYS5pc1N1YlR5cGUodHlwZUIsIHR5cGVBKTtcbiAgfSAvLyBPdGhlcndpc2UgdGhlIHR5cGVzIGRvIG5vdCBvdmVybGFwLlxuXG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/typeComparators.mjs\n");
1317
1318/***/ }),
1319
1320/***/ "../../../node_modules/graphql/utilities/typeFromAST.mjs":
1321/*!******************************************************************************************!*\
1322 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/typeFromAST.mjs ***!
1323 \******************************************************************************************/
1324/*! exports provided: typeFromAST */
1325/***/ (function(module, __webpack_exports__, __webpack_require__) {
1326
1327"use strict";
1328eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"typeFromAST\", function() { return typeFromAST; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n/**\n * Given a Schema and an AST node describing a type, return a GraphQLType\n * definition which applies to that type. For example, if provided the parsed\n * AST node for `[User]`, a GraphQLList instance will be returned, containing\n * the type called \"User\" found in the schema. If a type called \"User\" is not\n * found in the schema, then undefined will be returned.\n */\n\n/* eslint-disable no-redeclare */\n\nfunction typeFromAST(schema, typeNode) {\n /* eslint-enable no-redeclare */\n var innerType;\n\n if (typeNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_2__[\"Kind\"].LIST_TYPE) {\n innerType = typeFromAST(schema, typeNode.type);\n return innerType && new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLList\"](innerType);\n }\n\n if (typeNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_2__[\"Kind\"].NON_NULL_TYPE) {\n innerType = typeFromAST(schema, typeNode.type);\n return innerType && new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLNonNull\"](innerType);\n } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')\n\n\n if (typeNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_2__[\"Kind\"].NAMED_TYPE) {\n return schema.getType(typeNode.name.value);\n } // istanbul ignore next (Not reachable. All possible type nodes have been considered)\n\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(0, 'Unexpected type node: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(typeNode));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3R5cGVGcm9tQVNULm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy90eXBlRnJvbUFTVC5tanM/MmVjOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5zcGVjdCBmcm9tIFwiLi4vanN1dGlscy9pbnNwZWN0Lm1qc1wiO1xuaW1wb3J0IGludmFyaWFudCBmcm9tIFwiLi4vanN1dGlscy9pbnZhcmlhbnQubWpzXCI7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSBcIi4uL2xhbmd1YWdlL2tpbmRzLm1qc1wiO1xuaW1wb3J0IHsgR3JhcGhRTExpc3QsIEdyYXBoUUxOb25OdWxsIH0gZnJvbSBcIi4uL3R5cGUvZGVmaW5pdGlvbi5tanNcIjtcbi8qKlxuICogR2l2ZW4gYSBTY2hlbWEgYW5kIGFuIEFTVCBub2RlIGRlc2NyaWJpbmcgYSB0eXBlLCByZXR1cm4gYSBHcmFwaFFMVHlwZVxuICogZGVmaW5pdGlvbiB3aGljaCBhcHBsaWVzIHRvIHRoYXQgdHlwZS4gRm9yIGV4YW1wbGUsIGlmIHByb3ZpZGVkIHRoZSBwYXJzZWRcbiAqIEFTVCBub2RlIGZvciBgW1VzZXJdYCwgYSBHcmFwaFFMTGlzdCBpbnN0YW5jZSB3aWxsIGJlIHJldHVybmVkLCBjb250YWluaW5nXG4gKiB0aGUgdHlwZSBjYWxsZWQgXCJVc2VyXCIgZm91bmQgaW4gdGhlIHNjaGVtYS4gSWYgYSB0eXBlIGNhbGxlZCBcIlVzZXJcIiBpcyBub3RcbiAqIGZvdW5kIGluIHRoZSBzY2hlbWEsIHRoZW4gdW5kZWZpbmVkIHdpbGwgYmUgcmV0dXJuZWQuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgbm8tcmVkZWNsYXJlICovXG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUFTVChzY2hlbWEsIHR5cGVOb2RlKSB7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tcmVkZWNsYXJlICovXG4gIHZhciBpbm5lclR5cGU7XG5cbiAgaWYgKHR5cGVOb2RlLmtpbmQgPT09IEtpbmQuTElTVF9UWVBFKSB7XG4gICAgaW5uZXJUeXBlID0gdHlwZUZyb21BU1Qoc2NoZW1hLCB0eXBlTm9kZS50eXBlKTtcbiAgICByZXR1cm4gaW5uZXJUeXBlICYmIG5ldyBHcmFwaFFMTGlzdChpbm5lclR5cGUpO1xuICB9XG5cbiAgaWYgKHR5cGVOb2RlLmtpbmQgPT09IEtpbmQuTk9OX05VTExfVFlQRSkge1xuICAgIGlubmVyVHlwZSA9IHR5cGVGcm9tQVNUKHNjaGVtYSwgdHlwZU5vZGUudHlwZSk7XG4gICAgcmV0dXJuIGlubmVyVHlwZSAmJiBuZXcgR3JhcGhRTE5vbk51bGwoaW5uZXJUeXBlKTtcbiAgfSAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjYxOCcpXG5cblxuICBpZiAodHlwZU5vZGUua2luZCA9PT0gS2luZC5OQU1FRF9UWVBFKSB7XG4gICAgcmV0dXJuIHNjaGVtYS5nZXRUeXBlKHR5cGVOb2RlLm5hbWUudmFsdWUpO1xuICB9IC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChOb3QgcmVhY2hhYmxlLiBBbGwgcG9zc2libGUgdHlwZSBub2RlcyBoYXZlIGJlZW4gY29uc2lkZXJlZClcblxuXG4gIGZhbHNlIHx8IGludmFyaWFudCgwLCAnVW5leHBlY3RlZCB0eXBlIG5vZGU6ICcgKyBpbnNwZWN0KHR5cGVOb2RlKSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/typeFromAST.mjs\n");
1329
1330/***/ }),
1331
1332/***/ "../../../node_modules/graphql/utilities/valueFromAST.mjs":
1333/*!*******************************************************************************************!*\
1334 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/valueFromAST.mjs ***!
1335 \*******************************************************************************************/
1336/*! exports provided: valueFromAST */
1337/***/ (function(module, __webpack_exports__, __webpack_require__) {
1338
1339"use strict";
1340eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"valueFromAST\", function() { return valueFromAST; });\n/* harmony import */ var _polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../polyfills/objectValues.mjs */ \"../../../node_modules/graphql/polyfills/objectValues.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * GraphQL Value literals.\n *\n * Returns `undefined` when the value could not be validly coerced according to\n * the provided type.\n *\n * | GraphQL Value | JSON Value |\n * | -------------------- | ------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String | String |\n * | Int / Float | Number |\n * | Enum Value | Mixed |\n * | NullValue | null |\n *\n */\n\nfunction valueFromAST(valueNode, type, variables) {\n if (!valueNode) {\n // When there is no node, then there is also no value.\n // Importantly, this is different from returning the value null.\n return;\n }\n\n if (valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].VARIABLE) {\n var variableName = valueNode.name.value;\n\n if (variables == null || variables[variableName] === undefined) {\n // No valid return value.\n return;\n }\n\n var variableValue = variables[variableName];\n\n if (variableValue === null && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isNonNullType\"])(type)) {\n return; // Invalid: intentionally return no value.\n } // Note: This does no further checking that this variable is correct.\n // This assumes that this query has been validated and the variable\n // usage here is of the correct type.\n\n\n return variableValue;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isNonNullType\"])(type)) {\n if (valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].NULL) {\n return; // Invalid: intentionally return no value.\n }\n\n return valueFromAST(valueNode, type.ofType, variables);\n }\n\n if (valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].NULL) {\n // This is explicitly returning the value null.\n return null;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isListType\"])(type)) {\n var itemType = type.ofType;\n\n if (valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].LIST) {\n var coercedValues = [];\n\n for (var _i2 = 0, _valueNode$values2 = valueNode.values; _i2 < _valueNode$values2.length; _i2++) {\n var itemNode = _valueNode$values2[_i2];\n\n if (isMissingVariable(itemNode, variables)) {\n // If an array contains a missing variable, it is either coerced to\n // null or if the item type is non-null, it considered invalid.\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isNonNullType\"])(itemType)) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedValues.push(null);\n } else {\n var itemValue = valueFromAST(itemNode, itemType, variables);\n\n if (itemValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedValues.push(itemValue);\n }\n }\n\n return coercedValues;\n }\n\n var coercedValue = valueFromAST(valueNode, itemType, variables);\n\n if (coercedValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n return [coercedValue];\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isInputObjectType\"])(type)) {\n if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].OBJECT) {\n return; // Invalid: intentionally return no value.\n }\n\n var coercedObj = Object.create(null);\n var fieldNodes = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(valueNode.fields, function (field) {\n return field.name.value;\n });\n\n for (var _i4 = 0, _objectValues2 = Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(type.getFields()); _i4 < _objectValues2.length; _i4++) {\n var field = _objectValues2[_i4];\n var fieldNode = fieldNodes[field.name];\n\n if (!fieldNode || isMissingVariable(fieldNode.value, variables)) {\n if (field.defaultValue !== undefined) {\n coercedObj[field.name] = field.defaultValue;\n } else if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isNonNullType\"])(field.type)) {\n return; // Invalid: intentionally return no value.\n }\n\n continue;\n }\n\n var fieldValue = valueFromAST(fieldNode.value, field.type, variables);\n\n if (fieldValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedObj[field.name] = fieldValue;\n }\n\n return coercedObj;\n } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isLeafType\"])(type)) {\n // Scalars and Enums fulfill parsing a literal value via parseLiteral().\n // Invalid values represent a failure to parse correctly, in which case\n // no value is returned.\n var result;\n\n try {\n result = type.parseLiteral(valueNode, variables);\n } catch (_error) {\n return; // Invalid: intentionally return no value.\n }\n\n if (result === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n return result;\n } // istanbul ignore next (Not reachable. All possible input types have been considered)\n\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(0, 'Unexpected input type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type));\n} // Returns true if the provided valueNode is a variable which is not defined\n// in the set of variables.\n\nfunction isMissingVariable(valueNode, variables) {\n return valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].VARIABLE && (variables == null || variables[valueNode.name.value] === undefined);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3ZhbHVlRnJvbUFTVC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvdmFsdWVGcm9tQVNULm1qcz9mZGM5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBvYmplY3RWYWx1ZXMgZnJvbSBcIi4uL3BvbHlmaWxscy9vYmplY3RWYWx1ZXMubWpzXCI7XG5pbXBvcnQga2V5TWFwIGZyb20gXCIuLi9qc3V0aWxzL2tleU1hcC5tanNcIjtcbmltcG9ydCBpbnNwZWN0IGZyb20gXCIuLi9qc3V0aWxzL2luc3BlY3QubWpzXCI7XG5pbXBvcnQgaW52YXJpYW50IGZyb20gXCIuLi9qc3V0aWxzL2ludmFyaWFudC5tanNcIjtcbmltcG9ydCB7IEtpbmQgfSBmcm9tIFwiLi4vbGFuZ3VhZ2Uva2luZHMubWpzXCI7XG5pbXBvcnQgeyBpc0xlYWZUeXBlLCBpc0lucHV0T2JqZWN0VHlwZSwgaXNMaXN0VHlwZSwgaXNOb25OdWxsVHlwZSB9IGZyb20gXCIuLi90eXBlL2RlZmluaXRpb24ubWpzXCI7XG4vKipcbiAqIFByb2R1Y2VzIGEgSmF2YVNjcmlwdCB2YWx1ZSBnaXZlbiBhIEdyYXBoUUwgVmFsdWUgQVNULlxuICpcbiAqIEEgR3JhcGhRTCB0eXBlIG11c3QgYmUgcHJvdmlkZWQsIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBpbnRlcnByZXQgZGlmZmVyZW50XG4gKiBHcmFwaFFMIFZhbHVlIGxpdGVyYWxzLlxuICpcbiAqIFJldHVybnMgYHVuZGVmaW5lZGAgd2hlbiB0aGUgdmFsdWUgY291bGQgbm90IGJlIHZhbGlkbHkgY29lcmNlZCBhY2NvcmRpbmcgdG9cbiAqIHRoZSBwcm92aWRlZCB0eXBlLlxuICpcbiAqIHwgR3JhcGhRTCBWYWx1ZSAgICAgICAgfCBKU09OIFZhbHVlICAgIHxcbiAqIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tIHxcbiAqIHwgSW5wdXQgT2JqZWN0ICAgICAgICAgfCBPYmplY3QgICAgICAgIHxcbiAqIHwgTGlzdCAgICAgICAgICAgICAgICAgfCBBcnJheSAgICAgICAgIHxcbiAqIHwgQm9vbGVhbiAgICAgICAgICAgICAgfCBCb29sZWFuICAgICAgIHxcbiAqIHwgU3RyaW5nICAgICAgICAgICAgICAgfCBTdHJpbmcgICAgICAgIHxcbiAqIHwgSW50IC8gRmxvYXQgICAgICAgICAgfCBOdW1iZXIgICAgICAgIHxcbiAqIHwgRW51bSBWYWx1ZSAgICAgICAgICAgfCBNaXhlZCAgICAgICAgIHxcbiAqIHwgTnVsbFZhbHVlICAgICAgICAgICAgfCBudWxsICAgICAgICAgIHxcbiAqXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbUFTVCh2YWx1ZU5vZGUsIHR5cGUsIHZhcmlhYmxlcykge1xuICBpZiAoIXZhbHVlTm9kZSkge1xuICAgIC8vIFdoZW4gdGhlcmUgaXMgbm8gbm9kZSwgdGhlbiB0aGVyZSBpcyBhbHNvIG5vIHZhbHVlLlxuICAgIC8vIEltcG9ydGFudGx5LCB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIHJldHVybmluZyB0aGUgdmFsdWUgbnVsbC5cbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodmFsdWVOb2RlLmtpbmQgPT09IEtpbmQuVkFSSUFCTEUpIHtcbiAgICB2YXIgdmFyaWFibGVOYW1lID0gdmFsdWVOb2RlLm5hbWUudmFsdWU7XG5cbiAgICBpZiAodmFyaWFibGVzID09IG51bGwgfHwgdmFyaWFibGVzW3ZhcmlhYmxlTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gTm8gdmFsaWQgcmV0dXJuIHZhbHVlLlxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciB2YXJpYWJsZVZhbHVlID0gdmFyaWFibGVzW3ZhcmlhYmxlTmFtZV07XG5cbiAgICBpZiAodmFyaWFibGVWYWx1ZSA9PT0gbnVsbCAmJiBpc05vbk51bGxUeXBlKHR5cGUpKSB7XG4gICAgICByZXR1cm47IC8vIEludmFsaWQ6IGludGVudGlvbmFsbHkgcmV0dXJuIG5vIHZhbHVlLlxuICAgIH0gLy8gTm90ZTogVGhpcyBkb2VzIG5vIGZ1cnRoZXIgY2hlY2tpbmcgdGhhdCB0aGlzIHZhcmlhYmxlIGlzIGNvcnJlY3QuXG4gICAgLy8gVGhpcyBhc3N1bWVzIHRoYXQgdGhpcyBxdWVyeSBoYXMgYmVlbiB2YWxpZGF0ZWQgYW5kIHRoZSB2YXJpYWJsZVxuICAgIC8vIHVzYWdlIGhlcmUgaXMgb2YgdGhlIGNvcnJlY3QgdHlwZS5cblxuXG4gICAgcmV0dXJuIHZhcmlhYmxlVmFsdWU7XG4gIH1cblxuICBpZiAoaXNOb25OdWxsVHlwZSh0eXBlKSkge1xuICAgIGlmICh2YWx1ZU5vZGUua2luZCA9PT0gS2luZC5OVUxMKSB7XG4gICAgICByZXR1cm47IC8vIEludmFsaWQ6IGludGVudGlvbmFsbHkgcmV0dXJuIG5vIHZhbHVlLlxuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZUZyb21BU1QodmFsdWVOb2RlLCB0eXBlLm9mVHlwZSwgdmFyaWFibGVzKTtcbiAgfVxuXG4gIGlmICh2YWx1ZU5vZGUua2luZCA9PT0gS2luZC5OVUxMKSB7XG4gICAgLy8gVGhpcyBpcyBleHBsaWNpdGx5IHJldHVybmluZyB0aGUgdmFsdWUgbnVsbC5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChpc0xpc3RUeXBlKHR5cGUpKSB7XG4gICAgdmFyIGl0ZW1UeXBlID0gdHlwZS5vZlR5cGU7XG5cbiAgICBpZiAodmFsdWVOb2RlLmtpbmQgPT09IEtpbmQuTElTVCkge1xuICAgICAgdmFyIGNvZXJjZWRWYWx1ZXMgPSBbXTtcblxuICAgICAgZm9yICh2YXIgX2kyID0gMCwgX3ZhbHVlTm9kZSR2YWx1ZXMyID0gdmFsdWVOb2RlLnZhbHVlczsgX2kyIDwgX3ZhbHVlTm9kZSR2YWx1ZXMyLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgICAgdmFyIGl0ZW1Ob2RlID0gX3ZhbHVlTm9kZSR2YWx1ZXMyW19pMl07XG5cbiAgICAgICAgaWYgKGlzTWlzc2luZ1ZhcmlhYmxlKGl0ZW1Ob2RlLCB2YXJpYWJsZXMpKSB7XG4gICAgICAgICAgLy8gSWYgYW4gYXJyYXkgY29udGFpbnMgYSBtaXNzaW5nIHZhcmlhYmxlLCBpdCBpcyBlaXRoZXIgY29lcmNlZCB0b1xuICAgICAgICAgIC8vIG51bGwgb3IgaWYgdGhlIGl0ZW0gdHlwZSBpcyBub24tbnVsbCwgaXQgY29uc2lkZXJlZCBpbnZhbGlkLlxuICAgICAgICAgIGlmIChpc05vbk51bGxUeXBlKGl0ZW1UeXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBJbnZhbGlkOiBpbnRlbnRpb25hbGx5IHJldHVybiBubyB2YWx1ZS5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb2VyY2VkVmFsdWVzLnB1c2gobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGl0ZW1WYWx1ZSA9IHZhbHVlRnJvbUFTVChpdGVtTm9kZSwgaXRlbVR5cGUsIHZhcmlhYmxlcyk7XG5cbiAgICAgICAgICBpZiAoaXRlbVZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjsgLy8gSW52YWxpZDogaW50ZW50aW9uYWxseSByZXR1cm4gbm8gdmFsdWUuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29lcmNlZFZhbHVlcy5wdXNoKGl0ZW1WYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvZXJjZWRWYWx1ZXM7XG4gICAgfVxuXG4gICAgdmFyIGNvZXJjZWRWYWx1ZSA9IHZhbHVlRnJvbUFTVCh2YWx1ZU5vZGUsIGl0ZW1UeXBlLCB2YXJpYWJsZXMpO1xuXG4gICAgaWYgKGNvZXJjZWRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47IC8vIEludmFsaWQ6IGludGVudGlvbmFsbHkgcmV0dXJuIG5vIHZhbHVlLlxuICAgIH1cblxuICAgIHJldHVybiBbY29lcmNlZFZhbHVlXTtcbiAgfVxuXG4gIGlmIChpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgIGlmICh2YWx1ZU5vZGUua2luZCAhPT0gS2luZC5PQkpFQ1QpIHtcbiAgICAgIHJldHVybjsgLy8gSW52YWxpZDogaW50ZW50aW9uYWxseSByZXR1cm4gbm8gdmFsdWUuXG4gICAgfVxuXG4gICAgdmFyIGNvZXJjZWRPYmogPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHZhciBmaWVsZE5vZGVzID0ga2V5TWFwKHZhbHVlTm9kZS5maWVsZHMsIGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgcmV0dXJuIGZpZWxkLm5hbWUudmFsdWU7XG4gICAgfSk7XG5cbiAgICBmb3IgKHZhciBfaTQgPSAwLCBfb2JqZWN0VmFsdWVzMiA9IG9iamVjdFZhbHVlcyh0eXBlLmdldEZpZWxkcygpKTsgX2k0IDwgX29iamVjdFZhbHVlczIubGVuZ3RoOyBfaTQrKykge1xuICAgICAgdmFyIGZpZWxkID0gX29iamVjdFZhbHVlczJbX2k0XTtcbiAgICAgIHZhciBmaWVsZE5vZGUgPSBmaWVsZE5vZGVzW2ZpZWxkLm5hbWVdO1xuXG4gICAgICBpZiAoIWZpZWxkTm9kZSB8fCBpc01pc3NpbmdWYXJpYWJsZShmaWVsZE5vZGUudmFsdWUsIHZhcmlhYmxlcykpIHtcbiAgICAgICAgaWYgKGZpZWxkLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29lcmNlZE9ialtmaWVsZC5uYW1lXSA9IGZpZWxkLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChpc05vbk51bGxUeXBlKGZpZWxkLnR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuOyAvLyBJbnZhbGlkOiBpbnRlbnRpb25hbGx5IHJldHVybiBubyB2YWx1ZS5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgZmllbGRWYWx1ZSA9IHZhbHVlRnJvbUFTVChmaWVsZE5vZGUudmFsdWUsIGZpZWxkLnR5cGUsIHZhcmlhYmxlcyk7XG5cbiAgICAgIGlmIChmaWVsZFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBJbnZhbGlkOiBpbnRlbnRpb25hbGx5IHJldHVybiBubyB2YWx1ZS5cbiAgICAgIH1cblxuICAgICAgY29lcmNlZE9ialtmaWVsZC5uYW1lXSA9IGZpZWxkVmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvZXJjZWRPYmo7XG4gIH0gLy8gaXN0YW5idWwgaWdub3JlIGVsc2UgKFNlZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzI2MTgnKVxuXG5cbiAgaWYgKGlzTGVhZlR5cGUodHlwZSkpIHtcbiAgICAvLyBTY2FsYXJzIGFuZCBFbnVtcyBmdWxmaWxsIHBhcnNpbmcgYSBsaXRlcmFsIHZhbHVlIHZpYSBwYXJzZUxpdGVyYWwoKS5cbiAgICAvLyBJbnZhbGlkIHZhbHVlcyByZXByZXNlbnQgYSBmYWlsdXJlIHRvIHBhcnNlIGNvcnJlY3RseSwgaW4gd2hpY2ggY2FzZVxuICAgIC8vIG5vIHZhbHVlIGlzIHJldHVybmVkLlxuICAgIHZhciByZXN1bHQ7XG5cbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gdHlwZS5wYXJzZUxpdGVyYWwodmFsdWVOb2RlLCB2YXJpYWJsZXMpO1xuICAgIH0gY2F0Y2ggKF9lcnJvcikge1xuICAgICAgcmV0dXJuOyAvLyBJbnZhbGlkOiBpbnRlbnRpb25hbGx5IHJldHVybiBubyB2YWx1ZS5cbiAgICB9XG5cbiAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjsgLy8gSW52YWxpZDogaW50ZW50aW9uYWxseSByZXR1cm4gbm8gdmFsdWUuXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoTm90IHJlYWNoYWJsZS4gQWxsIHBvc3NpYmxlIGlucHV0IHR5cGVzIGhhdmUgYmVlbiBjb25zaWRlcmVkKVxuXG5cbiAgZmFsc2UgfHwgaW52YXJpYW50KDAsICdVbmV4cGVjdGVkIGlucHV0IHR5cGU6ICcgKyBpbnNwZWN0KHR5cGUpKTtcbn0gLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlZCB2YWx1ZU5vZGUgaXMgYSB2YXJpYWJsZSB3aGljaCBpcyBub3QgZGVmaW5lZFxuLy8gaW4gdGhlIHNldCBvZiB2YXJpYWJsZXMuXG5cbmZ1bmN0aW9uIGlzTWlzc2luZ1ZhcmlhYmxlKHZhbHVlTm9kZSwgdmFyaWFibGVzKSB7XG4gIHJldHVybiB2YWx1ZU5vZGUua2luZCA9PT0gS2luZC5WQVJJQUJMRSAmJiAodmFyaWFibGVzID09IG51bGwgfHwgdmFyaWFibGVzW3ZhbHVlTm9kZS5uYW1lLnZhbHVlXSA9PT0gdW5kZWZpbmVkKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/valueFromAST.mjs\n");
1341
1342/***/ }),
1343
1344/***/ "../../../node_modules/graphql/utilities/valueFromASTUntyped.mjs":
1345/*!**************************************************************************************************!*\
1346 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/utilities/valueFromASTUntyped.mjs ***!
1347 \**************************************************************************************************/
1348/*! exports provided: valueFromASTUntyped */
1349/***/ (function(module, __webpack_exports__, __webpack_require__) {
1350
1351"use strict";
1352eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"valueFromASTUntyped\", function() { return valueFromASTUntyped; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/keyValMap.mjs */ \"../../../node_modules/graphql/jsutils/keyValMap.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n\n\n\n\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value\n * will reflect the provided GraphQL value AST.\n *\n * | GraphQL Value | JavaScript Value |\n * | -------------------- | ---------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String / Enum | String |\n * | Int / Float | Number |\n * | Null | null |\n *\n */\nfunction valueFromASTUntyped(valueNode, variables) {\n switch (valueNode.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].NULL:\n return null;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INT:\n return parseInt(valueNode.value, 10);\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].FLOAT:\n return parseFloat(valueNode.value);\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].STRING:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].ENUM:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].BOOLEAN:\n return valueNode.value;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].LIST:\n return valueNode.values.map(function (node) {\n return valueFromASTUntyped(node, variables);\n });\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].OBJECT:\n return Object(_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(valueNode.fields, function (field) {\n return field.name.value;\n }, function (field) {\n return valueFromASTUntyped(field.value, variables);\n });\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].VARIABLE:\n return variables === null || variables === void 0 ? void 0 : variables[valueNode.name.value];\n } // istanbul ignore next (Not reachable. All possible value nodes have been considered)\n\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(0, 'Unexpected value node: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(valueNode));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3ZhbHVlRnJvbUFTVFVudHlwZWQubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3ZhbHVlRnJvbUFTVFVudHlwZWQubWpzPzMxNTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGluc3BlY3QgZnJvbSBcIi4uL2pzdXRpbHMvaW5zcGVjdC5tanNcIjtcbmltcG9ydCBpbnZhcmlhbnQgZnJvbSBcIi4uL2pzdXRpbHMvaW52YXJpYW50Lm1qc1wiO1xuaW1wb3J0IGtleVZhbE1hcCBmcm9tIFwiLi4vanN1dGlscy9rZXlWYWxNYXAubWpzXCI7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSBcIi4uL2xhbmd1YWdlL2tpbmRzLm1qc1wiO1xuXG4vKipcbiAqIFByb2R1Y2VzIGEgSmF2YVNjcmlwdCB2YWx1ZSBnaXZlbiBhIEdyYXBoUUwgVmFsdWUgQVNULlxuICpcbiAqIFVubGlrZSBgdmFsdWVGcm9tQVNUKClgLCBubyB0eXBlIGlzIHByb3ZpZGVkLiBUaGUgcmVzdWx0aW5nIEphdmFTY3JpcHQgdmFsdWVcbiAqIHdpbGwgcmVmbGVjdCB0aGUgcHJvdmlkZWQgR3JhcGhRTCB2YWx1ZSBBU1QuXG4gKlxuICogfCBHcmFwaFFMIFZhbHVlICAgICAgICB8IEphdmFTY3JpcHQgVmFsdWUgfFxuICogfCAtLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0gfFxuICogfCBJbnB1dCBPYmplY3QgICAgICAgICB8IE9iamVjdCAgICAgICAgICAgfFxuICogfCBMaXN0ICAgICAgICAgICAgICAgICB8IEFycmF5ICAgICAgICAgICAgfFxuICogfCBCb29sZWFuICAgICAgICAgICAgICB8IEJvb2xlYW4gICAgICAgICAgfFxuICogfCBTdHJpbmcgLyBFbnVtICAgICAgICB8IFN0cmluZyAgICAgICAgICAgfFxuICogfCBJbnQgLyBGbG9hdCAgICAgICAgICB8IE51bWJlciAgICAgICAgICAgfFxuICogfCBOdWxsICAgICAgICAgICAgICAgICB8IG51bGwgICAgICAgICAgICAgfFxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbUFTVFVudHlwZWQodmFsdWVOb2RlLCB2YXJpYWJsZXMpIHtcbiAgc3dpdGNoICh2YWx1ZU5vZGUua2luZCkge1xuICAgIGNhc2UgS2luZC5OVUxMOlxuICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICBjYXNlIEtpbmQuSU5UOlxuICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlTm9kZS52YWx1ZSwgMTApO1xuXG4gICAgY2FzZSBLaW5kLkZMT0FUOlxuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWVOb2RlLnZhbHVlKTtcblxuICAgIGNhc2UgS2luZC5TVFJJTkc6XG4gICAgY2FzZSBLaW5kLkVOVU06XG4gICAgY2FzZSBLaW5kLkJPT0xFQU46XG4gICAgICByZXR1cm4gdmFsdWVOb2RlLnZhbHVlO1xuXG4gICAgY2FzZSBLaW5kLkxJU1Q6XG4gICAgICByZXR1cm4gdmFsdWVOb2RlLnZhbHVlcy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlRnJvbUFTVFVudHlwZWQobm9kZSwgdmFyaWFibGVzKTtcbiAgICAgIH0pO1xuXG4gICAgY2FzZSBLaW5kLk9CSkVDVDpcbiAgICAgIHJldHVybiBrZXlWYWxNYXAodmFsdWVOb2RlLmZpZWxkcywgZnVuY3Rpb24gKGZpZWxkKSB7XG4gICAgICAgIHJldHVybiBmaWVsZC5uYW1lLnZhbHVlO1xuICAgICAgfSwgZnVuY3Rpb24gKGZpZWxkKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZUZyb21BU1RVbnR5cGVkKGZpZWxkLnZhbHVlLCB2YXJpYWJsZXMpO1xuICAgICAgfSk7XG5cbiAgICBjYXNlIEtpbmQuVkFSSUFCTEU6XG4gICAgICByZXR1cm4gdmFyaWFibGVzID09PSBudWxsIHx8IHZhcmlhYmxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmFyaWFibGVzW3ZhbHVlTm9kZS5uYW1lLnZhbHVlXTtcbiAgfSAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoTm90IHJlYWNoYWJsZS4gQWxsIHBvc3NpYmxlIHZhbHVlIG5vZGVzIGhhdmUgYmVlbiBjb25zaWRlcmVkKVxuXG5cbiAgZmFsc2UgfHwgaW52YXJpYW50KDAsICdVbmV4cGVjdGVkIHZhbHVlIG5vZGU6ICcgKyBpbnNwZWN0KHZhbHVlTm9kZSkpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/utilities/valueFromASTUntyped.mjs\n");
1353
1354/***/ }),
1355
1356/***/ "../../../node_modules/graphql/validation/ValidationContext.mjs":
1357/*!*************************************************************************************************!*\
1358 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/ValidationContext.mjs ***!
1359 \*************************************************************************************************/
1360/*! exports provided: ASTValidationContext, SDLValidationContext, ValidationContext */
1361/***/ (function(module, __webpack_exports__, __webpack_require__) {
1362
1363"use strict";
1364eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ASTValidationContext\", function() { return ASTValidationContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SDLValidationContext\", function() { return SDLValidationContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ValidationContext\", function() { return ValidationContext; });\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_visitor_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n/* harmony import */ var _utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utilities/TypeInfo.mjs */ \"../../../node_modules/graphql/utilities/TypeInfo.mjs\");\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n\n\n\n\n/**\n * An instance of this class is passed as the \"this\" context to all validators,\n * allowing access to commonly useful contextual information from within a\n * validation rule.\n */\nvar ASTValidationContext = /*#__PURE__*/function () {\n function ASTValidationContext(ast, onError) {\n this._ast = ast;\n this._fragments = undefined;\n this._fragmentSpreads = new Map();\n this._recursivelyReferencedFragments = new Map();\n this._onError = onError;\n }\n\n var _proto = ASTValidationContext.prototype;\n\n _proto.reportError = function reportError(error) {\n this._onError(error);\n };\n\n _proto.getDocument = function getDocument() {\n return this._ast;\n };\n\n _proto.getFragment = function getFragment(name) {\n var fragments = this._fragments;\n\n if (!fragments) {\n this._fragments = fragments = this.getDocument().definitions.reduce(function (frags, statement) {\n if (statement.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FRAGMENT_DEFINITION) {\n frags[statement.name.value] = statement;\n }\n\n return frags;\n }, Object.create(null));\n }\n\n return fragments[name];\n };\n\n _proto.getFragmentSpreads = function getFragmentSpreads(node) {\n var spreads = this._fragmentSpreads.get(node);\n\n if (!spreads) {\n spreads = [];\n var setsToVisit = [node];\n\n while (setsToVisit.length !== 0) {\n var set = setsToVisit.pop();\n\n for (var _i2 = 0, _set$selections2 = set.selections; _i2 < _set$selections2.length; _i2++) {\n var selection = _set$selections2[_i2];\n\n if (selection.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__[\"Kind\"].FRAGMENT_SPREAD) {\n spreads.push(selection);\n } else if (selection.selectionSet) {\n setsToVisit.push(selection.selectionSet);\n }\n }\n }\n\n this._fragmentSpreads.set(node, spreads);\n }\n\n return spreads;\n };\n\n _proto.getRecursivelyReferencedFragments = function getRecursivelyReferencedFragments(operation) {\n var fragments = this._recursivelyReferencedFragments.get(operation);\n\n if (!fragments) {\n fragments = [];\n var collectedNames = Object.create(null);\n var nodesToVisit = [operation.selectionSet];\n\n while (nodesToVisit.length !== 0) {\n var node = nodesToVisit.pop();\n\n for (var _i4 = 0, _this$getFragmentSpre2 = this.getFragmentSpreads(node); _i4 < _this$getFragmentSpre2.length; _i4++) {\n var spread = _this$getFragmentSpre2[_i4];\n var fragName = spread.name.value;\n\n if (collectedNames[fragName] !== true) {\n collectedNames[fragName] = true;\n var fragment = this.getFragment(fragName);\n\n if (fragment) {\n fragments.push(fragment);\n nodesToVisit.push(fragment.selectionSet);\n }\n }\n }\n }\n\n this._recursivelyReferencedFragments.set(operation, fragments);\n }\n\n return fragments;\n };\n\n return ASTValidationContext;\n}();\nvar SDLValidationContext = /*#__PURE__*/function (_ASTValidationContext) {\n _inheritsLoose(SDLValidationContext, _ASTValidationContext);\n\n function SDLValidationContext(ast, schema, onError) {\n var _this;\n\n _this = _ASTValidationContext.call(this, ast, onError) || this;\n _this._schema = schema;\n return _this;\n }\n\n var _proto2 = SDLValidationContext.prototype;\n\n _proto2.getSchema = function getSchema() {\n return this._schema;\n };\n\n return SDLValidationContext;\n}(ASTValidationContext);\nvar ValidationContext = /*#__PURE__*/function (_ASTValidationContext2) {\n _inheritsLoose(ValidationContext, _ASTValidationContext2);\n\n function ValidationContext(schema, ast, typeInfo, onError) {\n var _this2;\n\n _this2 = _ASTValidationContext2.call(this, ast, onError) || this;\n _this2._schema = schema;\n _this2._typeInfo = typeInfo;\n _this2._variableUsages = new Map();\n _this2._recursiveVariableUsages = new Map();\n return _this2;\n }\n\n var _proto3 = ValidationContext.prototype;\n\n _proto3.getSchema = function getSchema() {\n return this._schema;\n };\n\n _proto3.getVariableUsages = function getVariableUsages(node) {\n var usages = this._variableUsages.get(node);\n\n if (!usages) {\n var newUsages = [];\n var typeInfo = new _utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_2__[\"TypeInfo\"](this._schema);\n Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_1__[\"visit\"])(node, Object(_utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_2__[\"visitWithTypeInfo\"])(typeInfo, {\n VariableDefinition: function VariableDefinition() {\n return false;\n },\n Variable: function Variable(variable) {\n newUsages.push({\n node: variable,\n type: typeInfo.getInputType(),\n defaultValue: typeInfo.getDefaultValue()\n });\n }\n }));\n usages = newUsages;\n\n this._variableUsages.set(node, usages);\n }\n\n return usages;\n };\n\n _proto3.getRecursiveVariableUsages = function getRecursiveVariableUsages(operation) {\n var usages = this._recursiveVariableUsages.get(operation);\n\n if (!usages) {\n usages = this.getVariableUsages(operation);\n\n for (var _i6 = 0, _this$getRecursivelyR2 = this.getRecursivelyReferencedFragments(operation); _i6 < _this$getRecursivelyR2.length; _i6++) {\n var frag = _this$getRecursivelyR2[_i6];\n usages = usages.concat(this.getVariableUsages(frag));\n }\n\n this._recursiveVariableUsages.set(operation, usages);\n }\n\n return usages;\n };\n\n _proto3.getType = function getType() {\n return this._typeInfo.getType();\n };\n\n _proto3.getParentType = function getParentType() {\n return this._typeInfo.getParentType();\n };\n\n _proto3.getInputType = function getInputType() {\n return this._typeInfo.getInputType();\n };\n\n _proto3.getParentInputType = function getParentInputType() {\n return this._typeInfo.getParentInputType();\n };\n\n _proto3.getFieldDef = function getFieldDef() {\n return this._typeInfo.getFieldDef();\n };\n\n _proto3.getDirective = function getDirective() {\n return this._typeInfo.getDirective();\n };\n\n _proto3.getArgument = function getArgument() {\n return this._typeInfo.getArgument();\n };\n\n _proto3.getEnumValue = function getEnumValue() {\n return this._typeInfo.getEnumValue();\n };\n\n return ValidationContext;\n}(ASTValidationContext);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9WYWxpZGF0aW9uQ29udGV4dC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL1ZhbGlkYXRpb25Db250ZXh0Lm1qcz82MzlkIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9pbmhlcml0c0xvb3NlKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcy5wcm90b3R5cGUpOyBzdWJDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBzdWJDbGFzczsgc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG5pbXBvcnQgeyBLaW5kIH0gZnJvbSBcIi4uL2xhbmd1YWdlL2tpbmRzLm1qc1wiO1xuaW1wb3J0IHsgdmlzaXQgfSBmcm9tIFwiLi4vbGFuZ3VhZ2UvdmlzaXRvci5tanNcIjtcbmltcG9ydCB7IFR5cGVJbmZvLCB2aXNpdFdpdGhUeXBlSW5mbyB9IGZyb20gXCIuLi91dGlsaXRpZXMvVHlwZUluZm8ubWpzXCI7XG5cbi8qKlxuICogQW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBpcyBwYXNzZWQgYXMgdGhlIFwidGhpc1wiIGNvbnRleHQgdG8gYWxsIHZhbGlkYXRvcnMsXG4gKiBhbGxvd2luZyBhY2Nlc3MgdG8gY29tbW9ubHkgdXNlZnVsIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gZnJvbSB3aXRoaW4gYVxuICogdmFsaWRhdGlvbiBydWxlLlxuICovXG5leHBvcnQgdmFyIEFTVFZhbGlkYXRpb25Db250ZXh0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQVNUVmFsaWRhdGlvbkNvbnRleHQoYXN0LCBvbkVycm9yKSB7XG4gICAgdGhpcy5fYXN0ID0gYXN0O1xuICAgIHRoaXMuX2ZyYWdtZW50cyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9mcmFnbWVudFNwcmVhZHMgPSBuZXcgTWFwKCk7XG4gICAgdGhpcy5fcmVjdXJzaXZlbHlSZWZlcmVuY2VkRnJhZ21lbnRzID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuX29uRXJyb3IgPSBvbkVycm9yO1xuICB9XG5cbiAgdmFyIF9wcm90byA9IEFTVFZhbGlkYXRpb25Db250ZXh0LnByb3RvdHlwZTtcblxuICBfcHJvdG8ucmVwb3J0RXJyb3IgPSBmdW5jdGlvbiByZXBvcnRFcnJvcihlcnJvcikge1xuICAgIHRoaXMuX29uRXJyb3IoZXJyb3IpO1xuICB9O1xuXG4gIF9wcm90by5nZXREb2N1bWVudCA9IGZ1bmN0aW9uIGdldERvY3VtZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9hc3Q7XG4gIH07XG5cbiAgX3Byb3RvLmdldEZyYWdtZW50ID0gZnVuY3Rpb24gZ2V0RnJhZ21lbnQobmFtZSkge1xuICAgIHZhciBmcmFnbWVudHMgPSB0aGlzLl9mcmFnbWVudHM7XG5cbiAgICBpZiAoIWZyYWdtZW50cykge1xuICAgICAgdGhpcy5fZnJhZ21lbnRzID0gZnJhZ21lbnRzID0gdGhpcy5nZXREb2N1bWVudCgpLmRlZmluaXRpb25zLnJlZHVjZShmdW5jdGlvbiAoZnJhZ3MsIHN0YXRlbWVudCkge1xuICAgICAgICBpZiAoc3RhdGVtZW50LmtpbmQgPT09IEtpbmQuRlJBR01FTlRfREVGSU5JVElPTikge1xuICAgICAgICAgIGZyYWdzW3N0YXRlbWVudC5uYW1lLnZhbHVlXSA9IHN0YXRlbWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmcmFncztcbiAgICAgIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFnbWVudHNbbmFtZV07XG4gIH07XG5cbiAgX3Byb3RvLmdldEZyYWdtZW50U3ByZWFkcyA9IGZ1bmN0aW9uIGdldEZyYWdtZW50U3ByZWFkcyhub2RlKSB7XG4gICAgdmFyIHNwcmVhZHMgPSB0aGlzLl9mcmFnbWVudFNwcmVhZHMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFzcHJlYWRzKSB7XG4gICAgICBzcHJlYWRzID0gW107XG4gICAgICB2YXIgc2V0c1RvVmlzaXQgPSBbbm9kZV07XG5cbiAgICAgIHdoaWxlIChzZXRzVG9WaXNpdC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgdmFyIHNldCA9IHNldHNUb1Zpc2l0LnBvcCgpO1xuXG4gICAgICAgIGZvciAodmFyIF9pMiA9IDAsIF9zZXQkc2VsZWN0aW9uczIgPSBzZXQuc2VsZWN0aW9uczsgX2kyIDwgX3NldCRzZWxlY3Rpb25zMi5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IF9zZXQkc2VsZWN0aW9uczJbX2kyXTtcblxuICAgICAgICAgIGlmIChzZWxlY3Rpb24ua2luZCA9PT0gS2luZC5GUkFHTUVOVF9TUFJFQUQpIHtcbiAgICAgICAgICAgIHNwcmVhZHMucHVzaChzZWxlY3Rpb24pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uLnNlbGVjdGlvblNldCkge1xuICAgICAgICAgICAgc2V0c1RvVmlzaXQucHVzaChzZWxlY3Rpb24uc2VsZWN0aW9uU2V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5fZnJhZ21lbnRTcHJlYWRzLnNldChub2RlLCBzcHJlYWRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ByZWFkcztcbiAgfTtcblxuICBfcHJvdG8uZ2V0UmVjdXJzaXZlbHlSZWZlcmVuY2VkRnJhZ21lbnRzID0gZnVuY3Rpb24gZ2V0UmVjdXJzaXZlbHlSZWZlcmVuY2VkRnJhZ21lbnRzKG9wZXJhdGlvbikge1xuICAgIHZhciBmcmFnbWVudHMgPSB0aGlzLl9yZWN1cnNpdmVseVJlZmVyZW5jZWRGcmFnbWVudHMuZ2V0KG9wZXJhdGlvbik7XG5cbiAgICBpZiAoIWZyYWdtZW50cykge1xuICAgICAgZnJhZ21lbnRzID0gW107XG4gICAgICB2YXIgY29sbGVjdGVkTmFtZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgdmFyIG5vZGVzVG9WaXNpdCA9IFtvcGVyYXRpb24uc2VsZWN0aW9uU2V0XTtcblxuICAgICAgd2hpbGUgKG5vZGVzVG9WaXNpdC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgdmFyIG5vZGUgPSBub2Rlc1RvVmlzaXQucG9wKCk7XG5cbiAgICAgICAgZm9yICh2YXIgX2k0ID0gMCwgX3RoaXMkZ2V0RnJhZ21lbnRTcHJlMiA9IHRoaXMuZ2V0RnJhZ21lbnRTcHJlYWRzKG5vZGUpOyBfaTQgPCBfdGhpcyRnZXRGcmFnbWVudFNwcmUyLmxlbmd0aDsgX2k0KyspIHtcbiAgICAgICAgICB2YXIgc3ByZWFkID0gX3RoaXMkZ2V0RnJhZ21lbnRTcHJlMltfaTRdO1xuICAgICAgICAgIHZhciBmcmFnTmFtZSA9IHNwcmVhZC5uYW1lLnZhbHVlO1xuXG4gICAgICAgICAgaWYgKGNvbGxlY3RlZE5hbWVzW2ZyYWdOYW1lXSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29sbGVjdGVkTmFtZXNbZnJhZ05hbWVdID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBmcmFnbWVudCA9IHRoaXMuZ2V0RnJhZ21lbnQoZnJhZ05hbWUpO1xuXG4gICAgICAgICAgICBpZiAoZnJhZ21lbnQpIHtcbiAgICAgICAgICAgICAgZnJhZ21lbnRzLnB1c2goZnJhZ21lbnQpO1xuICAgICAgICAgICAgICBub2Rlc1RvVmlzaXQucHVzaChmcmFnbWVudC5zZWxlY3Rpb25TZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9yZWN1cnNpdmVseVJlZmVyZW5jZWRGcmFnbWVudHMuc2V0KG9wZXJhdGlvbiwgZnJhZ21lbnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhZ21lbnRzO1xuICB9O1xuXG4gIHJldHVybiBBU1RWYWxpZGF0aW9uQ29udGV4dDtcbn0oKTtcbmV4cG9ydCB2YXIgU0RMVmFsaWRhdGlvbkNvbnRleHQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9BU1RWYWxpZGF0aW9uQ29udGV4dCkge1xuICBfaW5oZXJpdHNMb29zZShTRExWYWxpZGF0aW9uQ29udGV4dCwgX0FTVFZhbGlkYXRpb25Db250ZXh0KTtcblxuICBmdW5jdGlvbiBTRExWYWxpZGF0aW9uQ29udGV4dChhc3QsIHNjaGVtYSwgb25FcnJvcikge1xuICAgIHZhciBfdGhpcztcblxuICAgIF90aGlzID0gX0FTVFZhbGlkYXRpb25Db250ZXh0LmNhbGwodGhpcywgYXN0LCBvbkVycm9yKSB8fCB0aGlzO1xuICAgIF90aGlzLl9zY2hlbWEgPSBzY2hlbWE7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgdmFyIF9wcm90bzIgPSBTRExWYWxpZGF0aW9uQ29udGV4dC5wcm90b3R5cGU7XG5cbiAgX3Byb3RvMi5nZXRTY2hlbWEgPSBmdW5jdGlvbiBnZXRTY2hlbWEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NjaGVtYTtcbiAgfTtcblxuICByZXR1cm4gU0RMVmFsaWRhdGlvbkNvbnRleHQ7XG59KEFTVFZhbGlkYXRpb25Db250ZXh0KTtcbmV4cG9ydCB2YXIgVmFsaWRhdGlvbkNvbnRleHQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9BU1RWYWxpZGF0aW9uQ29udGV4dDIpIHtcbiAgX2luaGVyaXRzTG9vc2UoVmFsaWRhdGlvbkNvbnRleHQsIF9BU1RWYWxpZGF0aW9uQ29udGV4dDIpO1xuXG4gIGZ1bmN0aW9uIFZhbGlkYXRpb25Db250ZXh0KHNjaGVtYSwgYXN0LCB0eXBlSW5mbywgb25FcnJvcikge1xuICAgIHZhciBfdGhpczI7XG5cbiAgICBfdGhpczIgPSBfQVNUVmFsaWRhdGlvbkNvbnRleHQyLmNhbGwodGhpcywgYXN0LCBvbkVycm9yKSB8fCB0aGlzO1xuICAgIF90aGlzMi5fc2NoZW1hID0gc2NoZW1hO1xuICAgIF90aGlzMi5fdHlwZUluZm8gPSB0eXBlSW5mbztcbiAgICBfdGhpczIuX3ZhcmlhYmxlVXNhZ2VzID0gbmV3IE1hcCgpO1xuICAgIF90aGlzMi5fcmVjdXJzaXZlVmFyaWFibGVVc2FnZXMgPSBuZXcgTWFwKCk7XG4gICAgcmV0dXJuIF90aGlzMjtcbiAgfVxuXG4gIHZhciBfcHJvdG8zID0gVmFsaWRhdGlvbkNvbnRleHQucHJvdG90eXBlO1xuXG4gIF9wcm90bzMuZ2V0U2NoZW1hID0gZnVuY3Rpb24gZ2V0U2NoZW1hKCkge1xuICAgIHJldHVybiB0aGlzLl9zY2hlbWE7XG4gIH07XG5cbiAgX3Byb3RvMy5nZXRWYXJpYWJsZVVzYWdlcyA9IGZ1bmN0aW9uIGdldFZhcmlhYmxlVXNhZ2VzKG5vZGUpIHtcbiAgICB2YXIgdXNhZ2VzID0gdGhpcy5fdmFyaWFibGVVc2FnZXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCF1c2FnZXMpIHtcbiAgICAgIHZhciBuZXdVc2FnZXMgPSBbXTtcbiAgICAgIHZhciB0eXBlSW5mbyA9IG5ldyBUeXBlSW5mbyh0aGlzLl9zY2hlbWEpO1xuICAgICAgdmlzaXQobm9kZSwgdmlzaXRXaXRoVHlwZUluZm8odHlwZUluZm8sIHtcbiAgICAgICAgVmFyaWFibGVEZWZpbml0aW9uOiBmdW5jdGlvbiBWYXJpYWJsZURlZmluaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBWYXJpYWJsZTogZnVuY3Rpb24gVmFyaWFibGUodmFyaWFibGUpIHtcbiAgICAgICAgICBuZXdVc2FnZXMucHVzaCh7XG4gICAgICAgICAgICBub2RlOiB2YXJpYWJsZSxcbiAgICAgICAgICAgIHR5cGU6IHR5cGVJbmZvLmdldElucHV0VHlwZSgpLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB0eXBlSW5mby5nZXREZWZhdWx0VmFsdWUoKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgICB1c2FnZXMgPSBuZXdVc2FnZXM7XG5cbiAgICAgIHRoaXMuX3ZhcmlhYmxlVXNhZ2VzLnNldChub2RlLCB1c2FnZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB1c2FnZXM7XG4gIH07XG5cbiAgX3Byb3RvMy5nZXRSZWN1cnNpdmVWYXJpYWJsZVVzYWdlcyA9IGZ1bmN0aW9uIGdldFJlY3Vyc2l2ZVZhcmlhYmxlVXNhZ2VzKG9wZXJhdGlvbikge1xuICAgIHZhciB1c2FnZXMgPSB0aGlzLl9yZWN1cnNpdmVWYXJpYWJsZVVzYWdlcy5nZXQob3BlcmF0aW9uKTtcblxuICAgIGlmICghdXNhZ2VzKSB7XG4gICAgICB1c2FnZXMgPSB0aGlzLmdldFZhcmlhYmxlVXNhZ2VzKG9wZXJhdGlvbik7XG5cbiAgICAgIGZvciAodmFyIF9pNiA9IDAsIF90aGlzJGdldFJlY3Vyc2l2ZWx5UjIgPSB0aGlzLmdldFJlY3Vyc2l2ZWx5UmVmZXJlbmNlZEZyYWdtZW50cyhvcGVyYXRpb24pOyBfaTYgPCBfdGhpcyRnZXRSZWN1cnNpdmVseVIyLmxlbmd0aDsgX2k2KyspIHtcbiAgICAgICAgdmFyIGZyYWcgPSBfdGhpcyRnZXRSZWN1cnNpdmVseVIyW19pNl07XG4gICAgICAgIHVzYWdlcyA9IHVzYWdlcy5jb25jYXQodGhpcy5nZXRWYXJpYWJsZVVzYWdlcyhmcmFnKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3JlY3Vyc2l2ZVZhcmlhYmxlVXNhZ2VzLnNldChvcGVyYXRpb24sIHVzYWdlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVzYWdlcztcbiAgfTtcblxuICBfcHJvdG8zLmdldFR5cGUgPSBmdW5jdGlvbiBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLl90eXBlSW5mby5nZXRUeXBlKCk7XG4gIH07XG5cbiAgX3Byb3RvMy5nZXRQYXJlbnRUeXBlID0gZnVuY3Rpb24gZ2V0UGFyZW50VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0UGFyZW50VHlwZSgpO1xuICB9O1xuXG4gIF9wcm90bzMuZ2V0SW5wdXRUeXBlID0gZnVuY3Rpb24gZ2V0SW5wdXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLl90eXBlSW5mby5nZXRJbnB1dFR5cGUoKTtcbiAgfTtcblxuICBfcHJvdG8zLmdldFBhcmVudElucHV0VHlwZSA9IGZ1bmN0aW9uIGdldFBhcmVudElucHV0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0UGFyZW50SW5wdXRUeXBlKCk7XG4gIH07XG5cbiAgX3Byb3RvMy5nZXRGaWVsZERlZiA9IGZ1bmN0aW9uIGdldEZpZWxkRGVmKCkge1xuICAgIHJldHVybiB0aGlzLl90eXBlSW5mby5nZXRGaWVsZERlZigpO1xuICB9O1xuXG4gIF9wcm90bzMuZ2V0RGlyZWN0aXZlID0gZnVuY3Rpb24gZ2V0RGlyZWN0aXZlKCkge1xuICAgIHJldHVybiB0aGlzLl90eXBlSW5mby5nZXREaXJlY3RpdmUoKTtcbiAgfTtcblxuICBfcHJvdG8zLmdldEFyZ3VtZW50ID0gZnVuY3Rpb24gZ2V0QXJndW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGVJbmZvLmdldEFyZ3VtZW50KCk7XG4gIH07XG5cbiAgX3Byb3RvMy5nZXRFbnVtVmFsdWUgPSBmdW5jdGlvbiBnZXRFbnVtVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGVJbmZvLmdldEVudW1WYWx1ZSgpO1xuICB9O1xuXG4gIHJldHVybiBWYWxpZGF0aW9uQ29udGV4dDtcbn0oQVNUVmFsaWRhdGlvbkNvbnRleHQpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/ValidationContext.mjs\n");
1365
1366/***/ }),
1367
1368/***/ "../../../node_modules/graphql/validation/index.mjs":
1369/*!*************************************************************************************!*\
1370 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/index.mjs ***!
1371 \*************************************************************************************/
1372/*! exports provided: validate, ValidationContext, specifiedRules, ExecutableDefinitionsRule, FieldsOnCorrectTypeRule, FragmentsOnCompositeTypesRule, KnownArgumentNamesRule, KnownDirectivesRule, KnownFragmentNamesRule, KnownTypeNamesRule, LoneAnonymousOperationRule, NoFragmentCyclesRule, NoUndefinedVariablesRule, NoUnusedFragmentsRule, NoUnusedVariablesRule, OverlappingFieldsCanBeMergedRule, PossibleFragmentSpreadsRule, ProvidedRequiredArgumentsRule, ScalarLeafsRule, SingleFieldSubscriptionsRule, UniqueArgumentNamesRule, UniqueDirectivesPerLocationRule, UniqueFragmentNamesRule, UniqueInputFieldNamesRule, UniqueOperationNamesRule, UniqueVariableNamesRule, ValuesOfCorrectTypeRule, VariablesAreInputTypesRule, VariablesInAllowedPositionRule, LoneSchemaDefinitionRule, UniqueOperationTypesRule, UniqueTypeNamesRule, UniqueEnumValueNamesRule, UniqueFieldDefinitionNamesRule, UniqueDirectiveNamesRule, PossibleTypeExtensionsRule, NoDeprecatedCustomRule, NoSchemaIntrospectionCustomRule */
1373/***/ (function(module, __webpack_exports__, __webpack_require__) {
1374
1375"use strict";
1376eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _validate_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validate.mjs */ \"../../../node_modules/graphql/validation/validate.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"validate\", function() { return _validate_mjs__WEBPACK_IMPORTED_MODULE_0__[\"validate\"]; });\n\n/* harmony import */ var _ValidationContext_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ValidationContext.mjs */ \"../../../node_modules/graphql/validation/ValidationContext.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ValidationContext\", function() { return _ValidationContext_mjs__WEBPACK_IMPORTED_MODULE_1__[\"ValidationContext\"]; });\n\n/* harmony import */ var _specifiedRules_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./specifiedRules.mjs */ \"../../../node_modules/graphql/validation/specifiedRules.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"specifiedRules\", function() { return _specifiedRules_mjs__WEBPACK_IMPORTED_MODULE_2__[\"specifiedRules\"]; });\n\n/* harmony import */ var _rules_ExecutableDefinitionsRule_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rules/ExecutableDefinitionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ExecutableDefinitionsRule\", function() { return _rules_ExecutableDefinitionsRule_mjs__WEBPACK_IMPORTED_MODULE_3__[\"ExecutableDefinitionsRule\"]; });\n\n/* harmony import */ var _rules_FieldsOnCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./rules/FieldsOnCorrectTypeRule.mjs */ \"../../../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FieldsOnCorrectTypeRule\", function() { return _rules_FieldsOnCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_4__[\"FieldsOnCorrectTypeRule\"]; });\n\n/* harmony import */ var _rules_FragmentsOnCompositeTypesRule_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./rules/FragmentsOnCompositeTypesRule.mjs */ \"../../../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FragmentsOnCompositeTypesRule\", function() { return _rules_FragmentsOnCompositeTypesRule_mjs__WEBPACK_IMPORTED_MODULE_5__[\"FragmentsOnCompositeTypesRule\"]; });\n\n/* harmony import */ var _rules_KnownArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./rules/KnownArgumentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KnownArgumentNamesRule\", function() { return _rules_KnownArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_6__[\"KnownArgumentNamesRule\"]; });\n\n/* harmony import */ var _rules_KnownDirectivesRule_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./rules/KnownDirectivesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownDirectivesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KnownDirectivesRule\", function() { return _rules_KnownDirectivesRule_mjs__WEBPACK_IMPORTED_MODULE_7__[\"KnownDirectivesRule\"]; });\n\n/* harmony import */ var _rules_KnownFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./rules/KnownFragmentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KnownFragmentNamesRule\", function() { return _rules_KnownFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_8__[\"KnownFragmentNamesRule\"]; });\n\n/* harmony import */ var _rules_KnownTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rules/KnownTypeNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"KnownTypeNamesRule\", function() { return _rules_KnownTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_9__[\"KnownTypeNamesRule\"]; });\n\n/* harmony import */ var _rules_LoneAnonymousOperationRule_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rules/LoneAnonymousOperationRule.mjs */ \"../../../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LoneAnonymousOperationRule\", function() { return _rules_LoneAnonymousOperationRule_mjs__WEBPACK_IMPORTED_MODULE_10__[\"LoneAnonymousOperationRule\"]; });\n\n/* harmony import */ var _rules_NoFragmentCyclesRule_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./rules/NoFragmentCyclesRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoFragmentCyclesRule\", function() { return _rules_NoFragmentCyclesRule_mjs__WEBPACK_IMPORTED_MODULE_11__[\"NoFragmentCyclesRule\"]; });\n\n/* harmony import */ var _rules_NoUndefinedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./rules/NoUndefinedVariablesRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoUndefinedVariablesRule\", function() { return _rules_NoUndefinedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_12__[\"NoUndefinedVariablesRule\"]; });\n\n/* harmony import */ var _rules_NoUnusedFragmentsRule_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./rules/NoUnusedFragmentsRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoUnusedFragmentsRule\", function() { return _rules_NoUnusedFragmentsRule_mjs__WEBPACK_IMPORTED_MODULE_13__[\"NoUnusedFragmentsRule\"]; });\n\n/* harmony import */ var _rules_NoUnusedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rules/NoUnusedVariablesRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoUnusedVariablesRule\", function() { return _rules_NoUnusedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_14__[\"NoUnusedVariablesRule\"]; });\n\n/* harmony import */ var _rules_OverlappingFieldsCanBeMergedRule_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./rules/OverlappingFieldsCanBeMergedRule.mjs */ \"../../../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"OverlappingFieldsCanBeMergedRule\", function() { return _rules_OverlappingFieldsCanBeMergedRule_mjs__WEBPACK_IMPORTED_MODULE_15__[\"OverlappingFieldsCanBeMergedRule\"]; });\n\n/* harmony import */ var _rules_PossibleFragmentSpreadsRule_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./rules/PossibleFragmentSpreadsRule.mjs */ \"../../../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PossibleFragmentSpreadsRule\", function() { return _rules_PossibleFragmentSpreadsRule_mjs__WEBPACK_IMPORTED_MODULE_16__[\"PossibleFragmentSpreadsRule\"]; });\n\n/* harmony import */ var _rules_ProvidedRequiredArgumentsRule_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./rules/ProvidedRequiredArgumentsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ProvidedRequiredArgumentsRule\", function() { return _rules_ProvidedRequiredArgumentsRule_mjs__WEBPACK_IMPORTED_MODULE_17__[\"ProvidedRequiredArgumentsRule\"]; });\n\n/* harmony import */ var _rules_ScalarLeafsRule_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./rules/ScalarLeafsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ScalarLeafsRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ScalarLeafsRule\", function() { return _rules_ScalarLeafsRule_mjs__WEBPACK_IMPORTED_MODULE_18__[\"ScalarLeafsRule\"]; });\n\n/* harmony import */ var _rules_SingleFieldSubscriptionsRule_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./rules/SingleFieldSubscriptionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SingleFieldSubscriptionsRule\", function() { return _rules_SingleFieldSubscriptionsRule_mjs__WEBPACK_IMPORTED_MODULE_19__[\"SingleFieldSubscriptionsRule\"]; });\n\n/* harmony import */ var _rules_UniqueArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./rules/UniqueArgumentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueArgumentNamesRule\", function() { return _rules_UniqueArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_20__[\"UniqueArgumentNamesRule\"]; });\n\n/* harmony import */ var _rules_UniqueDirectivesPerLocationRule_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./rules/UniqueDirectivesPerLocationRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueDirectivesPerLocationRule\", function() { return _rules_UniqueDirectivesPerLocationRule_mjs__WEBPACK_IMPORTED_MODULE_21__[\"UniqueDirectivesPerLocationRule\"]; });\n\n/* harmony import */ var _rules_UniqueFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./rules/UniqueFragmentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueFragmentNamesRule\", function() { return _rules_UniqueFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_22__[\"UniqueFragmentNamesRule\"]; });\n\n/* harmony import */ var _rules_UniqueInputFieldNamesRule_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./rules/UniqueInputFieldNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueInputFieldNamesRule\", function() { return _rules_UniqueInputFieldNamesRule_mjs__WEBPACK_IMPORTED_MODULE_23__[\"UniqueInputFieldNamesRule\"]; });\n\n/* harmony import */ var _rules_UniqueOperationNamesRule_mjs__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./rules/UniqueOperationNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueOperationNamesRule\", function() { return _rules_UniqueOperationNamesRule_mjs__WEBPACK_IMPORTED_MODULE_24__[\"UniqueOperationNamesRule\"]; });\n\n/* harmony import */ var _rules_UniqueVariableNamesRule_mjs__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./rules/UniqueVariableNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueVariableNamesRule\", function() { return _rules_UniqueVariableNamesRule_mjs__WEBPACK_IMPORTED_MODULE_25__[\"UniqueVariableNamesRule\"]; });\n\n/* harmony import */ var _rules_ValuesOfCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./rules/ValuesOfCorrectTypeRule.mjs */ \"../../../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ValuesOfCorrectTypeRule\", function() { return _rules_ValuesOfCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_26__[\"ValuesOfCorrectTypeRule\"]; });\n\n/* harmony import */ var _rules_VariablesAreInputTypesRule_mjs__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./rules/VariablesAreInputTypesRule.mjs */ \"../../../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VariablesAreInputTypesRule\", function() { return _rules_VariablesAreInputTypesRule_mjs__WEBPACK_IMPORTED_MODULE_27__[\"VariablesAreInputTypesRule\"]; });\n\n/* harmony import */ var _rules_VariablesInAllowedPositionRule_mjs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./rules/VariablesInAllowedPositionRule.mjs */ \"../../../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VariablesInAllowedPositionRule\", function() { return _rules_VariablesInAllowedPositionRule_mjs__WEBPACK_IMPORTED_MODULE_28__[\"VariablesInAllowedPositionRule\"]; });\n\n/* harmony import */ var _rules_LoneSchemaDefinitionRule_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./rules/LoneSchemaDefinitionRule.mjs */ \"../../../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LoneSchemaDefinitionRule\", function() { return _rules_LoneSchemaDefinitionRule_mjs__WEBPACK_IMPORTED_MODULE_29__[\"LoneSchemaDefinitionRule\"]; });\n\n/* harmony import */ var _rules_UniqueOperationTypesRule_mjs__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./rules/UniqueOperationTypesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueOperationTypesRule\", function() { return _rules_UniqueOperationTypesRule_mjs__WEBPACK_IMPORTED_MODULE_30__[\"UniqueOperationTypesRule\"]; });\n\n/* harmony import */ var _rules_UniqueTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./rules/UniqueTypeNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueTypeNamesRule\", function() { return _rules_UniqueTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_31__[\"UniqueTypeNamesRule\"]; });\n\n/* harmony import */ var _rules_UniqueEnumValueNamesRule_mjs__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./rules/UniqueEnumValueNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueEnumValueNamesRule\", function() { return _rules_UniqueEnumValueNamesRule_mjs__WEBPACK_IMPORTED_MODULE_32__[\"UniqueEnumValueNamesRule\"]; });\n\n/* harmony import */ var _rules_UniqueFieldDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./rules/UniqueFieldDefinitionNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueFieldDefinitionNamesRule\", function() { return _rules_UniqueFieldDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_33__[\"UniqueFieldDefinitionNamesRule\"]; });\n\n/* harmony import */ var _rules_UniqueDirectiveNamesRule_mjs__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./rules/UniqueDirectiveNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"UniqueDirectiveNamesRule\", function() { return _rules_UniqueDirectiveNamesRule_mjs__WEBPACK_IMPORTED_MODULE_34__[\"UniqueDirectiveNamesRule\"]; });\n\n/* harmony import */ var _rules_PossibleTypeExtensionsRule_mjs__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./rules/PossibleTypeExtensionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PossibleTypeExtensionsRule\", function() { return _rules_PossibleTypeExtensionsRule_mjs__WEBPACK_IMPORTED_MODULE_35__[\"PossibleTypeExtensionsRule\"]; });\n\n/* harmony import */ var _rules_custom_NoDeprecatedCustomRule_mjs__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./rules/custom/NoDeprecatedCustomRule.mjs */ \"../../../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoDeprecatedCustomRule\", function() { return _rules_custom_NoDeprecatedCustomRule_mjs__WEBPACK_IMPORTED_MODULE_36__[\"NoDeprecatedCustomRule\"]; });\n\n/* harmony import */ var _rules_custom_NoSchemaIntrospectionCustomRule_mjs__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./rules/custom/NoSchemaIntrospectionCustomRule.mjs */ \"../../../node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NoSchemaIntrospectionCustomRule\", function() { return _rules_custom_NoSchemaIntrospectionCustomRule_mjs__WEBPACK_IMPORTED_MODULE_37__[\"NoSchemaIntrospectionCustomRule\"]; });\n\n\n\n// All validation rules in the GraphQL Specification.\n // Spec Section: \"Executable Definitions\"\n\n // Spec Section: \"Field Selections on Objects, Interfaces, and Unions Types\"\n\n // Spec Section: \"Fragments on Composite Types\"\n\n // Spec Section: \"Argument Names\"\n\n // Spec Section: \"Directives Are Defined\"\n\n // Spec Section: \"Fragment spread target defined\"\n\n // Spec Section: \"Fragment Spread Type Existence\"\n\n // Spec Section: \"Lone Anonymous Operation\"\n\n // Spec Section: \"Fragments must not form cycles\"\n\n // Spec Section: \"All Variable Used Defined\"\n\n // Spec Section: \"Fragments must be used\"\n\n // Spec Section: \"All Variables Used\"\n\n // Spec Section: \"Field Selection Merging\"\n\n // Spec Section: \"Fragment spread is possible\"\n\n // Spec Section: \"Argument Optionality\"\n\n // Spec Section: \"Leaf Field Selections\"\n\n // Spec Section: \"Subscriptions with Single Root Field\"\n\n // Spec Section: \"Argument Uniqueness\"\n\n // Spec Section: \"Directives Are Unique Per Location\"\n\n // Spec Section: \"Fragment Name Uniqueness\"\n\n // Spec Section: \"Input Object Field Uniqueness\"\n\n // Spec Section: \"Operation Name Uniqueness\"\n\n // Spec Section: \"Variable Uniqueness\"\n\n // Spec Section: \"Values Type Correctness\"\n\n // Spec Section: \"Variables are Input Types\"\n\n // Spec Section: \"All Variable Usages Are Allowed\"\n\n // SDL-specific validation rules\n\n\n\n\n\n\n\n // Optional rules not defined by the GraphQL Specification\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9pbmRleC5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL2luZGV4Lm1qcz83NmU2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHZhbGlkYXRlIH0gZnJvbSBcIi4vdmFsaWRhdGUubWpzXCI7XG5leHBvcnQgeyBWYWxpZGF0aW9uQ29udGV4dCB9IGZyb20gXCIuL1ZhbGlkYXRpb25Db250ZXh0Lm1qc1wiO1xuLy8gQWxsIHZhbGlkYXRpb24gcnVsZXMgaW4gdGhlIEdyYXBoUUwgU3BlY2lmaWNhdGlvbi5cbmV4cG9ydCB7IHNwZWNpZmllZFJ1bGVzIH0gZnJvbSBcIi4vc3BlY2lmaWVkUnVsZXMubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJFeGVjdXRhYmxlIERlZmluaXRpb25zXCJcblxuZXhwb3J0IHsgRXhlY3V0YWJsZURlZmluaXRpb25zUnVsZSB9IGZyb20gXCIuL3J1bGVzL0V4ZWN1dGFibGVEZWZpbml0aW9uc1J1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJGaWVsZCBTZWxlY3Rpb25zIG9uIE9iamVjdHMsIEludGVyZmFjZXMsIGFuZCBVbmlvbnMgVHlwZXNcIlxuXG5leHBvcnQgeyBGaWVsZHNPbkNvcnJlY3RUeXBlUnVsZSB9IGZyb20gXCIuL3J1bGVzL0ZpZWxkc09uQ29ycmVjdFR5cGVSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiRnJhZ21lbnRzIG9uIENvbXBvc2l0ZSBUeXBlc1wiXG5cbmV4cG9ydCB7IEZyYWdtZW50c09uQ29tcG9zaXRlVHlwZXNSdWxlIH0gZnJvbSBcIi4vcnVsZXMvRnJhZ21lbnRzT25Db21wb3NpdGVUeXBlc1J1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJBcmd1bWVudCBOYW1lc1wiXG5cbmV4cG9ydCB7IEtub3duQXJndW1lbnROYW1lc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9Lbm93bkFyZ3VtZW50TmFtZXNSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiRGlyZWN0aXZlcyBBcmUgRGVmaW5lZFwiXG5cbmV4cG9ydCB7IEtub3duRGlyZWN0aXZlc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9Lbm93bkRpcmVjdGl2ZXNSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiRnJhZ21lbnQgc3ByZWFkIHRhcmdldCBkZWZpbmVkXCJcblxuZXhwb3J0IHsgS25vd25GcmFnbWVudE5hbWVzUnVsZSB9IGZyb20gXCIuL3J1bGVzL0tub3duRnJhZ21lbnROYW1lc1J1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJGcmFnbWVudCBTcHJlYWQgVHlwZSBFeGlzdGVuY2VcIlxuXG5leHBvcnQgeyBLbm93blR5cGVOYW1lc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9Lbm93blR5cGVOYW1lc1J1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJMb25lIEFub255bW91cyBPcGVyYXRpb25cIlxuXG5leHBvcnQgeyBMb25lQW5vbnltb3VzT3BlcmF0aW9uUnVsZSB9IGZyb20gXCIuL3J1bGVzL0xvbmVBbm9ueW1vdXNPcGVyYXRpb25SdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiRnJhZ21lbnRzIG11c3Qgbm90IGZvcm0gY3ljbGVzXCJcblxuZXhwb3J0IHsgTm9GcmFnbWVudEN5Y2xlc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9Ob0ZyYWdtZW50Q3ljbGVzUnVsZS5tanNcIjsgLy8gU3BlYyBTZWN0aW9uOiBcIkFsbCBWYXJpYWJsZSBVc2VkIERlZmluZWRcIlxuXG5leHBvcnQgeyBOb1VuZGVmaW5lZFZhcmlhYmxlc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9Ob1VuZGVmaW5lZFZhcmlhYmxlc1J1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJGcmFnbWVudHMgbXVzdCBiZSB1c2VkXCJcblxuZXhwb3J0IHsgTm9VbnVzZWRGcmFnbWVudHNSdWxlIH0gZnJvbSBcIi4vcnVsZXMvTm9VbnVzZWRGcmFnbWVudHNSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiQWxsIFZhcmlhYmxlcyBVc2VkXCJcblxuZXhwb3J0IHsgTm9VbnVzZWRWYXJpYWJsZXNSdWxlIH0gZnJvbSBcIi4vcnVsZXMvTm9VbnVzZWRWYXJpYWJsZXNSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiRmllbGQgU2VsZWN0aW9uIE1lcmdpbmdcIlxuXG5leHBvcnQgeyBPdmVybGFwcGluZ0ZpZWxkc0NhbkJlTWVyZ2VkUnVsZSB9IGZyb20gXCIuL3J1bGVzL092ZXJsYXBwaW5nRmllbGRzQ2FuQmVNZXJnZWRSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiRnJhZ21lbnQgc3ByZWFkIGlzIHBvc3NpYmxlXCJcblxuZXhwb3J0IHsgUG9zc2libGVGcmFnbWVudFNwcmVhZHNSdWxlIH0gZnJvbSBcIi4vcnVsZXMvUG9zc2libGVGcmFnbWVudFNwcmVhZHNSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiQXJndW1lbnQgT3B0aW9uYWxpdHlcIlxuXG5leHBvcnQgeyBQcm92aWRlZFJlcXVpcmVkQXJndW1lbnRzUnVsZSB9IGZyb20gXCIuL3J1bGVzL1Byb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiTGVhZiBGaWVsZCBTZWxlY3Rpb25zXCJcblxuZXhwb3J0IHsgU2NhbGFyTGVhZnNSdWxlIH0gZnJvbSBcIi4vcnVsZXMvU2NhbGFyTGVhZnNSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiU3Vic2NyaXB0aW9ucyB3aXRoIFNpbmdsZSBSb290IEZpZWxkXCJcblxuZXhwb3J0IHsgU2luZ2xlRmllbGRTdWJzY3JpcHRpb25zUnVsZSB9IGZyb20gXCIuL3J1bGVzL1NpbmdsZUZpZWxkU3Vic2NyaXB0aW9uc1J1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJBcmd1bWVudCBVbmlxdWVuZXNzXCJcblxuZXhwb3J0IHsgVW5pcXVlQXJndW1lbnROYW1lc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9VbmlxdWVBcmd1bWVudE5hbWVzUnVsZS5tanNcIjsgLy8gU3BlYyBTZWN0aW9uOiBcIkRpcmVjdGl2ZXMgQXJlIFVuaXF1ZSBQZXIgTG9jYXRpb25cIlxuXG5leHBvcnQgeyBVbmlxdWVEaXJlY3RpdmVzUGVyTG9jYXRpb25SdWxlIH0gZnJvbSBcIi4vcnVsZXMvVW5pcXVlRGlyZWN0aXZlc1BlckxvY2F0aW9uUnVsZS5tanNcIjsgLy8gU3BlYyBTZWN0aW9uOiBcIkZyYWdtZW50IE5hbWUgVW5pcXVlbmVzc1wiXG5cbmV4cG9ydCB7IFVuaXF1ZUZyYWdtZW50TmFtZXNSdWxlIH0gZnJvbSBcIi4vcnVsZXMvVW5pcXVlRnJhZ21lbnROYW1lc1J1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJJbnB1dCBPYmplY3QgRmllbGQgVW5pcXVlbmVzc1wiXG5cbmV4cG9ydCB7IFVuaXF1ZUlucHV0RmllbGROYW1lc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9VbmlxdWVJbnB1dEZpZWxkTmFtZXNSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiT3BlcmF0aW9uIE5hbWUgVW5pcXVlbmVzc1wiXG5cbmV4cG9ydCB7IFVuaXF1ZU9wZXJhdGlvbk5hbWVzUnVsZSB9IGZyb20gXCIuL3J1bGVzL1VuaXF1ZU9wZXJhdGlvbk5hbWVzUnVsZS5tanNcIjsgLy8gU3BlYyBTZWN0aW9uOiBcIlZhcmlhYmxlIFVuaXF1ZW5lc3NcIlxuXG5leHBvcnQgeyBVbmlxdWVWYXJpYWJsZU5hbWVzUnVsZSB9IGZyb20gXCIuL3J1bGVzL1VuaXF1ZVZhcmlhYmxlTmFtZXNSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiVmFsdWVzIFR5cGUgQ29ycmVjdG5lc3NcIlxuXG5leHBvcnQgeyBWYWx1ZXNPZkNvcnJlY3RUeXBlUnVsZSB9IGZyb20gXCIuL3J1bGVzL1ZhbHVlc09mQ29ycmVjdFR5cGVSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiVmFyaWFibGVzIGFyZSBJbnB1dCBUeXBlc1wiXG5cbmV4cG9ydCB7IFZhcmlhYmxlc0FyZUlucHV0VHlwZXNSdWxlIH0gZnJvbSBcIi4vcnVsZXMvVmFyaWFibGVzQXJlSW5wdXRUeXBlc1J1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJBbGwgVmFyaWFibGUgVXNhZ2VzIEFyZSBBbGxvd2VkXCJcblxuZXhwb3J0IHsgVmFyaWFibGVzSW5BbGxvd2VkUG9zaXRpb25SdWxlIH0gZnJvbSBcIi4vcnVsZXMvVmFyaWFibGVzSW5BbGxvd2VkUG9zaXRpb25SdWxlLm1qc1wiOyAvLyBTREwtc3BlY2lmaWMgdmFsaWRhdGlvbiBydWxlc1xuXG5leHBvcnQgeyBMb25lU2NoZW1hRGVmaW5pdGlvblJ1bGUgfSBmcm9tIFwiLi9ydWxlcy9Mb25lU2NoZW1hRGVmaW5pdGlvblJ1bGUubWpzXCI7XG5leHBvcnQgeyBVbmlxdWVPcGVyYXRpb25UeXBlc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9VbmlxdWVPcGVyYXRpb25UeXBlc1J1bGUubWpzXCI7XG5leHBvcnQgeyBVbmlxdWVUeXBlTmFtZXNSdWxlIH0gZnJvbSBcIi4vcnVsZXMvVW5pcXVlVHlwZU5hbWVzUnVsZS5tanNcIjtcbmV4cG9ydCB7IFVuaXF1ZUVudW1WYWx1ZU5hbWVzUnVsZSB9IGZyb20gXCIuL3J1bGVzL1VuaXF1ZUVudW1WYWx1ZU5hbWVzUnVsZS5tanNcIjtcbmV4cG9ydCB7IFVuaXF1ZUZpZWxkRGVmaW5pdGlvbk5hbWVzUnVsZSB9IGZyb20gXCIuL3J1bGVzL1VuaXF1ZUZpZWxkRGVmaW5pdGlvbk5hbWVzUnVsZS5tanNcIjtcbmV4cG9ydCB7IFVuaXF1ZURpcmVjdGl2ZU5hbWVzUnVsZSB9IGZyb20gXCIuL3J1bGVzL1VuaXF1ZURpcmVjdGl2ZU5hbWVzUnVsZS5tanNcIjtcbmV4cG9ydCB7IFBvc3NpYmxlVHlwZUV4dGVuc2lvbnNSdWxlIH0gZnJvbSBcIi4vcnVsZXMvUG9zc2libGVUeXBlRXh0ZW5zaW9uc1J1bGUubWpzXCI7IC8vIE9wdGlvbmFsIHJ1bGVzIG5vdCBkZWZpbmVkIGJ5IHRoZSBHcmFwaFFMIFNwZWNpZmljYXRpb25cblxuZXhwb3J0IHsgTm9EZXByZWNhdGVkQ3VzdG9tUnVsZSB9IGZyb20gXCIuL3J1bGVzL2N1c3RvbS9Ob0RlcHJlY2F0ZWRDdXN0b21SdWxlLm1qc1wiO1xuZXhwb3J0IHsgTm9TY2hlbWFJbnRyb3NwZWN0aW9uQ3VzdG9tUnVsZSB9IGZyb20gXCIuL3J1bGVzL2N1c3RvbS9Ob1NjaGVtYUludHJvc3BlY3Rpb25DdXN0b21SdWxlLm1qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/index.mjs\n");
1377
1378/***/ }),
1379
1380/***/ "../../../node_modules/graphql/validation/rules/ExecutableDefinitions.mjs":
1381/*!***********************************************************************************************************!*\
1382 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/ExecutableDefinitions.mjs ***!
1383 \***********************************************************************************************************/
1384/*! exports provided: ExecutableDefinitions */
1385/***/ (function(module, __webpack_exports__, __webpack_require__) {
1386
1387"use strict";
1388eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ExecutableDefinitionsRule_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ExecutableDefinitionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ExecutableDefinitions\", function() { return _ExecutableDefinitionsRule_mjs__WEBPACK_IMPORTED_MODULE_0__[\"ExecutableDefinitionsRule\"]; });\n\n/**\n * @deprecated and will be removed in v16\n * Please use either:\n * import { ExecutableDefinitionsRule } from 'graphql'\n * or\n * import { ExecutableDefinitionsRule } from 'graphql/validation'\n */\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9FeGVjdXRhYmxlRGVmaW5pdGlvbnMubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9FeGVjdXRhYmxlRGVmaW5pdGlvbnMubWpzP2NiNWYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHYxNlxuICogUGxlYXNlIHVzZSBlaXRoZXI6XG4gKiAgIGltcG9ydCB7IEV4ZWN1dGFibGVEZWZpbml0aW9uc1J1bGUgfSBmcm9tICdncmFwaHFsJ1xuICogb3JcbiAqICAgaW1wb3J0IHsgRXhlY3V0YWJsZURlZmluaXRpb25zUnVsZSB9IGZyb20gJ2dyYXBocWwvdmFsaWRhdGlvbidcbiAqL1xuZXhwb3J0IHsgRXhlY3V0YWJsZURlZmluaXRpb25zUnVsZSBhcyBFeGVjdXRhYmxlRGVmaW5pdGlvbnMgfSBmcm9tIFwiLi9FeGVjdXRhYmxlRGVmaW5pdGlvbnNSdWxlLm1qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/ExecutableDefinitions.mjs\n");
1389
1390/***/ }),
1391
1392/***/ "../../../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs":
1393/*!***************************************************************************************************************!*\
1394 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs ***!
1395 \***************************************************************************************************************/
1396/*! exports provided: ExecutableDefinitionsRule */
1397/***/ (function(module, __webpack_exports__, __webpack_require__) {
1398
1399"use strict";
1400eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ExecutableDefinitionsRule\", function() { return ExecutableDefinitionsRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_predicates_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../language/predicates.mjs */ \"../../../node_modules/graphql/language/predicates.mjs\");\n\n\n\n\n/**\n * Executable definitions\n *\n * A GraphQL document is only valid for execution if all definitions are either\n * operation or fragment definitions.\n */\nfunction ExecutableDefinitionsRule(context) {\n return {\n Document: function Document(node) {\n for (var _i2 = 0, _node$definitions2 = node.definitions; _i2 < _node$definitions2.length; _i2++) {\n var definition = _node$definitions2[_i2];\n\n if (!Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isExecutableDefinitionNode\"])(definition)) {\n var defName = definition.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SCHEMA_DEFINITION || definition.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SCHEMA_EXTENSION ? 'schema' : '\"' + definition.name.value + '\"';\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"The \".concat(defName, \" definition is not executable.\"), definition));\n }\n }\n\n return false;\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9FeGVjdXRhYmxlRGVmaW5pdGlvbnNSdWxlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvRXhlY3V0YWJsZURlZmluaXRpb25zUnVsZS5tanM/ZjU2NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qc1wiO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gXCIuLi8uLi9sYW5ndWFnZS9raW5kcy5tanNcIjtcbmltcG9ydCB7IGlzRXhlY3V0YWJsZURlZmluaXRpb25Ob2RlIH0gZnJvbSBcIi4uLy4uL2xhbmd1YWdlL3ByZWRpY2F0ZXMubWpzXCI7XG5cbi8qKlxuICogRXhlY3V0YWJsZSBkZWZpbml0aW9uc1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGZvciBleGVjdXRpb24gaWYgYWxsIGRlZmluaXRpb25zIGFyZSBlaXRoZXJcbiAqIG9wZXJhdGlvbiBvciBmcmFnbWVudCBkZWZpbml0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEV4ZWN1dGFibGVEZWZpbml0aW9uc1J1bGUoY29udGV4dCkge1xuICByZXR1cm4ge1xuICAgIERvY3VtZW50OiBmdW5jdGlvbiBEb2N1bWVudChub2RlKSB7XG4gICAgICBmb3IgKHZhciBfaTIgPSAwLCBfbm9kZSRkZWZpbml0aW9uczIgPSBub2RlLmRlZmluaXRpb25zOyBfaTIgPCBfbm9kZSRkZWZpbml0aW9uczIubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICB2YXIgZGVmaW5pdGlvbiA9IF9ub2RlJGRlZmluaXRpb25zMltfaTJdO1xuXG4gICAgICAgIGlmICghaXNFeGVjdXRhYmxlRGVmaW5pdGlvbk5vZGUoZGVmaW5pdGlvbikpIHtcbiAgICAgICAgICB2YXIgZGVmTmFtZSA9IGRlZmluaXRpb24ua2luZCA9PT0gS2luZC5TQ0hFTUFfREVGSU5JVElPTiB8fCBkZWZpbml0aW9uLmtpbmQgPT09IEtpbmQuU0NIRU1BX0VYVEVOU0lPTiA/ICdzY2hlbWEnIDogJ1wiJyArIGRlZmluaXRpb24ubmFtZS52YWx1ZSArICdcIic7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiVGhlIFwiLmNvbmNhdChkZWZOYW1lLCBcIiBkZWZpbml0aW9uIGlzIG5vdCBleGVjdXRhYmxlLlwiKSwgZGVmaW5pdGlvbikpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs\n");
1401
1402/***/ }),
1403
1404/***/ "../../../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs":
1405/*!*************************************************************************************************************!*\
1406 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs ***!
1407 \*************************************************************************************************************/
1408/*! exports provided: FieldsOnCorrectTypeRule */
1409/***/ (function(module, __webpack_exports__, __webpack_require__) {
1410
1411"use strict";
1412eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FieldsOnCorrectTypeRule\", function() { return FieldsOnCorrectTypeRule; });\n/* harmony import */ var _polyfills_arrayFrom_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../polyfills/arrayFrom.mjs */ \"../../../node_modules/graphql/polyfills/arrayFrom.mjs\");\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../jsutils/suggestionList.mjs */ \"../../../node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n/**\n * Fields on correct type\n *\n * A GraphQL document is only valid if all fields selected are defined by the\n * parent type, or are an allowed meta field such as __typename.\n */\nfunction FieldsOnCorrectTypeRule(context) {\n return {\n Field: function Field(node) {\n var type = context.getParentType();\n\n if (type) {\n var fieldDef = context.getFieldDef();\n\n if (!fieldDef) {\n // This field doesn't exist, lets look for suggestions.\n var schema = context.getSchema();\n var fieldName = node.name.value; // First determine if there are any suggested types to condition on.\n\n var suggestion = Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('to use an inline fragment on', getSuggestedTypeNames(schema, type, fieldName)); // If there are no suggested types, then perhaps this was a typo?\n\n if (suggestion === '') {\n suggestion = Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(getSuggestedFieldNames(type, fieldName));\n } // Report an error, including helpful suggestions.\n\n\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLError\"](\"Cannot query field \\\"\".concat(fieldName, \"\\\" on type \\\"\").concat(type.name, \"\\\".\") + suggestion, node));\n }\n }\n }\n };\n}\n/**\n * Go through all of the implementations of type, as well as the interfaces that\n * they implement. If any of those types include the provided field, suggest them,\n * sorted by how often the type is referenced.\n */\n\nfunction getSuggestedTypeNames(schema, type, fieldName) {\n if (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isAbstractType\"])(type)) {\n // Must be an Object type, which does not have possible fields.\n return [];\n }\n\n var suggestedTypes = new Set();\n var usageCount = Object.create(null);\n\n for (var _i2 = 0, _schema$getPossibleTy2 = schema.getPossibleTypes(type); _i2 < _schema$getPossibleTy2.length; _i2++) {\n var possibleType = _schema$getPossibleTy2[_i2];\n\n if (!possibleType.getFields()[fieldName]) {\n continue;\n } // This object type defines this field.\n\n\n suggestedTypes.add(possibleType);\n usageCount[possibleType.name] = 1;\n\n for (var _i4 = 0, _possibleType$getInte2 = possibleType.getInterfaces(); _i4 < _possibleType$getInte2.length; _i4++) {\n var _usageCount$possibleI;\n\n var possibleInterface = _possibleType$getInte2[_i4];\n\n if (!possibleInterface.getFields()[fieldName]) {\n continue;\n } // This interface type defines this field.\n\n\n suggestedTypes.add(possibleInterface);\n usageCount[possibleInterface.name] = ((_usageCount$possibleI = usageCount[possibleInterface.name]) !== null && _usageCount$possibleI !== void 0 ? _usageCount$possibleI : 0) + 1;\n }\n }\n\n return Object(_polyfills_arrayFrom_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(suggestedTypes).sort(function (typeA, typeB) {\n // Suggest both interface and object types based on how common they are.\n var usageCountDiff = usageCount[typeB.name] - usageCount[typeA.name];\n\n if (usageCountDiff !== 0) {\n return usageCountDiff;\n } // Suggest super types first followed by subtypes\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInterfaceType\"])(typeA) && schema.isSubType(typeA, typeB)) {\n return -1;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInterfaceType\"])(typeB) && schema.isSubType(typeB, typeA)) {\n return 1;\n }\n\n return typeA.name.localeCompare(typeB.name);\n }).map(function (x) {\n return x.name;\n });\n}\n/**\n * For the field name provided, determine if there are any similar field names\n * that may be the result of a typo.\n */\n\n\nfunction getSuggestedFieldNames(type, fieldName) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isObjectType\"])(type) || Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__[\"isInterfaceType\"])(type)) {\n var possibleFieldNames = Object.keys(type.getFields());\n return Object(_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(fieldName, possibleFieldNames);\n } // Otherwise, must be a Union type, which does not define fields.\n\n\n return [];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9GaWVsZHNPbkNvcnJlY3RUeXBlUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0ZpZWxkc09uQ29ycmVjdFR5cGVSdWxlLm1qcz85Zjk0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhcnJheUZyb20gZnJvbSBcIi4uLy4uL3BvbHlmaWxscy9hcnJheUZyb20ubWpzXCI7XG5pbXBvcnQgZGlkWW91TWVhbiBmcm9tIFwiLi4vLi4vanN1dGlscy9kaWRZb3VNZWFuLm1qc1wiO1xuaW1wb3J0IHN1Z2dlc3Rpb25MaXN0IGZyb20gXCIuLi8uLi9qc3V0aWxzL3N1Z2dlc3Rpb25MaXN0Lm1qc1wiO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanNcIjtcbmltcG9ydCB7IGlzT2JqZWN0VHlwZSwgaXNJbnRlcmZhY2VUeXBlLCBpc0Fic3RyYWN0VHlwZSB9IGZyb20gXCIuLi8uLi90eXBlL2RlZmluaXRpb24ubWpzXCI7XG5cbi8qKlxuICogRmllbGRzIG9uIGNvcnJlY3QgdHlwZVxuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBmaWVsZHMgc2VsZWN0ZWQgYXJlIGRlZmluZWQgYnkgdGhlXG4gKiBwYXJlbnQgdHlwZSwgb3IgYXJlIGFuIGFsbG93ZWQgbWV0YSBmaWVsZCBzdWNoIGFzIF9fdHlwZW5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBGaWVsZHNPbkNvcnJlY3RUeXBlUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgRmllbGQ6IGZ1bmN0aW9uIEZpZWxkKG5vZGUpIHtcbiAgICAgIHZhciB0eXBlID0gY29udGV4dC5nZXRQYXJlbnRUeXBlKCk7XG5cbiAgICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHZhciBmaWVsZERlZiA9IGNvbnRleHQuZ2V0RmllbGREZWYoKTtcblxuICAgICAgICBpZiAoIWZpZWxkRGVmKSB7XG4gICAgICAgICAgLy8gVGhpcyBmaWVsZCBkb2Vzbid0IGV4aXN0LCBsZXRzIGxvb2sgZm9yIHN1Z2dlc3Rpb25zLlxuICAgICAgICAgIHZhciBzY2hlbWEgPSBjb250ZXh0LmdldFNjaGVtYSgpO1xuICAgICAgICAgIHZhciBmaWVsZE5hbWUgPSBub2RlLm5hbWUudmFsdWU7IC8vIEZpcnN0IGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IHN1Z2dlc3RlZCB0eXBlcyB0byBjb25kaXRpb24gb24uXG5cbiAgICAgICAgICB2YXIgc3VnZ2VzdGlvbiA9IGRpZFlvdU1lYW4oJ3RvIHVzZSBhbiBpbmxpbmUgZnJhZ21lbnQgb24nLCBnZXRTdWdnZXN0ZWRUeXBlTmFtZXMoc2NoZW1hLCB0eXBlLCBmaWVsZE5hbWUpKTsgLy8gSWYgdGhlcmUgYXJlIG5vIHN1Z2dlc3RlZCB0eXBlcywgdGhlbiBwZXJoYXBzIHRoaXMgd2FzIGEgdHlwbz9cblxuICAgICAgICAgIGlmIChzdWdnZXN0aW9uID09PSAnJykge1xuICAgICAgICAgICAgc3VnZ2VzdGlvbiA9IGRpZFlvdU1lYW4oZ2V0U3VnZ2VzdGVkRmllbGROYW1lcyh0eXBlLCBmaWVsZE5hbWUpKTtcbiAgICAgICAgICB9IC8vIFJlcG9ydCBhbiBlcnJvciwgaW5jbHVkaW5nIGhlbHBmdWwgc3VnZ2VzdGlvbnMuXG5cblxuICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcihcIkNhbm5vdCBxdWVyeSBmaWVsZCBcXFwiXCIuY29uY2F0KGZpZWxkTmFtZSwgXCJcXFwiIG9uIHR5cGUgXFxcIlwiKS5jb25jYXQodHlwZS5uYW1lLCBcIlxcXCIuXCIpICsgc3VnZ2VzdGlvbiwgbm9kZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuLyoqXG4gKiBHbyB0aHJvdWdoIGFsbCBvZiB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHR5cGUsIGFzIHdlbGwgYXMgdGhlIGludGVyZmFjZXMgdGhhdFxuICogdGhleSBpbXBsZW1lbnQuIElmIGFueSBvZiB0aG9zZSB0eXBlcyBpbmNsdWRlIHRoZSBwcm92aWRlZCBmaWVsZCwgc3VnZ2VzdCB0aGVtLFxuICogc29ydGVkIGJ5IGhvdyBvZnRlbiB0aGUgdHlwZSBpcyByZWZlcmVuY2VkLlxuICovXG5cbmZ1bmN0aW9uIGdldFN1Z2dlc3RlZFR5cGVOYW1lcyhzY2hlbWEsIHR5cGUsIGZpZWxkTmFtZSkge1xuICBpZiAoIWlzQWJzdHJhY3RUeXBlKHR5cGUpKSB7XG4gICAgLy8gTXVzdCBiZSBhbiBPYmplY3QgdHlwZSwgd2hpY2ggZG9lcyBub3QgaGF2ZSBwb3NzaWJsZSBmaWVsZHMuXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgdmFyIHN1Z2dlc3RlZFR5cGVzID0gbmV3IFNldCgpO1xuICB2YXIgdXNhZ2VDb3VudCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZm9yICh2YXIgX2kyID0gMCwgX3NjaGVtYSRnZXRQb3NzaWJsZVR5MiA9IHNjaGVtYS5nZXRQb3NzaWJsZVR5cGVzKHR5cGUpOyBfaTIgPCBfc2NoZW1hJGdldFBvc3NpYmxlVHkyLmxlbmd0aDsgX2kyKyspIHtcbiAgICB2YXIgcG9zc2libGVUeXBlID0gX3NjaGVtYSRnZXRQb3NzaWJsZVR5MltfaTJdO1xuXG4gICAgaWYgKCFwb3NzaWJsZVR5cGUuZ2V0RmllbGRzKClbZmllbGROYW1lXSkge1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyBUaGlzIG9iamVjdCB0eXBlIGRlZmluZXMgdGhpcyBmaWVsZC5cblxuXG4gICAgc3VnZ2VzdGVkVHlwZXMuYWRkKHBvc3NpYmxlVHlwZSk7XG4gICAgdXNhZ2VDb3VudFtwb3NzaWJsZVR5cGUubmFtZV0gPSAxO1xuXG4gICAgZm9yICh2YXIgX2k0ID0gMCwgX3Bvc3NpYmxlVHlwZSRnZXRJbnRlMiA9IHBvc3NpYmxlVHlwZS5nZXRJbnRlcmZhY2VzKCk7IF9pNCA8IF9wb3NzaWJsZVR5cGUkZ2V0SW50ZTIubGVuZ3RoOyBfaTQrKykge1xuICAgICAgdmFyIF91c2FnZUNvdW50JHBvc3NpYmxlSTtcblxuICAgICAgdmFyIHBvc3NpYmxlSW50ZXJmYWNlID0gX3Bvc3NpYmxlVHlwZSRnZXRJbnRlMltfaTRdO1xuXG4gICAgICBpZiAoIXBvc3NpYmxlSW50ZXJmYWNlLmdldEZpZWxkcygpW2ZpZWxkTmFtZV0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIFRoaXMgaW50ZXJmYWNlIHR5cGUgZGVmaW5lcyB0aGlzIGZpZWxkLlxuXG5cbiAgICAgIHN1Z2dlc3RlZFR5cGVzLmFkZChwb3NzaWJsZUludGVyZmFjZSk7XG4gICAgICB1c2FnZUNvdW50W3Bvc3NpYmxlSW50ZXJmYWNlLm5hbWVdID0gKChfdXNhZ2VDb3VudCRwb3NzaWJsZUkgPSB1c2FnZUNvdW50W3Bvc3NpYmxlSW50ZXJmYWNlLm5hbWVdKSAhPT0gbnVsbCAmJiBfdXNhZ2VDb3VudCRwb3NzaWJsZUkgIT09IHZvaWQgMCA/IF91c2FnZUNvdW50JHBvc3NpYmxlSSA6IDApICsgMTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJyYXlGcm9tKHN1Z2dlc3RlZFR5cGVzKS5zb3J0KGZ1bmN0aW9uICh0eXBlQSwgdHlwZUIpIHtcbiAgICAvLyBTdWdnZXN0IGJvdGggaW50ZXJmYWNlIGFuZCBvYmplY3QgdHlwZXMgYmFzZWQgb24gaG93IGNvbW1vbiB0aGV5IGFyZS5cbiAgICB2YXIgdXNhZ2VDb3VudERpZmYgPSB1c2FnZUNvdW50W3R5cGVCLm5hbWVdIC0gdXNhZ2VDb3VudFt0eXBlQS5uYW1lXTtcblxuICAgIGlmICh1c2FnZUNvdW50RGlmZiAhPT0gMCkge1xuICAgICAgcmV0dXJuIHVzYWdlQ291bnREaWZmO1xuICAgIH0gLy8gU3VnZ2VzdCBzdXBlciB0eXBlcyBmaXJzdCBmb2xsb3dlZCBieSBzdWJ0eXBlc1xuXG5cbiAgICBpZiAoaXNJbnRlcmZhY2VUeXBlKHR5cGVBKSAmJiBzY2hlbWEuaXNTdWJUeXBlKHR5cGVBLCB0eXBlQikpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBpZiAoaXNJbnRlcmZhY2VUeXBlKHR5cGVCKSAmJiBzY2hlbWEuaXNTdWJUeXBlKHR5cGVCLCB0eXBlQSkpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlQS5uYW1lLmxvY2FsZUNvbXBhcmUodHlwZUIubmFtZSk7XG4gIH0pLm1hcChmdW5jdGlvbiAoeCkge1xuICAgIHJldHVybiB4Lm5hbWU7XG4gIH0pO1xufVxuLyoqXG4gKiBGb3IgdGhlIGZpZWxkIG5hbWUgcHJvdmlkZWQsIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IHNpbWlsYXIgZmllbGQgbmFtZXNcbiAqIHRoYXQgbWF5IGJlIHRoZSByZXN1bHQgb2YgYSB0eXBvLlxuICovXG5cblxuZnVuY3Rpb24gZ2V0U3VnZ2VzdGVkRmllbGROYW1lcyh0eXBlLCBmaWVsZE5hbWUpIHtcbiAgaWYgKGlzT2JqZWN0VHlwZSh0eXBlKSB8fCBpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICB2YXIgcG9zc2libGVGaWVsZE5hbWVzID0gT2JqZWN0LmtleXModHlwZS5nZXRGaWVsZHMoKSk7XG4gICAgcmV0dXJuIHN1Z2dlc3Rpb25MaXN0KGZpZWxkTmFtZSwgcG9zc2libGVGaWVsZE5hbWVzKTtcbiAgfSAvLyBPdGhlcndpc2UsIG11c3QgYmUgYSBVbmlvbiB0eXBlLCB3aGljaCBkb2VzIG5vdCBkZWZpbmUgZmllbGRzLlxuXG5cbiAgcmV0dXJuIFtdO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs\n");
1413
1414/***/ }),
1415
1416/***/ "../../../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs":
1417/*!*******************************************************************************************************************!*\
1418 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs ***!
1419 \*******************************************************************************************************************/
1420/*! exports provided: FragmentsOnCompositeTypesRule */
1421/***/ (function(module, __webpack_exports__, __webpack_require__) {
1422
1423"use strict";
1424eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FragmentsOnCompositeTypesRule\", function() { return FragmentsOnCompositeTypesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n\n\n\n\n\n/**\n * Fragments on composite type\n *\n * Fragments use a type condition to determine if they apply, since fragments\n * can only be spread into a composite type (object, interface, or union), the\n * type condition must also be a composite type.\n */\nfunction FragmentsOnCompositeTypesRule(context) {\n return {\n InlineFragment: function InlineFragment(node) {\n var typeCondition = node.typeCondition;\n\n if (typeCondition) {\n var type = Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_3__[\"typeFromAST\"])(context.getSchema(), typeCondition);\n\n if (type && !Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isCompositeType\"])(type)) {\n var typeStr = Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_1__[\"print\"])(typeCondition);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"Fragment cannot condition on non composite type \\\"\".concat(typeStr, \"\\\".\"), typeCondition));\n }\n }\n },\n FragmentDefinition: function FragmentDefinition(node) {\n var type = Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_3__[\"typeFromAST\"])(context.getSchema(), node.typeCondition);\n\n if (type && !Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isCompositeType\"])(type)) {\n var typeStr = Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_1__[\"print\"])(node.typeCondition);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"Fragment \\\"\".concat(node.name.value, \"\\\" cannot condition on non composite type \\\"\").concat(typeStr, \"\\\".\"), node.typeCondition));\n }\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9GcmFnbWVudHNPbkNvbXBvc2l0ZVR5cGVzUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0ZyYWdtZW50c09uQ29tcG9zaXRlVHlwZXNSdWxlLm1qcz8yZDAwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5pbXBvcnQgeyBwcmludCB9IGZyb20gXCIuLi8uLi9sYW5ndWFnZS9wcmludGVyLm1qc1wiO1xuaW1wb3J0IHsgaXNDb21wb3NpdGVUeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGUvZGVmaW5pdGlvbi5tanNcIjtcbmltcG9ydCB7IHR5cGVGcm9tQVNUIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy90eXBlRnJvbUFTVC5tanNcIjtcblxuLyoqXG4gKiBGcmFnbWVudHMgb24gY29tcG9zaXRlIHR5cGVcbiAqXG4gKiBGcmFnbWVudHMgdXNlIGEgdHlwZSBjb25kaXRpb24gdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXBwbHksIHNpbmNlIGZyYWdtZW50c1xuICogY2FuIG9ubHkgYmUgc3ByZWFkIGludG8gYSBjb21wb3NpdGUgdHlwZSAob2JqZWN0LCBpbnRlcmZhY2UsIG9yIHVuaW9uKSwgdGhlXG4gKiB0eXBlIGNvbmRpdGlvbiBtdXN0IGFsc28gYmUgYSBjb21wb3NpdGUgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEZyYWdtZW50c09uQ29tcG9zaXRlVHlwZXNSdWxlKGNvbnRleHQpIHtcbiAgcmV0dXJuIHtcbiAgICBJbmxpbmVGcmFnbWVudDogZnVuY3Rpb24gSW5saW5lRnJhZ21lbnQobm9kZSkge1xuICAgICAgdmFyIHR5cGVDb25kaXRpb24gPSBub2RlLnR5cGVDb25kaXRpb247XG5cbiAgICAgIGlmICh0eXBlQ29uZGl0aW9uKSB7XG4gICAgICAgIHZhciB0eXBlID0gdHlwZUZyb21BU1QoY29udGV4dC5nZXRTY2hlbWEoKSwgdHlwZUNvbmRpdGlvbik7XG5cbiAgICAgICAgaWYgKHR5cGUgJiYgIWlzQ29tcG9zaXRlVHlwZSh0eXBlKSkge1xuICAgICAgICAgIHZhciB0eXBlU3RyID0gcHJpbnQodHlwZUNvbmRpdGlvbik7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiRnJhZ21lbnQgY2Fubm90IGNvbmRpdGlvbiBvbiBub24gY29tcG9zaXRlIHR5cGUgXFxcIlwiLmNvbmNhdCh0eXBlU3RyLCBcIlxcXCIuXCIpLCB0eXBlQ29uZGl0aW9uKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIEZyYWdtZW50RGVmaW5pdGlvbjogZnVuY3Rpb24gRnJhZ21lbnREZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgIHZhciB0eXBlID0gdHlwZUZyb21BU1QoY29udGV4dC5nZXRTY2hlbWEoKSwgbm9kZS50eXBlQ29uZGl0aW9uKTtcblxuICAgICAgaWYgKHR5cGUgJiYgIWlzQ29tcG9zaXRlVHlwZSh0eXBlKSkge1xuICAgICAgICB2YXIgdHlwZVN0ciA9IHByaW50KG5vZGUudHlwZUNvbmRpdGlvbik7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcihcIkZyYWdtZW50IFxcXCJcIi5jb25jYXQobm9kZS5uYW1lLnZhbHVlLCBcIlxcXCIgY2Fubm90IGNvbmRpdGlvbiBvbiBub24gY29tcG9zaXRlIHR5cGUgXFxcIlwiKS5jb25jYXQodHlwZVN0ciwgXCJcXFwiLlwiKSwgbm9kZS50eXBlQ29uZGl0aW9uKSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs\n");
1425
1426/***/ }),
1427
1428/***/ "../../../node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs":
1429/*!************************************************************************************************************!*\
1430 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs ***!
1431 \************************************************************************************************************/
1432/*! exports provided: KnownArgumentNamesRule, KnownArgumentNamesOnDirectivesRule */
1433/***/ (function(module, __webpack_exports__, __webpack_require__) {
1434
1435"use strict";
1436eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KnownArgumentNamesRule\", function() { return KnownArgumentNamesRule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KnownArgumentNamesOnDirectivesRule\", function() { return KnownArgumentNamesOnDirectivesRule; });\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/suggestionList.mjs */ \"../../../node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n/**\n * Known argument names\n *\n * A GraphQL field is only valid if all supplied arguments are defined by\n * that field.\n */\nfunction KnownArgumentNamesRule(context) {\n return _objectSpread(_objectSpread({}, KnownArgumentNamesOnDirectivesRule(context)), {}, {\n Argument: function Argument(argNode) {\n var argDef = context.getArgument();\n var fieldDef = context.getFieldDef();\n var parentType = context.getParentType();\n\n if (!argDef && fieldDef && parentType) {\n var argName = argNode.name.value;\n var knownArgsNames = fieldDef.args.map(function (arg) {\n return arg.name;\n });\n var suggestions = Object(_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(argName, knownArgsNames);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\"Unknown argument \\\"\".concat(argName, \"\\\" on field \\\"\").concat(parentType.name, \".\").concat(fieldDef.name, \"\\\".\") + Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(suggestions), argNode));\n }\n }\n });\n}\n/**\n * @internal\n */\n\nfunction KnownArgumentNamesOnDirectivesRule(context) {\n var directiveArgs = Object.create(null);\n var schema = context.getSchema();\n var definedDirectives = schema ? schema.getDirectives() : _type_directives_mjs__WEBPACK_IMPORTED_MODULE_4__[\"specifiedDirectives\"];\n\n for (var _i2 = 0; _i2 < definedDirectives.length; _i2++) {\n var directive = definedDirectives[_i2];\n directiveArgs[directive.name] = directive.args.map(function (arg) {\n return arg.name;\n });\n }\n\n var astDefinitions = context.getDocument().definitions;\n\n for (var _i4 = 0; _i4 < astDefinitions.length; _i4++) {\n var def = astDefinitions[_i4];\n\n if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].DIRECTIVE_DEFINITION) {\n var _def$arguments;\n\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n var argsNodes = (_def$arguments = def.arguments) !== null && _def$arguments !== void 0 ? _def$arguments : [];\n directiveArgs[def.name.value] = argsNodes.map(function (arg) {\n return arg.name.value;\n });\n }\n }\n\n return {\n Directive: function Directive(directiveNode) {\n var directiveName = directiveNode.name.value;\n var knownArgs = directiveArgs[directiveName];\n\n if (directiveNode.arguments && knownArgs) {\n for (var _i6 = 0, _directiveNode$argume2 = directiveNode.arguments; _i6 < _directiveNode$argume2.length; _i6++) {\n var argNode = _directiveNode$argume2[_i6];\n var argName = argNode.name.value;\n\n if (knownArgs.indexOf(argName) === -1) {\n var suggestions = Object(_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(argName, knownArgs);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\"Unknown argument \\\"\".concat(argName, \"\\\" on directive \\\"@\").concat(directiveName, \"\\\".\") + Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(suggestions), argNode));\n }\n }\n }\n\n return false;\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Lbm93bkFyZ3VtZW50TmFtZXNSdWxlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvS25vd25Bcmd1bWVudE5hbWVzUnVsZS5tanM/YjgzYyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IGRpZFlvdU1lYW4gZnJvbSBcIi4uLy4uL2pzdXRpbHMvZGlkWW91TWVhbi5tanNcIjtcbmltcG9ydCBzdWdnZXN0aW9uTGlzdCBmcm9tIFwiLi4vLi4vanN1dGlscy9zdWdnZXN0aW9uTGlzdC5tanNcIjtcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSBcIi4uLy4uL2xhbmd1YWdlL2tpbmRzLm1qc1wiO1xuaW1wb3J0IHsgc3BlY2lmaWVkRGlyZWN0aXZlcyB9IGZyb20gXCIuLi8uLi90eXBlL2RpcmVjdGl2ZXMubWpzXCI7XG5cbi8qKlxuICogS25vd24gYXJndW1lbnQgbmFtZXNcbiAqXG4gKiBBIEdyYXBoUUwgZmllbGQgaXMgb25seSB2YWxpZCBpZiBhbGwgc3VwcGxpZWQgYXJndW1lbnRzIGFyZSBkZWZpbmVkIGJ5XG4gKiB0aGF0IGZpZWxkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gS25vd25Bcmd1bWVudE5hbWVzUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIEtub3duQXJndW1lbnROYW1lc09uRGlyZWN0aXZlc1J1bGUoY29udGV4dCkpLCB7fSwge1xuICAgIEFyZ3VtZW50OiBmdW5jdGlvbiBBcmd1bWVudChhcmdOb2RlKSB7XG4gICAgICB2YXIgYXJnRGVmID0gY29udGV4dC5nZXRBcmd1bWVudCgpO1xuICAgICAgdmFyIGZpZWxkRGVmID0gY29udGV4dC5nZXRGaWVsZERlZigpO1xuICAgICAgdmFyIHBhcmVudFR5cGUgPSBjb250ZXh0LmdldFBhcmVudFR5cGUoKTtcblxuICAgICAgaWYgKCFhcmdEZWYgJiYgZmllbGREZWYgJiYgcGFyZW50VHlwZSkge1xuICAgICAgICB2YXIgYXJnTmFtZSA9IGFyZ05vZGUubmFtZS52YWx1ZTtcbiAgICAgICAgdmFyIGtub3duQXJnc05hbWVzID0gZmllbGREZWYuYXJncy5tYXAoZnVuY3Rpb24gKGFyZykge1xuICAgICAgICAgIHJldHVybiBhcmcubmFtZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25MaXN0KGFyZ05hbWUsIGtub3duQXJnc05hbWVzKTtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiVW5rbm93biBhcmd1bWVudCBcXFwiXCIuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBvbiBmaWVsZCBcXFwiXCIpLmNvbmNhdChwYXJlbnRUeXBlLm5hbWUsIFwiLlwiKS5jb25jYXQoZmllbGREZWYubmFtZSwgXCJcXFwiLlwiKSArIGRpZFlvdU1lYW4oc3VnZ2VzdGlvbnMpLCBhcmdOb2RlKSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cbi8qKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIEtub3duQXJndW1lbnROYW1lc09uRGlyZWN0aXZlc1J1bGUoY29udGV4dCkge1xuICB2YXIgZGlyZWN0aXZlQXJncyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciBzY2hlbWEgPSBjb250ZXh0LmdldFNjaGVtYSgpO1xuICB2YXIgZGVmaW5lZERpcmVjdGl2ZXMgPSBzY2hlbWEgPyBzY2hlbWEuZ2V0RGlyZWN0aXZlcygpIDogc3BlY2lmaWVkRGlyZWN0aXZlcztcblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBkZWZpbmVkRGlyZWN0aXZlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIGRpcmVjdGl2ZSA9IGRlZmluZWREaXJlY3RpdmVzW19pMl07XG4gICAgZGlyZWN0aXZlQXJnc1tkaXJlY3RpdmUubmFtZV0gPSBkaXJlY3RpdmUuYXJncy5tYXAoZnVuY3Rpb24gKGFyZykge1xuICAgICAgcmV0dXJuIGFyZy5uYW1lO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGFzdERlZmluaXRpb25zID0gY29udGV4dC5nZXREb2N1bWVudCgpLmRlZmluaXRpb25zO1xuXG4gIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IGFzdERlZmluaXRpb25zLmxlbmd0aDsgX2k0KyspIHtcbiAgICB2YXIgZGVmID0gYXN0RGVmaW5pdGlvbnNbX2k0XTtcblxuICAgIGlmIChkZWYua2luZCA9PT0gS2luZC5ESVJFQ1RJVkVfREVGSU5JVElPTikge1xuICAgICAgdmFyIF9kZWYkYXJndW1lbnRzO1xuXG4gICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwMycpXG4gICAgICB2YXIgYXJnc05vZGVzID0gKF9kZWYkYXJndW1lbnRzID0gZGVmLmFyZ3VtZW50cykgIT09IG51bGwgJiYgX2RlZiRhcmd1bWVudHMgIT09IHZvaWQgMCA/IF9kZWYkYXJndW1lbnRzIDogW107XG4gICAgICBkaXJlY3RpdmVBcmdzW2RlZi5uYW1lLnZhbHVlXSA9IGFyZ3NOb2Rlcy5tYXAoZnVuY3Rpb24gKGFyZykge1xuICAgICAgICByZXR1cm4gYXJnLm5hbWUudmFsdWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIERpcmVjdGl2ZTogZnVuY3Rpb24gRGlyZWN0aXZlKGRpcmVjdGl2ZU5vZGUpIHtcbiAgICAgIHZhciBkaXJlY3RpdmVOYW1lID0gZGlyZWN0aXZlTm9kZS5uYW1lLnZhbHVlO1xuICAgICAgdmFyIGtub3duQXJncyA9IGRpcmVjdGl2ZUFyZ3NbZGlyZWN0aXZlTmFtZV07XG5cbiAgICAgIGlmIChkaXJlY3RpdmVOb2RlLmFyZ3VtZW50cyAmJiBrbm93bkFyZ3MpIHtcbiAgICAgICAgZm9yICh2YXIgX2k2ID0gMCwgX2RpcmVjdGl2ZU5vZGUkYXJndW1lMiA9IGRpcmVjdGl2ZU5vZGUuYXJndW1lbnRzOyBfaTYgPCBfZGlyZWN0aXZlTm9kZSRhcmd1bWUyLmxlbmd0aDsgX2k2KyspIHtcbiAgICAgICAgICB2YXIgYXJnTm9kZSA9IF9kaXJlY3RpdmVOb2RlJGFyZ3VtZTJbX2k2XTtcbiAgICAgICAgICB2YXIgYXJnTmFtZSA9IGFyZ05vZGUubmFtZS52YWx1ZTtcblxuICAgICAgICAgIGlmIChrbm93bkFyZ3MuaW5kZXhPZihhcmdOYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHZhciBzdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25MaXN0KGFyZ05hbWUsIGtub3duQXJncyk7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJVbmtub3duIGFyZ3VtZW50IFxcXCJcIi5jb25jYXQoYXJnTmFtZSwgXCJcXFwiIG9uIGRpcmVjdGl2ZSBcXFwiQFwiKS5jb25jYXQoZGlyZWN0aXZlTmFtZSwgXCJcXFwiLlwiKSArIGRpZFlvdU1lYW4oc3VnZ2VzdGlvbnMpLCBhcmdOb2RlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs\n");
1437
1438/***/ }),
1439
1440/***/ "../../../node_modules/graphql/validation/rules/KnownDirectivesRule.mjs":
1441/*!*********************************************************************************************************!*\
1442 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/KnownDirectivesRule.mjs ***!
1443 \*********************************************************************************************************/
1444/*! exports provided: KnownDirectivesRule */
1445/***/ (function(module, __webpack_exports__, __webpack_require__) {
1446
1447"use strict";
1448eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KnownDirectivesRule\", function() { return KnownDirectivesRule; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../language/directiveLocation.mjs */ \"../../../node_modules/graphql/language/directiveLocation.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n\n\n\n\n\n\n\n/**\n * Known directives\n *\n * A GraphQL document is only valid if all `@directives` are known by the\n * schema and legally positioned.\n */\nfunction KnownDirectivesRule(context) {\n var locationsMap = Object.create(null);\n var schema = context.getSchema();\n var definedDirectives = schema ? schema.getDirectives() : _type_directives_mjs__WEBPACK_IMPORTED_MODULE_5__[\"specifiedDirectives\"];\n\n for (var _i2 = 0; _i2 < definedDirectives.length; _i2++) {\n var directive = definedDirectives[_i2];\n locationsMap[directive.name] = directive.locations;\n }\n\n var astDefinitions = context.getDocument().definitions;\n\n for (var _i4 = 0; _i4 < astDefinitions.length; _i4++) {\n var def = astDefinitions[_i4];\n\n if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].DIRECTIVE_DEFINITION) {\n locationsMap[def.name.value] = def.locations.map(function (name) {\n return name.value;\n });\n }\n }\n\n return {\n Directive: function Directive(node, _key, _parent, _path, ancestors) {\n var name = node.name.value;\n var locations = locationsMap[name];\n\n if (!locations) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\"Unknown directive \\\"@\".concat(name, \"\\\".\"), node));\n return;\n }\n\n var candidateLocation = getDirectiveLocationForASTPath(ancestors);\n\n if (candidateLocation && locations.indexOf(candidateLocation) === -1) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\"Directive \\\"@\".concat(name, \"\\\" may not be used on \").concat(candidateLocation, \".\"), node));\n }\n }\n };\n}\n\nfunction getDirectiveLocationForASTPath(ancestors) {\n var appliedTo = ancestors[ancestors.length - 1];\n !Array.isArray(appliedTo) || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(0);\n\n switch (appliedTo.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].OPERATION_DEFINITION:\n return getDirectiveLocationForOperation(appliedTo.operation);\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].FIELD:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].FIELD;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].FRAGMENT_SPREAD:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].FRAGMENT_SPREAD;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INLINE_FRAGMENT:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].INLINE_FRAGMENT;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].FRAGMENT_DEFINITION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].FRAGMENT_DEFINITION;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].VARIABLE_DEFINITION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].VARIABLE_DEFINITION;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].SCHEMA_DEFINITION:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].SCHEMA_EXTENSION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].SCHEMA;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].SCALAR_TYPE_DEFINITION:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].SCALAR_TYPE_EXTENSION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].SCALAR;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].OBJECT_TYPE_DEFINITION:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].OBJECT_TYPE_EXTENSION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].OBJECT;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].FIELD_DEFINITION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].FIELD_DEFINITION;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INTERFACE_TYPE_DEFINITION:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INTERFACE_TYPE_EXTENSION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].INTERFACE;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].UNION_TYPE_DEFINITION:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].UNION_TYPE_EXTENSION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].UNION;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].ENUM_TYPE_DEFINITION:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].ENUM_TYPE_EXTENSION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].ENUM;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].ENUM_VALUE_DEFINITION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].ENUM_VALUE;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INPUT_OBJECT_TYPE_DEFINITION:\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INPUT_OBJECT_TYPE_EXTENSION:\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].INPUT_OBJECT;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INPUT_VALUE_DEFINITION:\n {\n var parentNode = ancestors[ancestors.length - 3];\n return parentNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].INPUT_OBJECT_TYPE_DEFINITION ? _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].INPUT_FIELD_DEFINITION : _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].ARGUMENT_DEFINITION;\n }\n }\n}\n\nfunction getDirectiveLocationForOperation(operation) {\n switch (operation) {\n case 'query':\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].QUERY;\n\n case 'mutation':\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].MUTATION;\n\n case 'subscription':\n return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__[\"DirectiveLocation\"].SUBSCRIPTION;\n } // istanbul ignore next (Not reachable. All possible types have been considered)\n\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(0, 'Unexpected operation: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(operation));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Lbm93bkRpcmVjdGl2ZXNSdWxlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvS25vd25EaXJlY3RpdmVzUnVsZS5tanM/Y2QxYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5zcGVjdCBmcm9tIFwiLi4vLi4vanN1dGlscy9pbnNwZWN0Lm1qc1wiO1xuaW1wb3J0IGludmFyaWFudCBmcm9tIFwiLi4vLi4vanN1dGlscy9pbnZhcmlhbnQubWpzXCI7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qc1wiO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gXCIuLi8uLi9sYW5ndWFnZS9raW5kcy5tanNcIjtcbmltcG9ydCB7IERpcmVjdGl2ZUxvY2F0aW9uIH0gZnJvbSBcIi4uLy4uL2xhbmd1YWdlL2RpcmVjdGl2ZUxvY2F0aW9uLm1qc1wiO1xuaW1wb3J0IHsgc3BlY2lmaWVkRGlyZWN0aXZlcyB9IGZyb20gXCIuLi8uLi90eXBlL2RpcmVjdGl2ZXMubWpzXCI7XG5cbi8qKlxuICogS25vd24gZGlyZWN0aXZlc1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBgQGRpcmVjdGl2ZXNgIGFyZSBrbm93biBieSB0aGVcbiAqIHNjaGVtYSBhbmQgbGVnYWxseSBwb3NpdGlvbmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gS25vd25EaXJlY3RpdmVzUnVsZShjb250ZXh0KSB7XG4gIHZhciBsb2NhdGlvbnNNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2YXIgc2NoZW1hID0gY29udGV4dC5nZXRTY2hlbWEoKTtcbiAgdmFyIGRlZmluZWREaXJlY3RpdmVzID0gc2NoZW1hID8gc2NoZW1hLmdldERpcmVjdGl2ZXMoKSA6IHNwZWNpZmllZERpcmVjdGl2ZXM7XG5cbiAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgZGVmaW5lZERpcmVjdGl2ZXMubGVuZ3RoOyBfaTIrKykge1xuICAgIHZhciBkaXJlY3RpdmUgPSBkZWZpbmVkRGlyZWN0aXZlc1tfaTJdO1xuICAgIGxvY2F0aW9uc01hcFtkaXJlY3RpdmUubmFtZV0gPSBkaXJlY3RpdmUubG9jYXRpb25zO1xuICB9XG5cbiAgdmFyIGFzdERlZmluaXRpb25zID0gY29udGV4dC5nZXREb2N1bWVudCgpLmRlZmluaXRpb25zO1xuXG4gIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IGFzdERlZmluaXRpb25zLmxlbmd0aDsgX2k0KyspIHtcbiAgICB2YXIgZGVmID0gYXN0RGVmaW5pdGlvbnNbX2k0XTtcblxuICAgIGlmIChkZWYua2luZCA9PT0gS2luZC5ESVJFQ1RJVkVfREVGSU5JVElPTikge1xuICAgICAgbG9jYXRpb25zTWFwW2RlZi5uYW1lLnZhbHVlXSA9IGRlZi5sb2NhdGlvbnMubWFwKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJldHVybiBuYW1lLnZhbHVlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBEaXJlY3RpdmU6IGZ1bmN0aW9uIERpcmVjdGl2ZShub2RlLCBfa2V5LCBfcGFyZW50LCBfcGF0aCwgYW5jZXN0b3JzKSB7XG4gICAgICB2YXIgbmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcbiAgICAgIHZhciBsb2NhdGlvbnMgPSBsb2NhdGlvbnNNYXBbbmFtZV07XG5cbiAgICAgIGlmICghbG9jYXRpb25zKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcihcIlVua25vd24gZGlyZWN0aXZlIFxcXCJAXCIuY29uY2F0KG5hbWUsIFwiXFxcIi5cIiksIG5vZGUpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgY2FuZGlkYXRlTG9jYXRpb24gPSBnZXREaXJlY3RpdmVMb2NhdGlvbkZvckFTVFBhdGgoYW5jZXN0b3JzKTtcblxuICAgICAgaWYgKGNhbmRpZGF0ZUxvY2F0aW9uICYmIGxvY2F0aW9ucy5pbmRleE9mKGNhbmRpZGF0ZUxvY2F0aW9uKSA9PT0gLTEpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiRGlyZWN0aXZlIFxcXCJAXCIuY29uY2F0KG5hbWUsIFwiXFxcIiBtYXkgbm90IGJlIHVzZWQgb24gXCIpLmNvbmNhdChjYW5kaWRhdGVMb2NhdGlvbiwgXCIuXCIpLCBub2RlKSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXREaXJlY3RpdmVMb2NhdGlvbkZvckFTVFBhdGgoYW5jZXN0b3JzKSB7XG4gIHZhciBhcHBsaWVkVG8gPSBhbmNlc3RvcnNbYW5jZXN0b3JzLmxlbmd0aCAtIDFdO1xuICAhQXJyYXkuaXNBcnJheShhcHBsaWVkVG8pIHx8IGludmFyaWFudCgwKTtcblxuICBzd2l0Y2ggKGFwcGxpZWRUby5raW5kKSB7XG4gICAgY2FzZSBLaW5kLk9QRVJBVElPTl9ERUZJTklUSU9OOlxuICAgICAgcmV0dXJuIGdldERpcmVjdGl2ZUxvY2F0aW9uRm9yT3BlcmF0aW9uKGFwcGxpZWRUby5vcGVyYXRpb24pO1xuXG4gICAgY2FzZSBLaW5kLkZJRUxEOlxuICAgICAgcmV0dXJuIERpcmVjdGl2ZUxvY2F0aW9uLkZJRUxEO1xuXG4gICAgY2FzZSBLaW5kLkZSQUdNRU5UX1NQUkVBRDpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5GUkFHTUVOVF9TUFJFQUQ7XG5cbiAgICBjYXNlIEtpbmQuSU5MSU5FX0ZSQUdNRU5UOlxuICAgICAgcmV0dXJuIERpcmVjdGl2ZUxvY2F0aW9uLklOTElORV9GUkFHTUVOVDtcblxuICAgIGNhc2UgS2luZC5GUkFHTUVOVF9ERUZJTklUSU9OOlxuICAgICAgcmV0dXJuIERpcmVjdGl2ZUxvY2F0aW9uLkZSQUdNRU5UX0RFRklOSVRJT047XG5cbiAgICBjYXNlIEtpbmQuVkFSSUFCTEVfREVGSU5JVElPTjpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5WQVJJQUJMRV9ERUZJTklUSU9OO1xuXG4gICAgY2FzZSBLaW5kLlNDSEVNQV9ERUZJTklUSU9OOlxuICAgIGNhc2UgS2luZC5TQ0hFTUFfRVhURU5TSU9OOlxuICAgICAgcmV0dXJuIERpcmVjdGl2ZUxvY2F0aW9uLlNDSEVNQTtcblxuICAgIGNhc2UgS2luZC5TQ0FMQVJfVFlQRV9ERUZJTklUSU9OOlxuICAgIGNhc2UgS2luZC5TQ0FMQVJfVFlQRV9FWFRFTlNJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uU0NBTEFSO1xuXG4gICAgY2FzZSBLaW5kLk9CSkVDVF9UWVBFX0RFRklOSVRJT046XG4gICAgY2FzZSBLaW5kLk9CSkVDVF9UWVBFX0VYVEVOU0lPTjpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5PQkpFQ1Q7XG5cbiAgICBjYXNlIEtpbmQuRklFTERfREVGSU5JVElPTjpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5GSUVMRF9ERUZJTklUSU9OO1xuXG4gICAgY2FzZSBLaW5kLklOVEVSRkFDRV9UWVBFX0RFRklOSVRJT046XG4gICAgY2FzZSBLaW5kLklOVEVSRkFDRV9UWVBFX0VYVEVOU0lPTjpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5JTlRFUkZBQ0U7XG5cbiAgICBjYXNlIEtpbmQuVU5JT05fVFlQRV9ERUZJTklUSU9OOlxuICAgIGNhc2UgS2luZC5VTklPTl9UWVBFX0VYVEVOU0lPTjpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5VTklPTjtcblxuICAgIGNhc2UgS2luZC5FTlVNX1RZUEVfREVGSU5JVElPTjpcbiAgICBjYXNlIEtpbmQuRU5VTV9UWVBFX0VYVEVOU0lPTjpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5FTlVNO1xuXG4gICAgY2FzZSBLaW5kLkVOVU1fVkFMVUVfREVGSU5JVElPTjpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5FTlVNX1ZBTFVFO1xuXG4gICAgY2FzZSBLaW5kLklOUFVUX09CSkVDVF9UWVBFX0RFRklOSVRJT046XG4gICAgY2FzZSBLaW5kLklOUFVUX09CSkVDVF9UWVBFX0VYVEVOU0lPTjpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5JTlBVVF9PQkpFQ1Q7XG5cbiAgICBjYXNlIEtpbmQuSU5QVVRfVkFMVUVfREVGSU5JVElPTjpcbiAgICAgIHtcbiAgICAgICAgdmFyIHBhcmVudE5vZGUgPSBhbmNlc3RvcnNbYW5jZXN0b3JzLmxlbmd0aCAtIDNdO1xuICAgICAgICByZXR1cm4gcGFyZW50Tm9kZS5raW5kID09PSBLaW5kLklOUFVUX09CSkVDVF9UWVBFX0RFRklOSVRJT04gPyBEaXJlY3RpdmVMb2NhdGlvbi5JTlBVVF9GSUVMRF9ERUZJTklUSU9OIDogRGlyZWN0aXZlTG9jYXRpb24uQVJHVU1FTlRfREVGSU5JVElPTjtcbiAgICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREaXJlY3RpdmVMb2NhdGlvbkZvck9wZXJhdGlvbihvcGVyYXRpb24pIHtcbiAgc3dpdGNoIChvcGVyYXRpb24pIHtcbiAgICBjYXNlICdxdWVyeSc6XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uUVVFUlk7XG5cbiAgICBjYXNlICdtdXRhdGlvbic6XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uTVVUQVRJT047XG5cbiAgICBjYXNlICdzdWJzY3JpcHRpb24nOlxuICAgICAgcmV0dXJuIERpcmVjdGl2ZUxvY2F0aW9uLlNVQlNDUklQVElPTjtcbiAgfSAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoTm90IHJlYWNoYWJsZS4gQWxsIHBvc3NpYmxlIHR5cGVzIGhhdmUgYmVlbiBjb25zaWRlcmVkKVxuXG5cbiAgZmFsc2UgfHwgaW52YXJpYW50KDAsICdVbmV4cGVjdGVkIG9wZXJhdGlvbjogJyArIGluc3BlY3Qob3BlcmF0aW9uKSk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/KnownDirectivesRule.mjs\n");
1449
1450/***/ }),
1451
1452/***/ "../../../node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs":
1453/*!************************************************************************************************************!*\
1454 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs ***!
1455 \************************************************************************************************************/
1456/*! exports provided: KnownFragmentNamesRule */
1457/***/ (function(module, __webpack_exports__, __webpack_require__) {
1458
1459"use strict";
1460eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KnownFragmentNamesRule\", function() { return KnownFragmentNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Known fragment names\n *\n * A GraphQL document is only valid if all `...Fragment` fragment spreads refer\n * to fragments defined in the same document.\n */\nfunction KnownFragmentNamesRule(context) {\n return {\n FragmentSpread: function FragmentSpread(node) {\n var fragmentName = node.name.value;\n var fragment = context.getFragment(fragmentName);\n\n if (!fragment) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"Unknown fragment \\\"\".concat(fragmentName, \"\\\".\"), node.name));\n }\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Lbm93bkZyYWdtZW50TmFtZXNSdWxlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvS25vd25GcmFnbWVudE5hbWVzUnVsZS5tanM/MzMwZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qc1wiO1xuXG4vKipcbiAqIEtub3duIGZyYWdtZW50IG5hbWVzXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgYWxsIGAuLi5GcmFnbWVudGAgZnJhZ21lbnQgc3ByZWFkcyByZWZlclxuICogdG8gZnJhZ21lbnRzIGRlZmluZWQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBLbm93bkZyYWdtZW50TmFtZXNSdWxlKGNvbnRleHQpIHtcbiAgcmV0dXJuIHtcbiAgICBGcmFnbWVudFNwcmVhZDogZnVuY3Rpb24gRnJhZ21lbnRTcHJlYWQobm9kZSkge1xuICAgICAgdmFyIGZyYWdtZW50TmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcbiAgICAgIHZhciBmcmFnbWVudCA9IGNvbnRleHQuZ2V0RnJhZ21lbnQoZnJhZ21lbnROYW1lKTtcblxuICAgICAgaWYgKCFmcmFnbWVudCkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJVbmtub3duIGZyYWdtZW50IFxcXCJcIi5jb25jYXQoZnJhZ21lbnROYW1lLCBcIlxcXCIuXCIpLCBub2RlLm5hbWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs\n");
1461
1462/***/ }),
1463
1464/***/ "../../../node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs":
1465/*!********************************************************************************************************!*\
1466 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs ***!
1467 \********************************************************************************************************/
1468/*! exports provided: KnownTypeNamesRule */
1469/***/ (function(module, __webpack_exports__, __webpack_require__) {
1470
1471"use strict";
1472eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KnownTypeNamesRule\", function() { return KnownTypeNamesRule; });\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/suggestionList.mjs */ \"../../../node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_predicates_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../language/predicates.mjs */ \"../../../node_modules/graphql/language/predicates.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../type/scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n\n\n\n\n\n\n\n/**\n * Known type names\n *\n * A GraphQL document is only valid if referenced types (specifically\n * variable definitions and fragment conditions) are defined by the type schema.\n */\nfunction KnownTypeNamesRule(context) {\n var schema = context.getSchema();\n var existingTypesMap = schema ? schema.getTypeMap() : Object.create(null);\n var definedTypes = Object.create(null);\n\n for (var _i2 = 0, _context$getDocument$2 = context.getDocument().definitions; _i2 < _context$getDocument$2.length; _i2++) {\n var def = _context$getDocument$2[_i2];\n\n if (Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeDefinitionNode\"])(def)) {\n definedTypes[def.name.value] = true;\n }\n }\n\n var typeNames = Object.keys(existingTypesMap).concat(Object.keys(definedTypes));\n return {\n NamedType: function NamedType(node, _1, parent, _2, ancestors) {\n var typeName = node.name.value;\n\n if (!existingTypesMap[typeName] && !definedTypes[typeName]) {\n var _ancestors$;\n\n var definitionNode = (_ancestors$ = ancestors[2]) !== null && _ancestors$ !== void 0 ? _ancestors$ : parent;\n var isSDL = definitionNode != null && isSDLNode(definitionNode);\n\n if (isSDL && isStandardTypeName(typeName)) {\n return;\n }\n\n var suggestedTypes = Object(_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(typeName, isSDL ? standardTypeNames.concat(typeNames) : typeNames);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\"Unknown type \\\"\".concat(typeName, \"\\\".\") + Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(suggestedTypes), node));\n }\n }\n };\n}\nvar standardTypeNames = [].concat(_type_scalars_mjs__WEBPACK_IMPORTED_MODULE_4__[\"specifiedScalarTypes\"], _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__[\"introspectionTypes\"]).map(function (type) {\n return type.name;\n});\n\nfunction isStandardTypeName(typeName) {\n return standardTypeNames.indexOf(typeName) !== -1;\n}\n\nfunction isSDLNode(value) {\n return !Array.isArray(value) && (Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeSystemDefinitionNode\"])(value) || Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isTypeSystemExtensionNode\"])(value));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Lbm93blR5cGVOYW1lc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Lbm93blR5cGVOYW1lc1J1bGUubWpzP2FhZDUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRpZFlvdU1lYW4gZnJvbSBcIi4uLy4uL2pzdXRpbHMvZGlkWW91TWVhbi5tanNcIjtcbmltcG9ydCBzdWdnZXN0aW9uTGlzdCBmcm9tIFwiLi4vLi4vanN1dGlscy9zdWdnZXN0aW9uTGlzdC5tanNcIjtcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5pbXBvcnQgeyBpc1R5cGVEZWZpbml0aW9uTm9kZSwgaXNUeXBlU3lzdGVtRGVmaW5pdGlvbk5vZGUsIGlzVHlwZVN5c3RlbUV4dGVuc2lvbk5vZGUgfSBmcm9tIFwiLi4vLi4vbGFuZ3VhZ2UvcHJlZGljYXRlcy5tanNcIjtcbmltcG9ydCB7IHNwZWNpZmllZFNjYWxhclR5cGVzIH0gZnJvbSBcIi4uLy4uL3R5cGUvc2NhbGFycy5tanNcIjtcbmltcG9ydCB7IGludHJvc3BlY3Rpb25UeXBlcyB9IGZyb20gXCIuLi8uLi90eXBlL2ludHJvc3BlY3Rpb24ubWpzXCI7XG5cbi8qKlxuICogS25vd24gdHlwZSBuYW1lc1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIHJlZmVyZW5jZWQgdHlwZXMgKHNwZWNpZmljYWxseVxuICogdmFyaWFibGUgZGVmaW5pdGlvbnMgYW5kIGZyYWdtZW50IGNvbmRpdGlvbnMpIGFyZSBkZWZpbmVkIGJ5IHRoZSB0eXBlIHNjaGVtYS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEtub3duVHlwZU5hbWVzUnVsZShjb250ZXh0KSB7XG4gIHZhciBzY2hlbWEgPSBjb250ZXh0LmdldFNjaGVtYSgpO1xuICB2YXIgZXhpc3RpbmdUeXBlc01hcCA9IHNjaGVtYSA/IHNjaGVtYS5nZXRUeXBlTWFwKCkgOiBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2YXIgZGVmaW5lZFR5cGVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKHZhciBfaTIgPSAwLCBfY29udGV4dCRnZXREb2N1bWVudCQyID0gY29udGV4dC5nZXREb2N1bWVudCgpLmRlZmluaXRpb25zOyBfaTIgPCBfY29udGV4dCRnZXREb2N1bWVudCQyLmxlbmd0aDsgX2kyKyspIHtcbiAgICB2YXIgZGVmID0gX2NvbnRleHQkZ2V0RG9jdW1lbnQkMltfaTJdO1xuXG4gICAgaWYgKGlzVHlwZURlZmluaXRpb25Ob2RlKGRlZikpIHtcbiAgICAgIGRlZmluZWRUeXBlc1tkZWYubmFtZS52YWx1ZV0gPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHZhciB0eXBlTmFtZXMgPSBPYmplY3Qua2V5cyhleGlzdGluZ1R5cGVzTWFwKS5jb25jYXQoT2JqZWN0LmtleXMoZGVmaW5lZFR5cGVzKSk7XG4gIHJldHVybiB7XG4gICAgTmFtZWRUeXBlOiBmdW5jdGlvbiBOYW1lZFR5cGUobm9kZSwgXzEsIHBhcmVudCwgXzIsIGFuY2VzdG9ycykge1xuICAgICAgdmFyIHR5cGVOYW1lID0gbm9kZS5uYW1lLnZhbHVlO1xuXG4gICAgICBpZiAoIWV4aXN0aW5nVHlwZXNNYXBbdHlwZU5hbWVdICYmICFkZWZpbmVkVHlwZXNbdHlwZU5hbWVdKSB7XG4gICAgICAgIHZhciBfYW5jZXN0b3JzJDtcblxuICAgICAgICB2YXIgZGVmaW5pdGlvbk5vZGUgPSAoX2FuY2VzdG9ycyQgPSBhbmNlc3RvcnNbMl0pICE9PSBudWxsICYmIF9hbmNlc3RvcnMkICE9PSB2b2lkIDAgPyBfYW5jZXN0b3JzJCA6IHBhcmVudDtcbiAgICAgICAgdmFyIGlzU0RMID0gZGVmaW5pdGlvbk5vZGUgIT0gbnVsbCAmJiBpc1NETE5vZGUoZGVmaW5pdGlvbk5vZGUpO1xuXG4gICAgICAgIGlmIChpc1NETCAmJiBpc1N0YW5kYXJkVHlwZU5hbWUodHlwZU5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN1Z2dlc3RlZFR5cGVzID0gc3VnZ2VzdGlvbkxpc3QodHlwZU5hbWUsIGlzU0RMID8gc3RhbmRhcmRUeXBlTmFtZXMuY29uY2F0KHR5cGVOYW1lcykgOiB0eXBlTmFtZXMpO1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJVbmtub3duIHR5cGUgXFxcIlwiLmNvbmNhdCh0eXBlTmFtZSwgXCJcXFwiLlwiKSArIGRpZFlvdU1lYW4oc3VnZ2VzdGVkVHlwZXMpLCBub2RlKSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxudmFyIHN0YW5kYXJkVHlwZU5hbWVzID0gW10uY29uY2F0KHNwZWNpZmllZFNjYWxhclR5cGVzLCBpbnRyb3NwZWN0aW9uVHlwZXMpLm1hcChmdW5jdGlvbiAodHlwZSkge1xuICByZXR1cm4gdHlwZS5uYW1lO1xufSk7XG5cbmZ1bmN0aW9uIGlzU3RhbmRhcmRUeXBlTmFtZSh0eXBlTmFtZSkge1xuICByZXR1cm4gc3RhbmRhcmRUeXBlTmFtZXMuaW5kZXhPZih0eXBlTmFtZSkgIT09IC0xO1xufVxuXG5mdW5jdGlvbiBpc1NETE5vZGUodmFsdWUpIHtcbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KHZhbHVlKSAmJiAoaXNUeXBlU3lzdGVtRGVmaW5pdGlvbk5vZGUodmFsdWUpIHx8IGlzVHlwZVN5c3RlbUV4dGVuc2lvbk5vZGUodmFsdWUpKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs\n");
1473
1474/***/ }),
1475
1476/***/ "../../../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs":
1477/*!****************************************************************************************************************!*\
1478 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs ***!
1479 \****************************************************************************************************************/
1480/*! exports provided: LoneAnonymousOperationRule */
1481/***/ (function(module, __webpack_exports__, __webpack_require__) {
1482
1483"use strict";
1484eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LoneAnonymousOperationRule\", function() { return LoneAnonymousOperationRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n\n\n\n/**\n * Lone anonymous operation\n *\n * A GraphQL document is only valid if when it contains an anonymous operation\n * (the query short-hand) that it contains only that one operation definition.\n */\nfunction LoneAnonymousOperationRule(context) {\n var operationCount = 0;\n return {\n Document: function Document(node) {\n operationCount = node.definitions.filter(function (definition) {\n return definition.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].OPERATION_DEFINITION;\n }).length;\n },\n OperationDefinition: function OperationDefinition(node) {\n if (!node.name && operationCount > 1) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"]('This anonymous operation must be the only defined operation.', node));\n }\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Mb25lQW5vbnltb3VzT3BlcmF0aW9uUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0xvbmVBbm9ueW1vdXNPcGVyYXRpb25SdWxlLm1qcz8zM2NjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSBcIi4uLy4uL2xhbmd1YWdlL2tpbmRzLm1qc1wiO1xuXG4vKipcbiAqIExvbmUgYW5vbnltb3VzIG9wZXJhdGlvblxuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIHdoZW4gaXQgY29udGFpbnMgYW4gYW5vbnltb3VzIG9wZXJhdGlvblxuICogKHRoZSBxdWVyeSBzaG9ydC1oYW5kKSB0aGF0IGl0IGNvbnRhaW5zIG9ubHkgdGhhdCBvbmUgb3BlcmF0aW9uIGRlZmluaXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBMb25lQW5vbnltb3VzT3BlcmF0aW9uUnVsZShjb250ZXh0KSB7XG4gIHZhciBvcGVyYXRpb25Db3VudCA9IDA7XG4gIHJldHVybiB7XG4gICAgRG9jdW1lbnQ6IGZ1bmN0aW9uIERvY3VtZW50KG5vZGUpIHtcbiAgICAgIG9wZXJhdGlvbkNvdW50ID0gbm9kZS5kZWZpbml0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKGRlZmluaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb24ua2luZCA9PT0gS2luZC5PUEVSQVRJT05fREVGSU5JVElPTjtcbiAgICAgIH0pLmxlbmd0aDtcbiAgICB9LFxuICAgIE9wZXJhdGlvbkRlZmluaXRpb246IGZ1bmN0aW9uIE9wZXJhdGlvbkRlZmluaXRpb24obm9kZSkge1xuICAgICAgaWYgKCFub2RlLm5hbWUgJiYgb3BlcmF0aW9uQ291bnQgPiAxKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcignVGhpcyBhbm9ueW1vdXMgb3BlcmF0aW9uIG11c3QgYmUgdGhlIG9ubHkgZGVmaW5lZCBvcGVyYXRpb24uJywgbm9kZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs\n");
1485
1486/***/ }),
1487
1488/***/ "../../../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs":
1489/*!**************************************************************************************************************!*\
1490 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs ***!
1491 \**************************************************************************************************************/
1492/*! exports provided: LoneSchemaDefinitionRule */
1493/***/ (function(module, __webpack_exports__, __webpack_require__) {
1494
1495"use strict";
1496eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LoneSchemaDefinitionRule\", function() { return LoneSchemaDefinitionRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Lone Schema definition\n *\n * A GraphQL document is only valid if it contains only one schema definition.\n */\nfunction LoneSchemaDefinitionRule(context) {\n var _ref, _ref2, _oldSchema$astNode;\n\n var oldSchema = context.getSchema();\n var alreadyDefined = (_ref = (_ref2 = (_oldSchema$astNode = oldSchema === null || oldSchema === void 0 ? void 0 : oldSchema.astNode) !== null && _oldSchema$astNode !== void 0 ? _oldSchema$astNode : oldSchema === null || oldSchema === void 0 ? void 0 : oldSchema.getQueryType()) !== null && _ref2 !== void 0 ? _ref2 : oldSchema === null || oldSchema === void 0 ? void 0 : oldSchema.getMutationType()) !== null && _ref !== void 0 ? _ref : oldSchema === null || oldSchema === void 0 ? void 0 : oldSchema.getSubscriptionType();\n var schemaDefinitionsCount = 0;\n return {\n SchemaDefinition: function SchemaDefinition(node) {\n if (alreadyDefined) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"]('Cannot define a new schema within a schema extension.', node));\n return;\n }\n\n if (schemaDefinitionsCount > 0) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"]('Must provide only one schema definition.', node));\n }\n\n ++schemaDefinitionsCount;\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Mb25lU2NoZW1hRGVmaW5pdGlvblJ1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Mb25lU2NoZW1hRGVmaW5pdGlvblJ1bGUubWpzPzlmNmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanNcIjtcblxuLyoqXG4gKiBMb25lIFNjaGVtYSBkZWZpbml0aW9uXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgaXQgY29udGFpbnMgb25seSBvbmUgc2NoZW1hIGRlZmluaXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBMb25lU2NoZW1hRGVmaW5pdGlvblJ1bGUoY29udGV4dCkge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9vbGRTY2hlbWEkYXN0Tm9kZTtcblxuICB2YXIgb2xkU2NoZW1hID0gY29udGV4dC5nZXRTY2hlbWEoKTtcbiAgdmFyIGFscmVhZHlEZWZpbmVkID0gKF9yZWYgPSAoX3JlZjIgPSAoX29sZFNjaGVtYSRhc3ROb2RlID0gb2xkU2NoZW1hID09PSBudWxsIHx8IG9sZFNjaGVtYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb2xkU2NoZW1hLmFzdE5vZGUpICE9PSBudWxsICYmIF9vbGRTY2hlbWEkYXN0Tm9kZSAhPT0gdm9pZCAwID8gX29sZFNjaGVtYSRhc3ROb2RlIDogb2xkU2NoZW1hID09PSBudWxsIHx8IG9sZFNjaGVtYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb2xkU2NoZW1hLmdldFF1ZXJ5VHlwZSgpKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiBvbGRTY2hlbWEgPT09IG51bGwgfHwgb2xkU2NoZW1hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbGRTY2hlbWEuZ2V0TXV0YXRpb25UeXBlKCkpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiBvbGRTY2hlbWEgPT09IG51bGwgfHwgb2xkU2NoZW1hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbGRTY2hlbWEuZ2V0U3Vic2NyaXB0aW9uVHlwZSgpO1xuICB2YXIgc2NoZW1hRGVmaW5pdGlvbnNDb3VudCA9IDA7XG4gIHJldHVybiB7XG4gICAgU2NoZW1hRGVmaW5pdGlvbjogZnVuY3Rpb24gU2NoZW1hRGVmaW5pdGlvbihub2RlKSB7XG4gICAgICBpZiAoYWxyZWFkeURlZmluZWQpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKCdDYW5ub3QgZGVmaW5lIGEgbmV3IHNjaGVtYSB3aXRoaW4gYSBzY2hlbWEgZXh0ZW5zaW9uLicsIG5vZGUpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2NoZW1hRGVmaW5pdGlvbnNDb3VudCA+IDApIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKCdNdXN0IHByb3ZpZGUgb25seSBvbmUgc2NoZW1hIGRlZmluaXRpb24uJywgbm9kZSkpO1xuICAgICAgfVxuXG4gICAgICArK3NjaGVtYURlZmluaXRpb25zQ291bnQ7XG4gICAgfVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs\n");
1497
1498/***/ }),
1499
1500/***/ "../../../node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs":
1501/*!**********************************************************************************************************!*\
1502 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs ***!
1503 \**********************************************************************************************************/
1504/*! exports provided: NoFragmentCyclesRule */
1505/***/ (function(module, __webpack_exports__, __webpack_require__) {
1506
1507"use strict";
1508eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoFragmentCyclesRule\", function() { return NoFragmentCyclesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\nfunction NoFragmentCyclesRule(context) {\n // Tracks already visited fragments to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n var visitedFrags = Object.create(null); // Array of AST nodes used to produce meaningful errors\n\n var spreadPath = []; // Position in the spread path\n\n var spreadPathIndexByName = Object.create(null);\n return {\n OperationDefinition: function OperationDefinition() {\n return false;\n },\n FragmentDefinition: function FragmentDefinition(node) {\n detectCycleRecursive(node);\n return false;\n }\n }; // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n\n function detectCycleRecursive(fragment) {\n if (visitedFrags[fragment.name.value]) {\n return;\n }\n\n var fragmentName = fragment.name.value;\n visitedFrags[fragmentName] = true;\n var spreadNodes = context.getFragmentSpreads(fragment.selectionSet);\n\n if (spreadNodes.length === 0) {\n return;\n }\n\n spreadPathIndexByName[fragmentName] = spreadPath.length;\n\n for (var _i2 = 0; _i2 < spreadNodes.length; _i2++) {\n var spreadNode = spreadNodes[_i2];\n var spreadName = spreadNode.name.value;\n var cycleIndex = spreadPathIndexByName[spreadName];\n spreadPath.push(spreadNode);\n\n if (cycleIndex === undefined) {\n var spreadFragment = context.getFragment(spreadName);\n\n if (spreadFragment) {\n detectCycleRecursive(spreadFragment);\n }\n } else {\n var cyclePath = spreadPath.slice(cycleIndex);\n var viaPath = cyclePath.slice(0, -1).map(function (s) {\n return '\"' + s.name.value + '\"';\n }).join(', ');\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"Cannot spread fragment \\\"\".concat(spreadName, \"\\\" within itself\") + (viaPath !== '' ? \" via \".concat(viaPath, \".\") : '.'), cyclePath));\n }\n\n spreadPath.pop();\n }\n\n spreadPathIndexByName[fragmentName] = undefined;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Ob0ZyYWdtZW50Q3ljbGVzUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL05vRnJhZ21lbnRDeWNsZXNSdWxlLm1qcz8zM2FhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5leHBvcnQgZnVuY3Rpb24gTm9GcmFnbWVudEN5Y2xlc1J1bGUoY29udGV4dCkge1xuICAvLyBUcmFja3MgYWxyZWFkeSB2aXNpdGVkIGZyYWdtZW50cyB0byBtYWludGFpbiBPKE4pIGFuZCB0byBlbnN1cmUgdGhhdCBjeWNsZXNcbiAgLy8gYXJlIG5vdCByZWR1bmRhbnRseSByZXBvcnRlZC5cbiAgdmFyIHZpc2l0ZWRGcmFncyA9IE9iamVjdC5jcmVhdGUobnVsbCk7IC8vIEFycmF5IG9mIEFTVCBub2RlcyB1c2VkIHRvIHByb2R1Y2UgbWVhbmluZ2Z1bCBlcnJvcnNcblxuICB2YXIgc3ByZWFkUGF0aCA9IFtdOyAvLyBQb3NpdGlvbiBpbiB0aGUgc3ByZWFkIHBhdGhcblxuICB2YXIgc3ByZWFkUGF0aEluZGV4QnlOYW1lID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIHtcbiAgICBPcGVyYXRpb25EZWZpbml0aW9uOiBmdW5jdGlvbiBPcGVyYXRpb25EZWZpbml0aW9uKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgRnJhZ21lbnREZWZpbml0aW9uOiBmdW5jdGlvbiBGcmFnbWVudERlZmluaXRpb24obm9kZSkge1xuICAgICAgZGV0ZWN0Q3ljbGVSZWN1cnNpdmUobm9kZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9OyAvLyBUaGlzIGRvZXMgYSBzdHJhaWdodC1mb3J3YXJkIERGUyB0byBmaW5kIGN5Y2xlcy5cbiAgLy8gSXQgZG9lcyBub3QgdGVybWluYXRlIHdoZW4gYSBjeWNsZSB3YXMgZm91bmQgYnV0IGNvbnRpbnVlcyB0byBleHBsb3JlXG4gIC8vIHRoZSBncmFwaCB0byBmaW5kIGFsbCBwb3NzaWJsZSBjeWNsZXMuXG5cbiAgZnVuY3Rpb24gZGV0ZWN0Q3ljbGVSZWN1cnNpdmUoZnJhZ21lbnQpIHtcbiAgICBpZiAodmlzaXRlZEZyYWdzW2ZyYWdtZW50Lm5hbWUudmFsdWVdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGZyYWdtZW50TmFtZSA9IGZyYWdtZW50Lm5hbWUudmFsdWU7XG4gICAgdmlzaXRlZEZyYWdzW2ZyYWdtZW50TmFtZV0gPSB0cnVlO1xuICAgIHZhciBzcHJlYWROb2RlcyA9IGNvbnRleHQuZ2V0RnJhZ21lbnRTcHJlYWRzKGZyYWdtZW50LnNlbGVjdGlvblNldCk7XG5cbiAgICBpZiAoc3ByZWFkTm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3ByZWFkUGF0aEluZGV4QnlOYW1lW2ZyYWdtZW50TmFtZV0gPSBzcHJlYWRQYXRoLmxlbmd0aDtcblxuICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHNwcmVhZE5vZGVzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgIHZhciBzcHJlYWROb2RlID0gc3ByZWFkTm9kZXNbX2kyXTtcbiAgICAgIHZhciBzcHJlYWROYW1lID0gc3ByZWFkTm9kZS5uYW1lLnZhbHVlO1xuICAgICAgdmFyIGN5Y2xlSW5kZXggPSBzcHJlYWRQYXRoSW5kZXhCeU5hbWVbc3ByZWFkTmFtZV07XG4gICAgICBzcHJlYWRQYXRoLnB1c2goc3ByZWFkTm9kZSk7XG5cbiAgICAgIGlmIChjeWNsZUluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIHNwcmVhZEZyYWdtZW50ID0gY29udGV4dC5nZXRGcmFnbWVudChzcHJlYWROYW1lKTtcblxuICAgICAgICBpZiAoc3ByZWFkRnJhZ21lbnQpIHtcbiAgICAgICAgICBkZXRlY3RDeWNsZVJlY3Vyc2l2ZShzcHJlYWRGcmFnbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBjeWNsZVBhdGggPSBzcHJlYWRQYXRoLnNsaWNlKGN5Y2xlSW5kZXgpO1xuICAgICAgICB2YXIgdmlhUGF0aCA9IGN5Y2xlUGF0aC5zbGljZSgwLCAtMSkubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgcmV0dXJuICdcIicgKyBzLm5hbWUudmFsdWUgKyAnXCInO1xuICAgICAgICB9KS5qb2luKCcsICcpO1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJDYW5ub3Qgc3ByZWFkIGZyYWdtZW50IFxcXCJcIi5jb25jYXQoc3ByZWFkTmFtZSwgXCJcXFwiIHdpdGhpbiBpdHNlbGZcIikgKyAodmlhUGF0aCAhPT0gJycgPyBcIiB2aWEgXCIuY29uY2F0KHZpYVBhdGgsIFwiLlwiKSA6ICcuJyksIGN5Y2xlUGF0aCkpO1xuICAgICAgfVxuXG4gICAgICBzcHJlYWRQYXRoLnBvcCgpO1xuICAgIH1cblxuICAgIHNwcmVhZFBhdGhJbmRleEJ5TmFtZVtmcmFnbWVudE5hbWVdID0gdW5kZWZpbmVkO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs\n");
1509
1510/***/ }),
1511
1512/***/ "../../../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs":
1513/*!**************************************************************************************************************!*\
1514 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs ***!
1515 \**************************************************************************************************************/
1516/*! exports provided: NoUndefinedVariablesRule */
1517/***/ (function(module, __webpack_exports__, __webpack_require__) {
1518
1519"use strict";
1520eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoUndefinedVariablesRule\", function() { return NoUndefinedVariablesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * No undefined variables\n *\n * A GraphQL operation is only valid if all variables encountered, both directly\n * and via fragment spreads, are defined by that operation.\n */\nfunction NoUndefinedVariablesRule(context) {\n var variableNameDefined = Object.create(null);\n return {\n OperationDefinition: {\n enter: function enter() {\n variableNameDefined = Object.create(null);\n },\n leave: function leave(operation) {\n var usages = context.getRecursiveVariableUsages(operation);\n\n for (var _i2 = 0; _i2 < usages.length; _i2++) {\n var _ref2 = usages[_i2];\n var node = _ref2.node;\n var varName = node.name.value;\n\n if (variableNameDefined[varName] !== true) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](operation.name ? \"Variable \\\"$\".concat(varName, \"\\\" is not defined by operation \\\"\").concat(operation.name.value, \"\\\".\") : \"Variable \\\"$\".concat(varName, \"\\\" is not defined.\"), [node, operation]));\n }\n }\n }\n },\n VariableDefinition: function VariableDefinition(node) {\n variableNameDefined[node.variable.name.value] = true;\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Ob1VuZGVmaW5lZFZhcmlhYmxlc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Ob1VuZGVmaW5lZFZhcmlhYmxlc1J1bGUubWpzP2I4MDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanNcIjtcblxuLyoqXG4gKiBObyB1bmRlZmluZWQgdmFyaWFibGVzXG4gKlxuICogQSBHcmFwaFFMIG9wZXJhdGlvbiBpcyBvbmx5IHZhbGlkIGlmIGFsbCB2YXJpYWJsZXMgZW5jb3VudGVyZWQsIGJvdGggZGlyZWN0bHlcbiAqIGFuZCB2aWEgZnJhZ21lbnQgc3ByZWFkcywgYXJlIGRlZmluZWQgYnkgdGhhdCBvcGVyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBOb1VuZGVmaW5lZFZhcmlhYmxlc1J1bGUoY29udGV4dCkge1xuICB2YXIgdmFyaWFibGVOYW1lRGVmaW5lZCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiB7XG4gICAgT3BlcmF0aW9uRGVmaW5pdGlvbjoge1xuICAgICAgZW50ZXI6IGZ1bmN0aW9uIGVudGVyKCkge1xuICAgICAgICB2YXJpYWJsZU5hbWVEZWZpbmVkID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIH0sXG4gICAgICBsZWF2ZTogZnVuY3Rpb24gbGVhdmUob3BlcmF0aW9uKSB7XG4gICAgICAgIHZhciB1c2FnZXMgPSBjb250ZXh0LmdldFJlY3Vyc2l2ZVZhcmlhYmxlVXNhZ2VzKG9wZXJhdGlvbik7XG5cbiAgICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgdXNhZ2VzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgICAgICB2YXIgX3JlZjIgPSB1c2FnZXNbX2kyXTtcbiAgICAgICAgICB2YXIgbm9kZSA9IF9yZWYyLm5vZGU7XG4gICAgICAgICAgdmFyIHZhck5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG5cbiAgICAgICAgICBpZiAodmFyaWFibGVOYW1lRGVmaW5lZFt2YXJOYW1lXSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKG9wZXJhdGlvbi5uYW1lID8gXCJWYXJpYWJsZSBcXFwiJFwiLmNvbmNhdCh2YXJOYW1lLCBcIlxcXCIgaXMgbm90IGRlZmluZWQgYnkgb3BlcmF0aW9uIFxcXCJcIikuY29uY2F0KG9wZXJhdGlvbi5uYW1lLnZhbHVlLCBcIlxcXCIuXCIpIDogXCJWYXJpYWJsZSBcXFwiJFwiLmNvbmNhdCh2YXJOYW1lLCBcIlxcXCIgaXMgbm90IGRlZmluZWQuXCIpLCBbbm9kZSwgb3BlcmF0aW9uXSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgVmFyaWFibGVEZWZpbml0aW9uOiBmdW5jdGlvbiBWYXJpYWJsZURlZmluaXRpb24obm9kZSkge1xuICAgICAgdmFyaWFibGVOYW1lRGVmaW5lZFtub2RlLnZhcmlhYmxlLm5hbWUudmFsdWVdID0gdHJ1ZTtcbiAgICB9XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs\n");
1521
1522/***/ }),
1523
1524/***/ "../../../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs":
1525/*!***********************************************************************************************************!*\
1526 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs ***!
1527 \***********************************************************************************************************/
1528/*! exports provided: NoUnusedFragmentsRule */
1529/***/ (function(module, __webpack_exports__, __webpack_require__) {
1530
1531"use strict";
1532eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoUnusedFragmentsRule\", function() { return NoUnusedFragmentsRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * No unused fragments\n *\n * A GraphQL document is only valid if all fragment definitions are spread\n * within operations, or spread within other fragments spread within operations.\n */\nfunction NoUnusedFragmentsRule(context) {\n var operationDefs = [];\n var fragmentDefs = [];\n return {\n OperationDefinition: function OperationDefinition(node) {\n operationDefs.push(node);\n return false;\n },\n FragmentDefinition: function FragmentDefinition(node) {\n fragmentDefs.push(node);\n return false;\n },\n Document: {\n leave: function leave() {\n var fragmentNameUsed = Object.create(null);\n\n for (var _i2 = 0; _i2 < operationDefs.length; _i2++) {\n var operation = operationDefs[_i2];\n\n for (var _i4 = 0, _context$getRecursive2 = context.getRecursivelyReferencedFragments(operation); _i4 < _context$getRecursive2.length; _i4++) {\n var fragment = _context$getRecursive2[_i4];\n fragmentNameUsed[fragment.name.value] = true;\n }\n }\n\n for (var _i6 = 0; _i6 < fragmentDefs.length; _i6++) {\n var fragmentDef = fragmentDefs[_i6];\n var fragName = fragmentDef.name.value;\n\n if (fragmentNameUsed[fragName] !== true) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"Fragment \\\"\".concat(fragName, \"\\\" is never used.\"), fragmentDef));\n }\n }\n }\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Ob1VudXNlZEZyYWdtZW50c1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Ob1VudXNlZEZyYWdtZW50c1J1bGUubWpzP2U3ZDYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanNcIjtcblxuLyoqXG4gKiBObyB1bnVzZWQgZnJhZ21lbnRzXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgYWxsIGZyYWdtZW50IGRlZmluaXRpb25zIGFyZSBzcHJlYWRcbiAqIHdpdGhpbiBvcGVyYXRpb25zLCBvciBzcHJlYWQgd2l0aGluIG90aGVyIGZyYWdtZW50cyBzcHJlYWQgd2l0aGluIG9wZXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBOb1VudXNlZEZyYWdtZW50c1J1bGUoY29udGV4dCkge1xuICB2YXIgb3BlcmF0aW9uRGVmcyA9IFtdO1xuICB2YXIgZnJhZ21lbnREZWZzID0gW107XG4gIHJldHVybiB7XG4gICAgT3BlcmF0aW9uRGVmaW5pdGlvbjogZnVuY3Rpb24gT3BlcmF0aW9uRGVmaW5pdGlvbihub2RlKSB7XG4gICAgICBvcGVyYXRpb25EZWZzLnB1c2gobm9kZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcbiAgICBGcmFnbWVudERlZmluaXRpb246IGZ1bmN0aW9uIEZyYWdtZW50RGVmaW5pdGlvbihub2RlKSB7XG4gICAgICBmcmFnbWVudERlZnMucHVzaChub2RlKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIERvY3VtZW50OiB7XG4gICAgICBsZWF2ZTogZnVuY3Rpb24gbGVhdmUoKSB7XG4gICAgICAgIHZhciBmcmFnbWVudE5hbWVVc2VkID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgICAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBvcGVyYXRpb25EZWZzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgICAgICB2YXIgb3BlcmF0aW9uID0gb3BlcmF0aW9uRGVmc1tfaTJdO1xuXG4gICAgICAgICAgZm9yICh2YXIgX2k0ID0gMCwgX2NvbnRleHQkZ2V0UmVjdXJzaXZlMiA9IGNvbnRleHQuZ2V0UmVjdXJzaXZlbHlSZWZlcmVuY2VkRnJhZ21lbnRzKG9wZXJhdGlvbik7IF9pNCA8IF9jb250ZXh0JGdldFJlY3Vyc2l2ZTIubGVuZ3RoOyBfaTQrKykge1xuICAgICAgICAgICAgdmFyIGZyYWdtZW50ID0gX2NvbnRleHQkZ2V0UmVjdXJzaXZlMltfaTRdO1xuICAgICAgICAgICAgZnJhZ21lbnROYW1lVXNlZFtmcmFnbWVudC5uYW1lLnZhbHVlXSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgX2k2ID0gMDsgX2k2IDwgZnJhZ21lbnREZWZzLmxlbmd0aDsgX2k2KyspIHtcbiAgICAgICAgICB2YXIgZnJhZ21lbnREZWYgPSBmcmFnbWVudERlZnNbX2k2XTtcbiAgICAgICAgICB2YXIgZnJhZ05hbWUgPSBmcmFnbWVudERlZi5uYW1lLnZhbHVlO1xuXG4gICAgICAgICAgaWYgKGZyYWdtZW50TmFtZVVzZWRbZnJhZ05hbWVdICE9PSB0cnVlKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJGcmFnbWVudCBcXFwiXCIuY29uY2F0KGZyYWdOYW1lLCBcIlxcXCIgaXMgbmV2ZXIgdXNlZC5cIiksIGZyYWdtZW50RGVmKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs\n");
1533
1534/***/ }),
1535
1536/***/ "../../../node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs":
1537/*!***********************************************************************************************************!*\
1538 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs ***!
1539 \***********************************************************************************************************/
1540/*! exports provided: NoUnusedVariablesRule */
1541/***/ (function(module, __webpack_exports__, __webpack_require__) {
1542
1543"use strict";
1544eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoUnusedVariablesRule\", function() { return NoUnusedVariablesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * No unused variables\n *\n * A GraphQL operation is only valid if all variables defined by an operation\n * are used, either directly or within a spread fragment.\n */\nfunction NoUnusedVariablesRule(context) {\n var variableDefs = [];\n return {\n OperationDefinition: {\n enter: function enter() {\n variableDefs = [];\n },\n leave: function leave(operation) {\n var variableNameUsed = Object.create(null);\n var usages = context.getRecursiveVariableUsages(operation);\n\n for (var _i2 = 0; _i2 < usages.length; _i2++) {\n var _ref2 = usages[_i2];\n var node = _ref2.node;\n variableNameUsed[node.name.value] = true;\n }\n\n for (var _i4 = 0, _variableDefs2 = variableDefs; _i4 < _variableDefs2.length; _i4++) {\n var variableDef = _variableDefs2[_i4];\n var variableName = variableDef.variable.name.value;\n\n if (variableNameUsed[variableName] !== true) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](operation.name ? \"Variable \\\"$\".concat(variableName, \"\\\" is never used in operation \\\"\").concat(operation.name.value, \"\\\".\") : \"Variable \\\"$\".concat(variableName, \"\\\" is never used.\"), variableDef));\n }\n }\n }\n },\n VariableDefinition: function VariableDefinition(def) {\n variableDefs.push(def);\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Ob1VudXNlZFZhcmlhYmxlc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Ob1VudXNlZFZhcmlhYmxlc1J1bGUubWpzP2I2OTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanNcIjtcblxuLyoqXG4gKiBObyB1bnVzZWQgdmFyaWFibGVzXG4gKlxuICogQSBHcmFwaFFMIG9wZXJhdGlvbiBpcyBvbmx5IHZhbGlkIGlmIGFsbCB2YXJpYWJsZXMgZGVmaW5lZCBieSBhbiBvcGVyYXRpb25cbiAqIGFyZSB1c2VkLCBlaXRoZXIgZGlyZWN0bHkgb3Igd2l0aGluIGEgc3ByZWFkIGZyYWdtZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gTm9VbnVzZWRWYXJpYWJsZXNSdWxlKGNvbnRleHQpIHtcbiAgdmFyIHZhcmlhYmxlRGVmcyA9IFtdO1xuICByZXR1cm4ge1xuICAgIE9wZXJhdGlvbkRlZmluaXRpb246IHtcbiAgICAgIGVudGVyOiBmdW5jdGlvbiBlbnRlcigpIHtcbiAgICAgICAgdmFyaWFibGVEZWZzID0gW107XG4gICAgICB9LFxuICAgICAgbGVhdmU6IGZ1bmN0aW9uIGxlYXZlKG9wZXJhdGlvbikge1xuICAgICAgICB2YXIgdmFyaWFibGVOYW1lVXNlZCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHZhciB1c2FnZXMgPSBjb250ZXh0LmdldFJlY3Vyc2l2ZVZhcmlhYmxlVXNhZ2VzKG9wZXJhdGlvbik7XG5cbiAgICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgdXNhZ2VzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgICAgICB2YXIgX3JlZjIgPSB1c2FnZXNbX2kyXTtcbiAgICAgICAgICB2YXIgbm9kZSA9IF9yZWYyLm5vZGU7XG4gICAgICAgICAgdmFyaWFibGVOYW1lVXNlZFtub2RlLm5hbWUudmFsdWVdID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIF9pNCA9IDAsIF92YXJpYWJsZURlZnMyID0gdmFyaWFibGVEZWZzOyBfaTQgPCBfdmFyaWFibGVEZWZzMi5sZW5ndGg7IF9pNCsrKSB7XG4gICAgICAgICAgdmFyIHZhcmlhYmxlRGVmID0gX3ZhcmlhYmxlRGVmczJbX2k0XTtcbiAgICAgICAgICB2YXIgdmFyaWFibGVOYW1lID0gdmFyaWFibGVEZWYudmFyaWFibGUubmFtZS52YWx1ZTtcblxuICAgICAgICAgIGlmICh2YXJpYWJsZU5hbWVVc2VkW3ZhcmlhYmxlTmFtZV0gIT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcihvcGVyYXRpb24ubmFtZSA/IFwiVmFyaWFibGUgXFxcIiRcIi5jb25jYXQodmFyaWFibGVOYW1lLCBcIlxcXCIgaXMgbmV2ZXIgdXNlZCBpbiBvcGVyYXRpb24gXFxcIlwiKS5jb25jYXQob3BlcmF0aW9uLm5hbWUudmFsdWUsIFwiXFxcIi5cIikgOiBcIlZhcmlhYmxlIFxcXCIkXCIuY29uY2F0KHZhcmlhYmxlTmFtZSwgXCJcXFwiIGlzIG5ldmVyIHVzZWQuXCIpLCB2YXJpYWJsZURlZikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgVmFyaWFibGVEZWZpbml0aW9uOiBmdW5jdGlvbiBWYXJpYWJsZURlZmluaXRpb24oZGVmKSB7XG4gICAgICB2YXJpYWJsZURlZnMucHVzaChkZWYpO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs\n");
1545
1546/***/ }),
1547
1548/***/ "../../../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs":
1549/*!**********************************************************************************************************************!*\
1550 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs ***!
1551 \**********************************************************************************************************************/
1552/*! exports provided: OverlappingFieldsCanBeMergedRule */
1553/***/ (function(module, __webpack_exports__, __webpack_require__) {
1554
1555"use strict";
1556eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OverlappingFieldsCanBeMergedRule\", function() { return OverlappingFieldsCanBeMergedRule; });\n/* harmony import */ var _polyfills_find_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../polyfills/find.mjs */ \"../../../node_modules/graphql/polyfills/find.mjs\");\n/* harmony import */ var _polyfills_objectEntries_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../polyfills/objectEntries.mjs */ \"../../../node_modules/graphql/polyfills/objectEntries.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n\n\n\n\n\n\n\n\n\nfunction reasonMessage(reason) {\n if (Array.isArray(reason)) {\n return reason.map(function (_ref) {\n var responseName = _ref[0],\n subReason = _ref[1];\n return \"subfields \\\"\".concat(responseName, \"\\\" conflict because \") + reasonMessage(subReason);\n }).join(' and ');\n }\n\n return reason;\n}\n/**\n * Overlapping fields can be merged\n *\n * A selection set is only valid if all fields (including spreading any\n * fragments) either correspond to distinct response names or can be merged\n * without ambiguity.\n */\n\n\nfunction OverlappingFieldsCanBeMergedRule(context) {\n // A memoization for when two fragments are compared \"between\" each other for\n // conflicts. Two fragments may be compared many times, so memoizing this can\n // dramatically improve the performance of this validator.\n var comparedFragmentPairs = new PairSet(); // A cache for the \"field map\" and list of fragment names found in any given\n // selection set. Selection sets may be asked for this information multiple\n // times, so this improves the performance of this validator.\n\n var cachedFieldsAndFragmentNames = new Map();\n return {\n SelectionSet: function SelectionSet(selectionSet) {\n var conflicts = findConflictsWithinSelectionSet(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, context.getParentType(), selectionSet);\n\n for (var _i2 = 0; _i2 < conflicts.length; _i2++) {\n var _ref3 = conflicts[_i2];\n var _ref2$ = _ref3[0];\n var responseName = _ref2$[0];\n var reason = _ref2$[1];\n var fields1 = _ref3[1];\n var fields2 = _ref3[2];\n var reasonMsg = reasonMessage(reason);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__[\"GraphQLError\"](\"Fields \\\"\".concat(responseName, \"\\\" conflict because \").concat(reasonMsg, \". Use different aliases on the fields to fetch both if this was intentional.\"), fields1.concat(fields2)));\n }\n }\n };\n}\n\n/**\n * Algorithm:\n *\n * Conflicts occur when two fields exist in a query which will produce the same\n * response name, but represent differing values, thus creating a conflict.\n * The algorithm below finds all conflicts via making a series of comparisons\n * between fields. In order to compare as few fields as possible, this makes\n * a series of comparisons \"within\" sets of fields and \"between\" sets of fields.\n *\n * Given any selection set, a collection produces both a set of fields by\n * also including all inline fragments, as well as a list of fragments\n * referenced by fragment spreads.\n *\n * A) Each selection set represented in the document first compares \"within\" its\n * collected set of fields, finding any conflicts between every pair of\n * overlapping fields.\n * Note: This is the *only time* that a the fields \"within\" a set are compared\n * to each other. After this only fields \"between\" sets are compared.\n *\n * B) Also, if any fragment is referenced in a selection set, then a\n * comparison is made \"between\" the original set of fields and the\n * referenced fragment.\n *\n * C) Also, if multiple fragments are referenced, then comparisons\n * are made \"between\" each referenced fragment.\n *\n * D) When comparing \"between\" a set of fields and a referenced fragment, first\n * a comparison is made between each field in the original set of fields and\n * each field in the the referenced set of fields.\n *\n * E) Also, if any fragment is referenced in the referenced selection set,\n * then a comparison is made \"between\" the original set of fields and the\n * referenced fragment (recursively referring to step D).\n *\n * F) When comparing \"between\" two fragments, first a comparison is made between\n * each field in the first referenced set of fields and each field in the the\n * second referenced set of fields.\n *\n * G) Also, any fragments referenced by the first must be compared to the\n * second, and any fragments referenced by the second must be compared to the\n * first (recursively referring to step F).\n *\n * H) When comparing two fields, if both have selection sets, then a comparison\n * is made \"between\" both selection sets, first comparing the set of fields in\n * the first selection set with the set of fields in the second.\n *\n * I) Also, if any fragment is referenced in either selection set, then a\n * comparison is made \"between\" the other set of fields and the\n * referenced fragment.\n *\n * J) Also, if two fragments are referenced in both selection sets, then a\n * comparison is made \"between\" the two fragments.\n *\n */\n// Find all conflicts found \"within\" a selection set, including those found\n// via spreading in fragments. Called when visiting each SelectionSet in the\n// GraphQL Document.\nfunction findConflictsWithinSelectionSet(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentType, selectionSet) {\n var conflicts = [];\n\n var _getFieldsAndFragment = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType, selectionSet),\n fieldMap = _getFieldsAndFragment[0],\n fragmentNames = _getFieldsAndFragment[1]; // (A) Find find all conflicts \"within\" the fields of this selection set.\n // Note: this is the *only place* `collectConflictsWithin` is called.\n\n\n collectConflictsWithin(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, fieldMap);\n\n if (fragmentNames.length !== 0) {\n // (B) Then collect conflicts between these fields and those represented by\n // each spread fragment name found.\n for (var i = 0; i < fragmentNames.length; i++) {\n collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, false, fieldMap, fragmentNames[i]); // (C) Then compare this fragment with all other fragments found in this\n // selection set to collect conflicts between fragments spread together.\n // This compares each item in the list of fragment names to every other\n // item in that same list (except for itself).\n\n for (var j = i + 1; j < fragmentNames.length; j++) {\n collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, false, fragmentNames[i], fragmentNames[j]);\n }\n }\n }\n\n return conflicts;\n} // Collect all conflicts found between a set of fields and a fragment reference\n// including via spreading in any nested fragments.\n\n\nfunction collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap, fragmentName) {\n var fragment = context.getFragment(fragmentName);\n\n if (!fragment) {\n return;\n }\n\n var _getReferencedFieldsA = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment),\n fieldMap2 = _getReferencedFieldsA[0],\n fragmentNames2 = _getReferencedFieldsA[1]; // Do not compare a fragment's fieldMap to itself.\n\n\n if (fieldMap === fieldMap2) {\n return;\n } // (D) First collect any conflicts between the provided collection of fields\n // and the collection of fields represented by the given fragment.\n\n\n collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap, fieldMap2); // (E) Then collect any conflicts between the provided collection of fields\n // and any fragment names found in the given fragment.\n\n for (var i = 0; i < fragmentNames2.length; i++) {\n collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap, fragmentNames2[i]);\n }\n} // Collect all conflicts found between two fragments, including via spreading in\n// any nested fragments.\n\n\nfunction collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentName1, fragmentName2) {\n // No need to compare a fragment to itself.\n if (fragmentName1 === fragmentName2) {\n return;\n } // Memoize so two fragments are not compared for conflicts more than once.\n\n\n if (comparedFragmentPairs.has(fragmentName1, fragmentName2, areMutuallyExclusive)) {\n return;\n }\n\n comparedFragmentPairs.add(fragmentName1, fragmentName2, areMutuallyExclusive);\n var fragment1 = context.getFragment(fragmentName1);\n var fragment2 = context.getFragment(fragmentName2);\n\n if (!fragment1 || !fragment2) {\n return;\n }\n\n var _getReferencedFieldsA2 = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment1),\n fieldMap1 = _getReferencedFieldsA2[0],\n fragmentNames1 = _getReferencedFieldsA2[1];\n\n var _getReferencedFieldsA3 = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment2),\n fieldMap2 = _getReferencedFieldsA3[0],\n fragmentNames2 = _getReferencedFieldsA3[1]; // (F) First, collect all conflicts between these two collections of fields\n // (not including any nested fragments).\n\n\n collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fieldMap2); // (G) Then collect conflicts between the first fragment and any nested\n // fragments spread in the second fragment.\n\n for (var j = 0; j < fragmentNames2.length; j++) {\n collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentName1, fragmentNames2[j]);\n } // (G) Then collect conflicts between the second fragment and any nested\n // fragments spread in the first fragment.\n\n\n for (var i = 0; i < fragmentNames1.length; i++) {\n collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentNames1[i], fragmentName2);\n }\n} // Find all conflicts found between two selection sets, including those found\n// via spreading in fragments. Called when determining if conflicts exist\n// between the sub-fields of two overlapping fields.\n\n\nfunction findConflictsBetweenSubSelectionSets(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, parentType1, selectionSet1, parentType2, selectionSet2) {\n var conflicts = [];\n\n var _getFieldsAndFragment2 = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType1, selectionSet1),\n fieldMap1 = _getFieldsAndFragment2[0],\n fragmentNames1 = _getFieldsAndFragment2[1];\n\n var _getFieldsAndFragment3 = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType2, selectionSet2),\n fieldMap2 = _getFieldsAndFragment3[0],\n fragmentNames2 = _getFieldsAndFragment3[1]; // (H) First, collect all conflicts between these two collections of field.\n\n\n collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fieldMap2); // (I) Then collect conflicts between the first collection of fields and\n // those referenced by each fragment name associated with the second.\n\n if (fragmentNames2.length !== 0) {\n for (var j = 0; j < fragmentNames2.length; j++) {\n collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fragmentNames2[j]);\n }\n } // (I) Then collect conflicts between the second collection of fields and\n // those referenced by each fragment name associated with the first.\n\n\n if (fragmentNames1.length !== 0) {\n for (var i = 0; i < fragmentNames1.length; i++) {\n collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap2, fragmentNames1[i]);\n }\n } // (J) Also collect conflicts between any fragment names by the first and\n // fragment names by the second. This compares each item in the first set of\n // names to each item in the second set of names.\n\n\n for (var _i3 = 0; _i3 < fragmentNames1.length; _i3++) {\n for (var _j = 0; _j < fragmentNames2.length; _j++) {\n collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentNames1[_i3], fragmentNames2[_j]);\n }\n }\n\n return conflicts;\n} // Collect all Conflicts \"within\" one collection of fields.\n\n\nfunction collectConflictsWithin(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, fieldMap) {\n // A field map is a keyed collection, where each key represents a response\n // name and the value at that key is a list of all fields which provide that\n // response name. For every response name, if there are multiple fields, they\n // must be compared to find a potential conflict.\n for (var _i5 = 0, _objectEntries2 = Object(_polyfills_objectEntries_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(fieldMap); _i5 < _objectEntries2.length; _i5++) {\n var _ref5 = _objectEntries2[_i5];\n var responseName = _ref5[0];\n var fields = _ref5[1];\n\n // This compares every field in the list to every other field in this list\n // (except to itself). If the list only has one item, nothing needs to\n // be compared.\n if (fields.length > 1) {\n for (var i = 0; i < fields.length; i++) {\n for (var j = i + 1; j < fields.length; j++) {\n var conflict = findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, false, // within one collection is never mutually exclusive\n responseName, fields[i], fields[j]);\n\n if (conflict) {\n conflicts.push(conflict);\n }\n }\n }\n }\n }\n} // Collect all Conflicts between two collections of fields. This is similar to,\n// but different from the `collectConflictsWithin` function above. This check\n// assumes that `collectConflictsWithin` has already been called on each\n// provided collection of fields. This is true because this validator traverses\n// each individual selection set.\n\n\nfunction collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentFieldsAreMutuallyExclusive, fieldMap1, fieldMap2) {\n // A field map is a keyed collection, where each key represents a response\n // name and the value at that key is a list of all fields which provide that\n // response name. For any response name which appears in both provided field\n // maps, each field from the first field map must be compared to every field\n // in the second field map to find potential conflicts.\n for (var _i7 = 0, _Object$keys2 = Object.keys(fieldMap1); _i7 < _Object$keys2.length; _i7++) {\n var responseName = _Object$keys2[_i7];\n var fields2 = fieldMap2[responseName];\n\n if (fields2) {\n var fields1 = fieldMap1[responseName];\n\n for (var i = 0; i < fields1.length; i++) {\n for (var j = 0; j < fields2.length; j++) {\n var conflict = findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentFieldsAreMutuallyExclusive, responseName, fields1[i], fields2[j]);\n\n if (conflict) {\n conflicts.push(conflict);\n }\n }\n }\n }\n }\n} // Determines if there is a conflict between two particular fields, including\n// comparing their sub-fields.\n\n\nfunction findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentFieldsAreMutuallyExclusive, responseName, field1, field2) {\n var parentType1 = field1[0],\n node1 = field1[1],\n def1 = field1[2];\n var parentType2 = field2[0],\n node2 = field2[1],\n def2 = field2[2]; // If it is known that two fields could not possibly apply at the same\n // time, due to the parent types, then it is safe to permit them to diverge\n // in aliased field or arguments used as they will not present any ambiguity\n // by differing.\n // It is known that two parent types could never overlap if they are\n // different Object types. Interface or Union types might overlap - if not\n // in the current state of the schema, then perhaps in some future version,\n // thus may not safely diverge.\n\n var areMutuallyExclusive = parentFieldsAreMutuallyExclusive || parentType1 !== parentType2 && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isObjectType\"])(parentType1) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isObjectType\"])(parentType2);\n\n if (!areMutuallyExclusive) {\n var _node1$arguments, _node2$arguments, _node1$directives, _node2$directives;\n\n // Two aliases must refer to the same field.\n var name1 = node1.name.value;\n var name2 = node2.name.value;\n\n if (name1 !== name2) {\n return [[responseName, \"\\\"\".concat(name1, \"\\\" and \\\"\").concat(name2, \"\\\" are different fields\")], [node1], [node2]];\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n\n\n var args1 = (_node1$arguments = node1.arguments) !== null && _node1$arguments !== void 0 ? _node1$arguments : []; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n\n var args2 = (_node2$arguments = node2.arguments) !== null && _node2$arguments !== void 0 ? _node2$arguments : []; // Two field calls must have the same arguments.\n\n if (!sameArguments(args1, args2)) {\n return [[responseName, 'they have differing arguments'], [node1], [node2]];\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n\n\n var directives1 = (_node1$directives = node1.directives) !== null && _node1$directives !== void 0 ? _node1$directives : []; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n\n var directives2 = (_node2$directives = node2.directives) !== null && _node2$directives !== void 0 ? _node2$directives : [];\n\n if (!sameStreams(directives1, directives2)) {\n return [[responseName, 'they have differing stream directives'], [node1], [node2]];\n }\n } // The return type for each field.\n\n\n var type1 = def1 === null || def1 === void 0 ? void 0 : def1.type;\n var type2 = def2 === null || def2 === void 0 ? void 0 : def2.type;\n\n if (type1 && type2 && doTypesConflict(type1, type2)) {\n return [[responseName, \"they return conflicting types \\\"\".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type1), \"\\\" and \\\"\").concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type2), \"\\\"\")], [node1], [node2]];\n } // Collect and compare sub-fields. Use the same \"visited fragment names\" list\n // for both collections so fields in a fragment reference are never\n // compared to themselves.\n\n\n var selectionSet1 = node1.selectionSet;\n var selectionSet2 = node2.selectionSet;\n\n if (selectionSet1 && selectionSet2) {\n var conflicts = findConflictsBetweenSubSelectionSets(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"getNamedType\"])(type1), selectionSet1, Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"getNamedType\"])(type2), selectionSet2);\n return subfieldConflicts(conflicts, responseName, node1, node2);\n }\n}\n\nfunction sameArguments(arguments1, arguments2) {\n if (arguments1.length !== arguments2.length) {\n return false;\n }\n\n return arguments1.every(function (argument1) {\n var argument2 = Object(_polyfills_find_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arguments2, function (argument) {\n return argument.name.value === argument1.name.value;\n });\n\n if (!argument2) {\n return false;\n }\n\n return sameValue(argument1.value, argument2.value);\n });\n}\n\nfunction sameDirectiveArgument(directive1, directive2, argumentName) {\n /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */\n var args1 = directive1.arguments || [];\n var arg1 = Object(_polyfills_find_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(args1, function (argument) {\n return argument.name.value === argumentName;\n });\n\n if (!arg1) {\n return false;\n }\n /* istanbul ignore next (See https://github.com/graphql/graphql-js/issues/2203) */\n\n\n var args2 = directive2.arguments || [];\n var arg2 = Object(_polyfills_find_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(args2, function (argument) {\n return argument.name.value === argumentName;\n });\n\n if (!arg2) {\n return false;\n }\n\n return sameValue(arg1.value, arg2.value);\n}\n\nfunction getStreamDirective(directives) {\n return Object(_polyfills_find_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(directives, function (directive) {\n return directive.name.value === 'stream';\n });\n}\n\nfunction sameStreams(directives1, directives2) {\n var stream1 = getStreamDirective(directives1);\n var stream2 = getStreamDirective(directives2);\n\n if (!stream1 && !stream2) {\n // both fields do not have streams\n return true;\n } else if (stream1 && stream2) {\n // check if both fields have equivalent streams\n return sameDirectiveArgument(stream1, stream2, 'initialCount') && sameDirectiveArgument(stream1, stream2, 'label');\n } // fields have a mix of stream and no stream\n\n\n return false;\n}\n\nfunction sameValue(value1, value2) {\n return Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__[\"print\"])(value1) === Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__[\"print\"])(value2);\n} // Two types conflict if both types could not apply to a value simultaneously.\n// Composite types are ignored as their individual field types will be compared\n// later recursively. However List and Non-Null types must match.\n\n\nfunction doTypesConflict(type1, type2) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isListType\"])(type1)) {\n return Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isListType\"])(type2) ? doTypesConflict(type1.ofType, type2.ofType) : true;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isListType\"])(type2)) {\n return true;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isNonNullType\"])(type1)) {\n return Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isNonNullType\"])(type2) ? doTypesConflict(type1.ofType, type2.ofType) : true;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isNonNullType\"])(type2)) {\n return true;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isLeafType\"])(type1) || Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isLeafType\"])(type2)) {\n return type1 !== type2;\n }\n\n return false;\n} // Given a selection set, return the collection of fields (a mapping of response\n// name to field nodes and definitions) as well as a list of fragment names\n// referenced via fragment spreads.\n\n\nfunction getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType, selectionSet) {\n var cached = cachedFieldsAndFragmentNames.get(selectionSet);\n\n if (!cached) {\n var nodeAndDefs = Object.create(null);\n var fragmentNames = Object.create(null);\n\n _collectFieldsAndFragmentNames(context, parentType, selectionSet, nodeAndDefs, fragmentNames);\n\n cached = [nodeAndDefs, Object.keys(fragmentNames)];\n cachedFieldsAndFragmentNames.set(selectionSet, cached);\n }\n\n return cached;\n} // Given a reference to a fragment, return the represented collection of fields\n// as well as a list of nested fragment names referenced via fragment spreads.\n\n\nfunction getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment) {\n // Short-circuit building a type from the node if possible.\n var cached = cachedFieldsAndFragmentNames.get(fragment.selectionSet);\n\n if (cached) {\n return cached;\n }\n\n var fragmentType = Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_7__[\"typeFromAST\"])(context.getSchema(), fragment.typeCondition);\n return getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragmentType, fragment.selectionSet);\n}\n\nfunction _collectFieldsAndFragmentNames(context, parentType, selectionSet, nodeAndDefs, fragmentNames) {\n for (var _i9 = 0, _selectionSet$selecti2 = selectionSet.selections; _i9 < _selectionSet$selecti2.length; _i9++) {\n var selection = _selectionSet$selecti2[_i9];\n\n switch (selection.kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].FIELD:\n {\n var fieldName = selection.name.value;\n var fieldDef = void 0;\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isObjectType\"])(parentType) || Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isInterfaceType\"])(parentType)) {\n fieldDef = parentType.getFields()[fieldName];\n }\n\n var responseName = selection.alias ? selection.alias.value : fieldName;\n\n if (!nodeAndDefs[responseName]) {\n nodeAndDefs[responseName] = [];\n }\n\n nodeAndDefs[responseName].push([parentType, selection, fieldDef]);\n break;\n }\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].FRAGMENT_SPREAD:\n fragmentNames[selection.name.value] = true;\n break;\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__[\"Kind\"].INLINE_FRAGMENT:\n {\n var typeCondition = selection.typeCondition;\n var inlineFragmentType = typeCondition ? Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_7__[\"typeFromAST\"])(context.getSchema(), typeCondition) : parentType;\n\n _collectFieldsAndFragmentNames(context, inlineFragmentType, selection.selectionSet, nodeAndDefs, fragmentNames);\n\n break;\n }\n }\n }\n} // Given a series of Conflicts which occurred between two sub-fields, generate\n// a single Conflict.\n\n\nfunction subfieldConflicts(conflicts, responseName, node1, node2) {\n if (conflicts.length > 0) {\n return [[responseName, conflicts.map(function (_ref6) {\n var reason = _ref6[0];\n return reason;\n })], conflicts.reduce(function (allFields, _ref7) {\n var fields1 = _ref7[1];\n return allFields.concat(fields1);\n }, [node1]), conflicts.reduce(function (allFields, _ref8) {\n var fields2 = _ref8[2];\n return allFields.concat(fields2);\n }, [node2])];\n }\n}\n/**\n * A way to keep track of pairs of things when the ordering of the pair does\n * not matter. We do this by maintaining a sort of double adjacency sets.\n */\n\n\nvar PairSet = /*#__PURE__*/function () {\n function PairSet() {\n this._data = Object.create(null);\n }\n\n var _proto = PairSet.prototype;\n\n _proto.has = function has(a, b, areMutuallyExclusive) {\n var first = this._data[a];\n var result = first && first[b];\n\n if (result === undefined) {\n return false;\n } // areMutuallyExclusive being false is a superset of being true,\n // hence if we want to know if this PairSet \"has\" these two with no\n // exclusivity, we have to ensure it was added as such.\n\n\n if (areMutuallyExclusive === false) {\n return result === false;\n }\n\n return true;\n };\n\n _proto.add = function add(a, b, areMutuallyExclusive) {\n this._pairSetAdd(a, b, areMutuallyExclusive);\n\n this._pairSetAdd(b, a, areMutuallyExclusive);\n };\n\n _proto._pairSetAdd = function _pairSetAdd(a, b, areMutuallyExclusive) {\n var map = this._data[a];\n\n if (!map) {\n map = Object.create(null);\n this._data[a] = map;\n }\n\n map[b] = areMutuallyExclusive;\n };\n\n return PairSet;\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9PdmVybGFwcGluZ0ZpZWxkc0NhbkJlTWVyZ2VkUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL092ZXJsYXBwaW5nRmllbGRzQ2FuQmVNZXJnZWRSdWxlLm1qcz8yZDk0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmaW5kIGZyb20gXCIuLi8uLi9wb2x5ZmlsbHMvZmluZC5tanNcIjtcbmltcG9ydCBvYmplY3RFbnRyaWVzIGZyb20gXCIuLi8uLi9wb2x5ZmlsbHMvb2JqZWN0RW50cmllcy5tanNcIjtcbmltcG9ydCBpbnNwZWN0IGZyb20gXCIuLi8uLi9qc3V0aWxzL2luc3BlY3QubWpzXCI7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qc1wiO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gXCIuLi8uLi9sYW5ndWFnZS9raW5kcy5tanNcIjtcbmltcG9ydCB7IHByaW50IH0gZnJvbSBcIi4uLy4uL2xhbmd1YWdlL3ByaW50ZXIubWpzXCI7XG5pbXBvcnQgeyBnZXROYW1lZFR5cGUsIGlzTm9uTnVsbFR5cGUsIGlzTGVhZlR5cGUsIGlzT2JqZWN0VHlwZSwgaXNMaXN0VHlwZSwgaXNJbnRlcmZhY2VUeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGUvZGVmaW5pdGlvbi5tanNcIjtcbmltcG9ydCB7IHR5cGVGcm9tQVNUIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy90eXBlRnJvbUFTVC5tanNcIjtcblxuZnVuY3Rpb24gcmVhc29uTWVzc2FnZShyZWFzb24pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocmVhc29uKSkge1xuICAgIHJldHVybiByZWFzb24ubWFwKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICB2YXIgcmVzcG9uc2VOYW1lID0gX3JlZlswXSxcbiAgICAgICAgICBzdWJSZWFzb24gPSBfcmVmWzFdO1xuICAgICAgcmV0dXJuIFwic3ViZmllbGRzIFxcXCJcIi5jb25jYXQocmVzcG9uc2VOYW1lLCBcIlxcXCIgY29uZmxpY3QgYmVjYXVzZSBcIikgKyByZWFzb25NZXNzYWdlKHN1YlJlYXNvbik7XG4gICAgfSkuam9pbignIGFuZCAnKTtcbiAgfVxuXG4gIHJldHVybiByZWFzb247XG59XG4vKipcbiAqIE92ZXJsYXBwaW5nIGZpZWxkcyBjYW4gYmUgbWVyZ2VkXG4gKlxuICogQSBzZWxlY3Rpb24gc2V0IGlzIG9ubHkgdmFsaWQgaWYgYWxsIGZpZWxkcyAoaW5jbHVkaW5nIHNwcmVhZGluZyBhbnlcbiAqIGZyYWdtZW50cykgZWl0aGVyIGNvcnJlc3BvbmQgdG8gZGlzdGluY3QgcmVzcG9uc2UgbmFtZXMgb3IgY2FuIGJlIG1lcmdlZFxuICogd2l0aG91dCBhbWJpZ3VpdHkuXG4gKi9cblxuXG5leHBvcnQgZnVuY3Rpb24gT3ZlcmxhcHBpbmdGaWVsZHNDYW5CZU1lcmdlZFJ1bGUoY29udGV4dCkge1xuICAvLyBBIG1lbW9pemF0aW9uIGZvciB3aGVuIHR3byBmcmFnbWVudHMgYXJlIGNvbXBhcmVkIFwiYmV0d2VlblwiIGVhY2ggb3RoZXIgZm9yXG4gIC8vIGNvbmZsaWN0cy4gVHdvIGZyYWdtZW50cyBtYXkgYmUgY29tcGFyZWQgbWFueSB0aW1lcywgc28gbWVtb2l6aW5nIHRoaXMgY2FuXG4gIC8vIGRyYW1hdGljYWxseSBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGlzIHZhbGlkYXRvci5cbiAgdmFyIGNvbXBhcmVkRnJhZ21lbnRQYWlycyA9IG5ldyBQYWlyU2V0KCk7IC8vIEEgY2FjaGUgZm9yIHRoZSBcImZpZWxkIG1hcFwiIGFuZCBsaXN0IG9mIGZyYWdtZW50IG5hbWVzIGZvdW5kIGluIGFueSBnaXZlblxuICAvLyBzZWxlY3Rpb24gc2V0LiBTZWxlY3Rpb24gc2V0cyBtYXkgYmUgYXNrZWQgZm9yIHRoaXMgaW5mb3JtYXRpb24gbXVsdGlwbGVcbiAgLy8gdGltZXMsIHNvIHRoaXMgaW1wcm92ZXMgdGhlIHBlcmZvcm1hbmNlIG9mIHRoaXMgdmFsaWRhdG9yLlxuXG4gIHZhciBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzID0gbmV3IE1hcCgpO1xuICByZXR1cm4ge1xuICAgIFNlbGVjdGlvblNldDogZnVuY3Rpb24gU2VsZWN0aW9uU2V0KHNlbGVjdGlvblNldCkge1xuICAgICAgdmFyIGNvbmZsaWN0cyA9IGZpbmRDb25mbGljdHNXaXRoaW5TZWxlY3Rpb25TZXQoY29udGV4dCwgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcywgY29tcGFyZWRGcmFnbWVudFBhaXJzLCBjb250ZXh0LmdldFBhcmVudFR5cGUoKSwgc2VsZWN0aW9uU2V0KTtcblxuICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgY29uZmxpY3RzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgICAgdmFyIF9yZWYzID0gY29uZmxpY3RzW19pMl07XG4gICAgICAgIHZhciBfcmVmMiQgPSBfcmVmM1swXTtcbiAgICAgICAgdmFyIHJlc3BvbnNlTmFtZSA9IF9yZWYyJFswXTtcbiAgICAgICAgdmFyIHJlYXNvbiA9IF9yZWYyJFsxXTtcbiAgICAgICAgdmFyIGZpZWxkczEgPSBfcmVmM1sxXTtcbiAgICAgICAgdmFyIGZpZWxkczIgPSBfcmVmM1syXTtcbiAgICAgICAgdmFyIHJlYXNvbk1zZyA9IHJlYXNvbk1lc3NhZ2UocmVhc29uKTtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiRmllbGRzIFxcXCJcIi5jb25jYXQocmVzcG9uc2VOYW1lLCBcIlxcXCIgY29uZmxpY3QgYmVjYXVzZSBcIikuY29uY2F0KHJlYXNvbk1zZywgXCIuIFVzZSBkaWZmZXJlbnQgYWxpYXNlcyBvbiB0aGUgZmllbGRzIHRvIGZldGNoIGJvdGggaWYgdGhpcyB3YXMgaW50ZW50aW9uYWwuXCIpLCBmaWVsZHMxLmNvbmNhdChmaWVsZHMyKSkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBBbGdvcml0aG06XG4gKlxuICogQ29uZmxpY3RzIG9jY3VyIHdoZW4gdHdvIGZpZWxkcyBleGlzdCBpbiBhIHF1ZXJ5IHdoaWNoIHdpbGwgcHJvZHVjZSB0aGUgc2FtZVxuICogcmVzcG9uc2UgbmFtZSwgYnV0IHJlcHJlc2VudCBkaWZmZXJpbmcgdmFsdWVzLCB0aHVzIGNyZWF0aW5nIGEgY29uZmxpY3QuXG4gKiBUaGUgYWxnb3JpdGhtIGJlbG93IGZpbmRzIGFsbCBjb25mbGljdHMgdmlhIG1ha2luZyBhIHNlcmllcyBvZiBjb21wYXJpc29uc1xuICogYmV0d2VlbiBmaWVsZHMuIEluIG9yZGVyIHRvIGNvbXBhcmUgYXMgZmV3IGZpZWxkcyBhcyBwb3NzaWJsZSwgdGhpcyBtYWtlc1xuICogYSBzZXJpZXMgb2YgY29tcGFyaXNvbnMgXCJ3aXRoaW5cIiBzZXRzIG9mIGZpZWxkcyBhbmQgXCJiZXR3ZWVuXCIgc2V0cyBvZiBmaWVsZHMuXG4gKlxuICogR2l2ZW4gYW55IHNlbGVjdGlvbiBzZXQsIGEgY29sbGVjdGlvbiBwcm9kdWNlcyBib3RoIGEgc2V0IG9mIGZpZWxkcyBieVxuICogYWxzbyBpbmNsdWRpbmcgYWxsIGlubGluZSBmcmFnbWVudHMsIGFzIHdlbGwgYXMgYSBsaXN0IG9mIGZyYWdtZW50c1xuICogcmVmZXJlbmNlZCBieSBmcmFnbWVudCBzcHJlYWRzLlxuICpcbiAqIEEpIEVhY2ggc2VsZWN0aW9uIHNldCByZXByZXNlbnRlZCBpbiB0aGUgZG9jdW1lbnQgZmlyc3QgY29tcGFyZXMgXCJ3aXRoaW5cIiBpdHNcbiAqIGNvbGxlY3RlZCBzZXQgb2YgZmllbGRzLCBmaW5kaW5nIGFueSBjb25mbGljdHMgYmV0d2VlbiBldmVyeSBwYWlyIG9mXG4gKiBvdmVybGFwcGluZyBmaWVsZHMuXG4gKiBOb3RlOiBUaGlzIGlzIHRoZSAqb25seSB0aW1lKiB0aGF0IGEgdGhlIGZpZWxkcyBcIndpdGhpblwiIGEgc2V0IGFyZSBjb21wYXJlZFxuICogdG8gZWFjaCBvdGhlci4gQWZ0ZXIgdGhpcyBvbmx5IGZpZWxkcyBcImJldHdlZW5cIiBzZXRzIGFyZSBjb21wYXJlZC5cbiAqXG4gKiBCKSBBbHNvLCBpZiBhbnkgZnJhZ21lbnQgaXMgcmVmZXJlbmNlZCBpbiBhIHNlbGVjdGlvbiBzZXQsIHRoZW4gYVxuICogY29tcGFyaXNvbiBpcyBtYWRlIFwiYmV0d2VlblwiIHRoZSBvcmlnaW5hbCBzZXQgb2YgZmllbGRzIGFuZCB0aGVcbiAqIHJlZmVyZW5jZWQgZnJhZ21lbnQuXG4gKlxuICogQykgQWxzbywgaWYgbXVsdGlwbGUgZnJhZ21lbnRzIGFyZSByZWZlcmVuY2VkLCB0aGVuIGNvbXBhcmlzb25zXG4gKiBhcmUgbWFkZSBcImJldHdlZW5cIiBlYWNoIHJlZmVyZW5jZWQgZnJhZ21lbnQuXG4gKlxuICogRCkgV2hlbiBjb21wYXJpbmcgXCJiZXR3ZWVuXCIgYSBzZXQgb2YgZmllbGRzIGFuZCBhIHJlZmVyZW5jZWQgZnJhZ21lbnQsIGZpcnN0XG4gKiBhIGNvbXBhcmlzb24gaXMgbWFkZSBiZXR3ZWVuIGVhY2ggZmllbGQgaW4gdGhlIG9yaWdpbmFsIHNldCBvZiBmaWVsZHMgYW5kXG4gKiBlYWNoIGZpZWxkIGluIHRoZSB0aGUgcmVmZXJlbmNlZCBzZXQgb2YgZmllbGRzLlxuICpcbiAqIEUpIEFsc28sIGlmIGFueSBmcmFnbWVudCBpcyByZWZlcmVuY2VkIGluIHRoZSByZWZlcmVuY2VkIHNlbGVjdGlvbiBzZXQsXG4gKiB0aGVuIGEgY29tcGFyaXNvbiBpcyBtYWRlIFwiYmV0d2VlblwiIHRoZSBvcmlnaW5hbCBzZXQgb2YgZmllbGRzIGFuZCB0aGVcbiAqIHJlZmVyZW5jZWQgZnJhZ21lbnQgKHJlY3Vyc2l2ZWx5IHJlZmVycmluZyB0byBzdGVwIEQpLlxuICpcbiAqIEYpIFdoZW4gY29tcGFyaW5nIFwiYmV0d2VlblwiIHR3byBmcmFnbWVudHMsIGZpcnN0IGEgY29tcGFyaXNvbiBpcyBtYWRlIGJldHdlZW5cbiAqIGVhY2ggZmllbGQgaW4gdGhlIGZpcnN0IHJlZmVyZW5jZWQgc2V0IG9mIGZpZWxkcyBhbmQgZWFjaCBmaWVsZCBpbiB0aGUgdGhlXG4gKiBzZWNvbmQgcmVmZXJlbmNlZCBzZXQgb2YgZmllbGRzLlxuICpcbiAqIEcpIEFsc28sIGFueSBmcmFnbWVudHMgcmVmZXJlbmNlZCBieSB0aGUgZmlyc3QgbXVzdCBiZSBjb21wYXJlZCB0byB0aGVcbiAqIHNlY29uZCwgYW5kIGFueSBmcmFnbWVudHMgcmVmZXJlbmNlZCBieSB0aGUgc2Vjb25kIG11c3QgYmUgY29tcGFyZWQgdG8gdGhlXG4gKiBmaXJzdCAocmVjdXJzaXZlbHkgcmVmZXJyaW5nIHRvIHN0ZXAgRikuXG4gKlxuICogSCkgV2hlbiBjb21wYXJpbmcgdHdvIGZpZWxkcywgaWYgYm90aCBoYXZlIHNlbGVjdGlvbiBzZXRzLCB0aGVuIGEgY29tcGFyaXNvblxuICogaXMgbWFkZSBcImJldHdlZW5cIiBib3RoIHNlbGVjdGlvbiBzZXRzLCBmaXJzdCBjb21wYXJpbmcgdGhlIHNldCBvZiBmaWVsZHMgaW5cbiAqIHRoZSBmaXJzdCBzZWxlY3Rpb24gc2V0IHdpdGggdGhlIHNldCBvZiBmaWVsZHMgaW4gdGhlIHNlY29uZC5cbiAqXG4gKiBJKSBBbHNvLCBpZiBhbnkgZnJhZ21lbnQgaXMgcmVmZXJlbmNlZCBpbiBlaXRoZXIgc2VsZWN0aW9uIHNldCwgdGhlbiBhXG4gKiBjb21wYXJpc29uIGlzIG1hZGUgXCJiZXR3ZWVuXCIgdGhlIG90aGVyIHNldCBvZiBmaWVsZHMgYW5kIHRoZVxuICogcmVmZXJlbmNlZCBmcmFnbWVudC5cbiAqXG4gKiBKKSBBbHNvLCBpZiB0d28gZnJhZ21lbnRzIGFyZSByZWZlcmVuY2VkIGluIGJvdGggc2VsZWN0aW9uIHNldHMsIHRoZW4gYVxuICogY29tcGFyaXNvbiBpcyBtYWRlIFwiYmV0d2VlblwiIHRoZSB0d28gZnJhZ21lbnRzLlxuICpcbiAqL1xuLy8gRmluZCBhbGwgY29uZmxpY3RzIGZvdW5kIFwid2l0aGluXCIgYSBzZWxlY3Rpb24gc2V0LCBpbmNsdWRpbmcgdGhvc2UgZm91bmRcbi8vIHZpYSBzcHJlYWRpbmcgaW4gZnJhZ21lbnRzLiBDYWxsZWQgd2hlbiB2aXNpdGluZyBlYWNoIFNlbGVjdGlvblNldCBpbiB0aGVcbi8vIEdyYXBoUUwgRG9jdW1lbnQuXG5mdW5jdGlvbiBmaW5kQ29uZmxpY3RzV2l0aGluU2VsZWN0aW9uU2V0KGNvbnRleHQsIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsIGNvbXBhcmVkRnJhZ21lbnRQYWlycywgcGFyZW50VHlwZSwgc2VsZWN0aW9uU2V0KSB7XG4gIHZhciBjb25mbGljdHMgPSBbXTtcblxuICB2YXIgX2dldEZpZWxkc0FuZEZyYWdtZW50ID0gZ2V0RmllbGRzQW5kRnJhZ21lbnROYW1lcyhjb250ZXh0LCBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLCBwYXJlbnRUeXBlLCBzZWxlY3Rpb25TZXQpLFxuICAgICAgZmllbGRNYXAgPSBfZ2V0RmllbGRzQW5kRnJhZ21lbnRbMF0sXG4gICAgICBmcmFnbWVudE5hbWVzID0gX2dldEZpZWxkc0FuZEZyYWdtZW50WzFdOyAvLyAoQSkgRmluZCBmaW5kIGFsbCBjb25mbGljdHMgXCJ3aXRoaW5cIiB0aGUgZmllbGRzIG9mIHRoaXMgc2VsZWN0aW9uIHNldC5cbiAgLy8gTm90ZTogdGhpcyBpcyB0aGUgKm9ubHkgcGxhY2UqIGBjb2xsZWN0Q29uZmxpY3RzV2l0aGluYCBpcyBjYWxsZWQuXG5cblxuICBjb2xsZWN0Q29uZmxpY3RzV2l0aGluKGNvbnRleHQsIGNvbmZsaWN0cywgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcywgY29tcGFyZWRGcmFnbWVudFBhaXJzLCBmaWVsZE1hcCk7XG5cbiAgaWYgKGZyYWdtZW50TmFtZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgLy8gKEIpIFRoZW4gY29sbGVjdCBjb25mbGljdHMgYmV0d2VlbiB0aGVzZSBmaWVsZHMgYW5kIHRob3NlIHJlcHJlc2VudGVkIGJ5XG4gICAgLy8gZWFjaCBzcHJlYWQgZnJhZ21lbnQgbmFtZSBmb3VuZC5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYWdtZW50TmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbGxlY3RDb25mbGljdHNCZXR3ZWVuRmllbGRzQW5kRnJhZ21lbnQoY29udGV4dCwgY29uZmxpY3RzLCBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLCBjb21wYXJlZEZyYWdtZW50UGFpcnMsIGZhbHNlLCBmaWVsZE1hcCwgZnJhZ21lbnROYW1lc1tpXSk7IC8vIChDKSBUaGVuIGNvbXBhcmUgdGhpcyBmcmFnbWVudCB3aXRoIGFsbCBvdGhlciBmcmFnbWVudHMgZm91bmQgaW4gdGhpc1xuICAgICAgLy8gc2VsZWN0aW9uIHNldCB0byBjb2xsZWN0IGNvbmZsaWN0cyBiZXR3ZWVuIGZyYWdtZW50cyBzcHJlYWQgdG9nZXRoZXIuXG4gICAgICAvLyBUaGlzIGNvbXBhcmVzIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBvZiBmcmFnbWVudCBuYW1lcyB0byBldmVyeSBvdGhlclxuICAgICAgLy8gaXRlbSBpbiB0aGF0IHNhbWUgbGlzdCAoZXhjZXB0IGZvciBpdHNlbGYpLlxuXG4gICAgICBmb3IgKHZhciBqID0gaSArIDE7IGogPCBmcmFnbWVudE5hbWVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGNvbGxlY3RDb25mbGljdHNCZXR3ZWVuRnJhZ21lbnRzKGNvbnRleHQsIGNvbmZsaWN0cywgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcywgY29tcGFyZWRGcmFnbWVudFBhaXJzLCBmYWxzZSwgZnJhZ21lbnROYW1lc1tpXSwgZnJhZ21lbnROYW1lc1tqXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbmZsaWN0cztcbn0gLy8gQ29sbGVjdCBhbGwgY29uZmxpY3RzIGZvdW5kIGJldHdlZW4gYSBzZXQgb2YgZmllbGRzIGFuZCBhIGZyYWdtZW50IHJlZmVyZW5jZVxuLy8gaW5jbHVkaW5nIHZpYSBzcHJlYWRpbmcgaW4gYW55IG5lc3RlZCBmcmFnbWVudHMuXG5cblxuZnVuY3Rpb24gY29sbGVjdENvbmZsaWN0c0JldHdlZW5GaWVsZHNBbmRGcmFnbWVudChjb250ZXh0LCBjb25mbGljdHMsIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsIGNvbXBhcmVkRnJhZ21lbnRQYWlycywgYXJlTXV0dWFsbHlFeGNsdXNpdmUsIGZpZWxkTWFwLCBmcmFnbWVudE5hbWUpIHtcbiAgdmFyIGZyYWdtZW50ID0gY29udGV4dC5nZXRGcmFnbWVudChmcmFnbWVudE5hbWUpO1xuXG4gIGlmICghZnJhZ21lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgX2dldFJlZmVyZW5jZWRGaWVsZHNBID0gZ2V0UmVmZXJlbmNlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMoY29udGV4dCwgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcywgZnJhZ21lbnQpLFxuICAgICAgZmllbGRNYXAyID0gX2dldFJlZmVyZW5jZWRGaWVsZHNBWzBdLFxuICAgICAgZnJhZ21lbnROYW1lczIgPSBfZ2V0UmVmZXJlbmNlZEZpZWxkc0FbMV07IC8vIERvIG5vdCBjb21wYXJlIGEgZnJhZ21lbnQncyBmaWVsZE1hcCB0byBpdHNlbGYuXG5cblxuICBpZiAoZmllbGRNYXAgPT09IGZpZWxkTWFwMikge1xuICAgIHJldHVybjtcbiAgfSAvLyAoRCkgRmlyc3QgY29sbGVjdCBhbnkgY29uZmxpY3RzIGJldHdlZW4gdGhlIHByb3ZpZGVkIGNvbGxlY3Rpb24gb2YgZmllbGRzXG4gIC8vIGFuZCB0aGUgY29sbGVjdGlvbiBvZiBmaWVsZHMgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIGZyYWdtZW50LlxuXG5cbiAgY29sbGVjdENvbmZsaWN0c0JldHdlZW4oY29udGV4dCwgY29uZmxpY3RzLCBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLCBjb21wYXJlZEZyYWdtZW50UGFpcnMsIGFyZU11dHVhbGx5RXhjbHVzaXZlLCBmaWVsZE1hcCwgZmllbGRNYXAyKTsgLy8gKEUpIFRoZW4gY29sbGVjdCBhbnkgY29uZmxpY3RzIGJldHdlZW4gdGhlIHByb3ZpZGVkIGNvbGxlY3Rpb24gb2YgZmllbGRzXG4gIC8vIGFuZCBhbnkgZnJhZ21lbnQgbmFtZXMgZm91bmQgaW4gdGhlIGdpdmVuIGZyYWdtZW50LlxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhZ21lbnROYW1lczIubGVuZ3RoOyBpKyspIHtcbiAgICBjb2xsZWN0Q29uZmxpY3RzQmV0d2VlbkZpZWxkc0FuZEZyYWdtZW50KGNvbnRleHQsIGNvbmZsaWN0cywgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcywgY29tcGFyZWRGcmFnbWVudFBhaXJzLCBhcmVNdXR1YWxseUV4Y2x1c2l2ZSwgZmllbGRNYXAsIGZyYWdtZW50TmFtZXMyW2ldKTtcbiAgfVxufSAvLyBDb2xsZWN0IGFsbCBjb25mbGljdHMgZm91bmQgYmV0d2VlbiB0d28gZnJhZ21lbnRzLCBpbmNsdWRpbmcgdmlhIHNwcmVhZGluZyBpblxuLy8gYW55IG5lc3RlZCBmcmFnbWVudHMuXG5cblxuZnVuY3Rpb24gY29sbGVjdENvbmZsaWN0c0JldHdlZW5GcmFnbWVudHMoY29udGV4dCwgY29uZmxpY3RzLCBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLCBjb21wYXJlZEZyYWdtZW50UGFpcnMsIGFyZU11dHVhbGx5RXhjbHVzaXZlLCBmcmFnbWVudE5hbWUxLCBmcmFnbWVudE5hbWUyKSB7XG4gIC8vIE5vIG5lZWQgdG8gY29tcGFyZSBhIGZyYWdtZW50IHRvIGl0c2VsZi5cbiAgaWYgKGZyYWdtZW50TmFtZTEgPT09IGZyYWdtZW50TmFtZTIpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gTWVtb2l6ZSBzbyB0d28gZnJhZ21lbnRzIGFyZSBub3QgY29tcGFyZWQgZm9yIGNvbmZsaWN0cyBtb3JlIHRoYW4gb25jZS5cblxuXG4gIGlmIChjb21wYXJlZEZyYWdtZW50UGFpcnMuaGFzKGZyYWdtZW50TmFtZTEsIGZyYWdtZW50TmFtZTIsIGFyZU11dHVhbGx5RXhjbHVzaXZlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbXBhcmVkRnJhZ21lbnRQYWlycy5hZGQoZnJhZ21lbnROYW1lMSwgZnJhZ21lbnROYW1lMiwgYXJlTXV0dWFsbHlFeGNsdXNpdmUpO1xuICB2YXIgZnJhZ21lbnQxID0gY29udGV4dC5nZXRGcmFnbWVudChmcmFnbWVudE5hbWUxKTtcbiAgdmFyIGZyYWdtZW50MiA9IGNvbnRleHQuZ2V0RnJhZ21lbnQoZnJhZ21lbnROYW1lMik7XG5cbiAgaWYgKCFmcmFnbWVudDEgfHwgIWZyYWdtZW50Mikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBfZ2V0UmVmZXJlbmNlZEZpZWxkc0EyID0gZ2V0UmVmZXJlbmNlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMoY29udGV4dCwgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcywgZnJhZ21lbnQxKSxcbiAgICAgIGZpZWxkTWFwMSA9IF9nZXRSZWZlcmVuY2VkRmllbGRzQTJbMF0sXG4gICAgICBmcmFnbWVudE5hbWVzMSA9IF9nZXRSZWZlcmVuY2VkRmllbGRzQTJbMV07XG5cbiAgdmFyIF9nZXRSZWZlcmVuY2VkRmllbGRzQTMgPSBnZXRSZWZlcmVuY2VkRmllbGRzQW5kRnJhZ21lbnROYW1lcyhjb250ZXh0LCBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLCBmcmFnbWVudDIpLFxuICAgICAgZmllbGRNYXAyID0gX2dldFJlZmVyZW5jZWRGaWVsZHNBM1swXSxcbiAgICAgIGZyYWdtZW50TmFtZXMyID0gX2dldFJlZmVyZW5jZWRGaWVsZHNBM1sxXTsgLy8gKEYpIEZpcnN0LCBjb2xsZWN0IGFsbCBjb25mbGljdHMgYmV0d2VlbiB0aGVzZSB0d28gY29sbGVjdGlvbnMgb2YgZmllbGRzXG4gIC8vIChub3QgaW5jbHVkaW5nIGFueSBuZXN0ZWQgZnJhZ21lbnRzKS5cblxuXG4gIGNvbGxlY3RDb25mbGljdHNCZXR3ZWVuKGNvbnRleHQsIGNvbmZsaWN0cywgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcywgY29tcGFyZWRGcmFnbWVudFBhaXJzLCBhcmVNdXR1YWxseUV4Y2x1c2l2ZSwgZmllbGRNYXAxLCBmaWVsZE1hcDIpOyAvLyAoRykgVGhlbiBjb2xsZWN0IGNvbmZsaWN0cyBiZXR3ZWVuIHRoZSBmaXJzdCBmcmFnbWVudCBhbmQgYW55IG5lc3RlZFxuICAvLyBmcmFnbWVudHMgc3ByZWFkIGluIHRoZSBzZWNvbmQgZnJhZ21lbnQuXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCBmcmFnbWVudE5hbWVzMi5sZW5ndGg7IGorKykge1xuICAgIGNvbGxlY3RDb25mbGljdHNCZXR3ZWVuRnJhZ21lbnRzKGNvbnRleHQsIGNvbmZsaWN0cywgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcywgY29tcGFyZWRGcmFnbWVudFBhaXJzLCBhcmVNdXR1YWxseUV4Y2x1c2l2ZSwgZnJhZ21lbnROYW1lMSwgZnJhZ21lbnROYW1lczJbal0pO1xuICB9IC8vIChHKSBUaGVuIGNvbGxlY3QgY29uZmxpY3RzIGJldHdlZW4gdGhlIHNlY29uZCBmcmFnbWVudCBhbmQgYW55IG5lc3RlZFxuICAvLyBmcmFnbWVudHMgc3ByZWFkIGluIHRoZSBmaXJzdCBmcmFnbWVudC5cblxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhZ21lbnROYW1lczEubGVuZ3RoOyBpKyspIHtcbiAgICBjb2xsZWN0Q29uZmxpY3RzQmV0d2VlbkZyYWdtZW50cyhjb250ZXh0LCBjb25mbGljdHMsIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsIGNvbXBhcmVkRnJhZ21lbnRQYWlycywgYXJlTXV0dWFsbHlFeGNsdXNpdmUsIGZyYWdtZW50TmFtZXMxW2ldLCBmcmFnbWVudE5hbWUyKTtcbiAgfVxufSAvLyBGaW5kIGFsbCBjb25mbGljdHMgZm91bmQgYmV0d2VlbiB0d28gc2VsZWN0aW9uIHNldHMsIGluY2x1ZGluZyB0aG9zZSBmb3VuZFxuLy8gdmlhIHNwcmVhZGluZyBpbiBmcmFnbWVudHMuIENhbGxlZCB3aGVuIGRldGVybWluaW5nIGlmIGNvbmZsaWN0cyBleGlzdFxuLy8gYmV0d2VlbiB0aGUgc3ViLWZpZWxkcyBvZiB0d28gb3ZlcmxhcHBpbmcgZmllbGRzLlxuXG5cbmZ1bmN0aW9uIGZpbmRDb25mbGljdHNCZXR3ZWVuU3ViU2VsZWN0aW9uU2V0cyhjb250ZXh0LCBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLCBjb21wYXJlZEZyYWdtZW50UGFpcnMsIGFyZU11dHVhbGx5RXhjbHVzaXZlLCBwYXJlbnRUeXBlMSwgc2VsZWN0aW9uU2V0MSwgcGFyZW50VHlwZTIsIHNlbGVjdGlvblNldDIpIHtcbiAgdmFyIGNvbmZsaWN0cyA9IFtdO1xuXG4gIHZhciBfZ2V0RmllbGRzQW5kRnJhZ21lbnQyID0gZ2V0RmllbGRzQW5kRnJhZ21lbnROYW1lcyhjb250ZXh0LCBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLCBwYXJlbnRUeXBlMSwgc2VsZWN0aW9uU2V0MSksXG4gICAgICBmaWVsZE1hcDEgPSBfZ2V0RmllbGRzQW5kRnJhZ21lbnQyWzBdLFxuICAgICAgZnJhZ21lbnROYW1lczEgPSBfZ2V0RmllbGRzQW5kRnJhZ21lbnQyWzFdO1xuXG4gIHZhciBfZ2V0RmllbGRzQW5kRnJhZ21lbnQzID0gZ2V0RmllbGRzQW5kRnJhZ21lbnROYW1lcyhjb250ZXh0LCBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLCBwYXJlbnRUeXBlMiwgc2VsZWN0aW9uU2V0MiksXG4gICAgICBmaWVsZE1hcDIgPSBfZ2V0RmllbGRzQW5kRnJhZ21lbnQzWzBdLFxuICAgICAgZnJhZ21lbnROYW1lczIgPSBfZ2V0RmllbGRzQW5kRnJhZ21lbnQzWzFdOyAvLyAoSCkgRmlyc3QsIGNvbGxlY3QgYWxsIGNvbmZsaWN0cyBiZXR3ZWVuIHRoZXNlIHR3byBjb2xsZWN0aW9ucyBvZiBmaWVsZC5cblxuXG4gIGNvbGxlY3RDb25mbGljdHNCZXR3ZWVuKGNvbnRleHQsIGNvbmZsaWN0cywgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcywgY29tcGFyZWRGcmFnbWVudFBhaXJzLCBhcmVNdXR1YWxseUV4Y2x1c2l2ZSwgZmllbGRNYXAxLCBmaWVsZE1hcDIpOyAvLyAoSSkgVGhlbiBjb2xsZWN0IGNvbmZsaWN0cyBiZXR3ZWVuIHRoZSBmaXJzdCBjb2xsZWN0aW9uIG9mIGZpZWxkcyBhbmRcbiAgLy8gdGhvc2UgcmVmZXJlbmNlZCBieSBlYWNoIGZyYWdtZW50IG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWNvbmQuXG5cbiAgaWYgKGZyYWdtZW50TmFtZXMyLmxlbmd0aCAhPT0gMCkge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgZnJhZ21lbnROYW1lczIubGVuZ3RoOyBqKyspIHtcbiAgICAgIGNvbGxlY3RDb25mbGljdHNCZXR3ZWVuRmllbGRzQW5kRnJhZ21lbnQoY29udGV4dCwgY29uZmxpY3RzLCBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLCBjb21wYXJlZEZyYWdtZW50UGFpcnMsIGFyZU11dHVhbGx5RXhjbHVzaXZlLCBmaWVsZE1hcDEsIGZyYWdtZW50TmFtZXMyW2pdKTtcbiAgICB9XG4gIH0gLy8gKEkpIFRoZW4gY29sbGVjdCBjb25mbGljdHMgYmV0d2VlbiB0aGUgc2Vjb25kIGNvbGxlY3Rpb24gb2YgZmllbGRzIGFuZFxuICAvLyB0aG9zZSByZWZlcmVuY2VkIGJ5IGVhY2ggZnJhZ21lbnQgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZpcnN0LlxuXG5cbiAgaWYgKGZyYWdtZW50TmFtZXMxLmxlbmd0aCAhPT0gMCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhZ21lbnROYW1lczEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbGxlY3RDb25mbGljdHNCZXR3ZWVuRmllbGRzQW5kRnJhZ21lbnQoY29udGV4dCwgY29uZmxpY3RzLCBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLCBjb21wYXJlZEZyYWdtZW50UGFpcnMsIGFyZU11dHVhbGx5RXhjbHVzaXZlLCBmaWVsZE1hcDIsIGZyYWdtZW50TmFtZXMxW2ldKTtcbiAgICB9XG4gIH0gLy8gKEopIEFsc28gY29sbGVjdCBjb25mbGljdHMgYmV0d2VlbiBhbnkgZnJhZ21lbnQgbmFtZXMgYnkgdGhlIGZpcnN0IGFuZFxuICAvLyBmcmFnbWVudCBuYW1lcyBieSB0aGUgc2Vjb25kLiBUaGlzIGNvbXBhcmVzIGVhY2ggaXRlbSBpbiB0aGUgZmlyc3Qgc2V0IG9mXG4gIC8vIG5hbWVzIHRvIGVhY2ggaXRlbSBpbiB0aGUgc2Vjb25kIHNldCBvZiBuYW1lcy5cblxuXG4gIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IGZyYWdtZW50TmFtZXMxLmxlbmd0aDsgX2kzKyspIHtcbiAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgZnJhZ21lbnROYW1lczIubGVuZ3RoOyBfaisrKSB7XG4gICAgICBjb2xsZWN0Q29uZmxpY3RzQmV0d2VlbkZyYWdtZW50cyhjb250ZXh0LCBjb25mbGljdHMsIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsIGNvbXBhcmVkRnJhZ21lbnRQYWlycywgYXJlTXV0dWFsbHlFeGNsdXNpdmUsIGZyYWdtZW50TmFtZXMxW19pM10sIGZyYWdtZW50TmFtZXMyW19qXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbmZsaWN0cztcbn0gLy8gQ29sbGVjdCBhbGwgQ29uZmxpY3RzIFwid2l0aGluXCIgb25lIGNvbGxlY3Rpb24gb2YgZmllbGRzLlxuXG5cbmZ1bmN0aW9uIGNvbGxlY3RDb25mbGljdHNXaXRoaW4oY29udGV4dCwgY29uZmxpY3RzLCBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLCBjb21wYXJlZEZyYWdtZW50UGFpcnMsIGZpZWxkTWFwKSB7XG4gIC8vIEEgZmllbGQgbWFwIGlzIGEga2V5ZWQgY29sbGVjdGlvbiwgd2hlcmUgZWFjaCBrZXkgcmVwcmVzZW50cyBhIHJlc3BvbnNlXG4gIC8vIG5hbWUgYW5kIHRoZSB2YWx1ZSBhdCB0aGF0IGtleSBpcyBhIGxpc3Qgb2YgYWxsIGZpZWxkcyB3aGljaCBwcm92aWRlIHRoYXRcbiAgLy8gcmVzcG9uc2UgbmFtZS4gRm9yIGV2ZXJ5IHJlc3BvbnNlIG5hbWUsIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBmaWVsZHMsIHRoZXlcbiAgLy8gbXVzdCBiZSBjb21wYXJlZCB0byBmaW5kIGEgcG90ZW50aWFsIGNvbmZsaWN0LlxuICBmb3IgKHZhciBfaTUgPSAwLCBfb2JqZWN0RW50cmllczIgPSBvYmplY3RFbnRyaWVzKGZpZWxkTWFwKTsgX2k1IDwgX29iamVjdEVudHJpZXMyLmxlbmd0aDsgX2k1KyspIHtcbiAgICB2YXIgX3JlZjUgPSBfb2JqZWN0RW50cmllczJbX2k1XTtcbiAgICB2YXIgcmVzcG9uc2VOYW1lID0gX3JlZjVbMF07XG4gICAgdmFyIGZpZWxkcyA9IF9yZWY1WzFdO1xuXG4gICAgLy8gVGhpcyBjb21wYXJlcyBldmVyeSBmaWVsZCBpbiB0aGUgbGlzdCB0byBldmVyeSBvdGhlciBmaWVsZCBpbiB0aGlzIGxpc3RcbiAgICAvLyAoZXhjZXB0IHRvIGl0c2VsZikuIElmIHRoZSBsaXN0IG9ubHkgaGFzIG9uZSBpdGVtLCBub3RoaW5nIG5lZWRzIHRvXG4gICAgLy8gYmUgY29tcGFyZWQuXG4gICAgaWYgKGZpZWxkcy5sZW5ndGggPiAxKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gaSArIDE7IGogPCBmaWVsZHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICB2YXIgY29uZmxpY3QgPSBmaW5kQ29uZmxpY3QoY29udGV4dCwgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcywgY29tcGFyZWRGcmFnbWVudFBhaXJzLCBmYWxzZSwgLy8gd2l0aGluIG9uZSBjb2xsZWN0aW9uIGlzIG5ldmVyIG11dHVhbGx5IGV4Y2x1c2l2ZVxuICAgICAgICAgIHJlc3BvbnNlTmFtZSwgZmllbGRzW2ldLCBmaWVsZHNbal0pO1xuXG4gICAgICAgICAgaWYgKGNvbmZsaWN0KSB7XG4gICAgICAgICAgICBjb25mbGljdHMucHVzaChjb25mbGljdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59IC8vIENvbGxlY3QgYWxsIENvbmZsaWN0cyBiZXR3ZWVuIHR3byBjb2xsZWN0aW9ucyBvZiBmaWVsZHMuIFRoaXMgaXMgc2ltaWxhciB0byxcbi8vIGJ1dCBkaWZmZXJlbnQgZnJvbSB0aGUgYGNvbGxlY3RDb25mbGljdHNXaXRoaW5gIGZ1bmN0aW9uIGFib3ZlLiBUaGlzIGNoZWNrXG4vLyBhc3N1bWVzIHRoYXQgYGNvbGxlY3RDb25mbGljdHNXaXRoaW5gIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIG9uIGVhY2hcbi8vIHByb3ZpZGVkIGNvbGxlY3Rpb24gb2YgZmllbGRzLiBUaGlzIGlzIHRydWUgYmVjYXVzZSB0aGlzIHZhbGlkYXRvciB0cmF2ZXJzZXNcbi8vIGVhY2ggaW5kaXZpZHVhbCBzZWxlY3Rpb24gc2V0LlxuXG5cbmZ1bmN0aW9uIGNvbGxlY3RDb25mbGljdHNCZXR3ZWVuKGNvbnRleHQsIGNvbmZsaWN0cywgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcywgY29tcGFyZWRGcmFnbWVudFBhaXJzLCBwYXJlbnRGaWVsZHNBcmVNdXR1YWxseUV4Y2x1c2l2ZSwgZmllbGRNYXAxLCBmaWVsZE1hcDIpIHtcbiAgLy8gQSBmaWVsZCBtYXAgaXMgYSBrZXllZCBjb2xsZWN0aW9uLCB3aGVyZSBlYWNoIGtleSByZXByZXNlbnRzIGEgcmVzcG9uc2VcbiAgLy8gbmFtZSBhbmQgdGhlIHZhbHVlIGF0IHRoYXQga2V5IGlzIGEgbGlzdCBvZiBhbGwgZmllbGRzIHdoaWNoIHByb3ZpZGUgdGhhdFxuICAvLyByZXNwb25zZSBuYW1lLiBGb3IgYW55IHJlc3BvbnNlIG5hbWUgd2hpY2ggYXBwZWFycyBpbiBib3RoIHByb3ZpZGVkIGZpZWxkXG4gIC8vIG1hcHMsIGVhY2ggZmllbGQgZnJvbSB0aGUgZmlyc3QgZmllbGQgbWFwIG11c3QgYmUgY29tcGFyZWQgdG8gZXZlcnkgZmllbGRcbiAgLy8gaW4gdGhlIHNlY29uZCBmaWVsZCBtYXAgdG8gZmluZCBwb3RlbnRpYWwgY29uZmxpY3RzLlxuICBmb3IgKHZhciBfaTcgPSAwLCBfT2JqZWN0JGtleXMyID0gT2JqZWN0LmtleXMoZmllbGRNYXAxKTsgX2k3IDwgX09iamVjdCRrZXlzMi5sZW5ndGg7IF9pNysrKSB7XG4gICAgdmFyIHJlc3BvbnNlTmFtZSA9IF9PYmplY3Qka2V5czJbX2k3XTtcbiAgICB2YXIgZmllbGRzMiA9IGZpZWxkTWFwMltyZXNwb25zZU5hbWVdO1xuXG4gICAgaWYgKGZpZWxkczIpIHtcbiAgICAgIHZhciBmaWVsZHMxID0gZmllbGRNYXAxW3Jlc3BvbnNlTmFtZV07XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmllbGRzMS5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGZpZWxkczIubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICB2YXIgY29uZmxpY3QgPSBmaW5kQ29uZmxpY3QoY29udGV4dCwgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcywgY29tcGFyZWRGcmFnbWVudFBhaXJzLCBwYXJlbnRGaWVsZHNBcmVNdXR1YWxseUV4Y2x1c2l2ZSwgcmVzcG9uc2VOYW1lLCBmaWVsZHMxW2ldLCBmaWVsZHMyW2pdKTtcblxuICAgICAgICAgIGlmIChjb25mbGljdCkge1xuICAgICAgICAgICAgY29uZmxpY3RzLnB1c2goY29uZmxpY3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSAvLyBEZXRlcm1pbmVzIGlmIHRoZXJlIGlzIGEgY29uZmxpY3QgYmV0d2VlbiB0d28gcGFydGljdWxhciBmaWVsZHMsIGluY2x1ZGluZ1xuLy8gY29tcGFyaW5nIHRoZWlyIHN1Yi1maWVsZHMuXG5cblxuZnVuY3Rpb24gZmluZENvbmZsaWN0KGNvbnRleHQsIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsIGNvbXBhcmVkRnJhZ21lbnRQYWlycywgcGFyZW50RmllbGRzQXJlTXV0dWFsbHlFeGNsdXNpdmUsIHJlc3BvbnNlTmFtZSwgZmllbGQxLCBmaWVsZDIpIHtcbiAgdmFyIHBhcmVudFR5cGUxID0gZmllbGQxWzBdLFxuICAgICAgbm9kZTEgPSBmaWVsZDFbMV0sXG4gICAgICBkZWYxID0gZmllbGQxWzJdO1xuICB2YXIgcGFyZW50VHlwZTIgPSBmaWVsZDJbMF0sXG4gICAgICBub2RlMiA9IGZpZWxkMlsxXSxcbiAgICAgIGRlZjIgPSBmaWVsZDJbMl07IC8vIElmIGl0IGlzIGtub3duIHRoYXQgdHdvIGZpZWxkcyBjb3VsZCBub3QgcG9zc2libHkgYXBwbHkgYXQgdGhlIHNhbWVcbiAgLy8gdGltZSwgZHVlIHRvIHRoZSBwYXJlbnQgdHlwZXMsIHRoZW4gaXQgaXMgc2FmZSB0byBwZXJtaXQgdGhlbSB0byBkaXZlcmdlXG4gIC8vIGluIGFsaWFzZWQgZmllbGQgb3IgYXJndW1lbnRzIHVzZWQgYXMgdGhleSB3aWxsIG5vdCBwcmVzZW50IGFueSBhbWJpZ3VpdHlcbiAgLy8gYnkgZGlmZmVyaW5nLlxuICAvLyBJdCBpcyBrbm93biB0aGF0IHR3byBwYXJlbnQgdHlwZXMgY291bGQgbmV2ZXIgb3ZlcmxhcCBpZiB0aGV5IGFyZVxuICAvLyBkaWZmZXJlbnQgT2JqZWN0IHR5cGVzLiBJbnRlcmZhY2Ugb3IgVW5pb24gdHlwZXMgbWlnaHQgb3ZlcmxhcCAtIGlmIG5vdFxuICAvLyBpbiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgc2NoZW1hLCB0aGVuIHBlcmhhcHMgaW4gc29tZSBmdXR1cmUgdmVyc2lvbixcbiAgLy8gdGh1cyBtYXkgbm90IHNhZmVseSBkaXZlcmdlLlxuXG4gIHZhciBhcmVNdXR1YWxseUV4Y2x1c2l2ZSA9IHBhcmVudEZpZWxkc0FyZU11dHVhbGx5RXhjbHVzaXZlIHx8IHBhcmVudFR5cGUxICE9PSBwYXJlbnRUeXBlMiAmJiBpc09iamVjdFR5cGUocGFyZW50VHlwZTEpICYmIGlzT2JqZWN0VHlwZShwYXJlbnRUeXBlMik7XG5cbiAgaWYgKCFhcmVNdXR1YWxseUV4Y2x1c2l2ZSkge1xuICAgIHZhciBfbm9kZTEkYXJndW1lbnRzLCBfbm9kZTIkYXJndW1lbnRzLCBfbm9kZTEkZGlyZWN0aXZlcywgX25vZGUyJGRpcmVjdGl2ZXM7XG5cbiAgICAvLyBUd28gYWxpYXNlcyBtdXN0IHJlZmVyIHRvIHRoZSBzYW1lIGZpZWxkLlxuICAgIHZhciBuYW1lMSA9IG5vZGUxLm5hbWUudmFsdWU7XG4gICAgdmFyIG5hbWUyID0gbm9kZTIubmFtZS52YWx1ZTtcblxuICAgIGlmIChuYW1lMSAhPT0gbmFtZTIpIHtcbiAgICAgIHJldHVybiBbW3Jlc3BvbnNlTmFtZSwgXCJcXFwiXCIuY29uY2F0KG5hbWUxLCBcIlxcXCIgYW5kIFxcXCJcIikuY29uY2F0KG5hbWUyLCBcIlxcXCIgYXJlIGRpZmZlcmVudCBmaWVsZHNcIildLCBbbm9kZTFdLCBbbm9kZTJdXTtcbiAgICB9IC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChTZWU6ICdodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzJylcblxuXG4gICAgdmFyIGFyZ3MxID0gKF9ub2RlMSRhcmd1bWVudHMgPSBub2RlMS5hcmd1bWVudHMpICE9PSBudWxsICYmIF9ub2RlMSRhcmd1bWVudHMgIT09IHZvaWQgMCA/IF9ub2RlMSRhcmd1bWVudHMgOiBbXTsgLy8gaXN0YW5idWwgaWdub3JlIG5leHQgKFNlZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDMnKVxuXG4gICAgdmFyIGFyZ3MyID0gKF9ub2RlMiRhcmd1bWVudHMgPSBub2RlMi5hcmd1bWVudHMpICE9PSBudWxsICYmIF9ub2RlMiRhcmd1bWVudHMgIT09IHZvaWQgMCA/IF9ub2RlMiRhcmd1bWVudHMgOiBbXTsgLy8gVHdvIGZpZWxkIGNhbGxzIG11c3QgaGF2ZSB0aGUgc2FtZSBhcmd1bWVudHMuXG5cbiAgICBpZiAoIXNhbWVBcmd1bWVudHMoYXJnczEsIGFyZ3MyKSkge1xuICAgICAgcmV0dXJuIFtbcmVzcG9uc2VOYW1lLCAndGhleSBoYXZlIGRpZmZlcmluZyBhcmd1bWVudHMnXSwgW25vZGUxXSwgW25vZGUyXV07XG4gICAgfSAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwMycpXG5cblxuICAgIHZhciBkaXJlY3RpdmVzMSA9IChfbm9kZTEkZGlyZWN0aXZlcyA9IG5vZGUxLmRpcmVjdGl2ZXMpICE9PSBudWxsICYmIF9ub2RlMSRkaXJlY3RpdmVzICE9PSB2b2lkIDAgPyBfbm9kZTEkZGlyZWN0aXZlcyA6IFtdOyAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwMycpXG5cbiAgICB2YXIgZGlyZWN0aXZlczIgPSAoX25vZGUyJGRpcmVjdGl2ZXMgPSBub2RlMi5kaXJlY3RpdmVzKSAhPT0gbnVsbCAmJiBfbm9kZTIkZGlyZWN0aXZlcyAhPT0gdm9pZCAwID8gX25vZGUyJGRpcmVjdGl2ZXMgOiBbXTtcblxuICAgIGlmICghc2FtZVN0cmVhbXMoZGlyZWN0aXZlczEsIGRpcmVjdGl2ZXMyKSkge1xuICAgICAgcmV0dXJuIFtbcmVzcG9uc2VOYW1lLCAndGhleSBoYXZlIGRpZmZlcmluZyBzdHJlYW0gZGlyZWN0aXZlcyddLCBbbm9kZTFdLCBbbm9kZTJdXTtcbiAgICB9XG4gIH0gLy8gVGhlIHJldHVybiB0eXBlIGZvciBlYWNoIGZpZWxkLlxuXG5cbiAgdmFyIHR5cGUxID0gZGVmMSA9PT0gbnVsbCB8fCBkZWYxID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWYxLnR5cGU7XG4gIHZhciB0eXBlMiA9IGRlZjIgPT09IG51bGwgfHwgZGVmMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVmMi50eXBlO1xuXG4gIGlmICh0eXBlMSAmJiB0eXBlMiAmJiBkb1R5cGVzQ29uZmxpY3QodHlwZTEsIHR5cGUyKSkge1xuICAgIHJldHVybiBbW3Jlc3BvbnNlTmFtZSwgXCJ0aGV5IHJldHVybiBjb25mbGljdGluZyB0eXBlcyBcXFwiXCIuY29uY2F0KGluc3BlY3QodHlwZTEpLCBcIlxcXCIgYW5kIFxcXCJcIikuY29uY2F0KGluc3BlY3QodHlwZTIpLCBcIlxcXCJcIildLCBbbm9kZTFdLCBbbm9kZTJdXTtcbiAgfSAvLyBDb2xsZWN0IGFuZCBjb21wYXJlIHN1Yi1maWVsZHMuIFVzZSB0aGUgc2FtZSBcInZpc2l0ZWQgZnJhZ21lbnQgbmFtZXNcIiBsaXN0XG4gIC8vIGZvciBib3RoIGNvbGxlY3Rpb25zIHNvIGZpZWxkcyBpbiBhIGZyYWdtZW50IHJlZmVyZW5jZSBhcmUgbmV2ZXJcbiAgLy8gY29tcGFyZWQgdG8gdGhlbXNlbHZlcy5cblxuXG4gIHZhciBzZWxlY3Rpb25TZXQxID0gbm9kZTEuc2VsZWN0aW9uU2V0O1xuICB2YXIgc2VsZWN0aW9uU2V0MiA9IG5vZGUyLnNlbGVjdGlvblNldDtcblxuICBpZiAoc2VsZWN0aW9uU2V0MSAmJiBzZWxlY3Rpb25TZXQyKSB7XG4gICAgdmFyIGNvbmZsaWN0cyA9IGZpbmRDb25mbGljdHNCZXR3ZWVuU3ViU2VsZWN0aW9uU2V0cyhjb250ZXh0LCBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLCBjb21wYXJlZEZyYWdtZW50UGFpcnMsIGFyZU11dHVhbGx5RXhjbHVzaXZlLCBnZXROYW1lZFR5cGUodHlwZTEpLCBzZWxlY3Rpb25TZXQxLCBnZXROYW1lZFR5cGUodHlwZTIpLCBzZWxlY3Rpb25TZXQyKTtcbiAgICByZXR1cm4gc3ViZmllbGRDb25mbGljdHMoY29uZmxpY3RzLCByZXNwb25zZU5hbWUsIG5vZGUxLCBub2RlMik7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2FtZUFyZ3VtZW50cyhhcmd1bWVudHMxLCBhcmd1bWVudHMyKSB7XG4gIGlmIChhcmd1bWVudHMxLmxlbmd0aCAhPT0gYXJndW1lbnRzMi5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gYXJndW1lbnRzMS5ldmVyeShmdW5jdGlvbiAoYXJndW1lbnQxKSB7XG4gICAgdmFyIGFyZ3VtZW50MiA9IGZpbmQoYXJndW1lbnRzMiwgZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gICAgICByZXR1cm4gYXJndW1lbnQubmFtZS52YWx1ZSA9PT0gYXJndW1lbnQxLm5hbWUudmFsdWU7XG4gICAgfSk7XG5cbiAgICBpZiAoIWFyZ3VtZW50Mikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBzYW1lVmFsdWUoYXJndW1lbnQxLnZhbHVlLCBhcmd1bWVudDIudmFsdWUpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc2FtZURpcmVjdGl2ZUFyZ3VtZW50KGRpcmVjdGl2ZTEsIGRpcmVjdGl2ZTIsIGFyZ3VtZW50TmFtZSkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDMpICovXG4gIHZhciBhcmdzMSA9IGRpcmVjdGl2ZTEuYXJndW1lbnRzIHx8IFtdO1xuICB2YXIgYXJnMSA9IGZpbmQoYXJnczEsIGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICAgIHJldHVybiBhcmd1bWVudC5uYW1lLnZhbHVlID09PSBhcmd1bWVudE5hbWU7XG4gIH0pO1xuXG4gIGlmICghYXJnMSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDMpICovXG5cblxuICB2YXIgYXJnczIgPSBkaXJlY3RpdmUyLmFyZ3VtZW50cyB8fCBbXTtcbiAgdmFyIGFyZzIgPSBmaW5kKGFyZ3MyLCBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgICByZXR1cm4gYXJndW1lbnQubmFtZS52YWx1ZSA9PT0gYXJndW1lbnROYW1lO1xuICB9KTtcblxuICBpZiAoIWFyZzIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gc2FtZVZhbHVlKGFyZzEudmFsdWUsIGFyZzIudmFsdWUpO1xufVxuXG5mdW5jdGlvbiBnZXRTdHJlYW1EaXJlY3RpdmUoZGlyZWN0aXZlcykge1xuICByZXR1cm4gZmluZChkaXJlY3RpdmVzLCBmdW5jdGlvbiAoZGlyZWN0aXZlKSB7XG4gICAgcmV0dXJuIGRpcmVjdGl2ZS5uYW1lLnZhbHVlID09PSAnc3RyZWFtJztcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNhbWVTdHJlYW1zKGRpcmVjdGl2ZXMxLCBkaXJlY3RpdmVzMikge1xuICB2YXIgc3RyZWFtMSA9IGdldFN0cmVhbURpcmVjdGl2ZShkaXJlY3RpdmVzMSk7XG4gIHZhciBzdHJlYW0yID0gZ2V0U3RyZWFtRGlyZWN0aXZlKGRpcmVjdGl2ZXMyKTtcblxuICBpZiAoIXN0cmVhbTEgJiYgIXN0cmVhbTIpIHtcbiAgICAvLyBib3RoIGZpZWxkcyBkbyBub3QgaGF2ZSBzdHJlYW1zXG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoc3RyZWFtMSAmJiBzdHJlYW0yKSB7XG4gICAgLy8gY2hlY2sgaWYgYm90aCBmaWVsZHMgaGF2ZSBlcXVpdmFsZW50IHN0cmVhbXNcbiAgICByZXR1cm4gc2FtZURpcmVjdGl2ZUFyZ3VtZW50KHN0cmVhbTEsIHN0cmVhbTIsICdpbml0aWFsQ291bnQnKSAmJiBzYW1lRGlyZWN0aXZlQXJndW1lbnQoc3RyZWFtMSwgc3RyZWFtMiwgJ2xhYmVsJyk7XG4gIH0gLy8gZmllbGRzIGhhdmUgYSBtaXggb2Ygc3RyZWFtIGFuZCBubyBzdHJlYW1cblxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gc2FtZVZhbHVlKHZhbHVlMSwgdmFsdWUyKSB7XG4gIHJldHVybiBwcmludCh2YWx1ZTEpID09PSBwcmludCh2YWx1ZTIpO1xufSAvLyBUd28gdHlwZXMgY29uZmxpY3QgaWYgYm90aCB0eXBlcyBjb3VsZCBub3QgYXBwbHkgdG8gYSB2YWx1ZSBzaW11bHRhbmVvdXNseS5cbi8vIENvbXBvc2l0ZSB0eXBlcyBhcmUgaWdub3JlZCBhcyB0aGVpciBpbmRpdmlkdWFsIGZpZWxkIHR5cGVzIHdpbGwgYmUgY29tcGFyZWRcbi8vIGxhdGVyIHJlY3Vyc2l2ZWx5LiBIb3dldmVyIExpc3QgYW5kIE5vbi1OdWxsIHR5cGVzIG11c3QgbWF0Y2guXG5cblxuZnVuY3Rpb24gZG9UeXBlc0NvbmZsaWN0KHR5cGUxLCB0eXBlMikge1xuICBpZiAoaXNMaXN0VHlwZSh0eXBlMSkpIHtcbiAgICByZXR1cm4gaXNMaXN0VHlwZSh0eXBlMikgPyBkb1R5cGVzQ29uZmxpY3QodHlwZTEub2ZUeXBlLCB0eXBlMi5vZlR5cGUpIDogdHJ1ZTtcbiAgfVxuXG4gIGlmIChpc0xpc3RUeXBlKHR5cGUyKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKGlzTm9uTnVsbFR5cGUodHlwZTEpKSB7XG4gICAgcmV0dXJuIGlzTm9uTnVsbFR5cGUodHlwZTIpID8gZG9UeXBlc0NvbmZsaWN0KHR5cGUxLm9mVHlwZSwgdHlwZTIub2ZUeXBlKSA6IHRydWU7XG4gIH1cblxuICBpZiAoaXNOb25OdWxsVHlwZSh0eXBlMikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChpc0xlYWZUeXBlKHR5cGUxKSB8fCBpc0xlYWZUeXBlKHR5cGUyKSkge1xuICAgIHJldHVybiB0eXBlMSAhPT0gdHlwZTI7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59IC8vIEdpdmVuIGEgc2VsZWN0aW9uIHNldCwgcmV0dXJuIHRoZSBjb2xsZWN0aW9uIG9mIGZpZWxkcyAoYSBtYXBwaW5nIG9mIHJlc3BvbnNlXG4vLyBuYW1lIHRvIGZpZWxkIG5vZGVzIGFuZCBkZWZpbml0aW9ucykgYXMgd2VsbCBhcyBhIGxpc3Qgb2YgZnJhZ21lbnQgbmFtZXNcbi8vIHJlZmVyZW5jZWQgdmlhIGZyYWdtZW50IHNwcmVhZHMuXG5cblxuZnVuY3Rpb24gZ2V0RmllbGRzQW5kRnJhZ21lbnROYW1lcyhjb250ZXh0LCBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLCBwYXJlbnRUeXBlLCBzZWxlY3Rpb25TZXQpIHtcbiAgdmFyIGNhY2hlZCA9IGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMuZ2V0KHNlbGVjdGlvblNldCk7XG5cbiAgaWYgKCFjYWNoZWQpIHtcbiAgICB2YXIgbm9kZUFuZERlZnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHZhciBmcmFnbWVudE5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIF9jb2xsZWN0RmllbGRzQW5kRnJhZ21lbnROYW1lcyhjb250ZXh0LCBwYXJlbnRUeXBlLCBzZWxlY3Rpb25TZXQsIG5vZGVBbmREZWZzLCBmcmFnbWVudE5hbWVzKTtcblxuICAgIGNhY2hlZCA9IFtub2RlQW5kRGVmcywgT2JqZWN0LmtleXMoZnJhZ21lbnROYW1lcyldO1xuICAgIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMuc2V0KHNlbGVjdGlvblNldCwgY2FjaGVkKTtcbiAgfVxuXG4gIHJldHVybiBjYWNoZWQ7XG59IC8vIEdpdmVuIGEgcmVmZXJlbmNlIHRvIGEgZnJhZ21lbnQsIHJldHVybiB0aGUgcmVwcmVzZW50ZWQgY29sbGVjdGlvbiBvZiBmaWVsZHNcbi8vIGFzIHdlbGwgYXMgYSBsaXN0IG9mIG5lc3RlZCBmcmFnbWVudCBuYW1lcyByZWZlcmVuY2VkIHZpYSBmcmFnbWVudCBzcHJlYWRzLlxuXG5cbmZ1bmN0aW9uIGdldFJlZmVyZW5jZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzKGNvbnRleHQsIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsIGZyYWdtZW50KSB7XG4gIC8vIFNob3J0LWNpcmN1aXQgYnVpbGRpbmcgYSB0eXBlIGZyb20gdGhlIG5vZGUgaWYgcG9zc2libGUuXG4gIHZhciBjYWNoZWQgPSBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLmdldChmcmFnbWVudC5zZWxlY3Rpb25TZXQpO1xuXG4gIGlmIChjYWNoZWQpIHtcbiAgICByZXR1cm4gY2FjaGVkO1xuICB9XG5cbiAgdmFyIGZyYWdtZW50VHlwZSA9IHR5cGVGcm9tQVNUKGNvbnRleHQuZ2V0U2NoZW1hKCksIGZyYWdtZW50LnR5cGVDb25kaXRpb24pO1xuICByZXR1cm4gZ2V0RmllbGRzQW5kRnJhZ21lbnROYW1lcyhjb250ZXh0LCBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLCBmcmFnbWVudFR5cGUsIGZyYWdtZW50LnNlbGVjdGlvblNldCk7XG59XG5cbmZ1bmN0aW9uIF9jb2xsZWN0RmllbGRzQW5kRnJhZ21lbnROYW1lcyhjb250ZXh0LCBwYXJlbnRUeXBlLCBzZWxlY3Rpb25TZXQsIG5vZGVBbmREZWZzLCBmcmFnbWVudE5hbWVzKSB7XG4gIGZvciAodmFyIF9pOSA9IDAsIF9zZWxlY3Rpb25TZXQkc2VsZWN0aTIgPSBzZWxlY3Rpb25TZXQuc2VsZWN0aW9uczsgX2k5IDwgX3NlbGVjdGlvblNldCRzZWxlY3RpMi5sZW5ndGg7IF9pOSsrKSB7XG4gICAgdmFyIHNlbGVjdGlvbiA9IF9zZWxlY3Rpb25TZXQkc2VsZWN0aTJbX2k5XTtcblxuICAgIHN3aXRjaCAoc2VsZWN0aW9uLmtpbmQpIHtcbiAgICAgIGNhc2UgS2luZC5GSUVMRDpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBmaWVsZE5hbWUgPSBzZWxlY3Rpb24ubmFtZS52YWx1ZTtcbiAgICAgICAgICB2YXIgZmllbGREZWYgPSB2b2lkIDA7XG5cbiAgICAgICAgICBpZiAoaXNPYmplY3RUeXBlKHBhcmVudFR5cGUpIHx8IGlzSW50ZXJmYWNlVHlwZShwYXJlbnRUeXBlKSkge1xuICAgICAgICAgICAgZmllbGREZWYgPSBwYXJlbnRUeXBlLmdldEZpZWxkcygpW2ZpZWxkTmFtZV07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHJlc3BvbnNlTmFtZSA9IHNlbGVjdGlvbi5hbGlhcyA/IHNlbGVjdGlvbi5hbGlhcy52YWx1ZSA6IGZpZWxkTmFtZTtcblxuICAgICAgICAgIGlmICghbm9kZUFuZERlZnNbcmVzcG9uc2VOYW1lXSkge1xuICAgICAgICAgICAgbm9kZUFuZERlZnNbcmVzcG9uc2VOYW1lXSA9IFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGVBbmREZWZzW3Jlc3BvbnNlTmFtZV0ucHVzaChbcGFyZW50VHlwZSwgc2VsZWN0aW9uLCBmaWVsZERlZl0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgS2luZC5GUkFHTUVOVF9TUFJFQUQ6XG4gICAgICAgIGZyYWdtZW50TmFtZXNbc2VsZWN0aW9uLm5hbWUudmFsdWVdID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgS2luZC5JTkxJTkVfRlJBR01FTlQ6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgdHlwZUNvbmRpdGlvbiA9IHNlbGVjdGlvbi50eXBlQ29uZGl0aW9uO1xuICAgICAgICAgIHZhciBpbmxpbmVGcmFnbWVudFR5cGUgPSB0eXBlQ29uZGl0aW9uID8gdHlwZUZyb21BU1QoY29udGV4dC5nZXRTY2hlbWEoKSwgdHlwZUNvbmRpdGlvbikgOiBwYXJlbnRUeXBlO1xuXG4gICAgICAgICAgX2NvbGxlY3RGaWVsZHNBbmRGcmFnbWVudE5hbWVzKGNvbnRleHQsIGlubGluZUZyYWdtZW50VHlwZSwgc2VsZWN0aW9uLnNlbGVjdGlvblNldCwgbm9kZUFuZERlZnMsIGZyYWdtZW50TmFtZXMpO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gIH1cbn0gLy8gR2l2ZW4gYSBzZXJpZXMgb2YgQ29uZmxpY3RzIHdoaWNoIG9jY3VycmVkIGJldHdlZW4gdHdvIHN1Yi1maWVsZHMsIGdlbmVyYXRlXG4vLyBhIHNpbmdsZSBDb25mbGljdC5cblxuXG5mdW5jdGlvbiBzdWJmaWVsZENvbmZsaWN0cyhjb25mbGljdHMsIHJlc3BvbnNlTmFtZSwgbm9kZTEsIG5vZGUyKSB7XG4gIGlmIChjb25mbGljdHMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBbW3Jlc3BvbnNlTmFtZSwgY29uZmxpY3RzLm1hcChmdW5jdGlvbiAoX3JlZjYpIHtcbiAgICAgIHZhciByZWFzb24gPSBfcmVmNlswXTtcbiAgICAgIHJldHVybiByZWFzb247XG4gICAgfSldLCBjb25mbGljdHMucmVkdWNlKGZ1bmN0aW9uIChhbGxGaWVsZHMsIF9yZWY3KSB7XG4gICAgICB2YXIgZmllbGRzMSA9IF9yZWY3WzFdO1xuICAgICAgcmV0dXJuIGFsbEZpZWxkcy5jb25jYXQoZmllbGRzMSk7XG4gICAgfSwgW25vZGUxXSksIGNvbmZsaWN0cy5yZWR1Y2UoZnVuY3Rpb24gKGFsbEZpZWxkcywgX3JlZjgpIHtcbiAgICAgIHZhciBmaWVsZHMyID0gX3JlZjhbMl07XG4gICAgICByZXR1cm4gYWxsRmllbGRzLmNvbmNhdChmaWVsZHMyKTtcbiAgICB9LCBbbm9kZTJdKV07XG4gIH1cbn1cbi8qKlxuICogQSB3YXkgdG8ga2VlcCB0cmFjayBvZiBwYWlycyBvZiB0aGluZ3Mgd2hlbiB0aGUgb3JkZXJpbmcgb2YgdGhlIHBhaXIgZG9lc1xuICogbm90IG1hdHRlci4gV2UgZG8gdGhpcyBieSBtYWludGFpbmluZyBhIHNvcnQgb2YgZG91YmxlIGFkamFjZW5jeSBzZXRzLlxuICovXG5cblxudmFyIFBhaXJTZXQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBQYWlyU2V0KCkge1xuICAgIHRoaXMuX2RhdGEgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB9XG5cbiAgdmFyIF9wcm90byA9IFBhaXJTZXQucHJvdG90eXBlO1xuXG4gIF9wcm90by5oYXMgPSBmdW5jdGlvbiBoYXMoYSwgYiwgYXJlTXV0dWFsbHlFeGNsdXNpdmUpIHtcbiAgICB2YXIgZmlyc3QgPSB0aGlzLl9kYXRhW2FdO1xuICAgIHZhciByZXN1bHQgPSBmaXJzdCAmJiBmaXJzdFtiXTtcblxuICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gYXJlTXV0dWFsbHlFeGNsdXNpdmUgYmVpbmcgZmFsc2UgaXMgYSBzdXBlcnNldCBvZiBiZWluZyB0cnVlLFxuICAgIC8vIGhlbmNlIGlmIHdlIHdhbnQgdG8ga25vdyBpZiB0aGlzIFBhaXJTZXQgXCJoYXNcIiB0aGVzZSB0d28gd2l0aCBub1xuICAgIC8vIGV4Y2x1c2l2aXR5LCB3ZSBoYXZlIHRvIGVuc3VyZSBpdCB3YXMgYWRkZWQgYXMgc3VjaC5cblxuXG4gICAgaWYgKGFyZU11dHVhbGx5RXhjbHVzaXZlID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgX3Byb3RvLmFkZCA9IGZ1bmN0aW9uIGFkZChhLCBiLCBhcmVNdXR1YWxseUV4Y2x1c2l2ZSkge1xuICAgIHRoaXMuX3BhaXJTZXRBZGQoYSwgYiwgYXJlTXV0dWFsbHlFeGNsdXNpdmUpO1xuXG4gICAgdGhpcy5fcGFpclNldEFkZChiLCBhLCBhcmVNdXR1YWxseUV4Y2x1c2l2ZSk7XG4gIH07XG5cbiAgX3Byb3RvLl9wYWlyU2V0QWRkID0gZnVuY3Rpb24gX3BhaXJTZXRBZGQoYSwgYiwgYXJlTXV0dWFsbHlFeGNsdXNpdmUpIHtcbiAgICB2YXIgbWFwID0gdGhpcy5fZGF0YVthXTtcblxuICAgIGlmICghbWFwKSB7XG4gICAgICBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgdGhpcy5fZGF0YVthXSA9IG1hcDtcbiAgICB9XG5cbiAgICBtYXBbYl0gPSBhcmVNdXR1YWxseUV4Y2x1c2l2ZTtcbiAgfTtcblxuICByZXR1cm4gUGFpclNldDtcbn0oKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs\n");
1557
1558/***/ }),
1559
1560/***/ "../../../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs":
1561/*!*****************************************************************************************************************!*\
1562 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs ***!
1563 \*****************************************************************************************************************/
1564/*! exports provided: PossibleFragmentSpreadsRule */
1565/***/ (function(module, __webpack_exports__, __webpack_require__) {
1566
1567"use strict";
1568eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PossibleFragmentSpreadsRule\", function() { return PossibleFragmentSpreadsRule; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n/* harmony import */ var _utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utilities/typeComparators.mjs */ \"../../../node_modules/graphql/utilities/typeComparators.mjs\");\n\n\n\n\n\n\n/**\n * Possible fragment spread\n *\n * A fragment spread is only valid if the type condition could ever possibly\n * be true: if there is a non-empty intersection of the possible parent types,\n * and possible types which pass the type condition.\n */\nfunction PossibleFragmentSpreadsRule(context) {\n return {\n InlineFragment: function InlineFragment(node) {\n var fragType = context.getType();\n var parentType = context.getParentType();\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isCompositeType\"])(fragType) && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isCompositeType\"])(parentType) && !Object(_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_4__[\"doTypesOverlap\"])(context.getSchema(), fragType, parentType)) {\n var parentTypeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(parentType);\n var fragTypeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(fragType);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\"Fragment cannot be spread here as objects of type \\\"\".concat(parentTypeStr, \"\\\" can never be of type \\\"\").concat(fragTypeStr, \"\\\".\"), node));\n }\n },\n FragmentSpread: function FragmentSpread(node) {\n var fragName = node.name.value;\n var fragType = getFragmentType(context, fragName);\n var parentType = context.getParentType();\n\n if (fragType && parentType && !Object(_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_4__[\"doTypesOverlap\"])(context.getSchema(), fragType, parentType)) {\n var parentTypeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(parentType);\n var fragTypeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(fragType);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\"Fragment \\\"\".concat(fragName, \"\\\" cannot be spread here as objects of type \\\"\").concat(parentTypeStr, \"\\\" can never be of type \\\"\").concat(fragTypeStr, \"\\\".\"), node));\n }\n }\n };\n}\n\nfunction getFragmentType(context, name) {\n var frag = context.getFragment(name);\n\n if (frag) {\n var type = Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_3__[\"typeFromAST\"])(context.getSchema(), frag.typeCondition);\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isCompositeType\"])(type)) {\n return type;\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Qb3NzaWJsZUZyYWdtZW50U3ByZWFkc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Qb3NzaWJsZUZyYWdtZW50U3ByZWFkc1J1bGUubWpzPzFlZWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGluc3BlY3QgZnJvbSBcIi4uLy4uL2pzdXRpbHMvaW5zcGVjdC5tanNcIjtcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5pbXBvcnQgeyBpc0NvbXBvc2l0ZVR5cGUgfSBmcm9tIFwiLi4vLi4vdHlwZS9kZWZpbml0aW9uLm1qc1wiO1xuaW1wb3J0IHsgdHlwZUZyb21BU1QgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVGcm9tQVNULm1qc1wiO1xuaW1wb3J0IHsgZG9UeXBlc092ZXJsYXAgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVDb21wYXJhdG9ycy5tanNcIjtcblxuLyoqXG4gKiBQb3NzaWJsZSBmcmFnbWVudCBzcHJlYWRcbiAqXG4gKiBBIGZyYWdtZW50IHNwcmVhZCBpcyBvbmx5IHZhbGlkIGlmIHRoZSB0eXBlIGNvbmRpdGlvbiBjb3VsZCBldmVyIHBvc3NpYmx5XG4gKiBiZSB0cnVlOiBpZiB0aGVyZSBpcyBhIG5vbi1lbXB0eSBpbnRlcnNlY3Rpb24gb2YgdGhlIHBvc3NpYmxlIHBhcmVudCB0eXBlcyxcbiAqIGFuZCBwb3NzaWJsZSB0eXBlcyB3aGljaCBwYXNzIHRoZSB0eXBlIGNvbmRpdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFBvc3NpYmxlRnJhZ21lbnRTcHJlYWRzUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgSW5saW5lRnJhZ21lbnQ6IGZ1bmN0aW9uIElubGluZUZyYWdtZW50KG5vZGUpIHtcbiAgICAgIHZhciBmcmFnVHlwZSA9IGNvbnRleHQuZ2V0VHlwZSgpO1xuICAgICAgdmFyIHBhcmVudFR5cGUgPSBjb250ZXh0LmdldFBhcmVudFR5cGUoKTtcblxuICAgICAgaWYgKGlzQ29tcG9zaXRlVHlwZShmcmFnVHlwZSkgJiYgaXNDb21wb3NpdGVUeXBlKHBhcmVudFR5cGUpICYmICFkb1R5cGVzT3ZlcmxhcChjb250ZXh0LmdldFNjaGVtYSgpLCBmcmFnVHlwZSwgcGFyZW50VHlwZSkpIHtcbiAgICAgICAgdmFyIHBhcmVudFR5cGVTdHIgPSBpbnNwZWN0KHBhcmVudFR5cGUpO1xuICAgICAgICB2YXIgZnJhZ1R5cGVTdHIgPSBpbnNwZWN0KGZyYWdUeXBlKTtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiRnJhZ21lbnQgY2Fubm90IGJlIHNwcmVhZCBoZXJlIGFzIG9iamVjdHMgb2YgdHlwZSBcXFwiXCIuY29uY2F0KHBhcmVudFR5cGVTdHIsIFwiXFxcIiBjYW4gbmV2ZXIgYmUgb2YgdHlwZSBcXFwiXCIpLmNvbmNhdChmcmFnVHlwZVN0ciwgXCJcXFwiLlwiKSwgbm9kZSkpO1xuICAgICAgfVxuICAgIH0sXG4gICAgRnJhZ21lbnRTcHJlYWQ6IGZ1bmN0aW9uIEZyYWdtZW50U3ByZWFkKG5vZGUpIHtcbiAgICAgIHZhciBmcmFnTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcbiAgICAgIHZhciBmcmFnVHlwZSA9IGdldEZyYWdtZW50VHlwZShjb250ZXh0LCBmcmFnTmFtZSk7XG4gICAgICB2YXIgcGFyZW50VHlwZSA9IGNvbnRleHQuZ2V0UGFyZW50VHlwZSgpO1xuXG4gICAgICBpZiAoZnJhZ1R5cGUgJiYgcGFyZW50VHlwZSAmJiAhZG9UeXBlc092ZXJsYXAoY29udGV4dC5nZXRTY2hlbWEoKSwgZnJhZ1R5cGUsIHBhcmVudFR5cGUpKSB7XG4gICAgICAgIHZhciBwYXJlbnRUeXBlU3RyID0gaW5zcGVjdChwYXJlbnRUeXBlKTtcbiAgICAgICAgdmFyIGZyYWdUeXBlU3RyID0gaW5zcGVjdChmcmFnVHlwZSk7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcihcIkZyYWdtZW50IFxcXCJcIi5jb25jYXQoZnJhZ05hbWUsIFwiXFxcIiBjYW5ub3QgYmUgc3ByZWFkIGhlcmUgYXMgb2JqZWN0cyBvZiB0eXBlIFxcXCJcIikuY29uY2F0KHBhcmVudFR5cGVTdHIsIFwiXFxcIiBjYW4gbmV2ZXIgYmUgb2YgdHlwZSBcXFwiXCIpLmNvbmNhdChmcmFnVHlwZVN0ciwgXCJcXFwiLlwiKSwgbm9kZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RnJhZ21lbnRUeXBlKGNvbnRleHQsIG5hbWUpIHtcbiAgdmFyIGZyYWcgPSBjb250ZXh0LmdldEZyYWdtZW50KG5hbWUpO1xuXG4gIGlmIChmcmFnKSB7XG4gICAgdmFyIHR5cGUgPSB0eXBlRnJvbUFTVChjb250ZXh0LmdldFNjaGVtYSgpLCBmcmFnLnR5cGVDb25kaXRpb24pO1xuXG4gICAgaWYgKGlzQ29tcG9zaXRlVHlwZSh0eXBlKSkge1xuICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs\n");
1569
1570/***/ }),
1571
1572/***/ "../../../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs":
1573/*!****************************************************************************************************************!*\
1574 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs ***!
1575 \****************************************************************************************************************/
1576/*! exports provided: PossibleTypeExtensionsRule */
1577/***/ (function(module, __webpack_exports__, __webpack_require__) {
1578
1579"use strict";
1580eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PossibleTypeExtensionsRule\", function() { return PossibleTypeExtensionsRule; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../jsutils/suggestionList.mjs */ \"../../../node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_predicates_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../language/predicates.mjs */ \"../../../node_modules/graphql/language/predicates.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\nvar _defKindToExtKind;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n/**\n * Possible type extension\n *\n * A type extension is only valid if the type is defined and has the same kind.\n */\nfunction PossibleTypeExtensionsRule(context) {\n var schema = context.getSchema();\n var definedTypes = Object.create(null);\n\n for (var _i2 = 0, _context$getDocument$2 = context.getDocument().definitions; _i2 < _context$getDocument$2.length; _i2++) {\n var def = _context$getDocument$2[_i2];\n\n if (Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isTypeDefinitionNode\"])(def)) {\n definedTypes[def.name.value] = def;\n }\n }\n\n return {\n ScalarTypeExtension: checkExtension,\n ObjectTypeExtension: checkExtension,\n InterfaceTypeExtension: checkExtension,\n UnionTypeExtension: checkExtension,\n EnumTypeExtension: checkExtension,\n InputObjectTypeExtension: checkExtension\n };\n\n function checkExtension(node) {\n var typeName = node.name.value;\n var defNode = definedTypes[typeName];\n var existingType = schema === null || schema === void 0 ? void 0 : schema.getType(typeName);\n var expectedKind;\n\n if (defNode) {\n expectedKind = defKindToExtKind[defNode.kind];\n } else if (existingType) {\n expectedKind = typeToExtKind(existingType);\n }\n\n if (expectedKind) {\n if (expectedKind !== node.kind) {\n var kindStr = extensionKindToTypeName(node.kind);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\"Cannot extend non-\".concat(kindStr, \" type \\\"\").concat(typeName, \"\\\".\"), defNode ? [defNode, node] : node));\n }\n } else {\n var allTypeNames = Object.keys(definedTypes);\n\n if (schema) {\n allTypeNames = allTypeNames.concat(Object.keys(schema.getTypeMap()));\n }\n\n var suggestedTypes = Object(_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(typeName, allTypeNames);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__[\"GraphQLError\"](\"Cannot extend type \\\"\".concat(typeName, \"\\\" because it is not defined.\") + Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(suggestedTypes), node.name));\n }\n }\n}\nvar defKindToExtKind = (_defKindToExtKind = {}, _defineProperty(_defKindToExtKind, _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].SCALAR_TYPE_DEFINITION, _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].SCALAR_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].OBJECT_TYPE_DEFINITION, _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].OBJECT_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INTERFACE_TYPE_DEFINITION, _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INTERFACE_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].UNION_TYPE_DEFINITION, _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].UNION_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].ENUM_TYPE_DEFINITION, _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].ENUM_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INPUT_OBJECT_TYPE_DEFINITION, _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INPUT_OBJECT_TYPE_EXTENSION), _defKindToExtKind);\n\nfunction typeToExtKind(type) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isScalarType\"])(type)) {\n return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].SCALAR_TYPE_EXTENSION;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isObjectType\"])(type)) {\n return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].OBJECT_TYPE_EXTENSION;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInterfaceType\"])(type)) {\n return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INTERFACE_TYPE_EXTENSION;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isUnionType\"])(type)) {\n return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].UNION_TYPE_EXTENSION;\n }\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isEnumType\"])(type)) {\n return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].ENUM_TYPE_EXTENSION;\n } // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2618')\n\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInputObjectType\"])(type)) {\n return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INPUT_OBJECT_TYPE_EXTENSION;\n } // istanbul ignore next (Not reachable. All possible types have been considered)\n\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(0, 'Unexpected type: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(type));\n}\n\nfunction extensionKindToTypeName(kind) {\n switch (kind) {\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].SCALAR_TYPE_EXTENSION:\n return 'scalar';\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].OBJECT_TYPE_EXTENSION:\n return 'object';\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INTERFACE_TYPE_EXTENSION:\n return 'interface';\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].UNION_TYPE_EXTENSION:\n return 'union';\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].ENUM_TYPE_EXTENSION:\n return 'enum';\n\n case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__[\"Kind\"].INPUT_OBJECT_TYPE_EXTENSION:\n return 'input object';\n } // istanbul ignore next (Not reachable. All possible types have been considered)\n\n\n false || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(0, 'Unexpected kind: ' + Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(kind));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Qb3NzaWJsZVR5cGVFeHRlbnNpb25zUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1Bvc3NpYmxlVHlwZUV4dGVuc2lvbnNSdWxlLm1qcz8zMDVmIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfZGVmS2luZFRvRXh0S2luZDtcblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IGluc3BlY3QgZnJvbSBcIi4uLy4uL2pzdXRpbHMvaW5zcGVjdC5tanNcIjtcbmltcG9ydCBpbnZhcmlhbnQgZnJvbSBcIi4uLy4uL2pzdXRpbHMvaW52YXJpYW50Lm1qc1wiO1xuaW1wb3J0IGRpZFlvdU1lYW4gZnJvbSBcIi4uLy4uL2pzdXRpbHMvZGlkWW91TWVhbi5tanNcIjtcbmltcG9ydCBzdWdnZXN0aW9uTGlzdCBmcm9tIFwiLi4vLi4vanN1dGlscy9zdWdnZXN0aW9uTGlzdC5tanNcIjtcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSBcIi4uLy4uL2xhbmd1YWdlL2tpbmRzLm1qc1wiO1xuaW1wb3J0IHsgaXNUeXBlRGVmaW5pdGlvbk5vZGUgfSBmcm9tIFwiLi4vLi4vbGFuZ3VhZ2UvcHJlZGljYXRlcy5tanNcIjtcbmltcG9ydCB7IGlzU2NhbGFyVHlwZSwgaXNPYmplY3RUeXBlLCBpc0ludGVyZmFjZVR5cGUsIGlzVW5pb25UeXBlLCBpc0VudW1UeXBlLCBpc0lucHV0T2JqZWN0VHlwZSB9IGZyb20gXCIuLi8uLi90eXBlL2RlZmluaXRpb24ubWpzXCI7XG5cbi8qKlxuICogUG9zc2libGUgdHlwZSBleHRlbnNpb25cbiAqXG4gKiBBIHR5cGUgZXh0ZW5zaW9uIGlzIG9ubHkgdmFsaWQgaWYgdGhlIHR5cGUgaXMgZGVmaW5lZCBhbmQgaGFzIHRoZSBzYW1lIGtpbmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBQb3NzaWJsZVR5cGVFeHRlbnNpb25zUnVsZShjb250ZXh0KSB7XG4gIHZhciBzY2hlbWEgPSBjb250ZXh0LmdldFNjaGVtYSgpO1xuICB2YXIgZGVmaW5lZFR5cGVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKHZhciBfaTIgPSAwLCBfY29udGV4dCRnZXREb2N1bWVudCQyID0gY29udGV4dC5nZXREb2N1bWVudCgpLmRlZmluaXRpb25zOyBfaTIgPCBfY29udGV4dCRnZXREb2N1bWVudCQyLmxlbmd0aDsgX2kyKyspIHtcbiAgICB2YXIgZGVmID0gX2NvbnRleHQkZ2V0RG9jdW1lbnQkMltfaTJdO1xuXG4gICAgaWYgKGlzVHlwZURlZmluaXRpb25Ob2RlKGRlZikpIHtcbiAgICAgIGRlZmluZWRUeXBlc1tkZWYubmFtZS52YWx1ZV0gPSBkZWY7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBTY2FsYXJUeXBlRXh0ZW5zaW9uOiBjaGVja0V4dGVuc2lvbixcbiAgICBPYmplY3RUeXBlRXh0ZW5zaW9uOiBjaGVja0V4dGVuc2lvbixcbiAgICBJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uOiBjaGVja0V4dGVuc2lvbixcbiAgICBVbmlvblR5cGVFeHRlbnNpb246IGNoZWNrRXh0ZW5zaW9uLFxuICAgIEVudW1UeXBlRXh0ZW5zaW9uOiBjaGVja0V4dGVuc2lvbixcbiAgICBJbnB1dE9iamVjdFR5cGVFeHRlbnNpb246IGNoZWNrRXh0ZW5zaW9uXG4gIH07XG5cbiAgZnVuY3Rpb24gY2hlY2tFeHRlbnNpb24obm9kZSkge1xuICAgIHZhciB0eXBlTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcbiAgICB2YXIgZGVmTm9kZSA9IGRlZmluZWRUeXBlc1t0eXBlTmFtZV07XG4gICAgdmFyIGV4aXN0aW5nVHlwZSA9IHNjaGVtYSA9PT0gbnVsbCB8fCBzY2hlbWEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjaGVtYS5nZXRUeXBlKHR5cGVOYW1lKTtcbiAgICB2YXIgZXhwZWN0ZWRLaW5kO1xuXG4gICAgaWYgKGRlZk5vZGUpIHtcbiAgICAgIGV4cGVjdGVkS2luZCA9IGRlZktpbmRUb0V4dEtpbmRbZGVmTm9kZS5raW5kXTtcbiAgICB9IGVsc2UgaWYgKGV4aXN0aW5nVHlwZSkge1xuICAgICAgZXhwZWN0ZWRLaW5kID0gdHlwZVRvRXh0S2luZChleGlzdGluZ1R5cGUpO1xuICAgIH1cblxuICAgIGlmIChleHBlY3RlZEtpbmQpIHtcbiAgICAgIGlmIChleHBlY3RlZEtpbmQgIT09IG5vZGUua2luZCkge1xuICAgICAgICB2YXIga2luZFN0ciA9IGV4dGVuc2lvbktpbmRUb1R5cGVOYW1lKG5vZGUua2luZCk7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcihcIkNhbm5vdCBleHRlbmQgbm9uLVwiLmNvbmNhdChraW5kU3RyLCBcIiB0eXBlIFxcXCJcIikuY29uY2F0KHR5cGVOYW1lLCBcIlxcXCIuXCIpLCBkZWZOb2RlID8gW2RlZk5vZGUsIG5vZGVdIDogbm9kZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYWxsVHlwZU5hbWVzID0gT2JqZWN0LmtleXMoZGVmaW5lZFR5cGVzKTtcblxuICAgICAgaWYgKHNjaGVtYSkge1xuICAgICAgICBhbGxUeXBlTmFtZXMgPSBhbGxUeXBlTmFtZXMuY29uY2F0KE9iamVjdC5rZXlzKHNjaGVtYS5nZXRUeXBlTWFwKCkpKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHN1Z2dlc3RlZFR5cGVzID0gc3VnZ2VzdGlvbkxpc3QodHlwZU5hbWUsIGFsbFR5cGVOYW1lcyk7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJDYW5ub3QgZXh0ZW5kIHR5cGUgXFxcIlwiLmNvbmNhdCh0eXBlTmFtZSwgXCJcXFwiIGJlY2F1c2UgaXQgaXMgbm90IGRlZmluZWQuXCIpICsgZGlkWW91TWVhbihzdWdnZXN0ZWRUeXBlcyksIG5vZGUubmFtZSkpO1xuICAgIH1cbiAgfVxufVxudmFyIGRlZktpbmRUb0V4dEtpbmQgPSAoX2RlZktpbmRUb0V4dEtpbmQgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9kZWZLaW5kVG9FeHRLaW5kLCBLaW5kLlNDQUxBUl9UWVBFX0RFRklOSVRJT04sIEtpbmQuU0NBTEFSX1RZUEVfRVhURU5TSU9OKSwgX2RlZmluZVByb3BlcnR5KF9kZWZLaW5kVG9FeHRLaW5kLCBLaW5kLk9CSkVDVF9UWVBFX0RFRklOSVRJT04sIEtpbmQuT0JKRUNUX1RZUEVfRVhURU5TSU9OKSwgX2RlZmluZVByb3BlcnR5KF9kZWZLaW5kVG9FeHRLaW5kLCBLaW5kLklOVEVSRkFDRV9UWVBFX0RFRklOSVRJT04sIEtpbmQuSU5URVJGQUNFX1RZUEVfRVhURU5TSU9OKSwgX2RlZmluZVByb3BlcnR5KF9kZWZLaW5kVG9FeHRLaW5kLCBLaW5kLlVOSU9OX1RZUEVfREVGSU5JVElPTiwgS2luZC5VTklPTl9UWVBFX0VYVEVOU0lPTiksIF9kZWZpbmVQcm9wZXJ0eShfZGVmS2luZFRvRXh0S2luZCwgS2luZC5FTlVNX1RZUEVfREVGSU5JVElPTiwgS2luZC5FTlVNX1RZUEVfRVhURU5TSU9OKSwgX2RlZmluZVByb3BlcnR5KF9kZWZLaW5kVG9FeHRLaW5kLCBLaW5kLklOUFVUX09CSkVDVF9UWVBFX0RFRklOSVRJT04sIEtpbmQuSU5QVVRfT0JKRUNUX1RZUEVfRVhURU5TSU9OKSwgX2RlZktpbmRUb0V4dEtpbmQpO1xuXG5mdW5jdGlvbiB0eXBlVG9FeHRLaW5kKHR5cGUpIHtcbiAgaWYgKGlzU2NhbGFyVHlwZSh0eXBlKSkge1xuICAgIHJldHVybiBLaW5kLlNDQUxBUl9UWVBFX0VYVEVOU0lPTjtcbiAgfVxuXG4gIGlmIChpc09iamVjdFR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gS2luZC5PQkpFQ1RfVFlQRV9FWFRFTlNJT047XG4gIH1cblxuICBpZiAoaXNJbnRlcmZhY2VUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIEtpbmQuSU5URVJGQUNFX1RZUEVfRVhURU5TSU9OO1xuICB9XG5cbiAgaWYgKGlzVW5pb25UeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIEtpbmQuVU5JT05fVFlQRV9FWFRFTlNJT047XG4gIH1cblxuICBpZiAoaXNFbnVtVHlwZSh0eXBlKSkge1xuICAgIHJldHVybiBLaW5kLkVOVU1fVFlQRV9FWFRFTlNJT047XG4gIH0gLy8gaXN0YW5idWwgaWdub3JlIGVsc2UgKFNlZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzI2MTgnKVxuXG5cbiAgaWYgKGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIEtpbmQuSU5QVVRfT0JKRUNUX1RZUEVfRVhURU5TSU9OO1xuICB9IC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChOb3QgcmVhY2hhYmxlLiBBbGwgcG9zc2libGUgdHlwZXMgaGF2ZSBiZWVuIGNvbnNpZGVyZWQpXG5cblxuICBmYWxzZSB8fCBpbnZhcmlhbnQoMCwgJ1VuZXhwZWN0ZWQgdHlwZTogJyArIGluc3BlY3QodHlwZSkpO1xufVxuXG5mdW5jdGlvbiBleHRlbnNpb25LaW5kVG9UeXBlTmFtZShraW5kKSB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgS2luZC5TQ0FMQVJfVFlQRV9FWFRFTlNJT046XG4gICAgICByZXR1cm4gJ3NjYWxhcic7XG5cbiAgICBjYXNlIEtpbmQuT0JKRUNUX1RZUEVfRVhURU5TSU9OOlxuICAgICAgcmV0dXJuICdvYmplY3QnO1xuXG4gICAgY2FzZSBLaW5kLklOVEVSRkFDRV9UWVBFX0VYVEVOU0lPTjpcbiAgICAgIHJldHVybiAnaW50ZXJmYWNlJztcblxuICAgIGNhc2UgS2luZC5VTklPTl9UWVBFX0VYVEVOU0lPTjpcbiAgICAgIHJldHVybiAndW5pb24nO1xuXG4gICAgY2FzZSBLaW5kLkVOVU1fVFlQRV9FWFRFTlNJT046XG4gICAgICByZXR1cm4gJ2VudW0nO1xuXG4gICAgY2FzZSBLaW5kLklOUFVUX09CSkVDVF9UWVBFX0VYVEVOU0lPTjpcbiAgICAgIHJldHVybiAnaW5wdXQgb2JqZWN0JztcbiAgfSAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoTm90IHJlYWNoYWJsZS4gQWxsIHBvc3NpYmxlIHR5cGVzIGhhdmUgYmVlbiBjb25zaWRlcmVkKVxuXG5cbiAgZmFsc2UgfHwgaW52YXJpYW50KDAsICdVbmV4cGVjdGVkIGtpbmQ6ICcgKyBpbnNwZWN0KGtpbmQpKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs\n");
1581
1582/***/ }),
1583
1584/***/ "../../../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs":
1585/*!*******************************************************************************************************************!*\
1586 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs ***!
1587 \*******************************************************************************************************************/
1588/*! exports provided: ProvidedRequiredArgumentsRule, ProvidedRequiredArgumentsOnDirectivesRule */
1589/***/ (function(module, __webpack_exports__, __webpack_require__) {
1590
1591"use strict";
1592eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ProvidedRequiredArgumentsRule\", function() { return ProvidedRequiredArgumentsRule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ProvidedRequiredArgumentsOnDirectivesRule\", function() { return ProvidedRequiredArgumentsOnDirectivesRule; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n/**\n * Provided required arguments\n *\n * A field or directive is only valid if all required (non-null without a\n * default value) field arguments have been provided.\n */\nfunction ProvidedRequiredArgumentsRule(context) {\n return _objectSpread(_objectSpread({}, ProvidedRequiredArgumentsOnDirectivesRule(context)), {}, {\n Field: {\n // Validate on leave to allow for deeper errors to appear first.\n leave: function leave(fieldNode) {\n var _fieldNode$arguments;\n\n var fieldDef = context.getFieldDef();\n\n if (!fieldDef) {\n return false;\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n\n\n var argNodes = (_fieldNode$arguments = fieldNode.arguments) !== null && _fieldNode$arguments !== void 0 ? _fieldNode$arguments : [];\n var argNodeMap = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(argNodes, function (arg) {\n return arg.name.value;\n });\n\n for (var _i2 = 0, _fieldDef$args2 = fieldDef.args; _i2 < _fieldDef$args2.length; _i2++) {\n var argDef = _fieldDef$args2[_i2];\n var argNode = argNodeMap[argDef.name];\n\n if (!argNode && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isRequiredArgument\"])(argDef)) {\n var argTypeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(argDef.type);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\"Field \\\"\".concat(fieldDef.name, \"\\\" argument \\\"\").concat(argDef.name, \"\\\" of type \\\"\").concat(argTypeStr, \"\\\" is required, but it was not provided.\"), fieldNode));\n }\n }\n }\n }\n });\n}\n/**\n * @internal\n */\n\nfunction ProvidedRequiredArgumentsOnDirectivesRule(context) {\n var requiredArgsMap = Object.create(null);\n var schema = context.getSchema();\n var definedDirectives = schema ? schema.getDirectives() : _type_directives_mjs__WEBPACK_IMPORTED_MODULE_5__[\"specifiedDirectives\"];\n\n for (var _i4 = 0; _i4 < definedDirectives.length; _i4++) {\n var directive = definedDirectives[_i4];\n requiredArgsMap[directive.name] = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(directive.args.filter(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isRequiredArgument\"]), function (arg) {\n return arg.name;\n });\n }\n\n var astDefinitions = context.getDocument().definitions;\n\n for (var _i6 = 0; _i6 < astDefinitions.length; _i6++) {\n var def = astDefinitions[_i6];\n\n if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].DIRECTIVE_DEFINITION) {\n var _def$arguments;\n\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n var argNodes = (_def$arguments = def.arguments) !== null && _def$arguments !== void 0 ? _def$arguments : [];\n requiredArgsMap[def.name.value] = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(argNodes.filter(isRequiredArgumentNode), function (arg) {\n return arg.name.value;\n });\n }\n }\n\n return {\n Directive: {\n // Validate on leave to allow for deeper errors to appear first.\n leave: function leave(directiveNode) {\n var directiveName = directiveNode.name.value;\n var requiredArgs = requiredArgsMap[directiveName];\n\n if (requiredArgs) {\n var _directiveNode$argume;\n\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n var _argNodes = (_directiveNode$argume = directiveNode.arguments) !== null && _directiveNode$argume !== void 0 ? _directiveNode$argume : [];\n\n var argNodeMap = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_argNodes, function (arg) {\n return arg.name.value;\n });\n\n for (var _i8 = 0, _Object$keys2 = Object.keys(requiredArgs); _i8 < _Object$keys2.length; _i8++) {\n var argName = _Object$keys2[_i8];\n\n if (!argNodeMap[argName]) {\n var argType = requiredArgs[argName].type;\n var argTypeStr = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_6__[\"isType\"])(argType) ? Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(argType) : Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__[\"print\"])(argType);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__[\"GraphQLError\"](\"Directive \\\"@\".concat(directiveName, \"\\\" argument \\\"\").concat(argName, \"\\\" of type \\\"\").concat(argTypeStr, \"\\\" is required, but it was not provided.\"), directiveNode));\n }\n }\n }\n }\n }\n };\n}\n\nfunction isRequiredArgumentNode(arg) {\n return arg.type.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__[\"Kind\"].NON_NULL_TYPE && arg.defaultValue == null;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Qcm92aWRlZFJlcXVpcmVkQXJndW1lbnRzUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1Byb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNSdWxlLm1qcz82N2Y4Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgaW5zcGVjdCBmcm9tIFwiLi4vLi4vanN1dGlscy9pbnNwZWN0Lm1qc1wiO1xuaW1wb3J0IGtleU1hcCBmcm9tIFwiLi4vLi4vanN1dGlscy9rZXlNYXAubWpzXCI7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qc1wiO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gXCIuLi8uLi9sYW5ndWFnZS9raW5kcy5tanNcIjtcbmltcG9ydCB7IHByaW50IH0gZnJvbSBcIi4uLy4uL2xhbmd1YWdlL3ByaW50ZXIubWpzXCI7XG5pbXBvcnQgeyBzcGVjaWZpZWREaXJlY3RpdmVzIH0gZnJvbSBcIi4uLy4uL3R5cGUvZGlyZWN0aXZlcy5tanNcIjtcbmltcG9ydCB7IGlzVHlwZSwgaXNSZXF1aXJlZEFyZ3VtZW50IH0gZnJvbSBcIi4uLy4uL3R5cGUvZGVmaW5pdGlvbi5tanNcIjtcblxuLyoqXG4gKiBQcm92aWRlZCByZXF1aXJlZCBhcmd1bWVudHNcbiAqXG4gKiBBIGZpZWxkIG9yIGRpcmVjdGl2ZSBpcyBvbmx5IHZhbGlkIGlmIGFsbCByZXF1aXJlZCAobm9uLW51bGwgd2l0aG91dCBhXG4gKiBkZWZhdWx0IHZhbHVlKSBmaWVsZCBhcmd1bWVudHMgaGF2ZSBiZWVuIHByb3ZpZGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gUHJvdmlkZWRSZXF1aXJlZEFyZ3VtZW50c1J1bGUoY29udGV4dCkge1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBQcm92aWRlZFJlcXVpcmVkQXJndW1lbnRzT25EaXJlY3RpdmVzUnVsZShjb250ZXh0KSksIHt9LCB7XG4gICAgRmllbGQ6IHtcbiAgICAgIC8vIFZhbGlkYXRlIG9uIGxlYXZlIHRvIGFsbG93IGZvciBkZWVwZXIgZXJyb3JzIHRvIGFwcGVhciBmaXJzdC5cbiAgICAgIGxlYXZlOiBmdW5jdGlvbiBsZWF2ZShmaWVsZE5vZGUpIHtcbiAgICAgICAgdmFyIF9maWVsZE5vZGUkYXJndW1lbnRzO1xuXG4gICAgICAgIHZhciBmaWVsZERlZiA9IGNvbnRleHQuZ2V0RmllbGREZWYoKTtcblxuICAgICAgICBpZiAoIWZpZWxkRGVmKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChTZWU6ICdodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzJylcblxuXG4gICAgICAgIHZhciBhcmdOb2RlcyA9IChfZmllbGROb2RlJGFyZ3VtZW50cyA9IGZpZWxkTm9kZS5hcmd1bWVudHMpICE9PSBudWxsICYmIF9maWVsZE5vZGUkYXJndW1lbnRzICE9PSB2b2lkIDAgPyBfZmllbGROb2RlJGFyZ3VtZW50cyA6IFtdO1xuICAgICAgICB2YXIgYXJnTm9kZU1hcCA9IGtleU1hcChhcmdOb2RlcywgZnVuY3Rpb24gKGFyZykge1xuICAgICAgICAgIHJldHVybiBhcmcubmFtZS52YWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9yICh2YXIgX2kyID0gMCwgX2ZpZWxkRGVmJGFyZ3MyID0gZmllbGREZWYuYXJnczsgX2kyIDwgX2ZpZWxkRGVmJGFyZ3MyLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgICAgICB2YXIgYXJnRGVmID0gX2ZpZWxkRGVmJGFyZ3MyW19pMl07XG4gICAgICAgICAgdmFyIGFyZ05vZGUgPSBhcmdOb2RlTWFwW2FyZ0RlZi5uYW1lXTtcblxuICAgICAgICAgIGlmICghYXJnTm9kZSAmJiBpc1JlcXVpcmVkQXJndW1lbnQoYXJnRGVmKSkge1xuICAgICAgICAgICAgdmFyIGFyZ1R5cGVTdHIgPSBpbnNwZWN0KGFyZ0RlZi50eXBlKTtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcihcIkZpZWxkIFxcXCJcIi5jb25jYXQoZmllbGREZWYubmFtZSwgXCJcXFwiIGFyZ3VtZW50IFxcXCJcIikuY29uY2F0KGFyZ0RlZi5uYW1lLCBcIlxcXCIgb2YgdHlwZSBcXFwiXCIpLmNvbmNhdChhcmdUeXBlU3RyLCBcIlxcXCIgaXMgcmVxdWlyZWQsIGJ1dCBpdCB3YXMgbm90IHByb3ZpZGVkLlwiKSwgZmllbGROb2RlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cbi8qKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIFByb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNPbkRpcmVjdGl2ZXNSdWxlKGNvbnRleHQpIHtcbiAgdmFyIHJlcXVpcmVkQXJnc01hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciBzY2hlbWEgPSBjb250ZXh0LmdldFNjaGVtYSgpO1xuICB2YXIgZGVmaW5lZERpcmVjdGl2ZXMgPSBzY2hlbWEgPyBzY2hlbWEuZ2V0RGlyZWN0aXZlcygpIDogc3BlY2lmaWVkRGlyZWN0aXZlcztcblxuICBmb3IgKHZhciBfaTQgPSAwOyBfaTQgPCBkZWZpbmVkRGlyZWN0aXZlcy5sZW5ndGg7IF9pNCsrKSB7XG4gICAgdmFyIGRpcmVjdGl2ZSA9IGRlZmluZWREaXJlY3RpdmVzW19pNF07XG4gICAgcmVxdWlyZWRBcmdzTWFwW2RpcmVjdGl2ZS5uYW1lXSA9IGtleU1hcChkaXJlY3RpdmUuYXJncy5maWx0ZXIoaXNSZXF1aXJlZEFyZ3VtZW50KSwgZnVuY3Rpb24gKGFyZykge1xuICAgICAgcmV0dXJuIGFyZy5uYW1lO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGFzdERlZmluaXRpb25zID0gY29udGV4dC5nZXREb2N1bWVudCgpLmRlZmluaXRpb25zO1xuXG4gIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IGFzdERlZmluaXRpb25zLmxlbmd0aDsgX2k2KyspIHtcbiAgICB2YXIgZGVmID0gYXN0RGVmaW5pdGlvbnNbX2k2XTtcblxuICAgIGlmIChkZWYua2luZCA9PT0gS2luZC5ESVJFQ1RJVkVfREVGSU5JVElPTikge1xuICAgICAgdmFyIF9kZWYkYXJndW1lbnRzO1xuXG4gICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwMycpXG4gICAgICB2YXIgYXJnTm9kZXMgPSAoX2RlZiRhcmd1bWVudHMgPSBkZWYuYXJndW1lbnRzKSAhPT0gbnVsbCAmJiBfZGVmJGFyZ3VtZW50cyAhPT0gdm9pZCAwID8gX2RlZiRhcmd1bWVudHMgOiBbXTtcbiAgICAgIHJlcXVpcmVkQXJnc01hcFtkZWYubmFtZS52YWx1ZV0gPSBrZXlNYXAoYXJnTm9kZXMuZmlsdGVyKGlzUmVxdWlyZWRBcmd1bWVudE5vZGUpLCBmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgIHJldHVybiBhcmcubmFtZS52YWx1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgRGlyZWN0aXZlOiB7XG4gICAgICAvLyBWYWxpZGF0ZSBvbiBsZWF2ZSB0byBhbGxvdyBmb3IgZGVlcGVyIGVycm9ycyB0byBhcHBlYXIgZmlyc3QuXG4gICAgICBsZWF2ZTogZnVuY3Rpb24gbGVhdmUoZGlyZWN0aXZlTm9kZSkge1xuICAgICAgICB2YXIgZGlyZWN0aXZlTmFtZSA9IGRpcmVjdGl2ZU5vZGUubmFtZS52YWx1ZTtcbiAgICAgICAgdmFyIHJlcXVpcmVkQXJncyA9IHJlcXVpcmVkQXJnc01hcFtkaXJlY3RpdmVOYW1lXTtcblxuICAgICAgICBpZiAocmVxdWlyZWRBcmdzKSB7XG4gICAgICAgICAgdmFyIF9kaXJlY3RpdmVOb2RlJGFyZ3VtZTtcblxuICAgICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChTZWU6ICdodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzJylcbiAgICAgICAgICB2YXIgX2FyZ05vZGVzID0gKF9kaXJlY3RpdmVOb2RlJGFyZ3VtZSA9IGRpcmVjdGl2ZU5vZGUuYXJndW1lbnRzKSAhPT0gbnVsbCAmJiBfZGlyZWN0aXZlTm9kZSRhcmd1bWUgIT09IHZvaWQgMCA/IF9kaXJlY3RpdmVOb2RlJGFyZ3VtZSA6IFtdO1xuXG4gICAgICAgICAgdmFyIGFyZ05vZGVNYXAgPSBrZXlNYXAoX2FyZ05vZGVzLCBmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJnLm5hbWUudmFsdWU7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBmb3IgKHZhciBfaTggPSAwLCBfT2JqZWN0JGtleXMyID0gT2JqZWN0LmtleXMocmVxdWlyZWRBcmdzKTsgX2k4IDwgX09iamVjdCRrZXlzMi5sZW5ndGg7IF9pOCsrKSB7XG4gICAgICAgICAgICB2YXIgYXJnTmFtZSA9IF9PYmplY3Qka2V5czJbX2k4XTtcblxuICAgICAgICAgICAgaWYgKCFhcmdOb2RlTWFwW2FyZ05hbWVdKSB7XG4gICAgICAgICAgICAgIHZhciBhcmdUeXBlID0gcmVxdWlyZWRBcmdzW2FyZ05hbWVdLnR5cGU7XG4gICAgICAgICAgICAgIHZhciBhcmdUeXBlU3RyID0gaXNUeXBlKGFyZ1R5cGUpID8gaW5zcGVjdChhcmdUeXBlKSA6IHByaW50KGFyZ1R5cGUpO1xuICAgICAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJEaXJlY3RpdmUgXFxcIkBcIi5jb25jYXQoZGlyZWN0aXZlTmFtZSwgXCJcXFwiIGFyZ3VtZW50IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBvZiB0eXBlIFxcXCJcIikuY29uY2F0KGFyZ1R5cGVTdHIsIFwiXFxcIiBpcyByZXF1aXJlZCwgYnV0IGl0IHdhcyBub3QgcHJvdmlkZWQuXCIpLCBkaXJlY3RpdmVOb2RlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBpc1JlcXVpcmVkQXJndW1lbnROb2RlKGFyZykge1xuICByZXR1cm4gYXJnLnR5cGUua2luZCA9PT0gS2luZC5OT05fTlVMTF9UWVBFICYmIGFyZy5kZWZhdWx0VmFsdWUgPT0gbnVsbDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs\n");
1593
1594/***/ }),
1595
1596/***/ "../../../node_modules/graphql/validation/rules/ScalarLeafsRule.mjs":
1597/*!*****************************************************************************************************!*\
1598 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/ScalarLeafsRule.mjs ***!
1599 \*****************************************************************************************************/
1600/*! exports provided: ScalarLeafsRule */
1601/***/ (function(module, __webpack_exports__, __webpack_require__) {
1602
1603"use strict";
1604eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ScalarLeafsRule\", function() { return ScalarLeafsRule; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n/**\n * Scalar leafs\n *\n * A GraphQL document is valid only if all leaf fields (fields without\n * sub selections) are of scalar or enum types.\n */\nfunction ScalarLeafsRule(context) {\n return {\n Field: function Field(node) {\n var type = context.getType();\n var selectionSet = node.selectionSet;\n\n if (type) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isLeafType\"])(Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getNamedType\"])(type))) {\n if (selectionSet) {\n var fieldName = node.name.value;\n var typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(type);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\"Field \\\"\".concat(fieldName, \"\\\" must not have a selection since type \\\"\").concat(typeStr, \"\\\" has no subfields.\"), selectionSet));\n }\n } else if (!selectionSet) {\n var _fieldName = node.name.value;\n\n var _typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(type);\n\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\"Field \\\"\".concat(_fieldName, \"\\\" of type \\\"\").concat(_typeStr, \"\\\" must have a selection of subfields. Did you mean \\\"\").concat(_fieldName, \" { ... }\\\"?\"), node));\n }\n }\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9TY2FsYXJMZWFmc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9TY2FsYXJMZWFmc1J1bGUubWpzP2M3ZjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGluc3BlY3QgZnJvbSBcIi4uLy4uL2pzdXRpbHMvaW5zcGVjdC5tanNcIjtcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5pbXBvcnQgeyBnZXROYW1lZFR5cGUsIGlzTGVhZlR5cGUgfSBmcm9tIFwiLi4vLi4vdHlwZS9kZWZpbml0aW9uLm1qc1wiO1xuXG4vKipcbiAqIFNjYWxhciBsZWFmc1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyB2YWxpZCBvbmx5IGlmIGFsbCBsZWFmIGZpZWxkcyAoZmllbGRzIHdpdGhvdXRcbiAqIHN1YiBzZWxlY3Rpb25zKSBhcmUgb2Ygc2NhbGFyIG9yIGVudW0gdHlwZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTY2FsYXJMZWFmc1J1bGUoY29udGV4dCkge1xuICByZXR1cm4ge1xuICAgIEZpZWxkOiBmdW5jdGlvbiBGaWVsZChub2RlKSB7XG4gICAgICB2YXIgdHlwZSA9IGNvbnRleHQuZ2V0VHlwZSgpO1xuICAgICAgdmFyIHNlbGVjdGlvblNldCA9IG5vZGUuc2VsZWN0aW9uU2V0O1xuXG4gICAgICBpZiAodHlwZSkge1xuICAgICAgICBpZiAoaXNMZWFmVHlwZShnZXROYW1lZFR5cGUodHlwZSkpKSB7XG4gICAgICAgICAgaWYgKHNlbGVjdGlvblNldCkge1xuICAgICAgICAgICAgdmFyIGZpZWxkTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcbiAgICAgICAgICAgIHZhciB0eXBlU3RyID0gaW5zcGVjdCh0eXBlKTtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcihcIkZpZWxkIFxcXCJcIi5jb25jYXQoZmllbGROYW1lLCBcIlxcXCIgbXVzdCBub3QgaGF2ZSBhIHNlbGVjdGlvbiBzaW5jZSB0eXBlIFxcXCJcIikuY29uY2F0KHR5cGVTdHIsIFwiXFxcIiBoYXMgbm8gc3ViZmllbGRzLlwiKSwgc2VsZWN0aW9uU2V0KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFzZWxlY3Rpb25TZXQpIHtcbiAgICAgICAgICB2YXIgX2ZpZWxkTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcblxuICAgICAgICAgIHZhciBfdHlwZVN0ciA9IGluc3BlY3QodHlwZSk7XG5cbiAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJGaWVsZCBcXFwiXCIuY29uY2F0KF9maWVsZE5hbWUsIFwiXFxcIiBvZiB0eXBlIFxcXCJcIikuY29uY2F0KF90eXBlU3RyLCBcIlxcXCIgbXVzdCBoYXZlIGEgc2VsZWN0aW9uIG9mIHN1YmZpZWxkcy4gRGlkIHlvdSBtZWFuIFxcXCJcIikuY29uY2F0KF9maWVsZE5hbWUsIFwiIHsgLi4uIH1cXFwiP1wiKSwgbm9kZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/ScalarLeafsRule.mjs\n");
1605
1606/***/ }),
1607
1608/***/ "../../../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs":
1609/*!******************************************************************************************************************!*\
1610 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs ***!
1611 \******************************************************************************************************************/
1612/*! exports provided: SingleFieldSubscriptionsRule */
1613/***/ (function(module, __webpack_exports__, __webpack_require__) {
1614
1615"use strict";
1616eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SingleFieldSubscriptionsRule\", function() { return SingleFieldSubscriptionsRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Subscriptions must only include one field.\n *\n * A GraphQL subscription is valid only if it contains a single root field.\n */\nfunction SingleFieldSubscriptionsRule(context) {\n return {\n OperationDefinition: function OperationDefinition(node) {\n if (node.operation === 'subscription') {\n if (node.selectionSet.selections.length !== 1) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](node.name ? \"Subscription \\\"\".concat(node.name.value, \"\\\" must select only one top level field.\") : 'Anonymous Subscription must select only one top level field.', node.selectionSet.selections.slice(1)));\n }\n }\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9TaW5nbGVGaWVsZFN1YnNjcmlwdGlvbnNSdWxlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvU2luZ2xlRmllbGRTdWJzY3JpcHRpb25zUnVsZS5tanM/M2ZlZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qc1wiO1xuXG4vKipcbiAqIFN1YnNjcmlwdGlvbnMgbXVzdCBvbmx5IGluY2x1ZGUgb25lIGZpZWxkLlxuICpcbiAqIEEgR3JhcGhRTCBzdWJzY3JpcHRpb24gaXMgdmFsaWQgb25seSBpZiBpdCBjb250YWlucyBhIHNpbmdsZSByb290IGZpZWxkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gU2luZ2xlRmllbGRTdWJzY3JpcHRpb25zUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgT3BlcmF0aW9uRGVmaW5pdGlvbjogZnVuY3Rpb24gT3BlcmF0aW9uRGVmaW5pdGlvbihub2RlKSB7XG4gICAgICBpZiAobm9kZS5vcGVyYXRpb24gPT09ICdzdWJzY3JpcHRpb24nKSB7XG4gICAgICAgIGlmIChub2RlLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcihub2RlLm5hbWUgPyBcIlN1YnNjcmlwdGlvbiBcXFwiXCIuY29uY2F0KG5vZGUubmFtZS52YWx1ZSwgXCJcXFwiIG11c3Qgc2VsZWN0IG9ubHkgb25lIHRvcCBsZXZlbCBmaWVsZC5cIikgOiAnQW5vbnltb3VzIFN1YnNjcmlwdGlvbiBtdXN0IHNlbGVjdCBvbmx5IG9uZSB0b3AgbGV2ZWwgZmllbGQuJywgbm9kZS5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucy5zbGljZSgxKSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs\n");
1617
1618/***/ }),
1619
1620/***/ "../../../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs":
1621/*!*************************************************************************************************************!*\
1622 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs ***!
1623 \*************************************************************************************************************/
1624/*! exports provided: UniqueArgumentNamesRule */
1625/***/ (function(module, __webpack_exports__, __webpack_require__) {
1626
1627"use strict";
1628eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueArgumentNamesRule\", function() { return UniqueArgumentNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique argument names\n *\n * A GraphQL field or directive is only valid if all supplied arguments are\n * uniquely named.\n */\nfunction UniqueArgumentNamesRule(context) {\n var knownArgNames = Object.create(null);\n return {\n Field: function Field() {\n knownArgNames = Object.create(null);\n },\n Directive: function Directive() {\n knownArgNames = Object.create(null);\n },\n Argument: function Argument(node) {\n var argName = node.name.value;\n\n if (knownArgNames[argName]) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"There can be only one argument named \\\"\".concat(argName, \"\\\".\"), [knownArgNames[argName], node.name]));\n } else {\n knownArgNames[argName] = node.name;\n }\n\n return false;\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVBcmd1bWVudE5hbWVzUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZUFyZ3VtZW50TmFtZXNSdWxlLm1qcz9jZDg5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5cbi8qKlxuICogVW5pcXVlIGFyZ3VtZW50IG5hbWVzXG4gKlxuICogQSBHcmFwaFFMIGZpZWxkIG9yIGRpcmVjdGl2ZSBpcyBvbmx5IHZhbGlkIGlmIGFsbCBzdXBwbGllZCBhcmd1bWVudHMgYXJlXG4gKiB1bmlxdWVseSBuYW1lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVuaXF1ZUFyZ3VtZW50TmFtZXNSdWxlKGNvbnRleHQpIHtcbiAgdmFyIGtub3duQXJnTmFtZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4ge1xuICAgIEZpZWxkOiBmdW5jdGlvbiBGaWVsZCgpIHtcbiAgICAgIGtub3duQXJnTmFtZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIH0sXG4gICAgRGlyZWN0aXZlOiBmdW5jdGlvbiBEaXJlY3RpdmUoKSB7XG4gICAgICBrbm93bkFyZ05hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB9LFxuICAgIEFyZ3VtZW50OiBmdW5jdGlvbiBBcmd1bWVudChub2RlKSB7XG4gICAgICB2YXIgYXJnTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcblxuICAgICAgaWYgKGtub3duQXJnTmFtZXNbYXJnTmFtZV0pIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiVGhlcmUgY2FuIGJlIG9ubHkgb25lIGFyZ3VtZW50IG5hbWVkIFxcXCJcIi5jb25jYXQoYXJnTmFtZSwgXCJcXFwiLlwiKSwgW2tub3duQXJnTmFtZXNbYXJnTmFtZV0sIG5vZGUubmFtZV0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGtub3duQXJnTmFtZXNbYXJnTmFtZV0gPSBub2RlLm5hbWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs\n");
1629
1630/***/ }),
1631
1632/***/ "../../../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs":
1633/*!**************************************************************************************************************!*\
1634 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs ***!
1635 \**************************************************************************************************************/
1636/*! exports provided: UniqueDirectiveNamesRule */
1637/***/ (function(module, __webpack_exports__, __webpack_require__) {
1638
1639"use strict";
1640eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueDirectiveNamesRule\", function() { return UniqueDirectiveNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique directive names\n *\n * A GraphQL document is only valid if all defined directives have unique names.\n */\nfunction UniqueDirectiveNamesRule(context) {\n var knownDirectiveNames = Object.create(null);\n var schema = context.getSchema();\n return {\n DirectiveDefinition: function DirectiveDefinition(node) {\n var directiveName = node.name.value;\n\n if (schema === null || schema === void 0 ? void 0 : schema.getDirective(directiveName)) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"Directive \\\"@\".concat(directiveName, \"\\\" already exists in the schema. It cannot be redefined.\"), node.name));\n return;\n }\n\n if (knownDirectiveNames[directiveName]) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"There can be only one directive named \\\"@\".concat(directiveName, \"\\\".\"), [knownDirectiveNames[directiveName], node.name]));\n } else {\n knownDirectiveNames[directiveName] = node.name;\n }\n\n return false;\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVEaXJlY3RpdmVOYW1lc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVEaXJlY3RpdmVOYW1lc1J1bGUubWpzPzQzMGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanNcIjtcblxuLyoqXG4gKiBVbmlxdWUgZGlyZWN0aXZlIG5hbWVzXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgYWxsIGRlZmluZWQgZGlyZWN0aXZlcyBoYXZlIHVuaXF1ZSBuYW1lcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVuaXF1ZURpcmVjdGl2ZU5hbWVzUnVsZShjb250ZXh0KSB7XG4gIHZhciBrbm93bkRpcmVjdGl2ZU5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIHNjaGVtYSA9IGNvbnRleHQuZ2V0U2NoZW1hKCk7XG4gIHJldHVybiB7XG4gICAgRGlyZWN0aXZlRGVmaW5pdGlvbjogZnVuY3Rpb24gRGlyZWN0aXZlRGVmaW5pdGlvbihub2RlKSB7XG4gICAgICB2YXIgZGlyZWN0aXZlTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcblxuICAgICAgaWYgKHNjaGVtYSA9PT0gbnVsbCB8fCBzY2hlbWEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjaGVtYS5nZXREaXJlY3RpdmUoZGlyZWN0aXZlTmFtZSkpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiRGlyZWN0aXZlIFxcXCJAXCIuY29uY2F0KGRpcmVjdGl2ZU5hbWUsIFwiXFxcIiBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgc2NoZW1hLiBJdCBjYW5ub3QgYmUgcmVkZWZpbmVkLlwiKSwgbm9kZS5uYW1lKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGtub3duRGlyZWN0aXZlTmFtZXNbZGlyZWN0aXZlTmFtZV0pIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiVGhlcmUgY2FuIGJlIG9ubHkgb25lIGRpcmVjdGl2ZSBuYW1lZCBcXFwiQFwiLmNvbmNhdChkaXJlY3RpdmVOYW1lLCBcIlxcXCIuXCIpLCBba25vd25EaXJlY3RpdmVOYW1lc1tkaXJlY3RpdmVOYW1lXSwgbm9kZS5uYW1lXSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAga25vd25EaXJlY3RpdmVOYW1lc1tkaXJlY3RpdmVOYW1lXSA9IG5vZGUubmFtZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs\n");
1641
1642/***/ }),
1643
1644/***/ "../../../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs":
1645/*!*********************************************************************************************************************!*\
1646 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs ***!
1647 \*********************************************************************************************************************/
1648/*! exports provided: UniqueDirectivesPerLocationRule */
1649/***/ (function(module, __webpack_exports__, __webpack_require__) {
1650
1651"use strict";
1652eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueDirectivesPerLocationRule\", function() { return UniqueDirectivesPerLocationRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_predicates_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../language/predicates.mjs */ \"../../../node_modules/graphql/language/predicates.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n\n\n\n\n\n/**\n * Unique directive names per location\n *\n * A GraphQL document is only valid if all non-repeatable directives at\n * a given location are uniquely named.\n */\nfunction UniqueDirectivesPerLocationRule(context) {\n var uniqueDirectiveMap = Object.create(null);\n var schema = context.getSchema();\n var definedDirectives = schema ? schema.getDirectives() : _type_directives_mjs__WEBPACK_IMPORTED_MODULE_3__[\"specifiedDirectives\"];\n\n for (var _i2 = 0; _i2 < definedDirectives.length; _i2++) {\n var directive = definedDirectives[_i2];\n uniqueDirectiveMap[directive.name] = !directive.isRepeatable;\n }\n\n var astDefinitions = context.getDocument().definitions;\n\n for (var _i4 = 0; _i4 < astDefinitions.length; _i4++) {\n var def = astDefinitions[_i4];\n\n if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].DIRECTIVE_DEFINITION) {\n uniqueDirectiveMap[def.name.value] = !def.repeatable;\n }\n }\n\n var schemaDirectives = Object.create(null);\n var typeDirectivesMap = Object.create(null);\n return {\n // Many different AST nodes may contain directives. Rather than listing\n // them all, just listen for entering any node, and check to see if it\n // defines any directives.\n enter: function enter(node) {\n if (node.directives == null) {\n return;\n }\n\n var seenDirectives;\n\n if (node.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SCHEMA_DEFINITION || node.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__[\"Kind\"].SCHEMA_EXTENSION) {\n seenDirectives = schemaDirectives;\n } else if (Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isTypeDefinitionNode\"])(node) || Object(_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isTypeExtensionNode\"])(node)) {\n var typeName = node.name.value;\n seenDirectives = typeDirectivesMap[typeName];\n\n if (seenDirectives === undefined) {\n typeDirectivesMap[typeName] = seenDirectives = Object.create(null);\n }\n } else {\n seenDirectives = Object.create(null);\n }\n\n for (var _i6 = 0, _node$directives2 = node.directives; _i6 < _node$directives2.length; _i6++) {\n var _directive = _node$directives2[_i6];\n var directiveName = _directive.name.value;\n\n if (uniqueDirectiveMap[directiveName]) {\n if (seenDirectives[directiveName]) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"The directive \\\"@\".concat(directiveName, \"\\\" can only be used once at this location.\"), [seenDirectives[directiveName], _directive]));\n } else {\n seenDirectives[directiveName] = _directive;\n }\n }\n }\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVEaXJlY3RpdmVzUGVyTG9jYXRpb25SdWxlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvVW5pcXVlRGlyZWN0aXZlc1BlckxvY2F0aW9uUnVsZS5tanM/ZjE1YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qc1wiO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gXCIuLi8uLi9sYW5ndWFnZS9raW5kcy5tanNcIjtcbmltcG9ydCB7IGlzVHlwZURlZmluaXRpb25Ob2RlLCBpc1R5cGVFeHRlbnNpb25Ob2RlIH0gZnJvbSBcIi4uLy4uL2xhbmd1YWdlL3ByZWRpY2F0ZXMubWpzXCI7XG5pbXBvcnQgeyBzcGVjaWZpZWREaXJlY3RpdmVzIH0gZnJvbSBcIi4uLy4uL3R5cGUvZGlyZWN0aXZlcy5tanNcIjtcblxuLyoqXG4gKiBVbmlxdWUgZGlyZWN0aXZlIG5hbWVzIHBlciBsb2NhdGlvblxuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBub24tcmVwZWF0YWJsZSBkaXJlY3RpdmVzIGF0XG4gKiBhIGdpdmVuIGxvY2F0aW9uIGFyZSB1bmlxdWVseSBuYW1lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVuaXF1ZURpcmVjdGl2ZXNQZXJMb2NhdGlvblJ1bGUoY29udGV4dCkge1xuICB2YXIgdW5pcXVlRGlyZWN0aXZlTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIHNjaGVtYSA9IGNvbnRleHQuZ2V0U2NoZW1hKCk7XG4gIHZhciBkZWZpbmVkRGlyZWN0aXZlcyA9IHNjaGVtYSA/IHNjaGVtYS5nZXREaXJlY3RpdmVzKCkgOiBzcGVjaWZpZWREaXJlY3RpdmVzO1xuXG4gIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGRlZmluZWREaXJlY3RpdmVzLmxlbmd0aDsgX2kyKyspIHtcbiAgICB2YXIgZGlyZWN0aXZlID0gZGVmaW5lZERpcmVjdGl2ZXNbX2kyXTtcbiAgICB1bmlxdWVEaXJlY3RpdmVNYXBbZGlyZWN0aXZlLm5hbWVdID0gIWRpcmVjdGl2ZS5pc1JlcGVhdGFibGU7XG4gIH1cblxuICB2YXIgYXN0RGVmaW5pdGlvbnMgPSBjb250ZXh0LmdldERvY3VtZW50KCkuZGVmaW5pdGlvbnM7XG5cbiAgZm9yICh2YXIgX2k0ID0gMDsgX2k0IDwgYXN0RGVmaW5pdGlvbnMubGVuZ3RoOyBfaTQrKykge1xuICAgIHZhciBkZWYgPSBhc3REZWZpbml0aW9uc1tfaTRdO1xuXG4gICAgaWYgKGRlZi5raW5kID09PSBLaW5kLkRJUkVDVElWRV9ERUZJTklUSU9OKSB7XG4gICAgICB1bmlxdWVEaXJlY3RpdmVNYXBbZGVmLm5hbWUudmFsdWVdID0gIWRlZi5yZXBlYXRhYmxlO1xuICAgIH1cbiAgfVxuXG4gIHZhciBzY2hlbWFEaXJlY3RpdmVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIHR5cGVEaXJlY3RpdmVzTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIHtcbiAgICAvLyBNYW55IGRpZmZlcmVudCBBU1Qgbm9kZXMgbWF5IGNvbnRhaW4gZGlyZWN0aXZlcy4gUmF0aGVyIHRoYW4gbGlzdGluZ1xuICAgIC8vIHRoZW0gYWxsLCBqdXN0IGxpc3RlbiBmb3IgZW50ZXJpbmcgYW55IG5vZGUsIGFuZCBjaGVjayB0byBzZWUgaWYgaXRcbiAgICAvLyBkZWZpbmVzIGFueSBkaXJlY3RpdmVzLlxuICAgIGVudGVyOiBmdW5jdGlvbiBlbnRlcihub2RlKSB7XG4gICAgICBpZiAobm9kZS5kaXJlY3RpdmVzID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgc2VlbkRpcmVjdGl2ZXM7XG5cbiAgICAgIGlmIChub2RlLmtpbmQgPT09IEtpbmQuU0NIRU1BX0RFRklOSVRJT04gfHwgbm9kZS5raW5kID09PSBLaW5kLlNDSEVNQV9FWFRFTlNJT04pIHtcbiAgICAgICAgc2VlbkRpcmVjdGl2ZXMgPSBzY2hlbWFEaXJlY3RpdmVzO1xuICAgICAgfSBlbHNlIGlmIChpc1R5cGVEZWZpbml0aW9uTm9kZShub2RlKSB8fCBpc1R5cGVFeHRlbnNpb25Ob2RlKG5vZGUpKSB7XG4gICAgICAgIHZhciB0eXBlTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcbiAgICAgICAgc2VlbkRpcmVjdGl2ZXMgPSB0eXBlRGlyZWN0aXZlc01hcFt0eXBlTmFtZV07XG5cbiAgICAgICAgaWYgKHNlZW5EaXJlY3RpdmVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0eXBlRGlyZWN0aXZlc01hcFt0eXBlTmFtZV0gPSBzZWVuRGlyZWN0aXZlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlZW5EaXJlY3RpdmVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgX2k2ID0gMCwgX25vZGUkZGlyZWN0aXZlczIgPSBub2RlLmRpcmVjdGl2ZXM7IF9pNiA8IF9ub2RlJGRpcmVjdGl2ZXMyLmxlbmd0aDsgX2k2KyspIHtcbiAgICAgICAgdmFyIF9kaXJlY3RpdmUgPSBfbm9kZSRkaXJlY3RpdmVzMltfaTZdO1xuICAgICAgICB2YXIgZGlyZWN0aXZlTmFtZSA9IF9kaXJlY3RpdmUubmFtZS52YWx1ZTtcblxuICAgICAgICBpZiAodW5pcXVlRGlyZWN0aXZlTWFwW2RpcmVjdGl2ZU5hbWVdKSB7XG4gICAgICAgICAgaWYgKHNlZW5EaXJlY3RpdmVzW2RpcmVjdGl2ZU5hbWVdKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJUaGUgZGlyZWN0aXZlIFxcXCJAXCIuY29uY2F0KGRpcmVjdGl2ZU5hbWUsIFwiXFxcIiBjYW4gb25seSBiZSB1c2VkIG9uY2UgYXQgdGhpcyBsb2NhdGlvbi5cIiksIFtzZWVuRGlyZWN0aXZlc1tkaXJlY3RpdmVOYW1lXSwgX2RpcmVjdGl2ZV0pKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VlbkRpcmVjdGl2ZXNbZGlyZWN0aXZlTmFtZV0gPSBfZGlyZWN0aXZlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs\n");
1653
1654/***/ }),
1655
1656/***/ "../../../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs":
1657/*!**************************************************************************************************************!*\
1658 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs ***!
1659 \**************************************************************************************************************/
1660/*! exports provided: UniqueEnumValueNamesRule */
1661/***/ (function(module, __webpack_exports__, __webpack_require__) {
1662
1663"use strict";
1664eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueEnumValueNamesRule\", function() { return UniqueEnumValueNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n/**\n * Unique enum value names\n *\n * A GraphQL enum type is only valid if all its values are uniquely named.\n */\nfunction UniqueEnumValueNamesRule(context) {\n var schema = context.getSchema();\n var existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n var knownValueNames = Object.create(null);\n return {\n EnumTypeDefinition: checkValueUniqueness,\n EnumTypeExtension: checkValueUniqueness\n };\n\n function checkValueUniqueness(node) {\n var _node$values;\n\n var typeName = node.name.value;\n\n if (!knownValueNames[typeName]) {\n knownValueNames[typeName] = Object.create(null);\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n\n\n var valueNodes = (_node$values = node.values) !== null && _node$values !== void 0 ? _node$values : [];\n var valueNames = knownValueNames[typeName];\n\n for (var _i2 = 0; _i2 < valueNodes.length; _i2++) {\n var valueDef = valueNodes[_i2];\n var valueName = valueDef.name.value;\n var existingType = existingTypeMap[typeName];\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isEnumType\"])(existingType) && existingType.getValue(valueName)) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"Enum value \\\"\".concat(typeName, \".\").concat(valueName, \"\\\" already exists in the schema. It cannot also be defined in this type extension.\"), valueDef.name));\n } else if (valueNames[valueName]) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"Enum value \\\"\".concat(typeName, \".\").concat(valueName, \"\\\" can only be defined once.\"), [valueNames[valueName], valueDef.name]));\n } else {\n valueNames[valueName] = valueDef.name;\n }\n }\n\n return false;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVFbnVtVmFsdWVOYW1lc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVFbnVtVmFsdWVOYW1lc1J1bGUubWpzP2IzYTgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanNcIjtcbmltcG9ydCB7IGlzRW51bVR5cGUgfSBmcm9tIFwiLi4vLi4vdHlwZS9kZWZpbml0aW9uLm1qc1wiO1xuXG4vKipcbiAqIFVuaXF1ZSBlbnVtIHZhbHVlIG5hbWVzXG4gKlxuICogQSBHcmFwaFFMIGVudW0gdHlwZSBpcyBvbmx5IHZhbGlkIGlmIGFsbCBpdHMgdmFsdWVzIGFyZSB1bmlxdWVseSBuYW1lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVuaXF1ZUVudW1WYWx1ZU5hbWVzUnVsZShjb250ZXh0KSB7XG4gIHZhciBzY2hlbWEgPSBjb250ZXh0LmdldFNjaGVtYSgpO1xuICB2YXIgZXhpc3RpbmdUeXBlTWFwID0gc2NoZW1hID8gc2NoZW1hLmdldFR5cGVNYXAoKSA6IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciBrbm93blZhbHVlTmFtZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4ge1xuICAgIEVudW1UeXBlRGVmaW5pdGlvbjogY2hlY2tWYWx1ZVVuaXF1ZW5lc3MsXG4gICAgRW51bVR5cGVFeHRlbnNpb246IGNoZWNrVmFsdWVVbmlxdWVuZXNzXG4gIH07XG5cbiAgZnVuY3Rpb24gY2hlY2tWYWx1ZVVuaXF1ZW5lc3Mobm9kZSkge1xuICAgIHZhciBfbm9kZSR2YWx1ZXM7XG5cbiAgICB2YXIgdHlwZU5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG5cbiAgICBpZiAoIWtub3duVmFsdWVOYW1lc1t0eXBlTmFtZV0pIHtcbiAgICAgIGtub3duVmFsdWVOYW1lc1t0eXBlTmFtZV0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIH0gLy8gaXN0YW5idWwgaWdub3JlIG5leHQgKFNlZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDMnKVxuXG5cbiAgICB2YXIgdmFsdWVOb2RlcyA9IChfbm9kZSR2YWx1ZXMgPSBub2RlLnZhbHVlcykgIT09IG51bGwgJiYgX25vZGUkdmFsdWVzICE9PSB2b2lkIDAgPyBfbm9kZSR2YWx1ZXMgOiBbXTtcbiAgICB2YXIgdmFsdWVOYW1lcyA9IGtub3duVmFsdWVOYW1lc1t0eXBlTmFtZV07XG5cbiAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCB2YWx1ZU5vZGVzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgIHZhciB2YWx1ZURlZiA9IHZhbHVlTm9kZXNbX2kyXTtcbiAgICAgIHZhciB2YWx1ZU5hbWUgPSB2YWx1ZURlZi5uYW1lLnZhbHVlO1xuICAgICAgdmFyIGV4aXN0aW5nVHlwZSA9IGV4aXN0aW5nVHlwZU1hcFt0eXBlTmFtZV07XG5cbiAgICAgIGlmIChpc0VudW1UeXBlKGV4aXN0aW5nVHlwZSkgJiYgZXhpc3RpbmdUeXBlLmdldFZhbHVlKHZhbHVlTmFtZSkpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiRW51bSB2YWx1ZSBcXFwiXCIuY29uY2F0KHR5cGVOYW1lLCBcIi5cIikuY29uY2F0KHZhbHVlTmFtZSwgXCJcXFwiIGFscmVhZHkgZXhpc3RzIGluIHRoZSBzY2hlbWEuIEl0IGNhbm5vdCBhbHNvIGJlIGRlZmluZWQgaW4gdGhpcyB0eXBlIGV4dGVuc2lvbi5cIiksIHZhbHVlRGVmLm5hbWUpKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWVOYW1lc1t2YWx1ZU5hbWVdKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcihcIkVudW0gdmFsdWUgXFxcIlwiLmNvbmNhdCh0eXBlTmFtZSwgXCIuXCIpLmNvbmNhdCh2YWx1ZU5hbWUsIFwiXFxcIiBjYW4gb25seSBiZSBkZWZpbmVkIG9uY2UuXCIpLCBbdmFsdWVOYW1lc1t2YWx1ZU5hbWVdLCB2YWx1ZURlZi5uYW1lXSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWVOYW1lc1t2YWx1ZU5hbWVdID0gdmFsdWVEZWYubmFtZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs\n");
1665
1666/***/ }),
1667
1668/***/ "../../../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs":
1669/*!********************************************************************************************************************!*\
1670 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs ***!
1671 \********************************************************************************************************************/
1672/*! exports provided: UniqueFieldDefinitionNamesRule */
1673/***/ (function(module, __webpack_exports__, __webpack_require__) {
1674
1675"use strict";
1676eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueFieldDefinitionNamesRule\", function() { return UniqueFieldDefinitionNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n/**\n * Unique field definition names\n *\n * A GraphQL complex type is only valid if all its fields are uniquely named.\n */\nfunction UniqueFieldDefinitionNamesRule(context) {\n var schema = context.getSchema();\n var existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n var knownFieldNames = Object.create(null);\n return {\n InputObjectTypeDefinition: checkFieldUniqueness,\n InputObjectTypeExtension: checkFieldUniqueness,\n InterfaceTypeDefinition: checkFieldUniqueness,\n InterfaceTypeExtension: checkFieldUniqueness,\n ObjectTypeDefinition: checkFieldUniqueness,\n ObjectTypeExtension: checkFieldUniqueness\n };\n\n function checkFieldUniqueness(node) {\n var _node$fields;\n\n var typeName = node.name.value;\n\n if (!knownFieldNames[typeName]) {\n knownFieldNames[typeName] = Object.create(null);\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n\n\n var fieldNodes = (_node$fields = node.fields) !== null && _node$fields !== void 0 ? _node$fields : [];\n var fieldNames = knownFieldNames[typeName];\n\n for (var _i2 = 0; _i2 < fieldNodes.length; _i2++) {\n var fieldDef = fieldNodes[_i2];\n var fieldName = fieldDef.name.value;\n\n if (hasField(existingTypeMap[typeName], fieldName)) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"Field \\\"\".concat(typeName, \".\").concat(fieldName, \"\\\" already exists in the schema. It cannot also be defined in this type extension.\"), fieldDef.name));\n } else if (fieldNames[fieldName]) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"Field \\\"\".concat(typeName, \".\").concat(fieldName, \"\\\" can only be defined once.\"), [fieldNames[fieldName], fieldDef.name]));\n } else {\n fieldNames[fieldName] = fieldDef.name;\n }\n }\n\n return false;\n }\n}\n\nfunction hasField(type, fieldName) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isObjectType\"])(type) || Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isInterfaceType\"])(type) || Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"isInputObjectType\"])(type)) {\n return type.getFields()[fieldName] != null;\n }\n\n return false;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVGaWVsZERlZmluaXRpb25OYW1lc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVGaWVsZERlZmluaXRpb25OYW1lc1J1bGUubWpzPzZiMGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanNcIjtcbmltcG9ydCB7IGlzT2JqZWN0VHlwZSwgaXNJbnRlcmZhY2VUeXBlLCBpc0lucHV0T2JqZWN0VHlwZSB9IGZyb20gXCIuLi8uLi90eXBlL2RlZmluaXRpb24ubWpzXCI7XG5cbi8qKlxuICogVW5pcXVlIGZpZWxkIGRlZmluaXRpb24gbmFtZXNcbiAqXG4gKiBBIEdyYXBoUUwgY29tcGxleCB0eXBlIGlzIG9ubHkgdmFsaWQgaWYgYWxsIGl0cyBmaWVsZHMgYXJlIHVuaXF1ZWx5IG5hbWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVW5pcXVlRmllbGREZWZpbml0aW9uTmFtZXNSdWxlKGNvbnRleHQpIHtcbiAgdmFyIHNjaGVtYSA9IGNvbnRleHQuZ2V0U2NoZW1hKCk7XG4gIHZhciBleGlzdGluZ1R5cGVNYXAgPSBzY2hlbWEgPyBzY2hlbWEuZ2V0VHlwZU1hcCgpIDogT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIGtub3duRmllbGROYW1lcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiB7XG4gICAgSW5wdXRPYmplY3RUeXBlRGVmaW5pdGlvbjogY2hlY2tGaWVsZFVuaXF1ZW5lc3MsXG4gICAgSW5wdXRPYmplY3RUeXBlRXh0ZW5zaW9uOiBjaGVja0ZpZWxkVW5pcXVlbmVzcyxcbiAgICBJbnRlcmZhY2VUeXBlRGVmaW5pdGlvbjogY2hlY2tGaWVsZFVuaXF1ZW5lc3MsXG4gICAgSW50ZXJmYWNlVHlwZUV4dGVuc2lvbjogY2hlY2tGaWVsZFVuaXF1ZW5lc3MsXG4gICAgT2JqZWN0VHlwZURlZmluaXRpb246IGNoZWNrRmllbGRVbmlxdWVuZXNzLFxuICAgIE9iamVjdFR5cGVFeHRlbnNpb246IGNoZWNrRmllbGRVbmlxdWVuZXNzXG4gIH07XG5cbiAgZnVuY3Rpb24gY2hlY2tGaWVsZFVuaXF1ZW5lc3Mobm9kZSkge1xuICAgIHZhciBfbm9kZSRmaWVsZHM7XG5cbiAgICB2YXIgdHlwZU5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG5cbiAgICBpZiAoIWtub3duRmllbGROYW1lc1t0eXBlTmFtZV0pIHtcbiAgICAgIGtub3duRmllbGROYW1lc1t0eXBlTmFtZV0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIH0gLy8gaXN0YW5idWwgaWdub3JlIG5leHQgKFNlZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDMnKVxuXG5cbiAgICB2YXIgZmllbGROb2RlcyA9IChfbm9kZSRmaWVsZHMgPSBub2RlLmZpZWxkcykgIT09IG51bGwgJiYgX25vZGUkZmllbGRzICE9PSB2b2lkIDAgPyBfbm9kZSRmaWVsZHMgOiBbXTtcbiAgICB2YXIgZmllbGROYW1lcyA9IGtub3duRmllbGROYW1lc1t0eXBlTmFtZV07XG5cbiAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBmaWVsZE5vZGVzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgIHZhciBmaWVsZERlZiA9IGZpZWxkTm9kZXNbX2kyXTtcbiAgICAgIHZhciBmaWVsZE5hbWUgPSBmaWVsZERlZi5uYW1lLnZhbHVlO1xuXG4gICAgICBpZiAoaGFzRmllbGQoZXhpc3RpbmdUeXBlTWFwW3R5cGVOYW1lXSwgZmllbGROYW1lKSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJGaWVsZCBcXFwiXCIuY29uY2F0KHR5cGVOYW1lLCBcIi5cIikuY29uY2F0KGZpZWxkTmFtZSwgXCJcXFwiIGFscmVhZHkgZXhpc3RzIGluIHRoZSBzY2hlbWEuIEl0IGNhbm5vdCBhbHNvIGJlIGRlZmluZWQgaW4gdGhpcyB0eXBlIGV4dGVuc2lvbi5cIiksIGZpZWxkRGVmLm5hbWUpKTtcbiAgICAgIH0gZWxzZSBpZiAoZmllbGROYW1lc1tmaWVsZE5hbWVdKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcihcIkZpZWxkIFxcXCJcIi5jb25jYXQodHlwZU5hbWUsIFwiLlwiKS5jb25jYXQoZmllbGROYW1lLCBcIlxcXCIgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbmNlLlwiKSwgW2ZpZWxkTmFtZXNbZmllbGROYW1lXSwgZmllbGREZWYubmFtZV0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpZWxkTmFtZXNbZmllbGROYW1lXSA9IGZpZWxkRGVmLm5hbWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGhhc0ZpZWxkKHR5cGUsIGZpZWxkTmFtZSkge1xuICBpZiAoaXNPYmplY3RUeXBlKHR5cGUpIHx8IGlzSW50ZXJmYWNlVHlwZSh0eXBlKSB8fCBpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgIHJldHVybiB0eXBlLmdldEZpZWxkcygpW2ZpZWxkTmFtZV0gIT0gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs\n");
1677
1678/***/ }),
1679
1680/***/ "../../../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs":
1681/*!*************************************************************************************************************!*\
1682 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs ***!
1683 \*************************************************************************************************************/
1684/*! exports provided: UniqueFragmentNamesRule */
1685/***/ (function(module, __webpack_exports__, __webpack_require__) {
1686
1687"use strict";
1688eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueFragmentNamesRule\", function() { return UniqueFragmentNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique fragment names\n *\n * A GraphQL document is only valid if all defined fragments have unique names.\n */\nfunction UniqueFragmentNamesRule(context) {\n var knownFragmentNames = Object.create(null);\n return {\n OperationDefinition: function OperationDefinition() {\n return false;\n },\n FragmentDefinition: function FragmentDefinition(node) {\n var fragmentName = node.name.value;\n\n if (knownFragmentNames[fragmentName]) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"There can be only one fragment named \\\"\".concat(fragmentName, \"\\\".\"), [knownFragmentNames[fragmentName], node.name]));\n } else {\n knownFragmentNames[fragmentName] = node.name;\n }\n\n return false;\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVGcmFnbWVudE5hbWVzUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZUZyYWdtZW50TmFtZXNSdWxlLm1qcz83MjRjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5cbi8qKlxuICogVW5pcXVlIGZyYWdtZW50IG5hbWVzXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgYWxsIGRlZmluZWQgZnJhZ21lbnRzIGhhdmUgdW5pcXVlIG5hbWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVW5pcXVlRnJhZ21lbnROYW1lc1J1bGUoY29udGV4dCkge1xuICB2YXIga25vd25GcmFnbWVudE5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIHtcbiAgICBPcGVyYXRpb25EZWZpbml0aW9uOiBmdW5jdGlvbiBPcGVyYXRpb25EZWZpbml0aW9uKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgRnJhZ21lbnREZWZpbml0aW9uOiBmdW5jdGlvbiBGcmFnbWVudERlZmluaXRpb24obm9kZSkge1xuICAgICAgdmFyIGZyYWdtZW50TmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcblxuICAgICAgaWYgKGtub3duRnJhZ21lbnROYW1lc1tmcmFnbWVudE5hbWVdKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcihcIlRoZXJlIGNhbiBiZSBvbmx5IG9uZSBmcmFnbWVudCBuYW1lZCBcXFwiXCIuY29uY2F0KGZyYWdtZW50TmFtZSwgXCJcXFwiLlwiKSwgW2tub3duRnJhZ21lbnROYW1lc1tmcmFnbWVudE5hbWVdLCBub2RlLm5hbWVdKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrbm93bkZyYWdtZW50TmFtZXNbZnJhZ21lbnROYW1lXSA9IG5vZGUubmFtZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs\n");
1689
1690/***/ }),
1691
1692/***/ "../../../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs":
1693/*!***************************************************************************************************************!*\
1694 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs ***!
1695 \***************************************************************************************************************/
1696/*! exports provided: UniqueInputFieldNamesRule */
1697/***/ (function(module, __webpack_exports__, __webpack_require__) {
1698
1699"use strict";
1700eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueInputFieldNamesRule\", function() { return UniqueInputFieldNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique input field names\n *\n * A GraphQL input object value is only valid if all supplied fields are\n * uniquely named.\n */\nfunction UniqueInputFieldNamesRule(context) {\n var knownNameStack = [];\n var knownNames = Object.create(null);\n return {\n ObjectValue: {\n enter: function enter() {\n knownNameStack.push(knownNames);\n knownNames = Object.create(null);\n },\n leave: function leave() {\n knownNames = knownNameStack.pop();\n }\n },\n ObjectField: function ObjectField(node) {\n var fieldName = node.name.value;\n\n if (knownNames[fieldName]) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"There can be only one input field named \\\"\".concat(fieldName, \"\\\".\"), [knownNames[fieldName], node.name]));\n } else {\n knownNames[fieldName] = node.name;\n }\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVJbnB1dEZpZWxkTmFtZXNSdWxlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvVW5pcXVlSW5wdXRGaWVsZE5hbWVzUnVsZS5tanM/Yjc1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qc1wiO1xuXG4vKipcbiAqIFVuaXF1ZSBpbnB1dCBmaWVsZCBuYW1lc1xuICpcbiAqIEEgR3JhcGhRTCBpbnB1dCBvYmplY3QgdmFsdWUgaXMgb25seSB2YWxpZCBpZiBhbGwgc3VwcGxpZWQgZmllbGRzIGFyZVxuICogdW5pcXVlbHkgbmFtZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBVbmlxdWVJbnB1dEZpZWxkTmFtZXNSdWxlKGNvbnRleHQpIHtcbiAgdmFyIGtub3duTmFtZVN0YWNrID0gW107XG4gIHZhciBrbm93bk5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIHtcbiAgICBPYmplY3RWYWx1ZToge1xuICAgICAgZW50ZXI6IGZ1bmN0aW9uIGVudGVyKCkge1xuICAgICAgICBrbm93bk5hbWVTdGFjay5wdXNoKGtub3duTmFtZXMpO1xuICAgICAgICBrbm93bk5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIH0sXG4gICAgICBsZWF2ZTogZnVuY3Rpb24gbGVhdmUoKSB7XG4gICAgICAgIGtub3duTmFtZXMgPSBrbm93bk5hbWVTdGFjay5wb3AoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIE9iamVjdEZpZWxkOiBmdW5jdGlvbiBPYmplY3RGaWVsZChub2RlKSB7XG4gICAgICB2YXIgZmllbGROYW1lID0gbm9kZS5uYW1lLnZhbHVlO1xuXG4gICAgICBpZiAoa25vd25OYW1lc1tmaWVsZE5hbWVdKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcihcIlRoZXJlIGNhbiBiZSBvbmx5IG9uZSBpbnB1dCBmaWVsZCBuYW1lZCBcXFwiXCIuY29uY2F0KGZpZWxkTmFtZSwgXCJcXFwiLlwiKSwgW2tub3duTmFtZXNbZmllbGROYW1lXSwgbm9kZS5uYW1lXSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAga25vd25OYW1lc1tmaWVsZE5hbWVdID0gbm9kZS5uYW1lO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs\n");
1701
1702/***/ }),
1703
1704/***/ "../../../node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs":
1705/*!**************************************************************************************************************!*\
1706 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs ***!
1707 \**************************************************************************************************************/
1708/*! exports provided: UniqueOperationNamesRule */
1709/***/ (function(module, __webpack_exports__, __webpack_require__) {
1710
1711"use strict";
1712eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueOperationNamesRule\", function() { return UniqueOperationNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique operation names\n *\n * A GraphQL document is only valid if all defined operations have unique names.\n */\nfunction UniqueOperationNamesRule(context) {\n var knownOperationNames = Object.create(null);\n return {\n OperationDefinition: function OperationDefinition(node) {\n var operationName = node.name;\n\n if (operationName) {\n if (knownOperationNames[operationName.value]) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"There can be only one operation named \\\"\".concat(operationName.value, \"\\\".\"), [knownOperationNames[operationName.value], operationName]));\n } else {\n knownOperationNames[operationName.value] = operationName;\n }\n }\n\n return false;\n },\n FragmentDefinition: function FragmentDefinition() {\n return false;\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVPcGVyYXRpb25OYW1lc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVPcGVyYXRpb25OYW1lc1J1bGUubWpzPzY5ZmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanNcIjtcblxuLyoqXG4gKiBVbmlxdWUgb3BlcmF0aW9uIG5hbWVzXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgYWxsIGRlZmluZWQgb3BlcmF0aW9ucyBoYXZlIHVuaXF1ZSBuYW1lcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVuaXF1ZU9wZXJhdGlvbk5hbWVzUnVsZShjb250ZXh0KSB7XG4gIHZhciBrbm93bk9wZXJhdGlvbk5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIHtcbiAgICBPcGVyYXRpb25EZWZpbml0aW9uOiBmdW5jdGlvbiBPcGVyYXRpb25EZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgIHZhciBvcGVyYXRpb25OYW1lID0gbm9kZS5uYW1lO1xuXG4gICAgICBpZiAob3BlcmF0aW9uTmFtZSkge1xuICAgICAgICBpZiAoa25vd25PcGVyYXRpb25OYW1lc1tvcGVyYXRpb25OYW1lLnZhbHVlXSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcihcIlRoZXJlIGNhbiBiZSBvbmx5IG9uZSBvcGVyYXRpb24gbmFtZWQgXFxcIlwiLmNvbmNhdChvcGVyYXRpb25OYW1lLnZhbHVlLCBcIlxcXCIuXCIpLCBba25vd25PcGVyYXRpb25OYW1lc1tvcGVyYXRpb25OYW1lLnZhbHVlXSwgb3BlcmF0aW9uTmFtZV0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBrbm93bk9wZXJhdGlvbk5hbWVzW29wZXJhdGlvbk5hbWUudmFsdWVdID0gb3BlcmF0aW9uTmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcbiAgICBGcmFnbWVudERlZmluaXRpb246IGZ1bmN0aW9uIEZyYWdtZW50RGVmaW5pdGlvbigpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs\n");
1713
1714/***/ }),
1715
1716/***/ "../../../node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs":
1717/*!**************************************************************************************************************!*\
1718 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs ***!
1719 \**************************************************************************************************************/
1720/*! exports provided: UniqueOperationTypesRule */
1721/***/ (function(module, __webpack_exports__, __webpack_require__) {
1722
1723"use strict";
1724eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueOperationTypesRule\", function() { return UniqueOperationTypesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique operation types\n *\n * A GraphQL document is only valid if it has only one type per operation.\n */\nfunction UniqueOperationTypesRule(context) {\n var schema = context.getSchema();\n var definedOperationTypes = Object.create(null);\n var existingOperationTypes = schema ? {\n query: schema.getQueryType(),\n mutation: schema.getMutationType(),\n subscription: schema.getSubscriptionType()\n } : {};\n return {\n SchemaDefinition: checkOperationTypes,\n SchemaExtension: checkOperationTypes\n };\n\n function checkOperationTypes(node) {\n var _node$operationTypes;\n\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n var operationTypesNodes = (_node$operationTypes = node.operationTypes) !== null && _node$operationTypes !== void 0 ? _node$operationTypes : [];\n\n for (var _i2 = 0; _i2 < operationTypesNodes.length; _i2++) {\n var operationType = operationTypesNodes[_i2];\n var operation = operationType.operation;\n var alreadyDefinedOperationType = definedOperationTypes[operation];\n\n if (existingOperationTypes[operation]) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"Type for \".concat(operation, \" already defined in the schema. It cannot be redefined.\"), operationType));\n } else if (alreadyDefinedOperationType) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"There can be only one \".concat(operation, \" type in schema.\"), [alreadyDefinedOperationType, operationType]));\n } else {\n definedOperationTypes[operation] = operationType;\n }\n }\n\n return false;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVPcGVyYXRpb25UeXBlc1J1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVPcGVyYXRpb25UeXBlc1J1bGUubWpzPzcyOTUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanNcIjtcblxuLyoqXG4gKiBVbmlxdWUgb3BlcmF0aW9uIHR5cGVzXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgaXQgaGFzIG9ubHkgb25lIHR5cGUgcGVyIG9wZXJhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVuaXF1ZU9wZXJhdGlvblR5cGVzUnVsZShjb250ZXh0KSB7XG4gIHZhciBzY2hlbWEgPSBjb250ZXh0LmdldFNjaGVtYSgpO1xuICB2YXIgZGVmaW5lZE9wZXJhdGlvblR5cGVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIGV4aXN0aW5nT3BlcmF0aW9uVHlwZXMgPSBzY2hlbWEgPyB7XG4gICAgcXVlcnk6IHNjaGVtYS5nZXRRdWVyeVR5cGUoKSxcbiAgICBtdXRhdGlvbjogc2NoZW1hLmdldE11dGF0aW9uVHlwZSgpLFxuICAgIHN1YnNjcmlwdGlvbjogc2NoZW1hLmdldFN1YnNjcmlwdGlvblR5cGUoKVxuICB9IDoge307XG4gIHJldHVybiB7XG4gICAgU2NoZW1hRGVmaW5pdGlvbjogY2hlY2tPcGVyYXRpb25UeXBlcyxcbiAgICBTY2hlbWFFeHRlbnNpb246IGNoZWNrT3BlcmF0aW9uVHlwZXNcbiAgfTtcblxuICBmdW5jdGlvbiBjaGVja09wZXJhdGlvblR5cGVzKG5vZGUpIHtcbiAgICB2YXIgX25vZGUkb3BlcmF0aW9uVHlwZXM7XG5cbiAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoU2VlOiAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwMycpXG4gICAgdmFyIG9wZXJhdGlvblR5cGVzTm9kZXMgPSAoX25vZGUkb3BlcmF0aW9uVHlwZXMgPSBub2RlLm9wZXJhdGlvblR5cGVzKSAhPT0gbnVsbCAmJiBfbm9kZSRvcGVyYXRpb25UeXBlcyAhPT0gdm9pZCAwID8gX25vZGUkb3BlcmF0aW9uVHlwZXMgOiBbXTtcblxuICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IG9wZXJhdGlvblR5cGVzTm9kZXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgdmFyIG9wZXJhdGlvblR5cGUgPSBvcGVyYXRpb25UeXBlc05vZGVzW19pMl07XG4gICAgICB2YXIgb3BlcmF0aW9uID0gb3BlcmF0aW9uVHlwZS5vcGVyYXRpb247XG4gICAgICB2YXIgYWxyZWFkeURlZmluZWRPcGVyYXRpb25UeXBlID0gZGVmaW5lZE9wZXJhdGlvblR5cGVzW29wZXJhdGlvbl07XG5cbiAgICAgIGlmIChleGlzdGluZ09wZXJhdGlvblR5cGVzW29wZXJhdGlvbl0pIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiVHlwZSBmb3IgXCIuY29uY2F0KG9wZXJhdGlvbiwgXCIgYWxyZWFkeSBkZWZpbmVkIGluIHRoZSBzY2hlbWEuIEl0IGNhbm5vdCBiZSByZWRlZmluZWQuXCIpLCBvcGVyYXRpb25UeXBlKSk7XG4gICAgICB9IGVsc2UgaWYgKGFscmVhZHlEZWZpbmVkT3BlcmF0aW9uVHlwZSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJUaGVyZSBjYW4gYmUgb25seSBvbmUgXCIuY29uY2F0KG9wZXJhdGlvbiwgXCIgdHlwZSBpbiBzY2hlbWEuXCIpLCBbYWxyZWFkeURlZmluZWRPcGVyYXRpb25UeXBlLCBvcGVyYXRpb25UeXBlXSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVmaW5lZE9wZXJhdGlvblR5cGVzW29wZXJhdGlvbl0gPSBvcGVyYXRpb25UeXBlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs\n");
1725
1726/***/ }),
1727
1728/***/ "../../../node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs":
1729/*!*********************************************************************************************************!*\
1730 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs ***!
1731 \*********************************************************************************************************/
1732/*! exports provided: UniqueTypeNamesRule */
1733/***/ (function(module, __webpack_exports__, __webpack_require__) {
1734
1735"use strict";
1736eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueTypeNamesRule\", function() { return UniqueTypeNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique type names\n *\n * A GraphQL document is only valid if all defined types have unique names.\n */\nfunction UniqueTypeNamesRule(context) {\n var knownTypeNames = Object.create(null);\n var schema = context.getSchema();\n return {\n ScalarTypeDefinition: checkTypeName,\n ObjectTypeDefinition: checkTypeName,\n InterfaceTypeDefinition: checkTypeName,\n UnionTypeDefinition: checkTypeName,\n EnumTypeDefinition: checkTypeName,\n InputObjectTypeDefinition: checkTypeName\n };\n\n function checkTypeName(node) {\n var typeName = node.name.value;\n\n if (schema === null || schema === void 0 ? void 0 : schema.getType(typeName)) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"Type \\\"\".concat(typeName, \"\\\" already exists in the schema. It cannot also be defined in this type definition.\"), node.name));\n return;\n }\n\n if (knownTypeNames[typeName]) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"There can be only one type named \\\"\".concat(typeName, \"\\\".\"), [knownTypeNames[typeName], node.name]));\n } else {\n knownTypeNames[typeName] = node.name;\n }\n\n return false;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVUeXBlTmFtZXNSdWxlLm1qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvVW5pcXVlVHlwZU5hbWVzUnVsZS5tanM/ZDBmZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qc1wiO1xuXG4vKipcbiAqIFVuaXF1ZSB0eXBlIG5hbWVzXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgYWxsIGRlZmluZWQgdHlwZXMgaGF2ZSB1bmlxdWUgbmFtZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBVbmlxdWVUeXBlTmFtZXNSdWxlKGNvbnRleHQpIHtcbiAgdmFyIGtub3duVHlwZU5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIHNjaGVtYSA9IGNvbnRleHQuZ2V0U2NoZW1hKCk7XG4gIHJldHVybiB7XG4gICAgU2NhbGFyVHlwZURlZmluaXRpb246IGNoZWNrVHlwZU5hbWUsXG4gICAgT2JqZWN0VHlwZURlZmluaXRpb246IGNoZWNrVHlwZU5hbWUsXG4gICAgSW50ZXJmYWNlVHlwZURlZmluaXRpb246IGNoZWNrVHlwZU5hbWUsXG4gICAgVW5pb25UeXBlRGVmaW5pdGlvbjogY2hlY2tUeXBlTmFtZSxcbiAgICBFbnVtVHlwZURlZmluaXRpb246IGNoZWNrVHlwZU5hbWUsXG4gICAgSW5wdXRPYmplY3RUeXBlRGVmaW5pdGlvbjogY2hlY2tUeXBlTmFtZVxuICB9O1xuXG4gIGZ1bmN0aW9uIGNoZWNrVHlwZU5hbWUobm9kZSkge1xuICAgIHZhciB0eXBlTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcblxuICAgIGlmIChzY2hlbWEgPT09IG51bGwgfHwgc2NoZW1hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzY2hlbWEuZ2V0VHlwZSh0eXBlTmFtZSkpIHtcbiAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcihcIlR5cGUgXFxcIlwiLmNvbmNhdCh0eXBlTmFtZSwgXCJcXFwiIGFscmVhZHkgZXhpc3RzIGluIHRoZSBzY2hlbWEuIEl0IGNhbm5vdCBhbHNvIGJlIGRlZmluZWQgaW4gdGhpcyB0eXBlIGRlZmluaXRpb24uXCIpLCBub2RlLm5hbWUpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoa25vd25UeXBlTmFtZXNbdHlwZU5hbWVdKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJUaGVyZSBjYW4gYmUgb25seSBvbmUgdHlwZSBuYW1lZCBcXFwiXCIuY29uY2F0KHR5cGVOYW1lLCBcIlxcXCIuXCIpLCBba25vd25UeXBlTmFtZXNbdHlwZU5hbWVdLCBub2RlLm5hbWVdKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtub3duVHlwZU5hbWVzW3R5cGVOYW1lXSA9IG5vZGUubmFtZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs\n");
1737
1738/***/ }),
1739
1740/***/ "../../../node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs":
1741/*!*************************************************************************************************************!*\
1742 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs ***!
1743 \*************************************************************************************************************/
1744/*! exports provided: UniqueVariableNamesRule */
1745/***/ (function(module, __webpack_exports__, __webpack_require__) {
1746
1747"use strict";
1748eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UniqueVariableNamesRule\", function() { return UniqueVariableNamesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique variable names\n *\n * A GraphQL operation is only valid if all its variables are uniquely named.\n */\nfunction UniqueVariableNamesRule(context) {\n var knownVariableNames = Object.create(null);\n return {\n OperationDefinition: function OperationDefinition() {\n knownVariableNames = Object.create(null);\n },\n VariableDefinition: function VariableDefinition(node) {\n var variableName = node.variable.name.value;\n\n if (knownVariableNames[variableName]) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"There can be only one variable named \\\"$\".concat(variableName, \"\\\".\"), [knownVariableNames[variableName], node.variable.name]));\n } else {\n knownVariableNames[variableName] = node.variable.name;\n }\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVWYXJpYWJsZU5hbWVzUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZVZhcmlhYmxlTmFtZXNSdWxlLm1qcz9lN2RlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5cbi8qKlxuICogVW5pcXVlIHZhcmlhYmxlIG5hbWVzXG4gKlxuICogQSBHcmFwaFFMIG9wZXJhdGlvbiBpcyBvbmx5IHZhbGlkIGlmIGFsbCBpdHMgdmFyaWFibGVzIGFyZSB1bmlxdWVseSBuYW1lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVuaXF1ZVZhcmlhYmxlTmFtZXNSdWxlKGNvbnRleHQpIHtcbiAgdmFyIGtub3duVmFyaWFibGVOYW1lcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiB7XG4gICAgT3BlcmF0aW9uRGVmaW5pdGlvbjogZnVuY3Rpb24gT3BlcmF0aW9uRGVmaW5pdGlvbigpIHtcbiAgICAgIGtub3duVmFyaWFibGVOYW1lcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfSxcbiAgICBWYXJpYWJsZURlZmluaXRpb246IGZ1bmN0aW9uIFZhcmlhYmxlRGVmaW5pdGlvbihub2RlKSB7XG4gICAgICB2YXIgdmFyaWFibGVOYW1lID0gbm9kZS52YXJpYWJsZS5uYW1lLnZhbHVlO1xuXG4gICAgICBpZiAoa25vd25WYXJpYWJsZU5hbWVzW3ZhcmlhYmxlTmFtZV0pIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiVGhlcmUgY2FuIGJlIG9ubHkgb25lIHZhcmlhYmxlIG5hbWVkIFxcXCIkXCIuY29uY2F0KHZhcmlhYmxlTmFtZSwgXCJcXFwiLlwiKSwgW2tub3duVmFyaWFibGVOYW1lc1t2YXJpYWJsZU5hbWVdLCBub2RlLnZhcmlhYmxlLm5hbWVdKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrbm93blZhcmlhYmxlTmFtZXNbdmFyaWFibGVOYW1lXSA9IG5vZGUudmFyaWFibGUubmFtZTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs\n");
1749
1750/***/ }),
1751
1752/***/ "../../../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs":
1753/*!*************************************************************************************************************!*\
1754 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs ***!
1755 \*************************************************************************************************************/
1756/*! exports provided: ValuesOfCorrectTypeRule */
1757/***/ (function(module, __webpack_exports__, __webpack_require__) {
1758
1759"use strict";
1760eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ValuesOfCorrectTypeRule\", function() { return ValuesOfCorrectTypeRule; });\n/* harmony import */ var _polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../polyfills/objectValues.mjs */ \"../../../node_modules/graphql/polyfills/objectValues.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../jsutils/suggestionList.mjs */ \"../../../node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n\n\n\n/**\n * Value literals of correct type\n *\n * A GraphQL document is only valid if all value literals are of the type\n * expected at their position.\n */\nfunction ValuesOfCorrectTypeRule(context) {\n return {\n ListValue: function ListValue(node) {\n // Note: TypeInfo will traverse into a list's item type, so look to the\n // parent input type to check if it is a list.\n var type = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"getNullableType\"])(context.getParentInputType());\n\n if (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isListType\"])(type)) {\n isValidValueNode(context, node);\n return false; // Don't traverse further.\n }\n },\n ObjectValue: function ObjectValue(node) {\n var type = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"getNamedType\"])(context.getInputType());\n\n if (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInputObjectType\"])(type)) {\n isValidValueNode(context, node);\n return false; // Don't traverse further.\n } // Ensure every required field exists.\n\n\n var fieldNodeMap = Object(_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(node.fields, function (field) {\n return field.name.value;\n });\n\n for (var _i2 = 0, _objectValues2 = Object(_polyfills_objectValues_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(type.getFields()); _i2 < _objectValues2.length; _i2++) {\n var fieldDef = _objectValues2[_i2];\n var fieldNode = fieldNodeMap[fieldDef.name];\n\n if (!fieldNode && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isRequiredInputField\"])(fieldDef)) {\n var typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(fieldDef.type);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLError\"](\"Field \\\"\".concat(type.name, \".\").concat(fieldDef.name, \"\\\" of required type \\\"\").concat(typeStr, \"\\\" was not provided.\"), node));\n }\n }\n },\n ObjectField: function ObjectField(node) {\n var parentType = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"getNamedType\"])(context.getParentInputType());\n var fieldType = context.getInputType();\n\n if (!fieldType && Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isInputObjectType\"])(parentType)) {\n var suggestions = Object(_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(node.name.value, Object.keys(parentType.getFields()));\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLError\"](\"Field \\\"\".concat(node.name.value, \"\\\" is not defined by type \\\"\").concat(parentType.name, \"\\\".\") + Object(_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(suggestions), node));\n }\n },\n NullValue: function NullValue(node) {\n var type = context.getInputType();\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isNonNullType\"])(type)) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLError\"](\"Expected value of type \\\"\".concat(Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(type), \"\\\", found \").concat(Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__[\"print\"])(node), \".\"), node));\n }\n },\n EnumValue: function EnumValue(node) {\n return isValidValueNode(context, node);\n },\n IntValue: function IntValue(node) {\n return isValidValueNode(context, node);\n },\n FloatValue: function FloatValue(node) {\n return isValidValueNode(context, node);\n },\n StringValue: function StringValue(node) {\n return isValidValueNode(context, node);\n },\n BooleanValue: function BooleanValue(node) {\n return isValidValueNode(context, node);\n }\n };\n}\n/**\n * Any value literal may be a valid representation of a Scalar, depending on\n * that scalar type.\n */\n\nfunction isValidValueNode(context, node) {\n // Report any error at the full type expected by the location.\n var locationType = context.getInputType();\n\n if (!locationType) {\n return;\n }\n\n var type = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"getNamedType\"])(locationType);\n\n if (!Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__[\"isLeafType\"])(type)) {\n var typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(locationType);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLError\"](\"Expected value of type \\\"\".concat(typeStr, \"\\\", found \").concat(Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__[\"print\"])(node), \".\"), node));\n return;\n } // Scalars and Enums determine if a literal value is valid via parseLiteral(),\n // which may throw or return an invalid value to indicate failure.\n\n\n try {\n var parseResult = type.parseLiteral(node, undefined\n /* variables */\n );\n\n if (parseResult === undefined) {\n var _typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(locationType);\n\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLError\"](\"Expected value of type \\\"\".concat(_typeStr, \"\\\", found \").concat(Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__[\"print\"])(node), \".\"), node));\n }\n } catch (error) {\n var _typeStr2 = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(locationType);\n\n if (error instanceof _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLError\"]) {\n context.reportError(error);\n } else {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_5__[\"GraphQLError\"](\"Expected value of type \\\"\".concat(_typeStr2, \"\\\", found \").concat(Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__[\"print\"])(node), \"; \") + error.message, node, undefined, undefined, undefined, error));\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9WYWx1ZXNPZkNvcnJlY3RUeXBlUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1ZhbHVlc09mQ29ycmVjdFR5cGVSdWxlLm1qcz9lOGYxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBvYmplY3RWYWx1ZXMgZnJvbSBcIi4uLy4uL3BvbHlmaWxscy9vYmplY3RWYWx1ZXMubWpzXCI7XG5pbXBvcnQga2V5TWFwIGZyb20gXCIuLi8uLi9qc3V0aWxzL2tleU1hcC5tanNcIjtcbmltcG9ydCBpbnNwZWN0IGZyb20gXCIuLi8uLi9qc3V0aWxzL2luc3BlY3QubWpzXCI7XG5pbXBvcnQgZGlkWW91TWVhbiBmcm9tIFwiLi4vLi4vanN1dGlscy9kaWRZb3VNZWFuLm1qc1wiO1xuaW1wb3J0IHN1Z2dlc3Rpb25MaXN0IGZyb20gXCIuLi8uLi9qc3V0aWxzL3N1Z2dlc3Rpb25MaXN0Lm1qc1wiO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanNcIjtcbmltcG9ydCB7IHByaW50IH0gZnJvbSBcIi4uLy4uL2xhbmd1YWdlL3ByaW50ZXIubWpzXCI7XG5pbXBvcnQgeyBpc0xlYWZUeXBlLCBpc0lucHV0T2JqZWN0VHlwZSwgaXNMaXN0VHlwZSwgaXNOb25OdWxsVHlwZSwgaXNSZXF1aXJlZElucHV0RmllbGQsIGdldE51bGxhYmxlVHlwZSwgZ2V0TmFtZWRUeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGUvZGVmaW5pdGlvbi5tanNcIjtcblxuLyoqXG4gKiBWYWx1ZSBsaXRlcmFscyBvZiBjb3JyZWN0IHR5cGVcbiAqXG4gKiBBIEdyYXBoUUwgZG9jdW1lbnQgaXMgb25seSB2YWxpZCBpZiBhbGwgdmFsdWUgbGl0ZXJhbHMgYXJlIG9mIHRoZSB0eXBlXG4gKiBleHBlY3RlZCBhdCB0aGVpciBwb3NpdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFZhbHVlc09mQ29ycmVjdFR5cGVSdWxlKGNvbnRleHQpIHtcbiAgcmV0dXJuIHtcbiAgICBMaXN0VmFsdWU6IGZ1bmN0aW9uIExpc3RWYWx1ZShub2RlKSB7XG4gICAgICAvLyBOb3RlOiBUeXBlSW5mbyB3aWxsIHRyYXZlcnNlIGludG8gYSBsaXN0J3MgaXRlbSB0eXBlLCBzbyBsb29rIHRvIHRoZVxuICAgICAgLy8gcGFyZW50IGlucHV0IHR5cGUgdG8gY2hlY2sgaWYgaXQgaXMgYSBsaXN0LlxuICAgICAgdmFyIHR5cGUgPSBnZXROdWxsYWJsZVR5cGUoY29udGV4dC5nZXRQYXJlbnRJbnB1dFR5cGUoKSk7XG5cbiAgICAgIGlmICghaXNMaXN0VHlwZSh0eXBlKSkge1xuICAgICAgICBpc1ZhbGlkVmFsdWVOb2RlKGNvbnRleHQsIG5vZGUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7IC8vIERvbid0IHRyYXZlcnNlIGZ1cnRoZXIuXG4gICAgICB9XG4gICAgfSxcbiAgICBPYmplY3RWYWx1ZTogZnVuY3Rpb24gT2JqZWN0VmFsdWUobm9kZSkge1xuICAgICAgdmFyIHR5cGUgPSBnZXROYW1lZFR5cGUoY29udGV4dC5nZXRJbnB1dFR5cGUoKSk7XG5cbiAgICAgIGlmICghaXNJbnB1dE9iamVjdFR5cGUodHlwZSkpIHtcbiAgICAgICAgaXNWYWxpZFZhbHVlTm9kZShjb250ZXh0LCBub2RlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBEb24ndCB0cmF2ZXJzZSBmdXJ0aGVyLlxuICAgICAgfSAvLyBFbnN1cmUgZXZlcnkgcmVxdWlyZWQgZmllbGQgZXhpc3RzLlxuXG5cbiAgICAgIHZhciBmaWVsZE5vZGVNYXAgPSBrZXlNYXAobm9kZS5maWVsZHMsIGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgICByZXR1cm4gZmllbGQubmFtZS52YWx1ZTtcbiAgICAgIH0pO1xuXG4gICAgICBmb3IgKHZhciBfaTIgPSAwLCBfb2JqZWN0VmFsdWVzMiA9IG9iamVjdFZhbHVlcyh0eXBlLmdldEZpZWxkcygpKTsgX2kyIDwgX29iamVjdFZhbHVlczIubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICB2YXIgZmllbGREZWYgPSBfb2JqZWN0VmFsdWVzMltfaTJdO1xuICAgICAgICB2YXIgZmllbGROb2RlID0gZmllbGROb2RlTWFwW2ZpZWxkRGVmLm5hbWVdO1xuXG4gICAgICAgIGlmICghZmllbGROb2RlICYmIGlzUmVxdWlyZWRJbnB1dEZpZWxkKGZpZWxkRGVmKSkge1xuICAgICAgICAgIHZhciB0eXBlU3RyID0gaW5zcGVjdChmaWVsZERlZi50eXBlKTtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJGaWVsZCBcXFwiXCIuY29uY2F0KHR5cGUubmFtZSwgXCIuXCIpLmNvbmNhdChmaWVsZERlZi5uYW1lLCBcIlxcXCIgb2YgcmVxdWlyZWQgdHlwZSBcXFwiXCIpLmNvbmNhdCh0eXBlU3RyLCBcIlxcXCIgd2FzIG5vdCBwcm92aWRlZC5cIiksIG5vZGUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgT2JqZWN0RmllbGQ6IGZ1bmN0aW9uIE9iamVjdEZpZWxkKG5vZGUpIHtcbiAgICAgIHZhciBwYXJlbnRUeXBlID0gZ2V0TmFtZWRUeXBlKGNvbnRleHQuZ2V0UGFyZW50SW5wdXRUeXBlKCkpO1xuICAgICAgdmFyIGZpZWxkVHlwZSA9IGNvbnRleHQuZ2V0SW5wdXRUeXBlKCk7XG5cbiAgICAgIGlmICghZmllbGRUeXBlICYmIGlzSW5wdXRPYmplY3RUeXBlKHBhcmVudFR5cGUpKSB7XG4gICAgICAgIHZhciBzdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25MaXN0KG5vZGUubmFtZS52YWx1ZSwgT2JqZWN0LmtleXMocGFyZW50VHlwZS5nZXRGaWVsZHMoKSkpO1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJGaWVsZCBcXFwiXCIuY29uY2F0KG5vZGUubmFtZS52YWx1ZSwgXCJcXFwiIGlzIG5vdCBkZWZpbmVkIGJ5IHR5cGUgXFxcIlwiKS5jb25jYXQocGFyZW50VHlwZS5uYW1lLCBcIlxcXCIuXCIpICsgZGlkWW91TWVhbihzdWdnZXN0aW9ucyksIG5vZGUpKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIE51bGxWYWx1ZTogZnVuY3Rpb24gTnVsbFZhbHVlKG5vZGUpIHtcbiAgICAgIHZhciB0eXBlID0gY29udGV4dC5nZXRJbnB1dFR5cGUoKTtcblxuICAgICAgaWYgKGlzTm9uTnVsbFR5cGUodHlwZSkpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiRXhwZWN0ZWQgdmFsdWUgb2YgdHlwZSBcXFwiXCIuY29uY2F0KGluc3BlY3QodHlwZSksIFwiXFxcIiwgZm91bmQgXCIpLmNvbmNhdChwcmludChub2RlKSwgXCIuXCIpLCBub2RlKSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBFbnVtVmFsdWU6IGZ1bmN0aW9uIEVudW1WYWx1ZShub2RlKSB7XG4gICAgICByZXR1cm4gaXNWYWxpZFZhbHVlTm9kZShjb250ZXh0LCBub2RlKTtcbiAgICB9LFxuICAgIEludFZhbHVlOiBmdW5jdGlvbiBJbnRWYWx1ZShub2RlKSB7XG4gICAgICByZXR1cm4gaXNWYWxpZFZhbHVlTm9kZShjb250ZXh0LCBub2RlKTtcbiAgICB9LFxuICAgIEZsb2F0VmFsdWU6IGZ1bmN0aW9uIEZsb2F0VmFsdWUobm9kZSkge1xuICAgICAgcmV0dXJuIGlzVmFsaWRWYWx1ZU5vZGUoY29udGV4dCwgbm9kZSk7XG4gICAgfSxcbiAgICBTdHJpbmdWYWx1ZTogZnVuY3Rpb24gU3RyaW5nVmFsdWUobm9kZSkge1xuICAgICAgcmV0dXJuIGlzVmFsaWRWYWx1ZU5vZGUoY29udGV4dCwgbm9kZSk7XG4gICAgfSxcbiAgICBCb29sZWFuVmFsdWU6IGZ1bmN0aW9uIEJvb2xlYW5WYWx1ZShub2RlKSB7XG4gICAgICByZXR1cm4gaXNWYWxpZFZhbHVlTm9kZShjb250ZXh0LCBub2RlKTtcbiAgICB9XG4gIH07XG59XG4vKipcbiAqIEFueSB2YWx1ZSBsaXRlcmFsIG1heSBiZSBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIGEgU2NhbGFyLCBkZXBlbmRpbmcgb25cbiAqIHRoYXQgc2NhbGFyIHR5cGUuXG4gKi9cblxuZnVuY3Rpb24gaXNWYWxpZFZhbHVlTm9kZShjb250ZXh0LCBub2RlKSB7XG4gIC8vIFJlcG9ydCBhbnkgZXJyb3IgYXQgdGhlIGZ1bGwgdHlwZSBleHBlY3RlZCBieSB0aGUgbG9jYXRpb24uXG4gIHZhciBsb2NhdGlvblR5cGUgPSBjb250ZXh0LmdldElucHV0VHlwZSgpO1xuXG4gIGlmICghbG9jYXRpb25UeXBlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHR5cGUgPSBnZXROYW1lZFR5cGUobG9jYXRpb25UeXBlKTtcblxuICBpZiAoIWlzTGVhZlR5cGUodHlwZSkpIHtcbiAgICB2YXIgdHlwZVN0ciA9IGluc3BlY3QobG9jYXRpb25UeXBlKTtcbiAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJFeHBlY3RlZCB2YWx1ZSBvZiB0eXBlIFxcXCJcIi5jb25jYXQodHlwZVN0ciwgXCJcXFwiLCBmb3VuZCBcIikuY29uY2F0KHByaW50KG5vZGUpLCBcIi5cIiksIG5vZGUpKTtcbiAgICByZXR1cm47XG4gIH0gLy8gU2NhbGFycyBhbmQgRW51bXMgZGV0ZXJtaW5lIGlmIGEgbGl0ZXJhbCB2YWx1ZSBpcyB2YWxpZCB2aWEgcGFyc2VMaXRlcmFsKCksXG4gIC8vIHdoaWNoIG1heSB0aHJvdyBvciByZXR1cm4gYW4gaW52YWxpZCB2YWx1ZSB0byBpbmRpY2F0ZSBmYWlsdXJlLlxuXG5cbiAgdHJ5IHtcbiAgICB2YXIgcGFyc2VSZXN1bHQgPSB0eXBlLnBhcnNlTGl0ZXJhbChub2RlLCB1bmRlZmluZWRcbiAgICAvKiB2YXJpYWJsZXMgKi9cbiAgICApO1xuXG4gICAgaWYgKHBhcnNlUmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBfdHlwZVN0ciA9IGluc3BlY3QobG9jYXRpb25UeXBlKTtcblxuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiRXhwZWN0ZWQgdmFsdWUgb2YgdHlwZSBcXFwiXCIuY29uY2F0KF90eXBlU3RyLCBcIlxcXCIsIGZvdW5kIFwiKS5jb25jYXQocHJpbnQobm9kZSksIFwiLlwiKSwgbm9kZSkpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB2YXIgX3R5cGVTdHIyID0gaW5zcGVjdChsb2NhdGlvblR5cGUpO1xuXG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgR3JhcGhRTEVycm9yKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKGVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiRXhwZWN0ZWQgdmFsdWUgb2YgdHlwZSBcXFwiXCIuY29uY2F0KF90eXBlU3RyMiwgXCJcXFwiLCBmb3VuZCBcIikuY29uY2F0KHByaW50KG5vZGUpLCBcIjsgXCIpICsgZXJyb3IubWVzc2FnZSwgbm9kZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZXJyb3IpKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs\n");
1761
1762/***/ }),
1763
1764/***/ "../../../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs":
1765/*!****************************************************************************************************************!*\
1766 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs ***!
1767 \****************************************************************************************************************/
1768/*! exports provided: VariablesAreInputTypesRule */
1769/***/ (function(module, __webpack_exports__, __webpack_require__) {
1770
1771"use strict";
1772eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VariablesAreInputTypesRule\", function() { return VariablesAreInputTypesRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n\n\n\n\n\n/**\n * Variables are input types\n *\n * A GraphQL operation is only valid if all the variables it defines are of\n * input types (scalar, enum, or input object).\n */\nfunction VariablesAreInputTypesRule(context) {\n return {\n VariableDefinition: function VariableDefinition(node) {\n var type = Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_3__[\"typeFromAST\"])(context.getSchema(), node.type);\n\n if (type && !Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isInputType\"])(type)) {\n var variableName = node.variable.name.value;\n var typeName = Object(_language_printer_mjs__WEBPACK_IMPORTED_MODULE_1__[\"print\"])(node.type);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"Variable \\\"$\".concat(variableName, \"\\\" cannot be non-input type \\\"\").concat(typeName, \"\\\".\"), node.type));\n }\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9WYXJpYWJsZXNBcmVJbnB1dFR5cGVzUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1ZhcmlhYmxlc0FyZUlucHV0VHlwZXNSdWxlLm1qcz9iOGNmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5pbXBvcnQgeyBwcmludCB9IGZyb20gXCIuLi8uLi9sYW5ndWFnZS9wcmludGVyLm1qc1wiO1xuaW1wb3J0IHsgaXNJbnB1dFR5cGUgfSBmcm9tIFwiLi4vLi4vdHlwZS9kZWZpbml0aW9uLm1qc1wiO1xuaW1wb3J0IHsgdHlwZUZyb21BU1QgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVGcm9tQVNULm1qc1wiO1xuXG4vKipcbiAqIFZhcmlhYmxlcyBhcmUgaW5wdXQgdHlwZXNcbiAqXG4gKiBBIEdyYXBoUUwgb3BlcmF0aW9uIGlzIG9ubHkgdmFsaWQgaWYgYWxsIHRoZSB2YXJpYWJsZXMgaXQgZGVmaW5lcyBhcmUgb2ZcbiAqIGlucHV0IHR5cGVzIChzY2FsYXIsIGVudW0sIG9yIGlucHV0IG9iamVjdCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBWYXJpYWJsZXNBcmVJbnB1dFR5cGVzUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgVmFyaWFibGVEZWZpbml0aW9uOiBmdW5jdGlvbiBWYXJpYWJsZURlZmluaXRpb24obm9kZSkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlRnJvbUFTVChjb250ZXh0LmdldFNjaGVtYSgpLCBub2RlLnR5cGUpO1xuXG4gICAgICBpZiAodHlwZSAmJiAhaXNJbnB1dFR5cGUodHlwZSkpIHtcbiAgICAgICAgdmFyIHZhcmlhYmxlTmFtZSA9IG5vZGUudmFyaWFibGUubmFtZS52YWx1ZTtcbiAgICAgICAgdmFyIHR5cGVOYW1lID0gcHJpbnQobm9kZS50eXBlKTtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiVmFyaWFibGUgXFxcIiRcIi5jb25jYXQodmFyaWFibGVOYW1lLCBcIlxcXCIgY2Fubm90IGJlIG5vbi1pbnB1dCB0eXBlIFxcXCJcIikuY29uY2F0KHR5cGVOYW1lLCBcIlxcXCIuXCIpLCBub2RlLnR5cGUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs\n");
1773
1774/***/ }),
1775
1776/***/ "../../../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs":
1777/*!********************************************************************************************************************!*\
1778 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs ***!
1779 \********************************************************************************************************************/
1780/*! exports provided: VariablesInAllowedPositionRule */
1781/***/ (function(module, __webpack_exports__, __webpack_require__) {
1782
1783"use strict";
1784eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VariablesInAllowedPositionRule\", function() { return VariablesInAllowedPositionRule; });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n/* harmony import */ var _utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utilities/typeComparators.mjs */ \"../../../node_modules/graphql/utilities/typeComparators.mjs\");\n\n\n\n\n\n\n\n/**\n * Variables passed to field arguments conform to type\n */\nfunction VariablesInAllowedPositionRule(context) {\n var varDefMap = Object.create(null);\n return {\n OperationDefinition: {\n enter: function enter() {\n varDefMap = Object.create(null);\n },\n leave: function leave(operation) {\n var usages = context.getRecursiveVariableUsages(operation);\n\n for (var _i2 = 0; _i2 < usages.length; _i2++) {\n var _ref2 = usages[_i2];\n var node = _ref2.node;\n var type = _ref2.type;\n var defaultValue = _ref2.defaultValue;\n var varName = node.name.value;\n var varDef = varDefMap[varName];\n\n if (varDef && type) {\n // A var type is allowed if it is the same or more strict (e.g. is\n // a subtype of) than the expected type. It can be more strict if\n // the variable type is non-null when the expected type is nullable.\n // If both are list types, the variable item type can be more strict\n // than the expected item type (contravariant).\n var schema = context.getSchema();\n var varType = Object(_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_4__[\"typeFromAST\"])(schema, varDef.type);\n\n if (varType && !allowedVariableUsage(schema, varType, varDef.defaultValue, type, defaultValue)) {\n var varTypeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(varType);\n var typeStr = Object(_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(type);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\"Variable \\\"$\".concat(varName, \"\\\" of type \\\"\").concat(varTypeStr, \"\\\" used in position expecting type \\\"\").concat(typeStr, \"\\\".\"), [varDef, node]));\n }\n }\n }\n }\n },\n VariableDefinition: function VariableDefinition(node) {\n varDefMap[node.variable.name.value] = node;\n }\n };\n}\n/**\n * Returns true if the variable is allowed in the location it was found,\n * which includes considering if default values exist for either the variable\n * or the location at which it is located.\n */\n\nfunction allowedVariableUsage(schema, varType, varDefaultValue, locationType, locationDefaultValue) {\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isNonNullType\"])(locationType) && !Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__[\"isNonNullType\"])(varType)) {\n var hasNonNullVariableDefaultValue = varDefaultValue != null && varDefaultValue.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_2__[\"Kind\"].NULL;\n var hasLocationDefaultValue = locationDefaultValue !== undefined;\n\n if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) {\n return false;\n }\n\n var nullableLocationType = locationType.ofType;\n return Object(_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isTypeSubTypeOf\"])(schema, varType, nullableLocationType);\n }\n\n return Object(_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_5__[\"isTypeSubTypeOf\"])(schema, varType, locationType);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9WYXJpYWJsZXNJbkFsbG93ZWRQb3NpdGlvblJ1bGUubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9WYXJpYWJsZXNJbkFsbG93ZWRQb3NpdGlvblJ1bGUubWpzP2I0YmQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGluc3BlY3QgZnJvbSBcIi4uLy4uL2pzdXRpbHMvaW5zcGVjdC5tanNcIjtcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSBcIi4uLy4uL2xhbmd1YWdlL2tpbmRzLm1qc1wiO1xuaW1wb3J0IHsgaXNOb25OdWxsVHlwZSB9IGZyb20gXCIuLi8uLi90eXBlL2RlZmluaXRpb24ubWpzXCI7XG5pbXBvcnQgeyB0eXBlRnJvbUFTVCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvdHlwZUZyb21BU1QubWpzXCI7XG5pbXBvcnQgeyBpc1R5cGVTdWJUeXBlT2YgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVDb21wYXJhdG9ycy5tanNcIjtcblxuLyoqXG4gKiBWYXJpYWJsZXMgcGFzc2VkIHRvIGZpZWxkIGFyZ3VtZW50cyBjb25mb3JtIHRvIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFZhcmlhYmxlc0luQWxsb3dlZFBvc2l0aW9uUnVsZShjb250ZXh0KSB7XG4gIHZhciB2YXJEZWZNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4ge1xuICAgIE9wZXJhdGlvbkRlZmluaXRpb246IHtcbiAgICAgIGVudGVyOiBmdW5jdGlvbiBlbnRlcigpIHtcbiAgICAgICAgdmFyRGVmTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIH0sXG4gICAgICBsZWF2ZTogZnVuY3Rpb24gbGVhdmUob3BlcmF0aW9uKSB7XG4gICAgICAgIHZhciB1c2FnZXMgPSBjb250ZXh0LmdldFJlY3Vyc2l2ZVZhcmlhYmxlVXNhZ2VzKG9wZXJhdGlvbik7XG5cbiAgICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgdXNhZ2VzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgICAgICB2YXIgX3JlZjIgPSB1c2FnZXNbX2kyXTtcbiAgICAgICAgICB2YXIgbm9kZSA9IF9yZWYyLm5vZGU7XG4gICAgICAgICAgdmFyIHR5cGUgPSBfcmVmMi50eXBlO1xuICAgICAgICAgIHZhciBkZWZhdWx0VmFsdWUgPSBfcmVmMi5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgdmFyIHZhck5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG4gICAgICAgICAgdmFyIHZhckRlZiA9IHZhckRlZk1hcFt2YXJOYW1lXTtcblxuICAgICAgICAgIGlmICh2YXJEZWYgJiYgdHlwZSkge1xuICAgICAgICAgICAgLy8gQSB2YXIgdHlwZSBpcyBhbGxvd2VkIGlmIGl0IGlzIHRoZSBzYW1lIG9yIG1vcmUgc3RyaWN0IChlLmcuIGlzXG4gICAgICAgICAgICAvLyBhIHN1YnR5cGUgb2YpIHRoYW4gdGhlIGV4cGVjdGVkIHR5cGUuIEl0IGNhbiBiZSBtb3JlIHN0cmljdCBpZlxuICAgICAgICAgICAgLy8gdGhlIHZhcmlhYmxlIHR5cGUgaXMgbm9uLW51bGwgd2hlbiB0aGUgZXhwZWN0ZWQgdHlwZSBpcyBudWxsYWJsZS5cbiAgICAgICAgICAgIC8vIElmIGJvdGggYXJlIGxpc3QgdHlwZXMsIHRoZSB2YXJpYWJsZSBpdGVtIHR5cGUgY2FuIGJlIG1vcmUgc3RyaWN0XG4gICAgICAgICAgICAvLyB0aGFuIHRoZSBleHBlY3RlZCBpdGVtIHR5cGUgKGNvbnRyYXZhcmlhbnQpLlxuICAgICAgICAgICAgdmFyIHNjaGVtYSA9IGNvbnRleHQuZ2V0U2NoZW1hKCk7XG4gICAgICAgICAgICB2YXIgdmFyVHlwZSA9IHR5cGVGcm9tQVNUKHNjaGVtYSwgdmFyRGVmLnR5cGUpO1xuXG4gICAgICAgICAgICBpZiAodmFyVHlwZSAmJiAhYWxsb3dlZFZhcmlhYmxlVXNhZ2Uoc2NoZW1hLCB2YXJUeXBlLCB2YXJEZWYuZGVmYXVsdFZhbHVlLCB0eXBlLCBkZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgICAgICAgIHZhciB2YXJUeXBlU3RyID0gaW5zcGVjdCh2YXJUeXBlKTtcbiAgICAgICAgICAgICAgdmFyIHR5cGVTdHIgPSBpbnNwZWN0KHR5cGUpO1xuICAgICAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJWYXJpYWJsZSBcXFwiJFwiLmNvbmNhdCh2YXJOYW1lLCBcIlxcXCIgb2YgdHlwZSBcXFwiXCIpLmNvbmNhdCh2YXJUeXBlU3RyLCBcIlxcXCIgdXNlZCBpbiBwb3NpdGlvbiBleHBlY3RpbmcgdHlwZSBcXFwiXCIpLmNvbmNhdCh0eXBlU3RyLCBcIlxcXCIuXCIpLCBbdmFyRGVmLCBub2RlXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgVmFyaWFibGVEZWZpbml0aW9uOiBmdW5jdGlvbiBWYXJpYWJsZURlZmluaXRpb24obm9kZSkge1xuICAgICAgdmFyRGVmTWFwW25vZGUudmFyaWFibGUubmFtZS52YWx1ZV0gPSBub2RlO1xuICAgIH1cbiAgfTtcbn1cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSB2YXJpYWJsZSBpcyBhbGxvd2VkIGluIHRoZSBsb2NhdGlvbiBpdCB3YXMgZm91bmQsXG4gKiB3aGljaCBpbmNsdWRlcyBjb25zaWRlcmluZyBpZiBkZWZhdWx0IHZhbHVlcyBleGlzdCBmb3IgZWl0aGVyIHRoZSB2YXJpYWJsZVxuICogb3IgdGhlIGxvY2F0aW9uIGF0IHdoaWNoIGl0IGlzIGxvY2F0ZWQuXG4gKi9cblxuZnVuY3Rpb24gYWxsb3dlZFZhcmlhYmxlVXNhZ2Uoc2NoZW1hLCB2YXJUeXBlLCB2YXJEZWZhdWx0VmFsdWUsIGxvY2F0aW9uVHlwZSwgbG9jYXRpb25EZWZhdWx0VmFsdWUpIHtcbiAgaWYgKGlzTm9uTnVsbFR5cGUobG9jYXRpb25UeXBlKSAmJiAhaXNOb25OdWxsVHlwZSh2YXJUeXBlKSkge1xuICAgIHZhciBoYXNOb25OdWxsVmFyaWFibGVEZWZhdWx0VmFsdWUgPSB2YXJEZWZhdWx0VmFsdWUgIT0gbnVsbCAmJiB2YXJEZWZhdWx0VmFsdWUua2luZCAhPT0gS2luZC5OVUxMO1xuICAgIHZhciBoYXNMb2NhdGlvbkRlZmF1bHRWYWx1ZSA9IGxvY2F0aW9uRGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQ7XG5cbiAgICBpZiAoIWhhc05vbk51bGxWYXJpYWJsZURlZmF1bHRWYWx1ZSAmJiAhaGFzTG9jYXRpb25EZWZhdWx0VmFsdWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgbnVsbGFibGVMb2NhdGlvblR5cGUgPSBsb2NhdGlvblR5cGUub2ZUeXBlO1xuICAgIHJldHVybiBpc1R5cGVTdWJUeXBlT2Yoc2NoZW1hLCB2YXJUeXBlLCBudWxsYWJsZUxvY2F0aW9uVHlwZSk7XG4gIH1cblxuICByZXR1cm4gaXNUeXBlU3ViVHlwZU9mKHNjaGVtYSwgdmFyVHlwZSwgbG9jYXRpb25UeXBlKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs\n");
1785
1786/***/ }),
1787
1788/***/ "../../../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs":
1789/*!*******************************************************************************************************************!*\
1790 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs ***!
1791 \*******************************************************************************************************************/
1792/*! exports provided: NoDeprecatedCustomRule */
1793/***/ (function(module, __webpack_exports__, __webpack_require__) {
1794
1795"use strict";
1796eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoDeprecatedCustomRule\", function() { return NoDeprecatedCustomRule; });\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n\n\n\n\n/**\n * No deprecated\n *\n * A GraphQL document is only valid if all selected fields and all used enum values have not been\n * deprecated.\n *\n * Note: This rule is optional and is not part of the Validation section of the GraphQL\n * Specification. The main purpose of this rule is detection of deprecated usages and not\n * necessarily to forbid their use when querying a service.\n */\nfunction NoDeprecatedCustomRule(context) {\n return {\n Field: function Field(node) {\n var fieldDef = context.getFieldDef();\n var deprecationReason = fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.deprecationReason;\n\n if (fieldDef && deprecationReason != null) {\n var parentType = context.getParentType();\n parentType != null || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\"The field \".concat(parentType.name, \".\").concat(fieldDef.name, \" is deprecated. \").concat(deprecationReason), node));\n }\n },\n Argument: function Argument(node) {\n var argDef = context.getArgument();\n var deprecationReason = argDef === null || argDef === void 0 ? void 0 : argDef.deprecationReason;\n\n if (argDef && deprecationReason != null) {\n var directiveDef = context.getDirective();\n\n if (directiveDef != null) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\"Directive \\\"@\".concat(directiveDef.name, \"\\\" argument \\\"\").concat(argDef.name, \"\\\" is deprecated. \").concat(deprecationReason), node));\n } else {\n var parentType = context.getParentType();\n var fieldDef = context.getFieldDef();\n parentType != null && fieldDef != null || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\"Field \\\"\".concat(parentType.name, \".\").concat(fieldDef.name, \"\\\" argument \\\"\").concat(argDef.name, \"\\\" is deprecated. \").concat(deprecationReason), node));\n }\n }\n },\n ObjectField: function ObjectField(node) {\n var inputObjectDef = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getNamedType\"])(context.getParentInputType());\n\n if (Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isInputObjectType\"])(inputObjectDef)) {\n var inputFieldDef = inputObjectDef.getFields()[node.name.value]; // flowlint-next-line unnecessary-optional-chain:off\n\n var deprecationReason = inputFieldDef === null || inputFieldDef === void 0 ? void 0 : inputFieldDef.deprecationReason;\n\n if (deprecationReason != null) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\"The input field \".concat(inputObjectDef.name, \".\").concat(inputFieldDef.name, \" is deprecated. \").concat(deprecationReason), node));\n }\n }\n },\n EnumValue: function EnumValue(node) {\n var enumValueDef = context.getEnumValue();\n var deprecationReason = enumValueDef === null || enumValueDef === void 0 ? void 0 : enumValueDef.deprecationReason;\n\n if (enumValueDef && deprecationReason != null) {\n var enumTypeDef = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__[\"getNamedType\"])(context.getInputType());\n enumTypeDef != null || Object(_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0);\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"](\"The enum value \\\"\".concat(enumTypeDef.name, \".\").concat(enumValueDef.name, \"\\\" is deprecated. \").concat(deprecationReason), node));\n }\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9jdXN0b20vTm9EZXByZWNhdGVkQ3VzdG9tUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL2N1c3RvbS9Ob0RlcHJlY2F0ZWRDdXN0b21SdWxlLm1qcz80YmMwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnZhcmlhbnQgZnJvbSBcIi4uLy4uLy4uL2pzdXRpbHMvaW52YXJpYW50Lm1qc1wiO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4uLy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanNcIjtcbmltcG9ydCB7IGdldE5hbWVkVHlwZSwgaXNJbnB1dE9iamVjdFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZS9kZWZpbml0aW9uLm1qc1wiO1xuXG4vKipcbiAqIE5vIGRlcHJlY2F0ZWRcbiAqXG4gKiBBIEdyYXBoUUwgZG9jdW1lbnQgaXMgb25seSB2YWxpZCBpZiBhbGwgc2VsZWN0ZWQgZmllbGRzIGFuZCBhbGwgdXNlZCBlbnVtIHZhbHVlcyBoYXZlIG5vdCBiZWVuXG4gKiBkZXByZWNhdGVkLlxuICpcbiAqIE5vdGU6IFRoaXMgcnVsZSBpcyBvcHRpb25hbCBhbmQgaXMgbm90IHBhcnQgb2YgdGhlIFZhbGlkYXRpb24gc2VjdGlvbiBvZiB0aGUgR3JhcGhRTFxuICogU3BlY2lmaWNhdGlvbi4gVGhlIG1haW4gcHVycG9zZSBvZiB0aGlzIHJ1bGUgaXMgZGV0ZWN0aW9uIG9mIGRlcHJlY2F0ZWQgdXNhZ2VzIGFuZCBub3RcbiAqIG5lY2Vzc2FyaWx5IHRvIGZvcmJpZCB0aGVpciB1c2Ugd2hlbiBxdWVyeWluZyBhIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBOb0RlcHJlY2F0ZWRDdXN0b21SdWxlKGNvbnRleHQpIHtcbiAgcmV0dXJuIHtcbiAgICBGaWVsZDogZnVuY3Rpb24gRmllbGQobm9kZSkge1xuICAgICAgdmFyIGZpZWxkRGVmID0gY29udGV4dC5nZXRGaWVsZERlZigpO1xuICAgICAgdmFyIGRlcHJlY2F0aW9uUmVhc29uID0gZmllbGREZWYgPT09IG51bGwgfHwgZmllbGREZWYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZpZWxkRGVmLmRlcHJlY2F0aW9uUmVhc29uO1xuXG4gICAgICBpZiAoZmllbGREZWYgJiYgZGVwcmVjYXRpb25SZWFzb24gIT0gbnVsbCkge1xuICAgICAgICB2YXIgcGFyZW50VHlwZSA9IGNvbnRleHQuZ2V0UGFyZW50VHlwZSgpO1xuICAgICAgICBwYXJlbnRUeXBlICE9IG51bGwgfHwgaW52YXJpYW50KDApO1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJUaGUgZmllbGQgXCIuY29uY2F0KHBhcmVudFR5cGUubmFtZSwgXCIuXCIpLmNvbmNhdChmaWVsZERlZi5uYW1lLCBcIiBpcyBkZXByZWNhdGVkLiBcIikuY29uY2F0KGRlcHJlY2F0aW9uUmVhc29uKSwgbm9kZSkpO1xuICAgICAgfVxuICAgIH0sXG4gICAgQXJndW1lbnQ6IGZ1bmN0aW9uIEFyZ3VtZW50KG5vZGUpIHtcbiAgICAgIHZhciBhcmdEZWYgPSBjb250ZXh0LmdldEFyZ3VtZW50KCk7XG4gICAgICB2YXIgZGVwcmVjYXRpb25SZWFzb24gPSBhcmdEZWYgPT09IG51bGwgfHwgYXJnRGVmID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcmdEZWYuZGVwcmVjYXRpb25SZWFzb247XG5cbiAgICAgIGlmIChhcmdEZWYgJiYgZGVwcmVjYXRpb25SZWFzb24gIT0gbnVsbCkge1xuICAgICAgICB2YXIgZGlyZWN0aXZlRGVmID0gY29udGV4dC5nZXREaXJlY3RpdmUoKTtcblxuICAgICAgICBpZiAoZGlyZWN0aXZlRGVmICE9IG51bGwpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJEaXJlY3RpdmUgXFxcIkBcIi5jb25jYXQoZGlyZWN0aXZlRGVmLm5hbWUsIFwiXFxcIiBhcmd1bWVudCBcXFwiXCIpLmNvbmNhdChhcmdEZWYubmFtZSwgXCJcXFwiIGlzIGRlcHJlY2F0ZWQuIFwiKS5jb25jYXQoZGVwcmVjYXRpb25SZWFzb24pLCBub2RlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHBhcmVudFR5cGUgPSBjb250ZXh0LmdldFBhcmVudFR5cGUoKTtcbiAgICAgICAgICB2YXIgZmllbGREZWYgPSBjb250ZXh0LmdldEZpZWxkRGVmKCk7XG4gICAgICAgICAgcGFyZW50VHlwZSAhPSBudWxsICYmIGZpZWxkRGVmICE9IG51bGwgfHwgaW52YXJpYW50KDApO1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IobmV3IEdyYXBoUUxFcnJvcihcIkZpZWxkIFxcXCJcIi5jb25jYXQocGFyZW50VHlwZS5uYW1lLCBcIi5cIikuY29uY2F0KGZpZWxkRGVmLm5hbWUsIFwiXFxcIiBhcmd1bWVudCBcXFwiXCIpLmNvbmNhdChhcmdEZWYubmFtZSwgXCJcXFwiIGlzIGRlcHJlY2F0ZWQuIFwiKS5jb25jYXQoZGVwcmVjYXRpb25SZWFzb24pLCBub2RlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE9iamVjdEZpZWxkOiBmdW5jdGlvbiBPYmplY3RGaWVsZChub2RlKSB7XG4gICAgICB2YXIgaW5wdXRPYmplY3REZWYgPSBnZXROYW1lZFR5cGUoY29udGV4dC5nZXRQYXJlbnRJbnB1dFR5cGUoKSk7XG5cbiAgICAgIGlmIChpc0lucHV0T2JqZWN0VHlwZShpbnB1dE9iamVjdERlZikpIHtcbiAgICAgICAgdmFyIGlucHV0RmllbGREZWYgPSBpbnB1dE9iamVjdERlZi5nZXRGaWVsZHMoKVtub2RlLm5hbWUudmFsdWVdOyAvLyBmbG93bGludC1uZXh0LWxpbmUgdW5uZWNlc3Nhcnktb3B0aW9uYWwtY2hhaW46b2ZmXG5cbiAgICAgICAgdmFyIGRlcHJlY2F0aW9uUmVhc29uID0gaW5wdXRGaWVsZERlZiA9PT0gbnVsbCB8fCBpbnB1dEZpZWxkRGVmID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpbnB1dEZpZWxkRGVmLmRlcHJlY2F0aW9uUmVhc29uO1xuXG4gICAgICAgIGlmIChkZXByZWNhdGlvblJlYXNvbiAhPSBudWxsKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihuZXcgR3JhcGhRTEVycm9yKFwiVGhlIGlucHV0IGZpZWxkIFwiLmNvbmNhdChpbnB1dE9iamVjdERlZi5uYW1lLCBcIi5cIikuY29uY2F0KGlucHV0RmllbGREZWYubmFtZSwgXCIgaXMgZGVwcmVjYXRlZC4gXCIpLmNvbmNhdChkZXByZWNhdGlvblJlYXNvbiksIG5vZGUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgRW51bVZhbHVlOiBmdW5jdGlvbiBFbnVtVmFsdWUobm9kZSkge1xuICAgICAgdmFyIGVudW1WYWx1ZURlZiA9IGNvbnRleHQuZ2V0RW51bVZhbHVlKCk7XG4gICAgICB2YXIgZGVwcmVjYXRpb25SZWFzb24gPSBlbnVtVmFsdWVEZWYgPT09IG51bGwgfHwgZW51bVZhbHVlRGVmID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbnVtVmFsdWVEZWYuZGVwcmVjYXRpb25SZWFzb247XG5cbiAgICAgIGlmIChlbnVtVmFsdWVEZWYgJiYgZGVwcmVjYXRpb25SZWFzb24gIT0gbnVsbCkge1xuICAgICAgICB2YXIgZW51bVR5cGVEZWYgPSBnZXROYW1lZFR5cGUoY29udGV4dC5nZXRJbnB1dFR5cGUoKSk7XG4gICAgICAgIGVudW1UeXBlRGVmICE9IG51bGwgfHwgaW52YXJpYW50KDApO1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJUaGUgZW51bSB2YWx1ZSBcXFwiXCIuY29uY2F0KGVudW1UeXBlRGVmLm5hbWUsIFwiLlwiKS5jb25jYXQoZW51bVZhbHVlRGVmLm5hbWUsIFwiXFxcIiBpcyBkZXByZWNhdGVkLiBcIikuY29uY2F0KGRlcHJlY2F0aW9uUmVhc29uKSwgbm9kZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs\n");
1797
1798/***/ }),
1799
1800/***/ "../../../node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs":
1801/*!****************************************************************************************************************************!*\
1802 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs ***!
1803 \****************************************************************************************************************************/
1804/*! exports provided: NoSchemaIntrospectionCustomRule */
1805/***/ (function(module, __webpack_exports__, __webpack_require__) {
1806
1807"use strict";
1808eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NoSchemaIntrospectionCustomRule\", function() { return NoSchemaIntrospectionCustomRule; });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n\n\n\n\n/**\n * Prohibit introspection queries\n *\n * A GraphQL document is only valid if all fields selected are not fields that\n * return an introspection type.\n *\n * Note: This rule is optional and is not part of the Validation section of the\n * GraphQL Specification. This rule effectively disables introspection, which\n * does not reflect best practices and should only be done if absolutely necessary.\n */\nfunction NoSchemaIntrospectionCustomRule(context) {\n return {\n Field: function Field(node) {\n var type = Object(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__[\"getNamedType\"])(context.getType());\n\n if (type && Object(_type_introspection_mjs__WEBPACK_IMPORTED_MODULE_2__[\"isIntrospectionType\"])(type)) {\n context.reportError(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__[\"GraphQLError\"](\"GraphQL introspection has been disabled, but the requested query contained the field \\\"\".concat(node.name.value, \"\\\".\"), node));\n }\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9jdXN0b20vTm9TY2hlbWFJbnRyb3NwZWN0aW9uQ3VzdG9tUnVsZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL2N1c3RvbS9Ob1NjaGVtYUludHJvc3BlY3Rpb25DdXN0b21SdWxlLm1qcz84Y2FlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gXCIuLi8uLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzXCI7XG5pbXBvcnQgeyBnZXROYW1lZFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZS9kZWZpbml0aW9uLm1qc1wiO1xuaW1wb3J0IHsgaXNJbnRyb3NwZWN0aW9uVHlwZSB9IGZyb20gXCIuLi8uLi8uLi90eXBlL2ludHJvc3BlY3Rpb24ubWpzXCI7XG5cbi8qKlxuICogUHJvaGliaXQgaW50cm9zcGVjdGlvbiBxdWVyaWVzXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgYWxsIGZpZWxkcyBzZWxlY3RlZCBhcmUgbm90IGZpZWxkcyB0aGF0XG4gKiByZXR1cm4gYW4gaW50cm9zcGVjdGlvbiB0eXBlLlxuICpcbiAqIE5vdGU6IFRoaXMgcnVsZSBpcyBvcHRpb25hbCBhbmQgaXMgbm90IHBhcnQgb2YgdGhlIFZhbGlkYXRpb24gc2VjdGlvbiBvZiB0aGVcbiAqIEdyYXBoUUwgU3BlY2lmaWNhdGlvbi4gVGhpcyBydWxlIGVmZmVjdGl2ZWx5IGRpc2FibGVzIGludHJvc3BlY3Rpb24sIHdoaWNoXG4gKiBkb2VzIG5vdCByZWZsZWN0IGJlc3QgcHJhY3RpY2VzIGFuZCBzaG91bGQgb25seSBiZSBkb25lIGlmIGFic29sdXRlbHkgbmVjZXNzYXJ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gTm9TY2hlbWFJbnRyb3NwZWN0aW9uQ3VzdG9tUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgRmllbGQ6IGZ1bmN0aW9uIEZpZWxkKG5vZGUpIHtcbiAgICAgIHZhciB0eXBlID0gZ2V0TmFtZWRUeXBlKGNvbnRleHQuZ2V0VHlwZSgpKTtcblxuICAgICAgaWYgKHR5cGUgJiYgaXNJbnRyb3NwZWN0aW9uVHlwZSh0eXBlKSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKG5ldyBHcmFwaFFMRXJyb3IoXCJHcmFwaFFMIGludHJvc3BlY3Rpb24gaGFzIGJlZW4gZGlzYWJsZWQsIGJ1dCB0aGUgcmVxdWVzdGVkIHF1ZXJ5IGNvbnRhaW5lZCB0aGUgZmllbGQgXFxcIlwiLmNvbmNhdChub2RlLm5hbWUudmFsdWUsIFwiXFxcIi5cIiksIG5vZGUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs\n");
1809
1810/***/ }),
1811
1812/***/ "../../../node_modules/graphql/validation/specifiedRules.mjs":
1813/*!**********************************************************************************************!*\
1814 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/specifiedRules.mjs ***!
1815 \**********************************************************************************************/
1816/*! exports provided: specifiedRules, specifiedSDLRules */
1817/***/ (function(module, __webpack_exports__, __webpack_require__) {
1818
1819"use strict";
1820eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"specifiedRules\", function() { return specifiedRules; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"specifiedSDLRules\", function() { return specifiedSDLRules; });\n/* harmony import */ var _rules_ExecutableDefinitionsRule_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./rules/ExecutableDefinitionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs\");\n/* harmony import */ var _rules_UniqueOperationNamesRule_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rules/UniqueOperationNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs\");\n/* harmony import */ var _rules_LoneAnonymousOperationRule_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rules/LoneAnonymousOperationRule.mjs */ \"../../../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs\");\n/* harmony import */ var _rules_SingleFieldSubscriptionsRule_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rules/SingleFieldSubscriptionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs\");\n/* harmony import */ var _rules_KnownTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./rules/KnownTypeNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs\");\n/* harmony import */ var _rules_FragmentsOnCompositeTypesRule_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./rules/FragmentsOnCompositeTypesRule.mjs */ \"../../../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs\");\n/* harmony import */ var _rules_VariablesAreInputTypesRule_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./rules/VariablesAreInputTypesRule.mjs */ \"../../../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs\");\n/* harmony import */ var _rules_ScalarLeafsRule_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./rules/ScalarLeafsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ScalarLeafsRule.mjs\");\n/* harmony import */ var _rules_FieldsOnCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./rules/FieldsOnCorrectTypeRule.mjs */ \"../../../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs\");\n/* harmony import */ var _rules_UniqueFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rules/UniqueFragmentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs\");\n/* harmony import */ var _rules_KnownFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rules/KnownFragmentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs\");\n/* harmony import */ var _rules_NoUnusedFragmentsRule_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./rules/NoUnusedFragmentsRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs\");\n/* harmony import */ var _rules_PossibleFragmentSpreadsRule_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./rules/PossibleFragmentSpreadsRule.mjs */ \"../../../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs\");\n/* harmony import */ var _rules_NoFragmentCyclesRule_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./rules/NoFragmentCyclesRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs\");\n/* harmony import */ var _rules_UniqueVariableNamesRule_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rules/UniqueVariableNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs\");\n/* harmony import */ var _rules_NoUndefinedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./rules/NoUndefinedVariablesRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs\");\n/* harmony import */ var _rules_NoUnusedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./rules/NoUnusedVariablesRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs\");\n/* harmony import */ var _rules_KnownDirectivesRule_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./rules/KnownDirectivesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownDirectivesRule.mjs\");\n/* harmony import */ var _rules_UniqueDirectivesPerLocationRule_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./rules/UniqueDirectivesPerLocationRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs\");\n/* harmony import */ var _rules_KnownArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./rules/KnownArgumentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./rules/UniqueArgumentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs\");\n/* harmony import */ var _rules_ValuesOfCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./rules/ValuesOfCorrectTypeRule.mjs */ \"../../../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs\");\n/* harmony import */ var _rules_ProvidedRequiredArgumentsRule_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./rules/ProvidedRequiredArgumentsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs\");\n/* harmony import */ var _rules_VariablesInAllowedPositionRule_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./rules/VariablesInAllowedPositionRule.mjs */ \"../../../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs\");\n/* harmony import */ var _rules_OverlappingFieldsCanBeMergedRule_mjs__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./rules/OverlappingFieldsCanBeMergedRule.mjs */ \"../../../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs\");\n/* harmony import */ var _rules_UniqueInputFieldNamesRule_mjs__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./rules/UniqueInputFieldNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs\");\n/* harmony import */ var _rules_LoneSchemaDefinitionRule_mjs__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./rules/LoneSchemaDefinitionRule.mjs */ \"../../../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs\");\n/* harmony import */ var _rules_UniqueOperationTypesRule_mjs__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./rules/UniqueOperationTypesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs\");\n/* harmony import */ var _rules_UniqueTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./rules/UniqueTypeNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueEnumValueNamesRule_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./rules/UniqueEnumValueNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueFieldDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./rules/UniqueFieldDefinitionNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueDirectiveNamesRule_mjs__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./rules/UniqueDirectiveNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs\");\n/* harmony import */ var _rules_PossibleTypeExtensionsRule_mjs__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./rules/PossibleTypeExtensionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs\");\n// Spec Section: \"Executable Definitions\"\n // Spec Section: \"Operation Name Uniqueness\"\n\n // Spec Section: \"Lone Anonymous Operation\"\n\n // Spec Section: \"Subscriptions with Single Root Field\"\n\n // Spec Section: \"Fragment Spread Type Existence\"\n\n // Spec Section: \"Fragments on Composite Types\"\n\n // Spec Section: \"Variables are Input Types\"\n\n // Spec Section: \"Leaf Field Selections\"\n\n // Spec Section: \"Field Selections on Objects, Interfaces, and Unions Types\"\n\n // Spec Section: \"Fragment Name Uniqueness\"\n\n // Spec Section: \"Fragment spread target defined\"\n\n // Spec Section: \"Fragments must be used\"\n\n // Spec Section: \"Fragment spread is possible\"\n\n // Spec Section: \"Fragments must not form cycles\"\n\n // Spec Section: \"Variable Uniqueness\"\n\n // Spec Section: \"All Variable Used Defined\"\n\n // Spec Section: \"All Variables Used\"\n\n // Spec Section: \"Directives Are Defined\"\n\n // Spec Section: \"Directives Are Unique Per Location\"\n\n // Spec Section: \"Argument Names\"\n\n // Spec Section: \"Argument Uniqueness\"\n\n // Spec Section: \"Value Type Correctness\"\n\n // Spec Section: \"Argument Optionality\"\n\n // Spec Section: \"All Variable Usages Are Allowed\"\n\n // Spec Section: \"Field Selection Merging\"\n\n // Spec Section: \"Input Object Field Uniqueness\"\n\n // SDL-specific validation rules\n\n\n\n\n\n\n\n\n/**\n * This set includes all validation rules defined by the GraphQL spec.\n *\n * The order of the rules in this list has been adjusted to lead to the\n * most clear output when encountering multiple validation errors.\n */\n\nvar specifiedRules = Object.freeze([_rules_ExecutableDefinitionsRule_mjs__WEBPACK_IMPORTED_MODULE_0__[\"ExecutableDefinitionsRule\"], _rules_UniqueOperationNamesRule_mjs__WEBPACK_IMPORTED_MODULE_1__[\"UniqueOperationNamesRule\"], _rules_LoneAnonymousOperationRule_mjs__WEBPACK_IMPORTED_MODULE_2__[\"LoneAnonymousOperationRule\"], _rules_SingleFieldSubscriptionsRule_mjs__WEBPACK_IMPORTED_MODULE_3__[\"SingleFieldSubscriptionsRule\"], _rules_KnownTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_4__[\"KnownTypeNamesRule\"], _rules_FragmentsOnCompositeTypesRule_mjs__WEBPACK_IMPORTED_MODULE_5__[\"FragmentsOnCompositeTypesRule\"], _rules_VariablesAreInputTypesRule_mjs__WEBPACK_IMPORTED_MODULE_6__[\"VariablesAreInputTypesRule\"], _rules_ScalarLeafsRule_mjs__WEBPACK_IMPORTED_MODULE_7__[\"ScalarLeafsRule\"], _rules_FieldsOnCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_8__[\"FieldsOnCorrectTypeRule\"], _rules_UniqueFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_9__[\"UniqueFragmentNamesRule\"], _rules_KnownFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_10__[\"KnownFragmentNamesRule\"], _rules_NoUnusedFragmentsRule_mjs__WEBPACK_IMPORTED_MODULE_11__[\"NoUnusedFragmentsRule\"], _rules_PossibleFragmentSpreadsRule_mjs__WEBPACK_IMPORTED_MODULE_12__[\"PossibleFragmentSpreadsRule\"], _rules_NoFragmentCyclesRule_mjs__WEBPACK_IMPORTED_MODULE_13__[\"NoFragmentCyclesRule\"], _rules_UniqueVariableNamesRule_mjs__WEBPACK_IMPORTED_MODULE_14__[\"UniqueVariableNamesRule\"], _rules_NoUndefinedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_15__[\"NoUndefinedVariablesRule\"], _rules_NoUnusedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_16__[\"NoUnusedVariablesRule\"], _rules_KnownDirectivesRule_mjs__WEBPACK_IMPORTED_MODULE_17__[\"KnownDirectivesRule\"], _rules_UniqueDirectivesPerLocationRule_mjs__WEBPACK_IMPORTED_MODULE_18__[\"UniqueDirectivesPerLocationRule\"], _rules_KnownArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_19__[\"KnownArgumentNamesRule\"], _rules_UniqueArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_20__[\"UniqueArgumentNamesRule\"], _rules_ValuesOfCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_21__[\"ValuesOfCorrectTypeRule\"], _rules_ProvidedRequiredArgumentsRule_mjs__WEBPACK_IMPORTED_MODULE_22__[\"ProvidedRequiredArgumentsRule\"], _rules_VariablesInAllowedPositionRule_mjs__WEBPACK_IMPORTED_MODULE_23__[\"VariablesInAllowedPositionRule\"], _rules_OverlappingFieldsCanBeMergedRule_mjs__WEBPACK_IMPORTED_MODULE_24__[\"OverlappingFieldsCanBeMergedRule\"], _rules_UniqueInputFieldNamesRule_mjs__WEBPACK_IMPORTED_MODULE_25__[\"UniqueInputFieldNamesRule\"]]);\n/**\n * @internal\n */\n\nvar specifiedSDLRules = Object.freeze([_rules_LoneSchemaDefinitionRule_mjs__WEBPACK_IMPORTED_MODULE_26__[\"LoneSchemaDefinitionRule\"], _rules_UniqueOperationTypesRule_mjs__WEBPACK_IMPORTED_MODULE_27__[\"UniqueOperationTypesRule\"], _rules_UniqueTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_28__[\"UniqueTypeNamesRule\"], _rules_UniqueEnumValueNamesRule_mjs__WEBPACK_IMPORTED_MODULE_29__[\"UniqueEnumValueNamesRule\"], _rules_UniqueFieldDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_30__[\"UniqueFieldDefinitionNamesRule\"], _rules_UniqueDirectiveNamesRule_mjs__WEBPACK_IMPORTED_MODULE_31__[\"UniqueDirectiveNamesRule\"], _rules_KnownTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_4__[\"KnownTypeNamesRule\"], _rules_KnownDirectivesRule_mjs__WEBPACK_IMPORTED_MODULE_17__[\"KnownDirectivesRule\"], _rules_UniqueDirectivesPerLocationRule_mjs__WEBPACK_IMPORTED_MODULE_18__[\"UniqueDirectivesPerLocationRule\"], _rules_PossibleTypeExtensionsRule_mjs__WEBPACK_IMPORTED_MODULE_32__[\"PossibleTypeExtensionsRule\"], _rules_KnownArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_19__[\"KnownArgumentNamesOnDirectivesRule\"], _rules_UniqueArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_20__[\"UniqueArgumentNamesRule\"], _rules_UniqueInputFieldNamesRule_mjs__WEBPACK_IMPORTED_MODULE_25__[\"UniqueInputFieldNamesRule\"], _rules_ProvidedRequiredArgumentsRule_mjs__WEBPACK_IMPORTED_MODULE_22__[\"ProvidedRequiredArgumentsOnDirectivesRule\"]]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9zcGVjaWZpZWRSdWxlcy5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3NwZWNpZmllZFJ1bGVzLm1qcz8zMDA5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNwZWMgU2VjdGlvbjogXCJFeGVjdXRhYmxlIERlZmluaXRpb25zXCJcbmltcG9ydCB7IEV4ZWN1dGFibGVEZWZpbml0aW9uc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9FeGVjdXRhYmxlRGVmaW5pdGlvbnNSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiT3BlcmF0aW9uIE5hbWUgVW5pcXVlbmVzc1wiXG5cbmltcG9ydCB7IFVuaXF1ZU9wZXJhdGlvbk5hbWVzUnVsZSB9IGZyb20gXCIuL3J1bGVzL1VuaXF1ZU9wZXJhdGlvbk5hbWVzUnVsZS5tanNcIjsgLy8gU3BlYyBTZWN0aW9uOiBcIkxvbmUgQW5vbnltb3VzIE9wZXJhdGlvblwiXG5cbmltcG9ydCB7IExvbmVBbm9ueW1vdXNPcGVyYXRpb25SdWxlIH0gZnJvbSBcIi4vcnVsZXMvTG9uZUFub255bW91c09wZXJhdGlvblJ1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJTdWJzY3JpcHRpb25zIHdpdGggU2luZ2xlIFJvb3QgRmllbGRcIlxuXG5pbXBvcnQgeyBTaW5nbGVGaWVsZFN1YnNjcmlwdGlvbnNSdWxlIH0gZnJvbSBcIi4vcnVsZXMvU2luZ2xlRmllbGRTdWJzY3JpcHRpb25zUnVsZS5tanNcIjsgLy8gU3BlYyBTZWN0aW9uOiBcIkZyYWdtZW50IFNwcmVhZCBUeXBlIEV4aXN0ZW5jZVwiXG5cbmltcG9ydCB7IEtub3duVHlwZU5hbWVzUnVsZSB9IGZyb20gXCIuL3J1bGVzL0tub3duVHlwZU5hbWVzUnVsZS5tanNcIjsgLy8gU3BlYyBTZWN0aW9uOiBcIkZyYWdtZW50cyBvbiBDb21wb3NpdGUgVHlwZXNcIlxuXG5pbXBvcnQgeyBGcmFnbWVudHNPbkNvbXBvc2l0ZVR5cGVzUnVsZSB9IGZyb20gXCIuL3J1bGVzL0ZyYWdtZW50c09uQ29tcG9zaXRlVHlwZXNSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiVmFyaWFibGVzIGFyZSBJbnB1dCBUeXBlc1wiXG5cbmltcG9ydCB7IFZhcmlhYmxlc0FyZUlucHV0VHlwZXNSdWxlIH0gZnJvbSBcIi4vcnVsZXMvVmFyaWFibGVzQXJlSW5wdXRUeXBlc1J1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJMZWFmIEZpZWxkIFNlbGVjdGlvbnNcIlxuXG5pbXBvcnQgeyBTY2FsYXJMZWFmc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9TY2FsYXJMZWFmc1J1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJGaWVsZCBTZWxlY3Rpb25zIG9uIE9iamVjdHMsIEludGVyZmFjZXMsIGFuZCBVbmlvbnMgVHlwZXNcIlxuXG5pbXBvcnQgeyBGaWVsZHNPbkNvcnJlY3RUeXBlUnVsZSB9IGZyb20gXCIuL3J1bGVzL0ZpZWxkc09uQ29ycmVjdFR5cGVSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiRnJhZ21lbnQgTmFtZSBVbmlxdWVuZXNzXCJcblxuaW1wb3J0IHsgVW5pcXVlRnJhZ21lbnROYW1lc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9VbmlxdWVGcmFnbWVudE5hbWVzUnVsZS5tanNcIjsgLy8gU3BlYyBTZWN0aW9uOiBcIkZyYWdtZW50IHNwcmVhZCB0YXJnZXQgZGVmaW5lZFwiXG5cbmltcG9ydCB7IEtub3duRnJhZ21lbnROYW1lc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9Lbm93bkZyYWdtZW50TmFtZXNSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiRnJhZ21lbnRzIG11c3QgYmUgdXNlZFwiXG5cbmltcG9ydCB7IE5vVW51c2VkRnJhZ21lbnRzUnVsZSB9IGZyb20gXCIuL3J1bGVzL05vVW51c2VkRnJhZ21lbnRzUnVsZS5tanNcIjsgLy8gU3BlYyBTZWN0aW9uOiBcIkZyYWdtZW50IHNwcmVhZCBpcyBwb3NzaWJsZVwiXG5cbmltcG9ydCB7IFBvc3NpYmxlRnJhZ21lbnRTcHJlYWRzUnVsZSB9IGZyb20gXCIuL3J1bGVzL1Bvc3NpYmxlRnJhZ21lbnRTcHJlYWRzUnVsZS5tanNcIjsgLy8gU3BlYyBTZWN0aW9uOiBcIkZyYWdtZW50cyBtdXN0IG5vdCBmb3JtIGN5Y2xlc1wiXG5cbmltcG9ydCB7IE5vRnJhZ21lbnRDeWNsZXNSdWxlIH0gZnJvbSBcIi4vcnVsZXMvTm9GcmFnbWVudEN5Y2xlc1J1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJWYXJpYWJsZSBVbmlxdWVuZXNzXCJcblxuaW1wb3J0IHsgVW5pcXVlVmFyaWFibGVOYW1lc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9VbmlxdWVWYXJpYWJsZU5hbWVzUnVsZS5tanNcIjsgLy8gU3BlYyBTZWN0aW9uOiBcIkFsbCBWYXJpYWJsZSBVc2VkIERlZmluZWRcIlxuXG5pbXBvcnQgeyBOb1VuZGVmaW5lZFZhcmlhYmxlc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9Ob1VuZGVmaW5lZFZhcmlhYmxlc1J1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJBbGwgVmFyaWFibGVzIFVzZWRcIlxuXG5pbXBvcnQgeyBOb1VudXNlZFZhcmlhYmxlc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9Ob1VudXNlZFZhcmlhYmxlc1J1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJEaXJlY3RpdmVzIEFyZSBEZWZpbmVkXCJcblxuaW1wb3J0IHsgS25vd25EaXJlY3RpdmVzUnVsZSB9IGZyb20gXCIuL3J1bGVzL0tub3duRGlyZWN0aXZlc1J1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJEaXJlY3RpdmVzIEFyZSBVbmlxdWUgUGVyIExvY2F0aW9uXCJcblxuaW1wb3J0IHsgVW5pcXVlRGlyZWN0aXZlc1BlckxvY2F0aW9uUnVsZSB9IGZyb20gXCIuL3J1bGVzL1VuaXF1ZURpcmVjdGl2ZXNQZXJMb2NhdGlvblJ1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJBcmd1bWVudCBOYW1lc1wiXG5cbmltcG9ydCB7IEtub3duQXJndW1lbnROYW1lc1J1bGUsIEtub3duQXJndW1lbnROYW1lc09uRGlyZWN0aXZlc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9Lbm93bkFyZ3VtZW50TmFtZXNSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiQXJndW1lbnQgVW5pcXVlbmVzc1wiXG5cbmltcG9ydCB7IFVuaXF1ZUFyZ3VtZW50TmFtZXNSdWxlIH0gZnJvbSBcIi4vcnVsZXMvVW5pcXVlQXJndW1lbnROYW1lc1J1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJWYWx1ZSBUeXBlIENvcnJlY3RuZXNzXCJcblxuaW1wb3J0IHsgVmFsdWVzT2ZDb3JyZWN0VHlwZVJ1bGUgfSBmcm9tIFwiLi9ydWxlcy9WYWx1ZXNPZkNvcnJlY3RUeXBlUnVsZS5tanNcIjsgLy8gU3BlYyBTZWN0aW9uOiBcIkFyZ3VtZW50IE9wdGlvbmFsaXR5XCJcblxuaW1wb3J0IHsgUHJvdmlkZWRSZXF1aXJlZEFyZ3VtZW50c1J1bGUsIFByb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNPbkRpcmVjdGl2ZXNSdWxlIH0gZnJvbSBcIi4vcnVsZXMvUHJvdmlkZWRSZXF1aXJlZEFyZ3VtZW50c1J1bGUubWpzXCI7IC8vIFNwZWMgU2VjdGlvbjogXCJBbGwgVmFyaWFibGUgVXNhZ2VzIEFyZSBBbGxvd2VkXCJcblxuaW1wb3J0IHsgVmFyaWFibGVzSW5BbGxvd2VkUG9zaXRpb25SdWxlIH0gZnJvbSBcIi4vcnVsZXMvVmFyaWFibGVzSW5BbGxvd2VkUG9zaXRpb25SdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiRmllbGQgU2VsZWN0aW9uIE1lcmdpbmdcIlxuXG5pbXBvcnQgeyBPdmVybGFwcGluZ0ZpZWxkc0NhbkJlTWVyZ2VkUnVsZSB9IGZyb20gXCIuL3J1bGVzL092ZXJsYXBwaW5nRmllbGRzQ2FuQmVNZXJnZWRSdWxlLm1qc1wiOyAvLyBTcGVjIFNlY3Rpb246IFwiSW5wdXQgT2JqZWN0IEZpZWxkIFVuaXF1ZW5lc3NcIlxuXG5pbXBvcnQgeyBVbmlxdWVJbnB1dEZpZWxkTmFtZXNSdWxlIH0gZnJvbSBcIi4vcnVsZXMvVW5pcXVlSW5wdXRGaWVsZE5hbWVzUnVsZS5tanNcIjsgLy8gU0RMLXNwZWNpZmljIHZhbGlkYXRpb24gcnVsZXNcblxuaW1wb3J0IHsgTG9uZVNjaGVtYURlZmluaXRpb25SdWxlIH0gZnJvbSBcIi4vcnVsZXMvTG9uZVNjaGVtYURlZmluaXRpb25SdWxlLm1qc1wiO1xuaW1wb3J0IHsgVW5pcXVlT3BlcmF0aW9uVHlwZXNSdWxlIH0gZnJvbSBcIi4vcnVsZXMvVW5pcXVlT3BlcmF0aW9uVHlwZXNSdWxlLm1qc1wiO1xuaW1wb3J0IHsgVW5pcXVlVHlwZU5hbWVzUnVsZSB9IGZyb20gXCIuL3J1bGVzL1VuaXF1ZVR5cGVOYW1lc1J1bGUubWpzXCI7XG5pbXBvcnQgeyBVbmlxdWVFbnVtVmFsdWVOYW1lc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9VbmlxdWVFbnVtVmFsdWVOYW1lc1J1bGUubWpzXCI7XG5pbXBvcnQgeyBVbmlxdWVGaWVsZERlZmluaXRpb25OYW1lc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9VbmlxdWVGaWVsZERlZmluaXRpb25OYW1lc1J1bGUubWpzXCI7XG5pbXBvcnQgeyBVbmlxdWVEaXJlY3RpdmVOYW1lc1J1bGUgfSBmcm9tIFwiLi9ydWxlcy9VbmlxdWVEaXJlY3RpdmVOYW1lc1J1bGUubWpzXCI7XG5pbXBvcnQgeyBQb3NzaWJsZVR5cGVFeHRlbnNpb25zUnVsZSB9IGZyb20gXCIuL3J1bGVzL1Bvc3NpYmxlVHlwZUV4dGVuc2lvbnNSdWxlLm1qc1wiO1xuLyoqXG4gKiBUaGlzIHNldCBpbmNsdWRlcyBhbGwgdmFsaWRhdGlvbiBydWxlcyBkZWZpbmVkIGJ5IHRoZSBHcmFwaFFMIHNwZWMuXG4gKlxuICogVGhlIG9yZGVyIG9mIHRoZSBydWxlcyBpbiB0aGlzIGxpc3QgaGFzIGJlZW4gYWRqdXN0ZWQgdG8gbGVhZCB0byB0aGVcbiAqIG1vc3QgY2xlYXIgb3V0cHV0IHdoZW4gZW5jb3VudGVyaW5nIG11bHRpcGxlIHZhbGlkYXRpb24gZXJyb3JzLlxuICovXG5cbmV4cG9ydCB2YXIgc3BlY2lmaWVkUnVsZXMgPSBPYmplY3QuZnJlZXplKFtFeGVjdXRhYmxlRGVmaW5pdGlvbnNSdWxlLCBVbmlxdWVPcGVyYXRpb25OYW1lc1J1bGUsIExvbmVBbm9ueW1vdXNPcGVyYXRpb25SdWxlLCBTaW5nbGVGaWVsZFN1YnNjcmlwdGlvbnNSdWxlLCBLbm93blR5cGVOYW1lc1J1bGUsIEZyYWdtZW50c09uQ29tcG9zaXRlVHlwZXNSdWxlLCBWYXJpYWJsZXNBcmVJbnB1dFR5cGVzUnVsZSwgU2NhbGFyTGVhZnNSdWxlLCBGaWVsZHNPbkNvcnJlY3RUeXBlUnVsZSwgVW5pcXVlRnJhZ21lbnROYW1lc1J1bGUsIEtub3duRnJhZ21lbnROYW1lc1J1bGUsIE5vVW51c2VkRnJhZ21lbnRzUnVsZSwgUG9zc2libGVGcmFnbWVudFNwcmVhZHNSdWxlLCBOb0ZyYWdtZW50Q3ljbGVzUnVsZSwgVW5pcXVlVmFyaWFibGVOYW1lc1J1bGUsIE5vVW5kZWZpbmVkVmFyaWFibGVzUnVsZSwgTm9VbnVzZWRWYXJpYWJsZXNSdWxlLCBLbm93bkRpcmVjdGl2ZXNSdWxlLCBVbmlxdWVEaXJlY3RpdmVzUGVyTG9jYXRpb25SdWxlLCBLbm93bkFyZ3VtZW50TmFtZXNSdWxlLCBVbmlxdWVBcmd1bWVudE5hbWVzUnVsZSwgVmFsdWVzT2ZDb3JyZWN0VHlwZVJ1bGUsIFByb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNSdWxlLCBWYXJpYWJsZXNJbkFsbG93ZWRQb3NpdGlvblJ1bGUsIE92ZXJsYXBwaW5nRmllbGRzQ2FuQmVNZXJnZWRSdWxlLCBVbmlxdWVJbnB1dEZpZWxkTmFtZXNSdWxlXSk7XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCB2YXIgc3BlY2lmaWVkU0RMUnVsZXMgPSBPYmplY3QuZnJlZXplKFtMb25lU2NoZW1hRGVmaW5pdGlvblJ1bGUsIFVuaXF1ZU9wZXJhdGlvblR5cGVzUnVsZSwgVW5pcXVlVHlwZU5hbWVzUnVsZSwgVW5pcXVlRW51bVZhbHVlTmFtZXNSdWxlLCBVbmlxdWVGaWVsZERlZmluaXRpb25OYW1lc1J1bGUsIFVuaXF1ZURpcmVjdGl2ZU5hbWVzUnVsZSwgS25vd25UeXBlTmFtZXNSdWxlLCBLbm93bkRpcmVjdGl2ZXNSdWxlLCBVbmlxdWVEaXJlY3RpdmVzUGVyTG9jYXRpb25SdWxlLCBQb3NzaWJsZVR5cGVFeHRlbnNpb25zUnVsZSwgS25vd25Bcmd1bWVudE5hbWVzT25EaXJlY3RpdmVzUnVsZSwgVW5pcXVlQXJndW1lbnROYW1lc1J1bGUsIFVuaXF1ZUlucHV0RmllbGROYW1lc1J1bGUsIFByb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNPbkRpcmVjdGl2ZXNSdWxlXSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/specifiedRules.mjs\n");
1821
1822/***/ }),
1823
1824/***/ "../../../node_modules/graphql/validation/validate.mjs":
1825/*!****************************************************************************************!*\
1826 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/validation/validate.mjs ***!
1827 \****************************************************************************************/
1828/*! exports provided: validate, validateSDL, assertValidSDL, assertValidSDLExtension */
1829/***/ (function(module, __webpack_exports__, __webpack_require__) {
1830
1831"use strict";
1832eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validate\", function() { return validate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateSDL\", function() { return validateSDL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertValidSDL\", function() { return assertValidSDL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assertValidSDLExtension\", function() { return assertValidSDLExtension; });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_visitor_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n/* harmony import */ var _type_validate_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../type/validate.mjs */ \"../../../node_modules/graphql/type/validate.mjs\");\n/* harmony import */ var _utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utilities/TypeInfo.mjs */ \"../../../node_modules/graphql/utilities/TypeInfo.mjs\");\n/* harmony import */ var _specifiedRules_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./specifiedRules.mjs */ \"../../../node_modules/graphql/validation/specifiedRules.mjs\");\n/* harmony import */ var _ValidationContext_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ValidationContext.mjs */ \"../../../node_modules/graphql/validation/ValidationContext.mjs\");\n\n\n\n\n\n\n\n/**\n * Implements the \"Validation\" section of the spec.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the document is valid.\n *\n * A list of specific validation rules may be provided. If not provided, the\n * default list of rules defined by the GraphQL specification will be used.\n *\n * Each validation rules is a function which returns a visitor\n * (see the language/visitor API). Visitor methods are expected to return\n * GraphQLErrors, or Arrays of GraphQLErrors when invalid.\n *\n * Optionally a custom TypeInfo instance may be provided. If not provided, one\n * will be created from the provided schema.\n */\n\nfunction validate(schema, documentAST) {\n var rules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _specifiedRules_mjs__WEBPACK_IMPORTED_MODULE_5__[\"specifiedRules\"];\n var typeInfo = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new _utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_4__[\"TypeInfo\"](schema);\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n maxErrors: undefined\n };\n documentAST || Object(_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0, 'Must provide document.'); // If the schema used for validation is invalid, throw an error.\n\n Object(_type_validate_mjs__WEBPACK_IMPORTED_MODULE_3__[\"assertValidSchema\"])(schema);\n var abortObj = Object.freeze({});\n var errors = [];\n var context = new _ValidationContext_mjs__WEBPACK_IMPORTED_MODULE_6__[\"ValidationContext\"](schema, documentAST, typeInfo, function (error) {\n if (options.maxErrors != null && errors.length >= options.maxErrors) {\n errors.push(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__[\"GraphQLError\"]('Too many validation errors, error limit reached. Validation aborted.'));\n throw abortObj;\n }\n\n errors.push(error);\n }); // This uses a specialized visitor which runs multiple visitors in parallel,\n // while maintaining the visitor skip and break API.\n\n var visitor = Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_2__[\"visitInParallel\"])(rules.map(function (rule) {\n return rule(context);\n })); // Visit the whole document with each instance of all provided rules.\n\n try {\n Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_2__[\"visit\"])(documentAST, Object(_utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_4__[\"visitWithTypeInfo\"])(typeInfo, visitor));\n } catch (e) {\n if (e !== abortObj) {\n throw e;\n }\n }\n\n return errors;\n}\n/**\n * @internal\n */\n\nfunction validateSDL(documentAST, schemaToExtend) {\n var rules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _specifiedRules_mjs__WEBPACK_IMPORTED_MODULE_5__[\"specifiedSDLRules\"];\n var errors = [];\n var context = new _ValidationContext_mjs__WEBPACK_IMPORTED_MODULE_6__[\"SDLValidationContext\"](documentAST, schemaToExtend, function (error) {\n errors.push(error);\n });\n var visitors = rules.map(function (rule) {\n return rule(context);\n });\n Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_2__[\"visit\"])(documentAST, Object(_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_2__[\"visitInParallel\"])(visitors));\n return errors;\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nfunction assertValidSDL(documentAST) {\n var errors = validateSDL(documentAST);\n\n if (errors.length !== 0) {\n throw new Error(errors.map(function (error) {\n return error.message;\n }).join('\\n\\n'));\n }\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nfunction assertValidSDLExtension(documentAST, schema) {\n var errors = validateSDL(documentAST, schema);\n\n if (errors.length !== 0) {\n throw new Error(errors.map(function (error) {\n return error.message;\n }).join('\\n\\n'));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi92YWxpZGF0ZS5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3ZhbGlkYXRlLm1qcz8zNGQ2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZXZBc3NlcnQgZnJvbSBcIi4uL2pzdXRpbHMvZGV2QXNzZXJ0Lm1qc1wiO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanNcIjtcbmltcG9ydCB7IHZpc2l0LCB2aXNpdEluUGFyYWxsZWwgfSBmcm9tIFwiLi4vbGFuZ3VhZ2UvdmlzaXRvci5tanNcIjtcbmltcG9ydCB7IGFzc2VydFZhbGlkU2NoZW1hIH0gZnJvbSBcIi4uL3R5cGUvdmFsaWRhdGUubWpzXCI7XG5pbXBvcnQgeyBUeXBlSW5mbywgdmlzaXRXaXRoVHlwZUluZm8gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL1R5cGVJbmZvLm1qc1wiO1xuaW1wb3J0IHsgc3BlY2lmaWVkUnVsZXMsIHNwZWNpZmllZFNETFJ1bGVzIH0gZnJvbSBcIi4vc3BlY2lmaWVkUnVsZXMubWpzXCI7XG5pbXBvcnQgeyBTRExWYWxpZGF0aW9uQ29udGV4dCwgVmFsaWRhdGlvbkNvbnRleHQgfSBmcm9tIFwiLi9WYWxpZGF0aW9uQ29udGV4dC5tanNcIjtcbi8qKlxuICogSW1wbGVtZW50cyB0aGUgXCJWYWxpZGF0aW9uXCIgc2VjdGlvbiBvZiB0aGUgc3BlYy5cbiAqXG4gKiBWYWxpZGF0aW9uIHJ1bnMgc3luY2hyb25vdXNseSwgcmV0dXJuaW5nIGFuIGFycmF5IG9mIGVuY291bnRlcmVkIGVycm9ycywgb3JcbiAqIGFuIGVtcHR5IGFycmF5IGlmIG5vIGVycm9ycyB3ZXJlIGVuY291bnRlcmVkIGFuZCB0aGUgZG9jdW1lbnQgaXMgdmFsaWQuXG4gKlxuICogQSBsaXN0IG9mIHNwZWNpZmljIHZhbGlkYXRpb24gcnVsZXMgbWF5IGJlIHByb3ZpZGVkLiBJZiBub3QgcHJvdmlkZWQsIHRoZVxuICogZGVmYXVsdCBsaXN0IG9mIHJ1bGVzIGRlZmluZWQgYnkgdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbiB3aWxsIGJlIHVzZWQuXG4gKlxuICogRWFjaCB2YWxpZGF0aW9uIHJ1bGVzIGlzIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhIHZpc2l0b3JcbiAqIChzZWUgdGhlIGxhbmd1YWdlL3Zpc2l0b3IgQVBJKS4gVmlzaXRvciBtZXRob2RzIGFyZSBleHBlY3RlZCB0byByZXR1cm5cbiAqIEdyYXBoUUxFcnJvcnMsIG9yIEFycmF5cyBvZiBHcmFwaFFMRXJyb3JzIHdoZW4gaW52YWxpZC5cbiAqXG4gKiBPcHRpb25hbGx5IGEgY3VzdG9tIFR5cGVJbmZvIGluc3RhbmNlIG1heSBiZSBwcm92aWRlZC4gSWYgbm90IHByb3ZpZGVkLCBvbmVcbiAqIHdpbGwgYmUgY3JlYXRlZCBmcm9tIHRoZSBwcm92aWRlZCBzY2hlbWEuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlKHNjaGVtYSwgZG9jdW1lbnRBU1QpIHtcbiAgdmFyIHJ1bGVzID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBzcGVjaWZpZWRSdWxlcztcbiAgdmFyIHR5cGVJbmZvID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiBuZXcgVHlwZUluZm8oc2NoZW1hKTtcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IHtcbiAgICBtYXhFcnJvcnM6IHVuZGVmaW5lZFxuICB9O1xuICBkb2N1bWVudEFTVCB8fCBkZXZBc3NlcnQoMCwgJ011c3QgcHJvdmlkZSBkb2N1bWVudC4nKTsgLy8gSWYgdGhlIHNjaGVtYSB1c2VkIGZvciB2YWxpZGF0aW9uIGlzIGludmFsaWQsIHRocm93IGFuIGVycm9yLlxuXG4gIGFzc2VydFZhbGlkU2NoZW1hKHNjaGVtYSk7XG4gIHZhciBhYm9ydE9iaiA9IE9iamVjdC5mcmVlemUoe30pO1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciBjb250ZXh0ID0gbmV3IFZhbGlkYXRpb25Db250ZXh0KHNjaGVtYSwgZG9jdW1lbnRBU1QsIHR5cGVJbmZvLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICBpZiAob3B0aW9ucy5tYXhFcnJvcnMgIT0gbnVsbCAmJiBlcnJvcnMubGVuZ3RoID49IG9wdGlvbnMubWF4RXJyb3JzKSB7XG4gICAgICBlcnJvcnMucHVzaChuZXcgR3JhcGhRTEVycm9yKCdUb28gbWFueSB2YWxpZGF0aW9uIGVycm9ycywgZXJyb3IgbGltaXQgcmVhY2hlZC4gVmFsaWRhdGlvbiBhYm9ydGVkLicpKTtcbiAgICAgIHRocm93IGFib3J0T2JqO1xuICAgIH1cblxuICAgIGVycm9ycy5wdXNoKGVycm9yKTtcbiAgfSk7IC8vIFRoaXMgdXNlcyBhIHNwZWNpYWxpemVkIHZpc2l0b3Igd2hpY2ggcnVucyBtdWx0aXBsZSB2aXNpdG9ycyBpbiBwYXJhbGxlbCxcbiAgLy8gd2hpbGUgbWFpbnRhaW5pbmcgdGhlIHZpc2l0b3Igc2tpcCBhbmQgYnJlYWsgQVBJLlxuXG4gIHZhciB2aXNpdG9yID0gdmlzaXRJblBhcmFsbGVsKHJ1bGVzLm1hcChmdW5jdGlvbiAocnVsZSkge1xuICAgIHJldHVybiBydWxlKGNvbnRleHQpO1xuICB9KSk7IC8vIFZpc2l0IHRoZSB3aG9sZSBkb2N1bWVudCB3aXRoIGVhY2ggaW5zdGFuY2Ugb2YgYWxsIHByb3ZpZGVkIHJ1bGVzLlxuXG4gIHRyeSB7XG4gICAgdmlzaXQoZG9jdW1lbnRBU1QsIHZpc2l0V2l0aFR5cGVJbmZvKHR5cGVJbmZvLCB2aXNpdG9yKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSAhPT0gYWJvcnRPYmopIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVycm9ycztcbn1cbi8qKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU0RMKGRvY3VtZW50QVNULCBzY2hlbWFUb0V4dGVuZCkge1xuICB2YXIgcnVsZXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHNwZWNpZmllZFNETFJ1bGVzO1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciBjb250ZXh0ID0gbmV3IFNETFZhbGlkYXRpb25Db250ZXh0KGRvY3VtZW50QVNULCBzY2hlbWFUb0V4dGVuZCwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgZXJyb3JzLnB1c2goZXJyb3IpO1xuICB9KTtcbiAgdmFyIHZpc2l0b3JzID0gcnVsZXMubWFwKGZ1bmN0aW9uIChydWxlKSB7XG4gICAgcmV0dXJuIHJ1bGUoY29udGV4dCk7XG4gIH0pO1xuICB2aXNpdChkb2N1bWVudEFTVCwgdmlzaXRJblBhcmFsbGVsKHZpc2l0b3JzKSk7XG4gIHJldHVybiBlcnJvcnM7XG59XG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gd2hpY2ggYXNzZXJ0cyBhIFNETCBkb2N1bWVudCBpcyB2YWxpZCBieSB0aHJvd2luZyBhbiBlcnJvclxuICogaWYgaXQgaXMgaW52YWxpZC5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VmFsaWRTREwoZG9jdW1lbnRBU1QpIHtcbiAgdmFyIGVycm9ycyA9IHZhbGlkYXRlU0RMKGRvY3VtZW50QVNUKTtcblxuICBpZiAoZXJyb3JzLmxlbmd0aCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvcnMubWFwKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgcmV0dXJuIGVycm9yLm1lc3NhZ2U7XG4gICAgfSkuam9pbignXFxuXFxuJykpO1xuICB9XG59XG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gd2hpY2ggYXNzZXJ0cyBhIFNETCBkb2N1bWVudCBpcyB2YWxpZCBieSB0aHJvd2luZyBhbiBlcnJvclxuICogaWYgaXQgaXMgaW52YWxpZC5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VmFsaWRTRExFeHRlbnNpb24oZG9jdW1lbnRBU1QsIHNjaGVtYSkge1xuICB2YXIgZXJyb3JzID0gdmFsaWRhdGVTREwoZG9jdW1lbnRBU1QsIHNjaGVtYSk7XG5cbiAgaWYgKGVycm9ycy5sZW5ndGggIT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLm1hcChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBlcnJvci5tZXNzYWdlO1xuICAgIH0pLmpvaW4oJ1xcblxcbicpKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/validation/validate.mjs\n");
1833
1834/***/ }),
1835
1836/***/ "../../../node_modules/graphql/version.mjs":
1837/*!****************************************************************************!*\
1838 !*** /home/runner/work/graphiql/graphiql/node_modules/graphql/version.mjs ***!
1839 \****************************************************************************/
1840/*! exports provided: version, versionInfo */
1841/***/ (function(module, __webpack_exports__, __webpack_require__) {
1842
1843"use strict";
1844eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"versionInfo\", function() { return versionInfo; });\n/**\n * Note: This file is autogenerated using \"resources/gen-version.js\" script and\n * automatically updated by \"npm version\" command.\n */\n\n/**\n * A string containing the version of the GraphQL.js library\n */\nvar version = '15.4.0-experimental-stream-defer.1';\n/**\n * An object containing the components of the GraphQL.js version string\n */\n\nvar versionInfo = Object.freeze({\n major: 15,\n minor: 4,\n patch: 0,\n preReleaseTag: 'experimental-stream-defer.1'\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmVyc2lvbi5tanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvZ3JhcGhxbC92ZXJzaW9uLm1qcz9lNzg1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTm90ZTogVGhpcyBmaWxlIGlzIGF1dG9nZW5lcmF0ZWQgdXNpbmcgXCJyZXNvdXJjZXMvZ2VuLXZlcnNpb24uanNcIiBzY3JpcHQgYW5kXG4gKiBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgYnkgXCJucG0gdmVyc2lvblwiIGNvbW1hbmQuXG4gKi9cblxuLyoqXG4gKiBBIHN0cmluZyBjb250YWluaW5nIHRoZSB2ZXJzaW9uIG9mIHRoZSBHcmFwaFFMLmpzIGxpYnJhcnlcbiAqL1xuZXhwb3J0IHZhciB2ZXJzaW9uID0gJzE1LjQuMC1leHBlcmltZW50YWwtc3RyZWFtLWRlZmVyLjEnO1xuLyoqXG4gKiBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgY29tcG9uZW50cyBvZiB0aGUgR3JhcGhRTC5qcyB2ZXJzaW9uIHN0cmluZ1xuICovXG5cbmV4cG9ydCB2YXIgdmVyc2lvbkluZm8gPSBPYmplY3QuZnJlZXplKHtcbiAgbWFqb3I6IDE1LFxuICBtaW5vcjogNCxcbiAgcGF0Y2g6IDAsXG4gIHByZVJlbGVhc2VUYWc6ICdleHBlcmltZW50YWwtc3RyZWFtLWRlZmVyLjEnXG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/graphql/version.mjs\n");
1845
1846/***/ }),
1847
1848/***/ "../../../node_modules/linkify-it/index.js":
1849/*!****************************************************************************!*\
1850 !*** /home/runner/work/graphiql/graphiql/node_modules/linkify-it/index.js ***!
1851 \****************************************************************************/
1852/*! no static exports found */
1853/***/ (function(module, exports, __webpack_require__) {
1854
1855eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict'; ////////////////////////////////////////////////////////////////////////////////\n // Helpers\n // Merge objects\n //\n\n function assign(obj\n /*from1, from2, from3, ...*/\n ) {\n var sources = Array.prototype.slice.call(arguments, 1);\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n return obj;\n }\n\n function _class(obj) {\n return Object.prototype.toString.call(obj);\n }\n\n function isString(obj) {\n return _class(obj) === '[object String]';\n }\n\n function isObject(obj) {\n return _class(obj) === '[object Object]';\n }\n\n function isRegExp(obj) {\n return _class(obj) === '[object RegExp]';\n }\n\n function isFunction(obj) {\n return _class(obj) === '[object Function]';\n }\n\n function escapeRE(str) {\n return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&');\n } ////////////////////////////////////////////////////////////////////////////////\n\n\n var defaultOptions = {\n fuzzyLink: true,\n fuzzyEmail: true,\n fuzzyIP: false\n };\n\n function isOptionsObj(obj) {\n return Object.keys(obj || {}).reduce(function (acc, k) {\n return acc || defaultOptions.hasOwnProperty(k);\n }, false);\n }\n\n var defaultSchemas = {\n 'http:': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.http = new RegExp('^\\\\/\\\\/' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i');\n }\n\n if (self.re.http.test(tail)) {\n return tail.match(self.re.http)[0].length;\n }\n\n return 0;\n }\n },\n 'https:': 'http:',\n 'ftp:': 'http:',\n '//': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.no_http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.no_http = new RegExp('^' + self.re.src_auth + // Don't allow single-level domains, because of false positives like '//test'\n // with code comments\n '(?:localhost|(?:(?:' + self.re.src_domain + ')\\\\.)+' + self.re.src_domain_root + ')' + self.re.src_port + self.re.src_host_terminator + self.re.src_path, 'i');\n }\n\n if (self.re.no_http.test(tail)) {\n // should not be `://` & `///`, that protects from errors in protocol name\n if (pos >= 3 && text[pos - 3] === ':') {\n return 0;\n }\n\n if (pos >= 3 && text[pos - 3] === '/') {\n return 0;\n }\n\n return tail.match(self.re.no_http)[0].length;\n }\n\n return 0;\n }\n },\n 'mailto:': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.mailto) {\n self.re.mailto = new RegExp('^' + self.re.src_email_name + '@' + self.re.src_host_strict, 'i');\n }\n\n if (self.re.mailto.test(tail)) {\n return tail.match(self.re.mailto)[0].length;\n }\n\n return 0;\n }\n }\n };\n /*eslint-disable max-len*/\n // RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\n\n var tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]'; // DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\n\n var tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|');\n /*eslint-enable max-len*/\n ////////////////////////////////////////////////////////////////////////////////\n\n function resetScanCache(self) {\n self.__index__ = -1;\n self.__text_cache__ = '';\n }\n\n function createValidator(re) {\n return function (text, pos) {\n var tail = text.slice(pos);\n\n if (re.test(tail)) {\n return tail.match(re)[0].length;\n }\n\n return 0;\n };\n }\n\n function createNormalizer() {\n return function (match, self) {\n self.normalize(match);\n };\n } // Schemas compiler. Build regexps.\n //\n\n\n function compile(self) {\n // Load & clone RE patterns.\n var re = self.re = __webpack_require__(/*! ./lib/re */ \"../../../node_modules/linkify-it/lib/re.js\")(self.__opts__); // Define dynamic patterns\n\n\n var tlds = self.__tlds__.slice();\n\n self.onCompile();\n\n if (!self.__tlds_replaced__) {\n tlds.push(tlds_2ch_src_re);\n }\n\n tlds.push(re.src_xn);\n re.src_tlds = tlds.join('|');\n\n function untpl(tpl) {\n return tpl.replace('%TLDS%', re.src_tlds);\n }\n\n re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i');\n re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i');\n re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i');\n re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i'); //\n // Compile each schema\n //\n\n var aliases = [];\n self.__compiled__ = {}; // Reset compiled data\n\n function schemaError(name, val) {\n throw new Error('(LinkifyIt) Invalid schema \"' + name + '\": ' + val);\n }\n\n Object.keys(self.__schemas__).forEach(function (name) {\n var val = self.__schemas__[name]; // skip disabled methods\n\n if (val === null) {\n return;\n }\n\n var compiled = {\n validate: null,\n link: null\n };\n self.__compiled__[name] = compiled;\n\n if (isObject(val)) {\n if (isRegExp(val.validate)) {\n compiled.validate = createValidator(val.validate);\n } else if (isFunction(val.validate)) {\n compiled.validate = val.validate;\n } else {\n schemaError(name, val);\n }\n\n if (isFunction(val.normalize)) {\n compiled.normalize = val.normalize;\n } else if (!val.normalize) {\n compiled.normalize = createNormalizer();\n } else {\n schemaError(name, val);\n }\n\n return;\n }\n\n if (isString(val)) {\n aliases.push(name);\n return;\n }\n\n schemaError(name, val);\n }); //\n // Compile postponed aliases\n //\n\n aliases.forEach(function (alias) {\n if (!self.__compiled__[self.__schemas__[alias]]) {\n // Silently fail on missed schemas to avoid errons on disable.\n // schemaError(alias, self.__schemas__[alias]);\n return;\n }\n\n self.__compiled__[alias].validate = self.__compiled__[self.__schemas__[alias]].validate;\n self.__compiled__[alias].normalize = self.__compiled__[self.__schemas__[alias]].normalize;\n }); //\n // Fake record for guessed links\n //\n\n self.__compiled__[''] = {\n validate: null,\n normalize: createNormalizer()\n }; //\n // Build schema condition\n //\n\n var slist = Object.keys(self.__compiled__).filter(function (name) {\n // Filter disabled & fake schemas\n return name.length > 0 && self.__compiled__[name];\n }).map(escapeRE).join('|'); // (?!_) cause 1.5x slowdown\n\n self.re.schema_test = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'i');\n self.re.schema_search = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'ig');\n self.re.pretest = RegExp('(' + self.re.schema_test.source + ')|(' + self.re.host_fuzzy_test.source + ')|@', 'i'); //\n // Cleanup\n //\n\n resetScanCache(self);\n }\n /**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/\n\n\n function Match(self, shift) {\n var start = self.__index__,\n end = self.__last_index__,\n text = self.__text_cache__.slice(start, end);\n /**\n * Match#schema -> String\n *\n * Prefix (protocol) for matched string.\n **/\n\n\n this.schema = self.__schema__.toLowerCase();\n /**\n * Match#index -> Number\n *\n * First position of matched string.\n **/\n\n this.index = start + shift;\n /**\n * Match#lastIndex -> Number\n *\n * Next position after matched string.\n **/\n\n this.lastIndex = end + shift;\n /**\n * Match#raw -> String\n *\n * Matched string.\n **/\n\n this.raw = text;\n /**\n * Match#text -> String\n *\n * Notmalized text of matched string.\n **/\n\n this.text = text;\n /**\n * Match#url -> String\n *\n * Normalized url of matched string.\n **/\n\n this.url = text;\n }\n\n function createMatch(self, shift) {\n var match = new Match(self, shift);\n\n self.__compiled__[match.schema].normalize(match, self);\n\n return match;\n }\n /**\n * class LinkifyIt\n **/\n\n /**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n * for example). `linkify-it` makes shure that prefix is not preceeded with\n * alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n * - _String_ - just alias to existing rule\n * - _Object_\n * - _validate_ - validator function (should return matched length on success),\n * or `RegExp`.\n * - _normalize_ - optional function to normalize text & url of matched result\n * (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n * like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/\n\n\n function LinkifyIt(schemas, options) {\n if (!(this instanceof LinkifyIt)) {\n return new LinkifyIt(schemas, options);\n }\n\n if (!options) {\n if (isOptionsObj(schemas)) {\n options = schemas;\n schemas = {};\n }\n }\n\n this.__opts__ = assign({}, defaultOptions, options); // Cache last tested result. Used to skip repeating steps on next `match` call.\n\n this.__index__ = -1;\n this.__last_index__ = -1; // Next scan position\n\n this.__schema__ = '';\n this.__text_cache__ = '';\n this.__schemas__ = assign({}, defaultSchemas, schemas);\n this.__compiled__ = {};\n this.__tlds__ = tlds_default;\n this.__tlds_replaced__ = false;\n this.re = {};\n compile(this);\n }\n /** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/\n\n\n LinkifyIt.prototype.add = function add(schema, definition) {\n this.__schemas__[schema] = definition;\n compile(this);\n return this;\n };\n /** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/\n\n\n LinkifyIt.prototype.set = function set(options) {\n this.__opts__ = assign(this.__opts__, options);\n return this;\n };\n /**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/\n\n\n LinkifyIt.prototype.test = function test(text) {\n // Reset scan cache\n this.__text_cache__ = text;\n this.__index__ = -1;\n\n if (!text.length) {\n return false;\n }\n\n var m, ml, me, len, shift, next, re, tld_pos, at_pos; // try to scan for link with schema - that's the most simple rule\n\n if (this.re.schema_test.test(text)) {\n re = this.re.schema_search;\n re.lastIndex = 0;\n\n while ((m = re.exec(text)) !== null) {\n len = this.testSchemaAt(text, m[2], re.lastIndex);\n\n if (len) {\n this.__schema__ = m[2];\n this.__index__ = m.index + m[1].length;\n this.__last_index__ = m.index + m[0].length + len;\n break;\n }\n }\n }\n\n if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n // guess schemaless links\n tld_pos = text.search(this.re.host_fuzzy_test);\n\n if (tld_pos >= 0) {\n // if tld is located after found link - no need to check fuzzy pattern\n if (this.__index__ < 0 || tld_pos < this.__index__) {\n if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {\n shift = ml.index + ml[1].length;\n\n if (this.__index__ < 0 || shift < this.__index__) {\n this.__schema__ = '';\n this.__index__ = shift;\n this.__last_index__ = ml.index + ml[0].length;\n }\n }\n }\n }\n }\n\n if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n // guess schemaless emails\n at_pos = text.indexOf('@');\n\n if (at_pos >= 0) {\n // We can't skip this check, because this cases are possible:\n // 192.168.1.1@gmail.com, my.in@example.com\n if ((me = text.match(this.re.email_fuzzy)) !== null) {\n shift = me.index + me[1].length;\n next = me.index + me[0].length;\n\n if (this.__index__ < 0 || shift < this.__index__ || shift === this.__index__ && next > this.__last_index__) {\n this.__schema__ = 'mailto:';\n this.__index__ = shift;\n this.__last_index__ = next;\n }\n }\n }\n }\n\n return this.__index__ >= 0;\n };\n /**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/\n\n\n LinkifyIt.prototype.pretest = function pretest(text) {\n return this.re.pretest.test(text);\n };\n /**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/\n\n\n LinkifyIt.prototype.testSchemaAt = function testSchemaAt(text, schema, pos) {\n // If not supported schema check requested - terminate\n if (!this.__compiled__[schema.toLowerCase()]) {\n return 0;\n }\n\n return this.__compiled__[schema.toLowerCase()].validate(text, pos, this);\n };\n /**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n * protocol-neutral links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/\n\n\n LinkifyIt.prototype.match = function match(text) {\n var shift = 0,\n result = []; // Try to take previous element from cache, if .test() called before\n\n if (this.__index__ >= 0 && this.__text_cache__ === text) {\n result.push(createMatch(this, shift));\n shift = this.__last_index__;\n } // Cut head if cache was used\n\n\n var tail = shift ? text.slice(shift) : text; // Scan string until end reached\n\n while (this.test(tail)) {\n result.push(createMatch(this, shift));\n tail = tail.slice(this.__last_index__);\n shift += this.__last_index__;\n }\n\n if (result.length) {\n return result;\n }\n\n return null;\n };\n /** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n * are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/\n\n\n LinkifyIt.prototype.tlds = function tlds(list, keepOld) {\n list = Array.isArray(list) ? list : [list];\n\n if (!keepOld) {\n this.__tlds__ = list.slice();\n this.__tlds_replaced__ = true;\n compile(this);\n return this;\n }\n\n this.__tlds__ = this.__tlds__.concat(list).sort().filter(function (el, idx, arr) {\n return el !== arr[idx - 1];\n }).reverse();\n compile(this);\n return this;\n };\n /**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/\n\n\n LinkifyIt.prototype.normalize = function normalize(match) {\n // Do minimal possible changes by default. Need to collect feedback prior\n // to move forward https://github.com/markdown-it/linkify-it/issues/1\n if (!match.schema) {\n match.url = 'http://' + match.url;\n }\n\n if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {\n match.url = 'mailto:' + match.url;\n }\n };\n /**\n * LinkifyIt#onCompile()\n *\n * Override to modify basic RegExp-s.\n **/\n\n\n LinkifyIt.prototype.onCompile = function onCompile() {};\n\n module.exports = LinkifyIt;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xpbmtpZnktaXQvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbGlua2lmeS1pdC9pbmRleC5qcz84MDE2Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGVscGVyc1xuXG4vLyBNZXJnZSBvYmplY3RzXG4vL1xuZnVuY3Rpb24gYXNzaWduKG9iaiAvKmZyb20xLCBmcm9tMiwgZnJvbTMsIC4uLiovKSB7XG4gIHZhciBzb3VyY2VzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcblxuICBzb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgIGlmICghc291cmNlKSB7IHJldHVybjsgfVxuXG4gICAgT2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIG9ialtrZXldID0gc291cmNlW2tleV07XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBvYmo7XG59XG5cbmZ1bmN0aW9uIF9jbGFzcyhvYmopIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopOyB9XG5mdW5jdGlvbiBpc1N0cmluZyhvYmopIHsgcmV0dXJuIF9jbGFzcyhvYmopID09PSAnW29iamVjdCBTdHJpbmddJzsgfVxuZnVuY3Rpb24gaXNPYmplY3Qob2JqKSB7IHJldHVybiBfY2xhc3Mob2JqKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7IH1cbmZ1bmN0aW9uIGlzUmVnRXhwKG9iaikgeyByZXR1cm4gX2NsYXNzKG9iaikgPT09ICdbb2JqZWN0IFJlZ0V4cF0nOyB9XG5mdW5jdGlvbiBpc0Z1bmN0aW9uKG9iaikgeyByZXR1cm4gX2NsYXNzKG9iaikgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7IH1cblxuXG5mdW5jdGlvbiBlc2NhcGVSRShzdHIpIHsgcmV0dXJuIHN0ci5yZXBsYWNlKC9bLj8qK14kW1xcXVxcXFwoKXt9fC1dL2csICdcXFxcJCYnKTsgfVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5cbnZhciBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgZnV6enlMaW5rOiB0cnVlLFxuICBmdXp6eUVtYWlsOiB0cnVlLFxuICBmdXp6eUlQOiBmYWxzZVxufTtcblxuXG5mdW5jdGlvbiBpc09wdGlvbnNPYmoob2JqKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmogfHwge30pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBrKSB7XG4gICAgcmV0dXJuIGFjYyB8fCBkZWZhdWx0T3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShrKTtcbiAgfSwgZmFsc2UpO1xufVxuXG5cbnZhciBkZWZhdWx0U2NoZW1hcyA9IHtcbiAgJ2h0dHA6Jzoge1xuICAgIHZhbGlkYXRlOiBmdW5jdGlvbiAodGV4dCwgcG9zLCBzZWxmKSB7XG4gICAgICB2YXIgdGFpbCA9IHRleHQuc2xpY2UocG9zKTtcblxuICAgICAgaWYgKCFzZWxmLnJlLmh0dHApIHtcbiAgICAgICAgLy8gY29tcGlsZSBsYXppbHksIGJlY2F1c2UgXCJob3N0XCItY29udGFpbmluZyB2YXJpYWJsZXMgY2FuIGNoYW5nZSBvbiB0bGRzIHVwZGF0ZS5cbiAgICAgICAgc2VsZi5yZS5odHRwID0gIG5ldyBSZWdFeHAoXG4gICAgICAgICAgJ15cXFxcL1xcXFwvJyArIHNlbGYucmUuc3JjX2F1dGggKyBzZWxmLnJlLnNyY19ob3N0X3BvcnRfc3RyaWN0ICsgc2VsZi5yZS5zcmNfcGF0aCwgJ2knXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoc2VsZi5yZS5odHRwLnRlc3QodGFpbCkpIHtcbiAgICAgICAgcmV0dXJuIHRhaWwubWF0Y2goc2VsZi5yZS5odHRwKVswXS5sZW5ndGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH0sXG4gICdodHRwczonOiAgJ2h0dHA6JyxcbiAgJ2Z0cDonOiAgICAnaHR0cDonLFxuICAnLy8nOiAgICAgIHtcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKHRleHQsIHBvcywgc2VsZikge1xuICAgICAgdmFyIHRhaWwgPSB0ZXh0LnNsaWNlKHBvcyk7XG5cbiAgICAgIGlmICghc2VsZi5yZS5ub19odHRwKSB7XG4gICAgICAvLyBjb21waWxlIGxhemlseSwgYmVjYXVzZSBcImhvc3RcIi1jb250YWluaW5nIHZhcmlhYmxlcyBjYW4gY2hhbmdlIG9uIHRsZHMgdXBkYXRlLlxuICAgICAgICBzZWxmLnJlLm5vX2h0dHAgPSAgbmV3IFJlZ0V4cChcbiAgICAgICAgICAnXicgK1xuICAgICAgICAgIHNlbGYucmUuc3JjX2F1dGggK1xuICAgICAgICAgIC8vIERvbid0IGFsbG93IHNpbmdsZS1sZXZlbCBkb21haW5zLCBiZWNhdXNlIG9mIGZhbHNlIHBvc2l0aXZlcyBsaWtlICcvL3Rlc3QnXG4gICAgICAgICAgLy8gd2l0aCBjb2RlIGNvbW1lbnRzXG4gICAgICAgICAgJyg/OmxvY2FsaG9zdHwoPzooPzonICsgc2VsZi5yZS5zcmNfZG9tYWluICsgJylcXFxcLikrJyArIHNlbGYucmUuc3JjX2RvbWFpbl9yb290ICsgJyknICtcbiAgICAgICAgICBzZWxmLnJlLnNyY19wb3J0ICtcbiAgICAgICAgICBzZWxmLnJlLnNyY19ob3N0X3Rlcm1pbmF0b3IgK1xuICAgICAgICAgIHNlbGYucmUuc3JjX3BhdGgsXG5cbiAgICAgICAgICAnaSdcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNlbGYucmUubm9faHR0cC50ZXN0KHRhaWwpKSB7XG4gICAgICAgIC8vIHNob3VsZCBub3QgYmUgYDovL2AgJiBgLy8vYCwgdGhhdCBwcm90ZWN0cyBmcm9tIGVycm9ycyBpbiBwcm90b2NvbCBuYW1lXG4gICAgICAgIGlmIChwb3MgPj0gMyAmJiB0ZXh0W3BvcyAtIDNdID09PSAnOicpIHsgcmV0dXJuIDA7IH1cbiAgICAgICAgaWYgKHBvcyA+PSAzICYmIHRleHRbcG9zIC0gM10gPT09ICcvJykgeyByZXR1cm4gMDsgfVxuICAgICAgICByZXR1cm4gdGFpbC5tYXRjaChzZWxmLnJlLm5vX2h0dHApWzBdLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfSxcbiAgJ21haWx0bzonOiB7XG4gICAgdmFsaWRhdGU6IGZ1bmN0aW9uICh0ZXh0LCBwb3MsIHNlbGYpIHtcbiAgICAgIHZhciB0YWlsID0gdGV4dC5zbGljZShwb3MpO1xuXG4gICAgICBpZiAoIXNlbGYucmUubWFpbHRvKSB7XG4gICAgICAgIHNlbGYucmUubWFpbHRvID0gIG5ldyBSZWdFeHAoXG4gICAgICAgICAgJ14nICsgc2VsZi5yZS5zcmNfZW1haWxfbmFtZSArICdAJyArIHNlbGYucmUuc3JjX2hvc3Rfc3RyaWN0LCAnaSdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChzZWxmLnJlLm1haWx0by50ZXN0KHRhaWwpKSB7XG4gICAgICAgIHJldHVybiB0YWlsLm1hdGNoKHNlbGYucmUubWFpbHRvKVswXS5sZW5ndGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cbn07XG5cbi8qZXNsaW50LWRpc2FibGUgbWF4LWxlbiovXG5cbi8vIFJFIHBhdHRlcm4gZm9yIDItY2hhcmFjdGVyIHRsZHMgKGF1dG9nZW5lcmF0ZWQgYnkgLi9zdXBwb3J0L3RsZHNfMmNoYXJfZ2VuLmpzKVxudmFyIHRsZHNfMmNoX3NyY19yZSA9ICdhW2NkZWZnaWxtbm9xcnN0dXd4el18YlthYmRlZmdoaWptbm9yc3R2d3l6XXxjW2FjZGZnaGlrbG1ub3J1dnd4eXpdfGRbZWprbW96XXxlW2NlZ3JzdHVdfGZbaWprbW9yXXxnW2FiZGVmZ2hpbG1ucHFyc3R1d3ldfGhba21ucnR1XXxpW2RlbG1ub3Fyc3RdfGpbZW1vcF18a1tlZ2hpbW5wcnd5el18bFthYmNpa3JzdHV2eV18bVthY2RlZ2hrbG1ub3BxcnN0dXZ3eHl6XXxuW2FjZWZnaWxvcHJ1el18b218cFthZWZnaGtsbW5yc3R3eV18cWF8cltlb3N1d118c1thYmNkZWdoaWprbG1ub3J0dXZ4eXpdfHRbY2RmZ2hqa2xtbm9ydHZ3el18dVthZ2tzeXpdfHZbYWNlZ2ludV18d1tmc118eVtldF18elthbXddJztcblxuLy8gRE9OJ1QgdHJ5IHRvIG1ha2UgUFJzIHdpdGggY2hhbmdlcy4gRXh0ZW5kIFRMRHMgd2l0aCBMaW5raWZ5SXQudGxkcygpIGluc3RlYWRcbnZhciB0bGRzX2RlZmF1bHQgPSAnYml6fGNvbXxlZHV8Z292fG5ldHxvcmd8cHJvfHdlYnx4eHh8YWVyb3xhc2lhfGNvb3B8aW5mb3xtdXNldW18bmFtZXxzaG9wfNGA0YQnLnNwbGl0KCd8Jyk7XG5cbi8qZXNsaW50LWVuYWJsZSBtYXgtbGVuKi9cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZnVuY3Rpb24gcmVzZXRTY2FuQ2FjaGUoc2VsZikge1xuICBzZWxmLl9faW5kZXhfXyA9IC0xO1xuICBzZWxmLl9fdGV4dF9jYWNoZV9fICAgPSAnJztcbn1cblxuZnVuY3Rpb24gY3JlYXRlVmFsaWRhdG9yKHJlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGV4dCwgcG9zKSB7XG4gICAgdmFyIHRhaWwgPSB0ZXh0LnNsaWNlKHBvcyk7XG5cbiAgICBpZiAocmUudGVzdCh0YWlsKSkge1xuICAgICAgcmV0dXJuIHRhaWwubWF0Y2gocmUpWzBdLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU5vcm1hbGl6ZXIoKSB7XG4gIHJldHVybiBmdW5jdGlvbiAobWF0Y2gsIHNlbGYpIHtcbiAgICBzZWxmLm5vcm1hbGl6ZShtYXRjaCk7XG4gIH07XG59XG5cbi8vIFNjaGVtYXMgY29tcGlsZXIuIEJ1aWxkIHJlZ2V4cHMuXG4vL1xuZnVuY3Rpb24gY29tcGlsZShzZWxmKSB7XG5cbiAgLy8gTG9hZCAmIGNsb25lIFJFIHBhdHRlcm5zLlxuICB2YXIgcmUgPSBzZWxmLnJlID0gcmVxdWlyZSgnLi9saWIvcmUnKShzZWxmLl9fb3B0c19fKTtcblxuICAvLyBEZWZpbmUgZHluYW1pYyBwYXR0ZXJuc1xuICB2YXIgdGxkcyA9IHNlbGYuX190bGRzX18uc2xpY2UoKTtcblxuICBzZWxmLm9uQ29tcGlsZSgpO1xuXG4gIGlmICghc2VsZi5fX3RsZHNfcmVwbGFjZWRfXykge1xuICAgIHRsZHMucHVzaCh0bGRzXzJjaF9zcmNfcmUpO1xuICB9XG4gIHRsZHMucHVzaChyZS5zcmNfeG4pO1xuXG4gIHJlLnNyY190bGRzID0gdGxkcy5qb2luKCd8Jyk7XG5cbiAgZnVuY3Rpb24gdW50cGwodHBsKSB7IHJldHVybiB0cGwucmVwbGFjZSgnJVRMRFMlJywgcmUuc3JjX3RsZHMpOyB9XG5cbiAgcmUuZW1haWxfZnV6enkgICAgICA9IFJlZ0V4cCh1bnRwbChyZS50cGxfZW1haWxfZnV6enkpLCAnaScpO1xuICByZS5saW5rX2Z1enp5ICAgICAgID0gUmVnRXhwKHVudHBsKHJlLnRwbF9saW5rX2Z1enp5KSwgJ2knKTtcbiAgcmUubGlua19ub19pcF9mdXp6eSA9IFJlZ0V4cCh1bnRwbChyZS50cGxfbGlua19ub19pcF9mdXp6eSksICdpJyk7XG4gIHJlLmhvc3RfZnV6enlfdGVzdCAgPSBSZWdFeHAodW50cGwocmUudHBsX2hvc3RfZnV6enlfdGVzdCksICdpJyk7XG5cbiAgLy9cbiAgLy8gQ29tcGlsZSBlYWNoIHNjaGVtYVxuICAvL1xuXG4gIHZhciBhbGlhc2VzID0gW107XG5cbiAgc2VsZi5fX2NvbXBpbGVkX18gPSB7fTsgLy8gUmVzZXQgY29tcGlsZWQgZGF0YVxuXG4gIGZ1bmN0aW9uIHNjaGVtYUVycm9yKG5hbWUsIHZhbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignKExpbmtpZnlJdCkgSW52YWxpZCBzY2hlbWEgXCInICsgbmFtZSArICdcIjogJyArIHZhbCk7XG4gIH1cblxuICBPYmplY3Qua2V5cyhzZWxmLl9fc2NoZW1hc19fKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIHZhbCA9IHNlbGYuX19zY2hlbWFzX19bbmFtZV07XG5cbiAgICAvLyBza2lwIGRpc2FibGVkIG1ldGhvZHNcbiAgICBpZiAodmFsID09PSBudWxsKSB7IHJldHVybjsgfVxuXG4gICAgdmFyIGNvbXBpbGVkID0geyB2YWxpZGF0ZTogbnVsbCwgbGluazogbnVsbCB9O1xuXG4gICAgc2VsZi5fX2NvbXBpbGVkX19bbmFtZV0gPSBjb21waWxlZDtcblxuICAgIGlmIChpc09iamVjdCh2YWwpKSB7XG4gICAgICBpZiAoaXNSZWdFeHAodmFsLnZhbGlkYXRlKSkge1xuICAgICAgICBjb21waWxlZC52YWxpZGF0ZSA9IGNyZWF0ZVZhbGlkYXRvcih2YWwudmFsaWRhdGUpO1xuICAgICAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbC52YWxpZGF0ZSkpIHtcbiAgICAgICAgY29tcGlsZWQudmFsaWRhdGUgPSB2YWwudmFsaWRhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzY2hlbWFFcnJvcihuYW1lLCB2YWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNGdW5jdGlvbih2YWwubm9ybWFsaXplKSkge1xuICAgICAgICBjb21waWxlZC5ub3JtYWxpemUgPSB2YWwubm9ybWFsaXplO1xuICAgICAgfSBlbHNlIGlmICghdmFsLm5vcm1hbGl6ZSkge1xuICAgICAgICBjb21waWxlZC5ub3JtYWxpemUgPSBjcmVhdGVOb3JtYWxpemVyKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzY2hlbWFFcnJvcihuYW1lLCB2YWwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyaW5nKHZhbCkpIHtcbiAgICAgIGFsaWFzZXMucHVzaChuYW1lKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzY2hlbWFFcnJvcihuYW1lLCB2YWwpO1xuICB9KTtcblxuICAvL1xuICAvLyBDb21waWxlIHBvc3Rwb25lZCBhbGlhc2VzXG4gIC8vXG5cbiAgYWxpYXNlcy5mb3JFYWNoKGZ1bmN0aW9uIChhbGlhcykge1xuICAgIGlmICghc2VsZi5fX2NvbXBpbGVkX19bc2VsZi5fX3NjaGVtYXNfX1thbGlhc11dKSB7XG4gICAgICAvLyBTaWxlbnRseSBmYWlsIG9uIG1pc3NlZCBzY2hlbWFzIHRvIGF2b2lkIGVycm9ucyBvbiBkaXNhYmxlLlxuICAgICAgLy8gc2NoZW1hRXJyb3IoYWxpYXMsIHNlbGYuX19zY2hlbWFzX19bYWxpYXNdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLl9fY29tcGlsZWRfX1thbGlhc10udmFsaWRhdGUgPVxuICAgICAgc2VsZi5fX2NvbXBpbGVkX19bc2VsZi5fX3NjaGVtYXNfX1thbGlhc11dLnZhbGlkYXRlO1xuICAgIHNlbGYuX19jb21waWxlZF9fW2FsaWFzXS5ub3JtYWxpemUgPVxuICAgICAgc2VsZi5fX2NvbXBpbGVkX19bc2VsZi5fX3NjaGVtYXNfX1thbGlhc11dLm5vcm1hbGl6ZTtcbiAgfSk7XG5cbiAgLy9cbiAgLy8gRmFrZSByZWNvcmQgZm9yIGd1ZXNzZWQgbGlua3NcbiAgLy9cbiAgc2VsZi5fX2NvbXBpbGVkX19bJyddID0geyB2YWxpZGF0ZTogbnVsbCwgbm9ybWFsaXplOiBjcmVhdGVOb3JtYWxpemVyKCkgfTtcblxuICAvL1xuICAvLyBCdWlsZCBzY2hlbWEgY29uZGl0aW9uXG4gIC8vXG4gIHZhciBzbGlzdCA9IE9iamVjdC5rZXlzKHNlbGYuX19jb21waWxlZF9fKVxuICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbHRlciBkaXNhYmxlZCAmIGZha2Ugc2NoZW1hc1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUubGVuZ3RoID4gMCAmJiBzZWxmLl9fY29tcGlsZWRfX1tuYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZXNjYXBlUkUpXG4gICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJ3wnKTtcbiAgLy8gKD8hXykgY2F1c2UgMS41eCBzbG93ZG93blxuICBzZWxmLnJlLnNjaGVtYV90ZXN0ICAgPSBSZWdFeHAoJyhefCg/IV8pKD86Wz48XFx1ZmY1Y118JyArIHJlLnNyY19aUENjICsgJykpKCcgKyBzbGlzdCArICcpJywgJ2knKTtcbiAgc2VsZi5yZS5zY2hlbWFfc2VhcmNoID0gUmVnRXhwKCcoXnwoPyFfKSg/Ols+PFxcdWZmNWNdfCcgKyByZS5zcmNfWlBDYyArICcpKSgnICsgc2xpc3QgKyAnKScsICdpZycpO1xuXG4gIHNlbGYucmUucHJldGVzdCA9IFJlZ0V4cChcbiAgICAnKCcgKyBzZWxmLnJlLnNjaGVtYV90ZXN0LnNvdXJjZSArICcpfCgnICsgc2VsZi5yZS5ob3N0X2Z1enp5X3Rlc3Quc291cmNlICsgJyl8QCcsXG4gICAgJ2knXG4gICk7XG5cbiAgLy9cbiAgLy8gQ2xlYW51cFxuICAvL1xuXG4gIHJlc2V0U2NhbkNhY2hlKHNlbGYpO1xufVxuXG4vKipcbiAqIGNsYXNzIE1hdGNoXG4gKlxuICogTWF0Y2ggcmVzdWx0LiBTaW5nbGUgZWxlbWVudCBvZiBhcnJheSwgcmV0dXJuZWQgYnkgW1tMaW5raWZ5SXQjbWF0Y2hdXVxuICoqL1xuZnVuY3Rpb24gTWF0Y2goc2VsZiwgc2hpZnQpIHtcbiAgdmFyIHN0YXJ0ID0gc2VsZi5fX2luZGV4X18sXG4gICAgICBlbmQgICA9IHNlbGYuX19sYXN0X2luZGV4X18sXG4gICAgICB0ZXh0ICA9IHNlbGYuX190ZXh0X2NhY2hlX18uc2xpY2Uoc3RhcnQsIGVuZCk7XG5cbiAgLyoqXG4gICAqIE1hdGNoI3NjaGVtYSAtPiBTdHJpbmdcbiAgICpcbiAgICogUHJlZml4IChwcm90b2NvbCkgZm9yIG1hdGNoZWQgc3RyaW5nLlxuICAgKiovXG4gIHRoaXMuc2NoZW1hICAgID0gc2VsZi5fX3NjaGVtYV9fLnRvTG93ZXJDYXNlKCk7XG4gIC8qKlxuICAgKiBNYXRjaCNpbmRleCAtPiBOdW1iZXJcbiAgICpcbiAgICogRmlyc3QgcG9zaXRpb24gb2YgbWF0Y2hlZCBzdHJpbmcuXG4gICAqKi9cbiAgdGhpcy5pbmRleCAgICAgPSBzdGFydCArIHNoaWZ0O1xuICAvKipcbiAgICogTWF0Y2gjbGFzdEluZGV4IC0+IE51bWJlclxuICAgKlxuICAgKiBOZXh0IHBvc2l0aW9uIGFmdGVyIG1hdGNoZWQgc3RyaW5nLlxuICAgKiovXG4gIHRoaXMubGFzdEluZGV4ID0gZW5kICsgc2hpZnQ7XG4gIC8qKlxuICAgKiBNYXRjaCNyYXcgLT4gU3RyaW5nXG4gICAqXG4gICAqIE1hdGNoZWQgc3RyaW5nLlxuICAgKiovXG4gIHRoaXMucmF3ICAgICAgID0gdGV4dDtcbiAgLyoqXG4gICAqIE1hdGNoI3RleHQgLT4gU3RyaW5nXG4gICAqXG4gICAqIE5vdG1hbGl6ZWQgdGV4dCBvZiBtYXRjaGVkIHN0cmluZy5cbiAgICoqL1xuICB0aGlzLnRleHQgICAgICA9IHRleHQ7XG4gIC8qKlxuICAgKiBNYXRjaCN1cmwgLT4gU3RyaW5nXG4gICAqXG4gICAqIE5vcm1hbGl6ZWQgdXJsIG9mIG1hdGNoZWQgc3RyaW5nLlxuICAgKiovXG4gIHRoaXMudXJsICAgICAgID0gdGV4dDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlTWF0Y2goc2VsZiwgc2hpZnQpIHtcbiAgdmFyIG1hdGNoID0gbmV3IE1hdGNoKHNlbGYsIHNoaWZ0KTtcblxuICBzZWxmLl9fY29tcGlsZWRfX1ttYXRjaC5zY2hlbWFdLm5vcm1hbGl6ZShtYXRjaCwgc2VsZik7XG5cbiAgcmV0dXJuIG1hdGNoO1xufVxuXG5cbi8qKlxuICogY2xhc3MgTGlua2lmeUl0XG4gKiovXG5cbi8qKlxuICogbmV3IExpbmtpZnlJdChzY2hlbWFzLCBvcHRpb25zKVxuICogLSBzY2hlbWFzIChPYmplY3QpOiBPcHRpb25hbC4gQWRkaXRpb25hbCBzY2hlbWFzIHRvIHZhbGlkYXRlIChwcmVmaXgvdmFsaWRhdG9yKVxuICogLSBvcHRpb25zIChPYmplY3QpOiB7IGZ1enp5TGlua3xmdXp6eUVtYWlsfGZ1enp5SVA6IHRydWV8ZmFsc2UgfVxuICpcbiAqIENyZWF0ZXMgbmV3IGxpbmtpZmllciBpbnN0YW5jZSB3aXRoIG9wdGlvbmFsIGFkZGl0aW9uYWwgc2NoZW1hcy5cbiAqIENhbiBiZSBjYWxsZWQgd2l0aG91dCBgbmV3YCBrZXl3b3JkIGZvciBjb252ZW5pZW5jZS5cbiAqXG4gKiBCeSBkZWZhdWx0IHVuZGVyc3RhbmRzOlxuICpcbiAqIC0gYGh0dHAocyk6Ly8uLi5gICwgYGZ0cDovLy4uLmAsIGBtYWlsdG86Li4uYCAmIGAvLy4uLmAgbGlua3NcbiAqIC0gXCJmdXp6eVwiIGxpbmtzIGFuZCBlbWFpbHMgKGV4YW1wbGUuY29tLCBmb29AYmFyLmNvbSkuXG4gKlxuICogYHNjaGVtYXNgIGlzIGFuIG9iamVjdCwgd2hlcmUgZWFjaCBrZXkvdmFsdWUgZGVzY3JpYmVzIHByb3RvY29sL3J1bGU6XG4gKlxuICogLSBfX2tleV9fIC0gbGluayBwcmVmaXggKHVzdWFsbHksIHByb3RvY29sIG5hbWUgd2l0aCBgOmAgYXQgdGhlIGVuZCwgYHNreXBlOmBcbiAqICAgZm9yIGV4YW1wbGUpLiBgbGlua2lmeS1pdGAgbWFrZXMgc2h1cmUgdGhhdCBwcmVmaXggaXMgbm90IHByZWNlZWRlZCB3aXRoXG4gKiAgIGFscGhhbnVtZXJpYyBjaGFyIGFuZCBzeW1ib2xzLiBPbmx5IHdoaXRlc3BhY2VzIGFuZCBwdW5jdHVhdGlvbiBhbGxvd2VkLlxuICogLSBfX3ZhbHVlX18gLSBydWxlIHRvIGNoZWNrIHRhaWwgYWZ0ZXIgbGluayBwcmVmaXhcbiAqICAgLSBfU3RyaW5nXyAtIGp1c3QgYWxpYXMgdG8gZXhpc3RpbmcgcnVsZVxuICogICAtIF9PYmplY3RfXG4gKiAgICAgLSBfdmFsaWRhdGVfIC0gdmFsaWRhdG9yIGZ1bmN0aW9uIChzaG91bGQgcmV0dXJuIG1hdGNoZWQgbGVuZ3RoIG9uIHN1Y2Nlc3MpLFxuICogICAgICAgb3IgYFJlZ0V4cGAuXG4gKiAgICAgLSBfbm9ybWFsaXplXyAtIG9wdGlvbmFsIGZ1bmN0aW9uIHRvIG5vcm1hbGl6ZSB0ZXh0ICYgdXJsIG9mIG1hdGNoZWQgcmVzdWx0XG4gKiAgICAgICAoZm9yIGV4YW1wbGUsIGZvciBAdHdpdHRlciBtZW50aW9ucykuXG4gKlxuICogYG9wdGlvbnNgOlxuICpcbiAqIC0gX19mdXp6eUxpbmtfXyAtIHJlY29nbmlnZSBVUkwtcyB3aXRob3V0IGBodHRwKHMpOmAgcHJlZml4LiBEZWZhdWx0IGB0cnVlYC5cbiAqIC0gX19mdXp6eUlQX18gLSBhbGxvdyBJUHMgaW4gZnV6enkgbGlua3MgYWJvdmUuIENhbiBjb25mbGljdCB3aXRoIHNvbWUgdGV4dHNcbiAqICAgbGlrZSB2ZXJzaW9uIG51bWJlcnMuIERlZmF1bHQgYGZhbHNlYC5cbiAqIC0gX19mdXp6eUVtYWlsX18gLSByZWNvZ25pemUgZW1haWxzIHdpdGhvdXQgYG1haWx0bzpgIHByZWZpeC5cbiAqXG4gKiovXG5mdW5jdGlvbiBMaW5raWZ5SXQoc2NoZW1hcywgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTGlua2lmeUl0KSkge1xuICAgIHJldHVybiBuZXcgTGlua2lmeUl0KHNjaGVtYXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgaWYgKGlzT3B0aW9uc09iaihzY2hlbWFzKSkge1xuICAgICAgb3B0aW9ucyA9IHNjaGVtYXM7XG4gICAgICBzY2hlbWFzID0ge307XG4gICAgfVxuICB9XG5cbiAgdGhpcy5fX29wdHNfXyAgICAgICAgICAgPSBhc3NpZ24oe30sIGRlZmF1bHRPcHRpb25zLCBvcHRpb25zKTtcblxuICAvLyBDYWNoZSBsYXN0IHRlc3RlZCByZXN1bHQuIFVzZWQgdG8gc2tpcCByZXBlYXRpbmcgc3RlcHMgb24gbmV4dCBgbWF0Y2hgIGNhbGwuXG4gIHRoaXMuX19pbmRleF9fICAgICAgICAgID0gLTE7XG4gIHRoaXMuX19sYXN0X2luZGV4X18gICAgID0gLTE7IC8vIE5leHQgc2NhbiBwb3NpdGlvblxuICB0aGlzLl9fc2NoZW1hX18gICAgICAgICA9ICcnO1xuICB0aGlzLl9fdGV4dF9jYWNoZV9fICAgICA9ICcnO1xuXG4gIHRoaXMuX19zY2hlbWFzX18gICAgICAgID0gYXNzaWduKHt9LCBkZWZhdWx0U2NoZW1hcywgc2NoZW1hcyk7XG4gIHRoaXMuX19jb21waWxlZF9fICAgICAgID0ge307XG5cbiAgdGhpcy5fX3RsZHNfXyAgICAgICAgICAgPSB0bGRzX2RlZmF1bHQ7XG4gIHRoaXMuX190bGRzX3JlcGxhY2VkX18gID0gZmFsc2U7XG5cbiAgdGhpcy5yZSA9IHt9O1xuXG4gIGNvbXBpbGUodGhpcyk7XG59XG5cblxuLyoqIGNoYWluYWJsZVxuICogTGlua2lmeUl0I2FkZChzY2hlbWEsIGRlZmluaXRpb24pXG4gKiAtIHNjaGVtYSAoU3RyaW5nKTogcnVsZSBuYW1lIChmaXhlZCBwYXR0ZXJuIHByZWZpeClcbiAqIC0gZGVmaW5pdGlvbiAoU3RyaW5nfFJlZ0V4cHxPYmplY3QpOiBzY2hlbWEgZGVmaW5pdGlvblxuICpcbiAqIEFkZCBuZXcgcnVsZSBkZWZpbml0aW9uLiBTZWUgY29uc3RydWN0b3IgZGVzY3JpcHRpb24gZm9yIGRldGFpbHMuXG4gKiovXG5MaW5raWZ5SXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChzY2hlbWEsIGRlZmluaXRpb24pIHtcbiAgdGhpcy5fX3NjaGVtYXNfX1tzY2hlbWFdID0gZGVmaW5pdGlvbjtcbiAgY29tcGlsZSh0aGlzKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5cbi8qKiBjaGFpbmFibGVcbiAqIExpbmtpZnlJdCNzZXQob3B0aW9ucylcbiAqIC0gb3B0aW9ucyAoT2JqZWN0KTogeyBmdXp6eUxpbmt8ZnV6enlFbWFpbHxmdXp6eUlQOiB0cnVlfGZhbHNlIH1cbiAqXG4gKiBTZXQgcmVjb2duaXRpb24gb3B0aW9ucyBmb3IgbGlua3Mgd2l0aG91dCBzY2hlbWEuXG4gKiovXG5MaW5raWZ5SXQucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIHNldChvcHRpb25zKSB7XG4gIHRoaXMuX19vcHRzX18gPSBhc3NpZ24odGhpcy5fX29wdHNfXywgb3B0aW9ucyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuXG4vKipcbiAqIExpbmtpZnlJdCN0ZXN0KHRleHQpIC0+IEJvb2xlYW5cbiAqXG4gKiBTZWFyY2hlcyBsaW5raWZpYWJsZSBwYXR0ZXJuIGFuZCByZXR1cm5zIGB0cnVlYCBvbiBzdWNjZXNzIG9yIGBmYWxzZWAgb24gZmFpbC5cbiAqKi9cbkxpbmtpZnlJdC5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uIHRlc3QodGV4dCkge1xuICAvLyBSZXNldCBzY2FuIGNhY2hlXG4gIHRoaXMuX190ZXh0X2NhY2hlX18gPSB0ZXh0O1xuICB0aGlzLl9faW5kZXhfXyAgICAgID0gLTE7XG5cbiAgaWYgKCF0ZXh0Lmxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICB2YXIgbSwgbWwsIG1lLCBsZW4sIHNoaWZ0LCBuZXh0LCByZSwgdGxkX3BvcywgYXRfcG9zO1xuXG4gIC8vIHRyeSB0byBzY2FuIGZvciBsaW5rIHdpdGggc2NoZW1hIC0gdGhhdCdzIHRoZSBtb3N0IHNpbXBsZSBydWxlXG4gIGlmICh0aGlzLnJlLnNjaGVtYV90ZXN0LnRlc3QodGV4dCkpIHtcbiAgICByZSA9IHRoaXMucmUuc2NoZW1hX3NlYXJjaDtcbiAgICByZS5sYXN0SW5kZXggPSAwO1xuICAgIHdoaWxlICgobSA9IHJlLmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICBsZW4gPSB0aGlzLnRlc3RTY2hlbWFBdCh0ZXh0LCBtWzJdLCByZS5sYXN0SW5kZXgpO1xuICAgICAgaWYgKGxlbikge1xuICAgICAgICB0aGlzLl9fc2NoZW1hX18gICAgID0gbVsyXTtcbiAgICAgICAgdGhpcy5fX2luZGV4X18gICAgICA9IG0uaW5kZXggKyBtWzFdLmxlbmd0aDtcbiAgICAgICAgdGhpcy5fX2xhc3RfaW5kZXhfXyA9IG0uaW5kZXggKyBtWzBdLmxlbmd0aCArIGxlbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHRoaXMuX19vcHRzX18uZnV6enlMaW5rICYmIHRoaXMuX19jb21waWxlZF9fWydodHRwOiddKSB7XG4gICAgLy8gZ3Vlc3Mgc2NoZW1hbGVzcyBsaW5rc1xuICAgIHRsZF9wb3MgPSB0ZXh0LnNlYXJjaCh0aGlzLnJlLmhvc3RfZnV6enlfdGVzdCk7XG4gICAgaWYgKHRsZF9wb3MgPj0gMCkge1xuICAgICAgLy8gaWYgdGxkIGlzIGxvY2F0ZWQgYWZ0ZXIgZm91bmQgbGluayAtIG5vIG5lZWQgdG8gY2hlY2sgZnV6enkgcGF0dGVyblxuICAgICAgaWYgKHRoaXMuX19pbmRleF9fIDwgMCB8fCB0bGRfcG9zIDwgdGhpcy5fX2luZGV4X18pIHtcbiAgICAgICAgaWYgKChtbCA9IHRleHQubWF0Y2godGhpcy5fX29wdHNfXy5mdXp6eUlQID8gdGhpcy5yZS5saW5rX2Z1enp5IDogdGhpcy5yZS5saW5rX25vX2lwX2Z1enp5KSkgIT09IG51bGwpIHtcblxuICAgICAgICAgIHNoaWZ0ID0gbWwuaW5kZXggKyBtbFsxXS5sZW5ndGg7XG5cbiAgICAgICAgICBpZiAodGhpcy5fX2luZGV4X18gPCAwIHx8IHNoaWZ0IDwgdGhpcy5fX2luZGV4X18pIHtcbiAgICAgICAgICAgIHRoaXMuX19zY2hlbWFfXyAgICAgPSAnJztcbiAgICAgICAgICAgIHRoaXMuX19pbmRleF9fICAgICAgPSBzaGlmdDtcbiAgICAgICAgICAgIHRoaXMuX19sYXN0X2luZGV4X18gPSBtbC5pbmRleCArIG1sWzBdLmxlbmd0aDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAodGhpcy5fX29wdHNfXy5mdXp6eUVtYWlsICYmIHRoaXMuX19jb21waWxlZF9fWydtYWlsdG86J10pIHtcbiAgICAvLyBndWVzcyBzY2hlbWFsZXNzIGVtYWlsc1xuICAgIGF0X3BvcyA9IHRleHQuaW5kZXhPZignQCcpO1xuICAgIGlmIChhdF9wb3MgPj0gMCkge1xuICAgICAgLy8gV2UgY2FuJ3Qgc2tpcCB0aGlzIGNoZWNrLCBiZWNhdXNlIHRoaXMgY2FzZXMgYXJlIHBvc3NpYmxlOlxuICAgICAgLy8gMTkyLjE2OC4xLjFAZ21haWwuY29tLCBteS5pbkBleGFtcGxlLmNvbVxuICAgICAgaWYgKChtZSA9IHRleHQubWF0Y2godGhpcy5yZS5lbWFpbF9mdXp6eSkpICE9PSBudWxsKSB7XG5cbiAgICAgICAgc2hpZnQgPSBtZS5pbmRleCArIG1lWzFdLmxlbmd0aDtcbiAgICAgICAgbmV4dCAgPSBtZS5pbmRleCArIG1lWzBdLmxlbmd0aDtcblxuICAgICAgICBpZiAodGhpcy5fX2luZGV4X18gPCAwIHx8IHNoaWZ0IDwgdGhpcy5fX2luZGV4X18gfHxcbiAgICAgICAgICAgIChzaGlmdCA9PT0gdGhpcy5fX2luZGV4X18gJiYgbmV4dCA+IHRoaXMuX19sYXN0X2luZGV4X18pKSB7XG4gICAgICAgICAgdGhpcy5fX3NjaGVtYV9fICAgICA9ICdtYWlsdG86JztcbiAgICAgICAgICB0aGlzLl9faW5kZXhfXyAgICAgID0gc2hpZnQ7XG4gICAgICAgICAgdGhpcy5fX2xhc3RfaW5kZXhfXyA9IG5leHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcy5fX2luZGV4X18gPj0gMDtcbn07XG5cblxuLyoqXG4gKiBMaW5raWZ5SXQjcHJldGVzdCh0ZXh0KSAtPiBCb29sZWFuXG4gKlxuICogVmVyeSBxdWljayBjaGVjaywgdGhhdCBjYW4gZ2l2ZSBmYWxzZSBwb3NpdGl2ZXMuIFJldHVybnMgdHJ1ZSBpZiBsaW5rIE1BWSBCRVxuICogY2FuIGV4aXN0cy4gQ2FuIGJlIHVzZWQgZm9yIHNwZWVkIG9wdGltaXphdGlvbiwgd2hlbiB5b3UgbmVlZCB0byBjaGVjayB0aGF0XG4gKiBsaW5rIE5PVCBleGlzdHMuXG4gKiovXG5MaW5raWZ5SXQucHJvdG90eXBlLnByZXRlc3QgPSBmdW5jdGlvbiBwcmV0ZXN0KHRleHQpIHtcbiAgcmV0dXJuIHRoaXMucmUucHJldGVzdC50ZXN0KHRleHQpO1xufTtcblxuXG4vKipcbiAqIExpbmtpZnlJdCN0ZXN0U2NoZW1hQXQodGV4dCwgbmFtZSwgcG9zaXRpb24pIC0+IE51bWJlclxuICogLSB0ZXh0IChTdHJpbmcpOiB0ZXh0IHRvIHNjYW5cbiAqIC0gbmFtZSAoU3RyaW5nKTogcnVsZSAoc2NoZW1hKSBuYW1lXG4gKiAtIHBvc2l0aW9uIChOdW1iZXIpOiB0ZXh0IG9mZnNldCB0byBjaGVjayBmcm9tXG4gKlxuICogU2ltaWxhciB0byBbW0xpbmtpZnlJdCN0ZXN0XV0gYnV0IGNoZWNrcyBvbmx5IHNwZWNpZmljIHByb3RvY29sIHRhaWwgZXhhY3RseVxuICogYXQgZ2l2ZW4gcG9zaXRpb24uIFJldHVybnMgbGVuZ3RoIG9mIGZvdW5kIHBhdHRlcm4gKDAgb24gZmFpbCkuXG4gKiovXG5MaW5raWZ5SXQucHJvdG90eXBlLnRlc3RTY2hlbWFBdCA9IGZ1bmN0aW9uIHRlc3RTY2hlbWFBdCh0ZXh0LCBzY2hlbWEsIHBvcykge1xuICAvLyBJZiBub3Qgc3VwcG9ydGVkIHNjaGVtYSBjaGVjayByZXF1ZXN0ZWQgLSB0ZXJtaW5hdGVcbiAgaWYgKCF0aGlzLl9fY29tcGlsZWRfX1tzY2hlbWEudG9Mb3dlckNhc2UoKV0pIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICByZXR1cm4gdGhpcy5fX2NvbXBpbGVkX19bc2NoZW1hLnRvTG93ZXJDYXNlKCldLnZhbGlkYXRlKHRleHQsIHBvcywgdGhpcyk7XG59O1xuXG5cbi8qKlxuICogTGlua2lmeUl0I21hdGNoKHRleHQpIC0+IEFycmF5fG51bGxcbiAqXG4gKiBSZXR1cm5zIGFycmF5IG9mIGZvdW5kIGxpbmsgZGVzY3JpcHRpb25zIG9yIGBudWxsYCBvbiBmYWlsLiBXZSBzdHJvbmdseVxuICogcmVjb21tZW5kIHRvIHVzZSBbW0xpbmtpZnlJdCN0ZXN0XV0gZmlyc3QsIGZvciBiZXN0IHNwZWVkLlxuICpcbiAqICMjIyMjIFJlc3VsdCBtYXRjaCBkZXNjcmlwdGlvblxuICpcbiAqIC0gX19zY2hlbWFfXyAtIGxpbmsgc2NoZW1hLCBjYW4gYmUgZW1wdHkgZm9yIGZ1enp5IGxpbmtzLCBvciBgLy9gIGZvclxuICogICBwcm90b2NvbC1uZXV0cmFsICBsaW5rcy5cbiAqIC0gX19pbmRleF9fIC0gb2Zmc2V0IG9mIG1hdGNoZWQgdGV4dFxuICogLSBfX2xhc3RJbmRleF9fIC0gaW5kZXggb2YgbmV4dCBjaGFyIGFmdGVyIG1hdGhjaCBlbmRcbiAqIC0gX19yYXdfXyAtIG1hdGNoZWQgdGV4dFxuICogLSBfX3RleHRfXyAtIG5vcm1hbGl6ZWQgdGV4dFxuICogLSBfX3VybF9fIC0gbGluaywgZ2VuZXJhdGVkIGZyb20gbWF0Y2hlZCB0ZXh0XG4gKiovXG5MaW5raWZ5SXQucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24gbWF0Y2godGV4dCkge1xuICB2YXIgc2hpZnQgPSAwLCByZXN1bHQgPSBbXTtcblxuICAvLyBUcnkgdG8gdGFrZSBwcmV2aW91cyBlbGVtZW50IGZyb20gY2FjaGUsIGlmIC50ZXN0KCkgY2FsbGVkIGJlZm9yZVxuICBpZiAodGhpcy5fX2luZGV4X18gPj0gMCAmJiB0aGlzLl9fdGV4dF9jYWNoZV9fID09PSB0ZXh0KSB7XG4gICAgcmVzdWx0LnB1c2goY3JlYXRlTWF0Y2godGhpcywgc2hpZnQpKTtcbiAgICBzaGlmdCA9IHRoaXMuX19sYXN0X2luZGV4X187XG4gIH1cblxuICAvLyBDdXQgaGVhZCBpZiBjYWNoZSB3YXMgdXNlZFxuICB2YXIgdGFpbCA9IHNoaWZ0ID8gdGV4dC5zbGljZShzaGlmdCkgOiB0ZXh0O1xuXG4gIC8vIFNjYW4gc3RyaW5nIHVudGlsIGVuZCByZWFjaGVkXG4gIHdoaWxlICh0aGlzLnRlc3QodGFpbCkpIHtcbiAgICByZXN1bHQucHVzaChjcmVhdGVNYXRjaCh0aGlzLCBzaGlmdCkpO1xuXG4gICAgdGFpbCA9IHRhaWwuc2xpY2UodGhpcy5fX2xhc3RfaW5kZXhfXyk7XG4gICAgc2hpZnQgKz0gdGhpcy5fX2xhc3RfaW5kZXhfXztcbiAgfVxuXG4gIGlmIChyZXN1bHQubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuXG4vKiogY2hhaW5hYmxlXG4gKiBMaW5raWZ5SXQjdGxkcyhsaXN0IFssIGtlZXBPbGRdKSAtPiB0aGlzXG4gKiAtIGxpc3QgKEFycmF5KTogbGlzdCBvZiB0bGRzXG4gKiAtIGtlZXBPbGQgKEJvb2xlYW4pOiBtZXJnZSB3aXRoIGN1cnJlbnQgbGlzdCBpZiBgdHJ1ZWAgKGBmYWxzZWAgYnkgZGVmYXVsdClcbiAqXG4gKiBMb2FkIChvciBtZXJnZSkgbmV3IHRsZHMgbGlzdC4gVGhvc2UgYXJlIHVzZXIgZm9yIGZ1enp5IGxpbmtzICh3aXRob3V0IHByZWZpeClcbiAqIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcy4gQnkgZGVmYXVsdCB0aGlzIGFsZ29yeXRobSB1c2VkOlxuICpcbiAqIC0gaG9zdG5hbWUgd2l0aCBhbnkgMi1sZXR0ZXIgcm9vdCB6b25lcyBhcmUgb2suXG4gKiAtIGJpenxjb218ZWR1fGdvdnxuZXR8b3JnfHByb3x3ZWJ8eHh4fGFlcm98YXNpYXxjb29wfGluZm98bXVzZXVtfG5hbWV8c2hvcHzRgNGEXG4gKiAgIGFyZSBvay5cbiAqIC0gZW5jb2RlZCAoYHhuLS0uLi5gKSByb290IHpvbmVzIGFyZSBvay5cbiAqXG4gKiBJZiBsaXN0IGlzIHJlcGxhY2VkLCB0aGVuIGV4YWN0IG1hdGNoIGZvciAyLWNoYXJzIHJvb3Qgem9uZXMgd2lsbCBiZSBjaGVja2VkLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS50bGRzID0gZnVuY3Rpb24gdGxkcyhsaXN0LCBrZWVwT2xkKSB7XG4gIGxpc3QgPSBBcnJheS5pc0FycmF5KGxpc3QpID8gbGlzdCA6IFsgbGlzdCBdO1xuXG4gIGlmICgha2VlcE9sZCkge1xuICAgIHRoaXMuX190bGRzX18gPSBsaXN0LnNsaWNlKCk7XG4gICAgdGhpcy5fX3RsZHNfcmVwbGFjZWRfXyA9IHRydWU7XG4gICAgY29tcGlsZSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRoaXMuX190bGRzX18gPSB0aGlzLl9fdGxkc19fLmNvbmNhdChsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChlbCwgaWR4LCBhcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbCAhPT0gYXJyW2lkeCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJldmVyc2UoKTtcblxuICBjb21waWxlKHRoaXMpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogTGlua2lmeUl0I25vcm1hbGl6ZShtYXRjaClcbiAqXG4gKiBEZWZhdWx0IG5vcm1hbGl6ZXIgKGlmIHNjaGVtYSBkb2VzIG5vdCBkZWZpbmUgaXQncyBvd24pLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUobWF0Y2gpIHtcblxuICAvLyBEbyBtaW5pbWFsIHBvc3NpYmxlIGNoYW5nZXMgYnkgZGVmYXVsdC4gTmVlZCB0byBjb2xsZWN0IGZlZWRiYWNrIHByaW9yXG4gIC8vIHRvIG1vdmUgZm9yd2FyZCBodHRwczovL2dpdGh1Yi5jb20vbWFya2Rvd24taXQvbGlua2lmeS1pdC9pc3N1ZXMvMVxuXG4gIGlmICghbWF0Y2guc2NoZW1hKSB7IG1hdGNoLnVybCA9ICdodHRwOi8vJyArIG1hdGNoLnVybDsgfVxuXG4gIGlmIChtYXRjaC5zY2hlbWEgPT09ICdtYWlsdG86JyAmJiAhL15tYWlsdG86L2kudGVzdChtYXRjaC51cmwpKSB7XG4gICAgbWF0Y2gudXJsID0gJ21haWx0bzonICsgbWF0Y2gudXJsO1xuICB9XG59O1xuXG5cbi8qKlxuICogTGlua2lmeUl0I29uQ29tcGlsZSgpXG4gKlxuICogT3ZlcnJpZGUgdG8gbW9kaWZ5IGJhc2ljIFJlZ0V4cC1zLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS5vbkNvbXBpbGUgPSBmdW5jdGlvbiBvbkNvbXBpbGUoKSB7XG59O1xuXG5cbm1vZHVsZS5leHBvcnRzID0gTGlua2lmeUl0O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFkQTtBQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQTNCQTtBQTZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBYkE7QUFoREE7QUFpRUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFHQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/linkify-it/index.js\n");
1856
1857/***/ }),
1858
1859/***/ "../../../node_modules/linkify-it/lib/re.js":
1860/*!*****************************************************************************!*\
1861 !*** /home/runner/work/graphiql/graphiql/node_modules/linkify-it/lib/re.js ***!
1862 \*****************************************************************************/
1863/*! no static exports found */
1864/***/ (function(module, exports, __webpack_require__) {
1865
1866eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n module.exports = function (opts) {\n var re = {}; // Use direct extract instead of `regenerate` to reduse browserified size\n\n re.src_Any = __webpack_require__(/*! uc.micro/properties/Any/regex */ \"../../../node_modules/uc.micro/properties/Any/regex.js\").source;\n re.src_Cc = __webpack_require__(/*! uc.micro/categories/Cc/regex */ \"../../../node_modules/uc.micro/categories/Cc/regex.js\").source;\n re.src_Z = __webpack_require__(/*! uc.micro/categories/Z/regex */ \"../../../node_modules/uc.micro/categories/Z/regex.js\").source;\n re.src_P = __webpack_require__(/*! uc.micro/categories/P/regex */ \"../../../node_modules/uc.micro/categories/P/regex.js\").source; // \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\n\n re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join('|'); // \\p{\\Z\\Cc} (white spaces + control)\n\n re.src_ZCc = [re.src_Z, re.src_Cc].join('|'); // Experimental. List of chars, completely prohibited in links\n // because can separate it from other part of text\n\n var text_separators = '[><\\uff5c]'; // All possible word characters (everything without punctuation, spaces & controls)\n // Defined via punctuation & spaces to save space\n // Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\n\n re.src_pseudo_letter = '(?:(?!' + text_separators + '|' + re.src_ZPCc + ')' + re.src_Any + ')'; // The same as abothe but without [0-9]\n // var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';\n ////////////////////////////////////////////////////////////////////////////////\n\n re.src_ip4 = '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'; // Prohibit any of \"@/[]()\" in user/pass to avoid wrong domain fetch.\n\n re.src_auth = '(?:(?:(?!' + re.src_ZCc + '|[@/\\\\[\\\\]()]).)+@)?';\n re.src_port = '(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?';\n re.src_host_terminator = '(?=$|' + text_separators + '|' + re.src_ZPCc + ')(?!-|_|:\\\\d|\\\\.-|\\\\.(?!$|' + re.src_ZPCc + '))';\n re.src_path = '(?:' + '[/?#]' + '(?:' + '(?!' + re.src_ZCc + '|' + text_separators + '|[()[\\\\]{}.,\"\\'?!\\\\-]).|' + '\\\\[(?:(?!' + re.src_ZCc + '|\\\\]).)*\\\\]|' + '\\\\((?:(?!' + re.src_ZCc + '|[)]).)*\\\\)|' + '\\\\{(?:(?!' + re.src_ZCc + '|[}]).)*\\\\}|' + '\\\\\"(?:(?!' + re.src_ZCc + '|[\"]).)+\\\\\"|' + \"\\\\'(?:(?!\" + re.src_ZCc + \"|[']).)+\\\\'|\" + \"\\\\'(?=\" + re.src_pseudo_letter + '|[-]).|' + // allow `I'm_king` if no pair found\n '\\\\.{2,4}[a-zA-Z0-9%/]|' + // github has ... in commit range links,\n // google has .... in links (issue #66)\n // Restrict to\n // - english\n // - percent-encoded\n // - parts of file path\n // until more examples found.\n '\\\\.(?!' + re.src_ZCc + '|[.]).|' + (opts && opts['---'] ? '\\\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate\n : '\\\\-+|') + '\\\\,(?!' + re.src_ZCc + ').|' + // allow `,,,` in paths\n '\\\\!(?!' + re.src_ZCc + '|[!]).|' + '\\\\?(?!' + re.src_ZCc + '|[?]).' + ')+' + '|\\\\/' + ')?'; // Allow anything in markdown spec, forbid quote (\") at the first position\n // because emails enclosed in quotes are far more common\n\n re.src_email_name = '[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*';\n re.src_xn = 'xn--[a-z0-9\\\\-]{1,59}'; // More to read about domain names\n // http://serverfault.com/questions/638260/\n\n re.src_domain_root = // Allow letters & digits (http://test1)\n '(?:' + re.src_xn + '|' + re.src_pseudo_letter + '{1,63}' + ')';\n re.src_domain = '(?:' + re.src_xn + '|' + '(?:' + re.src_pseudo_letter + ')' + '|' + '(?:' + re.src_pseudo_letter + '(?:-|' + re.src_pseudo_letter + '){0,61}' + re.src_pseudo_letter + ')' + ')';\n re.src_host = '(?:' + // Don't need IP check, because digits are already allowed in normal domain names\n // src_ip4 +\n // '|' +\n '(?:(?:(?:' + re.src_domain + ')\\\\.)*' + re.src_domain\n /*_root*/\n + ')' + ')';\n re.tpl_host_fuzzy = '(?:' + re.src_ip4 + '|' + '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))' + ')';\n re.tpl_host_no_ip_fuzzy = '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))';\n re.src_host_strict = re.src_host + re.src_host_terminator;\n re.tpl_host_fuzzy_strict = re.tpl_host_fuzzy + re.src_host_terminator;\n re.src_host_port_strict = re.src_host + re.src_port + re.src_host_terminator;\n re.tpl_host_port_fuzzy_strict = re.tpl_host_fuzzy + re.src_port + re.src_host_terminator;\n re.tpl_host_port_no_ip_fuzzy_strict = re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator; ////////////////////////////////////////////////////////////////////////////////\n // Main rules\n // Rude test fuzzy links by host, for quick deny\n\n re.tpl_host_fuzzy_test = 'localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:' + re.src_ZPCc + '|>|$))';\n re.tpl_email_fuzzy = '(^|' + text_separators + '|\"|\\\\(|' + re.src_ZCc + ')' + '(' + re.src_email_name + '@' + re.tpl_host_fuzzy_strict + ')';\n re.tpl_link_fuzzy = // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' + '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_fuzzy_strict + re.src_path + ')';\n re.tpl_link_no_ip_fuzzy = // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' + '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ')';\n return re;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xpbmtpZnktaXQvbGliL3JlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL2xpbmtpZnktaXQvbGliL3JlLmpzP2U0ZGMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdHMpIHtcbiAgdmFyIHJlID0ge307XG5cbiAgLy8gVXNlIGRpcmVjdCBleHRyYWN0IGluc3RlYWQgb2YgYHJlZ2VuZXJhdGVgIHRvIHJlZHVzZSBicm93c2VyaWZpZWQgc2l6ZVxuICByZS5zcmNfQW55ID0gcmVxdWlyZSgndWMubWljcm8vcHJvcGVydGllcy9BbnkvcmVnZXgnKS5zb3VyY2U7XG4gIHJlLnNyY19DYyAgPSByZXF1aXJlKCd1Yy5taWNyby9jYXRlZ29yaWVzL0NjL3JlZ2V4Jykuc291cmNlO1xuICByZS5zcmNfWiAgID0gcmVxdWlyZSgndWMubWljcm8vY2F0ZWdvcmllcy9aL3JlZ2V4Jykuc291cmNlO1xuICByZS5zcmNfUCAgID0gcmVxdWlyZSgndWMubWljcm8vY2F0ZWdvcmllcy9QL3JlZ2V4Jykuc291cmNlO1xuXG4gIC8vIFxccHtcXFpcXFBcXENjXFxDRn0gKHdoaXRlIHNwYWNlcyArIGNvbnRyb2wgKyBmb3JtYXQgKyBwdW5jdHVhdGlvbilcbiAgcmUuc3JjX1pQQ2MgPSBbIHJlLnNyY19aLCByZS5zcmNfUCwgcmUuc3JjX0NjIF0uam9pbignfCcpO1xuXG4gIC8vIFxccHtcXFpcXENjfSAod2hpdGUgc3BhY2VzICsgY29udHJvbClcbiAgcmUuc3JjX1pDYyA9IFsgcmUuc3JjX1osIHJlLnNyY19DYyBdLmpvaW4oJ3wnKTtcblxuICAvLyBFeHBlcmltZW50YWwuIExpc3Qgb2YgY2hhcnMsIGNvbXBsZXRlbHkgcHJvaGliaXRlZCBpbiBsaW5rc1xuICAvLyBiZWNhdXNlIGNhbiBzZXBhcmF0ZSBpdCBmcm9tIG90aGVyIHBhcnQgb2YgdGV4dFxuICB2YXIgdGV4dF9zZXBhcmF0b3JzID0gJ1s+PFxcdWZmNWNdJztcblxuICAvLyBBbGwgcG9zc2libGUgd29yZCBjaGFyYWN0ZXJzIChldmVyeXRoaW5nIHdpdGhvdXQgcHVuY3R1YXRpb24sIHNwYWNlcyAmIGNvbnRyb2xzKVxuICAvLyBEZWZpbmVkIHZpYSBwdW5jdHVhdGlvbiAmIHNwYWNlcyB0byBzYXZlIHNwYWNlXG4gIC8vIFNob3VsZCBiZSBzb21ldGhpbmcgbGlrZSBcXHB7XFxMXFxOXFxTXFxNfSAoXFx3IGJ1dCB3aXRob3V0IGBfYClcbiAgcmUuc3JjX3BzZXVkb19sZXR0ZXIgICAgICAgPSAnKD86KD8hJyArIHRleHRfc2VwYXJhdG9ycyArICd8JyArIHJlLnNyY19aUENjICsgJyknICsgcmUuc3JjX0FueSArICcpJztcbiAgLy8gVGhlIHNhbWUgYXMgYWJvdGhlIGJ1dCB3aXRob3V0IFswLTldXG4gIC8vIHZhciBzcmNfcHNldWRvX2xldHRlcl9ub25fZCA9ICcoPzooPyFbMC05XXwnICsgc3JjX1pQQ2MgKyAnKScgKyBzcmNfQW55ICsgJyknO1xuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgcmUuc3JjX2lwNCA9XG5cbiAgICAnKD86KDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPylcXFxcLil7M30oMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KSc7XG5cbiAgLy8gUHJvaGliaXQgYW55IG9mIFwiQC9bXSgpXCIgaW4gdXNlci9wYXNzIHRvIGF2b2lkIHdyb25nIGRvbWFpbiBmZXRjaC5cbiAgcmUuc3JjX2F1dGggICAgPSAnKD86KD86KD8hJyArIHJlLnNyY19aQ2MgKyAnfFtAL1xcXFxbXFxcXF0oKV0pLikrQCk/JztcblxuICByZS5zcmNfcG9ydCA9XG5cbiAgICAnKD86Oig/OjYoPzpbMC00XVxcXFxkezN9fDUoPzpbMC00XVxcXFxkezJ9fDUoPzpbMC0yXVxcXFxkfDNbMC01XSkpKXxbMS01XT9cXFxcZHsxLDR9KSk/JztcblxuICByZS5zcmNfaG9zdF90ZXJtaW5hdG9yID1cblxuICAgICcoPz0kfCcgKyB0ZXh0X3NlcGFyYXRvcnMgKyAnfCcgKyByZS5zcmNfWlBDYyArICcpKD8hLXxffDpcXFxcZHxcXFxcLi18XFxcXC4oPyEkfCcgKyByZS5zcmNfWlBDYyArICcpKSc7XG5cbiAgcmUuc3JjX3BhdGggPVxuXG4gICAgJyg/OicgK1xuICAgICAgJ1svPyNdJyArXG4gICAgICAgICcoPzonICtcbiAgICAgICAgICAnKD8hJyArIHJlLnNyY19aQ2MgKyAnfCcgKyB0ZXh0X3NlcGFyYXRvcnMgKyAnfFsoKVtcXFxcXXt9LixcIlxcJz8hXFxcXC1dKS58JyArXG4gICAgICAgICAgJ1xcXFxbKD86KD8hJyArIHJlLnNyY19aQ2MgKyAnfFxcXFxdKS4pKlxcXFxdfCcgK1xuICAgICAgICAgICdcXFxcKCg/Oig/IScgKyByZS5zcmNfWkNjICsgJ3xbKV0pLikqXFxcXCl8JyArXG4gICAgICAgICAgJ1xcXFx7KD86KD8hJyArIHJlLnNyY19aQ2MgKyAnfFt9XSkuKSpcXFxcfXwnICtcbiAgICAgICAgICAnXFxcXFwiKD86KD8hJyArIHJlLnNyY19aQ2MgKyAnfFtcIl0pLikrXFxcXFwifCcgK1xuICAgICAgICAgIFwiXFxcXCcoPzooPyFcIiArIHJlLnNyY19aQ2MgKyBcInxbJ10pLikrXFxcXCd8XCIgK1xuICAgICAgICAgIFwiXFxcXCcoPz1cIiArIHJlLnNyY19wc2V1ZG9fbGV0dGVyICsgJ3xbLV0pLnwnICsgIC8vIGFsbG93IGBJJ21fa2luZ2AgaWYgbm8gcGFpciBmb3VuZFxuICAgICAgICAgICdcXFxcLnsyLDR9W2EtekEtWjAtOSUvXXwnICsgLy8gZ2l0aHViIGhhcyAuLi4gaW4gY29tbWl0IHJhbmdlIGxpbmtzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvb2dsZSBoYXMgLi4uLiBpbiBsaW5rcyAoaXNzdWUgIzY2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc3RyaWN0IHRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBlbmdsaXNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBwZXJjZW50LWVuY29kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtIHBhcnRzIG9mIGZpbGUgcGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVudGlsIG1vcmUgZXhhbXBsZXMgZm91bmQuXG4gICAgICAgICAgJ1xcXFwuKD8hJyArIHJlLnNyY19aQ2MgKyAnfFsuXSkufCcgK1xuICAgICAgICAgIChvcHRzICYmIG9wdHNbJy0tLSddID9cbiAgICAgICAgICAgICdcXFxcLSg/IS0tKD86W14tXXwkKSkoPzotKil8JyAvLyBgLS0tYCA9PiBsb25nIGRhc2gsIHRlcm1pbmF0ZVxuICAgICAgICAgICAgOlxuICAgICAgICAgICAgJ1xcXFwtK3wnXG4gICAgICAgICAgKSArXG4gICAgICAgICAgJ1xcXFwsKD8hJyArIHJlLnNyY19aQ2MgKyAnKS58JyArICAgICAgLy8gYWxsb3cgYCwsLGAgaW4gcGF0aHNcbiAgICAgICAgICAnXFxcXCEoPyEnICsgcmUuc3JjX1pDYyArICd8WyFdKS58JyArXG4gICAgICAgICAgJ1xcXFw/KD8hJyArIHJlLnNyY19aQ2MgKyAnfFs/XSkuJyArXG4gICAgICAgICcpKycgK1xuICAgICAgJ3xcXFxcLycgK1xuICAgICcpPyc7XG5cbiAgLy8gQWxsb3cgYW55dGhpbmcgaW4gbWFya2Rvd24gc3BlYywgZm9yYmlkIHF1b3RlIChcIikgYXQgdGhlIGZpcnN0IHBvc2l0aW9uXG4gIC8vIGJlY2F1c2UgZW1haWxzIGVuY2xvc2VkIGluIHF1b3RlcyBhcmUgZmFyIG1vcmUgY29tbW9uXG4gIHJlLnNyY19lbWFpbF9uYW1lID1cblxuICAgICdbXFxcXC07OiY9XFxcXCtcXFxcJCxcXFxcLmEtekEtWjAtOV9dW1xcXFwtOzomPVxcXFwrXFxcXCQsXFxcXFwiXFxcXC5hLXpBLVowLTlfXSonO1xuXG4gIHJlLnNyY194biA9XG5cbiAgICAneG4tLVthLXowLTlcXFxcLV17MSw1OX0nO1xuXG4gIC8vIE1vcmUgdG8gcmVhZCBhYm91dCBkb21haW4gbmFtZXNcbiAgLy8gaHR0cDovL3NlcnZlcmZhdWx0LmNvbS9xdWVzdGlvbnMvNjM4MjYwL1xuXG4gIHJlLnNyY19kb21haW5fcm9vdCA9XG5cbiAgICAvLyBBbGxvdyBsZXR0ZXJzICYgZGlnaXRzIChodHRwOi8vdGVzdDEpXG4gICAgJyg/OicgK1xuICAgICAgcmUuc3JjX3huICtcbiAgICAgICd8JyArXG4gICAgICByZS5zcmNfcHNldWRvX2xldHRlciArICd7MSw2M30nICtcbiAgICAnKSc7XG5cbiAgcmUuc3JjX2RvbWFpbiA9XG5cbiAgICAnKD86JyArXG4gICAgICByZS5zcmNfeG4gK1xuICAgICAgJ3wnICtcbiAgICAgICcoPzonICsgcmUuc3JjX3BzZXVkb19sZXR0ZXIgKyAnKScgK1xuICAgICAgJ3wnICtcbiAgICAgICcoPzonICsgcmUuc3JjX3BzZXVkb19sZXR0ZXIgKyAnKD86LXwnICsgcmUuc3JjX3BzZXVkb19sZXR0ZXIgKyAnKXswLDYxfScgKyByZS5zcmNfcHNldWRvX2xldHRlciArICcpJyArXG4gICAgJyknO1xuXG4gIHJlLnNyY19ob3N0ID1cblxuICAgICcoPzonICtcbiAgICAvLyBEb24ndCBuZWVkIElQIGNoZWNrLCBiZWNhdXNlIGRpZ2l0cyBhcmUgYWxyZWFkeSBhbGxvd2VkIGluIG5vcm1hbCBkb21haW4gbmFtZXNcbiAgICAvLyAgIHNyY19pcDQgK1xuICAgIC8vICd8JyArXG4gICAgICAnKD86KD86KD86JyArIHJlLnNyY19kb21haW4gKyAnKVxcXFwuKSonICsgcmUuc3JjX2RvbWFpbi8qX3Jvb3QqLyArICcpJyArXG4gICAgJyknO1xuXG4gIHJlLnRwbF9ob3N0X2Z1enp5ID1cblxuICAgICcoPzonICtcbiAgICAgIHJlLnNyY19pcDQgK1xuICAgICd8JyArXG4gICAgICAnKD86KD86KD86JyArIHJlLnNyY19kb21haW4gKyAnKVxcXFwuKSsoPzolVExEUyUpKScgK1xuICAgICcpJztcblxuICByZS50cGxfaG9zdF9ub19pcF9mdXp6eSA9XG5cbiAgICAnKD86KD86KD86JyArIHJlLnNyY19kb21haW4gKyAnKVxcXFwuKSsoPzolVExEUyUpKSc7XG5cbiAgcmUuc3JjX2hvc3Rfc3RyaWN0ID1cblxuICAgIHJlLnNyY19ob3N0ICsgcmUuc3JjX2hvc3RfdGVybWluYXRvcjtcblxuICByZS50cGxfaG9zdF9mdXp6eV9zdHJpY3QgPVxuXG4gICAgcmUudHBsX2hvc3RfZnV6enkgKyByZS5zcmNfaG9zdF90ZXJtaW5hdG9yO1xuXG4gIHJlLnNyY19ob3N0X3BvcnRfc3RyaWN0ID1cblxuICAgIHJlLnNyY19ob3N0ICsgcmUuc3JjX3BvcnQgKyByZS5zcmNfaG9zdF90ZXJtaW5hdG9yO1xuXG4gIHJlLnRwbF9ob3N0X3BvcnRfZnV6enlfc3RyaWN0ID1cblxuICAgIHJlLnRwbF9ob3N0X2Z1enp5ICsgcmUuc3JjX3BvcnQgKyByZS5zcmNfaG9zdF90ZXJtaW5hdG9yO1xuXG4gIHJlLnRwbF9ob3N0X3BvcnRfbm9faXBfZnV6enlfc3RyaWN0ID1cblxuICAgIHJlLnRwbF9ob3N0X25vX2lwX2Z1enp5ICsgcmUuc3JjX3BvcnQgKyByZS5zcmNfaG9zdF90ZXJtaW5hdG9yO1xuXG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gTWFpbiBydWxlc1xuXG4gIC8vIFJ1ZGUgdGVzdCBmdXp6eSBsaW5rcyBieSBob3N0LCBmb3IgcXVpY2sgZGVueVxuICByZS50cGxfaG9zdF9mdXp6eV90ZXN0ID1cblxuICAgICdsb2NhbGhvc3R8d3d3XFxcXC58XFxcXC5cXFxcZHsxLDN9XFxcXC58KD86XFxcXC4oPzolVExEUyUpKD86JyArIHJlLnNyY19aUENjICsgJ3w+fCQpKSc7XG5cbiAgcmUudHBsX2VtYWlsX2Z1enp5ID1cblxuICAgICAgJyhefCcgKyB0ZXh0X3NlcGFyYXRvcnMgKyAnfFwifFxcXFwofCcgKyByZS5zcmNfWkNjICsgJyknICtcbiAgICAgICcoJyArIHJlLnNyY19lbWFpbF9uYW1lICsgJ0AnICsgcmUudHBsX2hvc3RfZnV6enlfc3RyaWN0ICsgJyknO1xuXG4gIHJlLnRwbF9saW5rX2Z1enp5ID1cbiAgICAgIC8vIEZ1enp5IGxpbmsgY2FuJ3QgYmUgcHJlcGVuZGVkIHdpdGggLjovXFwtIGFuZCBub24gcHVuY3R1YXRpb24uXG4gICAgICAvLyBidXQgY2FuIHN0YXJ0IHdpdGggPiAobWFya2Rvd24gYmxvY2txdW90ZSlcbiAgICAgICcoXnwoPyFbLjovXFxcXC1fQF0pKD86WyQrPD0+XmB8XFx1ZmY1Y118JyArIHJlLnNyY19aUENjICsgJykpJyArXG4gICAgICAnKCg/IVskKzw9Pl5gfFxcdWZmNWNdKScgKyByZS50cGxfaG9zdF9wb3J0X2Z1enp5X3N0cmljdCArIHJlLnNyY19wYXRoICsgJyknO1xuXG4gIHJlLnRwbF9saW5rX25vX2lwX2Z1enp5ID1cbiAgICAgIC8vIEZ1enp5IGxpbmsgY2FuJ3QgYmUgcHJlcGVuZGVkIHdpdGggLjovXFwtIGFuZCBub24gcHVuY3R1YXRpb24uXG4gICAgICAvLyBidXQgY2FuIHN0YXJ0IHdpdGggPiAobWFya2Rvd24gYmxvY2txdW90ZSlcbiAgICAgICcoXnwoPyFbLjovXFxcXC1fQF0pKD86WyQrPD0+XmB8XFx1ZmY1Y118JyArIHJlLnNyY19aUENjICsgJykpJyArXG4gICAgICAnKCg/IVskKzw9Pl5gfFxcdWZmNWNdKScgKyByZS50cGxfaG9zdF9wb3J0X25vX2lwX2Z1enp5X3N0cmljdCArIHJlLnNyY19wYXRoICsgJyknO1xuXG4gIHJldHVybiByZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUVBO0FBSUE7QUFJQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBT0E7QUFDQTtBQUFBO0FBSUE7QUFLQTtBQUNBO0FBQ0E7QUFHQTtBQU1BO0FBVUE7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUpBO0FBT0E7QUFRQTtBQUlBO0FBSUE7QUFJQTtBQUlBO0FBSUE7QUFNQTtBQUVBO0FBQ0E7QUFBQTtBQUlBO0FBS0E7QUFFQTtBQUNBO0FBR0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/linkify-it/lib/re.js\n");
1867
1868/***/ }),
1869
1870/***/ "../../../node_modules/markdown-it/index.js":
1871/*!*****************************************************************************!*\
1872 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/index.js ***!
1873 \*****************************************************************************/
1874/*! no static exports found */
1875/***/ (function(module, exports, __webpack_require__) {
1876
1877eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n module.exports = __webpack_require__(/*! ./lib/ */ \"../../../node_modules/markdown-it/lib/index.js\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2luZGV4LmpzP2JkNDUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvJyk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUVBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/index.js\n");
1878
1879/***/ }),
1880
1881/***/ "../../../node_modules/markdown-it/lib/common/entities.js":
1882/*!*******************************************************************************************!*\
1883 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/common/entities.js ***!
1884 \*******************************************************************************************/
1885/*! no static exports found */
1886/***/ (function(module, exports, __webpack_require__) {
1887
1888eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // HTML5 entities map: { name -> utf16string }\n //\n 'use strict';\n /*eslint quotes:0*/\n\n module.exports = __webpack_require__(/*! entities/lib/maps/entities.json */ \"../../../node_modules/entities/lib/maps/entities.json\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9jb21tb24vZW50aXRpZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2NvbW1vbi9lbnRpdGllcy5qcz84YjkwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEhUTUw1IGVudGl0aWVzIG1hcDogeyBuYW1lIC0+IHV0ZjE2c3RyaW5nIH1cbi8vXG4ndXNlIHN0cmljdCc7XG5cbi8qZXNsaW50IHF1b3RlczowKi9cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnZW50aXRpZXMvbGliL21hcHMvZW50aXRpZXMuanNvbicpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/common/entities.js\n");
1889
1890/***/ }),
1891
1892/***/ "../../../node_modules/markdown-it/lib/common/html_blocks.js":
1893/*!**********************************************************************************************!*\
1894 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/common/html_blocks.js ***!
1895 \**********************************************************************************************/
1896/*! no static exports found */
1897/***/ (function(module, exports, __webpack_require__) {
1898
1899eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // List of valid html blocks names, accorting to commonmark spec\n // http://jgm.github.io/CommonMark/spec.html#html-blocks\n 'use strict';\n\n module.exports = ['address', 'article', 'aside', 'base', 'basefont', 'blockquote', 'body', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dialog', 'dir', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'iframe', 'legend', 'li', 'link', 'main', 'menu', 'menuitem', 'meta', 'nav', 'noframes', 'ol', 'optgroup', 'option', 'p', 'param', 'section', 'source', 'summary', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul'];\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9jb21tb24vaHRtbF9ibG9ja3MuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2NvbW1vbi9odG1sX2Jsb2Nrcy5qcz9iNzA4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIExpc3Qgb2YgdmFsaWQgaHRtbCBibG9ja3MgbmFtZXMsIGFjY29ydGluZyB0byBjb21tb25tYXJrIHNwZWNcbi8vIGh0dHA6Ly9qZ20uZ2l0aHViLmlvL0NvbW1vbk1hcmsvc3BlYy5odG1sI2h0bWwtYmxvY2tzXG5cbid1c2Ugc3RyaWN0JztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2FkZHJlc3MnLFxuICAnYXJ0aWNsZScsXG4gICdhc2lkZScsXG4gICdiYXNlJyxcbiAgJ2Jhc2Vmb250JyxcbiAgJ2Jsb2NrcXVvdGUnLFxuICAnYm9keScsXG4gICdjYXB0aW9uJyxcbiAgJ2NlbnRlcicsXG4gICdjb2wnLFxuICAnY29sZ3JvdXAnLFxuICAnZGQnLFxuICAnZGV0YWlscycsXG4gICdkaWFsb2cnLFxuICAnZGlyJyxcbiAgJ2RpdicsXG4gICdkbCcsXG4gICdkdCcsXG4gICdmaWVsZHNldCcsXG4gICdmaWdjYXB0aW9uJyxcbiAgJ2ZpZ3VyZScsXG4gICdmb290ZXInLFxuICAnZm9ybScsXG4gICdmcmFtZScsXG4gICdmcmFtZXNldCcsXG4gICdoMScsXG4gICdoMicsXG4gICdoMycsXG4gICdoNCcsXG4gICdoNScsXG4gICdoNicsXG4gICdoZWFkJyxcbiAgJ2hlYWRlcicsXG4gICdocicsXG4gICdodG1sJyxcbiAgJ2lmcmFtZScsXG4gICdsZWdlbmQnLFxuICAnbGknLFxuICAnbGluaycsXG4gICdtYWluJyxcbiAgJ21lbnUnLFxuICAnbWVudWl0ZW0nLFxuICAnbWV0YScsXG4gICduYXYnLFxuICAnbm9mcmFtZXMnLFxuICAnb2wnLFxuICAnb3B0Z3JvdXAnLFxuICAnb3B0aW9uJyxcbiAgJ3AnLFxuICAncGFyYW0nLFxuICAnc2VjdGlvbicsXG4gICdzb3VyY2UnLFxuICAnc3VtbWFyeScsXG4gICd0YWJsZScsXG4gICd0Ym9keScsXG4gICd0ZCcsXG4gICd0Zm9vdCcsXG4gICd0aCcsXG4gICd0aGVhZCcsXG4gICd0aXRsZScsXG4gICd0cicsXG4gICd0cmFjaycsXG4gICd1bCdcbl07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/common/html_blocks.js\n");
1900
1901/***/ }),
1902
1903/***/ "../../../node_modules/markdown-it/lib/common/html_re.js":
1904/*!******************************************************************************************!*\
1905 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/common/html_re.js ***!
1906 \******************************************************************************************/
1907/*! no static exports found */
1908/***/ (function(module, exports, __webpack_require__) {
1909
1910eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Regexps to match html elements\n 'use strict';\n\n var attr_name = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\n var unquoted = '[^\"\\'=<>`\\\\x00-\\\\x20]+';\n var single_quoted = \"'[^']*'\";\n var double_quoted = '\"[^\"]*\"';\n var attr_value = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')';\n var attribute = '(?:\\\\s+' + attr_name + '(?:\\\\s*=\\\\s*' + attr_value + ')?)';\n var open_tag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>';\n var close_tag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>';\n var comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->';\n var processing = '<[?].*?[?]>';\n var declaration = '<![A-Z]+\\\\s+[^>]*>';\n var cdata = '<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>';\n var HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment + '|' + processing + '|' + declaration + '|' + cdata + ')');\n var HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')');\n module.exports.HTML_TAG_RE = HTML_TAG_RE;\n module.exports.HTML_OPEN_CLOSE_TAG_RE = HTML_OPEN_CLOSE_TAG_RE;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9jb21tb24vaHRtbF9yZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvY29tbW9uL2h0bWxfcmUuanM/M2MwYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBSZWdleHBzIHRvIG1hdGNoIGh0bWwgZWxlbWVudHNcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXR0cl9uYW1lICAgICA9ICdbYS16QS1aXzpdW2EtekEtWjAtOTouXy1dKic7XG5cbnZhciB1bnF1b3RlZCAgICAgID0gJ1teXCJcXCc9PD5gXFxcXHgwMC1cXFxceDIwXSsnO1xudmFyIHNpbmdsZV9xdW90ZWQgPSBcIidbXiddKidcIjtcbnZhciBkb3VibGVfcXVvdGVkID0gJ1wiW15cIl0qXCInO1xuXG52YXIgYXR0cl92YWx1ZSAgPSAnKD86JyArIHVucXVvdGVkICsgJ3wnICsgc2luZ2xlX3F1b3RlZCArICd8JyArIGRvdWJsZV9xdW90ZWQgKyAnKSc7XG5cbnZhciBhdHRyaWJ1dGUgICA9ICcoPzpcXFxccysnICsgYXR0cl9uYW1lICsgJyg/OlxcXFxzKj1cXFxccyonICsgYXR0cl92YWx1ZSArICcpPyknO1xuXG52YXIgb3Blbl90YWcgICAgPSAnPFtBLVphLXpdW0EtWmEtejAtOVxcXFwtXSonICsgYXR0cmlidXRlICsgJypcXFxccypcXFxcLz8+JztcblxudmFyIGNsb3NlX3RhZyAgID0gJzxcXFxcL1tBLVphLXpdW0EtWmEtejAtOVxcXFwtXSpcXFxccyo+JztcbnZhciBjb21tZW50ICAgICA9ICc8IS0tLS0+fDwhLS0oPzotP1tePi1dKSg/Oi0/W14tXSkqLS0+JztcbnZhciBwcm9jZXNzaW5nICA9ICc8Wz9dLio/Wz9dPic7XG52YXIgZGVjbGFyYXRpb24gPSAnPCFbQS1aXStcXFxccytbXj5dKj4nO1xudmFyIGNkYXRhICAgICAgID0gJzwhXFxcXFtDREFUQVxcXFxbW1xcXFxzXFxcXFNdKj9cXFxcXVxcXFxdPic7XG5cbnZhciBIVE1MX1RBR19SRSA9IG5ldyBSZWdFeHAoJ14oPzonICsgb3Blbl90YWcgKyAnfCcgKyBjbG9zZV90YWcgKyAnfCcgKyBjb21tZW50ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICd8JyArIHByb2Nlc3NpbmcgKyAnfCcgKyBkZWNsYXJhdGlvbiArICd8JyArIGNkYXRhICsgJyknKTtcbnZhciBIVE1MX09QRU5fQ0xPU0VfVEFHX1JFID0gbmV3IFJlZ0V4cCgnXig/OicgKyBvcGVuX3RhZyArICd8JyArIGNsb3NlX3RhZyArICcpJyk7XG5cbm1vZHVsZS5leHBvcnRzLkhUTUxfVEFHX1JFID0gSFRNTF9UQUdfUkU7XG5tb2R1bGUuZXhwb3J0cy5IVE1MX09QRU5fQ0xPU0VfVEFHX1JFID0gSFRNTF9PUEVOX0NMT1NFX1RBR19SRTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/common/html_re.js\n");
1911
1912/***/ }),
1913
1914/***/ "../../../node_modules/markdown-it/lib/common/utils.js":
1915/*!****************************************************************************************!*\
1916 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/common/utils.js ***!
1917 \****************************************************************************************/
1918/*! no static exports found */
1919/***/ (function(module, exports, __webpack_require__) {
1920
1921eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Utilities\n //\n 'use strict';\n\n function _class(obj) {\n return Object.prototype.toString.call(obj);\n }\n\n function isString(obj) {\n return _class(obj) === '[object String]';\n }\n\n var _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n function has(object, key) {\n return _hasOwnProperty.call(object, key);\n } // Merge objects\n //\n\n\n function assign(obj\n /*from1, from2, from3, ...*/\n ) {\n var sources = Array.prototype.slice.call(arguments, 1);\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be object');\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n return obj;\n } // Remove element from array and put another array at those position.\n // Useful for some operations with tokens\n\n\n function arrayReplaceAt(src, pos, newElements) {\n return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));\n } ////////////////////////////////////////////////////////////////////////////////\n\n\n function isValidEntityCode(c) {\n /*eslint no-bitwise:0*/\n // broken sequence\n if (c >= 0xD800 && c <= 0xDFFF) {\n return false;\n } // never used\n\n\n if (c >= 0xFDD0 && c <= 0xFDEF) {\n return false;\n }\n\n if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) {\n return false;\n } // control codes\n\n\n if (c >= 0x00 && c <= 0x08) {\n return false;\n }\n\n if (c === 0x0B) {\n return false;\n }\n\n if (c >= 0x0E && c <= 0x1F) {\n return false;\n }\n\n if (c >= 0x7F && c <= 0x9F) {\n return false;\n } // out of range\n\n\n if (c > 0x10FFFF) {\n return false;\n }\n\n return true;\n }\n\n function fromCodePoint(c) {\n /*eslint no-bitwise:0*/\n if (c > 0xffff) {\n c -= 0x10000;\n var surrogate1 = 0xd800 + (c >> 10),\n surrogate2 = 0xdc00 + (c & 0x3ff);\n return String.fromCharCode(surrogate1, surrogate2);\n }\n\n return String.fromCharCode(c);\n }\n\n var UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~])/g;\n var ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;\n var UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi');\n var DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;\n\n var entities = __webpack_require__(/*! ./entities */ \"../../../node_modules/markdown-it/lib/common/entities.js\");\n\n function replaceEntityPattern(match, name) {\n var code = 0;\n\n if (has(entities, name)) {\n return entities[name];\n }\n\n if (name.charCodeAt(0) === 0x23\n /* # */\n && DIGITAL_ENTITY_TEST_RE.test(name)) {\n code = name[1].toLowerCase() === 'x' ? parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10);\n\n if (isValidEntityCode(code)) {\n return fromCodePoint(code);\n }\n }\n\n return match;\n }\n /*function replaceEntities(str) {\n if (str.indexOf('&') < 0) { return str; }\n \n return str.replace(ENTITY_RE, replaceEntityPattern);\n }*/\n\n\n function unescapeMd(str) {\n if (str.indexOf('\\\\') < 0) {\n return str;\n }\n\n return str.replace(UNESCAPE_MD_RE, '$1');\n }\n\n function unescapeAll(str) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) {\n return str;\n }\n\n return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {\n if (escaped) {\n return escaped;\n }\n\n return replaceEntityPattern(match, entity);\n });\n } ////////////////////////////////////////////////////////////////////////////////\n\n\n var HTML_ESCAPE_TEST_RE = /[&<>\"]/;\n var HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\n var HTML_REPLACEMENTS = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;'\n };\n\n function replaceUnsafeChar(ch) {\n return HTML_REPLACEMENTS[ch];\n }\n\n function escapeHtml(str) {\n if (HTML_ESCAPE_TEST_RE.test(str)) {\n return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);\n }\n\n return str;\n } ////////////////////////////////////////////////////////////////////////////////\n\n\n var REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g;\n\n function escapeRE(str) {\n return str.replace(REGEXP_ESCAPE_RE, '\\\\$&');\n } ////////////////////////////////////////////////////////////////////////////////\n\n\n function isSpace(code) {\n switch (code) {\n case 0x09:\n case 0x20:\n return true;\n }\n\n return false;\n } // Zs (unicode class) || [\\t\\f\\v\\r\\n]\n\n\n function isWhiteSpace(code) {\n if (code >= 0x2000 && code <= 0x200A) {\n return true;\n }\n\n switch (code) {\n case 0x09: // \\t\n\n case 0x0A: // \\n\n\n case 0x0B: // \\v\n\n case 0x0C: // \\f\n\n case 0x0D: // \\r\n\n case 0x20:\n case 0xA0:\n case 0x1680:\n case 0x202F:\n case 0x205F:\n case 0x3000:\n return true;\n }\n\n return false;\n } ////////////////////////////////////////////////////////////////////////////////\n\n /*eslint-disable max-len*/\n\n\n var UNICODE_PUNCT_RE = __webpack_require__(/*! uc.micro/categories/P/regex */ \"../../../node_modules/uc.micro/categories/P/regex.js\"); // Currently without astral characters support.\n\n\n function isPunctChar(ch) {\n return UNICODE_PUNCT_RE.test(ch);\n } // Markdown ASCII punctuation characters.\n //\n // !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n // http://spec.commonmark.org/0.15/#ascii-punctuation-character\n //\n // Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n //\n\n\n function isMdAsciiPunct(ch) {\n switch (ch) {\n case 0x21\n /* ! */\n :\n case 0x22\n /* \" */\n :\n case 0x23\n /* # */\n :\n case 0x24\n /* $ */\n :\n case 0x25\n /* % */\n :\n case 0x26\n /* & */\n :\n case 0x27\n /* ' */\n :\n case 0x28\n /* ( */\n :\n case 0x29\n /* ) */\n :\n case 0x2A\n /* * */\n :\n case 0x2B\n /* + */\n :\n case 0x2C\n /* , */\n :\n case 0x2D\n /* - */\n :\n case 0x2E\n /* . */\n :\n case 0x2F\n /* / */\n :\n case 0x3A\n /* : */\n :\n case 0x3B\n /* ; */\n :\n case 0x3C\n /* < */\n :\n case 0x3D\n /* = */\n :\n case 0x3E\n /* > */\n :\n case 0x3F\n /* ? */\n :\n case 0x40\n /* @ */\n :\n case 0x5B\n /* [ */\n :\n case 0x5C\n /* \\ */\n :\n case 0x5D\n /* ] */\n :\n case 0x5E\n /* ^ */\n :\n case 0x5F\n /* _ */\n :\n case 0x60\n /* ` */\n :\n case 0x7B\n /* { */\n :\n case 0x7C\n /* | */\n :\n case 0x7D\n /* } */\n :\n case 0x7E\n /* ~ */\n :\n return true;\n\n default:\n return false;\n }\n } // Hepler to unify [reference labels].\n //\n\n\n function normalizeReference(str) {\n // Trim and collapse whitespace\n //\n str = str.trim().replace(/\\s+/g, ' '); // In node v10 'ẞ'.toLowerCase() === 'Ṿ', which is presumed to be a bug\n // fixed in v12 (couldn't find any details).\n //\n // So treat this one as a special case\n // (remove this when node v10 is no longer supported).\n //\n\n if ('ẞ'.toLowerCase() === 'Ṿ') {\n str = str.replace(/ẞ/g, 'ß');\n } // .toLowerCase().toUpperCase() should get rid of all differences\n // between letter variants.\n //\n // Simple .toLowerCase() doesn't normalize 125 code points correctly,\n // and .toUpperCase doesn't normalize 6 of them (list of exceptions:\n // İ, ϴ, ẞ, Ω, K, Å - those are already uppercased, but have differently\n // uppercased versions).\n //\n // Here's an example showing how it happens. Lets take greek letter omega:\n // uppercase U+0398 (Θ), U+03f4 (ϴ) and lowercase U+03b8 (θ), U+03d1 (ϑ)\n //\n // Unicode entries:\n // 0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;\n // 03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398\n // 03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398\n // 03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;\n //\n // Case-insensitive comparison should treat all of them as equivalent.\n //\n // But .toLowerCase() doesn't change ϑ (it's already lowercase),\n // and .toUpperCase() doesn't change ϴ (already uppercase).\n //\n // Applying first lower then upper case normalizes any character:\n // '\\u0398\\u03f4\\u03b8\\u03d1'.toLowerCase().toUpperCase() === '\\u0398\\u0398\\u0398\\u0398'\n //\n // Note: this is equivalent to unicode case folding; unicode normalization\n // is a different step that is not required here.\n //\n // Final result should be uppercased, because it's later stored in an object\n // (this avoid a conflict with Object.prototype members,\n // most notably, `__proto__`)\n //\n\n\n return str.toLowerCase().toUpperCase();\n } ////////////////////////////////////////////////////////////////////////////////\n // Re-export libraries commonly used in both markdown-it and its plugins,\n // so plugins won't have to depend on them explicitly, which reduces their\n // bundled size (e.g. a browser build).\n //\n\n\n exports.lib = {};\n exports.lib.mdurl = __webpack_require__(/*! mdurl */ \"../../../node_modules/mdurl/index.js\");\n exports.lib.ucmicro = __webpack_require__(/*! uc.micro */ \"../../../node_modules/uc.micro/index.js\");\n exports.assign = assign;\n exports.isString = isString;\n exports.has = has;\n exports.unescapeMd = unescapeMd;\n exports.unescapeAll = unescapeAll;\n exports.isValidEntityCode = isValidEntityCode;\n exports.fromCodePoint = fromCodePoint; // exports.replaceEntities = replaceEntities;\n\n exports.escapeHtml = escapeHtml;\n exports.arrayReplaceAt = arrayReplaceAt;\n exports.isSpace = isSpace;\n exports.isWhiteSpace = isWhiteSpace;\n exports.isMdAsciiPunct = isMdAsciiPunct;\n exports.isPunctChar = isPunctChar;\n exports.escapeRE = escapeRE;\n exports.normalizeReference = normalizeReference;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9jb21tb24vdXRpbHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2NvbW1vbi91dGlscy5qcz9iNTE5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFV0aWxpdGllc1xuLy9cbid1c2Ugc3RyaWN0JztcblxuXG5mdW5jdGlvbiBfY2xhc3Mob2JqKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKTsgfVxuXG5mdW5jdGlvbiBpc1N0cmluZyhvYmopIHsgcmV0dXJuIF9jbGFzcyhvYmopID09PSAnW29iamVjdCBTdHJpbmddJzsgfVxuXG52YXIgX2hhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gaGFzKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBfaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7XG59XG5cbi8vIE1lcmdlIG9iamVjdHNcbi8vXG5mdW5jdGlvbiBhc3NpZ24ob2JqIC8qZnJvbTEsIGZyb20yLCBmcm9tMywgLi4uKi8pIHtcbiAgdmFyIHNvdXJjZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG4gIHNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgaWYgKCFzb3VyY2UpIHsgcmV0dXJuOyB9XG5cbiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3Ioc291cmNlICsgJ211c3QgYmUgb2JqZWN0Jyk7XG4gICAgfVxuXG4gICAgT2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIG9ialtrZXldID0gc291cmNlW2tleV07XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBvYmo7XG59XG5cbi8vIFJlbW92ZSBlbGVtZW50IGZyb20gYXJyYXkgYW5kIHB1dCBhbm90aGVyIGFycmF5IGF0IHRob3NlIHBvc2l0aW9uLlxuLy8gVXNlZnVsIGZvciBzb21lIG9wZXJhdGlvbnMgd2l0aCB0b2tlbnNcbmZ1bmN0aW9uIGFycmF5UmVwbGFjZUF0KHNyYywgcG9zLCBuZXdFbGVtZW50cykge1xuICByZXR1cm4gW10uY29uY2F0KHNyYy5zbGljZSgwLCBwb3MpLCBuZXdFbGVtZW50cywgc3JjLnNsaWNlKHBvcyArIDEpKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZnVuY3Rpb24gaXNWYWxpZEVudGl0eUNvZGUoYykge1xuICAvKmVzbGludCBuby1iaXR3aXNlOjAqL1xuICAvLyBicm9rZW4gc2VxdWVuY2VcbiAgaWYgKGMgPj0gMHhEODAwICYmIGMgPD0gMHhERkZGKSB7IHJldHVybiBmYWxzZTsgfVxuICAvLyBuZXZlciB1c2VkXG4gIGlmIChjID49IDB4RkREMCAmJiBjIDw9IDB4RkRFRikgeyByZXR1cm4gZmFsc2U7IH1cbiAgaWYgKChjICYgMHhGRkZGKSA9PT0gMHhGRkZGIHx8IChjICYgMHhGRkZGKSA9PT0gMHhGRkZFKSB7IHJldHVybiBmYWxzZTsgfVxuICAvLyBjb250cm9sIGNvZGVzXG4gIGlmIChjID49IDB4MDAgJiYgYyA8PSAweDA4KSB7IHJldHVybiBmYWxzZTsgfVxuICBpZiAoYyA9PT0gMHgwQikgeyByZXR1cm4gZmFsc2U7IH1cbiAgaWYgKGMgPj0gMHgwRSAmJiBjIDw9IDB4MUYpIHsgcmV0dXJuIGZhbHNlOyB9XG4gIGlmIChjID49IDB4N0YgJiYgYyA8PSAweDlGKSB7IHJldHVybiBmYWxzZTsgfVxuICAvLyBvdXQgb2YgcmFuZ2VcbiAgaWYgKGMgPiAweDEwRkZGRikgeyByZXR1cm4gZmFsc2U7IH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGZyb21Db2RlUG9pbnQoYykge1xuICAvKmVzbGludCBuby1iaXR3aXNlOjAqL1xuICBpZiAoYyA+IDB4ZmZmZikge1xuICAgIGMgLT0gMHgxMDAwMDtcbiAgICB2YXIgc3Vycm9nYXRlMSA9IDB4ZDgwMCArIChjID4+IDEwKSxcbiAgICAgICAgc3Vycm9nYXRlMiA9IDB4ZGMwMCArIChjICYgMHgzZmYpO1xuXG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoc3Vycm9nYXRlMSwgc3Vycm9nYXRlMik7XG4gIH1cbiAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7XG59XG5cblxudmFyIFVORVNDQVBFX01EX1JFICA9IC9cXFxcKFshXCIjJCUmJygpKissXFwtLlxcLzo7PD0+P0BbXFxcXFxcXV5fYHt8fX5dKS9nO1xudmFyIEVOVElUWV9SRSAgICAgICA9IC8mKFthLXojXVthLXowLTldezEsMzF9KTsvZ2k7XG52YXIgVU5FU0NBUEVfQUxMX1JFID0gbmV3IFJlZ0V4cChVTkVTQ0FQRV9NRF9SRS5zb3VyY2UgKyAnfCcgKyBFTlRJVFlfUkUuc291cmNlLCAnZ2knKTtcblxudmFyIERJR0lUQUxfRU5USVRZX1RFU1RfUkUgPSAvXiMoKD86eFthLWYwLTldezEsOH18WzAtOV17MSw4fSkpL2k7XG5cbnZhciBlbnRpdGllcyA9IHJlcXVpcmUoJy4vZW50aXRpZXMnKTtcblxuZnVuY3Rpb24gcmVwbGFjZUVudGl0eVBhdHRlcm4obWF0Y2gsIG5hbWUpIHtcbiAgdmFyIGNvZGUgPSAwO1xuXG4gIGlmIChoYXMoZW50aXRpZXMsIG5hbWUpKSB7XG4gICAgcmV0dXJuIGVudGl0aWVzW25hbWVdO1xuICB9XG5cbiAgaWYgKG5hbWUuY2hhckNvZGVBdCgwKSA9PT0gMHgyMy8qICMgKi8gJiYgRElHSVRBTF9FTlRJVFlfVEVTVF9SRS50ZXN0KG5hbWUpKSB7XG4gICAgY29kZSA9IG5hbWVbMV0udG9Mb3dlckNhc2UoKSA9PT0gJ3gnID9cbiAgICAgIHBhcnNlSW50KG5hbWUuc2xpY2UoMiksIDE2KSA6IHBhcnNlSW50KG5hbWUuc2xpY2UoMSksIDEwKTtcblxuICAgIGlmIChpc1ZhbGlkRW50aXR5Q29kZShjb2RlKSkge1xuICAgICAgcmV0dXJuIGZyb21Db2RlUG9pbnQoY29kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1hdGNoO1xufVxuXG4vKmZ1bmN0aW9uIHJlcGxhY2VFbnRpdGllcyhzdHIpIHtcbiAgaWYgKHN0ci5pbmRleE9mKCcmJykgPCAwKSB7IHJldHVybiBzdHI7IH1cblxuICByZXR1cm4gc3RyLnJlcGxhY2UoRU5USVRZX1JFLCByZXBsYWNlRW50aXR5UGF0dGVybik7XG59Ki9cblxuZnVuY3Rpb24gdW5lc2NhcGVNZChzdHIpIHtcbiAgaWYgKHN0ci5pbmRleE9mKCdcXFxcJykgPCAwKSB7IHJldHVybiBzdHI7IH1cbiAgcmV0dXJuIHN0ci5yZXBsYWNlKFVORVNDQVBFX01EX1JFLCAnJDEnKTtcbn1cblxuZnVuY3Rpb24gdW5lc2NhcGVBbGwoc3RyKSB7XG4gIGlmIChzdHIuaW5kZXhPZignXFxcXCcpIDwgMCAmJiBzdHIuaW5kZXhPZignJicpIDwgMCkgeyByZXR1cm4gc3RyOyB9XG5cbiAgcmV0dXJuIHN0ci5yZXBsYWNlKFVORVNDQVBFX0FMTF9SRSwgZnVuY3Rpb24gKG1hdGNoLCBlc2NhcGVkLCBlbnRpdHkpIHtcbiAgICBpZiAoZXNjYXBlZCkgeyByZXR1cm4gZXNjYXBlZDsgfVxuICAgIHJldHVybiByZXBsYWNlRW50aXR5UGF0dGVybihtYXRjaCwgZW50aXR5KTtcbiAgfSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbnZhciBIVE1MX0VTQ0FQRV9URVNUX1JFID0gL1smPD5cIl0vO1xudmFyIEhUTUxfRVNDQVBFX1JFUExBQ0VfUkUgPSAvWyY8PlwiXS9nO1xudmFyIEhUTUxfUkVQTEFDRU1FTlRTID0ge1xuICAnJic6ICcmYW1wOycsXG4gICc8JzogJyZsdDsnLFxuICAnPic6ICcmZ3Q7JyxcbiAgJ1wiJzogJyZxdW90Oydcbn07XG5cbmZ1bmN0aW9uIHJlcGxhY2VVbnNhZmVDaGFyKGNoKSB7XG4gIHJldHVybiBIVE1MX1JFUExBQ0VNRU5UU1tjaF07XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUh0bWwoc3RyKSB7XG4gIGlmIChIVE1MX0VTQ0FQRV9URVNUX1JFLnRlc3Qoc3RyKSkge1xuICAgIHJldHVybiBzdHIucmVwbGFjZShIVE1MX0VTQ0FQRV9SRVBMQUNFX1JFLCByZXBsYWNlVW5zYWZlQ2hhcik7XG4gIH1cbiAgcmV0dXJuIHN0cjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxudmFyIFJFR0VYUF9FU0NBUEVfUkUgPSAvWy4/KiteJFtcXF1cXFxcKCl7fXwtXS9nO1xuXG5mdW5jdGlvbiBlc2NhcGVSRShzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKFJFR0VYUF9FU0NBUEVfUkUsICdcXFxcJCYnKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZnVuY3Rpb24gaXNTcGFjZShjb2RlKSB7XG4gIHN3aXRjaCAoY29kZSkge1xuICAgIGNhc2UgMHgwOTpcbiAgICBjYXNlIDB4MjA6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIFpzICh1bmljb2RlIGNsYXNzKSB8fCBbXFx0XFxmXFx2XFxyXFxuXVxuZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGNvZGUpIHtcbiAgaWYgKGNvZGUgPj0gMHgyMDAwICYmIGNvZGUgPD0gMHgyMDBBKSB7IHJldHVybiB0cnVlOyB9XG4gIHN3aXRjaCAoY29kZSkge1xuICAgIGNhc2UgMHgwOTogLy8gXFx0XG4gICAgY2FzZSAweDBBOiAvLyBcXG5cbiAgICBjYXNlIDB4MEI6IC8vIFxcdlxuICAgIGNhc2UgMHgwQzogLy8gXFxmXG4gICAgY2FzZSAweDBEOiAvLyBcXHJcbiAgICBjYXNlIDB4MjA6XG4gICAgY2FzZSAweEEwOlxuICAgIGNhc2UgMHgxNjgwOlxuICAgIGNhc2UgMHgyMDJGOlxuICAgIGNhc2UgMHgyMDVGOlxuICAgIGNhc2UgMHgzMDAwOlxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vKmVzbGludC1kaXNhYmxlIG1heC1sZW4qL1xudmFyIFVOSUNPREVfUFVOQ1RfUkUgPSByZXF1aXJlKCd1Yy5taWNyby9jYXRlZ29yaWVzL1AvcmVnZXgnKTtcblxuLy8gQ3VycmVudGx5IHdpdGhvdXQgYXN0cmFsIGNoYXJhY3RlcnMgc3VwcG9ydC5cbmZ1bmN0aW9uIGlzUHVuY3RDaGFyKGNoKSB7XG4gIHJldHVybiBVTklDT0RFX1BVTkNUX1JFLnRlc3QoY2gpO1xufVxuXG5cbi8vIE1hcmtkb3duIEFTQ0lJIHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMuXG4vL1xuLy8gISwgXCIsICMsICQsICUsICYsICcsICgsICksICosICssICwsIC0sIC4sIC8sIDosIDssIDwsID0sID4sID8sIEAsIFssIFxcLCBdLCBeLCBfLCBgLCB7LCB8LCB9LCBvciB+XG4vLyBodHRwOi8vc3BlYy5jb21tb25tYXJrLm9yZy8wLjE1LyNhc2NpaS1wdW5jdHVhdGlvbi1jaGFyYWN0ZXJcbi8vXG4vLyBEb24ndCBjb25mdXNlIHdpdGggdW5pY29kZSBwdW5jdHVhdGlvbiAhISEgSXQgbGFja3Mgc29tZSBjaGFycyBpbiBhc2NpaSByYW5nZS5cbi8vXG5mdW5jdGlvbiBpc01kQXNjaWlQdW5jdChjaCkge1xuICBzd2l0Y2ggKGNoKSB7XG4gICAgY2FzZSAweDIxLyogISAqLzpcbiAgICBjYXNlIDB4MjIvKiBcIiAqLzpcbiAgICBjYXNlIDB4MjMvKiAjICovOlxuICAgIGNhc2UgMHgyNC8qICQgKi86XG4gICAgY2FzZSAweDI1LyogJSAqLzpcbiAgICBjYXNlIDB4MjYvKiAmICovOlxuICAgIGNhc2UgMHgyNy8qICcgKi86XG4gICAgY2FzZSAweDI4LyogKCAqLzpcbiAgICBjYXNlIDB4MjkvKiApICovOlxuICAgIGNhc2UgMHgyQS8qICogKi86XG4gICAgY2FzZSAweDJCLyogKyAqLzpcbiAgICBjYXNlIDB4MkMvKiAsICovOlxuICAgIGNhc2UgMHgyRC8qIC0gKi86XG4gICAgY2FzZSAweDJFLyogLiAqLzpcbiAgICBjYXNlIDB4MkYvKiAvICovOlxuICAgIGNhc2UgMHgzQS8qIDogKi86XG4gICAgY2FzZSAweDNCLyogOyAqLzpcbiAgICBjYXNlIDB4M0MvKiA8ICovOlxuICAgIGNhc2UgMHgzRC8qID0gKi86XG4gICAgY2FzZSAweDNFLyogPiAqLzpcbiAgICBjYXNlIDB4M0YvKiA/ICovOlxuICAgIGNhc2UgMHg0MC8qIEAgKi86XG4gICAgY2FzZSAweDVCLyogWyAqLzpcbiAgICBjYXNlIDB4NUMvKiBcXCAqLzpcbiAgICBjYXNlIDB4NUQvKiBdICovOlxuICAgIGNhc2UgMHg1RS8qIF4gKi86XG4gICAgY2FzZSAweDVGLyogXyAqLzpcbiAgICBjYXNlIDB4NjAvKiBgICovOlxuICAgIGNhc2UgMHg3Qi8qIHsgKi86XG4gICAgY2FzZSAweDdDLyogfCAqLzpcbiAgICBjYXNlIDB4N0QvKiB9ICovOlxuICAgIGNhc2UgMHg3RS8qIH4gKi86XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vIEhlcGxlciB0byB1bmlmeSBbcmVmZXJlbmNlIGxhYmVsc10uXG4vL1xuZnVuY3Rpb24gbm9ybWFsaXplUmVmZXJlbmNlKHN0cikge1xuICAvLyBUcmltIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlXG4gIC8vXG4gIHN0ciA9IHN0ci50cmltKCkucmVwbGFjZSgvXFxzKy9nLCAnICcpO1xuXG4gIC8vIEluIG5vZGUgdjEwICfhup4nLnRvTG93ZXJDYXNlKCkgPT09ICfhub4nLCB3aGljaCBpcyBwcmVzdW1lZCB0byBiZSBhIGJ1Z1xuICAvLyBmaXhlZCBpbiB2MTIgKGNvdWxkbid0IGZpbmQgYW55IGRldGFpbHMpLlxuICAvL1xuICAvLyBTbyB0cmVhdCB0aGlzIG9uZSBhcyBhIHNwZWNpYWwgY2FzZVxuICAvLyAocmVtb3ZlIHRoaXMgd2hlbiBub2RlIHYxMCBpcyBubyBsb25nZXIgc3VwcG9ydGVkKS5cbiAgLy9cbiAgaWYgKCfhup4nLnRvTG93ZXJDYXNlKCkgPT09ICfhub4nKSB7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL+G6ni9nLCAnw58nKTtcbiAgfVxuXG4gIC8vIC50b0xvd2VyQ2FzZSgpLnRvVXBwZXJDYXNlKCkgc2hvdWxkIGdldCByaWQgb2YgYWxsIGRpZmZlcmVuY2VzXG4gIC8vIGJldHdlZW4gbGV0dGVyIHZhcmlhbnRzLlxuICAvL1xuICAvLyBTaW1wbGUgLnRvTG93ZXJDYXNlKCkgZG9lc24ndCBub3JtYWxpemUgMTI1IGNvZGUgcG9pbnRzIGNvcnJlY3RseSxcbiAgLy8gYW5kIC50b1VwcGVyQ2FzZSBkb2Vzbid0IG5vcm1hbGl6ZSA2IG9mIHRoZW0gKGxpc3Qgb2YgZXhjZXB0aW9uczpcbiAgLy8gxLAsIM+0LCDhup4sIOKEpiwg4oSqLCDihKsgLSB0aG9zZSBhcmUgYWxyZWFkeSB1cHBlcmNhc2VkLCBidXQgaGF2ZSBkaWZmZXJlbnRseVxuICAvLyB1cHBlcmNhc2VkIHZlcnNpb25zKS5cbiAgLy9cbiAgLy8gSGVyZSdzIGFuIGV4YW1wbGUgc2hvd2luZyBob3cgaXQgaGFwcGVucy4gTGV0cyB0YWtlIGdyZWVrIGxldHRlciBvbWVnYTpcbiAgLy8gdXBwZXJjYXNlIFUrMDM5OCAozpgpLCBVKzAzZjQgKM+0KSBhbmQgbG93ZXJjYXNlIFUrMDNiOCAozrgpLCBVKzAzZDEgKM+RKVxuICAvL1xuICAvLyBVbmljb2RlIGVudHJpZXM6XG4gIC8vIDAzOTg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVEhFVEE7THU7MDtMOzs7OztOOzs7OzAzQjg7XG4gIC8vIDAzQjg7R1JFRUsgU01BTEwgTEVUVEVSIFRIRVRBO0xsOzA7TDs7Ozs7Tjs7OzAzOTg7OzAzOThcbiAgLy8gMDNEMTtHUkVFSyBUSEVUQSBTWU1CT0w7TGw7MDtMOzxjb21wYXQ+IDAzQjg7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgU0NSSVBUIFRIRVRBOzswMzk4OzswMzk4XG4gIC8vIDAzRjQ7R1JFRUsgQ0FQSVRBTCBUSEVUQSBTWU1CT0w7THU7MDtMOzxjb21wYXQ+IDAzOTg7Ozs7Tjs7OzswM0I4O1xuICAvL1xuICAvLyBDYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24gc2hvdWxkIHRyZWF0IGFsbCBvZiB0aGVtIGFzIGVxdWl2YWxlbnQuXG4gIC8vXG4gIC8vIEJ1dCAudG9Mb3dlckNhc2UoKSBkb2Vzbid0IGNoYW5nZSDPkSAoaXQncyBhbHJlYWR5IGxvd2VyY2FzZSksXG4gIC8vIGFuZCAudG9VcHBlckNhc2UoKSBkb2Vzbid0IGNoYW5nZSDPtCAoYWxyZWFkeSB1cHBlcmNhc2UpLlxuICAvL1xuICAvLyBBcHBseWluZyBmaXJzdCBsb3dlciB0aGVuIHVwcGVyIGNhc2Ugbm9ybWFsaXplcyBhbnkgY2hhcmFjdGVyOlxuICAvLyAnXFx1MDM5OFxcdTAzZjRcXHUwM2I4XFx1MDNkMScudG9Mb3dlckNhc2UoKS50b1VwcGVyQ2FzZSgpID09PSAnXFx1MDM5OFxcdTAzOThcXHUwMzk4XFx1MDM5OCdcbiAgLy9cbiAgLy8gTm90ZTogdGhpcyBpcyBlcXVpdmFsZW50IHRvIHVuaWNvZGUgY2FzZSBmb2xkaW5nOyB1bmljb2RlIG5vcm1hbGl6YXRpb25cbiAgLy8gaXMgYSBkaWZmZXJlbnQgc3RlcCB0aGF0IGlzIG5vdCByZXF1aXJlZCBoZXJlLlxuICAvL1xuICAvLyBGaW5hbCByZXN1bHQgc2hvdWxkIGJlIHVwcGVyY2FzZWQsIGJlY2F1c2UgaXQncyBsYXRlciBzdG9yZWQgaW4gYW4gb2JqZWN0XG4gIC8vICh0aGlzIGF2b2lkIGEgY29uZmxpY3Qgd2l0aCBPYmplY3QucHJvdG90eXBlIG1lbWJlcnMsXG4gIC8vIG1vc3Qgbm90YWJseSwgYF9fcHJvdG9fX2ApXG4gIC8vXG4gIHJldHVybiBzdHIudG9Mb3dlckNhc2UoKS50b1VwcGVyQ2FzZSgpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLyBSZS1leHBvcnQgbGlicmFyaWVzIGNvbW1vbmx5IHVzZWQgaW4gYm90aCBtYXJrZG93bi1pdCBhbmQgaXRzIHBsdWdpbnMsXG4vLyBzbyBwbHVnaW5zIHdvbid0IGhhdmUgdG8gZGVwZW5kIG9uIHRoZW0gZXhwbGljaXRseSwgd2hpY2ggcmVkdWNlcyB0aGVpclxuLy8gYnVuZGxlZCBzaXplIChlLmcuIGEgYnJvd3NlciBidWlsZCkuXG4vL1xuZXhwb3J0cy5saWIgICAgICAgICAgICAgICAgID0ge307XG5leHBvcnRzLmxpYi5tZHVybCAgICAgICAgICAgPSByZXF1aXJlKCdtZHVybCcpO1xuZXhwb3J0cy5saWIudWNtaWNybyAgICAgICAgID0gcmVxdWlyZSgndWMubWljcm8nKTtcblxuZXhwb3J0cy5hc3NpZ24gICAgICAgICAgICAgID0gYXNzaWduO1xuZXhwb3J0cy5pc1N0cmluZyAgICAgICAgICAgID0gaXNTdHJpbmc7XG5leHBvcnRzLmhhcyAgICAgICAgICAgICAgICAgPSBoYXM7XG5leHBvcnRzLnVuZXNjYXBlTWQgICAgICAgICAgPSB1bmVzY2FwZU1kO1xuZXhwb3J0cy51bmVzY2FwZUFsbCAgICAgICAgID0gdW5lc2NhcGVBbGw7XG5leHBvcnRzLmlzVmFsaWRFbnRpdHlDb2RlICAgPSBpc1ZhbGlkRW50aXR5Q29kZTtcbmV4cG9ydHMuZnJvbUNvZGVQb2ludCAgICAgICA9IGZyb21Db2RlUG9pbnQ7XG4vLyBleHBvcnRzLnJlcGxhY2VFbnRpdGllcyAgICAgPSByZXBsYWNlRW50aXRpZXM7XG5leHBvcnRzLmVzY2FwZUh0bWwgICAgICAgICAgPSBlc2NhcGVIdG1sO1xuZXhwb3J0cy5hcnJheVJlcGxhY2VBdCAgICAgID0gYXJyYXlSZXBsYWNlQXQ7XG5leHBvcnRzLmlzU3BhY2UgICAgICAgICAgICAgPSBpc1NwYWNlO1xuZXhwb3J0cy5pc1doaXRlU3BhY2UgICAgICAgID0gaXNXaGl0ZVNwYWNlO1xuZXhwb3J0cy5pc01kQXNjaWlQdW5jdCAgICAgID0gaXNNZEFzY2lpUHVuY3Q7XG5leHBvcnRzLmlzUHVuY3RDaGFyICAgICAgICAgPSBpc1B1bmN0Q2hhcjtcbmV4cG9ydHMuZXNjYXBlUkUgICAgICAgICAgICA9IGVzY2FwZVJFO1xuZXhwb3J0cy5ub3JtYWxpemVSZWZlcmVuY2UgID0gbm9ybWFsaXplUmVmZXJlbmNlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVpBO0FBQ0E7QUFhQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBbkNBO0FBcUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/common/utils.js\n");
1922
1923/***/ }),
1924
1925/***/ "../../../node_modules/markdown-it/lib/helpers/index.js":
1926/*!*****************************************************************************************!*\
1927 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/helpers/index.js ***!
1928 \*****************************************************************************************/
1929/*! no static exports found */
1930/***/ (function(module, exports, __webpack_require__) {
1931
1932eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Just a shortcut for bulk export\n 'use strict';\n\n exports.parseLinkLabel = __webpack_require__(/*! ./parse_link_label */ \"../../../node_modules/markdown-it/lib/helpers/parse_link_label.js\");\n exports.parseLinkDestination = __webpack_require__(/*! ./parse_link_destination */ \"../../../node_modules/markdown-it/lib/helpers/parse_link_destination.js\");\n exports.parseLinkTitle = __webpack_require__(/*! ./parse_link_title */ \"../../../node_modules/markdown-it/lib/helpers/parse_link_title.js\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9oZWxwZXJzL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9oZWxwZXJzL2luZGV4LmpzP2JmNTkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSnVzdCBhIHNob3J0Y3V0IGZvciBidWxrIGV4cG9ydFxuJ3VzZSBzdHJpY3QnO1xuXG5cbmV4cG9ydHMucGFyc2VMaW5rTGFiZWwgICAgICAgPSByZXF1aXJlKCcuL3BhcnNlX2xpbmtfbGFiZWwnKTtcbmV4cG9ydHMucGFyc2VMaW5rRGVzdGluYXRpb24gPSByZXF1aXJlKCcuL3BhcnNlX2xpbmtfZGVzdGluYXRpb24nKTtcbmV4cG9ydHMucGFyc2VMaW5rVGl0bGUgICAgICAgPSByZXF1aXJlKCcuL3BhcnNlX2xpbmtfdGl0bGUnKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/helpers/index.js\n");
1933
1934/***/ }),
1935
1936/***/ "../../../node_modules/markdown-it/lib/helpers/parse_link_destination.js":
1937/*!**********************************************************************************************************!*\
1938 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/helpers/parse_link_destination.js ***!
1939 \**********************************************************************************************************/
1940/*! no static exports found */
1941/***/ (function(module, exports, __webpack_require__) {
1942
1943eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Parse link destination\n //\n 'use strict';\n\n var unescapeAll = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").unescapeAll;\n\n module.exports = function parseLinkDestination(str, pos, max) {\n var code,\n level,\n lines = 0,\n start = pos,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n };\n\n if (str.charCodeAt(pos) === 0x3C\n /* < */\n ) {\n pos++;\n\n while (pos < max) {\n code = str.charCodeAt(pos);\n\n if (code === 0x0A\n /* \\n */\n ) {\n return result;\n }\n\n if (code === 0x3E\n /* > */\n ) {\n result.pos = pos + 1;\n result.str = unescapeAll(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n }\n\n if (code === 0x5C\n /* \\ */\n && pos + 1 < max) {\n pos += 2;\n continue;\n }\n\n pos++;\n } // no closing '>'\n\n\n return result;\n } // this should be ... } else { ... branch\n\n\n level = 0;\n\n while (pos < max) {\n code = str.charCodeAt(pos);\n\n if (code === 0x20) {\n break;\n } // ascii control characters\n\n\n if (code < 0x20 || code === 0x7F) {\n break;\n }\n\n if (code === 0x5C\n /* \\ */\n && pos + 1 < max) {\n pos += 2;\n continue;\n }\n\n if (code === 0x28\n /* ( */\n ) {\n level++;\n }\n\n if (code === 0x29\n /* ) */\n ) {\n if (level === 0) {\n break;\n }\n\n level--;\n }\n\n pos++;\n }\n\n if (start === pos) {\n return result;\n }\n\n if (level !== 0) {\n return result;\n }\n\n result.str = unescapeAll(str.slice(start, pos));\n result.lines = lines;\n result.pos = pos;\n result.ok = true;\n return result;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9oZWxwZXJzL3BhcnNlX2xpbmtfZGVzdGluYXRpb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2hlbHBlcnMvcGFyc2VfbGlua19kZXN0aW5hdGlvbi5qcz8yM2E3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFBhcnNlIGxpbmsgZGVzdGluYXRpb25cbi8vXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIHVuZXNjYXBlQWxsID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykudW5lc2NhcGVBbGw7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJzZUxpbmtEZXN0aW5hdGlvbihzdHIsIHBvcywgbWF4KSB7XG4gIHZhciBjb2RlLCBsZXZlbCxcbiAgICAgIGxpbmVzID0gMCxcbiAgICAgIHN0YXJ0ID0gcG9zLFxuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBvazogZmFsc2UsXG4gICAgICAgIHBvczogMCxcbiAgICAgICAgbGluZXM6IDAsXG4gICAgICAgIHN0cjogJydcbiAgICAgIH07XG5cbiAgaWYgKHN0ci5jaGFyQ29kZUF0KHBvcykgPT09IDB4M0MgLyogPCAqLykge1xuICAgIHBvcysrO1xuICAgIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICAgIGNvZGUgPSBzdHIuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGNvZGUgPT09IDB4MEEgLyogXFxuICovKSB7IHJldHVybiByZXN1bHQ7IH1cbiAgICAgIGlmIChjb2RlID09PSAweDNFIC8qID4gKi8pIHtcbiAgICAgICAgcmVzdWx0LnBvcyA9IHBvcyArIDE7XG4gICAgICAgIHJlc3VsdC5zdHIgPSB1bmVzY2FwZUFsbChzdHIuc2xpY2Uoc3RhcnQgKyAxLCBwb3MpKTtcbiAgICAgICAgcmVzdWx0Lm9rID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIGlmIChjb2RlID09PSAweDVDIC8qIFxcICovICYmIHBvcyArIDEgPCBtYXgpIHtcbiAgICAgICAgcG9zICs9IDI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwb3MrKztcbiAgICB9XG5cbiAgICAvLyBubyBjbG9zaW5nICc+J1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyB0aGlzIHNob3VsZCBiZSAuLi4gfSBlbHNlIHsgLi4uIGJyYW5jaFxuXG4gIGxldmVsID0gMDtcbiAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgIGNvZGUgPSBzdHIuY2hhckNvZGVBdChwb3MpO1xuXG4gICAgaWYgKGNvZGUgPT09IDB4MjApIHsgYnJlYWs7IH1cblxuICAgIC8vIGFzY2lpIGNvbnRyb2wgY2hhcmFjdGVyc1xuICAgIGlmIChjb2RlIDwgMHgyMCB8fCBjb2RlID09PSAweDdGKSB7IGJyZWFrOyB9XG5cbiAgICBpZiAoY29kZSA9PT0gMHg1QyAvKiBcXCAqLyAmJiBwb3MgKyAxIDwgbWF4KSB7XG4gICAgICBwb3MgKz0gMjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjb2RlID09PSAweDI4IC8qICggKi8pIHtcbiAgICAgIGxldmVsKys7XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IDB4MjkgLyogKSAqLykge1xuICAgICAgaWYgKGxldmVsID09PSAwKSB7IGJyZWFrOyB9XG4gICAgICBsZXZlbC0tO1xuICAgIH1cblxuICAgIHBvcysrO1xuICB9XG5cbiAgaWYgKHN0YXJ0ID09PSBwb3MpIHsgcmV0dXJuIHJlc3VsdDsgfVxuICBpZiAobGV2ZWwgIT09IDApIHsgcmV0dXJuIHJlc3VsdDsgfVxuXG4gIHJlc3VsdC5zdHIgPSB1bmVzY2FwZUFsbChzdHIuc2xpY2Uoc3RhcnQsIHBvcykpO1xuICByZXN1bHQubGluZXMgPSBsaW5lcztcbiAgcmVzdWx0LnBvcyA9IHBvcztcbiAgcmVzdWx0Lm9rID0gdHJ1ZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUNBO0FBTUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/helpers/parse_link_destination.js\n");
1944
1945/***/ }),
1946
1947/***/ "../../../node_modules/markdown-it/lib/helpers/parse_link_label.js":
1948/*!****************************************************************************************************!*\
1949 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/helpers/parse_link_label.js ***!
1950 \****************************************************************************************************/
1951/*! no static exports found */
1952/***/ (function(module, exports, __webpack_require__) {
1953
1954eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Parse link label\n //\n // this function assumes that first character (\"[\") already matches;\n // returns the end of the label\n //\n 'use strict';\n\n module.exports = function parseLinkLabel(state, start, disableNested) {\n var level,\n found,\n marker,\n prevPos,\n labelEnd = -1,\n max = state.posMax,\n oldPos = state.pos;\n state.pos = start + 1;\n level = 1;\n\n while (state.pos < max) {\n marker = state.src.charCodeAt(state.pos);\n\n if (marker === 0x5D\n /* ] */\n ) {\n level--;\n\n if (level === 0) {\n found = true;\n break;\n }\n }\n\n prevPos = state.pos;\n state.md.inline.skipToken(state);\n\n if (marker === 0x5B\n /* [ */\n ) {\n if (prevPos === state.pos - 1) {\n // increase level if we find text `[`, which is not a part of any token\n level++;\n } else if (disableNested) {\n state.pos = oldPos;\n return -1;\n }\n }\n }\n\n if (found) {\n labelEnd = state.pos;\n } // restore old state\n\n\n state.pos = oldPos;\n return labelEnd;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9oZWxwZXJzL3BhcnNlX2xpbmtfbGFiZWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2hlbHBlcnMvcGFyc2VfbGlua19sYWJlbC5qcz9lNjg3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFBhcnNlIGxpbmsgbGFiZWxcbi8vXG4vLyB0aGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBmaXJzdCBjaGFyYWN0ZXIgKFwiW1wiKSBhbHJlYWR5IG1hdGNoZXM7XG4vLyByZXR1cm5zIHRoZSBlbmQgb2YgdGhlIGxhYmVsXG4vL1xuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHBhcnNlTGlua0xhYmVsKHN0YXRlLCBzdGFydCwgZGlzYWJsZU5lc3RlZCkge1xuICB2YXIgbGV2ZWwsIGZvdW5kLCBtYXJrZXIsIHByZXZQb3MsXG4gICAgICBsYWJlbEVuZCA9IC0xLFxuICAgICAgbWF4ID0gc3RhdGUucG9zTWF4LFxuICAgICAgb2xkUG9zID0gc3RhdGUucG9zO1xuXG4gIHN0YXRlLnBvcyA9IHN0YXJ0ICsgMTtcbiAgbGV2ZWwgPSAxO1xuXG4gIHdoaWxlIChzdGF0ZS5wb3MgPCBtYXgpIHtcbiAgICBtYXJrZXIgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChzdGF0ZS5wb3MpO1xuICAgIGlmIChtYXJrZXIgPT09IDB4NUQgLyogXSAqLykge1xuICAgICAgbGV2ZWwtLTtcbiAgICAgIGlmIChsZXZlbCA9PT0gMCkge1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByZXZQb3MgPSBzdGF0ZS5wb3M7XG4gICAgc3RhdGUubWQuaW5saW5lLnNraXBUb2tlbihzdGF0ZSk7XG4gICAgaWYgKG1hcmtlciA9PT0gMHg1QiAvKiBbICovKSB7XG4gICAgICBpZiAocHJldlBvcyA9PT0gc3RhdGUucG9zIC0gMSkge1xuICAgICAgICAvLyBpbmNyZWFzZSBsZXZlbCBpZiB3ZSBmaW5kIHRleHQgYFtgLCB3aGljaCBpcyBub3QgYSBwYXJ0IG9mIGFueSB0b2tlblxuICAgICAgICBsZXZlbCsrO1xuICAgICAgfSBlbHNlIGlmIChkaXNhYmxlTmVzdGVkKSB7XG4gICAgICAgIHN0YXRlLnBvcyA9IG9sZFBvcztcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChmb3VuZCkge1xuICAgIGxhYmVsRW5kID0gc3RhdGUucG9zO1xuICB9XG5cbiAgLy8gcmVzdG9yZSBvbGQgc3RhdGVcbiAgc3RhdGUucG9zID0gb2xkUG9zO1xuXG4gIHJldHVybiBsYWJlbEVuZDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/helpers/parse_link_label.js\n");
1955
1956/***/ }),
1957
1958/***/ "../../../node_modules/markdown-it/lib/helpers/parse_link_title.js":
1959/*!****************************************************************************************************!*\
1960 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/helpers/parse_link_title.js ***!
1961 \****************************************************************************************************/
1962/*! no static exports found */
1963/***/ (function(module, exports, __webpack_require__) {
1964
1965eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Parse link title\n //\n 'use strict';\n\n var unescapeAll = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").unescapeAll;\n\n module.exports = function parseLinkTitle(str, pos, max) {\n var code,\n marker,\n lines = 0,\n start = pos,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n };\n\n if (pos >= max) {\n return result;\n }\n\n marker = str.charCodeAt(pos);\n\n if (marker !== 0x22\n /* \" */\n && marker !== 0x27\n /* ' */\n && marker !== 0x28\n /* ( */\n ) {\n return result;\n }\n\n pos++; // if opening marker is \"(\", switch it to closing marker \")\"\n\n if (marker === 0x28) {\n marker = 0x29;\n }\n\n while (pos < max) {\n code = str.charCodeAt(pos);\n\n if (code === marker) {\n result.pos = pos + 1;\n result.lines = lines;\n result.str = unescapeAll(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n } else if (code === 0x0A) {\n lines++;\n } else if (code === 0x5C\n /* \\ */\n && pos + 1 < max) {\n pos++;\n\n if (str.charCodeAt(pos) === 0x0A) {\n lines++;\n }\n }\n\n pos++;\n }\n\n return result;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9oZWxwZXJzL3BhcnNlX2xpbmtfdGl0bGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2hlbHBlcnMvcGFyc2VfbGlua190aXRsZS5qcz8zMDdmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFBhcnNlIGxpbmsgdGl0bGVcbi8vXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIHVuZXNjYXBlQWxsID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykudW5lc2NhcGVBbGw7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJzZUxpbmtUaXRsZShzdHIsIHBvcywgbWF4KSB7XG4gIHZhciBjb2RlLFxuICAgICAgbWFya2VyLFxuICAgICAgbGluZXMgPSAwLFxuICAgICAgc3RhcnQgPSBwb3MsXG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgcG9zOiAwLFxuICAgICAgICBsaW5lczogMCxcbiAgICAgICAgc3RyOiAnJ1xuICAgICAgfTtcblxuICBpZiAocG9zID49IG1heCkgeyByZXR1cm4gcmVzdWx0OyB9XG5cbiAgbWFya2VyID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcblxuICBpZiAobWFya2VyICE9PSAweDIyIC8qIFwiICovICYmIG1hcmtlciAhPT0gMHgyNyAvKiAnICovICYmIG1hcmtlciAhPT0gMHgyOCAvKiAoICovKSB7IHJldHVybiByZXN1bHQ7IH1cblxuICBwb3MrKztcblxuICAvLyBpZiBvcGVuaW5nIG1hcmtlciBpcyBcIihcIiwgc3dpdGNoIGl0IHRvIGNsb3NpbmcgbWFya2VyIFwiKVwiXG4gIGlmIChtYXJrZXIgPT09IDB4MjgpIHsgbWFya2VyID0gMHgyOTsgfVxuXG4gIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICBjb2RlID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICByZXN1bHQucG9zID0gcG9zICsgMTtcbiAgICAgIHJlc3VsdC5saW5lcyA9IGxpbmVzO1xuICAgICAgcmVzdWx0LnN0ciA9IHVuZXNjYXBlQWxsKHN0ci5zbGljZShzdGFydCArIDEsIHBvcykpO1xuICAgICAgcmVzdWx0Lm9rID0gdHJ1ZTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBlbHNlIGlmIChjb2RlID09PSAweDBBKSB7XG4gICAgICBsaW5lcysrO1xuICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMHg1QyAvKiBcXCAqLyAmJiBwb3MgKyAxIDwgbWF4KSB7XG4gICAgICBwb3MrKztcbiAgICAgIGlmIChzdHIuY2hhckNvZGVBdChwb3MpID09PSAweDBBKSB7XG4gICAgICAgIGxpbmVzKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcG9zKys7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUFNQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/helpers/parse_link_title.js\n");
1966
1967/***/ }),
1968
1969/***/ "../../../node_modules/markdown-it/lib/index.js":
1970/*!*********************************************************************************!*\
1971 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/index.js ***!
1972 \*********************************************************************************/
1973/*! no static exports found */
1974/***/ (function(module, exports, __webpack_require__) {
1975
1976eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Main parser class\n 'use strict';\n\n var utils = __webpack_require__(/*! ./common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\");\n\n var helpers = __webpack_require__(/*! ./helpers */ \"../../../node_modules/markdown-it/lib/helpers/index.js\");\n\n var Renderer = __webpack_require__(/*! ./renderer */ \"../../../node_modules/markdown-it/lib/renderer.js\");\n\n var ParserCore = __webpack_require__(/*! ./parser_core */ \"../../../node_modules/markdown-it/lib/parser_core.js\");\n\n var ParserBlock = __webpack_require__(/*! ./parser_block */ \"../../../node_modules/markdown-it/lib/parser_block.js\");\n\n var ParserInline = __webpack_require__(/*! ./parser_inline */ \"../../../node_modules/markdown-it/lib/parser_inline.js\");\n\n var LinkifyIt = __webpack_require__(/*! linkify-it */ \"../../../node_modules/linkify-it/index.js\");\n\n var mdurl = __webpack_require__(/*! mdurl */ \"../../../node_modules/mdurl/index.js\");\n\n var punycode = __webpack_require__(/*! punycode */ \"../../../node_modules/node-libs-browser/node_modules/punycode/punycode.js\");\n\n var config = {\n 'default': __webpack_require__(/*! ./presets/default */ \"../../../node_modules/markdown-it/lib/presets/default.js\"),\n zero: __webpack_require__(/*! ./presets/zero */ \"../../../node_modules/markdown-it/lib/presets/zero.js\"),\n commonmark: __webpack_require__(/*! ./presets/commonmark */ \"../../../node_modules/markdown-it/lib/presets/commonmark.js\")\n }; ////////////////////////////////////////////////////////////////////////////////\n //\n // This validator can prohibit more than really needed to prevent XSS. It's a\n // tradeoff to keep code simple and to be secure by default.\n //\n // If you need different setup - override validator method as you wish. Or\n // replace it with dummy function and use external sanitizer.\n //\n\n var BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;\n var GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp);/;\n\n function validateLink(url) {\n // url should be normalized at this point, and existing entities are decoded\n var str = url.trim().toLowerCase();\n return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) ? true : false : true;\n } ////////////////////////////////////////////////////////////////////////////////\n\n\n var RECODE_HOSTNAME_FOR = ['http:', 'https:', 'mailto:'];\n\n function normalizeLink(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toASCII(parsed.hostname);\n } catch (er) {\n /**/\n }\n }\n }\n\n return mdurl.encode(mdurl.format(parsed));\n }\n\n function normalizeLinkText(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toUnicode(parsed.hostname);\n } catch (er) {\n /**/\n }\n }\n }\n\n return mdurl.decode(mdurl.format(parsed));\n }\n /**\n * class MarkdownIt\n *\n * Main parser/renderer class.\n *\n * ##### Usage\n *\n * ```javascript\n * // node.js, \"classic\" way:\n * var MarkdownIt = require('markdown-it'),\n * md = new MarkdownIt();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // node.js, the same, but with sugar:\n * var md = require('markdown-it')();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // browser without AMD, added to \"window\" on script load\n * // Note, there are no dash.\n * var md = window.markdownit();\n * var result = md.render('# markdown-it rulezz!');\n * ```\n *\n * Single line rendering, without paragraph wrap:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * var result = md.renderInline('__markdown-it__ rulezz!');\n * ```\n **/\n\n /**\n * new MarkdownIt([presetName, options])\n * - presetName (String): optional, `commonmark` / `zero`\n * - options (Object)\n *\n * Creates parser instanse with given config. Can be called without `new`.\n *\n * ##### presetName\n *\n * MarkdownIt provides named presets as a convenience to quickly\n * enable/disable active syntax rules and options for common use cases.\n *\n * - [\"commonmark\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.js) -\n * configures parser to strict [CommonMark](http://commonmark.org/) mode.\n * - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.js) -\n * similar to GFM, used when no preset name given. Enables all available rules,\n * but still without html, typographer & autolinker.\n * - [\"zero\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.js) -\n * all rules disabled. Useful to quickly setup your config via `.enable()`.\n * For example, when you need only `bold` and `italic` markup and nothing else.\n *\n * ##### options:\n *\n * - __html__ - `false`. Set `true` to enable HTML tags in source. Be careful!\n * That's not safe! You may need external sanitizer to protect output from XSS.\n * It's better to extend features via plugins, instead of enabling HTML.\n * - __xhtmlOut__ - `false`. Set `true` to add '/' when closing single tags\n * (`<br />`). This is needed only for full CommonMark compatibility. In real\n * world you will need HTML output.\n * - __breaks__ - `false`. Set `true` to convert `\\n` in paragraphs into `<br>`.\n * - __langPrefix__ - `language-`. CSS language class prefix for fenced blocks.\n * Can be useful for external highlighters.\n * - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links.\n * - __typographer__ - `false`. Set `true` to enable [some language-neutral\n * replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.js) +\n * quotes beautification (smartquotes).\n * - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement\n * pairs, when typographer enabled and smartquotes on. For example, you can\n * use `'«»„“'` for Russian, `'„“‚‘'` for German, and\n * `['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›']` for French (including nbsp).\n * - __highlight__ - `null`. Highlighter function for fenced code blocks.\n * Highlighter `function (str, lang)` should return escaped HTML. It can also\n * return empty string if the source was not changed and should be escaped\n * externaly. If result starts with <pre... internal wrapper is skipped.\n *\n * ##### Example\n *\n * ```javascript\n * // commonmark mode\n * var md = require('markdown-it')('commonmark');\n *\n * // default mode\n * var md = require('markdown-it')();\n *\n * // enable everything\n * var md = require('markdown-it')({\n * html: true,\n * linkify: true,\n * typographer: true\n * });\n * ```\n *\n * ##### Syntax highlighting\n *\n * ```js\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * var md = require('markdown-it')({\n * highlight: function (str, lang) {\n * if (lang && hljs.getLanguage(lang)) {\n * try {\n * return hljs.highlight(lang, str, true).value;\n * } catch (__) {}\n * }\n *\n * return ''; // use external default escaping\n * }\n * });\n * ```\n *\n * Or with full wrapper override (if you need assign class to `<pre>`):\n *\n * ```javascript\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * // Actual default values\n * var md = require('markdown-it')({\n * highlight: function (str, lang) {\n * if (lang && hljs.getLanguage(lang)) {\n * try {\n * return '<pre class=\"hljs\"><code>' +\n * hljs.highlight(lang, str, true).value +\n * '</code></pre>';\n * } catch (__) {}\n * }\n *\n * return '<pre class=\"hljs\"><code>' + md.utils.escapeHtml(str) + '</code></pre>';\n * }\n * });\n * ```\n *\n **/\n\n\n function MarkdownIt(presetName, options) {\n if (!(this instanceof MarkdownIt)) {\n return new MarkdownIt(presetName, options);\n }\n\n if (!options) {\n if (!utils.isString(presetName)) {\n options = presetName || {};\n presetName = 'default';\n }\n }\n /**\n * MarkdownIt#inline -> ParserInline\n *\n * Instance of [[ParserInline]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n\n\n this.inline = new ParserInline();\n /**\n * MarkdownIt#block -> ParserBlock\n *\n * Instance of [[ParserBlock]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n\n this.block = new ParserBlock();\n /**\n * MarkdownIt#core -> Core\n *\n * Instance of [[Core]] chain executor. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n\n this.core = new ParserCore();\n /**\n * MarkdownIt#renderer -> Renderer\n *\n * Instance of [[Renderer]]. Use it to modify output look. Or to add rendering\n * rules for new token types, generated by plugins.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * function myToken(tokens, idx, options, env, self) {\n * //...\n * return result;\n * };\n *\n * md.renderer.rules['my_token'] = myToken\n * ```\n *\n * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js).\n **/\n\n this.renderer = new Renderer();\n /**\n * MarkdownIt#linkify -> LinkifyIt\n *\n * [linkify-it](https://github.com/markdown-it/linkify-it) instance.\n * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.js)\n * rule.\n **/\n\n this.linkify = new LinkifyIt();\n /**\n * MarkdownIt#validateLink(url) -> Boolean\n *\n * Link validation function. CommonMark allows too much in links. By default\n * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas\n * except some embedded image types.\n *\n * You can change this behaviour:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * // enable everything\n * md.validateLink = function () { return true; }\n * ```\n **/\n\n this.validateLink = validateLink;\n /**\n * MarkdownIt#normalizeLink(url) -> String\n *\n * Function used to encode link url to a machine-readable format,\n * which includes url-encoding, punycode, etc.\n **/\n\n this.normalizeLink = normalizeLink;\n /**\n * MarkdownIt#normalizeLinkText(url) -> String\n *\n * Function used to decode link url to a human-readable format`\n **/\n\n this.normalizeLinkText = normalizeLinkText; // Expose utils & helpers for easy acces from plugins\n\n /**\n * MarkdownIt#utils -> utils\n *\n * Assorted utility functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.js).\n **/\n\n this.utils = utils;\n /**\n * MarkdownIt#helpers -> helpers\n *\n * Link components parser functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).\n **/\n\n this.helpers = utils.assign({}, helpers);\n this.options = {};\n this.configure(presetName);\n\n if (options) {\n this.set(options);\n }\n }\n /** chainable\n * MarkdownIt.set(options)\n *\n * Set parser options (in the same format as in constructor). Probably, you\n * will never need it, but you can change options after constructor call.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .set({ html: true, breaks: true })\n * .set({ typographer, true });\n * ```\n *\n * __Note:__ To achieve the best possible performance, don't modify a\n * `markdown-it` instance options on the fly. If you need multiple configurations\n * it's best to create multiple instances and initialize each with separate\n * config.\n **/\n\n\n MarkdownIt.prototype.set = function (options) {\n utils.assign(this.options, options);\n return this;\n };\n /** chainable, internal\n * MarkdownIt.configure(presets)\n *\n * Batch load of all options and compenent settings. This is internal method,\n * and you probably will not need it. But if you with - see available presets\n * and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)\n *\n * We strongly recommend to use presets instead of direct config loads. That\n * will give better compatibility with next versions.\n **/\n\n\n MarkdownIt.prototype.configure = function (presets) {\n var self = this,\n presetName;\n\n if (utils.isString(presets)) {\n presetName = presets;\n presets = config[presetName];\n\n if (!presets) {\n throw new Error('Wrong `markdown-it` preset \"' + presetName + '\", check name');\n }\n }\n\n if (!presets) {\n throw new Error('Wrong `markdown-it` preset, can\\'t be empty');\n }\n\n if (presets.options) {\n self.set(presets.options);\n }\n\n if (presets.components) {\n Object.keys(presets.components).forEach(function (name) {\n if (presets.components[name].rules) {\n self[name].ruler.enableOnly(presets.components[name].rules);\n }\n\n if (presets.components[name].rules2) {\n self[name].ruler2.enableOnly(presets.components[name].rules2);\n }\n });\n }\n\n return this;\n };\n /** chainable\n * MarkdownIt.enable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to enable\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable list or rules. It will automatically find appropriate components,\n * containing rules with given names. If rule not found, and `ignoreInvalid`\n * not set - throws exception.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .enable(['sub', 'sup'])\n * .disable('smartquotes');\n * ```\n **/\n\n\n MarkdownIt.prototype.enable = function (list, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n ['core', 'block', 'inline'].forEach(function (chain) {\n result = result.concat(this[chain].ruler.enable(list, true));\n }, this);\n result = result.concat(this.inline.ruler2.enable(list, true));\n var missed = list.filter(function (name) {\n return result.indexOf(name) < 0;\n });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to enable unknown rule(s): ' + missed);\n }\n\n return this;\n };\n /** chainable\n * MarkdownIt.disable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * The same as [[MarkdownIt.enable]], but turn specified rules off.\n **/\n\n\n MarkdownIt.prototype.disable = function (list, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n ['core', 'block', 'inline'].forEach(function (chain) {\n result = result.concat(this[chain].ruler.disable(list, true));\n }, this);\n result = result.concat(this.inline.ruler2.disable(list, true));\n var missed = list.filter(function (name) {\n return result.indexOf(name) < 0;\n });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to disable unknown rule(s): ' + missed);\n }\n\n return this;\n };\n /** chainable\n * MarkdownIt.use(plugin, params)\n *\n * Load specified plugin with given params into current parser instance.\n * It's just a sugar to call `plugin(md, params)` with curring.\n *\n * ##### Example\n *\n * ```javascript\n * var iterator = require('markdown-it-for-inline');\n * var md = require('markdown-it')()\n * .use(iterator, 'foo_replace', 'text', function (tokens, idx) {\n * tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');\n * });\n * ```\n **/\n\n\n MarkdownIt.prototype.use = function (plugin\n /*, params, ... */\n ) {\n var args = [this].concat(Array.prototype.slice.call(arguments, 1));\n plugin.apply(plugin, args);\n return this;\n };\n /** internal\n * MarkdownIt.parse(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Parse input string and returns list of block tokens (special token type\n * \"inline\" will contain list of inline tokens). You should not call this\n * method directly, until you write custom renderer (for example, to produce\n * AST).\n *\n * `env` is used to pass data between \"distributed\" rules and return additional\n * metadata like reference info, needed for the renderer. It also can be used to\n * inject data in specific cases. Usually, you will be ok to pass `{}`,\n * and then pass updated object to renderer.\n **/\n\n\n MarkdownIt.prototype.parse = function (src, env) {\n if (typeof src !== 'string') {\n throw new Error('Input data should be a String');\n }\n\n var state = new this.core.State(src, this, env);\n this.core.process(state);\n return state.tokens;\n };\n /**\n * MarkdownIt.render(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Render markdown string into html. It does all magic for you :).\n *\n * `env` can be used to inject additional metadata (`{}` by default).\n * But you will not need it with high probability. See also comment\n * in [[MarkdownIt.parse]].\n **/\n\n\n MarkdownIt.prototype.render = function (src, env) {\n env = env || {};\n return this.renderer.render(this.parse(src, env), this.options, env);\n };\n /** internal\n * MarkdownIt.parseInline(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * The same as [[MarkdownIt.parse]] but skip all block rules. It returns the\n * block tokens list with the single `inline` element, containing parsed inline\n * tokens in `children` property. Also updates `env` object.\n **/\n\n\n MarkdownIt.prototype.parseInline = function (src, env) {\n var state = new this.core.State(src, this, env);\n state.inlineMode = true;\n this.core.process(state);\n return state.tokens;\n };\n /**\n * MarkdownIt.renderInline(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Similar to [[MarkdownIt.render]] but for single paragraph content. Result\n * will NOT be wrapped into `<p>` tags.\n **/\n\n\n MarkdownIt.prototype.renderInline = function (src, env) {\n env = env || {};\n return this.renderer.render(this.parseInline(src, env), this.options, env);\n };\n\n module.exports = MarkdownIt;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvaW5kZXguanM/NzI2MyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBNYWluIHBhcnNlciBjbGFzc1xuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIHV0aWxzICAgICAgICA9IHJlcXVpcmUoJy4vY29tbW9uL3V0aWxzJyk7XG52YXIgaGVscGVycyAgICAgID0gcmVxdWlyZSgnLi9oZWxwZXJzJyk7XG52YXIgUmVuZGVyZXIgICAgID0gcmVxdWlyZSgnLi9yZW5kZXJlcicpO1xudmFyIFBhcnNlckNvcmUgICA9IHJlcXVpcmUoJy4vcGFyc2VyX2NvcmUnKTtcbnZhciBQYXJzZXJCbG9jayAgPSByZXF1aXJlKCcuL3BhcnNlcl9ibG9jaycpO1xudmFyIFBhcnNlcklubGluZSA9IHJlcXVpcmUoJy4vcGFyc2VyX2lubGluZScpO1xudmFyIExpbmtpZnlJdCAgICA9IHJlcXVpcmUoJ2xpbmtpZnktaXQnKTtcbnZhciBtZHVybCAgICAgICAgPSByZXF1aXJlKCdtZHVybCcpO1xudmFyIHB1bnljb2RlICAgICA9IHJlcXVpcmUoJ3B1bnljb2RlJyk7XG5cblxudmFyIGNvbmZpZyA9IHtcbiAgJ2RlZmF1bHQnOiByZXF1aXJlKCcuL3ByZXNldHMvZGVmYXVsdCcpLFxuICB6ZXJvOiByZXF1aXJlKCcuL3ByZXNldHMvemVybycpLFxuICBjb21tb25tYXJrOiByZXF1aXJlKCcuL3ByZXNldHMvY29tbW9ubWFyaycpXG59O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy9cbi8vIFRoaXMgdmFsaWRhdG9yIGNhbiBwcm9oaWJpdCBtb3JlIHRoYW4gcmVhbGx5IG5lZWRlZCB0byBwcmV2ZW50IFhTUy4gSXQncyBhXG4vLyB0cmFkZW9mZiB0byBrZWVwIGNvZGUgc2ltcGxlIGFuZCB0byBiZSBzZWN1cmUgYnkgZGVmYXVsdC5cbi8vXG4vLyBJZiB5b3UgbmVlZCBkaWZmZXJlbnQgc2V0dXAgLSBvdmVycmlkZSB2YWxpZGF0b3IgbWV0aG9kIGFzIHlvdSB3aXNoLiBPclxuLy8gcmVwbGFjZSBpdCB3aXRoIGR1bW15IGZ1bmN0aW9uIGFuZCB1c2UgZXh0ZXJuYWwgc2FuaXRpemVyLlxuLy9cblxudmFyIEJBRF9QUk9UT19SRSA9IC9eKHZic2NyaXB0fGphdmFzY3JpcHR8ZmlsZXxkYXRhKTovO1xudmFyIEdPT0RfREFUQV9SRSA9IC9eZGF0YTppbWFnZVxcLyhnaWZ8cG5nfGpwZWd8d2VicCk7LztcblxuZnVuY3Rpb24gdmFsaWRhdGVMaW5rKHVybCkge1xuICAvLyB1cmwgc2hvdWxkIGJlIG5vcm1hbGl6ZWQgYXQgdGhpcyBwb2ludCwgYW5kIGV4aXN0aW5nIGVudGl0aWVzIGFyZSBkZWNvZGVkXG4gIHZhciBzdHIgPSB1cmwudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgcmV0dXJuIEJBRF9QUk9UT19SRS50ZXN0KHN0cikgPyAoR09PRF9EQVRBX1JFLnRlc3Qoc3RyKSA/IHRydWUgOiBmYWxzZSkgOiB0cnVlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5cbnZhciBSRUNPREVfSE9TVE5BTUVfRk9SID0gWyAnaHR0cDonLCAnaHR0cHM6JywgJ21haWx0bzonIF07XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUxpbmsodXJsKSB7XG4gIHZhciBwYXJzZWQgPSBtZHVybC5wYXJzZSh1cmwsIHRydWUpO1xuXG4gIGlmIChwYXJzZWQuaG9zdG5hbWUpIHtcbiAgICAvLyBFbmNvZGUgaG9zdG5hbWVzIGluIHVybHMgbGlrZTpcbiAgICAvLyBgaHR0cDovL2hvc3QvYCwgYGh0dHBzOi8vaG9zdC9gLCBgbWFpbHRvOnVzZXJAaG9zdGAsIGAvL2hvc3QvYFxuICAgIC8vXG4gICAgLy8gV2UgZG9uJ3QgZW5jb2RlIHVua25vd24gc2NoZW1hcywgYmVjYXVzZSBpdCdzIGxpa2VseSB0aGF0IHdlIGVuY29kZVxuICAgIC8vIHNvbWV0aGluZyB3ZSBzaG91bGRuJ3QgKGUuZy4gYHNreXBlOm5hbWVgIHRyZWF0ZWQgYXMgYHNreXBlOmhvc3RgKVxuICAgIC8vXG4gICAgaWYgKCFwYXJzZWQucHJvdG9jb2wgfHwgUkVDT0RFX0hPU1ROQU1FX0ZPUi5pbmRleE9mKHBhcnNlZC5wcm90b2NvbCkgPj0gMCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcGFyc2VkLmhvc3RuYW1lID0gcHVueWNvZGUudG9BU0NJSShwYXJzZWQuaG9zdG5hbWUpO1xuICAgICAgfSBjYXRjaCAoZXIpIHsgLyoqLyB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1kdXJsLmVuY29kZShtZHVybC5mb3JtYXQocGFyc2VkKSk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUxpbmtUZXh0KHVybCkge1xuICB2YXIgcGFyc2VkID0gbWR1cmwucGFyc2UodXJsLCB0cnVlKTtcblxuICBpZiAocGFyc2VkLmhvc3RuYW1lKSB7XG4gICAgLy8gRW5jb2RlIGhvc3RuYW1lcyBpbiB1cmxzIGxpa2U6XG4gICAgLy8gYGh0dHA6Ly9ob3N0L2AsIGBodHRwczovL2hvc3QvYCwgYG1haWx0bzp1c2VyQGhvc3RgLCBgLy9ob3N0L2BcbiAgICAvL1xuICAgIC8vIFdlIGRvbid0IGVuY29kZSB1bmtub3duIHNjaGVtYXMsIGJlY2F1c2UgaXQncyBsaWtlbHkgdGhhdCB3ZSBlbmNvZGVcbiAgICAvLyBzb21ldGhpbmcgd2Ugc2hvdWxkbid0IChlLmcuIGBza3lwZTpuYW1lYCB0cmVhdGVkIGFzIGBza3lwZTpob3N0YClcbiAgICAvL1xuICAgIGlmICghcGFyc2VkLnByb3RvY29sIHx8IFJFQ09ERV9IT1NUTkFNRV9GT1IuaW5kZXhPZihwYXJzZWQucHJvdG9jb2wpID49IDApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHBhcnNlZC5ob3N0bmFtZSA9IHB1bnljb2RlLnRvVW5pY29kZShwYXJzZWQuaG9zdG5hbWUpO1xuICAgICAgfSBjYXRjaCAoZXIpIHsgLyoqLyB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1kdXJsLmRlY29kZShtZHVybC5mb3JtYXQocGFyc2VkKSk7XG59XG5cblxuLyoqXG4gKiBjbGFzcyBNYXJrZG93bkl0XG4gKlxuICogTWFpbiBwYXJzZXIvcmVuZGVyZXIgY2xhc3MuXG4gKlxuICogIyMjIyMgVXNhZ2VcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiAvLyBub2RlLmpzLCBcImNsYXNzaWNcIiB3YXk6XG4gKiB2YXIgTWFya2Rvd25JdCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JyksXG4gKiAgICAgbWQgPSBuZXcgTWFya2Rvd25JdCgpO1xuICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcignIyBtYXJrZG93bi1pdCBydWxlenohJyk7XG4gKlxuICogLy8gbm9kZS5qcywgdGhlIHNhbWUsIGJ1dCB3aXRoIHN1Z2FyOlxuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpO1xuICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcignIyBtYXJrZG93bi1pdCBydWxlenohJyk7XG4gKlxuICogLy8gYnJvd3NlciB3aXRob3V0IEFNRCwgYWRkZWQgdG8gXCJ3aW5kb3dcIiBvbiBzY3JpcHQgbG9hZFxuICogLy8gTm90ZSwgdGhlcmUgYXJlIG5vIGRhc2guXG4gKiB2YXIgbWQgPSB3aW5kb3cubWFya2Rvd25pdCgpO1xuICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcignIyBtYXJrZG93bi1pdCBydWxlenohJyk7XG4gKiBgYGBcbiAqXG4gKiBTaW5nbGUgbGluZSByZW5kZXJpbmcsIHdpdGhvdXQgcGFyYWdyYXBoIHdyYXA6XG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpO1xuICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcklubGluZSgnX19tYXJrZG93bi1pdF9fIHJ1bGV6eiEnKTtcbiAqIGBgYFxuICoqL1xuXG4vKipcbiAqIG5ldyBNYXJrZG93bkl0KFtwcmVzZXROYW1lLCBvcHRpb25zXSlcbiAqIC0gcHJlc2V0TmFtZSAoU3RyaW5nKTogb3B0aW9uYWwsIGBjb21tb25tYXJrYCAvIGB6ZXJvYFxuICogLSBvcHRpb25zIChPYmplY3QpXG4gKlxuICogQ3JlYXRlcyBwYXJzZXIgaW5zdGFuc2Ugd2l0aCBnaXZlbiBjb25maWcuIENhbiBiZSBjYWxsZWQgd2l0aG91dCBgbmV3YC5cbiAqXG4gKiAjIyMjIyBwcmVzZXROYW1lXG4gKlxuICogTWFya2Rvd25JdCBwcm92aWRlcyBuYW1lZCBwcmVzZXRzIGFzIGEgY29udmVuaWVuY2UgdG8gcXVpY2tseVxuICogZW5hYmxlL2Rpc2FibGUgYWN0aXZlIHN5bnRheCBydWxlcyBhbmQgb3B0aW9ucyBmb3IgY29tbW9uIHVzZSBjYXNlcy5cbiAqXG4gKiAtIFtcImNvbW1vbm1hcmtcIl0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2Jsb2IvbWFzdGVyL2xpYi9wcmVzZXRzL2NvbW1vbm1hcmsuanMpIC1cbiAqICAgY29uZmlndXJlcyBwYXJzZXIgdG8gc3RyaWN0IFtDb21tb25NYXJrXShodHRwOi8vY29tbW9ubWFyay5vcmcvKSBtb2RlLlxuICogLSBbZGVmYXVsdF0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2Jsb2IvbWFzdGVyL2xpYi9wcmVzZXRzL2RlZmF1bHQuanMpIC1cbiAqICAgc2ltaWxhciB0byBHRk0sIHVzZWQgd2hlbiBubyBwcmVzZXQgbmFtZSBnaXZlbi4gRW5hYmxlcyBhbGwgYXZhaWxhYmxlIHJ1bGVzLFxuICogICBidXQgc3RpbGwgd2l0aG91dCBodG1sLCB0eXBvZ3JhcGhlciAmIGF1dG9saW5rZXIuXG4gKiAtIFtcInplcm9cIl0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2Jsb2IvbWFzdGVyL2xpYi9wcmVzZXRzL3plcm8uanMpIC1cbiAqICAgYWxsIHJ1bGVzIGRpc2FibGVkLiBVc2VmdWwgdG8gcXVpY2tseSBzZXR1cCB5b3VyIGNvbmZpZyB2aWEgYC5lbmFibGUoKWAuXG4gKiAgIEZvciBleGFtcGxlLCB3aGVuIHlvdSBuZWVkIG9ubHkgYGJvbGRgIGFuZCBgaXRhbGljYCBtYXJrdXAgYW5kIG5vdGhpbmcgZWxzZS5cbiAqXG4gKiAjIyMjIyBvcHRpb25zOlxuICpcbiAqIC0gX19odG1sX18gLSBgZmFsc2VgLiBTZXQgYHRydWVgIHRvIGVuYWJsZSBIVE1MIHRhZ3MgaW4gc291cmNlLiBCZSBjYXJlZnVsIVxuICogICBUaGF0J3Mgbm90IHNhZmUhIFlvdSBtYXkgbmVlZCBleHRlcm5hbCBzYW5pdGl6ZXIgdG8gcHJvdGVjdCBvdXRwdXQgZnJvbSBYU1MuXG4gKiAgIEl0J3MgYmV0dGVyIHRvIGV4dGVuZCBmZWF0dXJlcyB2aWEgcGx1Z2lucywgaW5zdGVhZCBvZiBlbmFibGluZyBIVE1MLlxuICogLSBfX3hodG1sT3V0X18gLSBgZmFsc2VgLiBTZXQgYHRydWVgIHRvIGFkZCAnLycgd2hlbiBjbG9zaW5nIHNpbmdsZSB0YWdzXG4gKiAgIChgPGJyIC8+YCkuIFRoaXMgaXMgbmVlZGVkIG9ubHkgZm9yIGZ1bGwgQ29tbW9uTWFyayBjb21wYXRpYmlsaXR5LiBJbiByZWFsXG4gKiAgIHdvcmxkIHlvdSB3aWxsIG5lZWQgSFRNTCBvdXRwdXQuXG4gKiAtIF9fYnJlYWtzX18gLSBgZmFsc2VgLiBTZXQgYHRydWVgIHRvIGNvbnZlcnQgYFxcbmAgaW4gcGFyYWdyYXBocyBpbnRvIGA8YnI+YC5cbiAqIC0gX19sYW5nUHJlZml4X18gLSBgbGFuZ3VhZ2UtYC4gQ1NTIGxhbmd1YWdlIGNsYXNzIHByZWZpeCBmb3IgZmVuY2VkIGJsb2Nrcy5cbiAqICAgQ2FuIGJlIHVzZWZ1bCBmb3IgZXh0ZXJuYWwgaGlnaGxpZ2h0ZXJzLlxuICogLSBfX2xpbmtpZnlfXyAtIGBmYWxzZWAuIFNldCBgdHJ1ZWAgdG8gYXV0b2NvbnZlcnQgVVJMLWxpa2UgdGV4dCB0byBsaW5rcy5cbiAqIC0gX190eXBvZ3JhcGhlcl9fICAtIGBmYWxzZWAuIFNldCBgdHJ1ZWAgdG8gZW5hYmxlIFtzb21lIGxhbmd1YWdlLW5ldXRyYWxcbiAqICAgcmVwbGFjZW1lbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9tYXJrZG93bi1pdC9ibG9iL21hc3Rlci9saWIvcnVsZXNfY29yZS9yZXBsYWNlbWVudHMuanMpICtcbiAqICAgcXVvdGVzIGJlYXV0aWZpY2F0aW9uIChzbWFydHF1b3RlcykuXG4gKiAtIF9fcXVvdGVzX18gLSBg4oCc4oCd4oCY4oCZYCwgU3RyaW5nIG9yIEFycmF5LiBEb3VibGUgKyBzaW5nbGUgcXVvdGVzIHJlcGxhY2VtZW50XG4gKiAgIHBhaXJzLCB3aGVuIHR5cG9ncmFwaGVyIGVuYWJsZWQgYW5kIHNtYXJ0cXVvdGVzIG9uLiBGb3IgZXhhbXBsZSwgeW91IGNhblxuICogICB1c2UgYCfCq8K74oCe4oCcJ2AgZm9yIFJ1c3NpYW4sIGAn4oCe4oCc4oCa4oCYJ2AgZm9yIEdlcm1hbiwgYW5kXG4gKiAgIGBbJ8KrXFx4QTAnLCAnXFx4QTDCuycsICfigLlcXHhBMCcsICdcXHhBMOKAuiddYCBmb3IgRnJlbmNoIChpbmNsdWRpbmcgbmJzcCkuXG4gKiAtIF9faGlnaGxpZ2h0X18gLSBgbnVsbGAuIEhpZ2hsaWdodGVyIGZ1bmN0aW9uIGZvciBmZW5jZWQgY29kZSBibG9ja3MuXG4gKiAgIEhpZ2hsaWdodGVyIGBmdW5jdGlvbiAoc3RyLCBsYW5nKWAgc2hvdWxkIHJldHVybiBlc2NhcGVkIEhUTUwuIEl0IGNhbiBhbHNvXG4gKiAgIHJldHVybiBlbXB0eSBzdHJpbmcgaWYgdGhlIHNvdXJjZSB3YXMgbm90IGNoYW5nZWQgYW5kIHNob3VsZCBiZSBlc2NhcGVkXG4gKiAgIGV4dGVybmFseS4gSWYgcmVzdWx0IHN0YXJ0cyB3aXRoIDxwcmUuLi4gaW50ZXJuYWwgd3JhcHBlciBpcyBza2lwcGVkLlxuICpcbiAqICMjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiAvLyBjb21tb25tYXJrIG1vZGVcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoJ2NvbW1vbm1hcmsnKTtcbiAqXG4gKiAvLyBkZWZhdWx0IG1vZGVcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoKTtcbiAqXG4gKiAvLyBlbmFibGUgZXZlcnl0aGluZ1xuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSh7XG4gKiAgIGh0bWw6IHRydWUsXG4gKiAgIGxpbmtpZnk6IHRydWUsXG4gKiAgIHR5cG9ncmFwaGVyOiB0cnVlXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqICMjIyMjIFN5bnRheCBoaWdobGlnaHRpbmdcbiAqXG4gKiBgYGBqc1xuICogdmFyIGhsanMgPSByZXF1aXJlKCdoaWdobGlnaHQuanMnKSAvLyBodHRwczovL2hpZ2hsaWdodGpzLm9yZy9cbiAqXG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKHtcbiAqICAgaGlnaGxpZ2h0OiBmdW5jdGlvbiAoc3RyLCBsYW5nKSB7XG4gKiAgICAgaWYgKGxhbmcgJiYgaGxqcy5nZXRMYW5ndWFnZShsYW5nKSkge1xuICogICAgICAgdHJ5IHtcbiAqICAgICAgICAgcmV0dXJuIGhsanMuaGlnaGxpZ2h0KGxhbmcsIHN0ciwgdHJ1ZSkudmFsdWU7XG4gKiAgICAgICB9IGNhdGNoIChfXykge31cbiAqICAgICB9XG4gKlxuICogICAgIHJldHVybiAnJzsgLy8gdXNlIGV4dGVybmFsIGRlZmF1bHQgZXNjYXBpbmdcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBPciB3aXRoIGZ1bGwgd3JhcHBlciBvdmVycmlkZSAoaWYgeW91IG5lZWQgYXNzaWduIGNsYXNzIHRvIGA8cHJlPmApOlxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIHZhciBobGpzID0gcmVxdWlyZSgnaGlnaGxpZ2h0LmpzJykgLy8gaHR0cHM6Ly9oaWdobGlnaHRqcy5vcmcvXG4gKlxuICogLy8gQWN0dWFsIGRlZmF1bHQgdmFsdWVzXG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKHtcbiAqICAgaGlnaGxpZ2h0OiBmdW5jdGlvbiAoc3RyLCBsYW5nKSB7XG4gKiAgICAgaWYgKGxhbmcgJiYgaGxqcy5nZXRMYW5ndWFnZShsYW5nKSkge1xuICogICAgICAgdHJ5IHtcbiAqICAgICAgICAgcmV0dXJuICc8cHJlIGNsYXNzPVwiaGxqc1wiPjxjb2RlPicgK1xuICogICAgICAgICAgICAgICAgaGxqcy5oaWdobGlnaHQobGFuZywgc3RyLCB0cnVlKS52YWx1ZSArXG4gKiAgICAgICAgICAgICAgICAnPC9jb2RlPjwvcHJlPic7XG4gKiAgICAgICB9IGNhdGNoIChfXykge31cbiAqICAgICB9XG4gKlxuICogICAgIHJldHVybiAnPHByZSBjbGFzcz1cImhsanNcIj48Y29kZT4nICsgbWQudXRpbHMuZXNjYXBlSHRtbChzdHIpICsgJzwvY29kZT48L3ByZT4nO1xuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqKi9cbmZ1bmN0aW9uIE1hcmtkb3duSXQocHJlc2V0TmFtZSwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTWFya2Rvd25JdCkpIHtcbiAgICByZXR1cm4gbmV3IE1hcmtkb3duSXQocHJlc2V0TmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBpZiAoIXV0aWxzLmlzU3RyaW5nKHByZXNldE5hbWUpKSB7XG4gICAgICBvcHRpb25zID0gcHJlc2V0TmFtZSB8fCB7fTtcbiAgICAgIHByZXNldE5hbWUgPSAnZGVmYXVsdCc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjaW5saW5lIC0+IFBhcnNlcklubGluZVxuICAgKlxuICAgKiBJbnN0YW5jZSBvZiBbW1BhcnNlcklubGluZV1dLiBZb3UgbWF5IG5lZWQgaXQgdG8gYWRkIG5ldyBydWxlcyB3aGVuXG4gICAqIHdyaXRpbmcgcGx1Z2lucy4gRm9yIHNpbXBsZSBydWxlcyBjb250cm9sIHVzZSBbW01hcmtkb3duSXQuZGlzYWJsZV1dIGFuZFxuICAgKiBbW01hcmtkb3duSXQuZW5hYmxlXV0uXG4gICAqKi9cbiAgdGhpcy5pbmxpbmUgPSBuZXcgUGFyc2VySW5saW5lKCk7XG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjYmxvY2sgLT4gUGFyc2VyQmxvY2tcbiAgICpcbiAgICogSW5zdGFuY2Ugb2YgW1tQYXJzZXJCbG9ja11dLiBZb3UgbWF5IG5lZWQgaXQgdG8gYWRkIG5ldyBydWxlcyB3aGVuXG4gICAqIHdyaXRpbmcgcGx1Z2lucy4gRm9yIHNpbXBsZSBydWxlcyBjb250cm9sIHVzZSBbW01hcmtkb3duSXQuZGlzYWJsZV1dIGFuZFxuICAgKiBbW01hcmtkb3duSXQuZW5hYmxlXV0uXG4gICAqKi9cbiAgdGhpcy5ibG9jayA9IG5ldyBQYXJzZXJCbG9jaygpO1xuXG4gIC8qKlxuICAgKiBNYXJrZG93bkl0I2NvcmUgLT4gQ29yZVxuICAgKlxuICAgKiBJbnN0YW5jZSBvZiBbW0NvcmVdXSBjaGFpbiBleGVjdXRvci4gWW91IG1heSBuZWVkIGl0IHRvIGFkZCBuZXcgcnVsZXMgd2hlblxuICAgKiB3cml0aW5nIHBsdWdpbnMuIEZvciBzaW1wbGUgcnVsZXMgY29udHJvbCB1c2UgW1tNYXJrZG93bkl0LmRpc2FibGVdXSBhbmRcbiAgICogW1tNYXJrZG93bkl0LmVuYWJsZV1dLlxuICAgKiovXG4gIHRoaXMuY29yZSA9IG5ldyBQYXJzZXJDb3JlKCk7XG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjcmVuZGVyZXIgLT4gUmVuZGVyZXJcbiAgICpcbiAgICogSW5zdGFuY2Ugb2YgW1tSZW5kZXJlcl1dLiBVc2UgaXQgdG8gbW9kaWZ5IG91dHB1dCBsb29rLiBPciB0byBhZGQgcmVuZGVyaW5nXG4gICAqIHJ1bGVzIGZvciBuZXcgdG9rZW4gdHlwZXMsIGdlbmVyYXRlZCBieSBwbHVnaW5zLlxuICAgKlxuICAgKiAjIyMjIyBFeGFtcGxlXG4gICAqXG4gICAqIGBgYGphdmFzY3JpcHRcbiAgICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpO1xuICAgKlxuICAgKiBmdW5jdGlvbiBteVRva2VuKHRva2VucywgaWR4LCBvcHRpb25zLCBlbnYsIHNlbGYpIHtcbiAgICogICAvLy4uLlxuICAgKiAgIHJldHVybiByZXN1bHQ7XG4gICAqIH07XG4gICAqXG4gICAqIG1kLnJlbmRlcmVyLnJ1bGVzWydteV90b2tlbiddID0gbXlUb2tlblxuICAgKiBgYGBcbiAgICpcbiAgICogU2VlIFtbUmVuZGVyZXJdXSBkb2NzIGFuZCBbc291cmNlIGNvZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9tYXJrZG93bi1pdC9ibG9iL21hc3Rlci9saWIvcmVuZGVyZXIuanMpLlxuICAgKiovXG4gIHRoaXMucmVuZGVyZXIgPSBuZXcgUmVuZGVyZXIoKTtcblxuICAvKipcbiAgICogTWFya2Rvd25JdCNsaW5raWZ5IC0+IExpbmtpZnlJdFxuICAgKlxuICAgKiBbbGlua2lmeS1pdF0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L2xpbmtpZnktaXQpIGluc3RhbmNlLlxuICAgKiBVc2VkIGJ5IFtsaW5raWZ5XShodHRwczovL2dpdGh1Yi5jb20vbWFya2Rvd24taXQvbWFya2Rvd24taXQvYmxvYi9tYXN0ZXIvbGliL3J1bGVzX2NvcmUvbGlua2lmeS5qcylcbiAgICogcnVsZS5cbiAgICoqL1xuICB0aGlzLmxpbmtpZnkgPSBuZXcgTGlua2lmeUl0KCk7XG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjdmFsaWRhdGVMaW5rKHVybCkgLT4gQm9vbGVhblxuICAgKlxuICAgKiBMaW5rIHZhbGlkYXRpb24gZnVuY3Rpb24uIENvbW1vbk1hcmsgYWxsb3dzIHRvbyBtdWNoIGluIGxpbmtzLiBCeSBkZWZhdWx0XG4gICAqIHdlIGRpc2FibGUgYGphdmFzY3JpcHQ6YCwgYHZic2NyaXB0OmAsIGBmaWxlOmAgc2NoZW1hcywgYW5kIGFsbW9zdCBhbGwgYGRhdGE6Li4uYCBzY2hlbWFzXG4gICAqIGV4Y2VwdCBzb21lIGVtYmVkZGVkIGltYWdlIHR5cGVzLlxuICAgKlxuICAgKiBZb3UgY2FuIGNoYW5nZSB0aGlzIGJlaGF2aW91cjpcbiAgICpcbiAgICogYGBgamF2YXNjcmlwdFxuICAgKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKCk7XG4gICAqIC8vIGVuYWJsZSBldmVyeXRoaW5nXG4gICAqIG1kLnZhbGlkYXRlTGluayA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH1cbiAgICogYGBgXG4gICAqKi9cbiAgdGhpcy52YWxpZGF0ZUxpbmsgPSB2YWxpZGF0ZUxpbms7XG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjbm9ybWFsaXplTGluayh1cmwpIC0+IFN0cmluZ1xuICAgKlxuICAgKiBGdW5jdGlvbiB1c2VkIHRvIGVuY29kZSBsaW5rIHVybCB0byBhIG1hY2hpbmUtcmVhZGFibGUgZm9ybWF0LFxuICAgKiB3aGljaCBpbmNsdWRlcyB1cmwtZW5jb2RpbmcsIHB1bnljb2RlLCBldGMuXG4gICAqKi9cbiAgdGhpcy5ub3JtYWxpemVMaW5rID0gbm9ybWFsaXplTGluaztcblxuICAvKipcbiAgICogTWFya2Rvd25JdCNub3JtYWxpemVMaW5rVGV4dCh1cmwpIC0+IFN0cmluZ1xuICAgKlxuICAgKiBGdW5jdGlvbiB1c2VkIHRvIGRlY29kZSBsaW5rIHVybCB0byBhIGh1bWFuLXJlYWRhYmxlIGZvcm1hdGBcbiAgICoqL1xuICB0aGlzLm5vcm1hbGl6ZUxpbmtUZXh0ID0gbm9ybWFsaXplTGlua1RleHQ7XG5cblxuICAvLyBFeHBvc2UgdXRpbHMgJiBoZWxwZXJzIGZvciBlYXN5IGFjY2VzIGZyb20gcGx1Z2luc1xuXG4gIC8qKlxuICAgKiBNYXJrZG93bkl0I3V0aWxzIC0+IHV0aWxzXG4gICAqXG4gICAqIEFzc29ydGVkIHV0aWxpdHkgZnVuY3Rpb25zLCB1c2VmdWwgdG8gd3JpdGUgcGx1Z2lucy4gU2VlIGRldGFpbHNcbiAgICogW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9tYXJrZG93bi1pdC9ibG9iL21hc3Rlci9saWIvY29tbW9uL3V0aWxzLmpzKS5cbiAgICoqL1xuICB0aGlzLnV0aWxzID0gdXRpbHM7XG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjaGVscGVycyAtPiBoZWxwZXJzXG4gICAqXG4gICAqIExpbmsgY29tcG9uZW50cyBwYXJzZXIgZnVuY3Rpb25zLCB1c2VmdWwgdG8gd3JpdGUgcGx1Z2lucy4gU2VlIGRldGFpbHNcbiAgICogW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9tYXJrZG93bi1pdC9ibG9iL21hc3Rlci9saWIvaGVscGVycykuXG4gICAqKi9cbiAgdGhpcy5oZWxwZXJzID0gdXRpbHMuYXNzaWduKHt9LCBoZWxwZXJzKTtcblxuXG4gIHRoaXMub3B0aW9ucyA9IHt9O1xuICB0aGlzLmNvbmZpZ3VyZShwcmVzZXROYW1lKTtcblxuICBpZiAob3B0aW9ucykgeyB0aGlzLnNldChvcHRpb25zKTsgfVxufVxuXG5cbi8qKiBjaGFpbmFibGVcbiAqIE1hcmtkb3duSXQuc2V0KG9wdGlvbnMpXG4gKlxuICogU2V0IHBhcnNlciBvcHRpb25zIChpbiB0aGUgc2FtZSBmb3JtYXQgYXMgaW4gY29uc3RydWN0b3IpLiBQcm9iYWJseSwgeW91XG4gKiB3aWxsIG5ldmVyIG5lZWQgaXQsIGJ1dCB5b3UgY2FuIGNoYW5nZSBvcHRpb25zIGFmdGVyIGNvbnN0cnVjdG9yIGNhbGwuXG4gKlxuICogIyMjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoKVxuICogICAgICAgICAgICAgLnNldCh7IGh0bWw6IHRydWUsIGJyZWFrczogdHJ1ZSB9KVxuICogICAgICAgICAgICAgLnNldCh7IHR5cG9ncmFwaGVyLCB0cnVlIH0pO1xuICogYGBgXG4gKlxuICogX19Ob3RlOl9fIFRvIGFjaGlldmUgdGhlIGJlc3QgcG9zc2libGUgcGVyZm9ybWFuY2UsIGRvbid0IG1vZGlmeSBhXG4gKiBgbWFya2Rvd24taXRgIGluc3RhbmNlIG9wdGlvbnMgb24gdGhlIGZseS4gSWYgeW91IG5lZWQgbXVsdGlwbGUgY29uZmlndXJhdGlvbnNcbiAqIGl0J3MgYmVzdCB0byBjcmVhdGUgbXVsdGlwbGUgaW5zdGFuY2VzIGFuZCBpbml0aWFsaXplIGVhY2ggd2l0aCBzZXBhcmF0ZVxuICogY29uZmlnLlxuICoqL1xuTWFya2Rvd25JdC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdXRpbHMuYXNzaWduKHRoaXMub3B0aW9ucywgb3B0aW9ucyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuXG4vKiogY2hhaW5hYmxlLCBpbnRlcm5hbFxuICogTWFya2Rvd25JdC5jb25maWd1cmUocHJlc2V0cylcbiAqXG4gKiBCYXRjaCBsb2FkIG9mIGFsbCBvcHRpb25zIGFuZCBjb21wZW5lbnQgc2V0dGluZ3MuIFRoaXMgaXMgaW50ZXJuYWwgbWV0aG9kLFxuICogYW5kIHlvdSBwcm9iYWJseSB3aWxsIG5vdCBuZWVkIGl0LiBCdXQgaWYgeW91IHdpdGggLSBzZWUgYXZhaWxhYmxlIHByZXNldHNcbiAqIGFuZCBkYXRhIHN0cnVjdHVyZSBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L3RyZWUvbWFzdGVyL2xpYi9wcmVzZXRzKVxuICpcbiAqIFdlIHN0cm9uZ2x5IHJlY29tbWVuZCB0byB1c2UgcHJlc2V0cyBpbnN0ZWFkIG9mIGRpcmVjdCBjb25maWcgbG9hZHMuIFRoYXRcbiAqIHdpbGwgZ2l2ZSBiZXR0ZXIgY29tcGF0aWJpbGl0eSB3aXRoIG5leHQgdmVyc2lvbnMuXG4gKiovXG5NYXJrZG93bkl0LnByb3RvdHlwZS5jb25maWd1cmUgPSBmdW5jdGlvbiAocHJlc2V0cykge1xuICB2YXIgc2VsZiA9IHRoaXMsIHByZXNldE5hbWU7XG5cbiAgaWYgKHV0aWxzLmlzU3RyaW5nKHByZXNldHMpKSB7XG4gICAgcHJlc2V0TmFtZSA9IHByZXNldHM7XG4gICAgcHJlc2V0cyA9IGNvbmZpZ1twcmVzZXROYW1lXTtcbiAgICBpZiAoIXByZXNldHMpIHsgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyBgbWFya2Rvd24taXRgIHByZXNldCBcIicgKyBwcmVzZXROYW1lICsgJ1wiLCBjaGVjayBuYW1lJyk7IH1cbiAgfVxuXG4gIGlmICghcHJlc2V0cykgeyB0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIGBtYXJrZG93bi1pdGAgcHJlc2V0LCBjYW5cXCd0IGJlIGVtcHR5Jyk7IH1cblxuICBpZiAocHJlc2V0cy5vcHRpb25zKSB7IHNlbGYuc2V0KHByZXNldHMub3B0aW9ucyk7IH1cblxuICBpZiAocHJlc2V0cy5jb21wb25lbnRzKSB7XG4gICAgT2JqZWN0LmtleXMocHJlc2V0cy5jb21wb25lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICBpZiAocHJlc2V0cy5jb21wb25lbnRzW25hbWVdLnJ1bGVzKSB7XG4gICAgICAgIHNlbGZbbmFtZV0ucnVsZXIuZW5hYmxlT25seShwcmVzZXRzLmNvbXBvbmVudHNbbmFtZV0ucnVsZXMpO1xuICAgICAgfVxuICAgICAgaWYgKHByZXNldHMuY29tcG9uZW50c1tuYW1lXS5ydWxlczIpIHtcbiAgICAgICAgc2VsZltuYW1lXS5ydWxlcjIuZW5hYmxlT25seShwcmVzZXRzLmNvbXBvbmVudHNbbmFtZV0ucnVsZXMyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cblxuLyoqIGNoYWluYWJsZVxuICogTWFya2Rvd25JdC5lbmFibGUobGlzdCwgaWdub3JlSW52YWxpZClcbiAqIC0gbGlzdCAoU3RyaW5nfEFycmF5KTogcnVsZSBuYW1lIG9yIGxpc3Qgb2YgcnVsZSBuYW1lcyB0byBlbmFibGVcbiAqIC0gaWdub3JlSW52YWxpZCAoQm9vbGVhbik6IHNldCBgdHJ1ZWAgdG8gaWdub3JlIGVycm9ycyB3aGVuIHJ1bGUgbm90IGZvdW5kLlxuICpcbiAqIEVuYWJsZSBsaXN0IG9yIHJ1bGVzLiBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgZmluZCBhcHByb3ByaWF0ZSBjb21wb25lbnRzLFxuICogY29udGFpbmluZyBydWxlcyB3aXRoIGdpdmVuIG5hbWVzLiBJZiBydWxlIG5vdCBmb3VuZCwgYW5kIGBpZ25vcmVJbnZhbGlkYFxuICogbm90IHNldCAtIHRocm93cyBleGNlcHRpb24uXG4gKlxuICogIyMjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoKVxuICogICAgICAgICAgICAgLmVuYWJsZShbJ3N1YicsICdzdXAnXSlcbiAqICAgICAgICAgICAgIC5kaXNhYmxlKCdzbWFydHF1b3RlcycpO1xuICogYGBgXG4gKiovXG5NYXJrZG93bkl0LnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbiAobGlzdCwgaWdub3JlSW52YWxpZCkge1xuICB2YXIgcmVzdWx0ID0gW107XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGxpc3QpKSB7IGxpc3QgPSBbIGxpc3QgXTsgfVxuXG4gIFsgJ2NvcmUnLCAnYmxvY2snLCAnaW5saW5lJyBdLmZvckVhY2goZnVuY3Rpb24gKGNoYWluKSB7XG4gICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCh0aGlzW2NoYWluXS5ydWxlci5lbmFibGUobGlzdCwgdHJ1ZSkpO1xuICB9LCB0aGlzKTtcblxuICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHRoaXMuaW5saW5lLnJ1bGVyMi5lbmFibGUobGlzdCwgdHJ1ZSkpO1xuXG4gIHZhciBtaXNzZWQgPSBsaXN0LmZpbHRlcihmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gcmVzdWx0LmluZGV4T2YobmFtZSkgPCAwOyB9KTtcblxuICBpZiAobWlzc2VkLmxlbmd0aCAmJiAhaWdub3JlSW52YWxpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWFya2Rvd25JdC4gRmFpbGVkIHRvIGVuYWJsZSB1bmtub3duIHJ1bGUocyk6ICcgKyBtaXNzZWQpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5cbi8qKiBjaGFpbmFibGVcbiAqIE1hcmtkb3duSXQuZGlzYWJsZShsaXN0LCBpZ25vcmVJbnZhbGlkKVxuICogLSBsaXN0IChTdHJpbmd8QXJyYXkpOiBydWxlIG5hbWUgb3IgbGlzdCBvZiBydWxlIG5hbWVzIHRvIGRpc2FibGUuXG4gKiAtIGlnbm9yZUludmFsaWQgKEJvb2xlYW4pOiBzZXQgYHRydWVgIHRvIGlnbm9yZSBlcnJvcnMgd2hlbiBydWxlIG5vdCBmb3VuZC5cbiAqXG4gKiBUaGUgc2FtZSBhcyBbW01hcmtkb3duSXQuZW5hYmxlXV0sIGJ1dCB0dXJuIHNwZWNpZmllZCBydWxlcyBvZmYuXG4gKiovXG5NYXJrZG93bkl0LnByb3RvdHlwZS5kaXNhYmxlID0gZnVuY3Rpb24gKGxpc3QsIGlnbm9yZUludmFsaWQpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuXG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkgeyBsaXN0ID0gWyBsaXN0IF07IH1cblxuICBbICdjb3JlJywgJ2Jsb2NrJywgJ2lubGluZScgXS5mb3JFYWNoKGZ1bmN0aW9uIChjaGFpbikge1xuICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodGhpc1tjaGFpbl0ucnVsZXIuZGlzYWJsZShsaXN0LCB0cnVlKSk7XG4gIH0sIHRoaXMpO1xuXG4gIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodGhpcy5pbmxpbmUucnVsZXIyLmRpc2FibGUobGlzdCwgdHJ1ZSkpO1xuXG4gIHZhciBtaXNzZWQgPSBsaXN0LmZpbHRlcihmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gcmVzdWx0LmluZGV4T2YobmFtZSkgPCAwOyB9KTtcblxuICBpZiAobWlzc2VkLmxlbmd0aCAmJiAhaWdub3JlSW52YWxpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWFya2Rvd25JdC4gRmFpbGVkIHRvIGRpc2FibGUgdW5rbm93biBydWxlKHMpOiAnICsgbWlzc2VkKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cblxuLyoqIGNoYWluYWJsZVxuICogTWFya2Rvd25JdC51c2UocGx1Z2luLCBwYXJhbXMpXG4gKlxuICogTG9hZCBzcGVjaWZpZWQgcGx1Z2luIHdpdGggZ2l2ZW4gcGFyYW1zIGludG8gY3VycmVudCBwYXJzZXIgaW5zdGFuY2UuXG4gKiBJdCdzIGp1c3QgYSBzdWdhciB0byBjYWxsIGBwbHVnaW4obWQsIHBhcmFtcylgIHdpdGggY3VycmluZy5cbiAqXG4gKiAjIyMjIyBFeGFtcGxlXG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogdmFyIGl0ZXJhdG9yID0gcmVxdWlyZSgnbWFya2Rvd24taXQtZm9yLWlubGluZScpO1xuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpXG4gKiAgICAgICAgICAgICAudXNlKGl0ZXJhdG9yLCAnZm9vX3JlcGxhY2UnLCAndGV4dCcsIGZ1bmN0aW9uICh0b2tlbnMsIGlkeCkge1xuICogICAgICAgICAgICAgICB0b2tlbnNbaWR4XS5jb250ZW50ID0gdG9rZW5zW2lkeF0uY29udGVudC5yZXBsYWNlKC9mb28vZywgJ2JhcicpO1xuICogICAgICAgICAgICAgfSk7XG4gKiBgYGBcbiAqKi9cbk1hcmtkb3duSXQucHJvdG90eXBlLnVzZSA9IGZ1bmN0aW9uIChwbHVnaW4gLyosIHBhcmFtcywgLi4uICovKSB7XG4gIHZhciBhcmdzID0gWyB0aGlzIF0uY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpO1xuICBwbHVnaW4uYXBwbHkocGx1Z2luLCBhcmdzKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5cbi8qKiBpbnRlcm5hbFxuICogTWFya2Rvd25JdC5wYXJzZShzcmMsIGVudikgLT4gQXJyYXlcbiAqIC0gc3JjIChTdHJpbmcpOiBzb3VyY2Ugc3RyaW5nXG4gKiAtIGVudiAoT2JqZWN0KTogZW52aXJvbm1lbnQgc2FuZGJveFxuICpcbiAqIFBhcnNlIGlucHV0IHN0cmluZyBhbmQgcmV0dXJucyBsaXN0IG9mIGJsb2NrIHRva2VucyAoc3BlY2lhbCB0b2tlbiB0eXBlXG4gKiBcImlubGluZVwiIHdpbGwgY29udGFpbiBsaXN0IG9mIGlubGluZSB0b2tlbnMpLiBZb3Ugc2hvdWxkIG5vdCBjYWxsIHRoaXNcbiAqIG1ldGhvZCBkaXJlY3RseSwgdW50aWwgeW91IHdyaXRlIGN1c3RvbSByZW5kZXJlciAoZm9yIGV4YW1wbGUsIHRvIHByb2R1Y2VcbiAqIEFTVCkuXG4gKlxuICogYGVudmAgaXMgdXNlZCB0byBwYXNzIGRhdGEgYmV0d2VlbiBcImRpc3RyaWJ1dGVkXCIgcnVsZXMgYW5kIHJldHVybiBhZGRpdGlvbmFsXG4gKiBtZXRhZGF0YSBsaWtlIHJlZmVyZW5jZSBpbmZvLCBuZWVkZWQgZm9yIHRoZSByZW5kZXJlci4gSXQgYWxzbyBjYW4gYmUgdXNlZCB0b1xuICogaW5qZWN0IGRhdGEgaW4gc3BlY2lmaWMgY2FzZXMuIFVzdWFsbHksIHlvdSB3aWxsIGJlIG9rIHRvIHBhc3MgYHt9YCxcbiAqIGFuZCB0aGVuIHBhc3MgdXBkYXRlZCBvYmplY3QgdG8gcmVuZGVyZXIuXG4gKiovXG5NYXJrZG93bkl0LnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uIChzcmMsIGVudikge1xuICBpZiAodHlwZW9mIHNyYyAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IGRhdGEgc2hvdWxkIGJlIGEgU3RyaW5nJyk7XG4gIH1cblxuICB2YXIgc3RhdGUgPSBuZXcgdGhpcy5jb3JlLlN0YXRlKHNyYywgdGhpcywgZW52KTtcblxuICB0aGlzLmNvcmUucHJvY2VzcyhzdGF0ZSk7XG5cbiAgcmV0dXJuIHN0YXRlLnRva2Vucztcbn07XG5cblxuLyoqXG4gKiBNYXJrZG93bkl0LnJlbmRlcihzcmMgWywgZW52XSkgLT4gU3RyaW5nXG4gKiAtIHNyYyAoU3RyaW5nKTogc291cmNlIHN0cmluZ1xuICogLSBlbnYgKE9iamVjdCk6IGVudmlyb25tZW50IHNhbmRib3hcbiAqXG4gKiBSZW5kZXIgbWFya2Rvd24gc3RyaW5nIGludG8gaHRtbC4gSXQgZG9lcyBhbGwgbWFnaWMgZm9yIHlvdSA6KS5cbiAqXG4gKiBgZW52YCBjYW4gYmUgdXNlZCB0byBpbmplY3QgYWRkaXRpb25hbCBtZXRhZGF0YSAoYHt9YCBieSBkZWZhdWx0KS5cbiAqIEJ1dCB5b3Ugd2lsbCBub3QgbmVlZCBpdCB3aXRoIGhpZ2ggcHJvYmFiaWxpdHkuIFNlZSBhbHNvIGNvbW1lbnRcbiAqIGluIFtbTWFya2Rvd25JdC5wYXJzZV1dLlxuICoqL1xuTWFya2Rvd25JdC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKHNyYywgZW52KSB7XG4gIGVudiA9IGVudiB8fCB7fTtcblxuICByZXR1cm4gdGhpcy5yZW5kZXJlci5yZW5kZXIodGhpcy5wYXJzZShzcmMsIGVudiksIHRoaXMub3B0aW9ucywgZW52KTtcbn07XG5cblxuLyoqIGludGVybmFsXG4gKiBNYXJrZG93bkl0LnBhcnNlSW5saW5lKHNyYywgZW52KSAtPiBBcnJheVxuICogLSBzcmMgKFN0cmluZyk6IHNvdXJjZSBzdHJpbmdcbiAqIC0gZW52IChPYmplY3QpOiBlbnZpcm9ubWVudCBzYW5kYm94XG4gKlxuICogVGhlIHNhbWUgYXMgW1tNYXJrZG93bkl0LnBhcnNlXV0gYnV0IHNraXAgYWxsIGJsb2NrIHJ1bGVzLiBJdCByZXR1cm5zIHRoZVxuICogYmxvY2sgdG9rZW5zIGxpc3Qgd2l0aCB0aGUgc2luZ2xlIGBpbmxpbmVgIGVsZW1lbnQsIGNvbnRhaW5pbmcgcGFyc2VkIGlubGluZVxuICogdG9rZW5zIGluIGBjaGlsZHJlbmAgcHJvcGVydHkuIEFsc28gdXBkYXRlcyBgZW52YCBvYmplY3QuXG4gKiovXG5NYXJrZG93bkl0LnByb3RvdHlwZS5wYXJzZUlubGluZSA9IGZ1bmN0aW9uIChzcmMsIGVudikge1xuICB2YXIgc3RhdGUgPSBuZXcgdGhpcy5jb3JlLlN0YXRlKHNyYywgdGhpcywgZW52KTtcblxuICBzdGF0ZS5pbmxpbmVNb2RlID0gdHJ1ZTtcbiAgdGhpcy5jb3JlLnByb2Nlc3Moc3RhdGUpO1xuXG4gIHJldHVybiBzdGF0ZS50b2tlbnM7XG59O1xuXG5cbi8qKlxuICogTWFya2Rvd25JdC5yZW5kZXJJbmxpbmUoc3JjIFssIGVudl0pIC0+IFN0cmluZ1xuICogLSBzcmMgKFN0cmluZyk6IHNvdXJjZSBzdHJpbmdcbiAqIC0gZW52IChPYmplY3QpOiBlbnZpcm9ubWVudCBzYW5kYm94XG4gKlxuICogU2ltaWxhciB0byBbW01hcmtkb3duSXQucmVuZGVyXV0gYnV0IGZvciBzaW5nbGUgcGFyYWdyYXBoIGNvbnRlbnQuIFJlc3VsdFxuICogd2lsbCBOT1QgYmUgd3JhcHBlZCBpbnRvIGA8cD5gIHRhZ3MuXG4gKiovXG5NYXJrZG93bkl0LnByb3RvdHlwZS5yZW5kZXJJbmxpbmUgPSBmdW5jdGlvbiAoc3JjLCBlbnYpIHtcbiAgZW52ID0gZW52IHx8IHt9O1xuXG4gIHJldHVybiB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnBhcnNlSW5saW5lKHNyYywgZW52KSwgdGhpcy5vcHRpb25zLCBlbnYpO1xufTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcmtkb3duSXQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/index.js\n");
1977
1978/***/ }),
1979
1980/***/ "../../../node_modules/markdown-it/lib/parser_block.js":
1981/*!****************************************************************************************!*\
1982 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/parser_block.js ***!
1983 \****************************************************************************************/
1984/*! no static exports found */
1985/***/ (function(module, exports, __webpack_require__) {
1986
1987eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n /** internal\n * class ParserBlock\n *\n * Block-level tokenizer.\n **/\n 'use strict';\n\n var Ruler = __webpack_require__(/*! ./ruler */ \"../../../node_modules/markdown-it/lib/ruler.js\");\n\n var _rules = [// First 2 params - rule name & source. Secondary array - list of rules,\n // which can be terminated by this one.\n ['table', __webpack_require__(/*! ./rules_block/table */ \"../../../node_modules/markdown-it/lib/rules_block/table.js\"), ['paragraph', 'reference']], ['code', __webpack_require__(/*! ./rules_block/code */ \"../../../node_modules/markdown-it/lib/rules_block/code.js\")], ['fence', __webpack_require__(/*! ./rules_block/fence */ \"../../../node_modules/markdown-it/lib/rules_block/fence.js\"), ['paragraph', 'reference', 'blockquote', 'list']], ['blockquote', __webpack_require__(/*! ./rules_block/blockquote */ \"../../../node_modules/markdown-it/lib/rules_block/blockquote.js\"), ['paragraph', 'reference', 'blockquote', 'list']], ['hr', __webpack_require__(/*! ./rules_block/hr */ \"../../../node_modules/markdown-it/lib/rules_block/hr.js\"), ['paragraph', 'reference', 'blockquote', 'list']], ['list', __webpack_require__(/*! ./rules_block/list */ \"../../../node_modules/markdown-it/lib/rules_block/list.js\"), ['paragraph', 'reference', 'blockquote']], ['reference', __webpack_require__(/*! ./rules_block/reference */ \"../../../node_modules/markdown-it/lib/rules_block/reference.js\")], ['heading', __webpack_require__(/*! ./rules_block/heading */ \"../../../node_modules/markdown-it/lib/rules_block/heading.js\"), ['paragraph', 'reference', 'blockquote']], ['lheading', __webpack_require__(/*! ./rules_block/lheading */ \"../../../node_modules/markdown-it/lib/rules_block/lheading.js\")], ['html_block', __webpack_require__(/*! ./rules_block/html_block */ \"../../../node_modules/markdown-it/lib/rules_block/html_block.js\"), ['paragraph', 'reference', 'blockquote']], ['paragraph', __webpack_require__(/*! ./rules_block/paragraph */ \"../../../node_modules/markdown-it/lib/rules_block/paragraph.js\")]];\n /**\n * new ParserBlock()\n **/\n\n function ParserBlock() {\n /**\n * ParserBlock#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of block rules.\n **/\n this.ruler = new Ruler();\n\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1], {\n alt: (_rules[i][2] || []).slice()\n });\n }\n } // Generate tokens for input range\n //\n\n\n ParserBlock.prototype.tokenize = function (state, startLine, endLine) {\n var ok,\n i,\n rules = this.ruler.getRules(''),\n len = rules.length,\n line = startLine,\n hasEmptyLines = false,\n maxNesting = state.md.options.maxNesting;\n\n while (line < endLine) {\n state.line = line = state.skipEmptyLines(line);\n\n if (line >= endLine) {\n break;\n } // Termination condition for nested calls.\n // Nested calls currently used for blockquotes & lists\n\n\n if (state.sCount[line] < state.blkIndent) {\n break;\n } // If nesting level exceeded - skip tail to the end. That's not ordinary\n // situation and we should not care about content.\n\n\n if (state.level >= maxNesting) {\n state.line = endLine;\n break;\n } // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.line`\n // - update `state.tokens`\n // - return true\n\n\n for (i = 0; i < len; i++) {\n ok = rules[i](state, line, endLine, false);\n\n if (ok) {\n break;\n }\n } // set state.tight if we had an empty line before current tag\n // i.e. latest empty line should not count\n\n\n state.tight = !hasEmptyLines; // paragraph might \"eat\" one newline after it in nested lists\n\n if (state.isEmpty(state.line - 1)) {\n hasEmptyLines = true;\n }\n\n line = state.line;\n\n if (line < endLine && state.isEmpty(line)) {\n hasEmptyLines = true;\n line++;\n state.line = line;\n }\n }\n };\n /**\n * ParserBlock.parse(str, md, env, outTokens)\n *\n * Process input string and push block tokens into `outTokens`\n **/\n\n\n ParserBlock.prototype.parse = function (src, md, env, outTokens) {\n var state;\n\n if (!src) {\n return;\n }\n\n state = new this.State(src, md, env, outTokens);\n this.tokenize(state, state.line, state.lineMax);\n };\n\n ParserBlock.prototype.State = __webpack_require__(/*! ./rules_block/state_block */ \"../../../node_modules/markdown-it/lib/rules_block/state_block.js\");\n module.exports = ParserBlock;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wYXJzZXJfYmxvY2suanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3BhcnNlcl9ibG9jay5qcz83Y2YwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBpbnRlcm5hbFxuICogY2xhc3MgUGFyc2VyQmxvY2tcbiAqXG4gKiBCbG9jay1sZXZlbCB0b2tlbml6ZXIuXG4gKiovXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFJ1bGVyICAgICAgICAgICA9IHJlcXVpcmUoJy4vcnVsZXInKTtcblxuXG52YXIgX3J1bGVzID0gW1xuICAvLyBGaXJzdCAyIHBhcmFtcyAtIHJ1bGUgbmFtZSAmIHNvdXJjZS4gU2Vjb25kYXJ5IGFycmF5IC0gbGlzdCBvZiBydWxlcyxcbiAgLy8gd2hpY2ggY2FuIGJlIHRlcm1pbmF0ZWQgYnkgdGhpcyBvbmUuXG4gIFsgJ3RhYmxlJywgICAgICByZXF1aXJlKCcuL3J1bGVzX2Jsb2NrL3RhYmxlJyksICAgICAgWyAncGFyYWdyYXBoJywgJ3JlZmVyZW5jZScgXSBdLFxuICBbICdjb2RlJywgICAgICAgcmVxdWlyZSgnLi9ydWxlc19ibG9jay9jb2RlJykgXSxcbiAgWyAnZmVuY2UnLCAgICAgIHJlcXVpcmUoJy4vcnVsZXNfYmxvY2svZmVuY2UnKSwgICAgICBbICdwYXJhZ3JhcGgnLCAncmVmZXJlbmNlJywgJ2Jsb2NrcXVvdGUnLCAnbGlzdCcgXSBdLFxuICBbICdibG9ja3F1b3RlJywgcmVxdWlyZSgnLi9ydWxlc19ibG9jay9ibG9ja3F1b3RlJyksIFsgJ3BhcmFncmFwaCcsICdyZWZlcmVuY2UnLCAnYmxvY2txdW90ZScsICdsaXN0JyBdIF0sXG4gIFsgJ2hyJywgICAgICAgICByZXF1aXJlKCcuL3J1bGVzX2Jsb2NrL2hyJyksICAgICAgICAgWyAncGFyYWdyYXBoJywgJ3JlZmVyZW5jZScsICdibG9ja3F1b3RlJywgJ2xpc3QnIF0gXSxcbiAgWyAnbGlzdCcsICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfYmxvY2svbGlzdCcpLCAgICAgICBbICdwYXJhZ3JhcGgnLCAncmVmZXJlbmNlJywgJ2Jsb2NrcXVvdGUnIF0gXSxcbiAgWyAncmVmZXJlbmNlJywgIHJlcXVpcmUoJy4vcnVsZXNfYmxvY2svcmVmZXJlbmNlJykgXSxcbiAgWyAnaGVhZGluZycsICAgIHJlcXVpcmUoJy4vcnVsZXNfYmxvY2svaGVhZGluZycpLCAgICBbICdwYXJhZ3JhcGgnLCAncmVmZXJlbmNlJywgJ2Jsb2NrcXVvdGUnIF0gXSxcbiAgWyAnbGhlYWRpbmcnLCAgIHJlcXVpcmUoJy4vcnVsZXNfYmxvY2svbGhlYWRpbmcnKSBdLFxuICBbICdodG1sX2Jsb2NrJywgcmVxdWlyZSgnLi9ydWxlc19ibG9jay9odG1sX2Jsb2NrJyksIFsgJ3BhcmFncmFwaCcsICdyZWZlcmVuY2UnLCAnYmxvY2txdW90ZScgXSBdLFxuICBbICdwYXJhZ3JhcGgnLCAgcmVxdWlyZSgnLi9ydWxlc19ibG9jay9wYXJhZ3JhcGgnKSBdXG5dO1xuXG5cbi8qKlxuICogbmV3IFBhcnNlckJsb2NrKClcbiAqKi9cbmZ1bmN0aW9uIFBhcnNlckJsb2NrKCkge1xuICAvKipcbiAgICogUGFyc2VyQmxvY2sjcnVsZXIgLT4gUnVsZXJcbiAgICpcbiAgICogW1tSdWxlcl1dIGluc3RhbmNlLiBLZWVwIGNvbmZpZ3VyYXRpb24gb2YgYmxvY2sgcnVsZXMuXG4gICAqKi9cbiAgdGhpcy5ydWxlciA9IG5ldyBSdWxlcigpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgX3J1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpcy5ydWxlci5wdXNoKF9ydWxlc1tpXVswXSwgX3J1bGVzW2ldWzFdLCB7IGFsdDogKF9ydWxlc1tpXVsyXSB8fCBbXSkuc2xpY2UoKSB9KTtcbiAgfVxufVxuXG5cbi8vIEdlbmVyYXRlIHRva2VucyBmb3IgaW5wdXQgcmFuZ2Vcbi8vXG5QYXJzZXJCbG9jay5wcm90b3R5cGUudG9rZW5pemUgPSBmdW5jdGlvbiAoc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSkge1xuICB2YXIgb2ssIGksXG4gICAgICBydWxlcyA9IHRoaXMucnVsZXIuZ2V0UnVsZXMoJycpLFxuICAgICAgbGVuID0gcnVsZXMubGVuZ3RoLFxuICAgICAgbGluZSA9IHN0YXJ0TGluZSxcbiAgICAgIGhhc0VtcHR5TGluZXMgPSBmYWxzZSxcbiAgICAgIG1heE5lc3RpbmcgPSBzdGF0ZS5tZC5vcHRpb25zLm1heE5lc3Rpbmc7XG5cbiAgd2hpbGUgKGxpbmUgPCBlbmRMaW5lKSB7XG4gICAgc3RhdGUubGluZSA9IGxpbmUgPSBzdGF0ZS5za2lwRW1wdHlMaW5lcyhsaW5lKTtcbiAgICBpZiAobGluZSA+PSBlbmRMaW5lKSB7IGJyZWFrOyB9XG5cbiAgICAvLyBUZXJtaW5hdGlvbiBjb25kaXRpb24gZm9yIG5lc3RlZCBjYWxscy5cbiAgICAvLyBOZXN0ZWQgY2FsbHMgY3VycmVudGx5IHVzZWQgZm9yIGJsb2NrcXVvdGVzICYgbGlzdHNcbiAgICBpZiAoc3RhdGUuc0NvdW50W2xpbmVdIDwgc3RhdGUuYmxrSW5kZW50KSB7IGJyZWFrOyB9XG5cbiAgICAvLyBJZiBuZXN0aW5nIGxldmVsIGV4Y2VlZGVkIC0gc2tpcCB0YWlsIHRvIHRoZSBlbmQuIFRoYXQncyBub3Qgb3JkaW5hcnlcbiAgICAvLyBzaXR1YXRpb24gYW5kIHdlIHNob3VsZCBub3QgY2FyZSBhYm91dCBjb250ZW50LlxuICAgIGlmIChzdGF0ZS5sZXZlbCA+PSBtYXhOZXN0aW5nKSB7XG4gICAgICBzdGF0ZS5saW5lID0gZW5kTGluZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFRyeSBhbGwgcG9zc2libGUgcnVsZXMuXG4gICAgLy8gT24gc3VjY2VzcywgcnVsZSBzaG91bGQ6XG4gICAgLy9cbiAgICAvLyAtIHVwZGF0ZSBgc3RhdGUubGluZWBcbiAgICAvLyAtIHVwZGF0ZSBgc3RhdGUudG9rZW5zYFxuICAgIC8vIC0gcmV0dXJuIHRydWVcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgb2sgPSBydWxlc1tpXShzdGF0ZSwgbGluZSwgZW5kTGluZSwgZmFsc2UpO1xuICAgICAgaWYgKG9rKSB7IGJyZWFrOyB9XG4gICAgfVxuXG4gICAgLy8gc2V0IHN0YXRlLnRpZ2h0IGlmIHdlIGhhZCBhbiBlbXB0eSBsaW5lIGJlZm9yZSBjdXJyZW50IHRhZ1xuICAgIC8vIGkuZS4gbGF0ZXN0IGVtcHR5IGxpbmUgc2hvdWxkIG5vdCBjb3VudFxuICAgIHN0YXRlLnRpZ2h0ID0gIWhhc0VtcHR5TGluZXM7XG5cbiAgICAvLyBwYXJhZ3JhcGggbWlnaHQgXCJlYXRcIiBvbmUgbmV3bGluZSBhZnRlciBpdCBpbiBuZXN0ZWQgbGlzdHNcbiAgICBpZiAoc3RhdGUuaXNFbXB0eShzdGF0ZS5saW5lIC0gMSkpIHtcbiAgICAgIGhhc0VtcHR5TGluZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGxpbmUgPSBzdGF0ZS5saW5lO1xuXG4gICAgaWYgKGxpbmUgPCBlbmRMaW5lICYmIHN0YXRlLmlzRW1wdHkobGluZSkpIHtcbiAgICAgIGhhc0VtcHR5TGluZXMgPSB0cnVlO1xuICAgICAgbGluZSsrO1xuICAgICAgc3RhdGUubGluZSA9IGxpbmU7XG4gICAgfVxuICB9XG59O1xuXG5cbi8qKlxuICogUGFyc2VyQmxvY2sucGFyc2Uoc3RyLCBtZCwgZW52LCBvdXRUb2tlbnMpXG4gKlxuICogUHJvY2VzcyBpbnB1dCBzdHJpbmcgYW5kIHB1c2ggYmxvY2sgdG9rZW5zIGludG8gYG91dFRva2Vuc2BcbiAqKi9cblBhcnNlckJsb2NrLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uIChzcmMsIG1kLCBlbnYsIG91dFRva2Vucykge1xuICB2YXIgc3RhdGU7XG5cbiAgaWYgKCFzcmMpIHsgcmV0dXJuOyB9XG5cbiAgc3RhdGUgPSBuZXcgdGhpcy5TdGF0ZShzcmMsIG1kLCBlbnYsIG91dFRva2Vucyk7XG5cbiAgdGhpcy50b2tlbml6ZShzdGF0ZSwgc3RhdGUubGluZSwgc3RhdGUubGluZU1heCk7XG59O1xuXG5cblBhcnNlckJsb2NrLnByb3RvdHlwZS5TdGF0ZSA9IHJlcXVpcmUoJy4vcnVsZXNfYmxvY2svc3RhdGVfYmxvY2snKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFBhcnNlckJsb2NrO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQWNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/parser_block.js\n");
1988
1989/***/ }),
1990
1991/***/ "../../../node_modules/markdown-it/lib/parser_core.js":
1992/*!***************************************************************************************!*\
1993 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/parser_core.js ***!
1994 \***************************************************************************************/
1995/*! no static exports found */
1996/***/ (function(module, exports, __webpack_require__) {
1997
1998eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n /** internal\n * class Core\n *\n * Top-level rules executor. Glues block/inline parsers and does intermediate\n * transformations.\n **/\n 'use strict';\n\n var Ruler = __webpack_require__(/*! ./ruler */ \"../../../node_modules/markdown-it/lib/ruler.js\");\n\n var _rules = [['normalize', __webpack_require__(/*! ./rules_core/normalize */ \"../../../node_modules/markdown-it/lib/rules_core/normalize.js\")], ['block', __webpack_require__(/*! ./rules_core/block */ \"../../../node_modules/markdown-it/lib/rules_core/block.js\")], ['inline', __webpack_require__(/*! ./rules_core/inline */ \"../../../node_modules/markdown-it/lib/rules_core/inline.js\")], ['linkify', __webpack_require__(/*! ./rules_core/linkify */ \"../../../node_modules/markdown-it/lib/rules_core/linkify.js\")], ['replacements', __webpack_require__(/*! ./rules_core/replacements */ \"../../../node_modules/markdown-it/lib/rules_core/replacements.js\")], ['smartquotes', __webpack_require__(/*! ./rules_core/smartquotes */ \"../../../node_modules/markdown-it/lib/rules_core/smartquotes.js\")]];\n /**\n * new Core()\n **/\n\n function Core() {\n /**\n * Core#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of core rules.\n **/\n this.ruler = new Ruler();\n\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n }\n /**\n * Core.process(state)\n *\n * Executes core chain rules.\n **/\n\n\n Core.prototype.process = function (state) {\n var i, l, rules;\n rules = this.ruler.getRules('');\n\n for (i = 0, l = rules.length; i < l; i++) {\n rules[i](state);\n }\n };\n\n Core.prototype.State = __webpack_require__(/*! ./rules_core/state_core */ \"../../../node_modules/markdown-it/lib/rules_core/state_core.js\");\n module.exports = Core;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wYXJzZXJfY29yZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcGFyc2VyX2NvcmUuanM/NGRmYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogaW50ZXJuYWxcbiAqIGNsYXNzIENvcmVcbiAqXG4gKiBUb3AtbGV2ZWwgcnVsZXMgZXhlY3V0b3IuIEdsdWVzIGJsb2NrL2lubGluZSBwYXJzZXJzIGFuZCBkb2VzIGludGVybWVkaWF0ZVxuICogdHJhbnNmb3JtYXRpb25zLlxuICoqL1xuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBSdWxlciAgPSByZXF1aXJlKCcuL3J1bGVyJyk7XG5cblxudmFyIF9ydWxlcyA9IFtcbiAgWyAnbm9ybWFsaXplJywgICAgICByZXF1aXJlKCcuL3J1bGVzX2NvcmUvbm9ybWFsaXplJykgICAgICBdLFxuICBbICdibG9jaycsICAgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfY29yZS9ibG9jaycpICAgICAgICAgIF0sXG4gIFsgJ2lubGluZScsICAgICAgICAgcmVxdWlyZSgnLi9ydWxlc19jb3JlL2lubGluZScpICAgICAgICAgXSxcbiAgWyAnbGlua2lmeScsICAgICAgICByZXF1aXJlKCcuL3J1bGVzX2NvcmUvbGlua2lmeScpICAgICAgICBdLFxuICBbICdyZXBsYWNlbWVudHMnLCAgIHJlcXVpcmUoJy4vcnVsZXNfY29yZS9yZXBsYWNlbWVudHMnKSAgIF0sXG4gIFsgJ3NtYXJ0cXVvdGVzJywgICAgcmVxdWlyZSgnLi9ydWxlc19jb3JlL3NtYXJ0cXVvdGVzJykgICAgXVxuXTtcblxuXG4vKipcbiAqIG5ldyBDb3JlKClcbiAqKi9cbmZ1bmN0aW9uIENvcmUoKSB7XG4gIC8qKlxuICAgKiBDb3JlI3J1bGVyIC0+IFJ1bGVyXG4gICAqXG4gICAqIFtbUnVsZXJdXSBpbnN0YW5jZS4gS2VlcCBjb25maWd1cmF0aW9uIG9mIGNvcmUgcnVsZXMuXG4gICAqKi9cbiAgdGhpcy5ydWxlciA9IG5ldyBSdWxlcigpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgX3J1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpcy5ydWxlci5wdXNoKF9ydWxlc1tpXVswXSwgX3J1bGVzW2ldWzFdKTtcbiAgfVxufVxuXG5cbi8qKlxuICogQ29yZS5wcm9jZXNzKHN0YXRlKVxuICpcbiAqIEV4ZWN1dGVzIGNvcmUgY2hhaW4gcnVsZXMuXG4gKiovXG5Db3JlLnByb3RvdHlwZS5wcm9jZXNzID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gIHZhciBpLCBsLCBydWxlcztcblxuICBydWxlcyA9IHRoaXMucnVsZXIuZ2V0UnVsZXMoJycpO1xuXG4gIGZvciAoaSA9IDAsIGwgPSBydWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBydWxlc1tpXShzdGF0ZSk7XG4gIH1cbn07XG5cbkNvcmUucHJvdG90eXBlLlN0YXRlID0gcmVxdWlyZSgnLi9ydWxlc19jb3JlL3N0YXRlX2NvcmUnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IENvcmU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/parser_core.js\n");
1999
2000/***/ }),
2001
2002/***/ "../../../node_modules/markdown-it/lib/parser_inline.js":
2003/*!*****************************************************************************************!*\
2004 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/parser_inline.js ***!
2005 \*****************************************************************************************/
2006/*! no static exports found */
2007/***/ (function(module, exports, __webpack_require__) {
2008
2009eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n /** internal\n * class ParserInline\n *\n * Tokenizes paragraph content.\n **/\n 'use strict';\n\n var Ruler = __webpack_require__(/*! ./ruler */ \"../../../node_modules/markdown-it/lib/ruler.js\"); ////////////////////////////////////////////////////////////////////////////////\n // Parser rules\n\n\n var _rules = [['text', __webpack_require__(/*! ./rules_inline/text */ \"../../../node_modules/markdown-it/lib/rules_inline/text.js\")], ['newline', __webpack_require__(/*! ./rules_inline/newline */ \"../../../node_modules/markdown-it/lib/rules_inline/newline.js\")], ['escape', __webpack_require__(/*! ./rules_inline/escape */ \"../../../node_modules/markdown-it/lib/rules_inline/escape.js\")], ['backticks', __webpack_require__(/*! ./rules_inline/backticks */ \"../../../node_modules/markdown-it/lib/rules_inline/backticks.js\")], ['strikethrough', __webpack_require__(/*! ./rules_inline/strikethrough */ \"../../../node_modules/markdown-it/lib/rules_inline/strikethrough.js\").tokenize], ['emphasis', __webpack_require__(/*! ./rules_inline/emphasis */ \"../../../node_modules/markdown-it/lib/rules_inline/emphasis.js\").tokenize], ['link', __webpack_require__(/*! ./rules_inline/link */ \"../../../node_modules/markdown-it/lib/rules_inline/link.js\")], ['image', __webpack_require__(/*! ./rules_inline/image */ \"../../../node_modules/markdown-it/lib/rules_inline/image.js\")], ['autolink', __webpack_require__(/*! ./rules_inline/autolink */ \"../../../node_modules/markdown-it/lib/rules_inline/autolink.js\")], ['html_inline', __webpack_require__(/*! ./rules_inline/html_inline */ \"../../../node_modules/markdown-it/lib/rules_inline/html_inline.js\")], ['entity', __webpack_require__(/*! ./rules_inline/entity */ \"../../../node_modules/markdown-it/lib/rules_inline/entity.js\")]];\n var _rules2 = [['balance_pairs', __webpack_require__(/*! ./rules_inline/balance_pairs */ \"../../../node_modules/markdown-it/lib/rules_inline/balance_pairs.js\")], ['strikethrough', __webpack_require__(/*! ./rules_inline/strikethrough */ \"../../../node_modules/markdown-it/lib/rules_inline/strikethrough.js\").postProcess], ['emphasis', __webpack_require__(/*! ./rules_inline/emphasis */ \"../../../node_modules/markdown-it/lib/rules_inline/emphasis.js\").postProcess], ['text_collapse', __webpack_require__(/*! ./rules_inline/text_collapse */ \"../../../node_modules/markdown-it/lib/rules_inline/text_collapse.js\")]];\n /**\n * new ParserInline()\n **/\n\n function ParserInline() {\n var i;\n /**\n * ParserInline#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of inline rules.\n **/\n\n this.ruler = new Ruler();\n\n for (i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n /**\n * ParserInline#ruler2 -> Ruler\n *\n * [[Ruler]] instance. Second ruler used for post-processing\n * (e.g. in emphasis-like rules).\n **/\n\n\n this.ruler2 = new Ruler();\n\n for (i = 0; i < _rules2.length; i++) {\n this.ruler2.push(_rules2[i][0], _rules2[i][1]);\n }\n } // Skip single token by running all rules in validation mode;\n // returns `true` if any rule reported success\n //\n\n\n ParserInline.prototype.skipToken = function (state) {\n var ok,\n i,\n pos = state.pos,\n rules = this.ruler.getRules(''),\n len = rules.length,\n maxNesting = state.md.options.maxNesting,\n cache = state.cache;\n\n if (typeof cache[pos] !== 'undefined') {\n state.pos = cache[pos];\n return;\n }\n\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n // Increment state.level and decrement it later to limit recursion.\n // It's harmless to do here, because no tokens are created. But ideally,\n // we'd need a separate private state variable for this purpose.\n //\n state.level++;\n ok = rules[i](state, true);\n state.level--;\n\n if (ok) {\n break;\n }\n }\n } else {\n // Too much nesting, just skip until the end of the paragraph.\n //\n // NOTE: this will cause links to behave incorrectly in the following case,\n // when an amount of `[` is exactly equal to `maxNesting + 1`:\n //\n // [[[[[[[[[[[[[[[[[[[[[foo]()\n //\n // TODO: remove this workaround when CM standard will allow nested links\n // (we can replace it by preventing links from being parsed in\n // validation mode)\n //\n state.pos = state.posMax;\n }\n\n if (!ok) {\n state.pos++;\n }\n\n cache[pos] = state.pos;\n }; // Generate tokens for input range\n //\n\n\n ParserInline.prototype.tokenize = function (state) {\n var ok,\n i,\n rules = this.ruler.getRules(''),\n len = rules.length,\n end = state.posMax,\n maxNesting = state.md.options.maxNesting;\n\n while (state.pos < end) {\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.pos`\n // - update `state.tokens`\n // - return true\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n ok = rules[i](state, false);\n\n if (ok) {\n break;\n }\n }\n }\n\n if (ok) {\n if (state.pos >= end) {\n break;\n }\n\n continue;\n }\n\n state.pending += state.src[state.pos++];\n }\n\n if (state.pending) {\n state.pushPending();\n }\n };\n /**\n * ParserInline.parse(str, md, env, outTokens)\n *\n * Process input string and push inline tokens into `outTokens`\n **/\n\n\n ParserInline.prototype.parse = function (str, md, env, outTokens) {\n var i, rules, len;\n var state = new this.State(str, md, env, outTokens);\n this.tokenize(state);\n rules = this.ruler2.getRules('');\n len = rules.length;\n\n for (i = 0; i < len; i++) {\n rules[i](state);\n }\n };\n\n ParserInline.prototype.State = __webpack_require__(/*! ./rules_inline/state_inline */ \"../../../node_modules/markdown-it/lib/rules_inline/state_inline.js\");\n module.exports = ParserInline;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wYXJzZXJfaW5saW5lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wYXJzZXJfaW5saW5lLmpzP2U2YTAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIGludGVybmFsXG4gKiBjbGFzcyBQYXJzZXJJbmxpbmVcbiAqXG4gKiBUb2tlbml6ZXMgcGFyYWdyYXBoIGNvbnRlbnQuXG4gKiovXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFJ1bGVyICAgICAgICAgICA9IHJlcXVpcmUoJy4vcnVsZXInKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGFyc2VyIHJ1bGVzXG5cbnZhciBfcnVsZXMgPSBbXG4gIFsgJ3RleHQnLCAgICAgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL3RleHQnKSBdLFxuICBbICduZXdsaW5lJywgICAgICAgICByZXF1aXJlKCcuL3J1bGVzX2lubGluZS9uZXdsaW5lJykgXSxcbiAgWyAnZXNjYXBlJywgICAgICAgICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvZXNjYXBlJykgXSxcbiAgWyAnYmFja3RpY2tzJywgICAgICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvYmFja3RpY2tzJykgXSxcbiAgWyAnc3RyaWtldGhyb3VnaCcsICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvc3RyaWtldGhyb3VnaCcpLnRva2VuaXplIF0sXG4gIFsgJ2VtcGhhc2lzJywgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL2VtcGhhc2lzJykudG9rZW5pemUgXSxcbiAgWyAnbGluaycsICAgICAgICAgICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvbGluaycpIF0sXG4gIFsgJ2ltYWdlJywgICAgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL2ltYWdlJykgXSxcbiAgWyAnYXV0b2xpbmsnLCAgICAgICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvYXV0b2xpbmsnKSBdLFxuICBbICdodG1sX2lubGluZScsICAgICByZXF1aXJlKCcuL3J1bGVzX2lubGluZS9odG1sX2lubGluZScpIF0sXG4gIFsgJ2VudGl0eScsICAgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL2VudGl0eScpIF1cbl07XG5cbnZhciBfcnVsZXMyID0gW1xuICBbICdiYWxhbmNlX3BhaXJzJywgICByZXF1aXJlKCcuL3J1bGVzX2lubGluZS9iYWxhbmNlX3BhaXJzJykgXSxcbiAgWyAnc3RyaWtldGhyb3VnaCcsICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvc3RyaWtldGhyb3VnaCcpLnBvc3RQcm9jZXNzIF0sXG4gIFsgJ2VtcGhhc2lzJywgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL2VtcGhhc2lzJykucG9zdFByb2Nlc3MgXSxcbiAgWyAndGV4dF9jb2xsYXBzZScsICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvdGV4dF9jb2xsYXBzZScpIF1cbl07XG5cblxuLyoqXG4gKiBuZXcgUGFyc2VySW5saW5lKClcbiAqKi9cbmZ1bmN0aW9uIFBhcnNlcklubGluZSgpIHtcbiAgdmFyIGk7XG5cbiAgLyoqXG4gICAqIFBhcnNlcklubGluZSNydWxlciAtPiBSdWxlclxuICAgKlxuICAgKiBbW1J1bGVyXV0gaW5zdGFuY2UuIEtlZXAgY29uZmlndXJhdGlvbiBvZiBpbmxpbmUgcnVsZXMuXG4gICAqKi9cbiAgdGhpcy5ydWxlciA9IG5ldyBSdWxlcigpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBfcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLnJ1bGVyLnB1c2goX3J1bGVzW2ldWzBdLCBfcnVsZXNbaV1bMV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcklubGluZSNydWxlcjIgLT4gUnVsZXJcbiAgICpcbiAgICogW1tSdWxlcl1dIGluc3RhbmNlLiBTZWNvbmQgcnVsZXIgdXNlZCBmb3IgcG9zdC1wcm9jZXNzaW5nXG4gICAqIChlLmcuIGluIGVtcGhhc2lzLWxpa2UgcnVsZXMpLlxuICAgKiovXG4gIHRoaXMucnVsZXIyID0gbmV3IFJ1bGVyKCk7XG5cbiAgZm9yIChpID0gMDsgaSA8IF9ydWxlczIubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLnJ1bGVyMi5wdXNoKF9ydWxlczJbaV1bMF0sIF9ydWxlczJbaV1bMV0pO1xuICB9XG59XG5cblxuLy8gU2tpcCBzaW5nbGUgdG9rZW4gYnkgcnVubmluZyBhbGwgcnVsZXMgaW4gdmFsaWRhdGlvbiBtb2RlO1xuLy8gcmV0dXJucyBgdHJ1ZWAgaWYgYW55IHJ1bGUgcmVwb3J0ZWQgc3VjY2Vzc1xuLy9cblBhcnNlcklubGluZS5wcm90b3R5cGUuc2tpcFRva2VuID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gIHZhciBvaywgaSwgcG9zID0gc3RhdGUucG9zLFxuICAgICAgcnVsZXMgPSB0aGlzLnJ1bGVyLmdldFJ1bGVzKCcnKSxcbiAgICAgIGxlbiA9IHJ1bGVzLmxlbmd0aCxcbiAgICAgIG1heE5lc3RpbmcgPSBzdGF0ZS5tZC5vcHRpb25zLm1heE5lc3RpbmcsXG4gICAgICBjYWNoZSA9IHN0YXRlLmNhY2hlO1xuXG5cbiAgaWYgKHR5cGVvZiBjYWNoZVtwb3NdICE9PSAndW5kZWZpbmVkJykge1xuICAgIHN0YXRlLnBvcyA9IGNhY2hlW3Bvc107XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHN0YXRlLmxldmVsIDwgbWF4TmVzdGluZykge1xuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgLy8gSW5jcmVtZW50IHN0YXRlLmxldmVsIGFuZCBkZWNyZW1lbnQgaXQgbGF0ZXIgdG8gbGltaXQgcmVjdXJzaW9uLlxuICAgICAgLy8gSXQncyBoYXJtbGVzcyB0byBkbyBoZXJlLCBiZWNhdXNlIG5vIHRva2VucyBhcmUgY3JlYXRlZC4gQnV0IGlkZWFsbHksXG4gICAgICAvLyB3ZSdkIG5lZWQgYSBzZXBhcmF0ZSBwcml2YXRlIHN0YXRlIHZhcmlhYmxlIGZvciB0aGlzIHB1cnBvc2UuXG4gICAgICAvL1xuICAgICAgc3RhdGUubGV2ZWwrKztcbiAgICAgIG9rID0gcnVsZXNbaV0oc3RhdGUsIHRydWUpO1xuICAgICAgc3RhdGUubGV2ZWwtLTtcblxuICAgICAgaWYgKG9rKSB7IGJyZWFrOyB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIFRvbyBtdWNoIG5lc3RpbmcsIGp1c3Qgc2tpcCB1bnRpbCB0aGUgZW5kIG9mIHRoZSBwYXJhZ3JhcGguXG4gICAgLy9cbiAgICAvLyBOT1RFOiB0aGlzIHdpbGwgY2F1c2UgbGlua3MgdG8gYmVoYXZlIGluY29ycmVjdGx5IGluIHRoZSBmb2xsb3dpbmcgY2FzZSxcbiAgICAvLyAgICAgICB3aGVuIGFuIGFtb3VudCBvZiBgW2AgaXMgZXhhY3RseSBlcXVhbCB0byBgbWF4TmVzdGluZyArIDFgOlxuICAgIC8vXG4gICAgLy8gICAgICAgW1tbW1tbW1tbW1tbW1tbW1tbW1tbZm9vXSgpXG4gICAgLy9cbiAgICAvLyBUT0RPOiByZW1vdmUgdGhpcyB3b3JrYXJvdW5kIHdoZW4gQ00gc3RhbmRhcmQgd2lsbCBhbGxvdyBuZXN0ZWQgbGlua3NcbiAgICAvLyAgICAgICAod2UgY2FuIHJlcGxhY2UgaXQgYnkgcHJldmVudGluZyBsaW5rcyBmcm9tIGJlaW5nIHBhcnNlZCBpblxuICAgIC8vICAgICAgIHZhbGlkYXRpb24gbW9kZSlcbiAgICAvL1xuICAgIHN0YXRlLnBvcyA9IHN0YXRlLnBvc01heDtcbiAgfVxuXG4gIGlmICghb2spIHsgc3RhdGUucG9zKys7IH1cbiAgY2FjaGVbcG9zXSA9IHN0YXRlLnBvcztcbn07XG5cblxuLy8gR2VuZXJhdGUgdG9rZW5zIGZvciBpbnB1dCByYW5nZVxuLy9cblBhcnNlcklubGluZS5wcm90b3R5cGUudG9rZW5pemUgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgdmFyIG9rLCBpLFxuICAgICAgcnVsZXMgPSB0aGlzLnJ1bGVyLmdldFJ1bGVzKCcnKSxcbiAgICAgIGxlbiA9IHJ1bGVzLmxlbmd0aCxcbiAgICAgIGVuZCA9IHN0YXRlLnBvc01heCxcbiAgICAgIG1heE5lc3RpbmcgPSBzdGF0ZS5tZC5vcHRpb25zLm1heE5lc3Rpbmc7XG5cbiAgd2hpbGUgKHN0YXRlLnBvcyA8IGVuZCkge1xuICAgIC8vIFRyeSBhbGwgcG9zc2libGUgcnVsZXMuXG4gICAgLy8gT24gc3VjY2VzcywgcnVsZSBzaG91bGQ6XG4gICAgLy9cbiAgICAvLyAtIHVwZGF0ZSBgc3RhdGUucG9zYFxuICAgIC8vIC0gdXBkYXRlIGBzdGF0ZS50b2tlbnNgXG4gICAgLy8gLSByZXR1cm4gdHJ1ZVxuXG4gICAgaWYgKHN0YXRlLmxldmVsIDwgbWF4TmVzdGluZykge1xuICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIG9rID0gcnVsZXNbaV0oc3RhdGUsIGZhbHNlKTtcbiAgICAgICAgaWYgKG9rKSB7IGJyZWFrOyB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9rKSB7XG4gICAgICBpZiAoc3RhdGUucG9zID49IGVuZCkgeyBicmVhazsgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgc3RhdGUucGVuZGluZyArPSBzdGF0ZS5zcmNbc3RhdGUucG9zKytdO1xuICB9XG5cbiAgaWYgKHN0YXRlLnBlbmRpbmcpIHtcbiAgICBzdGF0ZS5wdXNoUGVuZGluZygpO1xuICB9XG59O1xuXG5cbi8qKlxuICogUGFyc2VySW5saW5lLnBhcnNlKHN0ciwgbWQsIGVudiwgb3V0VG9rZW5zKVxuICpcbiAqIFByb2Nlc3MgaW5wdXQgc3RyaW5nIGFuZCBwdXNoIGlubGluZSB0b2tlbnMgaW50byBgb3V0VG9rZW5zYFxuICoqL1xuUGFyc2VySW5saW5lLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uIChzdHIsIG1kLCBlbnYsIG91dFRva2Vucykge1xuICB2YXIgaSwgcnVsZXMsIGxlbjtcbiAgdmFyIHN0YXRlID0gbmV3IHRoaXMuU3RhdGUoc3RyLCBtZCwgZW52LCBvdXRUb2tlbnMpO1xuXG4gIHRoaXMudG9rZW5pemUoc3RhdGUpO1xuXG4gIHJ1bGVzID0gdGhpcy5ydWxlcjIuZ2V0UnVsZXMoJycpO1xuICBsZW4gPSBydWxlcy5sZW5ndGg7XG5cbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgcnVsZXNbaV0oc3RhdGUpO1xuICB9XG59O1xuXG5cblBhcnNlcklubGluZS5wcm90b3R5cGUuU3RhdGUgPSByZXF1aXJlKCcuL3J1bGVzX2lubGluZS9zdGF0ZV9pbmxpbmUnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFBhcnNlcklubGluZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFjQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/parser_inline.js\n");
2010
2011/***/ }),
2012
2013/***/ "../../../node_modules/markdown-it/lib/presets/commonmark.js":
2014/*!**********************************************************************************************!*\
2015 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/presets/commonmark.js ***!
2016 \**********************************************************************************************/
2017/*! no static exports found */
2018/***/ (function(module, exports, __webpack_require__) {
2019
2020eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Commonmark default options\n 'use strict';\n\n module.exports = {\n options: {\n html: true,\n // Enable HTML tags in source\n xhtmlOut: true,\n // Use '/' to close single tags (<br />)\n breaks: false,\n // Convert '\\n' in paragraphs into <br>\n langPrefix: 'language-',\n // CSS language prefix for fenced blocks\n linkify: false,\n // autoconvert URL-like texts to links\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019',\n\n /* “”‘’ */\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with <pre... internal wrapper is skipped.\n //\n // function (/*str, lang*/) { return ''; }\n //\n highlight: null,\n maxNesting: 20 // Internal protection, recursion limit\n\n },\n components: {\n core: {\n rules: ['normalize', 'block', 'inline']\n },\n block: {\n rules: ['blockquote', 'code', 'fence', 'heading', 'hr', 'html_block', 'lheading', 'list', 'reference', 'paragraph']\n },\n inline: {\n rules: ['autolink', 'backticks', 'emphasis', 'entity', 'escape', 'html_inline', 'image', 'link', 'newline', 'text'],\n rules2: ['balance_pairs', 'emphasis', 'text_collapse']\n }\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wcmVzZXRzL2NvbW1vbm1hcmsuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3ByZXNldHMvY29tbW9ubWFyay5qcz9kODVjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvbW1vbm1hcmsgZGVmYXVsdCBvcHRpb25zXG5cbid1c2Ugc3RyaWN0JztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgb3B0aW9uczoge1xuICAgIGh0bWw6ICAgICAgICAgdHJ1ZSwgICAgICAgICAvLyBFbmFibGUgSFRNTCB0YWdzIGluIHNvdXJjZVxuICAgIHhodG1sT3V0OiAgICAgdHJ1ZSwgICAgICAgICAvLyBVc2UgJy8nIHRvIGNsb3NlIHNpbmdsZSB0YWdzICg8YnIgLz4pXG4gICAgYnJlYWtzOiAgICAgICBmYWxzZSwgICAgICAgIC8vIENvbnZlcnQgJ1xcbicgaW4gcGFyYWdyYXBocyBpbnRvIDxicj5cbiAgICBsYW5nUHJlZml4OiAgICdsYW5ndWFnZS0nLCAgLy8gQ1NTIGxhbmd1YWdlIHByZWZpeCBmb3IgZmVuY2VkIGJsb2Nrc1xuICAgIGxpbmtpZnk6ICAgICAgZmFsc2UsICAgICAgICAvLyBhdXRvY29udmVydCBVUkwtbGlrZSB0ZXh0cyB0byBsaW5rc1xuXG4gICAgLy8gRW5hYmxlIHNvbWUgbGFuZ3VhZ2UtbmV1dHJhbCByZXBsYWNlbWVudHMgKyBxdW90ZXMgYmVhdXRpZmljYXRpb25cbiAgICB0eXBvZ3JhcGhlcjogIGZhbHNlLFxuXG4gICAgLy8gRG91YmxlICsgc2luZ2xlIHF1b3RlcyByZXBsYWNlbWVudCBwYWlycywgd2hlbiB0eXBvZ3JhcGhlciBlbmFibGVkLFxuICAgIC8vIGFuZCBzbWFydHF1b3RlcyBvbi4gQ291bGQgYmUgZWl0aGVyIGEgU3RyaW5nIG9yIGFuIEFycmF5LlxuICAgIC8vXG4gICAgLy8gRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlICfCq8K74oCe4oCcJyBmb3IgUnVzc2lhbiwgJ+KAnuKAnOKAmuKAmCcgZm9yIEdlcm1hbixcbiAgICAvLyBhbmQgWyfCq1xceEEwJywgJ1xceEEwwrsnLCAn4oC5XFx4QTAnLCAnXFx4QTDigLonXSBmb3IgRnJlbmNoIChpbmNsdWRpbmcgbmJzcCkuXG4gICAgcXVvdGVzOiAnXFx1MjAxY1xcdTIwMWRcXHUyMDE4XFx1MjAxOScsIC8qIOKAnOKAneKAmOKAmSAqL1xuXG4gICAgLy8gSGlnaGxpZ2h0ZXIgZnVuY3Rpb24uIFNob3VsZCByZXR1cm4gZXNjYXBlZCBIVE1MLFxuICAgIC8vIG9yICcnIGlmIHRoZSBzb3VyY2Ugc3RyaW5nIGlzIG5vdCBjaGFuZ2VkIGFuZCBzaG91bGQgYmUgZXNjYXBlZCBleHRlcm5hbHkuXG4gICAgLy8gSWYgcmVzdWx0IHN0YXJ0cyB3aXRoIDxwcmUuLi4gaW50ZXJuYWwgd3JhcHBlciBpcyBza2lwcGVkLlxuICAgIC8vXG4gICAgLy8gZnVuY3Rpb24gKC8qc3RyLCBsYW5nKi8pIHsgcmV0dXJuICcnOyB9XG4gICAgLy9cbiAgICBoaWdobGlnaHQ6IG51bGwsXG5cbiAgICBtYXhOZXN0aW5nOiAgIDIwICAgICAgICAgICAgLy8gSW50ZXJuYWwgcHJvdGVjdGlvbiwgcmVjdXJzaW9uIGxpbWl0XG4gIH0sXG5cbiAgY29tcG9uZW50czoge1xuXG4gICAgY29yZToge1xuICAgICAgcnVsZXM6IFtcbiAgICAgICAgJ25vcm1hbGl6ZScsXG4gICAgICAgICdibG9jaycsXG4gICAgICAgICdpbmxpbmUnXG4gICAgICBdXG4gICAgfSxcblxuICAgIGJsb2NrOiB7XG4gICAgICBydWxlczogW1xuICAgICAgICAnYmxvY2txdW90ZScsXG4gICAgICAgICdjb2RlJyxcbiAgICAgICAgJ2ZlbmNlJyxcbiAgICAgICAgJ2hlYWRpbmcnLFxuICAgICAgICAnaHInLFxuICAgICAgICAnaHRtbF9ibG9jaycsXG4gICAgICAgICdsaGVhZGluZycsXG4gICAgICAgICdsaXN0JyxcbiAgICAgICAgJ3JlZmVyZW5jZScsXG4gICAgICAgICdwYXJhZ3JhcGgnXG4gICAgICBdXG4gICAgfSxcblxuICAgIGlubGluZToge1xuICAgICAgcnVsZXM6IFtcbiAgICAgICAgJ2F1dG9saW5rJyxcbiAgICAgICAgJ2JhY2t0aWNrcycsXG4gICAgICAgICdlbXBoYXNpcycsXG4gICAgICAgICdlbnRpdHknLFxuICAgICAgICAnZXNjYXBlJyxcbiAgICAgICAgJ2h0bWxfaW5saW5lJyxcbiAgICAgICAgJ2ltYWdlJyxcbiAgICAgICAgJ2xpbmsnLFxuICAgICAgICAnbmV3bGluZScsXG4gICAgICAgICd0ZXh0J1xuICAgICAgXSxcbiAgICAgIHJ1bGVzMjogW1xuICAgICAgICAnYmFsYW5jZV9wYWlycycsXG4gICAgICAgICdlbXBoYXNpcycsXG4gICAgICAgICd0ZXh0X2NvbGxhcHNlJ1xuICAgICAgXVxuICAgIH1cbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQTFCQTtBQTRCQTtBQUVBO0FBQ0E7QUFEQTtBQVFBO0FBQ0E7QUFEQTtBQWVBO0FBQ0E7QUFZQTtBQWJBO0FBekJBO0FBN0JBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/presets/commonmark.js\n");
2021
2022/***/ }),
2023
2024/***/ "../../../node_modules/markdown-it/lib/presets/default.js":
2025/*!*******************************************************************************************!*\
2026 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/presets/default.js ***!
2027 \*******************************************************************************************/
2028/*! no static exports found */
2029/***/ (function(module, exports, __webpack_require__) {
2030
2031eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // markdown-it default options\n 'use strict';\n\n module.exports = {\n options: {\n html: false,\n // Enable HTML tags in source\n xhtmlOut: false,\n // Use '/' to close single tags (<br />)\n breaks: false,\n // Convert '\\n' in paragraphs into <br>\n langPrefix: 'language-',\n // CSS language prefix for fenced blocks\n linkify: false,\n // autoconvert URL-like texts to links\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019',\n\n /* “”‘’ */\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with <pre... internal wrapper is skipped.\n //\n // function (/*str, lang*/) { return ''; }\n //\n highlight: null,\n maxNesting: 100 // Internal protection, recursion limit\n\n },\n components: {\n core: {},\n block: {},\n inline: {}\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wcmVzZXRzL2RlZmF1bHQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3ByZXNldHMvZGVmYXVsdC5qcz9jZDAxIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIG1hcmtkb3duLWl0IGRlZmF1bHQgb3B0aW9uc1xuXG4ndXNlIHN0cmljdCc7XG5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG9wdGlvbnM6IHtcbiAgICBodG1sOiAgICAgICAgIGZhbHNlLCAgICAgICAgLy8gRW5hYmxlIEhUTUwgdGFncyBpbiBzb3VyY2VcbiAgICB4aHRtbE91dDogICAgIGZhbHNlLCAgICAgICAgLy8gVXNlICcvJyB0byBjbG9zZSBzaW5nbGUgdGFncyAoPGJyIC8+KVxuICAgIGJyZWFrczogICAgICAgZmFsc2UsICAgICAgICAvLyBDb252ZXJ0ICdcXG4nIGluIHBhcmFncmFwaHMgaW50byA8YnI+XG4gICAgbGFuZ1ByZWZpeDogICAnbGFuZ3VhZ2UtJywgIC8vIENTUyBsYW5ndWFnZSBwcmVmaXggZm9yIGZlbmNlZCBibG9ja3NcbiAgICBsaW5raWZ5OiAgICAgIGZhbHNlLCAgICAgICAgLy8gYXV0b2NvbnZlcnQgVVJMLWxpa2UgdGV4dHMgdG8gbGlua3NcblxuICAgIC8vIEVuYWJsZSBzb21lIGxhbmd1YWdlLW5ldXRyYWwgcmVwbGFjZW1lbnRzICsgcXVvdGVzIGJlYXV0aWZpY2F0aW9uXG4gICAgdHlwb2dyYXBoZXI6ICBmYWxzZSxcblxuICAgIC8vIERvdWJsZSArIHNpbmdsZSBxdW90ZXMgcmVwbGFjZW1lbnQgcGFpcnMsIHdoZW4gdHlwb2dyYXBoZXIgZW5hYmxlZCxcbiAgICAvLyBhbmQgc21hcnRxdW90ZXMgb24uIENvdWxkIGJlIGVpdGhlciBhIFN0cmluZyBvciBhbiBBcnJheS5cbiAgICAvL1xuICAgIC8vIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSAnwqvCu+KAnuKAnCcgZm9yIFJ1c3NpYW4sICfigJ7igJzigJrigJgnIGZvciBHZXJtYW4sXG4gICAgLy8gYW5kIFsnwqtcXHhBMCcsICdcXHhBMMK7JywgJ+KAuVxceEEwJywgJ1xceEEw4oC6J10gZm9yIEZyZW5jaCAoaW5jbHVkaW5nIG5ic3ApLlxuICAgIHF1b3RlczogJ1xcdTIwMWNcXHUyMDFkXFx1MjAxOFxcdTIwMTknLCAvKiDigJzigJ3igJjigJkgKi9cblxuICAgIC8vIEhpZ2hsaWdodGVyIGZ1bmN0aW9uLiBTaG91bGQgcmV0dXJuIGVzY2FwZWQgSFRNTCxcbiAgICAvLyBvciAnJyBpZiB0aGUgc291cmNlIHN0cmluZyBpcyBub3QgY2hhbmdlZCBhbmQgc2hvdWxkIGJlIGVzY2FwZWQgZXh0ZXJuYWx5LlxuICAgIC8vIElmIHJlc3VsdCBzdGFydHMgd2l0aCA8cHJlLi4uIGludGVybmFsIHdyYXBwZXIgaXMgc2tpcHBlZC5cbiAgICAvL1xuICAgIC8vIGZ1bmN0aW9uICgvKnN0ciwgbGFuZyovKSB7IHJldHVybiAnJzsgfVxuICAgIC8vXG4gICAgaGlnaGxpZ2h0OiBudWxsLFxuXG4gICAgbWF4TmVzdGluZzogICAxMDAgICAgICAgICAgICAvLyBJbnRlcm5hbCBwcm90ZWN0aW9uLCByZWN1cnNpb24gbGltaXRcbiAgfSxcblxuICBjb21wb25lbnRzOiB7XG5cbiAgICBjb3JlOiB7fSxcbiAgICBibG9jazoge30sXG4gICAgaW5saW5lOiB7fVxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBMUJBO0FBNEJBO0FBRUE7QUFDQTtBQUNBO0FBSkE7QUE3QkE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/presets/default.js\n");
2032
2033/***/ }),
2034
2035/***/ "../../../node_modules/markdown-it/lib/presets/zero.js":
2036/*!****************************************************************************************!*\
2037 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/presets/zero.js ***!
2038 \****************************************************************************************/
2039/*! no static exports found */
2040/***/ (function(module, exports, __webpack_require__) {
2041
2042eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // \"Zero\" preset, with nothing enabled. Useful for manual configuring of simple\n // modes. For example, to parse bold/italic only.\n 'use strict';\n\n module.exports = {\n options: {\n html: false,\n // Enable HTML tags in source\n xhtmlOut: false,\n // Use '/' to close single tags (<br />)\n breaks: false,\n // Convert '\\n' in paragraphs into <br>\n langPrefix: 'language-',\n // CSS language prefix for fenced blocks\n linkify: false,\n // autoconvert URL-like texts to links\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019',\n\n /* “”‘’ */\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with <pre... internal wrapper is skipped.\n //\n // function (/*str, lang*/) { return ''; }\n //\n highlight: null,\n maxNesting: 20 // Internal protection, recursion limit\n\n },\n components: {\n core: {\n rules: ['normalize', 'block', 'inline']\n },\n block: {\n rules: ['paragraph']\n },\n inline: {\n rules: ['text'],\n rules2: ['balance_pairs', 'text_collapse']\n }\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wcmVzZXRzL3plcm8uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3ByZXNldHMvemVyby5qcz8zYmVhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFwiWmVyb1wiIHByZXNldCwgd2l0aCBub3RoaW5nIGVuYWJsZWQuIFVzZWZ1bCBmb3IgbWFudWFsIGNvbmZpZ3VyaW5nIG9mIHNpbXBsZVxuLy8gbW9kZXMuIEZvciBleGFtcGxlLCB0byBwYXJzZSBib2xkL2l0YWxpYyBvbmx5LlxuXG4ndXNlIHN0cmljdCc7XG5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG9wdGlvbnM6IHtcbiAgICBodG1sOiAgICAgICAgIGZhbHNlLCAgICAgICAgLy8gRW5hYmxlIEhUTUwgdGFncyBpbiBzb3VyY2VcbiAgICB4aHRtbE91dDogICAgIGZhbHNlLCAgICAgICAgLy8gVXNlICcvJyB0byBjbG9zZSBzaW5nbGUgdGFncyAoPGJyIC8+KVxuICAgIGJyZWFrczogICAgICAgZmFsc2UsICAgICAgICAvLyBDb252ZXJ0ICdcXG4nIGluIHBhcmFncmFwaHMgaW50byA8YnI+XG4gICAgbGFuZ1ByZWZpeDogICAnbGFuZ3VhZ2UtJywgIC8vIENTUyBsYW5ndWFnZSBwcmVmaXggZm9yIGZlbmNlZCBibG9ja3NcbiAgICBsaW5raWZ5OiAgICAgIGZhbHNlLCAgICAgICAgLy8gYXV0b2NvbnZlcnQgVVJMLWxpa2UgdGV4dHMgdG8gbGlua3NcblxuICAgIC8vIEVuYWJsZSBzb21lIGxhbmd1YWdlLW5ldXRyYWwgcmVwbGFjZW1lbnRzICsgcXVvdGVzIGJlYXV0aWZpY2F0aW9uXG4gICAgdHlwb2dyYXBoZXI6ICBmYWxzZSxcblxuICAgIC8vIERvdWJsZSArIHNpbmdsZSBxdW90ZXMgcmVwbGFjZW1lbnQgcGFpcnMsIHdoZW4gdHlwb2dyYXBoZXIgZW5hYmxlZCxcbiAgICAvLyBhbmQgc21hcnRxdW90ZXMgb24uIENvdWxkIGJlIGVpdGhlciBhIFN0cmluZyBvciBhbiBBcnJheS5cbiAgICAvL1xuICAgIC8vIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSAnwqvCu+KAnuKAnCcgZm9yIFJ1c3NpYW4sICfigJ7igJzigJrigJgnIGZvciBHZXJtYW4sXG4gICAgLy8gYW5kIFsnwqtcXHhBMCcsICdcXHhBMMK7JywgJ+KAuVxceEEwJywgJ1xceEEw4oC6J10gZm9yIEZyZW5jaCAoaW5jbHVkaW5nIG5ic3ApLlxuICAgIHF1b3RlczogJ1xcdTIwMWNcXHUyMDFkXFx1MjAxOFxcdTIwMTknLCAvKiDigJzigJ3igJjigJkgKi9cblxuICAgIC8vIEhpZ2hsaWdodGVyIGZ1bmN0aW9uLiBTaG91bGQgcmV0dXJuIGVzY2FwZWQgSFRNTCxcbiAgICAvLyBvciAnJyBpZiB0aGUgc291cmNlIHN0cmluZyBpcyBub3QgY2hhbmdlZCBhbmQgc2hvdWxkIGJlIGVzY2FwZWQgZXh0ZXJuYWx5LlxuICAgIC8vIElmIHJlc3VsdCBzdGFydHMgd2l0aCA8cHJlLi4uIGludGVybmFsIHdyYXBwZXIgaXMgc2tpcHBlZC5cbiAgICAvL1xuICAgIC8vIGZ1bmN0aW9uICgvKnN0ciwgbGFuZyovKSB7IHJldHVybiAnJzsgfVxuICAgIC8vXG4gICAgaGlnaGxpZ2h0OiBudWxsLFxuXG4gICAgbWF4TmVzdGluZzogICAyMCAgICAgICAgICAgIC8vIEludGVybmFsIHByb3RlY3Rpb24sIHJlY3Vyc2lvbiBsaW1pdFxuICB9LFxuXG4gIGNvbXBvbmVudHM6IHtcblxuICAgIGNvcmU6IHtcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgICdub3JtYWxpemUnLFxuICAgICAgICAnYmxvY2snLFxuICAgICAgICAnaW5saW5lJ1xuICAgICAgXVxuICAgIH0sXG5cbiAgICBibG9jazoge1xuICAgICAgcnVsZXM6IFtcbiAgICAgICAgJ3BhcmFncmFwaCdcbiAgICAgIF1cbiAgICB9LFxuXG4gICAgaW5saW5lOiB7XG4gICAgICBydWxlczogW1xuICAgICAgICAndGV4dCdcbiAgICAgIF0sXG4gICAgICBydWxlczI6IFtcbiAgICAgICAgJ2JhbGFuY2VfcGFpcnMnLFxuICAgICAgICAndGV4dF9jb2xsYXBzZSdcbiAgICAgIF1cbiAgICB9XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQTFCQTtBQTRCQTtBQUVBO0FBQ0E7QUFEQTtBQVFBO0FBQ0E7QUFEQTtBQU1BO0FBQ0E7QUFHQTtBQUpBO0FBaEJBO0FBN0JBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/presets/zero.js\n");
2043
2044/***/ }),
2045
2046/***/ "../../../node_modules/markdown-it/lib/renderer.js":
2047/*!************************************************************************************!*\
2048 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/renderer.js ***!
2049 \************************************************************************************/
2050/*! no static exports found */
2051/***/ (function(module, exports, __webpack_require__) {
2052
2053eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n /**\n * class Renderer\n *\n * Generates HTML from parsed token stream. Each instance has independent\n * copy of rules. Those can be rewritten with ease. Also, you can add new\n * rules if you create plugin and adds new token types.\n **/\n 'use strict';\n\n var assign = __webpack_require__(/*! ./common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").assign;\n\n var unescapeAll = __webpack_require__(/*! ./common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").unescapeAll;\n\n var escapeHtml = __webpack_require__(/*! ./common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").escapeHtml; ////////////////////////////////////////////////////////////////////////////////\n\n\n var default_rules = {};\n\n default_rules.code_inline = function (tokens, idx, options, env, slf) {\n var token = tokens[idx];\n return '<code' + slf.renderAttrs(token) + '>' + escapeHtml(tokens[idx].content) + '</code>';\n };\n\n default_rules.code_block = function (tokens, idx, options, env, slf) {\n var token = tokens[idx];\n return '<pre' + slf.renderAttrs(token) + '><code>' + escapeHtml(tokens[idx].content) + '</code></pre>\\n';\n };\n\n default_rules.fence = function (tokens, idx, options, env, slf) {\n var token = tokens[idx],\n info = token.info ? unescapeAll(token.info).trim() : '',\n langName = '',\n highlighted,\n i,\n tmpAttrs,\n tmpToken;\n\n if (info) {\n langName = info.split(/\\s+/g)[0];\n }\n\n if (options.highlight) {\n highlighted = options.highlight(token.content, langName) || escapeHtml(token.content);\n } else {\n highlighted = escapeHtml(token.content);\n }\n\n if (highlighted.indexOf('<pre') === 0) {\n return highlighted + '\\n';\n } // If language exists, inject class gently, without modifying original token.\n // May be, one day we will add .clone() for token and simplify this part, but\n // now we prefer to keep things local.\n\n\n if (info) {\n i = token.attrIndex('class');\n tmpAttrs = token.attrs ? token.attrs.slice() : [];\n\n if (i < 0) {\n tmpAttrs.push(['class', options.langPrefix + langName]);\n } else {\n tmpAttrs[i][1] += ' ' + options.langPrefix + langName;\n } // Fake token just to render attributes\n\n\n tmpToken = {\n attrs: tmpAttrs\n };\n return '<pre><code' + slf.renderAttrs(tmpToken) + '>' + highlighted + '</code></pre>\\n';\n }\n\n return '<pre><code' + slf.renderAttrs(token) + '>' + highlighted + '</code></pre>\\n';\n };\n\n default_rules.image = function (tokens, idx, options, env, slf) {\n var token = tokens[idx]; // \"alt\" attr MUST be set, even if empty. Because it's mandatory and\n // should be placed on proper position for tests.\n //\n // Replace content with actual value\n\n token.attrs[token.attrIndex('alt')][1] = slf.renderInlineAsText(token.children, options, env);\n return slf.renderToken(tokens, idx, options);\n };\n\n default_rules.hardbreak = function (tokens, idx, options\n /*, env */\n ) {\n return options.xhtmlOut ? '<br />\\n' : '<br>\\n';\n };\n\n default_rules.softbreak = function (tokens, idx, options\n /*, env */\n ) {\n return options.breaks ? options.xhtmlOut ? '<br />\\n' : '<br>\\n' : '\\n';\n };\n\n default_rules.text = function (tokens, idx\n /*, options, env */\n ) {\n return escapeHtml(tokens[idx].content);\n };\n\n default_rules.html_block = function (tokens, idx\n /*, options, env */\n ) {\n return tokens[idx].content;\n };\n\n default_rules.html_inline = function (tokens, idx\n /*, options, env */\n ) {\n return tokens[idx].content;\n };\n /**\n * new Renderer()\n *\n * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults.\n **/\n\n\n function Renderer() {\n /**\n * Renderer#rules -> Object\n *\n * Contains render rules for tokens. Can be updated and extended.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.renderer.rules.strong_open = function () { return '<b>'; };\n * md.renderer.rules.strong_close = function () { return '</b>'; };\n *\n * var result = md.renderInline(...);\n * ```\n *\n * Each rule is called as independent static function with fixed signature:\n *\n * ```javascript\n * function my_token_render(tokens, idx, options, env, renderer) {\n * // ...\n * return renderedHTML;\n * }\n * ```\n *\n * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js)\n * for more details and examples.\n **/\n this.rules = assign({}, default_rules);\n }\n /**\n * Renderer.renderAttrs(token) -> String\n *\n * Render token attributes to string.\n **/\n\n\n Renderer.prototype.renderAttrs = function renderAttrs(token) {\n var i, l, result;\n\n if (!token.attrs) {\n return '';\n }\n\n result = '';\n\n for (i = 0, l = token.attrs.length; i < l; i++) {\n result += ' ' + escapeHtml(token.attrs[i][0]) + '=\"' + escapeHtml(token.attrs[i][1]) + '\"';\n }\n\n return result;\n };\n /**\n * Renderer.renderToken(tokens, idx, options) -> String\n * - tokens (Array): list of tokens\n * - idx (Numbed): token index to render\n * - options (Object): params of parser instance\n *\n * Default token renderer. Can be overriden by custom function\n * in [[Renderer#rules]].\n **/\n\n\n Renderer.prototype.renderToken = function renderToken(tokens, idx, options) {\n var nextToken,\n result = '',\n needLf = false,\n token = tokens[idx]; // Tight list paragraphs\n\n if (token.hidden) {\n return '';\n } // Insert a newline between hidden paragraph and subsequent opening\n // block-level tag.\n //\n // For example, here we should insert a newline before blockquote:\n // - a\n // >\n //\n\n\n if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n result += '\\n';\n } // Add token name, e.g. `<img`\n\n\n result += (token.nesting === -1 ? '</' : '<') + token.tag; // Encode attributes, e.g. `<img src=\"foo\"`\n\n result += this.renderAttrs(token); // Add a slash for self-closing tags, e.g. `<img src=\"foo\" /`\n\n if (token.nesting === 0 && options.xhtmlOut) {\n result += ' /';\n } // Check if we need to add a newline after this tag\n\n\n if (token.block) {\n needLf = true;\n\n if (token.nesting === 1) {\n if (idx + 1 < tokens.length) {\n nextToken = tokens[idx + 1];\n\n if (nextToken.type === 'inline' || nextToken.hidden) {\n // Block-level tag containing an inline tag.\n //\n needLf = false;\n } else if (nextToken.nesting === -1 && nextToken.tag === token.tag) {\n // Opening tag + closing tag of the same type. E.g. `<li></li>`.\n //\n needLf = false;\n }\n }\n }\n }\n\n result += needLf ? '>\\n' : '>';\n return result;\n };\n /**\n * Renderer.renderInline(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * The same as [[Renderer.render]], but for single token of `inline` type.\n **/\n\n\n Renderer.prototype.renderInline = function (tokens, options, env) {\n var type,\n result = '',\n rules = this.rules;\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n type = tokens[i].type;\n\n if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options);\n }\n }\n\n return result;\n };\n /** internal\n * Renderer.renderInlineAsText(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Special kludge for image `alt` attributes to conform CommonMark spec.\n * Don't try to use it! Spec requires to show `alt` content with stripped markup,\n * instead of simple escaping.\n **/\n\n\n Renderer.prototype.renderInlineAsText = function (tokens, options, env) {\n var result = '';\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n if (tokens[i].type === 'text') {\n result += tokens[i].content;\n } else if (tokens[i].type === 'image') {\n result += this.renderInlineAsText(tokens[i].children, options, env);\n }\n }\n\n return result;\n };\n /**\n * Renderer.render(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Takes token stream and generates HTML. Probably, you will never need to call\n * this method directly.\n **/\n\n\n Renderer.prototype.render = function (tokens, options, env) {\n var i,\n len,\n type,\n result = '',\n rules = this.rules;\n\n for (i = 0, len = tokens.length; i < len; i++) {\n type = tokens[i].type;\n\n if (type === 'inline') {\n result += this.renderInline(tokens[i].children, options, env);\n } else if (typeof rules[type] !== 'undefined') {\n result += rules[tokens[i].type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options, env);\n }\n }\n\n return result;\n };\n\n module.exports = Renderer;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9yZW5kZXJlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcmVuZGVyZXIuanM/NzgzYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGNsYXNzIFJlbmRlcmVyXG4gKlxuICogR2VuZXJhdGVzIEhUTUwgZnJvbSBwYXJzZWQgdG9rZW4gc3RyZWFtLiBFYWNoIGluc3RhbmNlIGhhcyBpbmRlcGVuZGVudFxuICogY29weSBvZiBydWxlcy4gVGhvc2UgY2FuIGJlIHJld3JpdHRlbiB3aXRoIGVhc2UuIEFsc28sIHlvdSBjYW4gYWRkIG5ld1xuICogcnVsZXMgaWYgeW91IGNyZWF0ZSBwbHVnaW4gYW5kIGFkZHMgbmV3IHRva2VuIHR5cGVzLlxuICoqL1xuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBhc3NpZ24gICAgICAgICAgPSByZXF1aXJlKCcuL2NvbW1vbi91dGlscycpLmFzc2lnbjtcbnZhciB1bmVzY2FwZUFsbCAgICAgPSByZXF1aXJlKCcuL2NvbW1vbi91dGlscycpLnVuZXNjYXBlQWxsO1xudmFyIGVzY2FwZUh0bWwgICAgICA9IHJlcXVpcmUoJy4vY29tbW9uL3V0aWxzJykuZXNjYXBlSHRtbDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG52YXIgZGVmYXVsdF9ydWxlcyA9IHt9O1xuXG5cbmRlZmF1bHRfcnVsZXMuY29kZV9pbmxpbmUgPSBmdW5jdGlvbiAodG9rZW5zLCBpZHgsIG9wdGlvbnMsIGVudiwgc2xmKSB7XG4gIHZhciB0b2tlbiA9IHRva2Vuc1tpZHhdO1xuXG4gIHJldHVybiAgJzxjb2RlJyArIHNsZi5yZW5kZXJBdHRycyh0b2tlbikgKyAnPicgK1xuICAgICAgICAgIGVzY2FwZUh0bWwodG9rZW5zW2lkeF0uY29udGVudCkgK1xuICAgICAgICAgICc8L2NvZGU+Jztcbn07XG5cblxuZGVmYXVsdF9ydWxlcy5jb2RlX2Jsb2NrID0gZnVuY3Rpb24gKHRva2VucywgaWR4LCBvcHRpb25zLCBlbnYsIHNsZikge1xuICB2YXIgdG9rZW4gPSB0b2tlbnNbaWR4XTtcblxuICByZXR1cm4gICc8cHJlJyArIHNsZi5yZW5kZXJBdHRycyh0b2tlbikgKyAnPjxjb2RlPicgK1xuICAgICAgICAgIGVzY2FwZUh0bWwodG9rZW5zW2lkeF0uY29udGVudCkgK1xuICAgICAgICAgICc8L2NvZGU+PC9wcmU+XFxuJztcbn07XG5cblxuZGVmYXVsdF9ydWxlcy5mZW5jZSA9IGZ1bmN0aW9uICh0b2tlbnMsIGlkeCwgb3B0aW9ucywgZW52LCBzbGYpIHtcbiAgdmFyIHRva2VuID0gdG9rZW5zW2lkeF0sXG4gICAgICBpbmZvID0gdG9rZW4uaW5mbyA/IHVuZXNjYXBlQWxsKHRva2VuLmluZm8pLnRyaW0oKSA6ICcnLFxuICAgICAgbGFuZ05hbWUgPSAnJyxcbiAgICAgIGhpZ2hsaWdodGVkLCBpLCB0bXBBdHRycywgdG1wVG9rZW47XG5cbiAgaWYgKGluZm8pIHtcbiAgICBsYW5nTmFtZSA9IGluZm8uc3BsaXQoL1xccysvZylbMF07XG4gIH1cblxuICBpZiAob3B0aW9ucy5oaWdobGlnaHQpIHtcbiAgICBoaWdobGlnaHRlZCA9IG9wdGlvbnMuaGlnaGxpZ2h0KHRva2VuLmNvbnRlbnQsIGxhbmdOYW1lKSB8fCBlc2NhcGVIdG1sKHRva2VuLmNvbnRlbnQpO1xuICB9IGVsc2Uge1xuICAgIGhpZ2hsaWdodGVkID0gZXNjYXBlSHRtbCh0b2tlbi5jb250ZW50KTtcbiAgfVxuXG4gIGlmIChoaWdobGlnaHRlZC5pbmRleE9mKCc8cHJlJykgPT09IDApIHtcbiAgICByZXR1cm4gaGlnaGxpZ2h0ZWQgKyAnXFxuJztcbiAgfVxuXG4gIC8vIElmIGxhbmd1YWdlIGV4aXN0cywgaW5qZWN0IGNsYXNzIGdlbnRseSwgd2l0aG91dCBtb2RpZnlpbmcgb3JpZ2luYWwgdG9rZW4uXG4gIC8vIE1heSBiZSwgb25lIGRheSB3ZSB3aWxsIGFkZCAuY2xvbmUoKSBmb3IgdG9rZW4gYW5kIHNpbXBsaWZ5IHRoaXMgcGFydCwgYnV0XG4gIC8vIG5vdyB3ZSBwcmVmZXIgdG8ga2VlcCB0aGluZ3MgbG9jYWwuXG4gIGlmIChpbmZvKSB7XG4gICAgaSAgICAgICAgPSB0b2tlbi5hdHRySW5kZXgoJ2NsYXNzJyk7XG4gICAgdG1wQXR0cnMgPSB0b2tlbi5hdHRycyA/IHRva2VuLmF0dHJzLnNsaWNlKCkgOiBbXTtcblxuICAgIGlmIChpIDwgMCkge1xuICAgICAgdG1wQXR0cnMucHVzaChbICdjbGFzcycsIG9wdGlvbnMubGFuZ1ByZWZpeCArIGxhbmdOYW1lIF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0bXBBdHRyc1tpXVsxXSArPSAnICcgKyBvcHRpb25zLmxhbmdQcmVmaXggKyBsYW5nTmFtZTtcbiAgICB9XG5cbiAgICAvLyBGYWtlIHRva2VuIGp1c3QgdG8gcmVuZGVyIGF0dHJpYnV0ZXNcbiAgICB0bXBUb2tlbiA9IHtcbiAgICAgIGF0dHJzOiB0bXBBdHRyc1xuICAgIH07XG5cbiAgICByZXR1cm4gICc8cHJlPjxjb2RlJyArIHNsZi5yZW5kZXJBdHRycyh0bXBUb2tlbikgKyAnPidcbiAgICAgICAgICArIGhpZ2hsaWdodGVkXG4gICAgICAgICAgKyAnPC9jb2RlPjwvcHJlPlxcbic7XG4gIH1cblxuXG4gIHJldHVybiAgJzxwcmU+PGNvZGUnICsgc2xmLnJlbmRlckF0dHJzKHRva2VuKSArICc+J1xuICAgICAgICArIGhpZ2hsaWdodGVkXG4gICAgICAgICsgJzwvY29kZT48L3ByZT5cXG4nO1xufTtcblxuXG5kZWZhdWx0X3J1bGVzLmltYWdlID0gZnVuY3Rpb24gKHRva2VucywgaWR4LCBvcHRpb25zLCBlbnYsIHNsZikge1xuICB2YXIgdG9rZW4gPSB0b2tlbnNbaWR4XTtcblxuICAvLyBcImFsdFwiIGF0dHIgTVVTVCBiZSBzZXQsIGV2ZW4gaWYgZW1wdHkuIEJlY2F1c2UgaXQncyBtYW5kYXRvcnkgYW5kXG4gIC8vIHNob3VsZCBiZSBwbGFjZWQgb24gcHJvcGVyIHBvc2l0aW9uIGZvciB0ZXN0cy5cbiAgLy9cbiAgLy8gUmVwbGFjZSBjb250ZW50IHdpdGggYWN0dWFsIHZhbHVlXG5cbiAgdG9rZW4uYXR0cnNbdG9rZW4uYXR0ckluZGV4KCdhbHQnKV1bMV0gPVxuICAgIHNsZi5yZW5kZXJJbmxpbmVBc1RleHQodG9rZW4uY2hpbGRyZW4sIG9wdGlvbnMsIGVudik7XG5cbiAgcmV0dXJuIHNsZi5yZW5kZXJUb2tlbih0b2tlbnMsIGlkeCwgb3B0aW9ucyk7XG59O1xuXG5cbmRlZmF1bHRfcnVsZXMuaGFyZGJyZWFrID0gZnVuY3Rpb24gKHRva2VucywgaWR4LCBvcHRpb25zIC8qLCBlbnYgKi8pIHtcbiAgcmV0dXJuIG9wdGlvbnMueGh0bWxPdXQgPyAnPGJyIC8+XFxuJyA6ICc8YnI+XFxuJztcbn07XG5kZWZhdWx0X3J1bGVzLnNvZnRicmVhayA9IGZ1bmN0aW9uICh0b2tlbnMsIGlkeCwgb3B0aW9ucyAvKiwgZW52ICovKSB7XG4gIHJldHVybiBvcHRpb25zLmJyZWFrcyA/IChvcHRpb25zLnhodG1sT3V0ID8gJzxiciAvPlxcbicgOiAnPGJyPlxcbicpIDogJ1xcbic7XG59O1xuXG5cbmRlZmF1bHRfcnVsZXMudGV4dCA9IGZ1bmN0aW9uICh0b2tlbnMsIGlkeCAvKiwgb3B0aW9ucywgZW52ICovKSB7XG4gIHJldHVybiBlc2NhcGVIdG1sKHRva2Vuc1tpZHhdLmNvbnRlbnQpO1xufTtcblxuXG5kZWZhdWx0X3J1bGVzLmh0bWxfYmxvY2sgPSBmdW5jdGlvbiAodG9rZW5zLCBpZHggLyosIG9wdGlvbnMsIGVudiAqLykge1xuICByZXR1cm4gdG9rZW5zW2lkeF0uY29udGVudDtcbn07XG5kZWZhdWx0X3J1bGVzLmh0bWxfaW5saW5lID0gZnVuY3Rpb24gKHRva2VucywgaWR4IC8qLCBvcHRpb25zLCBlbnYgKi8pIHtcbiAgcmV0dXJuIHRva2Vuc1tpZHhdLmNvbnRlbnQ7XG59O1xuXG5cbi8qKlxuICogbmV3IFJlbmRlcmVyKClcbiAqXG4gKiBDcmVhdGVzIG5ldyBbW1JlbmRlcmVyXV0gaW5zdGFuY2UgYW5kIGZpbGwgW1tSZW5kZXJlciNydWxlc11dIHdpdGggZGVmYXVsdHMuXG4gKiovXG5mdW5jdGlvbiBSZW5kZXJlcigpIHtcblxuICAvKipcbiAgICogUmVuZGVyZXIjcnVsZXMgLT4gT2JqZWN0XG4gICAqXG4gICAqIENvbnRhaW5zIHJlbmRlciBydWxlcyBmb3IgdG9rZW5zLiBDYW4gYmUgdXBkYXRlZCBhbmQgZXh0ZW5kZWQuXG4gICAqXG4gICAqICMjIyMjIEV4YW1wbGVcbiAgICpcbiAgICogYGBgamF2YXNjcmlwdFxuICAgKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKCk7XG4gICAqXG4gICAqIG1kLnJlbmRlcmVyLnJ1bGVzLnN0cm9uZ19vcGVuICA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICc8Yj4nOyB9O1xuICAgKiBtZC5yZW5kZXJlci5ydWxlcy5zdHJvbmdfY2xvc2UgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnPC9iPic7IH07XG4gICAqXG4gICAqIHZhciByZXN1bHQgPSBtZC5yZW5kZXJJbmxpbmUoLi4uKTtcbiAgICogYGBgXG4gICAqXG4gICAqIEVhY2ggcnVsZSBpcyBjYWxsZWQgYXMgaW5kZXBlbmRlbnQgc3RhdGljIGZ1bmN0aW9uIHdpdGggZml4ZWQgc2lnbmF0dXJlOlxuICAgKlxuICAgKiBgYGBqYXZhc2NyaXB0XG4gICAqIGZ1bmN0aW9uIG15X3Rva2VuX3JlbmRlcih0b2tlbnMsIGlkeCwgb3B0aW9ucywgZW52LCByZW5kZXJlcikge1xuICAgKiAgIC8vIC4uLlxuICAgKiAgIHJldHVybiByZW5kZXJlZEhUTUw7XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIFNlZSBbc291cmNlIGNvZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9tYXJrZG93bi1pdC9ibG9iL21hc3Rlci9saWIvcmVuZGVyZXIuanMpXG4gICAqIGZvciBtb3JlIGRldGFpbHMgYW5kIGV4YW1wbGVzLlxuICAgKiovXG4gIHRoaXMucnVsZXMgPSBhc3NpZ24oe30sIGRlZmF1bHRfcnVsZXMpO1xufVxuXG5cbi8qKlxuICogUmVuZGVyZXIucmVuZGVyQXR0cnModG9rZW4pIC0+IFN0cmluZ1xuICpcbiAqIFJlbmRlciB0b2tlbiBhdHRyaWJ1dGVzIHRvIHN0cmluZy5cbiAqKi9cblJlbmRlcmVyLnByb3RvdHlwZS5yZW5kZXJBdHRycyA9IGZ1bmN0aW9uIHJlbmRlckF0dHJzKHRva2VuKSB7XG4gIHZhciBpLCBsLCByZXN1bHQ7XG5cbiAgaWYgKCF0b2tlbi5hdHRycykgeyByZXR1cm4gJyc7IH1cblxuICByZXN1bHQgPSAnJztcblxuICBmb3IgKGkgPSAwLCBsID0gdG9rZW4uYXR0cnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgcmVzdWx0ICs9ICcgJyArIGVzY2FwZUh0bWwodG9rZW4uYXR0cnNbaV1bMF0pICsgJz1cIicgKyBlc2NhcGVIdG1sKHRva2VuLmF0dHJzW2ldWzFdKSArICdcIic7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuXG4vKipcbiAqIFJlbmRlcmVyLnJlbmRlclRva2VuKHRva2VucywgaWR4LCBvcHRpb25zKSAtPiBTdHJpbmdcbiAqIC0gdG9rZW5zIChBcnJheSk6IGxpc3Qgb2YgdG9rZW5zXG4gKiAtIGlkeCAoTnVtYmVkKTogdG9rZW4gaW5kZXggdG8gcmVuZGVyXG4gKiAtIG9wdGlvbnMgKE9iamVjdCk6IHBhcmFtcyBvZiBwYXJzZXIgaW5zdGFuY2VcbiAqXG4gKiBEZWZhdWx0IHRva2VuIHJlbmRlcmVyLiBDYW4gYmUgb3ZlcnJpZGVuIGJ5IGN1c3RvbSBmdW5jdGlvblxuICogaW4gW1tSZW5kZXJlciNydWxlc11dLlxuICoqL1xuUmVuZGVyZXIucHJvdG90eXBlLnJlbmRlclRva2VuID0gZnVuY3Rpb24gcmVuZGVyVG9rZW4odG9rZW5zLCBpZHgsIG9wdGlvbnMpIHtcbiAgdmFyIG5leHRUb2tlbixcbiAgICAgIHJlc3VsdCA9ICcnLFxuICAgICAgbmVlZExmID0gZmFsc2UsXG4gICAgICB0b2tlbiA9IHRva2Vuc1tpZHhdO1xuXG4gIC8vIFRpZ2h0IGxpc3QgcGFyYWdyYXBoc1xuICBpZiAodG9rZW4uaGlkZGVuKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLy8gSW5zZXJ0IGEgbmV3bGluZSBiZXR3ZWVuIGhpZGRlbiBwYXJhZ3JhcGggYW5kIHN1YnNlcXVlbnQgb3BlbmluZ1xuICAvLyBibG9jay1sZXZlbCB0YWcuXG4gIC8vXG4gIC8vIEZvciBleGFtcGxlLCBoZXJlIHdlIHNob3VsZCBpbnNlcnQgYSBuZXdsaW5lIGJlZm9yZSBibG9ja3F1b3RlOlxuICAvLyAgLSBhXG4gIC8vICAgID5cbiAgLy9cbiAgaWYgKHRva2VuLmJsb2NrICYmIHRva2VuLm5lc3RpbmcgIT09IC0xICYmIGlkeCAmJiB0b2tlbnNbaWR4IC0gMV0uaGlkZGVuKSB7XG4gICAgcmVzdWx0ICs9ICdcXG4nO1xuICB9XG5cbiAgLy8gQWRkIHRva2VuIG5hbWUsIGUuZy4gYDxpbWdgXG4gIHJlc3VsdCArPSAodG9rZW4ubmVzdGluZyA9PT0gLTEgPyAnPC8nIDogJzwnKSArIHRva2VuLnRhZztcblxuICAvLyBFbmNvZGUgYXR0cmlidXRlcywgZS5nLiBgPGltZyBzcmM9XCJmb29cImBcbiAgcmVzdWx0ICs9IHRoaXMucmVuZGVyQXR0cnModG9rZW4pO1xuXG4gIC8vIEFkZCBhIHNsYXNoIGZvciBzZWxmLWNsb3NpbmcgdGFncywgZS5nLiBgPGltZyBzcmM9XCJmb29cIiAvYFxuICBpZiAodG9rZW4ubmVzdGluZyA9PT0gMCAmJiBvcHRpb25zLnhodG1sT3V0KSB7XG4gICAgcmVzdWx0ICs9ICcgLyc7XG4gIH1cblxuICAvLyBDaGVjayBpZiB3ZSBuZWVkIHRvIGFkZCBhIG5ld2xpbmUgYWZ0ZXIgdGhpcyB0YWdcbiAgaWYgKHRva2VuLmJsb2NrKSB7XG4gICAgbmVlZExmID0gdHJ1ZTtcblxuICAgIGlmICh0b2tlbi5uZXN0aW5nID09PSAxKSB7XG4gICAgICBpZiAoaWR4ICsgMSA8IHRva2Vucy5sZW5ndGgpIHtcbiAgICAgICAgbmV4dFRva2VuID0gdG9rZW5zW2lkeCArIDFdO1xuXG4gICAgICAgIGlmIChuZXh0VG9rZW4udHlwZSA9PT0gJ2lubGluZScgfHwgbmV4dFRva2VuLmhpZGRlbikge1xuICAgICAgICAgIC8vIEJsb2NrLWxldmVsIHRhZyBjb250YWluaW5nIGFuIGlubGluZSB0YWcuXG4gICAgICAgICAgLy9cbiAgICAgICAgICBuZWVkTGYgPSBmYWxzZTtcblxuICAgICAgICB9IGVsc2UgaWYgKG5leHRUb2tlbi5uZXN0aW5nID09PSAtMSAmJiBuZXh0VG9rZW4udGFnID09PSB0b2tlbi50YWcpIHtcbiAgICAgICAgICAvLyBPcGVuaW5nIHRhZyArIGNsb3NpbmcgdGFnIG9mIHRoZSBzYW1lIHR5cGUuIEUuZy4gYDxsaT48L2xpPmAuXG4gICAgICAgICAgLy9cbiAgICAgICAgICBuZWVkTGYgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlc3VsdCArPSBuZWVkTGYgPyAnPlxcbicgOiAnPic7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuLyoqXG4gKiBSZW5kZXJlci5yZW5kZXJJbmxpbmUodG9rZW5zLCBvcHRpb25zLCBlbnYpIC0+IFN0cmluZ1xuICogLSB0b2tlbnMgKEFycmF5KTogbGlzdCBvbiBibG9jayB0b2tlbnMgdG8gcmVudGVyXG4gKiAtIG9wdGlvbnMgKE9iamVjdCk6IHBhcmFtcyBvZiBwYXJzZXIgaW5zdGFuY2VcbiAqIC0gZW52IChPYmplY3QpOiBhZGRpdGlvbmFsIGRhdGEgZnJvbSBwYXJzZWQgaW5wdXQgKHJlZmVyZW5jZXMsIGZvciBleGFtcGxlKVxuICpcbiAqIFRoZSBzYW1lIGFzIFtbUmVuZGVyZXIucmVuZGVyXV0sIGJ1dCBmb3Igc2luZ2xlIHRva2VuIG9mIGBpbmxpbmVgIHR5cGUuXG4gKiovXG5SZW5kZXJlci5wcm90b3R5cGUucmVuZGVySW5saW5lID0gZnVuY3Rpb24gKHRva2Vucywgb3B0aW9ucywgZW52KSB7XG4gIHZhciB0eXBlLFxuICAgICAgcmVzdWx0ID0gJycsXG4gICAgICBydWxlcyA9IHRoaXMucnVsZXM7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRva2Vucy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHR5cGUgPSB0b2tlbnNbaV0udHlwZTtcblxuICAgIGlmICh0eXBlb2YgcnVsZXNbdHlwZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXN1bHQgKz0gcnVsZXNbdHlwZV0odG9rZW5zLCBpLCBvcHRpb25zLCBlbnYsIHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgKz0gdGhpcy5yZW5kZXJUb2tlbih0b2tlbnMsIGksIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8qKiBpbnRlcm5hbFxuICogUmVuZGVyZXIucmVuZGVySW5saW5lQXNUZXh0KHRva2Vucywgb3B0aW9ucywgZW52KSAtPiBTdHJpbmdcbiAqIC0gdG9rZW5zIChBcnJheSk6IGxpc3Qgb24gYmxvY2sgdG9rZW5zIHRvIHJlbnRlclxuICogLSBvcHRpb25zIChPYmplY3QpOiBwYXJhbXMgb2YgcGFyc2VyIGluc3RhbmNlXG4gKiAtIGVudiAoT2JqZWN0KTogYWRkaXRpb25hbCBkYXRhIGZyb20gcGFyc2VkIGlucHV0IChyZWZlcmVuY2VzLCBmb3IgZXhhbXBsZSlcbiAqXG4gKiBTcGVjaWFsIGtsdWRnZSBmb3IgaW1hZ2UgYGFsdGAgYXR0cmlidXRlcyB0byBjb25mb3JtIENvbW1vbk1hcmsgc3BlYy5cbiAqIERvbid0IHRyeSB0byB1c2UgaXQhIFNwZWMgcmVxdWlyZXMgdG8gc2hvdyBgYWx0YCBjb250ZW50IHdpdGggc3RyaXBwZWQgbWFya3VwLFxuICogaW5zdGVhZCBvZiBzaW1wbGUgZXNjYXBpbmcuXG4gKiovXG5SZW5kZXJlci5wcm90b3R5cGUucmVuZGVySW5saW5lQXNUZXh0ID0gZnVuY3Rpb24gKHRva2Vucywgb3B0aW9ucywgZW52KSB7XG4gIHZhciByZXN1bHQgPSAnJztcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gdG9rZW5zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKHRva2Vuc1tpXS50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIHJlc3VsdCArPSB0b2tlbnNbaV0uY29udGVudDtcbiAgICB9IGVsc2UgaWYgKHRva2Vuc1tpXS50eXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICByZXN1bHQgKz0gdGhpcy5yZW5kZXJJbmxpbmVBc1RleHQodG9rZW5zW2ldLmNoaWxkcmVuLCBvcHRpb25zLCBlbnYpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8qKlxuICogUmVuZGVyZXIucmVuZGVyKHRva2Vucywgb3B0aW9ucywgZW52KSAtPiBTdHJpbmdcbiAqIC0gdG9rZW5zIChBcnJheSk6IGxpc3Qgb24gYmxvY2sgdG9rZW5zIHRvIHJlbnRlclxuICogLSBvcHRpb25zIChPYmplY3QpOiBwYXJhbXMgb2YgcGFyc2VyIGluc3RhbmNlXG4gKiAtIGVudiAoT2JqZWN0KTogYWRkaXRpb25hbCBkYXRhIGZyb20gcGFyc2VkIGlucHV0IChyZWZlcmVuY2VzLCBmb3IgZXhhbXBsZSlcbiAqXG4gKiBUYWtlcyB0b2tlbiBzdHJlYW0gYW5kIGdlbmVyYXRlcyBIVE1MLiBQcm9iYWJseSwgeW91IHdpbGwgbmV2ZXIgbmVlZCB0byBjYWxsXG4gKiB0aGlzIG1ldGhvZCBkaXJlY3RseS5cbiAqKi9cblJlbmRlcmVyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAodG9rZW5zLCBvcHRpb25zLCBlbnYpIHtcbiAgdmFyIGksIGxlbiwgdHlwZSxcbiAgICAgIHJlc3VsdCA9ICcnLFxuICAgICAgcnVsZXMgPSB0aGlzLnJ1bGVzO1xuXG4gIGZvciAoaSA9IDAsIGxlbiA9IHRva2Vucy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHR5cGUgPSB0b2tlbnNbaV0udHlwZTtcblxuICAgIGlmICh0eXBlID09PSAnaW5saW5lJykge1xuICAgICAgcmVzdWx0ICs9IHRoaXMucmVuZGVySW5saW5lKHRva2Vuc1tpXS5jaGlsZHJlbiwgb3B0aW9ucywgZW52KTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBydWxlc1t0eXBlXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJlc3VsdCArPSBydWxlc1t0b2tlbnNbaV0udHlwZV0odG9rZW5zLCBpLCBvcHRpb25zLCBlbnYsIHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgKz0gdGhpcy5yZW5kZXJUb2tlbih0b2tlbnMsIGksIG9wdGlvbnMsIGVudik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVuZGVyZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUlBO0FBR0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/renderer.js\n");
2054
2055/***/ }),
2056
2057/***/ "../../../node_modules/markdown-it/lib/ruler.js":
2058/*!*********************************************************************************!*\
2059 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/ruler.js ***!
2060 \*********************************************************************************/
2061/*! no static exports found */
2062/***/ (function(module, exports, __webpack_require__) {
2063
2064eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n /**\n * class Ruler\n *\n * Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and\n * [[MarkdownIt#inline]] to manage sequences of functions (rules):\n *\n * - keep rules in defined order\n * - assign the name to each rule\n * - enable/disable rules\n * - add/replace rules\n * - allow assign rules to additional named chains (in the same)\n * - cacheing lists of active rules\n *\n * You will not need use this class directly until write plugins. For simple\n * rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and\n * [[MarkdownIt.use]].\n **/\n 'use strict';\n /**\n * new Ruler()\n **/\n\n function Ruler() {\n // List of added rules. Each element is:\n //\n // {\n // name: XXX,\n // enabled: Boolean,\n // fn: Function(),\n // alt: [ name2, name3 ]\n // }\n //\n this.__rules__ = []; // Cached rule chains.\n //\n // First level - chain name, '' for default.\n // Second level - diginal anchor for fast filtering by charcodes.\n //\n\n this.__cache__ = null;\n } ////////////////////////////////////////////////////////////////////////////////\n // Helper methods, should not be used directly\n // Find rule index by name\n //\n\n\n Ruler.prototype.__find__ = function (name) {\n for (var i = 0; i < this.__rules__.length; i++) {\n if (this.__rules__[i].name === name) {\n return i;\n }\n }\n\n return -1;\n }; // Build rules lookup cache\n //\n\n\n Ruler.prototype.__compile__ = function () {\n var self = this;\n var chains = ['']; // collect unique names\n\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) {\n return;\n }\n\n rule.alt.forEach(function (altName) {\n if (chains.indexOf(altName) < 0) {\n chains.push(altName);\n }\n });\n });\n\n self.__cache__ = {};\n chains.forEach(function (chain) {\n self.__cache__[chain] = [];\n\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) {\n return;\n }\n\n if (chain && rule.alt.indexOf(chain) < 0) {\n return;\n }\n\n self.__cache__[chain].push(rule.fn);\n });\n });\n };\n /**\n * Ruler.at(name, fn [, options])\n * - name (String): rule name to replace.\n * - fn (Function): new rule function.\n * - options (Object): new rule options (not mandatory).\n *\n * Replace rule by name with new function & options. Throws error if name not\n * found.\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * Replace existing typographer replacement rule with new one:\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.at('replacements', function replace(state) {\n * //...\n * });\n * ```\n **/\n\n\n Ruler.prototype.at = function (name, fn, options) {\n var index = this.__find__(name);\n\n var opt = options || {};\n\n if (index === -1) {\n throw new Error('Parser rule not found: ' + name);\n }\n\n this.__rules__[index].fn = fn;\n this.__rules__[index].alt = opt.alt || [];\n this.__cache__ = null;\n };\n /**\n * Ruler.before(beforeName, ruleName, fn [, options])\n * - beforeName (String): new rule will be added before this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain before one with given name. See also\n * [[Ruler.after]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.block.ruler.before('paragraph', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\n\n\n Ruler.prototype.before = function (beforeName, ruleName, fn, options) {\n var index = this.__find__(beforeName);\n\n var opt = options || {};\n\n if (index === -1) {\n throw new Error('Parser rule not found: ' + beforeName);\n }\n\n this.__rules__.splice(index, 0, {\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n };\n /**\n * Ruler.after(afterName, ruleName, fn [, options])\n * - afterName (String): new rule will be added after this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain after one with given name. See also\n * [[Ruler.before]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.inline.ruler.after('text', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\n\n\n Ruler.prototype.after = function (afterName, ruleName, fn, options) {\n var index = this.__find__(afterName);\n\n var opt = options || {};\n\n if (index === -1) {\n throw new Error('Parser rule not found: ' + afterName);\n }\n\n this.__rules__.splice(index + 1, 0, {\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n };\n /**\n * Ruler.push(ruleName, fn [, options])\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Push new rule to the end of chain. See also\n * [[Ruler.before]], [[Ruler.after]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.push('my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\n\n\n Ruler.prototype.push = function (ruleName, fn, options) {\n var opt = options || {};\n\n this.__rules__.push({\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n };\n /**\n * Ruler.enable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to enable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.disable]], [[Ruler.enableOnly]].\n **/\n\n\n Ruler.prototype.enable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n var result = []; // Search by name and enable\n\n list.forEach(function (name) {\n var idx = this.__find__(name);\n\n if (idx < 0) {\n if (ignoreInvalid) {\n return;\n }\n\n throw new Error('Rules manager: invalid rule name ' + name);\n }\n\n this.__rules__[idx].enabled = true;\n result.push(name);\n }, this);\n this.__cache__ = null;\n return result;\n };\n /**\n * Ruler.enableOnly(list [, ignoreInvalid])\n * - list (String|Array): list of rule names to enable (whitelist).\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names, and disable everything else. If any rule name\n * not found - throw Error. Errors can be disabled by second param.\n *\n * See also [[Ruler.disable]], [[Ruler.enable]].\n **/\n\n\n Ruler.prototype.enableOnly = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n this.__rules__.forEach(function (rule) {\n rule.enabled = false;\n });\n\n this.enable(list, ignoreInvalid);\n };\n /**\n * Ruler.disable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Disable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.enable]], [[Ruler.enableOnly]].\n **/\n\n\n Ruler.prototype.disable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n var result = []; // Search by name and disable\n\n list.forEach(function (name) {\n var idx = this.__find__(name);\n\n if (idx < 0) {\n if (ignoreInvalid) {\n return;\n }\n\n throw new Error('Rules manager: invalid rule name ' + name);\n }\n\n this.__rules__[idx].enabled = false;\n result.push(name);\n }, this);\n this.__cache__ = null;\n return result;\n };\n /**\n * Ruler.getRules(chainName) -> Array\n *\n * Return array of active functions (rules) for given chain name. It analyzes\n * rules configuration, compiles caches if not exists and returns result.\n *\n * Default chain name is `''` (empty string). It can't be skipped. That's\n * done intentionally, to keep signature monomorphic for high speed.\n **/\n\n\n Ruler.prototype.getRules = function (chainName) {\n if (this.__cache__ === null) {\n this.__compile__();\n } // Chain can be empty, if rules disabled. But we still have to return Array.\n\n\n return this.__cache__[chainName] || [];\n };\n\n module.exports = Ruler;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXIuanM/MzA3NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGNsYXNzIFJ1bGVyXG4gKlxuICogSGVscGVyIGNsYXNzLCB1c2VkIGJ5IFtbTWFya2Rvd25JdCNjb3JlXV0sIFtbTWFya2Rvd25JdCNibG9ja11dIGFuZFxuICogW1tNYXJrZG93bkl0I2lubGluZV1dIHRvIG1hbmFnZSBzZXF1ZW5jZXMgb2YgZnVuY3Rpb25zIChydWxlcyk6XG4gKlxuICogLSBrZWVwIHJ1bGVzIGluIGRlZmluZWQgb3JkZXJcbiAqIC0gYXNzaWduIHRoZSBuYW1lIHRvIGVhY2ggcnVsZVxuICogLSBlbmFibGUvZGlzYWJsZSBydWxlc1xuICogLSBhZGQvcmVwbGFjZSBydWxlc1xuICogLSBhbGxvdyBhc3NpZ24gcnVsZXMgdG8gYWRkaXRpb25hbCBuYW1lZCBjaGFpbnMgKGluIHRoZSBzYW1lKVxuICogLSBjYWNoZWluZyBsaXN0cyBvZiBhY3RpdmUgcnVsZXNcbiAqXG4gKiBZb3Ugd2lsbCBub3QgbmVlZCB1c2UgdGhpcyBjbGFzcyBkaXJlY3RseSB1bnRpbCB3cml0ZSBwbHVnaW5zLiBGb3Igc2ltcGxlXG4gKiBydWxlcyBjb250cm9sIHVzZSBbW01hcmtkb3duSXQuZGlzYWJsZV1dLCBbW01hcmtkb3duSXQuZW5hYmxlXV0gYW5kXG4gKiBbW01hcmtkb3duSXQudXNlXV0uXG4gKiovXG4ndXNlIHN0cmljdCc7XG5cblxuLyoqXG4gKiBuZXcgUnVsZXIoKVxuICoqL1xuZnVuY3Rpb24gUnVsZXIoKSB7XG4gIC8vIExpc3Qgb2YgYWRkZWQgcnVsZXMuIEVhY2ggZWxlbWVudCBpczpcbiAgLy9cbiAgLy8ge1xuICAvLyAgIG5hbWU6IFhYWCxcbiAgLy8gICBlbmFibGVkOiBCb29sZWFuLFxuICAvLyAgIGZuOiBGdW5jdGlvbigpLFxuICAvLyAgIGFsdDogWyBuYW1lMiwgbmFtZTMgXVxuICAvLyB9XG4gIC8vXG4gIHRoaXMuX19ydWxlc19fID0gW107XG5cbiAgLy8gQ2FjaGVkIHJ1bGUgY2hhaW5zLlxuICAvL1xuICAvLyBGaXJzdCBsZXZlbCAtIGNoYWluIG5hbWUsICcnIGZvciBkZWZhdWx0LlxuICAvLyBTZWNvbmQgbGV2ZWwgLSBkaWdpbmFsIGFuY2hvciBmb3IgZmFzdCBmaWx0ZXJpbmcgYnkgY2hhcmNvZGVzLlxuICAvL1xuICB0aGlzLl9fY2FjaGVfXyA9IG51bGw7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIZWxwZXIgbWV0aG9kcywgc2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5XG5cblxuLy8gRmluZCBydWxlIGluZGV4IGJ5IG5hbWVcbi8vXG5SdWxlci5wcm90b3R5cGUuX19maW5kX18gPSBmdW5jdGlvbiAobmFtZSkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX19ydWxlc19fLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHRoaXMuX19ydWxlc19fW2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59O1xuXG5cbi8vIEJ1aWxkIHJ1bGVzIGxvb2t1cCBjYWNoZVxuLy9cblJ1bGVyLnByb3RvdHlwZS5fX2NvbXBpbGVfXyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgY2hhaW5zID0gWyAnJyBdO1xuXG4gIC8vIGNvbGxlY3QgdW5pcXVlIG5hbWVzXG4gIHNlbGYuX19ydWxlc19fLmZvckVhY2goZnVuY3Rpb24gKHJ1bGUpIHtcbiAgICBpZiAoIXJ1bGUuZW5hYmxlZCkgeyByZXR1cm47IH1cblxuICAgIHJ1bGUuYWx0LmZvckVhY2goZnVuY3Rpb24gKGFsdE5hbWUpIHtcbiAgICAgIGlmIChjaGFpbnMuaW5kZXhPZihhbHROYW1lKSA8IDApIHtcbiAgICAgICAgY2hhaW5zLnB1c2goYWx0TmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHNlbGYuX19jYWNoZV9fID0ge307XG5cbiAgY2hhaW5zLmZvckVhY2goZnVuY3Rpb24gKGNoYWluKSB7XG4gICAgc2VsZi5fX2NhY2hlX19bY2hhaW5dID0gW107XG4gICAgc2VsZi5fX3J1bGVzX18uZm9yRWFjaChmdW5jdGlvbiAocnVsZSkge1xuICAgICAgaWYgKCFydWxlLmVuYWJsZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgIGlmIChjaGFpbiAmJiBydWxlLmFsdC5pbmRleE9mKGNoYWluKSA8IDApIHsgcmV0dXJuOyB9XG5cbiAgICAgIHNlbGYuX19jYWNoZV9fW2NoYWluXS5wdXNoKHJ1bGUuZm4pO1xuICAgIH0pO1xuICB9KTtcbn07XG5cblxuLyoqXG4gKiBSdWxlci5hdChuYW1lLCBmbiBbLCBvcHRpb25zXSlcbiAqIC0gbmFtZSAoU3RyaW5nKTogcnVsZSBuYW1lIHRvIHJlcGxhY2UuXG4gKiAtIGZuIChGdW5jdGlvbik6IG5ldyBydWxlIGZ1bmN0aW9uLlxuICogLSBvcHRpb25zIChPYmplY3QpOiBuZXcgcnVsZSBvcHRpb25zIChub3QgbWFuZGF0b3J5KS5cbiAqXG4gKiBSZXBsYWNlIHJ1bGUgYnkgbmFtZSB3aXRoIG5ldyBmdW5jdGlvbiAmIG9wdGlvbnMuIFRocm93cyBlcnJvciBpZiBuYW1lIG5vdFxuICogZm91bmQuXG4gKlxuICogIyMjIyMgT3B0aW9uczpcbiAqXG4gKiAtIF9fYWx0X18gLSBhcnJheSB3aXRoIG5hbWVzIG9mIFwiYWx0ZXJuYXRlXCIgY2hhaW5zLlxuICpcbiAqICMjIyMjIEV4YW1wbGVcbiAqXG4gKiBSZXBsYWNlIGV4aXN0aW5nIHR5cG9ncmFwaGVyIHJlcGxhY2VtZW50IHJ1bGUgd2l0aCBuZXcgb25lOlxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoKTtcbiAqXG4gKiBtZC5jb3JlLnJ1bGVyLmF0KCdyZXBsYWNlbWVudHMnLCBmdW5jdGlvbiByZXBsYWNlKHN0YXRlKSB7XG4gKiAgIC8vLi4uXG4gKiB9KTtcbiAqIGBgYFxuICoqL1xuUnVsZXIucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24gKG5hbWUsIGZuLCBvcHRpb25zKSB7XG4gIHZhciBpbmRleCA9IHRoaXMuX19maW5kX18obmFtZSk7XG4gIHZhciBvcHQgPSBvcHRpb25zIHx8IHt9O1xuXG4gIGlmIChpbmRleCA9PT0gLTEpIHsgdGhyb3cgbmV3IEVycm9yKCdQYXJzZXIgcnVsZSBub3QgZm91bmQ6ICcgKyBuYW1lKTsgfVxuXG4gIHRoaXMuX19ydWxlc19fW2luZGV4XS5mbiA9IGZuO1xuICB0aGlzLl9fcnVsZXNfX1tpbmRleF0uYWx0ID0gb3B0LmFsdCB8fCBbXTtcbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsO1xufTtcblxuXG4vKipcbiAqIFJ1bGVyLmJlZm9yZShiZWZvcmVOYW1lLCBydWxlTmFtZSwgZm4gWywgb3B0aW9uc10pXG4gKiAtIGJlZm9yZU5hbWUgKFN0cmluZyk6IG5ldyBydWxlIHdpbGwgYmUgYWRkZWQgYmVmb3JlIHRoaXMgb25lLlxuICogLSBydWxlTmFtZSAoU3RyaW5nKTogbmFtZSBvZiBhZGRlZCBydWxlLlxuICogLSBmbiAoRnVuY3Rpb24pOiBydWxlIGZ1bmN0aW9uLlxuICogLSBvcHRpb25zIChPYmplY3QpOiBydWxlIG9wdGlvbnMgKG5vdCBtYW5kYXRvcnkpLlxuICpcbiAqIEFkZCBuZXcgcnVsZSB0byBjaGFpbiBiZWZvcmUgb25lIHdpdGggZ2l2ZW4gbmFtZS4gU2VlIGFsc29cbiAqIFtbUnVsZXIuYWZ0ZXJdXSwgW1tSdWxlci5wdXNoXV0uXG4gKlxuICogIyMjIyMgT3B0aW9uczpcbiAqXG4gKiAtIF9fYWx0X18gLSBhcnJheSB3aXRoIG5hbWVzIG9mIFwiYWx0ZXJuYXRlXCIgY2hhaW5zLlxuICpcbiAqICMjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKCk7XG4gKlxuICogbWQuYmxvY2sucnVsZXIuYmVmb3JlKCdwYXJhZ3JhcGgnLCAnbXlfcnVsZScsIGZ1bmN0aW9uIHJlcGxhY2Uoc3RhdGUpIHtcbiAqICAgLy8uLi5cbiAqIH0pO1xuICogYGBgXG4gKiovXG5SdWxlci5wcm90b3R5cGUuYmVmb3JlID0gZnVuY3Rpb24gKGJlZm9yZU5hbWUsIHJ1bGVOYW1lLCBmbiwgb3B0aW9ucykge1xuICB2YXIgaW5kZXggPSB0aGlzLl9fZmluZF9fKGJlZm9yZU5hbWUpO1xuICB2YXIgb3B0ID0gb3B0aW9ucyB8fCB7fTtcblxuICBpZiAoaW5kZXggPT09IC0xKSB7IHRocm93IG5ldyBFcnJvcignUGFyc2VyIHJ1bGUgbm90IGZvdW5kOiAnICsgYmVmb3JlTmFtZSk7IH1cblxuICB0aGlzLl9fcnVsZXNfXy5zcGxpY2UoaW5kZXgsIDAsIHtcbiAgICBuYW1lOiBydWxlTmFtZSxcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIGZuOiBmbixcbiAgICBhbHQ6IG9wdC5hbHQgfHwgW11cbiAgfSk7XG5cbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsO1xufTtcblxuXG4vKipcbiAqIFJ1bGVyLmFmdGVyKGFmdGVyTmFtZSwgcnVsZU5hbWUsIGZuIFssIG9wdGlvbnNdKVxuICogLSBhZnRlck5hbWUgKFN0cmluZyk6IG5ldyBydWxlIHdpbGwgYmUgYWRkZWQgYWZ0ZXIgdGhpcyBvbmUuXG4gKiAtIHJ1bGVOYW1lIChTdHJpbmcpOiBuYW1lIG9mIGFkZGVkIHJ1bGUuXG4gKiAtIGZuIChGdW5jdGlvbik6IHJ1bGUgZnVuY3Rpb24uXG4gKiAtIG9wdGlvbnMgKE9iamVjdCk6IHJ1bGUgb3B0aW9ucyAobm90IG1hbmRhdG9yeSkuXG4gKlxuICogQWRkIG5ldyBydWxlIHRvIGNoYWluIGFmdGVyIG9uZSB3aXRoIGdpdmVuIG5hbWUuIFNlZSBhbHNvXG4gKiBbW1J1bGVyLmJlZm9yZV1dLCBbW1J1bGVyLnB1c2hdXS5cbiAqXG4gKiAjIyMjIyBPcHRpb25zOlxuICpcbiAqIC0gX19hbHRfXyAtIGFycmF5IHdpdGggbmFtZXMgb2YgXCJhbHRlcm5hdGVcIiBjaGFpbnMuXG4gKlxuICogIyMjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoKTtcbiAqXG4gKiBtZC5pbmxpbmUucnVsZXIuYWZ0ZXIoJ3RleHQnLCAnbXlfcnVsZScsIGZ1bmN0aW9uIHJlcGxhY2Uoc3RhdGUpIHtcbiAqICAgLy8uLi5cbiAqIH0pO1xuICogYGBgXG4gKiovXG5SdWxlci5wcm90b3R5cGUuYWZ0ZXIgPSBmdW5jdGlvbiAoYWZ0ZXJOYW1lLCBydWxlTmFtZSwgZm4sIG9wdGlvbnMpIHtcbiAgdmFyIGluZGV4ID0gdGhpcy5fX2ZpbmRfXyhhZnRlck5hbWUpO1xuICB2YXIgb3B0ID0gb3B0aW9ucyB8fCB7fTtcblxuICBpZiAoaW5kZXggPT09IC0xKSB7IHRocm93IG5ldyBFcnJvcignUGFyc2VyIHJ1bGUgbm90IGZvdW5kOiAnICsgYWZ0ZXJOYW1lKTsgfVxuXG4gIHRoaXMuX19ydWxlc19fLnNwbGljZShpbmRleCArIDEsIDAsIHtcbiAgICBuYW1lOiBydWxlTmFtZSxcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIGZuOiBmbixcbiAgICBhbHQ6IG9wdC5hbHQgfHwgW11cbiAgfSk7XG5cbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsO1xufTtcblxuLyoqXG4gKiBSdWxlci5wdXNoKHJ1bGVOYW1lLCBmbiBbLCBvcHRpb25zXSlcbiAqIC0gcnVsZU5hbWUgKFN0cmluZyk6IG5hbWUgb2YgYWRkZWQgcnVsZS5cbiAqIC0gZm4gKEZ1bmN0aW9uKTogcnVsZSBmdW5jdGlvbi5cbiAqIC0gb3B0aW9ucyAoT2JqZWN0KTogcnVsZSBvcHRpb25zIChub3QgbWFuZGF0b3J5KS5cbiAqXG4gKiBQdXNoIG5ldyBydWxlIHRvIHRoZSBlbmQgb2YgY2hhaW4uIFNlZSBhbHNvXG4gKiBbW1J1bGVyLmJlZm9yZV1dLCBbW1J1bGVyLmFmdGVyXV0uXG4gKlxuICogIyMjIyMgT3B0aW9uczpcbiAqXG4gKiAtIF9fYWx0X18gLSBhcnJheSB3aXRoIG5hbWVzIG9mIFwiYWx0ZXJuYXRlXCIgY2hhaW5zLlxuICpcbiAqICMjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKCk7XG4gKlxuICogbWQuY29yZS5ydWxlci5wdXNoKCdteV9ydWxlJywgZnVuY3Rpb24gcmVwbGFjZShzdGF0ZSkge1xuICogICAvLy4uLlxuICogfSk7XG4gKiBgYGBcbiAqKi9cblJ1bGVyLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKHJ1bGVOYW1lLCBmbiwgb3B0aW9ucykge1xuICB2YXIgb3B0ID0gb3B0aW9ucyB8fCB7fTtcblxuICB0aGlzLl9fcnVsZXNfXy5wdXNoKHtcbiAgICBuYW1lOiBydWxlTmFtZSxcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIGZuOiBmbixcbiAgICBhbHQ6IG9wdC5hbHQgfHwgW11cbiAgfSk7XG5cbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsO1xufTtcblxuXG4vKipcbiAqIFJ1bGVyLmVuYWJsZShsaXN0IFssIGlnbm9yZUludmFsaWRdKSAtPiBBcnJheVxuICogLSBsaXN0IChTdHJpbmd8QXJyYXkpOiBsaXN0IG9mIHJ1bGUgbmFtZXMgdG8gZW5hYmxlLlxuICogLSBpZ25vcmVJbnZhbGlkIChCb29sZWFuKTogc2V0IGB0cnVlYCB0byBpZ25vcmUgZXJyb3JzIHdoZW4gcnVsZSBub3QgZm91bmQuXG4gKlxuICogRW5hYmxlIHJ1bGVzIHdpdGggZ2l2ZW4gbmFtZXMuIElmIGFueSBydWxlIG5hbWUgbm90IGZvdW5kIC0gdGhyb3cgRXJyb3IuXG4gKiBFcnJvcnMgY2FuIGJlIGRpc2FibGVkIGJ5IHNlY29uZCBwYXJhbS5cbiAqXG4gKiBSZXR1cm5zIGxpc3Qgb2YgZm91bmQgcnVsZSBuYW1lcyAoaWYgbm8gZXhjZXB0aW9uIGhhcHBlbmVkKS5cbiAqXG4gKiBTZWUgYWxzbyBbW1J1bGVyLmRpc2FibGVdXSwgW1tSdWxlci5lbmFibGVPbmx5XV0uXG4gKiovXG5SdWxlci5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24gKGxpc3QsIGlnbm9yZUludmFsaWQpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGxpc3QpKSB7IGxpc3QgPSBbIGxpc3QgXTsgfVxuXG4gIHZhciByZXN1bHQgPSBbXTtcblxuICAvLyBTZWFyY2ggYnkgbmFtZSBhbmQgZW5hYmxlXG4gIGxpc3QuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBpZHggPSB0aGlzLl9fZmluZF9fKG5hbWUpO1xuXG4gICAgaWYgKGlkeCA8IDApIHtcbiAgICAgIGlmIChpZ25vcmVJbnZhbGlkKSB7IHJldHVybjsgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdWxlcyBtYW5hZ2VyOiBpbnZhbGlkIHJ1bGUgbmFtZSAnICsgbmFtZSk7XG4gICAgfVxuICAgIHRoaXMuX19ydWxlc19fW2lkeF0uZW5hYmxlZCA9IHRydWU7XG4gICAgcmVzdWx0LnB1c2gobmFtZSk7XG4gIH0sIHRoaXMpO1xuXG4gIHRoaXMuX19jYWNoZV9fID0gbnVsbDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuLyoqXG4gKiBSdWxlci5lbmFibGVPbmx5KGxpc3QgWywgaWdub3JlSW52YWxpZF0pXG4gKiAtIGxpc3QgKFN0cmluZ3xBcnJheSk6IGxpc3Qgb2YgcnVsZSBuYW1lcyB0byBlbmFibGUgKHdoaXRlbGlzdCkuXG4gKiAtIGlnbm9yZUludmFsaWQgKEJvb2xlYW4pOiBzZXQgYHRydWVgIHRvIGlnbm9yZSBlcnJvcnMgd2hlbiBydWxlIG5vdCBmb3VuZC5cbiAqXG4gKiBFbmFibGUgcnVsZXMgd2l0aCBnaXZlbiBuYW1lcywgYW5kIGRpc2FibGUgZXZlcnl0aGluZyBlbHNlLiBJZiBhbnkgcnVsZSBuYW1lXG4gKiBub3QgZm91bmQgLSB0aHJvdyBFcnJvci4gRXJyb3JzIGNhbiBiZSBkaXNhYmxlZCBieSBzZWNvbmQgcGFyYW0uXG4gKlxuICogU2VlIGFsc28gW1tSdWxlci5kaXNhYmxlXV0sIFtbUnVsZXIuZW5hYmxlXV0uXG4gKiovXG5SdWxlci5wcm90b3R5cGUuZW5hYmxlT25seSA9IGZ1bmN0aW9uIChsaXN0LCBpZ25vcmVJbnZhbGlkKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkgeyBsaXN0ID0gWyBsaXN0IF07IH1cblxuICB0aGlzLl9fcnVsZXNfXy5mb3JFYWNoKGZ1bmN0aW9uIChydWxlKSB7IHJ1bGUuZW5hYmxlZCA9IGZhbHNlOyB9KTtcblxuICB0aGlzLmVuYWJsZShsaXN0LCBpZ25vcmVJbnZhbGlkKTtcbn07XG5cblxuLyoqXG4gKiBSdWxlci5kaXNhYmxlKGxpc3QgWywgaWdub3JlSW52YWxpZF0pIC0+IEFycmF5XG4gKiAtIGxpc3QgKFN0cmluZ3xBcnJheSk6IGxpc3Qgb2YgcnVsZSBuYW1lcyB0byBkaXNhYmxlLlxuICogLSBpZ25vcmVJbnZhbGlkIChCb29sZWFuKTogc2V0IGB0cnVlYCB0byBpZ25vcmUgZXJyb3JzIHdoZW4gcnVsZSBub3QgZm91bmQuXG4gKlxuICogRGlzYWJsZSBydWxlcyB3aXRoIGdpdmVuIG5hbWVzLiBJZiBhbnkgcnVsZSBuYW1lIG5vdCBmb3VuZCAtIHRocm93IEVycm9yLlxuICogRXJyb3JzIGNhbiBiZSBkaXNhYmxlZCBieSBzZWNvbmQgcGFyYW0uXG4gKlxuICogUmV0dXJucyBsaXN0IG9mIGZvdW5kIHJ1bGUgbmFtZXMgKGlmIG5vIGV4Y2VwdGlvbiBoYXBwZW5lZCkuXG4gKlxuICogU2VlIGFsc28gW1tSdWxlci5lbmFibGVdXSwgW1tSdWxlci5lbmFibGVPbmx5XV0uXG4gKiovXG5SdWxlci5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uIChsaXN0LCBpZ25vcmVJbnZhbGlkKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkgeyBsaXN0ID0gWyBsaXN0IF07IH1cblxuICB2YXIgcmVzdWx0ID0gW107XG5cbiAgLy8gU2VhcmNoIGJ5IG5hbWUgYW5kIGRpc2FibGVcbiAgbGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuX19maW5kX18obmFtZSk7XG5cbiAgICBpZiAoaWR4IDwgMCkge1xuICAgICAgaWYgKGlnbm9yZUludmFsaWQpIHsgcmV0dXJuOyB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1J1bGVzIG1hbmFnZXI6IGludmFsaWQgcnVsZSBuYW1lICcgKyBuYW1lKTtcbiAgICB9XG4gICAgdGhpcy5fX3J1bGVzX19baWR4XS5lbmFibGVkID0gZmFsc2U7XG4gICAgcmVzdWx0LnB1c2gobmFtZSk7XG4gIH0sIHRoaXMpO1xuXG4gIHRoaXMuX19jYWNoZV9fID0gbnVsbDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuLyoqXG4gKiBSdWxlci5nZXRSdWxlcyhjaGFpbk5hbWUpIC0+IEFycmF5XG4gKlxuICogUmV0dXJuIGFycmF5IG9mIGFjdGl2ZSBmdW5jdGlvbnMgKHJ1bGVzKSBmb3IgZ2l2ZW4gY2hhaW4gbmFtZS4gSXQgYW5hbHl6ZXNcbiAqIHJ1bGVzIGNvbmZpZ3VyYXRpb24sIGNvbXBpbGVzIGNhY2hlcyBpZiBub3QgZXhpc3RzIGFuZCByZXR1cm5zIHJlc3VsdC5cbiAqXG4gKiBEZWZhdWx0IGNoYWluIG5hbWUgaXMgYCcnYCAoZW1wdHkgc3RyaW5nKS4gSXQgY2FuJ3QgYmUgc2tpcHBlZC4gVGhhdCdzXG4gKiBkb25lIGludGVudGlvbmFsbHksIHRvIGtlZXAgc2lnbmF0dXJlIG1vbm9tb3JwaGljIGZvciBoaWdoIHNwZWVkLlxuICoqL1xuUnVsZXIucHJvdG90eXBlLmdldFJ1bGVzID0gZnVuY3Rpb24gKGNoYWluTmFtZSkge1xuICBpZiAodGhpcy5fX2NhY2hlX18gPT09IG51bGwpIHtcbiAgICB0aGlzLl9fY29tcGlsZV9fKCk7XG4gIH1cblxuICAvLyBDaGFpbiBjYW4gYmUgZW1wdHksIGlmIHJ1bGVzIGRpc2FibGVkLiBCdXQgd2Ugc3RpbGwgaGF2ZSB0byByZXR1cm4gQXJyYXkuXG4gIHJldHVybiB0aGlzLl9fY2FjaGVfX1tjaGFpbk5hbWVdIHx8IFtdO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSdWxlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQU1BO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUFNQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQU1BO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/ruler.js\n");
2065
2066/***/ }),
2067
2068/***/ "../../../node_modules/markdown-it/lib/rules_block/blockquote.js":
2069/*!**************************************************************************************************!*\
2070 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_block/blockquote.js ***!
2071 \**************************************************************************************************/
2072/*! no static exports found */
2073/***/ (function(module, exports, __webpack_require__) {
2074
2075eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Block quotes\n 'use strict';\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n module.exports = function blockquote(state, startLine, endLine, silent) {\n var adjustTab,\n ch,\n i,\n initial,\n l,\n lastLineEmpty,\n lines,\n nextLine,\n offset,\n oldBMarks,\n oldBSCount,\n oldIndent,\n oldParentType,\n oldSCount,\n oldTShift,\n spaceAfterMarker,\n terminate,\n terminatorRules,\n token,\n wasOutdented,\n oldLineMax = state.lineMax,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n } // check the block quote marker\n\n\n if (state.src.charCodeAt(pos++) !== 0x3E\n /* > */\n ) {\n return false;\n } // we know that it's going to be a valid blockquote,\n // so no point trying to find the end of it in silent mode\n\n\n if (silent) {\n return true;\n } // skip spaces after \">\" and re-calculate offset\n\n\n initial = offset = state.sCount[startLine] + pos - (state.bMarks[startLine] + state.tShift[startLine]); // skip one optional space after '>'\n\n if (state.src.charCodeAt(pos) === 0x20\n /* space */\n ) {\n // ' > test '\n // ^ -- position start of line here:\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n spaceAfterMarker = true;\n } else if (state.src.charCodeAt(pos) === 0x09\n /* tab */\n ) {\n spaceAfterMarker = true;\n\n if ((state.bsCount[startLine] + offset) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true;\n }\n } else {\n spaceAfterMarker = false;\n }\n\n oldBMarks = [state.bMarks[startLine]];\n state.bMarks[startLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[startLine] + (adjustTab ? 1 : 0)) % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n oldBSCount = [state.bsCount[startLine]];\n state.bsCount[startLine] = state.sCount[startLine] + 1 + (spaceAfterMarker ? 1 : 0);\n lastLineEmpty = pos >= max;\n oldSCount = [state.sCount[startLine]];\n state.sCount[startLine] = offset - initial;\n oldTShift = [state.tShift[startLine]];\n state.tShift[startLine] = pos - state.bMarks[startLine];\n terminatorRules = state.md.block.ruler.getRules('blockquote');\n oldParentType = state.parentType;\n state.parentType = 'blockquote';\n wasOutdented = false; // Search the end of the block\n //\n // Block ends with either:\n // 1. an empty line outside:\n // ```\n // > test\n //\n // ```\n // 2. an empty line inside:\n // ```\n // >\n // test\n // ```\n // 3. another tag:\n // ```\n // > test\n // - - -\n // ```\n\n for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {\n // check if it's outdented, i.e. it's inside list item and indented\n // less than said list item:\n //\n // ```\n // 1. anything\n // > current blockquote\n // 2. checking this line\n // ```\n if (state.sCount[nextLine] < state.blkIndent) wasOutdented = true;\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos >= max) {\n // Case 1: line is not inside the blockquote, and this line is empty.\n break;\n }\n\n if (state.src.charCodeAt(pos++) === 0x3E\n /* > */\n && !wasOutdented) {\n // This line is inside the blockquote.\n // skip spaces after \">\" and re-calculate offset\n initial = offset = state.sCount[nextLine] + pos - (state.bMarks[nextLine] + state.tShift[nextLine]); // skip one optional space after '>'\n\n if (state.src.charCodeAt(pos) === 0x20\n /* space */\n ) {\n // ' > test '\n // ^ -- position start of line here:\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n spaceAfterMarker = true;\n } else if (state.src.charCodeAt(pos) === 0x09\n /* tab */\n ) {\n spaceAfterMarker = true;\n\n if ((state.bsCount[nextLine] + offset) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true;\n }\n } else {\n spaceAfterMarker = false;\n }\n\n oldBMarks.push(state.bMarks[nextLine]);\n state.bMarks[nextLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n lastLineEmpty = pos >= max;\n oldBSCount.push(state.bsCount[nextLine]);\n state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] = offset - initial;\n oldTShift.push(state.tShift[nextLine]);\n state.tShift[nextLine] = pos - state.bMarks[nextLine];\n continue;\n } // Case 2: line is not inside the blockquote, and the last line was empty.\n\n\n if (lastLineEmpty) {\n break;\n } // Case 3: another tag found.\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n // Quirk to enforce \"hard termination mode\" for paragraphs;\n // normally if you call `tokenize(state, startLine, nextLine)`,\n // paragraphs will look below nextLine for paragraph continuation,\n // but if blockquote is terminated by another tag, they shouldn't\n state.lineMax = nextLine;\n\n if (state.blkIndent !== 0) {\n // state.blkIndent was non-zero, we now set it to zero,\n // so we need to re-calculate all offsets to appear as\n // if indent wasn't changed\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] -= state.blkIndent;\n }\n\n break;\n }\n\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]); // A negative indentation means that this is a paragraph continuation\n //\n\n state.sCount[nextLine] = -1;\n }\n\n oldIndent = state.blkIndent;\n state.blkIndent = 0;\n token = state.push('blockquote_open', 'blockquote', 1);\n token.markup = '>';\n token.map = lines = [startLine, 0];\n state.md.block.tokenize(state, startLine, nextLine);\n token = state.push('blockquote_close', 'blockquote', -1);\n token.markup = '>';\n state.lineMax = oldLineMax;\n state.parentType = oldParentType;\n lines[1] = state.line; // Restore original tShift; this might not be necessary since the parser\n // has already been here, but just to make sure we can do that.\n\n for (i = 0; i < oldTShift.length; i++) {\n state.bMarks[i + startLine] = oldBMarks[i];\n state.tShift[i + startLine] = oldTShift[i];\n state.sCount[i + startLine] = oldSCount[i];\n state.bsCount[i + startLine] = oldBSCount[i];\n }\n\n state.blkIndent = oldIndent;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9ibG9ja3F1b3RlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9ibG9ja3F1b3RlLmpzPzM0YTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQmxvY2sgcXVvdGVzXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGlzU3BhY2UgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1NwYWNlO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmxvY2txdW90ZShzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lLCBzaWxlbnQpIHtcbiAgdmFyIGFkanVzdFRhYixcbiAgICAgIGNoLFxuICAgICAgaSxcbiAgICAgIGluaXRpYWwsXG4gICAgICBsLFxuICAgICAgbGFzdExpbmVFbXB0eSxcbiAgICAgIGxpbmVzLFxuICAgICAgbmV4dExpbmUsXG4gICAgICBvZmZzZXQsXG4gICAgICBvbGRCTWFya3MsXG4gICAgICBvbGRCU0NvdW50LFxuICAgICAgb2xkSW5kZW50LFxuICAgICAgb2xkUGFyZW50VHlwZSxcbiAgICAgIG9sZFNDb3VudCxcbiAgICAgIG9sZFRTaGlmdCxcbiAgICAgIHNwYWNlQWZ0ZXJNYXJrZXIsXG4gICAgICB0ZXJtaW5hdGUsXG4gICAgICB0ZXJtaW5hdG9yUnVsZXMsXG4gICAgICB0b2tlbixcbiAgICAgIHdhc091dGRlbnRlZCxcbiAgICAgIG9sZExpbmVNYXggPSBzdGF0ZS5saW5lTWF4LFxuICAgICAgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSxcbiAgICAgIG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdO1xuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIC8vIGNoZWNrIHRoZSBibG9jayBxdW90ZSBtYXJrZXJcbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKSAhPT0gMHgzRS8qID4gKi8pIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgLy8gd2Uga25vdyB0aGF0IGl0J3MgZ29pbmcgdG8gYmUgYSB2YWxpZCBibG9ja3F1b3RlLFxuICAvLyBzbyBubyBwb2ludCB0cnlpbmcgdG8gZmluZCB0aGUgZW5kIG9mIGl0IGluIHNpbGVudCBtb2RlXG4gIGlmIChzaWxlbnQpIHsgcmV0dXJuIHRydWU7IH1cblxuICAvLyBza2lwIHNwYWNlcyBhZnRlciBcIj5cIiBhbmQgcmUtY2FsY3VsYXRlIG9mZnNldFxuICBpbml0aWFsID0gb2Zmc2V0ID0gc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gKyBwb3MgLSAoc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSk7XG5cbiAgLy8gc2tpcCBvbmUgb3B0aW9uYWwgc3BhY2UgYWZ0ZXIgJz4nXG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpID09PSAweDIwIC8qIHNwYWNlICovKSB7XG4gICAgLy8gJyA+ICAgdGVzdCAnXG4gICAgLy8gICAgIF4gLS0gcG9zaXRpb24gc3RhcnQgb2YgbGluZSBoZXJlOlxuICAgIHBvcysrO1xuICAgIGluaXRpYWwrKztcbiAgICBvZmZzZXQrKztcbiAgICBhZGp1c3RUYWIgPSBmYWxzZTtcbiAgICBzcGFjZUFmdGVyTWFya2VyID0gdHJ1ZTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpID09PSAweDA5IC8qIHRhYiAqLykge1xuICAgIHNwYWNlQWZ0ZXJNYXJrZXIgPSB0cnVlO1xuXG4gICAgaWYgKChzdGF0ZS5ic0NvdW50W3N0YXJ0TGluZV0gKyBvZmZzZXQpICUgNCA9PT0gMykge1xuICAgICAgLy8gJyAgPlxcdCAgdGVzdCAnXG4gICAgICAvLyAgICAgICBeIC0tIHBvc2l0aW9uIHN0YXJ0IG9mIGxpbmUgaGVyZSAodGFiIGhhcyB3aWR0aD09PTEpXG4gICAgICBwb3MrKztcbiAgICAgIGluaXRpYWwrKztcbiAgICAgIG9mZnNldCsrO1xuICAgICAgYWRqdXN0VGFiID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vICcgPlxcdCAgdGVzdCAnXG4gICAgICAvLyAgICBeIC0tIHBvc2l0aW9uIHN0YXJ0IG9mIGxpbmUgaGVyZSArIHNoaWZ0IGJzQ291bnQgc2xpZ2h0bHlcbiAgICAgIC8vICAgICAgICAgdG8gbWFrZSBleHRyYSBzcGFjZSBhcHBlYXJcbiAgICAgIGFkanVzdFRhYiA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHNwYWNlQWZ0ZXJNYXJrZXIgPSBmYWxzZTtcbiAgfVxuXG4gIG9sZEJNYXJrcyA9IFsgc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gXTtcbiAgc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gPSBwb3M7XG5cbiAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcblxuICAgIGlmIChpc1NwYWNlKGNoKSkge1xuICAgICAgaWYgKGNoID09PSAweDA5KSB7XG4gICAgICAgIG9mZnNldCArPSA0IC0gKG9mZnNldCArIHN0YXRlLmJzQ291bnRbc3RhcnRMaW5lXSArIChhZGp1c3RUYWIgPyAxIDogMCkpICUgNDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9mZnNldCsrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBwb3MrKztcbiAgfVxuXG4gIG9sZEJTQ291bnQgPSBbIHN0YXRlLmJzQ291bnRbc3RhcnRMaW5lXSBdO1xuICBzdGF0ZS5ic0NvdW50W3N0YXJ0TGluZV0gPSBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSArIDEgKyAoc3BhY2VBZnRlck1hcmtlciA/IDEgOiAwKTtcblxuICBsYXN0TGluZUVtcHR5ID0gcG9zID49IG1heDtcblxuICBvbGRTQ291bnQgPSBbIHN0YXRlLnNDb3VudFtzdGFydExpbmVdIF07XG4gIHN0YXRlLnNDb3VudFtzdGFydExpbmVdID0gb2Zmc2V0IC0gaW5pdGlhbDtcblxuICBvbGRUU2hpZnQgPSBbIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdIF07XG4gIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdID0gcG9zIC0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV07XG5cbiAgdGVybWluYXRvclJ1bGVzID0gc3RhdGUubWQuYmxvY2sucnVsZXIuZ2V0UnVsZXMoJ2Jsb2NrcXVvdGUnKTtcblxuICBvbGRQYXJlbnRUeXBlID0gc3RhdGUucGFyZW50VHlwZTtcbiAgc3RhdGUucGFyZW50VHlwZSA9ICdibG9ja3F1b3RlJztcbiAgd2FzT3V0ZGVudGVkID0gZmFsc2U7XG5cbiAgLy8gU2VhcmNoIHRoZSBlbmQgb2YgdGhlIGJsb2NrXG4gIC8vXG4gIC8vIEJsb2NrIGVuZHMgd2l0aCBlaXRoZXI6XG4gIC8vICAxLiBhbiBlbXB0eSBsaW5lIG91dHNpZGU6XG4gIC8vICAgICBgYGBcbiAgLy8gICAgID4gdGVzdFxuICAvL1xuICAvLyAgICAgYGBgXG4gIC8vICAyLiBhbiBlbXB0eSBsaW5lIGluc2lkZTpcbiAgLy8gICAgIGBgYFxuICAvLyAgICAgPlxuICAvLyAgICAgdGVzdFxuICAvLyAgICAgYGBgXG4gIC8vICAzLiBhbm90aGVyIHRhZzpcbiAgLy8gICAgIGBgYFxuICAvLyAgICAgPiB0ZXN0XG4gIC8vICAgICAgLSAtIC1cbiAgLy8gICAgIGBgYFxuICBmb3IgKG5leHRMaW5lID0gc3RhcnRMaW5lICsgMTsgbmV4dExpbmUgPCBlbmRMaW5lOyBuZXh0TGluZSsrKSB7XG4gICAgLy8gY2hlY2sgaWYgaXQncyBvdXRkZW50ZWQsIGkuZS4gaXQncyBpbnNpZGUgbGlzdCBpdGVtIGFuZCBpbmRlbnRlZFxuICAgIC8vIGxlc3MgdGhhbiBzYWlkIGxpc3QgaXRlbTpcbiAgICAvL1xuICAgIC8vIGBgYFxuICAgIC8vIDEuIGFueXRoaW5nXG4gICAgLy8gICAgPiBjdXJyZW50IGJsb2NrcXVvdGVcbiAgICAvLyAyLiBjaGVja2luZyB0aGlzIGxpbmVcbiAgICAvLyBgYGBcbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSA8IHN0YXRlLmJsa0luZGVudCkgd2FzT3V0ZGVudGVkID0gdHJ1ZTtcblxuICAgIHBvcyA9IHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gKyBzdGF0ZS50U2hpZnRbbmV4dExpbmVdO1xuICAgIG1heCA9IHN0YXRlLmVNYXJrc1tuZXh0TGluZV07XG5cbiAgICBpZiAocG9zID49IG1heCkge1xuICAgICAgLy8gQ2FzZSAxOiBsaW5lIGlzIG5vdCBpbnNpZGUgdGhlIGJsb2NrcXVvdGUsIGFuZCB0aGlzIGxpbmUgaXMgZW1wdHkuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKyspID09PSAweDNFLyogPiAqLyAmJiAhd2FzT3V0ZGVudGVkKSB7XG4gICAgICAvLyBUaGlzIGxpbmUgaXMgaW5zaWRlIHRoZSBibG9ja3F1b3RlLlxuXG4gICAgICAvLyBza2lwIHNwYWNlcyBhZnRlciBcIj5cIiBhbmQgcmUtY2FsY3VsYXRlIG9mZnNldFxuICAgICAgaW5pdGlhbCA9IG9mZnNldCA9IHN0YXRlLnNDb3VudFtuZXh0TGluZV0gKyBwb3MgLSAoc3RhdGUuYk1hcmtzW25leHRMaW5lXSArIHN0YXRlLnRTaGlmdFtuZXh0TGluZV0pO1xuXG4gICAgICAvLyBza2lwIG9uZSBvcHRpb25hbCBzcGFjZSBhZnRlciAnPidcbiAgICAgIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpID09PSAweDIwIC8qIHNwYWNlICovKSB7XG4gICAgICAgIC8vICcgPiAgIHRlc3QgJ1xuICAgICAgICAvLyAgICAgXiAtLSBwb3NpdGlvbiBzdGFydCBvZiBsaW5lIGhlcmU6XG4gICAgICAgIHBvcysrO1xuICAgICAgICBpbml0aWFsKys7XG4gICAgICAgIG9mZnNldCsrO1xuICAgICAgICBhZGp1c3RUYWIgPSBmYWxzZTtcbiAgICAgICAgc3BhY2VBZnRlck1hcmtlciA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgPT09IDB4MDkgLyogdGFiICovKSB7XG4gICAgICAgIHNwYWNlQWZ0ZXJNYXJrZXIgPSB0cnVlO1xuXG4gICAgICAgIGlmICgoc3RhdGUuYnNDb3VudFtuZXh0TGluZV0gKyBvZmZzZXQpICUgNCA9PT0gMykge1xuICAgICAgICAgIC8vICcgID5cXHQgIHRlc3QgJ1xuICAgICAgICAgIC8vICAgICAgIF4gLS0gcG9zaXRpb24gc3RhcnQgb2YgbGluZSBoZXJlICh0YWIgaGFzIHdpZHRoPT09MSlcbiAgICAgICAgICBwb3MrKztcbiAgICAgICAgICBpbml0aWFsKys7XG4gICAgICAgICAgb2Zmc2V0Kys7XG4gICAgICAgICAgYWRqdXN0VGFiID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gJyA+XFx0ICB0ZXN0ICdcbiAgICAgICAgICAvLyAgICBeIC0tIHBvc2l0aW9uIHN0YXJ0IG9mIGxpbmUgaGVyZSArIHNoaWZ0IGJzQ291bnQgc2xpZ2h0bHlcbiAgICAgICAgICAvLyAgICAgICAgIHRvIG1ha2UgZXh0cmEgc3BhY2UgYXBwZWFyXG4gICAgICAgICAgYWRqdXN0VGFiID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3BhY2VBZnRlck1hcmtlciA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBvbGRCTWFya3MucHVzaChzdGF0ZS5iTWFya3NbbmV4dExpbmVdKTtcbiAgICAgIHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gPSBwb3M7XG5cbiAgICAgIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuXG4gICAgICAgIGlmIChpc1NwYWNlKGNoKSkge1xuICAgICAgICAgIGlmIChjaCA9PT0gMHgwOSkge1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQgLSAob2Zmc2V0ICsgc3RhdGUuYnNDb3VudFtuZXh0TGluZV0gKyAoYWRqdXN0VGFiID8gMSA6IDApKSAlIDQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9mZnNldCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHBvcysrO1xuICAgICAgfVxuXG4gICAgICBsYXN0TGluZUVtcHR5ID0gcG9zID49IG1heDtcblxuICAgICAgb2xkQlNDb3VudC5wdXNoKHN0YXRlLmJzQ291bnRbbmV4dExpbmVdKTtcbiAgICAgIHN0YXRlLmJzQ291bnRbbmV4dExpbmVdID0gc3RhdGUuc0NvdW50W25leHRMaW5lXSArIDEgKyAoc3BhY2VBZnRlck1hcmtlciA/IDEgOiAwKTtcblxuICAgICAgb2xkU0NvdW50LnB1c2goc3RhdGUuc0NvdW50W25leHRMaW5lXSk7XG4gICAgICBzdGF0ZS5zQ291bnRbbmV4dExpbmVdID0gb2Zmc2V0IC0gaW5pdGlhbDtcblxuICAgICAgb2xkVFNoaWZ0LnB1c2goc3RhdGUudFNoaWZ0W25leHRMaW5lXSk7XG4gICAgICBzdGF0ZS50U2hpZnRbbmV4dExpbmVdID0gcG9zIC0gc3RhdGUuYk1hcmtzW25leHRMaW5lXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIENhc2UgMjogbGluZSBpcyBub3QgaW5zaWRlIHRoZSBibG9ja3F1b3RlLCBhbmQgdGhlIGxhc3QgbGluZSB3YXMgZW1wdHkuXG4gICAgaWYgKGxhc3RMaW5lRW1wdHkpIHsgYnJlYWs7IH1cblxuICAgIC8vIENhc2UgMzogYW5vdGhlciB0YWcgZm91bmQuXG4gICAgdGVybWluYXRlID0gZmFsc2U7XG4gICAgZm9yIChpID0gMCwgbCA9IHRlcm1pbmF0b3JSdWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmICh0ZXJtaW5hdG9yUnVsZXNbaV0oc3RhdGUsIG5leHRMaW5lLCBlbmRMaW5lLCB0cnVlKSkge1xuICAgICAgICB0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGVybWluYXRlKSB7XG4gICAgICAvLyBRdWlyayB0byBlbmZvcmNlIFwiaGFyZCB0ZXJtaW5hdGlvbiBtb2RlXCIgZm9yIHBhcmFncmFwaHM7XG4gICAgICAvLyBub3JtYWxseSBpZiB5b3UgY2FsbCBgdG9rZW5pemUoc3RhdGUsIHN0YXJ0TGluZSwgbmV4dExpbmUpYCxcbiAgICAgIC8vIHBhcmFncmFwaHMgd2lsbCBsb29rIGJlbG93IG5leHRMaW5lIGZvciBwYXJhZ3JhcGggY29udGludWF0aW9uLFxuICAgICAgLy8gYnV0IGlmIGJsb2NrcXVvdGUgaXMgdGVybWluYXRlZCBieSBhbm90aGVyIHRhZywgdGhleSBzaG91bGRuJ3RcbiAgICAgIHN0YXRlLmxpbmVNYXggPSBuZXh0TGluZTtcblxuICAgICAgaWYgKHN0YXRlLmJsa0luZGVudCAhPT0gMCkge1xuICAgICAgICAvLyBzdGF0ZS5ibGtJbmRlbnQgd2FzIG5vbi16ZXJvLCB3ZSBub3cgc2V0IGl0IHRvIHplcm8sXG4gICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gcmUtY2FsY3VsYXRlIGFsbCBvZmZzZXRzIHRvIGFwcGVhciBhc1xuICAgICAgICAvLyBpZiBpbmRlbnQgd2Fzbid0IGNoYW5nZWRcbiAgICAgICAgb2xkQk1hcmtzLnB1c2goc3RhdGUuYk1hcmtzW25leHRMaW5lXSk7XG4gICAgICAgIG9sZEJTQ291bnQucHVzaChzdGF0ZS5ic0NvdW50W25leHRMaW5lXSk7XG4gICAgICAgIG9sZFRTaGlmdC5wdXNoKHN0YXRlLnRTaGlmdFtuZXh0TGluZV0pO1xuICAgICAgICBvbGRTQ291bnQucHVzaChzdGF0ZS5zQ291bnRbbmV4dExpbmVdKTtcbiAgICAgICAgc3RhdGUuc0NvdW50W25leHRMaW5lXSAtPSBzdGF0ZS5ibGtJbmRlbnQ7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIG9sZEJNYXJrcy5wdXNoKHN0YXRlLmJNYXJrc1tuZXh0TGluZV0pO1xuICAgIG9sZEJTQ291bnQucHVzaChzdGF0ZS5ic0NvdW50W25leHRMaW5lXSk7XG4gICAgb2xkVFNoaWZ0LnB1c2goc3RhdGUudFNoaWZ0W25leHRMaW5lXSk7XG4gICAgb2xkU0NvdW50LnB1c2goc3RhdGUuc0NvdW50W25leHRMaW5lXSk7XG5cbiAgICAvLyBBIG5lZ2F0aXZlIGluZGVudGF0aW9uIG1lYW5zIHRoYXQgdGhpcyBpcyBhIHBhcmFncmFwaCBjb250aW51YXRpb25cbiAgICAvL1xuICAgIHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPSAtMTtcbiAgfVxuXG4gIG9sZEluZGVudCA9IHN0YXRlLmJsa0luZGVudDtcbiAgc3RhdGUuYmxrSW5kZW50ID0gMDtcblxuICB0b2tlbiAgICAgICAgPSBzdGF0ZS5wdXNoKCdibG9ja3F1b3RlX29wZW4nLCAnYmxvY2txdW90ZScsIDEpO1xuICB0b2tlbi5tYXJrdXAgPSAnPic7XG4gIHRva2VuLm1hcCAgICA9IGxpbmVzID0gWyBzdGFydExpbmUsIDAgXTtcblxuICBzdGF0ZS5tZC5ibG9jay50b2tlbml6ZShzdGF0ZSwgc3RhcnRMaW5lLCBuZXh0TGluZSk7XG5cbiAgdG9rZW4gICAgICAgID0gc3RhdGUucHVzaCgnYmxvY2txdW90ZV9jbG9zZScsICdibG9ja3F1b3RlJywgLTEpO1xuICB0b2tlbi5tYXJrdXAgPSAnPic7XG5cbiAgc3RhdGUubGluZU1heCA9IG9sZExpbmVNYXg7XG4gIHN0YXRlLnBhcmVudFR5cGUgPSBvbGRQYXJlbnRUeXBlO1xuICBsaW5lc1sxXSA9IHN0YXRlLmxpbmU7XG5cbiAgLy8gUmVzdG9yZSBvcmlnaW5hbCB0U2hpZnQ7IHRoaXMgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeSBzaW5jZSB0aGUgcGFyc2VyXG4gIC8vIGhhcyBhbHJlYWR5IGJlZW4gaGVyZSwgYnV0IGp1c3QgdG8gbWFrZSBzdXJlIHdlIGNhbiBkbyB0aGF0LlxuICBmb3IgKGkgPSAwOyBpIDwgb2xkVFNoaWZ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgc3RhdGUuYk1hcmtzW2kgKyBzdGFydExpbmVdID0gb2xkQk1hcmtzW2ldO1xuICAgIHN0YXRlLnRTaGlmdFtpICsgc3RhcnRMaW5lXSA9IG9sZFRTaGlmdFtpXTtcbiAgICBzdGF0ZS5zQ291bnRbaSArIHN0YXJ0TGluZV0gPSBvbGRTQ291bnRbaV07XG4gICAgc3RhdGUuYnNDb3VudFtpICsgc3RhcnRMaW5lXSA9IG9sZEJTQ291bnRbaV07XG4gIH1cbiAgc3RhdGUuYmxrSW5kZW50ID0gb2xkSW5kZW50O1xuXG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF3QkE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/blockquote.js\n");
2076
2077/***/ }),
2078
2079/***/ "../../../node_modules/markdown-it/lib/rules_block/code.js":
2080/*!********************************************************************************************!*\
2081 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_block/code.js ***!
2082 \********************************************************************************************/
2083/*! no static exports found */
2084/***/ (function(module, exports, __webpack_require__) {
2085
2086eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Code block (4 spaces padded)\n 'use strict';\n\n module.exports = function code(state, startLine, endLine\n /*, silent*/\n ) {\n var nextLine, last, token;\n\n if (state.sCount[startLine] - state.blkIndent < 4) {\n return false;\n }\n\n last = nextLine = startLine + 1;\n\n while (nextLine < endLine) {\n if (state.isEmpty(nextLine)) {\n nextLine++;\n continue;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n nextLine++;\n last = nextLine;\n continue;\n }\n\n break;\n }\n\n state.line = last;\n token = state.push('code_block', 'code', 0);\n token.content = state.getLines(startLine, last, 4 + state.blkIndent, true);\n token.map = [startLine, state.line];\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9jb2RlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9jb2RlLmpzPzY0NWYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29kZSBibG9jayAoNCBzcGFjZXMgcGFkZGVkKVxuXG4ndXNlIHN0cmljdCc7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb2RlKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUvKiwgc2lsZW50Ki8pIHtcbiAgdmFyIG5leHRMaW5lLCBsYXN0LCB0b2tlbjtcblxuICBpZiAoc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPCA0KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGxhc3QgPSBuZXh0TGluZSA9IHN0YXJ0TGluZSArIDE7XG5cbiAgd2hpbGUgKG5leHRMaW5lIDwgZW5kTGluZSkge1xuICAgIGlmIChzdGF0ZS5pc0VtcHR5KG5leHRMaW5lKSkge1xuICAgICAgbmV4dExpbmUrKztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHtcbiAgICAgIG5leHRMaW5lKys7XG4gICAgICBsYXN0ID0gbmV4dExpbmU7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cblxuICBzdGF0ZS5saW5lID0gbGFzdDtcblxuICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgnY29kZV9ibG9jaycsICdjb2RlJywgMCk7XG4gIHRva2VuLmNvbnRlbnQgPSBzdGF0ZS5nZXRMaW5lcyhzdGFydExpbmUsIGxhc3QsIDQgKyBzdGF0ZS5ibGtJbmRlbnQsIHRydWUpO1xuICB0b2tlbi5tYXAgICAgID0gWyBzdGFydExpbmUsIHN0YXRlLmxpbmUgXTtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/code.js\n");
2087
2088/***/ }),
2089
2090/***/ "../../../node_modules/markdown-it/lib/rules_block/fence.js":
2091/*!*********************************************************************************************!*\
2092 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_block/fence.js ***!
2093 \*********************************************************************************************/
2094/*! no static exports found */
2095/***/ (function(module, exports, __webpack_require__) {
2096
2097eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // fences (``` lang, ~~~ lang)\n 'use strict';\n\n module.exports = function fence(state, startLine, endLine, silent) {\n var marker,\n len,\n params,\n nextLine,\n mem,\n token,\n markup,\n haveEndMarker = false,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (pos + 3 > max) {\n return false;\n }\n\n marker = state.src.charCodeAt(pos);\n\n if (marker !== 0x7E\n /* ~ */\n && marker !== 0x60\n /* ` */\n ) {\n return false;\n } // scan marker length\n\n\n mem = pos;\n pos = state.skipChars(pos, marker);\n len = pos - mem;\n\n if (len < 3) {\n return false;\n }\n\n markup = state.src.slice(mem, pos);\n params = state.src.slice(pos, max);\n\n if (marker === 0x60\n /* ` */\n ) {\n if (params.indexOf(String.fromCharCode(marker)) >= 0) {\n return false;\n }\n } // Since start is found, we can report success here in validation mode\n\n\n if (silent) {\n return true;\n } // search end of block\n\n\n nextLine = startLine;\n\n for (;;) {\n nextLine++;\n\n if (nextLine >= endLine) {\n // unclosed block should be autoclosed by end of document.\n // also block seems to be autoclosed by end of parent\n break;\n }\n\n pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n // non-empty line with negative indent should stop the list:\n // - ```\n // test\n break;\n }\n\n if (state.src.charCodeAt(pos) !== marker) {\n continue;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n // closing fence should be indented less than 4 spaces\n continue;\n }\n\n pos = state.skipChars(pos, marker); // closing code fence must be at least as long as the opening one\n\n if (pos - mem < len) {\n continue;\n } // make sure tail has spaces only\n\n\n pos = state.skipSpaces(pos);\n\n if (pos < max) {\n continue;\n }\n\n haveEndMarker = true; // found!\n\n break;\n } // If a fence has heading spaces, they should be removed from its inner block\n\n\n len = state.sCount[startLine];\n state.line = nextLine + (haveEndMarker ? 1 : 0);\n token = state.push('fence', 'code', 0);\n token.info = params;\n token.content = state.getLines(startLine + 1, nextLine, len, true);\n token.markup = markup;\n token.map = [startLine, state.line];\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9mZW5jZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfYmxvY2svZmVuY2UuanM/N2ZmMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmZW5jZXMgKGBgYCBsYW5nLCB+fn4gbGFuZylcblxuJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZmVuY2Uoc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSwgc2lsZW50KSB7XG4gIHZhciBtYXJrZXIsIGxlbiwgcGFyYW1zLCBuZXh0TGluZSwgbWVtLCB0b2tlbiwgbWFya3VwLFxuICAgICAgaGF2ZUVuZE1hcmtlciA9IGZhbHNlLFxuICAgICAgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSxcbiAgICAgIG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdO1xuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGlmIChwb3MgKyAzID4gbWF4KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIG1hcmtlciA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgaWYgKG1hcmtlciAhPT0gMHg3RS8qIH4gKi8gJiYgbWFya2VyICE9PSAweDYwIC8qIGAgKi8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBzY2FuIG1hcmtlciBsZW5ndGhcbiAgbWVtID0gcG9zO1xuICBwb3MgPSBzdGF0ZS5za2lwQ2hhcnMocG9zLCBtYXJrZXIpO1xuXG4gIGxlbiA9IHBvcyAtIG1lbTtcblxuICBpZiAobGVuIDwgMykgeyByZXR1cm4gZmFsc2U7IH1cblxuICBtYXJrdXAgPSBzdGF0ZS5zcmMuc2xpY2UobWVtLCBwb3MpO1xuICBwYXJhbXMgPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBtYXgpO1xuXG4gIGlmIChtYXJrZXIgPT09IDB4NjAgLyogYCAqLykge1xuICAgIGlmIChwYXJhbXMuaW5kZXhPZihTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlcikpID49IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvLyBTaW5jZSBzdGFydCBpcyBmb3VuZCwgd2UgY2FuIHJlcG9ydCBzdWNjZXNzIGhlcmUgaW4gdmFsaWRhdGlvbiBtb2RlXG4gIGlmIChzaWxlbnQpIHsgcmV0dXJuIHRydWU7IH1cblxuICAvLyBzZWFyY2ggZW5kIG9mIGJsb2NrXG4gIG5leHRMaW5lID0gc3RhcnRMaW5lO1xuXG4gIGZvciAoOzspIHtcbiAgICBuZXh0TGluZSsrO1xuICAgIGlmIChuZXh0TGluZSA+PSBlbmRMaW5lKSB7XG4gICAgICAvLyB1bmNsb3NlZCBibG9jayBzaG91bGQgYmUgYXV0b2Nsb3NlZCBieSBlbmQgb2YgZG9jdW1lbnQuXG4gICAgICAvLyBhbHNvIGJsb2NrIHNlZW1zIHRvIGJlIGF1dG9jbG9zZWQgYnkgZW5kIG9mIHBhcmVudFxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcG9zID0gbWVtID0gc3RhdGUuYk1hcmtzW25leHRMaW5lXSArIHN0YXRlLnRTaGlmdFtuZXh0TGluZV07XG4gICAgbWF4ID0gc3RhdGUuZU1hcmtzW25leHRMaW5lXTtcblxuICAgIGlmIChwb3MgPCBtYXggJiYgc3RhdGUuc0NvdW50W25leHRMaW5lXSA8IHN0YXRlLmJsa0luZGVudCkge1xuICAgICAgLy8gbm9uLWVtcHR5IGxpbmUgd2l0aCBuZWdhdGl2ZSBpbmRlbnQgc2hvdWxkIHN0b3AgdGhlIGxpc3Q6XG4gICAgICAvLyAtIGBgYFxuICAgICAgLy8gIHRlc3RcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSBtYXJrZXIpIHsgY29udGludWU7IH1cblxuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHtcbiAgICAgIC8vIGNsb3NpbmcgZmVuY2Ugc2hvdWxkIGJlIGluZGVudGVkIGxlc3MgdGhhbiA0IHNwYWNlc1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgcG9zID0gc3RhdGUuc2tpcENoYXJzKHBvcywgbWFya2VyKTtcblxuICAgIC8vIGNsb3NpbmcgY29kZSBmZW5jZSBtdXN0IGJlIGF0IGxlYXN0IGFzIGxvbmcgYXMgdGhlIG9wZW5pbmcgb25lXG4gICAgaWYgKHBvcyAtIG1lbSA8IGxlbikgeyBjb250aW51ZTsgfVxuXG4gICAgLy8gbWFrZSBzdXJlIHRhaWwgaGFzIHNwYWNlcyBvbmx5XG4gICAgcG9zID0gc3RhdGUuc2tpcFNwYWNlcyhwb3MpO1xuXG4gICAgaWYgKHBvcyA8IG1heCkgeyBjb250aW51ZTsgfVxuXG4gICAgaGF2ZUVuZE1hcmtlciA9IHRydWU7XG4gICAgLy8gZm91bmQhXG4gICAgYnJlYWs7XG4gIH1cblxuICAvLyBJZiBhIGZlbmNlIGhhcyBoZWFkaW5nIHNwYWNlcywgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIGl0cyBpbm5lciBibG9ja1xuICBsZW4gPSBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXTtcblxuICBzdGF0ZS5saW5lID0gbmV4dExpbmUgKyAoaGF2ZUVuZE1hcmtlciA/IDEgOiAwKTtcblxuICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgnZmVuY2UnLCAnY29kZScsIDApO1xuICB0b2tlbi5pbmZvICAgID0gcGFyYW1zO1xuICB0b2tlbi5jb250ZW50ID0gc3RhdGUuZ2V0TGluZXMoc3RhcnRMaW5lICsgMSwgbmV4dExpbmUsIGxlbiwgdHJ1ZSk7XG4gIHRva2VuLm1hcmt1cCAgPSBtYXJrdXA7XG4gIHRva2VuLm1hcCAgICAgPSBbIHN0YXJ0TGluZSwgc3RhdGUubGluZSBdO1xuXG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFLQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/fence.js\n");
2098
2099/***/ }),
2100
2101/***/ "../../../node_modules/markdown-it/lib/rules_block/heading.js":
2102/*!***********************************************************************************************!*\
2103 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_block/heading.js ***!
2104 \***********************************************************************************************/
2105/*! no static exports found */
2106/***/ (function(module, exports, __webpack_require__) {
2107
2108eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // heading (#, ##, ...)\n 'use strict';\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n module.exports = function heading(state, startLine, endLine, silent) {\n var ch,\n level,\n tmp,\n token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x23\n /* # */\n || pos >= max) {\n return false;\n } // count heading level\n\n\n level = 1;\n ch = state.src.charCodeAt(++pos);\n\n while (ch === 0x23\n /* # */\n && pos < max && level <= 6) {\n level++;\n ch = state.src.charCodeAt(++pos);\n }\n\n if (level > 6 || pos < max && !isSpace(ch)) {\n return false;\n }\n\n if (silent) {\n return true;\n } // Let's cut tails like ' ### ' from the end of string\n\n\n max = state.skipSpacesBack(max, pos);\n tmp = state.skipCharsBack(max, 0x23, pos); // #\n\n if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {\n max = tmp;\n }\n\n state.line = startLine + 1;\n token = state.push('heading_open', 'h' + String(level), 1);\n token.markup = '########'.slice(0, level);\n token.map = [startLine, state.line];\n token = state.push('inline', '', 0);\n token.content = state.src.slice(pos, max).trim();\n token.map = [startLine, state.line];\n token.children = [];\n token = state.push('heading_close', 'h' + String(level), -1);\n token.markup = '########'.slice(0, level);\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9oZWFkaW5nLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9oZWFkaW5nLmpzPzMwZmUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaGVhZGluZyAoIywgIyMsIC4uLilcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNTcGFjZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzU3BhY2U7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBoZWFkaW5nKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUsIHNpbGVudCkge1xuICB2YXIgY2gsIGxldmVsLCB0bXAsIHRva2VuLFxuICAgICAgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSxcbiAgICAgIG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdO1xuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGNoICA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgaWYgKGNoICE9PSAweDIzLyogIyAqLyB8fCBwb3MgPj0gbWF4KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIC8vIGNvdW50IGhlYWRpbmcgbGV2ZWxcbiAgbGV2ZWwgPSAxO1xuICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KCsrcG9zKTtcbiAgd2hpbGUgKGNoID09PSAweDIzLyogIyAqLyAmJiBwb3MgPCBtYXggJiYgbGV2ZWwgPD0gNikge1xuICAgIGxldmVsKys7XG4gICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdCgrK3Bvcyk7XG4gIH1cblxuICBpZiAobGV2ZWwgPiA2IHx8IChwb3MgPCBtYXggJiYgIWlzU3BhY2UoY2gpKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAoc2lsZW50KSB7IHJldHVybiB0cnVlOyB9XG5cbiAgLy8gTGV0J3MgY3V0IHRhaWxzIGxpa2UgJyAgICAjIyMgICcgZnJvbSB0aGUgZW5kIG9mIHN0cmluZ1xuXG4gIG1heCA9IHN0YXRlLnNraXBTcGFjZXNCYWNrKG1heCwgcG9zKTtcbiAgdG1wID0gc3RhdGUuc2tpcENoYXJzQmFjayhtYXgsIDB4MjMsIHBvcyk7IC8vICNcbiAgaWYgKHRtcCA+IHBvcyAmJiBpc1NwYWNlKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHRtcCAtIDEpKSkge1xuICAgIG1heCA9IHRtcDtcbiAgfVxuXG4gIHN0YXRlLmxpbmUgPSBzdGFydExpbmUgKyAxO1xuXG4gIHRva2VuICAgICAgICA9IHN0YXRlLnB1c2goJ2hlYWRpbmdfb3BlbicsICdoJyArIFN0cmluZyhsZXZlbCksIDEpO1xuICB0b2tlbi5tYXJrdXAgPSAnIyMjIyMjIyMnLnNsaWNlKDAsIGxldmVsKTtcbiAgdG9rZW4ubWFwICAgID0gWyBzdGFydExpbmUsIHN0YXRlLmxpbmUgXTtcblxuICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ2lubGluZScsICcnLCAwKTtcbiAgdG9rZW4uY29udGVudCAgPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBtYXgpLnRyaW0oKTtcbiAgdG9rZW4ubWFwICAgICAgPSBbIHN0YXJ0TGluZSwgc3RhdGUubGluZSBdO1xuICB0b2tlbi5jaGlsZHJlbiA9IFtdO1xuXG4gIHRva2VuICAgICAgICA9IHN0YXRlLnB1c2goJ2hlYWRpbmdfY2xvc2UnLCAnaCcgKyBTdHJpbmcobGV2ZWwpLCAtMSk7XG4gIHRva2VuLm1hcmt1cCA9ICcjIyMjIyMjIycuc2xpY2UoMCwgbGV2ZWwpO1xuXG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/heading.js\n");
2109
2110/***/ }),
2111
2112/***/ "../../../node_modules/markdown-it/lib/rules_block/hr.js":
2113/*!******************************************************************************************!*\
2114 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_block/hr.js ***!
2115 \******************************************************************************************/
2116/*! no static exports found */
2117/***/ (function(module, exports, __webpack_require__) {
2118
2119eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Horizontal rule\n 'use strict';\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n module.exports = function hr(state, startLine, endLine, silent) {\n var marker,\n cnt,\n ch,\n token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n marker = state.src.charCodeAt(pos++); // Check hr marker\n\n if (marker !== 0x2A\n /* * */\n && marker !== 0x2D\n /* - */\n && marker !== 0x5F\n /* _ */\n ) {\n return false;\n } // markers can be mixed with spaces, but there should be at least 3 of them\n\n\n cnt = 1;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos++);\n\n if (ch !== marker && !isSpace(ch)) {\n return false;\n }\n\n if (ch === marker) {\n cnt++;\n }\n }\n\n if (cnt < 3) {\n return false;\n }\n\n if (silent) {\n return true;\n }\n\n state.line = startLine + 1;\n token = state.push('hr', 'hr', 0);\n token.map = [startLine, state.line];\n token.markup = Array(cnt + 1).join(String.fromCharCode(marker));\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9oci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfYmxvY2svaHIuanM/ODQ1NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBIb3Jpem9udGFsIHJ1bGVcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNTcGFjZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzU3BhY2U7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBocihzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lLCBzaWxlbnQpIHtcbiAgdmFyIG1hcmtlciwgY250LCBjaCwgdG9rZW4sXG4gICAgICBwb3MgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdLFxuICAgICAgbWF4ID0gc3RhdGUuZU1hcmtzW3N0YXJ0TGluZV07XG5cbiAgLy8gaWYgaXQncyBpbmRlbnRlZCBtb3JlIHRoYW4gMyBzcGFjZXMsIGl0IHNob3VsZCBiZSBhIGNvZGUgYmxvY2tcbiAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgbWFya2VyID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKyspO1xuXG4gIC8vIENoZWNrIGhyIG1hcmtlclxuICBpZiAobWFya2VyICE9PSAweDJBLyogKiAqLyAmJlxuICAgICAgbWFya2VyICE9PSAweDJELyogLSAqLyAmJlxuICAgICAgbWFya2VyICE9PSAweDVGLyogXyAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIG1hcmtlcnMgY2FuIGJlIG1peGVkIHdpdGggc3BhY2VzLCBidXQgdGhlcmUgc2hvdWxkIGJlIGF0IGxlYXN0IDMgb2YgdGhlbVxuXG4gIGNudCA9IDE7XG4gIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKTtcbiAgICBpZiAoY2ggIT09IG1hcmtlciAmJiAhaXNTcGFjZShjaCkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgaWYgKGNoID09PSBtYXJrZXIpIHsgY250Kys7IH1cbiAgfVxuXG4gIGlmIChjbnQgPCAzKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGlmIChzaWxlbnQpIHsgcmV0dXJuIHRydWU7IH1cblxuICBzdGF0ZS5saW5lID0gc3RhcnRMaW5lICsgMTtcblxuICB0b2tlbiAgICAgICAgPSBzdGF0ZS5wdXNoKCdocicsICdocicsIDApO1xuICB0b2tlbi5tYXAgICAgPSBbIHN0YXJ0TGluZSwgc3RhdGUubGluZSBdO1xuICB0b2tlbi5tYXJrdXAgPSBBcnJheShjbnQgKyAxKS5qb2luKFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyKSk7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBRkE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/hr.js\n");
2120
2121/***/ }),
2122
2123/***/ "../../../node_modules/markdown-it/lib/rules_block/html_block.js":
2124/*!**************************************************************************************************!*\
2125 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_block/html_block.js ***!
2126 \**************************************************************************************************/
2127/*! no static exports found */
2128/***/ (function(module, exports, __webpack_require__) {
2129
2130eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // HTML block\n 'use strict';\n\n var block_names = __webpack_require__(/*! ../common/html_blocks */ \"../../../node_modules/markdown-it/lib/common/html_blocks.js\");\n\n var HTML_OPEN_CLOSE_TAG_RE = __webpack_require__(/*! ../common/html_re */ \"../../../node_modules/markdown-it/lib/common/html_re.js\").HTML_OPEN_CLOSE_TAG_RE; // An array of opening and corresponding closing sequences for html tags,\n // last argument defines whether it can terminate a paragraph or not\n //\n\n\n var HTML_SEQUENCES = [[/^<(script|pre|style)(?=(\\s|>|$))/i, /<\\/(script|pre|style)>/i, true], [/^<!--/, /-->/, true], [/^<\\?/, /\\?>/, true], [/^<![A-Z]/, />/, true], [/^<!\\[CDATA\\[/, /\\]\\]>/, true], [new RegExp('^</?(' + block_names.join('|') + ')(?=(\\\\s|/?>|$))', 'i'), /^$/, true], [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'), /^$/, false]];\n\n module.exports = function html_block(state, startLine, endLine, silent) {\n var i,\n nextLine,\n token,\n lineText,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (!state.md.options.html) {\n return false;\n }\n\n if (state.src.charCodeAt(pos) !== 0x3C\n /* < */\n ) {\n return false;\n }\n\n lineText = state.src.slice(pos, max);\n\n for (i = 0; i < HTML_SEQUENCES.length; i++) {\n if (HTML_SEQUENCES[i][0].test(lineText)) {\n break;\n }\n }\n\n if (i === HTML_SEQUENCES.length) {\n return false;\n }\n\n if (silent) {\n // true if this sequence can be a terminator, false otherwise\n return HTML_SEQUENCES[i][2];\n }\n\n nextLine = startLine + 1; // If we are here - we detected HTML block.\n // Let's roll down till block end.\n\n if (!HTML_SEQUENCES[i][1].test(lineText)) {\n for (; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) {\n break;\n }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n lineText = state.src.slice(pos, max);\n\n if (HTML_SEQUENCES[i][1].test(lineText)) {\n if (lineText.length !== 0) {\n nextLine++;\n }\n\n break;\n }\n }\n }\n\n state.line = nextLine;\n token = state.push('html_block', '', 0);\n token.map = [startLine, nextLine];\n token.content = state.getLines(startLine, nextLine, state.blkIndent, true);\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9odG1sX2Jsb2NrLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9odG1sX2Jsb2NrLmpzP2UxNzgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSFRNTCBibG9ja1xuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIGJsb2NrX25hbWVzID0gcmVxdWlyZSgnLi4vY29tbW9uL2h0bWxfYmxvY2tzJyk7XG52YXIgSFRNTF9PUEVOX0NMT1NFX1RBR19SRSA9IHJlcXVpcmUoJy4uL2NvbW1vbi9odG1sX3JlJykuSFRNTF9PUEVOX0NMT1NFX1RBR19SRTtcblxuLy8gQW4gYXJyYXkgb2Ygb3BlbmluZyBhbmQgY29ycmVzcG9uZGluZyBjbG9zaW5nIHNlcXVlbmNlcyBmb3IgaHRtbCB0YWdzLFxuLy8gbGFzdCBhcmd1bWVudCBkZWZpbmVzIHdoZXRoZXIgaXQgY2FuIHRlcm1pbmF0ZSBhIHBhcmFncmFwaCBvciBub3Rcbi8vXG52YXIgSFRNTF9TRVFVRU5DRVMgPSBbXG4gIFsgL148KHNjcmlwdHxwcmV8c3R5bGUpKD89KFxcc3w+fCQpKS9pLCAvPFxcLyhzY3JpcHR8cHJlfHN0eWxlKT4vaSwgdHJ1ZSBdLFxuICBbIC9ePCEtLS8sICAgICAgICAvLS0+LywgICB0cnVlIF0sXG4gIFsgL148XFw/LywgICAgICAgICAvXFw/Pi8sICAgdHJ1ZSBdLFxuICBbIC9ePCFbQS1aXS8sICAgICAvPi8sICAgICB0cnVlIF0sXG4gIFsgL148IVxcW0NEQVRBXFxbLywgL1xcXVxcXT4vLCB0cnVlIF0sXG4gIFsgbmV3IFJlZ0V4cCgnXjwvPygnICsgYmxvY2tfbmFtZXMuam9pbignfCcpICsgJykoPz0oXFxcXHN8Lz8+fCQpKScsICdpJyksIC9eJC8sIHRydWUgXSxcbiAgWyBuZXcgUmVnRXhwKEhUTUxfT1BFTl9DTE9TRV9UQUdfUkUuc291cmNlICsgJ1xcXFxzKiQnKSwgIC9eJC8sIGZhbHNlIF1cbl07XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBodG1sX2Jsb2NrKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUsIHNpbGVudCkge1xuICB2YXIgaSwgbmV4dExpbmUsIHRva2VuLCBsaW5lVGV4dCxcbiAgICAgIHBvcyA9IHN0YXRlLmJNYXJrc1tzdGFydExpbmVdICsgc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV0sXG4gICAgICBtYXggPSBzdGF0ZS5lTWFya3Nbc3RhcnRMaW5lXTtcblxuICAvLyBpZiBpdCdzIGluZGVudGVkIG1vcmUgdGhhbiAzIHNwYWNlcywgaXQgc2hvdWxkIGJlIGEgY29kZSBibG9ja1xuICBpZiAoc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAoIXN0YXRlLm1kLm9wdGlvbnMuaHRtbCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMHgzQy8qIDwgKi8pIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgbGluZVRleHQgPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBtYXgpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBIVE1MX1NFUVVFTkNFUy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChIVE1MX1NFUVVFTkNFU1tpXVswXS50ZXN0KGxpbmVUZXh0KSkgeyBicmVhazsgfVxuICB9XG5cbiAgaWYgKGkgPT09IEhUTUxfU0VRVUVOQ0VTLmxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAoc2lsZW50KSB7XG4gICAgLy8gdHJ1ZSBpZiB0aGlzIHNlcXVlbmNlIGNhbiBiZSBhIHRlcm1pbmF0b3IsIGZhbHNlIG90aGVyd2lzZVxuICAgIHJldHVybiBIVE1MX1NFUVVFTkNFU1tpXVsyXTtcbiAgfVxuXG4gIG5leHRMaW5lID0gc3RhcnRMaW5lICsgMTtcblxuICAvLyBJZiB3ZSBhcmUgaGVyZSAtIHdlIGRldGVjdGVkIEhUTUwgYmxvY2suXG4gIC8vIExldCdzIHJvbGwgZG93biB0aWxsIGJsb2NrIGVuZC5cbiAgaWYgKCFIVE1MX1NFUVVFTkNFU1tpXVsxXS50ZXN0KGxpbmVUZXh0KSkge1xuICAgIGZvciAoOyBuZXh0TGluZSA8IGVuZExpbmU7IG5leHRMaW5lKyspIHtcbiAgICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIDwgc3RhdGUuYmxrSW5kZW50KSB7IGJyZWFrOyB9XG5cbiAgICAgIHBvcyA9IHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gKyBzdGF0ZS50U2hpZnRbbmV4dExpbmVdO1xuICAgICAgbWF4ID0gc3RhdGUuZU1hcmtzW25leHRMaW5lXTtcbiAgICAgIGxpbmVUZXh0ID0gc3RhdGUuc3JjLnNsaWNlKHBvcywgbWF4KTtcblxuICAgICAgaWYgKEhUTUxfU0VRVUVOQ0VTW2ldWzFdLnRlc3QobGluZVRleHQpKSB7XG4gICAgICAgIGlmIChsaW5lVGV4dC5sZW5ndGggIT09IDApIHsgbmV4dExpbmUrKzsgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0ZS5saW5lID0gbmV4dExpbmU7XG5cbiAgdG9rZW4gICAgICAgICA9IHN0YXRlLnB1c2goJ2h0bWxfYmxvY2snLCAnJywgMCk7XG4gIHRva2VuLm1hcCAgICAgPSBbIHN0YXJ0TGluZSwgbmV4dExpbmUgXTtcbiAgdG9rZW4uY29udGVudCA9IHN0YXRlLmdldExpbmVzKHN0YXJ0TGluZSwgbmV4dExpbmUsIHN0YXRlLmJsa0luZGVudCwgdHJ1ZSk7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQVVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFJQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/html_block.js\n");
2131
2132/***/ }),
2133
2134/***/ "../../../node_modules/markdown-it/lib/rules_block/lheading.js":
2135/*!************************************************************************************************!*\
2136 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_block/lheading.js ***!
2137 \************************************************************************************************/
2138/*! no static exports found */
2139/***/ (function(module, exports, __webpack_require__) {
2140
2141eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // lheading (---, ===)\n 'use strict';\n\n module.exports = function lheading(state, startLine, endLine\n /*, silent*/\n ) {\n var content,\n terminate,\n i,\n l,\n token,\n pos,\n max,\n level,\n marker,\n nextLine = startLine + 1,\n oldParentType,\n terminatorRules = state.md.block.ruler.getRules('paragraph'); // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n oldParentType = state.parentType;\n state.parentType = 'paragraph'; // use paragraph to match terminatorRules\n // jump line-by-line until empty one or EOF\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) {\n continue;\n } //\n // Check for underline in setext header\n //\n\n\n if (state.sCount[nextLine] >= state.blkIndent) {\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max) {\n marker = state.src.charCodeAt(pos);\n\n if (marker === 0x2D\n /* - */\n || marker === 0x3D\n /* = */\n ) {\n pos = state.skipChars(pos, marker);\n pos = state.skipSpaces(pos);\n\n if (pos >= max) {\n level = marker === 0x3D\n /* = */\n ? 1 : 2;\n break;\n }\n }\n }\n } // quirk for blockquotes, this line should already be checked by that rule\n\n\n if (state.sCount[nextLine] < 0) {\n continue;\n } // Some tags can terminate paragraph without empty line.\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n }\n\n if (!level) {\n // Didn't find valid underline\n return false;\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n state.line = nextLine + 1;\n token = state.push('heading_open', 'h' + String(level), 1);\n token.markup = String.fromCharCode(marker);\n token.map = [startLine, state.line];\n token = state.push('inline', '', 0);\n token.content = content;\n token.map = [startLine, state.line - 1];\n token.children = [];\n token = state.push('heading_close', 'h' + String(level), -1);\n token.markup = String.fromCharCode(marker);\n state.parentType = oldParentType;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9saGVhZGluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfYmxvY2svbGhlYWRpbmcuanM/ZWVjMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBsaGVhZGluZyAoLS0tLCA9PT0pXG5cbid1c2Ugc3RyaWN0JztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxoZWFkaW5nKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUvKiwgc2lsZW50Ki8pIHtcbiAgdmFyIGNvbnRlbnQsIHRlcm1pbmF0ZSwgaSwgbCwgdG9rZW4sIHBvcywgbWF4LCBsZXZlbCwgbWFya2VyLFxuICAgICAgbmV4dExpbmUgPSBzdGFydExpbmUgKyAxLCBvbGRQYXJlbnRUeXBlLFxuICAgICAgdGVybWluYXRvclJ1bGVzID0gc3RhdGUubWQuYmxvY2sucnVsZXIuZ2V0UnVsZXMoJ3BhcmFncmFwaCcpO1xuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIG9sZFBhcmVudFR5cGUgPSBzdGF0ZS5wYXJlbnRUeXBlO1xuICBzdGF0ZS5wYXJlbnRUeXBlID0gJ3BhcmFncmFwaCc7IC8vIHVzZSBwYXJhZ3JhcGggdG8gbWF0Y2ggdGVybWluYXRvclJ1bGVzXG5cbiAgLy8ganVtcCBsaW5lLWJ5LWxpbmUgdW50aWwgZW1wdHkgb25lIG9yIEVPRlxuICBmb3IgKDsgbmV4dExpbmUgPCBlbmRMaW5lICYmICFzdGF0ZS5pc0VtcHR5KG5leHRMaW5lKTsgbmV4dExpbmUrKykge1xuICAgIC8vIHRoaXMgd291bGQgYmUgYSBjb2RlIGJsb2NrIG5vcm1hbGx5LCBidXQgYWZ0ZXIgcGFyYWdyYXBoXG4gICAgLy8gaXQncyBjb25zaWRlcmVkIGEgbGF6eSBjb250aW51YXRpb24gcmVnYXJkbGVzcyBvZiB3aGF0J3MgdGhlcmVcbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+IDMpIHsgY29udGludWU7IH1cblxuICAgIC8vXG4gICAgLy8gQ2hlY2sgZm9yIHVuZGVybGluZSBpbiBzZXRleHQgaGVhZGVyXG4gICAgLy9cbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSA+PSBzdGF0ZS5ibGtJbmRlbnQpIHtcbiAgICAgIHBvcyA9IHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gKyBzdGF0ZS50U2hpZnRbbmV4dExpbmVdO1xuICAgICAgbWF4ID0gc3RhdGUuZU1hcmtzW25leHRMaW5lXTtcblxuICAgICAgaWYgKHBvcyA8IG1heCkge1xuICAgICAgICBtYXJrZXIgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuXG4gICAgICAgIGlmIChtYXJrZXIgPT09IDB4MkQvKiAtICovIHx8IG1hcmtlciA9PT0gMHgzRC8qID0gKi8pIHtcbiAgICAgICAgICBwb3MgPSBzdGF0ZS5za2lwQ2hhcnMocG9zLCBtYXJrZXIpO1xuICAgICAgICAgIHBvcyA9IHN0YXRlLnNraXBTcGFjZXMocG9zKTtcblxuICAgICAgICAgIGlmIChwb3MgPj0gbWF4KSB7XG4gICAgICAgICAgICBsZXZlbCA9IChtYXJrZXIgPT09IDB4M0QvKiA9ICovID8gMSA6IDIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gcXVpcmsgZm9yIGJsb2NrcXVvdGVzLCB0aGlzIGxpbmUgc2hvdWxkIGFscmVhZHkgYmUgY2hlY2tlZCBieSB0aGF0IHJ1bGVcbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSA8IDApIHsgY29udGludWU7IH1cblxuICAgIC8vIFNvbWUgdGFncyBjYW4gdGVybWluYXRlIHBhcmFncmFwaCB3aXRob3V0IGVtcHR5IGxpbmUuXG4gICAgdGVybWluYXRlID0gZmFsc2U7XG4gICAgZm9yIChpID0gMCwgbCA9IHRlcm1pbmF0b3JSdWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmICh0ZXJtaW5hdG9yUnVsZXNbaV0oc3RhdGUsIG5leHRMaW5lLCBlbmRMaW5lLCB0cnVlKSkge1xuICAgICAgICB0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRlcm1pbmF0ZSkgeyBicmVhazsgfVxuICB9XG5cbiAgaWYgKCFsZXZlbCkge1xuICAgIC8vIERpZG4ndCBmaW5kIHZhbGlkIHVuZGVybGluZVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnRlbnQgPSBzdGF0ZS5nZXRMaW5lcyhzdGFydExpbmUsIG5leHRMaW5lLCBzdGF0ZS5ibGtJbmRlbnQsIGZhbHNlKS50cmltKCk7XG5cbiAgc3RhdGUubGluZSA9IG5leHRMaW5lICsgMTtcblxuICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ2hlYWRpbmdfb3BlbicsICdoJyArIFN0cmluZyhsZXZlbCksIDEpO1xuICB0b2tlbi5tYXJrdXAgICA9IFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyKTtcbiAgdG9rZW4ubWFwICAgICAgPSBbIHN0YXJ0TGluZSwgc3RhdGUubGluZSBdO1xuXG4gIHRva2VuICAgICAgICAgID0gc3RhdGUucHVzaCgnaW5saW5lJywgJycsIDApO1xuICB0b2tlbi5jb250ZW50ICA9IGNvbnRlbnQ7XG4gIHRva2VuLm1hcCAgICAgID0gWyBzdGFydExpbmUsIHN0YXRlLmxpbmUgLSAxIF07XG4gIHRva2VuLmNoaWxkcmVuID0gW107XG5cbiAgdG9rZW4gICAgICAgICAgPSBzdGF0ZS5wdXNoKCdoZWFkaW5nX2Nsb3NlJywgJ2gnICsgU3RyaW5nKGxldmVsKSwgLTEpO1xuICB0b2tlbi5tYXJrdXAgICA9IFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyKTtcblxuICBzdGF0ZS5wYXJlbnRUeXBlID0gb2xkUGFyZW50VHlwZTtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFJQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/lheading.js\n");
2142
2143/***/ }),
2144
2145/***/ "../../../node_modules/markdown-it/lib/rules_block/list.js":
2146/*!********************************************************************************************!*\
2147 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_block/list.js ***!
2148 \********************************************************************************************/
2149/*! no static exports found */
2150/***/ (function(module, exports, __webpack_require__) {
2151
2152eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Lists\n 'use strict';\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace; // Search `[-+*][\\n ]`, returns next pos after marker on success\n // or -1 on fail.\n\n\n function skipBulletListMarker(state, startLine) {\n var marker, pos, max, ch;\n pos = state.bMarks[startLine] + state.tShift[startLine];\n max = state.eMarks[startLine];\n marker = state.src.charCodeAt(pos++); // Check bullet\n\n if (marker !== 0x2A\n /* * */\n && marker !== 0x2D\n /* - */\n && marker !== 0x2B\n /* + */\n ) {\n return -1;\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n // \" -test \" - is not a list item\n return -1;\n }\n }\n\n return pos;\n } // Search `\\d+[.)][\\n ]`, returns next pos after marker on success\n // or -1 on fail.\n\n\n function skipOrderedListMarker(state, startLine) {\n var ch,\n start = state.bMarks[startLine] + state.tShift[startLine],\n pos = start,\n max = state.eMarks[startLine]; // List marker should have at least 2 chars (digit + dot)\n\n if (pos + 1 >= max) {\n return -1;\n }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch < 0x30\n /* 0 */\n || ch > 0x39\n /* 9 */\n ) {\n return -1;\n }\n\n for (;;) {\n // EOL -> fail\n if (pos >= max) {\n return -1;\n }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch >= 0x30\n /* 0 */\n && ch <= 0x39\n /* 9 */\n ) {\n // List marker should have no more than 9 digits\n // (prevents integer overflow in browsers)\n if (pos - start >= 10) {\n return -1;\n }\n\n continue;\n } // found valid marker\n\n\n if (ch === 0x29\n /* ) */\n || ch === 0x2e\n /* . */\n ) {\n break;\n }\n\n return -1;\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n // \" 1.test \" - is not a list item\n return -1;\n }\n }\n\n return pos;\n }\n\n function markTightParagraphs(state, idx) {\n var i,\n l,\n level = state.level + 2;\n\n for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n state.tokens[i + 2].hidden = true;\n state.tokens[i].hidden = true;\n i += 2;\n }\n }\n }\n\n module.exports = function list(state, startLine, endLine, silent) {\n var ch,\n contentStart,\n i,\n indent,\n indentAfterMarker,\n initial,\n isOrdered,\n itemLines,\n l,\n listLines,\n listTokIdx,\n markerCharCode,\n markerValue,\n max,\n nextLine,\n offset,\n oldListIndent,\n oldParentType,\n oldSCount,\n oldTShift,\n oldTight,\n pos,\n posAfterMarker,\n prevEmptyEnd,\n start,\n terminate,\n terminatorRules,\n token,\n isTerminatingParagraph = false,\n tight = true; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n } // Special case:\n // - item 1\n // - item 2\n // - item 3\n // - item 4\n // - this one is a paragraph continuation\n\n\n if (state.listIndent >= 0 && state.sCount[startLine] - state.listIndent >= 4 && state.sCount[startLine] < state.blkIndent) {\n return false;\n } // limit conditions when list can interrupt\n // a paragraph (validation mode only)\n\n\n if (silent && state.parentType === 'paragraph') {\n // Next list item should still terminate previous list item;\n //\n // This code can fail if plugins use blkIndent as well as lists,\n // but I hope the spec gets fixed long before that happens.\n //\n if (state.tShift[startLine] >= state.blkIndent) {\n isTerminatingParagraph = true;\n }\n } // Detect list type and position after marker\n\n\n if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) {\n isOrdered = true;\n start = state.bMarks[startLine] + state.tShift[startLine];\n markerValue = Number(state.src.substr(start, posAfterMarker - start - 1)); // If we're starting a new ordered list right after\n // a paragraph, it should start with 1.\n\n if (isTerminatingParagraph && markerValue !== 1) return false;\n } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) {\n isOrdered = false;\n } else {\n return false;\n } // If we're starting a new unordered list right after\n // a paragraph, first line should not be empty.\n\n\n if (isTerminatingParagraph) {\n if (state.skipSpaces(posAfterMarker) >= state.eMarks[startLine]) return false;\n } // We should terminate list on style change. Remember first one to compare.\n\n\n markerCharCode = state.src.charCodeAt(posAfterMarker - 1); // For validation mode we can terminate immediately\n\n if (silent) {\n return true;\n } // Start list\n\n\n listTokIdx = state.tokens.length;\n\n if (isOrdered) {\n token = state.push('ordered_list_open', 'ol', 1);\n\n if (markerValue !== 1) {\n token.attrs = [['start', markerValue]];\n }\n } else {\n token = state.push('bullet_list_open', 'ul', 1);\n }\n\n token.map = listLines = [startLine, 0];\n token.markup = String.fromCharCode(markerCharCode); //\n // Iterate list items\n //\n\n nextLine = startLine;\n prevEmptyEnd = false;\n terminatorRules = state.md.block.ruler.getRules('list');\n oldParentType = state.parentType;\n state.parentType = 'list';\n\n while (nextLine < endLine) {\n pos = posAfterMarker;\n max = state.eMarks[nextLine];\n initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[startLine] + state.tShift[startLine]);\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine]) % 4;\n } else if (ch === 0x20) {\n offset++;\n } else {\n break;\n }\n\n pos++;\n }\n\n contentStart = pos;\n\n if (contentStart >= max) {\n // trimming space in \"- \\n 3\" case, indent is 1 here\n indentAfterMarker = 1;\n } else {\n indentAfterMarker = offset - initial;\n } // If we have more than 4 spaces, the indent is 1\n // (the rest is just indented code block)\n\n\n if (indentAfterMarker > 4) {\n indentAfterMarker = 1;\n } // \" - test\"\n // ^^^^^ - calculating total length of this thing\n\n\n indent = initial + indentAfterMarker; // Run subparser & write tokens\n\n token = state.push('list_item_open', 'li', 1);\n token.markup = String.fromCharCode(markerCharCode);\n token.map = itemLines = [startLine, 0]; // change current state, then restore it after parser subcall\n\n oldTight = state.tight;\n oldTShift = state.tShift[startLine];\n oldSCount = state.sCount[startLine]; // - example list\n // ^ listIndent position will be here\n // ^ blkIndent position will be here\n //\n\n oldListIndent = state.listIndent;\n state.listIndent = state.blkIndent;\n state.blkIndent = indent;\n state.tight = true;\n state.tShift[startLine] = contentStart - state.bMarks[startLine];\n state.sCount[startLine] = offset;\n\n if (contentStart >= max && state.isEmpty(startLine + 1)) {\n // workaround for this case\n // (list item is empty, list terminates before \"foo\"):\n // ~~~~~~~~\n // -\n //\n // foo\n // ~~~~~~~~\n state.line = Math.min(state.line + 2, endLine);\n } else {\n state.md.block.tokenize(state, startLine, endLine, true);\n } // If any of list item is tight, mark list as tight\n\n\n if (!state.tight || prevEmptyEnd) {\n tight = false;\n } // Item become loose if finish with empty line,\n // but we should filter last element, because it means list finish\n\n\n prevEmptyEnd = state.line - startLine > 1 && state.isEmpty(state.line - 1);\n state.blkIndent = state.listIndent;\n state.listIndent = oldListIndent;\n state.tShift[startLine] = oldTShift;\n state.sCount[startLine] = oldSCount;\n state.tight = oldTight;\n token = state.push('list_item_close', 'li', -1);\n token.markup = String.fromCharCode(markerCharCode);\n nextLine = startLine = state.line;\n itemLines[1] = nextLine;\n contentStart = state.bMarks[startLine];\n\n if (nextLine >= endLine) {\n break;\n } //\n // Try to check if list is terminated or continued.\n //\n\n\n if (state.sCount[nextLine] < state.blkIndent) {\n break;\n } // if it's indented more than 3 spaces, it should be a code block\n\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n break;\n } // fail if terminating block found\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n } // fail if list has another type\n\n\n if (isOrdered) {\n posAfterMarker = skipOrderedListMarker(state, nextLine);\n\n if (posAfterMarker < 0) {\n break;\n }\n } else {\n posAfterMarker = skipBulletListMarker(state, nextLine);\n\n if (posAfterMarker < 0) {\n break;\n }\n }\n\n if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) {\n break;\n }\n } // Finalize list\n\n\n if (isOrdered) {\n token = state.push('ordered_list_close', 'ol', -1);\n } else {\n token = state.push('bullet_list_close', 'ul', -1);\n }\n\n token.markup = String.fromCharCode(markerCharCode);\n listLines[1] = nextLine;\n state.line = nextLine;\n state.parentType = oldParentType; // mark paragraphs tight if needed\n\n if (tight) {\n markTightParagraphs(state, listTokIdx);\n }\n\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9saXN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9saXN0LmpzPzRjZTQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gTGlzdHNcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNTcGFjZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzU3BhY2U7XG5cblxuLy8gU2VhcmNoIGBbLSsqXVtcXG4gXWAsIHJldHVybnMgbmV4dCBwb3MgYWZ0ZXIgbWFya2VyIG9uIHN1Y2Nlc3Ncbi8vIG9yIC0xIG9uIGZhaWwuXG5mdW5jdGlvbiBza2lwQnVsbGV0TGlzdE1hcmtlcihzdGF0ZSwgc3RhcnRMaW5lKSB7XG4gIHZhciBtYXJrZXIsIHBvcywgbWF4LCBjaDtcblxuICBwb3MgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdO1xuICBtYXggPSBzdGF0ZS5lTWFya3Nbc3RhcnRMaW5lXTtcblxuICBtYXJrZXIgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MrKyk7XG4gIC8vIENoZWNrIGJ1bGxldFxuICBpZiAobWFya2VyICE9PSAweDJBLyogKiAqLyAmJlxuICAgICAgbWFya2VyICE9PSAweDJELyogLSAqLyAmJlxuICAgICAgbWFya2VyICE9PSAweDJCLyogKyAqLykge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIGlmIChwb3MgPCBtYXgpIHtcbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgICBpZiAoIWlzU3BhY2UoY2gpKSB7XG4gICAgICAvLyBcIiAtdGVzdCBcIiAtIGlzIG5vdCBhIGxpc3QgaXRlbVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwb3M7XG59XG5cbi8vIFNlYXJjaCBgXFxkK1suKV1bXFxuIF1gLCByZXR1cm5zIG5leHQgcG9zIGFmdGVyIG1hcmtlciBvbiBzdWNjZXNzXG4vLyBvciAtMSBvbiBmYWlsLlxuZnVuY3Rpb24gc2tpcE9yZGVyZWRMaXN0TWFya2VyKHN0YXRlLCBzdGFydExpbmUpIHtcbiAgdmFyIGNoLFxuICAgICAgc3RhcnQgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdLFxuICAgICAgcG9zID0gc3RhcnQsXG4gICAgICBtYXggPSBzdGF0ZS5lTWFya3Nbc3RhcnRMaW5lXTtcblxuICAvLyBMaXN0IG1hcmtlciBzaG91bGQgaGF2ZSBhdCBsZWFzdCAyIGNoYXJzIChkaWdpdCArIGRvdClcbiAgaWYgKHBvcyArIDEgPj0gbWF4KSB7IHJldHVybiAtMTsgfVxuXG4gIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKyspO1xuXG4gIGlmIChjaCA8IDB4MzAvKiAwICovIHx8IGNoID4gMHgzOS8qIDkgKi8pIHsgcmV0dXJuIC0xOyB9XG5cbiAgZm9yICg7Oykge1xuICAgIC8vIEVPTCAtPiBmYWlsXG4gICAgaWYgKHBvcyA+PSBtYXgpIHsgcmV0dXJuIC0xOyB9XG5cbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKTtcblxuICAgIGlmIChjaCA+PSAweDMwLyogMCAqLyAmJiBjaCA8PSAweDM5LyogOSAqLykge1xuXG4gICAgICAvLyBMaXN0IG1hcmtlciBzaG91bGQgaGF2ZSBubyBtb3JlIHRoYW4gOSBkaWdpdHNcbiAgICAgIC8vIChwcmV2ZW50cyBpbnRlZ2VyIG92ZXJmbG93IGluIGJyb3dzZXJzKVxuICAgICAgaWYgKHBvcyAtIHN0YXJ0ID49IDEwKSB7IHJldHVybiAtMTsgfVxuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBmb3VuZCB2YWxpZCBtYXJrZXJcbiAgICBpZiAoY2ggPT09IDB4MjkvKiApICovIHx8IGNoID09PSAweDJlLyogLiAqLykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIC0xO1xuICB9XG5cblxuICBpZiAocG9zIDwgbWF4KSB7XG4gICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuXG4gICAgaWYgKCFpc1NwYWNlKGNoKSkge1xuICAgICAgLy8gXCIgMS50ZXN0IFwiIC0gaXMgbm90IGEgbGlzdCBpdGVtXG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiBwb3M7XG59XG5cbmZ1bmN0aW9uIG1hcmtUaWdodFBhcmFncmFwaHMoc3RhdGUsIGlkeCkge1xuICB2YXIgaSwgbCxcbiAgICAgIGxldmVsID0gc3RhdGUubGV2ZWwgKyAyO1xuXG4gIGZvciAoaSA9IGlkeCArIDIsIGwgPSBzdGF0ZS50b2tlbnMubGVuZ3RoIC0gMjsgaSA8IGw7IGkrKykge1xuICAgIGlmIChzdGF0ZS50b2tlbnNbaV0ubGV2ZWwgPT09IGxldmVsICYmIHN0YXRlLnRva2Vuc1tpXS50eXBlID09PSAncGFyYWdyYXBoX29wZW4nKSB7XG4gICAgICBzdGF0ZS50b2tlbnNbaSArIDJdLmhpZGRlbiA9IHRydWU7XG4gICAgICBzdGF0ZS50b2tlbnNbaV0uaGlkZGVuID0gdHJ1ZTtcbiAgICAgIGkgKz0gMjtcbiAgICB9XG4gIH1cbn1cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxpc3Qoc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSwgc2lsZW50KSB7XG4gIHZhciBjaCxcbiAgICAgIGNvbnRlbnRTdGFydCxcbiAgICAgIGksXG4gICAgICBpbmRlbnQsXG4gICAgICBpbmRlbnRBZnRlck1hcmtlcixcbiAgICAgIGluaXRpYWwsXG4gICAgICBpc09yZGVyZWQsXG4gICAgICBpdGVtTGluZXMsXG4gICAgICBsLFxuICAgICAgbGlzdExpbmVzLFxuICAgICAgbGlzdFRva0lkeCxcbiAgICAgIG1hcmtlckNoYXJDb2RlLFxuICAgICAgbWFya2VyVmFsdWUsXG4gICAgICBtYXgsXG4gICAgICBuZXh0TGluZSxcbiAgICAgIG9mZnNldCxcbiAgICAgIG9sZExpc3RJbmRlbnQsXG4gICAgICBvbGRQYXJlbnRUeXBlLFxuICAgICAgb2xkU0NvdW50LFxuICAgICAgb2xkVFNoaWZ0LFxuICAgICAgb2xkVGlnaHQsXG4gICAgICBwb3MsXG4gICAgICBwb3NBZnRlck1hcmtlcixcbiAgICAgIHByZXZFbXB0eUVuZCxcbiAgICAgIHN0YXJ0LFxuICAgICAgdGVybWluYXRlLFxuICAgICAgdGVybWluYXRvclJ1bGVzLFxuICAgICAgdG9rZW4sXG4gICAgICBpc1Rlcm1pbmF0aW5nUGFyYWdyYXBoID0gZmFsc2UsXG4gICAgICB0aWdodCA9IHRydWU7XG5cbiAgLy8gaWYgaXQncyBpbmRlbnRlZCBtb3JlIHRoYW4gMyBzcGFjZXMsIGl0IHNob3VsZCBiZSBhIGNvZGUgYmxvY2tcbiAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgLy8gU3BlY2lhbCBjYXNlOlxuICAvLyAgLSBpdGVtIDFcbiAgLy8gICAtIGl0ZW0gMlxuICAvLyAgICAtIGl0ZW0gM1xuICAvLyAgICAgLSBpdGVtIDRcbiAgLy8gICAgICAtIHRoaXMgb25lIGlzIGEgcGFyYWdyYXBoIGNvbnRpbnVhdGlvblxuICBpZiAoc3RhdGUubGlzdEluZGVudCA+PSAwICYmXG4gICAgICBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmxpc3RJbmRlbnQgPj0gNCAmJlxuICAgICAgc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gPCBzdGF0ZS5ibGtJbmRlbnQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBsaW1pdCBjb25kaXRpb25zIHdoZW4gbGlzdCBjYW4gaW50ZXJydXB0XG4gIC8vIGEgcGFyYWdyYXBoICh2YWxpZGF0aW9uIG1vZGUgb25seSlcbiAgaWYgKHNpbGVudCAmJiBzdGF0ZS5wYXJlbnRUeXBlID09PSAncGFyYWdyYXBoJykge1xuICAgIC8vIE5leHQgbGlzdCBpdGVtIHNob3VsZCBzdGlsbCB0ZXJtaW5hdGUgcHJldmlvdXMgbGlzdCBpdGVtO1xuICAgIC8vXG4gICAgLy8gVGhpcyBjb2RlIGNhbiBmYWlsIGlmIHBsdWdpbnMgdXNlIGJsa0luZGVudCBhcyB3ZWxsIGFzIGxpc3RzLFxuICAgIC8vIGJ1dCBJIGhvcGUgdGhlIHNwZWMgZ2V0cyBmaXhlZCBsb25nIGJlZm9yZSB0aGF0IGhhcHBlbnMuXG4gICAgLy9cbiAgICBpZiAoc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV0gPj0gc3RhdGUuYmxrSW5kZW50KSB7XG4gICAgICBpc1Rlcm1pbmF0aW5nUGFyYWdyYXBoID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBEZXRlY3QgbGlzdCB0eXBlIGFuZCBwb3NpdGlvbiBhZnRlciBtYXJrZXJcbiAgaWYgKChwb3NBZnRlck1hcmtlciA9IHNraXBPcmRlcmVkTGlzdE1hcmtlcihzdGF0ZSwgc3RhcnRMaW5lKSkgPj0gMCkge1xuICAgIGlzT3JkZXJlZCA9IHRydWU7XG4gICAgc3RhcnQgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdO1xuICAgIG1hcmtlclZhbHVlID0gTnVtYmVyKHN0YXRlLnNyYy5zdWJzdHIoc3RhcnQsIHBvc0FmdGVyTWFya2VyIC0gc3RhcnQgLSAxKSk7XG5cbiAgICAvLyBJZiB3ZSdyZSBzdGFydGluZyBhIG5ldyBvcmRlcmVkIGxpc3QgcmlnaHQgYWZ0ZXJcbiAgICAvLyBhIHBhcmFncmFwaCwgaXQgc2hvdWxkIHN0YXJ0IHdpdGggMS5cbiAgICBpZiAoaXNUZXJtaW5hdGluZ1BhcmFncmFwaCAmJiBtYXJrZXJWYWx1ZSAhPT0gMSkgcmV0dXJuIGZhbHNlO1xuXG4gIH0gZWxzZSBpZiAoKHBvc0FmdGVyTWFya2VyID0gc2tpcEJ1bGxldExpc3RNYXJrZXIoc3RhdGUsIHN0YXJ0TGluZSkpID49IDApIHtcbiAgICBpc09yZGVyZWQgPSBmYWxzZTtcblxuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIElmIHdlJ3JlIHN0YXJ0aW5nIGEgbmV3IHVub3JkZXJlZCBsaXN0IHJpZ2h0IGFmdGVyXG4gIC8vIGEgcGFyYWdyYXBoLCBmaXJzdCBsaW5lIHNob3VsZCBub3QgYmUgZW1wdHkuXG4gIGlmIChpc1Rlcm1pbmF0aW5nUGFyYWdyYXBoKSB7XG4gICAgaWYgKHN0YXRlLnNraXBTcGFjZXMocG9zQWZ0ZXJNYXJrZXIpID49IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdKSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBXZSBzaG91bGQgdGVybWluYXRlIGxpc3Qgb24gc3R5bGUgY2hhbmdlLiBSZW1lbWJlciBmaXJzdCBvbmUgdG8gY29tcGFyZS5cbiAgbWFya2VyQ2hhckNvZGUgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3NBZnRlck1hcmtlciAtIDEpO1xuXG4gIC8vIEZvciB2YWxpZGF0aW9uIG1vZGUgd2UgY2FuIHRlcm1pbmF0ZSBpbW1lZGlhdGVseVxuICBpZiAoc2lsZW50KSB7IHJldHVybiB0cnVlOyB9XG5cbiAgLy8gU3RhcnQgbGlzdFxuICBsaXN0VG9rSWR4ID0gc3RhdGUudG9rZW5zLmxlbmd0aDtcblxuICBpZiAoaXNPcmRlcmVkKSB7XG4gICAgdG9rZW4gICAgICAgPSBzdGF0ZS5wdXNoKCdvcmRlcmVkX2xpc3Rfb3BlbicsICdvbCcsIDEpO1xuICAgIGlmIChtYXJrZXJWYWx1ZSAhPT0gMSkge1xuICAgICAgdG9rZW4uYXR0cnMgPSBbIFsgJ3N0YXJ0JywgbWFya2VyVmFsdWUgXSBdO1xuICAgIH1cblxuICB9IGVsc2Uge1xuICAgIHRva2VuICAgICAgID0gc3RhdGUucHVzaCgnYnVsbGV0X2xpc3Rfb3BlbicsICd1bCcsIDEpO1xuICB9XG5cbiAgdG9rZW4ubWFwICAgID0gbGlzdExpbmVzID0gWyBzdGFydExpbmUsIDAgXTtcbiAgdG9rZW4ubWFya3VwID0gU3RyaW5nLmZyb21DaGFyQ29kZShtYXJrZXJDaGFyQ29kZSk7XG5cbiAgLy9cbiAgLy8gSXRlcmF0ZSBsaXN0IGl0ZW1zXG4gIC8vXG5cbiAgbmV4dExpbmUgPSBzdGFydExpbmU7XG4gIHByZXZFbXB0eUVuZCA9IGZhbHNlO1xuICB0ZXJtaW5hdG9yUnVsZXMgPSBzdGF0ZS5tZC5ibG9jay5ydWxlci5nZXRSdWxlcygnbGlzdCcpO1xuXG4gIG9sZFBhcmVudFR5cGUgPSBzdGF0ZS5wYXJlbnRUeXBlO1xuICBzdGF0ZS5wYXJlbnRUeXBlID0gJ2xpc3QnO1xuXG4gIHdoaWxlIChuZXh0TGluZSA8IGVuZExpbmUpIHtcbiAgICBwb3MgPSBwb3NBZnRlck1hcmtlcjtcbiAgICBtYXggPSBzdGF0ZS5lTWFya3NbbmV4dExpbmVdO1xuXG4gICAgaW5pdGlhbCA9IG9mZnNldCA9IHN0YXRlLnNDb3VudFtuZXh0TGluZV0gKyBwb3NBZnRlck1hcmtlciAtIChzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdKTtcblxuICAgIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICAgIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcblxuICAgICAgaWYgKGNoID09PSAweDA5KSB7XG4gICAgICAgIG9mZnNldCArPSA0IC0gKG9mZnNldCArIHN0YXRlLmJzQ291bnRbbmV4dExpbmVdKSAlIDQ7XG4gICAgICB9IGVsc2UgaWYgKGNoID09PSAweDIwKSB7XG4gICAgICAgIG9mZnNldCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHBvcysrO1xuICAgIH1cblxuICAgIGNvbnRlbnRTdGFydCA9IHBvcztcblxuICAgIGlmIChjb250ZW50U3RhcnQgPj0gbWF4KSB7XG4gICAgICAvLyB0cmltbWluZyBzcGFjZSBpbiBcIi0gICAgXFxuICAzXCIgY2FzZSwgaW5kZW50IGlzIDEgaGVyZVxuICAgICAgaW5kZW50QWZ0ZXJNYXJrZXIgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbmRlbnRBZnRlck1hcmtlciA9IG9mZnNldCAtIGluaXRpYWw7XG4gICAgfVxuXG4gICAgLy8gSWYgd2UgaGF2ZSBtb3JlIHRoYW4gNCBzcGFjZXMsIHRoZSBpbmRlbnQgaXMgMVxuICAgIC8vICh0aGUgcmVzdCBpcyBqdXN0IGluZGVudGVkIGNvZGUgYmxvY2spXG4gICAgaWYgKGluZGVudEFmdGVyTWFya2VyID4gNCkgeyBpbmRlbnRBZnRlck1hcmtlciA9IDE7IH1cblxuICAgIC8vIFwiICAtICB0ZXN0XCJcbiAgICAvLyAgXl5eXl4gLSBjYWxjdWxhdGluZyB0b3RhbCBsZW5ndGggb2YgdGhpcyB0aGluZ1xuICAgIGluZGVudCA9IGluaXRpYWwgKyBpbmRlbnRBZnRlck1hcmtlcjtcblxuICAgIC8vIFJ1biBzdWJwYXJzZXIgJiB3cml0ZSB0b2tlbnNcbiAgICB0b2tlbiAgICAgICAgPSBzdGF0ZS5wdXNoKCdsaXN0X2l0ZW1fb3BlbicsICdsaScsIDEpO1xuICAgIHRva2VuLm1hcmt1cCA9IFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyQ2hhckNvZGUpO1xuICAgIHRva2VuLm1hcCAgICA9IGl0ZW1MaW5lcyA9IFsgc3RhcnRMaW5lLCAwIF07XG5cbiAgICAvLyBjaGFuZ2UgY3VycmVudCBzdGF0ZSwgdGhlbiByZXN0b3JlIGl0IGFmdGVyIHBhcnNlciBzdWJjYWxsXG4gICAgb2xkVGlnaHQgPSBzdGF0ZS50aWdodDtcbiAgICBvbGRUU2hpZnQgPSBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXTtcbiAgICBvbGRTQ291bnQgPSBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXTtcblxuICAgIC8vICAtIGV4YW1wbGUgbGlzdFxuICAgIC8vIF4gbGlzdEluZGVudCBwb3NpdGlvbiB3aWxsIGJlIGhlcmVcbiAgICAvLyAgIF4gYmxrSW5kZW50IHBvc2l0aW9uIHdpbGwgYmUgaGVyZVxuICAgIC8vXG4gICAgb2xkTGlzdEluZGVudCA9IHN0YXRlLmxpc3RJbmRlbnQ7XG4gICAgc3RhdGUubGlzdEluZGVudCA9IHN0YXRlLmJsa0luZGVudDtcbiAgICBzdGF0ZS5ibGtJbmRlbnQgPSBpbmRlbnQ7XG5cbiAgICBzdGF0ZS50aWdodCA9IHRydWU7XG4gICAgc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV0gPSBjb250ZW50U3RhcnQgLSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXTtcbiAgICBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSA9IG9mZnNldDtcblxuICAgIGlmIChjb250ZW50U3RhcnQgPj0gbWF4ICYmIHN0YXRlLmlzRW1wdHkoc3RhcnRMaW5lICsgMSkpIHtcbiAgICAgIC8vIHdvcmthcm91bmQgZm9yIHRoaXMgY2FzZVxuICAgICAgLy8gKGxpc3QgaXRlbSBpcyBlbXB0eSwgbGlzdCB0ZXJtaW5hdGVzIGJlZm9yZSBcImZvb1wiKTpcbiAgICAgIC8vIH5+fn5+fn5+XG4gICAgICAvLyAgIC1cbiAgICAgIC8vXG4gICAgICAvLyAgICAgZm9vXG4gICAgICAvLyB+fn5+fn5+flxuICAgICAgc3RhdGUubGluZSA9IE1hdGgubWluKHN0YXRlLmxpbmUgKyAyLCBlbmRMaW5lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUubWQuYmxvY2sudG9rZW5pemUoc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gSWYgYW55IG9mIGxpc3QgaXRlbSBpcyB0aWdodCwgbWFyayBsaXN0IGFzIHRpZ2h0XG4gICAgaWYgKCFzdGF0ZS50aWdodCB8fCBwcmV2RW1wdHlFbmQpIHtcbiAgICAgIHRpZ2h0ID0gZmFsc2U7XG4gICAgfVxuICAgIC8vIEl0ZW0gYmVjb21lIGxvb3NlIGlmIGZpbmlzaCB3aXRoIGVtcHR5IGxpbmUsXG4gICAgLy8gYnV0IHdlIHNob3VsZCBmaWx0ZXIgbGFzdCBlbGVtZW50LCBiZWNhdXNlIGl0IG1lYW5zIGxpc3QgZmluaXNoXG4gICAgcHJldkVtcHR5RW5kID0gKHN0YXRlLmxpbmUgLSBzdGFydExpbmUpID4gMSAmJiBzdGF0ZS5pc0VtcHR5KHN0YXRlLmxpbmUgLSAxKTtcblxuICAgIHN0YXRlLmJsa0luZGVudCA9IHN0YXRlLmxpc3RJbmRlbnQ7XG4gICAgc3RhdGUubGlzdEluZGVudCA9IG9sZExpc3RJbmRlbnQ7XG4gICAgc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV0gPSBvbGRUU2hpZnQ7XG4gICAgc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gPSBvbGRTQ291bnQ7XG4gICAgc3RhdGUudGlnaHQgPSBvbGRUaWdodDtcblxuICAgIHRva2VuICAgICAgICA9IHN0YXRlLnB1c2goJ2xpc3RfaXRlbV9jbG9zZScsICdsaScsIC0xKTtcbiAgICB0b2tlbi5tYXJrdXAgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlckNoYXJDb2RlKTtcblxuICAgIG5leHRMaW5lID0gc3RhcnRMaW5lID0gc3RhdGUubGluZTtcbiAgICBpdGVtTGluZXNbMV0gPSBuZXh0TGluZTtcbiAgICBjb250ZW50U3RhcnQgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXTtcblxuICAgIGlmIChuZXh0TGluZSA+PSBlbmRMaW5lKSB7IGJyZWFrOyB9XG5cbiAgICAvL1xuICAgIC8vIFRyeSB0byBjaGVjayBpZiBsaXN0IGlzIHRlcm1pbmF0ZWQgb3IgY29udGludWVkLlxuICAgIC8vXG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPCBzdGF0ZS5ibGtJbmRlbnQpIHsgYnJlYWs7IH1cblxuICAgIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gICAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHsgYnJlYWs7IH1cblxuICAgIC8vIGZhaWwgaWYgdGVybWluYXRpbmcgYmxvY2sgZm91bmRcbiAgICB0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICBmb3IgKGkgPSAwLCBsID0gdGVybWluYXRvclJ1bGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKHRlcm1pbmF0b3JSdWxlc1tpXShzdGF0ZSwgbmV4dExpbmUsIGVuZExpbmUsIHRydWUpKSB7XG4gICAgICAgIHRlcm1pbmF0ZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGVybWluYXRlKSB7IGJyZWFrOyB9XG5cbiAgICAvLyBmYWlsIGlmIGxpc3QgaGFzIGFub3RoZXIgdHlwZVxuICAgIGlmIChpc09yZGVyZWQpIHtcbiAgICAgIHBvc0FmdGVyTWFya2VyID0gc2tpcE9yZGVyZWRMaXN0TWFya2VyKHN0YXRlLCBuZXh0TGluZSk7XG4gICAgICBpZiAocG9zQWZ0ZXJNYXJrZXIgPCAwKSB7IGJyZWFrOyB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvc0FmdGVyTWFya2VyID0gc2tpcEJ1bGxldExpc3RNYXJrZXIoc3RhdGUsIG5leHRMaW5lKTtcbiAgICAgIGlmIChwb3NBZnRlck1hcmtlciA8IDApIHsgYnJlYWs7IH1cbiAgICB9XG5cbiAgICBpZiAobWFya2VyQ2hhckNvZGUgIT09IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvc0FmdGVyTWFya2VyIC0gMSkpIHsgYnJlYWs7IH1cbiAgfVxuXG4gIC8vIEZpbmFsaXplIGxpc3RcbiAgaWYgKGlzT3JkZXJlZCkge1xuICAgIHRva2VuID0gc3RhdGUucHVzaCgnb3JkZXJlZF9saXN0X2Nsb3NlJywgJ29sJywgLTEpO1xuICB9IGVsc2Uge1xuICAgIHRva2VuID0gc3RhdGUucHVzaCgnYnVsbGV0X2xpc3RfY2xvc2UnLCAndWwnLCAtMSk7XG4gIH1cbiAgdG9rZW4ubWFya3VwID0gU3RyaW5nLmZyb21DaGFyQ29kZShtYXJrZXJDaGFyQ29kZSk7XG5cbiAgbGlzdExpbmVzWzFdID0gbmV4dExpbmU7XG4gIHN0YXRlLmxpbmUgPSBuZXh0TGluZTtcblxuICBzdGF0ZS5wYXJlbnRUeXBlID0gb2xkUGFyZW50VHlwZTtcblxuICAvLyBtYXJrIHBhcmFncmFwaHMgdGlnaHQgaWYgbmVlZGVkXG4gIGlmICh0aWdodCkge1xuICAgIG1hcmtUaWdodFBhcmFncmFwaHMoc3RhdGUsIGxpc3RUb2tJZHgpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBRkE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUErQkE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/list.js\n");
2153
2154/***/ }),
2155
2156/***/ "../../../node_modules/markdown-it/lib/rules_block/paragraph.js":
2157/*!*************************************************************************************************!*\
2158 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_block/paragraph.js ***!
2159 \*************************************************************************************************/
2160/*! no static exports found */
2161/***/ (function(module, exports, __webpack_require__) {
2162
2163eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Paragraph\n 'use strict';\n\n module.exports = function paragraph(state, startLine\n /*, endLine*/\n ) {\n var content,\n terminate,\n i,\n l,\n token,\n oldParentType,\n nextLine = startLine + 1,\n terminatorRules = state.md.block.ruler.getRules('paragraph'),\n endLine = state.lineMax;\n oldParentType = state.parentType;\n state.parentType = 'paragraph'; // jump line-by-line until empty one or EOF\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) {\n continue;\n } // quirk for blockquotes, this line should already be checked by that rule\n\n\n if (state.sCount[nextLine] < 0) {\n continue;\n } // Some tags can terminate paragraph without empty line.\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n state.line = nextLine;\n token = state.push('paragraph_open', 'p', 1);\n token.map = [startLine, state.line];\n token = state.push('inline', '', 0);\n token.content = content;\n token.map = [startLine, state.line];\n token.children = [];\n token = state.push('paragraph_close', 'p', -1);\n state.parentType = oldParentType;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9wYXJhZ3JhcGguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2Jsb2NrL3BhcmFncmFwaC5qcz9hZWFjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFBhcmFncmFwaFxuXG4ndXNlIHN0cmljdCc7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJhZ3JhcGgoc3RhdGUsIHN0YXJ0TGluZS8qLCBlbmRMaW5lKi8pIHtcbiAgdmFyIGNvbnRlbnQsIHRlcm1pbmF0ZSwgaSwgbCwgdG9rZW4sIG9sZFBhcmVudFR5cGUsXG4gICAgICBuZXh0TGluZSA9IHN0YXJ0TGluZSArIDEsXG4gICAgICB0ZXJtaW5hdG9yUnVsZXMgPSBzdGF0ZS5tZC5ibG9jay5ydWxlci5nZXRSdWxlcygncGFyYWdyYXBoJyksXG4gICAgICBlbmRMaW5lID0gc3RhdGUubGluZU1heDtcblxuICBvbGRQYXJlbnRUeXBlID0gc3RhdGUucGFyZW50VHlwZTtcbiAgc3RhdGUucGFyZW50VHlwZSA9ICdwYXJhZ3JhcGgnO1xuXG4gIC8vIGp1bXAgbGluZS1ieS1saW5lIHVudGlsIGVtcHR5IG9uZSBvciBFT0ZcbiAgZm9yICg7IG5leHRMaW5lIDwgZW5kTGluZSAmJiAhc3RhdGUuaXNFbXB0eShuZXh0TGluZSk7IG5leHRMaW5lKyspIHtcbiAgICAvLyB0aGlzIHdvdWxkIGJlIGEgY29kZSBibG9jayBub3JtYWxseSwgYnV0IGFmdGVyIHBhcmFncmFwaFxuICAgIC8vIGl0J3MgY29uc2lkZXJlZCBhIGxhenkgY29udGludWF0aW9uIHJlZ2FyZGxlc3Mgb2Ygd2hhdCdzIHRoZXJlXG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPiAzKSB7IGNvbnRpbnVlOyB9XG5cbiAgICAvLyBxdWlyayBmb3IgYmxvY2txdW90ZXMsIHRoaXMgbGluZSBzaG91bGQgYWxyZWFkeSBiZSBjaGVja2VkIGJ5IHRoYXQgcnVsZVxuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIDwgMCkgeyBjb250aW51ZTsgfVxuXG4gICAgLy8gU29tZSB0YWdzIGNhbiB0ZXJtaW5hdGUgcGFyYWdyYXBoIHdpdGhvdXQgZW1wdHkgbGluZS5cbiAgICB0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICBmb3IgKGkgPSAwLCBsID0gdGVybWluYXRvclJ1bGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKHRlcm1pbmF0b3JSdWxlc1tpXShzdGF0ZSwgbmV4dExpbmUsIGVuZExpbmUsIHRydWUpKSB7XG4gICAgICAgIHRlcm1pbmF0ZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGVybWluYXRlKSB7IGJyZWFrOyB9XG4gIH1cblxuICBjb250ZW50ID0gc3RhdGUuZ2V0TGluZXMoc3RhcnRMaW5lLCBuZXh0TGluZSwgc3RhdGUuYmxrSW5kZW50LCBmYWxzZSkudHJpbSgpO1xuXG4gIHN0YXRlLmxpbmUgPSBuZXh0TGluZTtcblxuICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ3BhcmFncmFwaF9vcGVuJywgJ3AnLCAxKTtcbiAgdG9rZW4ubWFwICAgICAgPSBbIHN0YXJ0TGluZSwgc3RhdGUubGluZSBdO1xuXG4gIHRva2VuICAgICAgICAgID0gc3RhdGUucHVzaCgnaW5saW5lJywgJycsIDApO1xuICB0b2tlbi5jb250ZW50ICA9IGNvbnRlbnQ7XG4gIHRva2VuLm1hcCAgICAgID0gWyBzdGFydExpbmUsIHN0YXRlLmxpbmUgXTtcbiAgdG9rZW4uY2hpbGRyZW4gPSBbXTtcblxuICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ3BhcmFncmFwaF9jbG9zZScsICdwJywgLTEpO1xuXG4gIHN0YXRlLnBhcmVudFR5cGUgPSBvbGRQYXJlbnRUeXBlO1xuXG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/paragraph.js\n");
2164
2165/***/ }),
2166
2167/***/ "../../../node_modules/markdown-it/lib/rules_block/reference.js":
2168/*!*************************************************************************************************!*\
2169 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_block/reference.js ***!
2170 \*************************************************************************************************/
2171/*! no static exports found */
2172/***/ (function(module, exports, __webpack_require__) {
2173
2174eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n var normalizeReference = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").normalizeReference;\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n module.exports = function reference(state, startLine, _endLine, silent) {\n var ch,\n destEndPos,\n destEndLineNo,\n endLine,\n href,\n i,\n l,\n label,\n labelEnd,\n oldParentType,\n res,\n start,\n str,\n terminate,\n terminatorRules,\n title,\n lines = 0,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine],\n nextLine = startLine + 1; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (state.src.charCodeAt(pos) !== 0x5B\n /* [ */\n ) {\n return false;\n } // Simple check to quickly interrupt scan on [link](url) at the start of line.\n // Can be useful on practice: https://github.com/markdown-it/markdown-it/issues/54\n\n\n while (++pos < max) {\n if (state.src.charCodeAt(pos) === 0x5D\n /* ] */\n && state.src.charCodeAt(pos - 1) !== 0x5C\n /* \\ */\n ) {\n if (pos + 1 === max) {\n return false;\n }\n\n if (state.src.charCodeAt(pos + 1) !== 0x3A\n /* : */\n ) {\n return false;\n }\n\n break;\n }\n }\n\n endLine = state.lineMax; // jump line-by-line until empty one or EOF\n\n terminatorRules = state.md.block.ruler.getRules('reference');\n oldParentType = state.parentType;\n state.parentType = 'reference';\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) {\n continue;\n } // quirk for blockquotes, this line should already be checked by that rule\n\n\n if (state.sCount[nextLine] < 0) {\n continue;\n } // Some tags can terminate paragraph without empty line.\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n }\n\n str = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n max = str.length;\n\n for (pos = 1; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n\n if (ch === 0x5B\n /* [ */\n ) {\n return false;\n } else if (ch === 0x5D\n /* ] */\n ) {\n labelEnd = pos;\n break;\n } else if (ch === 0x0A\n /* \\n */\n ) {\n lines++;\n } else if (ch === 0x5C\n /* \\ */\n ) {\n pos++;\n\n if (pos < max && str.charCodeAt(pos) === 0x0A) {\n lines++;\n }\n }\n }\n\n if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A\n /* : */\n ) {\n return false;\n } // [label]: destination 'title'\n // ^^^ skip optional whitespace here\n\n\n for (pos = labelEnd + 2; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n\n if (ch === 0x0A) {\n lines++;\n } else if (isSpace(ch)) {\n /*eslint no-empty:0*/\n } else {\n break;\n }\n } // [label]: destination 'title'\n // ^^^^^^^^^^^ parse this\n\n\n res = state.md.helpers.parseLinkDestination(str, pos, max);\n\n if (!res.ok) {\n return false;\n }\n\n href = state.md.normalizeLink(res.str);\n\n if (!state.md.validateLink(href)) {\n return false;\n }\n\n pos = res.pos;\n lines += res.lines; // save cursor state, we could require to rollback later\n\n destEndPos = pos;\n destEndLineNo = lines; // [label]: destination 'title'\n // ^^^ skipping those spaces\n\n start = pos;\n\n for (; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n\n if (ch === 0x0A) {\n lines++;\n } else if (isSpace(ch)) {\n /*eslint no-empty:0*/\n } else {\n break;\n }\n } // [label]: destination 'title'\n // ^^^^^^^ parse this\n\n\n res = state.md.helpers.parseLinkTitle(str, pos, max);\n\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n lines += res.lines;\n } else {\n title = '';\n pos = destEndPos;\n lines = destEndLineNo;\n } // skip trailing spaces until the rest of the line\n\n\n while (pos < max) {\n ch = str.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n break;\n }\n\n pos++;\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n if (title) {\n // garbage at the end of the line after title,\n // but it could still be a valid reference if we roll back\n title = '';\n pos = destEndPos;\n lines = destEndLineNo;\n\n while (pos < max) {\n ch = str.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n break;\n }\n\n pos++;\n }\n }\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n // garbage at the end of the line\n return false;\n }\n\n label = normalizeReference(str.slice(1, labelEnd));\n\n if (!label) {\n // CommonMark 0.20 disallows empty labels\n return false;\n } // Reference can not terminate anything. This check is for safety only.\n\n /*istanbul ignore if*/\n\n\n if (silent) {\n return true;\n }\n\n if (typeof state.env.references === 'undefined') {\n state.env.references = {};\n }\n\n if (typeof state.env.references[label] === 'undefined') {\n state.env.references[label] = {\n title: title,\n href: href\n };\n }\n\n state.parentType = oldParentType;\n state.line = startLine + lines + 1;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9yZWZlcmVuY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2Jsb2NrL3JlZmVyZW5jZS5qcz84MzUwIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuXG52YXIgbm9ybWFsaXplUmVmZXJlbmNlICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5ub3JtYWxpemVSZWZlcmVuY2U7XG52YXIgaXNTcGFjZSAgICAgICAgICAgICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1NwYWNlO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmVmZXJlbmNlKHN0YXRlLCBzdGFydExpbmUsIF9lbmRMaW5lLCBzaWxlbnQpIHtcbiAgdmFyIGNoLFxuICAgICAgZGVzdEVuZFBvcyxcbiAgICAgIGRlc3RFbmRMaW5lTm8sXG4gICAgICBlbmRMaW5lLFxuICAgICAgaHJlZixcbiAgICAgIGksXG4gICAgICBsLFxuICAgICAgbGFiZWwsXG4gICAgICBsYWJlbEVuZCxcbiAgICAgIG9sZFBhcmVudFR5cGUsXG4gICAgICByZXMsXG4gICAgICBzdGFydCxcbiAgICAgIHN0cixcbiAgICAgIHRlcm1pbmF0ZSxcbiAgICAgIHRlcm1pbmF0b3JSdWxlcyxcbiAgICAgIHRpdGxlLFxuICAgICAgbGluZXMgPSAwLFxuICAgICAgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSxcbiAgICAgIG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdLFxuICAgICAgbmV4dExpbmUgPSBzdGFydExpbmUgKyAxO1xuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSAweDVCLyogWyAqLykgeyByZXR1cm4gZmFsc2U7IH1cblxuICAvLyBTaW1wbGUgY2hlY2sgdG8gcXVpY2tseSBpbnRlcnJ1cHQgc2NhbiBvbiBbbGlua10odXJsKSBhdCB0aGUgc3RhcnQgb2YgbGluZS5cbiAgLy8gQ2FuIGJlIHVzZWZ1bCBvbiBwcmFjdGljZTogaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2lzc3Vlcy81NFxuICB3aGlsZSAoKytwb3MgPCBtYXgpIHtcbiAgICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHg1RCAvKiBdICovICYmXG4gICAgICAgIHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyAtIDEpICE9PSAweDVDLyogXFwgKi8pIHtcbiAgICAgIGlmIChwb3MgKyAxID09PSBtYXgpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zICsgMSkgIT09IDB4M0EvKiA6ICovKSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgZW5kTGluZSA9IHN0YXRlLmxpbmVNYXg7XG5cbiAgLy8ganVtcCBsaW5lLWJ5LWxpbmUgdW50aWwgZW1wdHkgb25lIG9yIEVPRlxuICB0ZXJtaW5hdG9yUnVsZXMgPSBzdGF0ZS5tZC5ibG9jay5ydWxlci5nZXRSdWxlcygncmVmZXJlbmNlJyk7XG5cbiAgb2xkUGFyZW50VHlwZSA9IHN0YXRlLnBhcmVudFR5cGU7XG4gIHN0YXRlLnBhcmVudFR5cGUgPSAncmVmZXJlbmNlJztcblxuICBmb3IgKDsgbmV4dExpbmUgPCBlbmRMaW5lICYmICFzdGF0ZS5pc0VtcHR5KG5leHRMaW5lKTsgbmV4dExpbmUrKykge1xuICAgIC8vIHRoaXMgd291bGQgYmUgYSBjb2RlIGJsb2NrIG5vcm1hbGx5LCBidXQgYWZ0ZXIgcGFyYWdyYXBoXG4gICAgLy8gaXQncyBjb25zaWRlcmVkIGEgbGF6eSBjb250aW51YXRpb24gcmVnYXJkbGVzcyBvZiB3aGF0J3MgdGhlcmVcbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+IDMpIHsgY29udGludWU7IH1cblxuICAgIC8vIHF1aXJrIGZvciBibG9ja3F1b3RlcywgdGhpcyBsaW5lIHNob3VsZCBhbHJlYWR5IGJlIGNoZWNrZWQgYnkgdGhhdCBydWxlXG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPCAwKSB7IGNvbnRpbnVlOyB9XG5cbiAgICAvLyBTb21lIHRhZ3MgY2FuIHRlcm1pbmF0ZSBwYXJhZ3JhcGggd2l0aG91dCBlbXB0eSBsaW5lLlxuICAgIHRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgIGZvciAoaSA9IDAsIGwgPSB0ZXJtaW5hdG9yUnVsZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAodGVybWluYXRvclJ1bGVzW2ldKHN0YXRlLCBuZXh0TGluZSwgZW5kTGluZSwgdHJ1ZSkpIHtcbiAgICAgICAgdGVybWluYXRlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0ZXJtaW5hdGUpIHsgYnJlYWs7IH1cbiAgfVxuXG4gIHN0ciA9IHN0YXRlLmdldExpbmVzKHN0YXJ0TGluZSwgbmV4dExpbmUsIHN0YXRlLmJsa0luZGVudCwgZmFsc2UpLnRyaW0oKTtcbiAgbWF4ID0gc3RyLmxlbmd0aDtcblxuICBmb3IgKHBvcyA9IDE7IHBvcyA8IG1heDsgcG9zKyspIHtcbiAgICBjaCA9IHN0ci5jaGFyQ29kZUF0KHBvcyk7XG4gICAgaWYgKGNoID09PSAweDVCIC8qIFsgKi8pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGNoID09PSAweDVEIC8qIF0gKi8pIHtcbiAgICAgIGxhYmVsRW5kID0gcG9zO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIGlmIChjaCA9PT0gMHgwQSAvKiBcXG4gKi8pIHtcbiAgICAgIGxpbmVzKys7XG4gICAgfSBlbHNlIGlmIChjaCA9PT0gMHg1QyAvKiBcXCAqLykge1xuICAgICAgcG9zKys7XG4gICAgICBpZiAocG9zIDwgbWF4ICYmIHN0ci5jaGFyQ29kZUF0KHBvcykgPT09IDB4MEEpIHtcbiAgICAgICAgbGluZXMrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAobGFiZWxFbmQgPCAwIHx8IHN0ci5jaGFyQ29kZUF0KGxhYmVsRW5kICsgMSkgIT09IDB4M0EvKiA6ICovKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIC8vIFtsYWJlbF06ICAgZGVzdGluYXRpb24gICAndGl0bGUnXG4gIC8vICAgICAgICAgXl5eIHNraXAgb3B0aW9uYWwgd2hpdGVzcGFjZSBoZXJlXG4gIGZvciAocG9zID0gbGFiZWxFbmQgKyAyOyBwb3MgPCBtYXg7IHBvcysrKSB7XG4gICAgY2ggPSBzdHIuY2hhckNvZGVBdChwb3MpO1xuICAgIGlmIChjaCA9PT0gMHgwQSkge1xuICAgICAgbGluZXMrKztcbiAgICB9IGVsc2UgaWYgKGlzU3BhY2UoY2gpKSB7XG4gICAgICAvKmVzbGludCBuby1lbXB0eTowKi9cbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy8gW2xhYmVsXTogICBkZXN0aW5hdGlvbiAgICd0aXRsZSdcbiAgLy8gICAgICAgICAgICBeXl5eXl5eXl5eXiBwYXJzZSB0aGlzXG4gIHJlcyA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rRGVzdGluYXRpb24oc3RyLCBwb3MsIG1heCk7XG4gIGlmICghcmVzLm9rKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGhyZWYgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rKHJlcy5zdHIpO1xuICBpZiAoIXN0YXRlLm1kLnZhbGlkYXRlTGluayhocmVmKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBwb3MgPSByZXMucG9zO1xuICBsaW5lcyArPSByZXMubGluZXM7XG5cbiAgLy8gc2F2ZSBjdXJzb3Igc3RhdGUsIHdlIGNvdWxkIHJlcXVpcmUgdG8gcm9sbGJhY2sgbGF0ZXJcbiAgZGVzdEVuZFBvcyA9IHBvcztcbiAgZGVzdEVuZExpbmVObyA9IGxpbmVzO1xuXG4gIC8vIFtsYWJlbF06ICAgZGVzdGluYXRpb24gICAndGl0bGUnXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICBeXl4gc2tpcHBpbmcgdGhvc2Ugc3BhY2VzXG4gIHN0YXJ0ID0gcG9zO1xuICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgIGNoID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoY2ggPT09IDB4MEEpIHtcbiAgICAgIGxpbmVzKys7XG4gICAgfSBlbHNlIGlmIChpc1NwYWNlKGNoKSkge1xuICAgICAgLyplc2xpbnQgbm8tZW1wdHk6MCovXG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFtsYWJlbF06ICAgZGVzdGluYXRpb24gICAndGl0bGUnXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eIHBhcnNlIHRoaXNcbiAgcmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtUaXRsZShzdHIsIHBvcywgbWF4KTtcbiAgaWYgKHBvcyA8IG1heCAmJiBzdGFydCAhPT0gcG9zICYmIHJlcy5vaykge1xuICAgIHRpdGxlID0gcmVzLnN0cjtcbiAgICBwb3MgPSByZXMucG9zO1xuICAgIGxpbmVzICs9IHJlcy5saW5lcztcbiAgfSBlbHNlIHtcbiAgICB0aXRsZSA9ICcnO1xuICAgIHBvcyA9IGRlc3RFbmRQb3M7XG4gICAgbGluZXMgPSBkZXN0RW5kTGluZU5vO1xuICB9XG5cbiAgLy8gc2tpcCB0cmFpbGluZyBzcGFjZXMgdW50aWwgdGhlIHJlc3Qgb2YgdGhlIGxpbmVcbiAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgIGNoID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoIWlzU3BhY2UoY2gpKSB7IGJyZWFrOyB9XG4gICAgcG9zKys7XG4gIH1cblxuICBpZiAocG9zIDwgbWF4ICYmIHN0ci5jaGFyQ29kZUF0KHBvcykgIT09IDB4MEEpIHtcbiAgICBpZiAodGl0bGUpIHtcbiAgICAgIC8vIGdhcmJhZ2UgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSBhZnRlciB0aXRsZSxcbiAgICAgIC8vIGJ1dCBpdCBjb3VsZCBzdGlsbCBiZSBhIHZhbGlkIHJlZmVyZW5jZSBpZiB3ZSByb2xsIGJhY2tcbiAgICAgIHRpdGxlID0gJyc7XG4gICAgICBwb3MgPSBkZXN0RW5kUG9zO1xuICAgICAgbGluZXMgPSBkZXN0RW5kTGluZU5vO1xuICAgICAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgICAgICBjaCA9IHN0ci5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICAgIGlmICghaXNTcGFjZShjaCkpIHsgYnJlYWs7IH1cbiAgICAgICAgcG9zKys7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHBvcyA8IG1heCAmJiBzdHIuY2hhckNvZGVBdChwb3MpICE9PSAweDBBKSB7XG4gICAgLy8gZ2FyYmFnZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbGFiZWwgPSBub3JtYWxpemVSZWZlcmVuY2Uoc3RyLnNsaWNlKDEsIGxhYmVsRW5kKSk7XG4gIGlmICghbGFiZWwpIHtcbiAgICAvLyBDb21tb25NYXJrIDAuMjAgZGlzYWxsb3dzIGVtcHR5IGxhYmVsc1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIFJlZmVyZW5jZSBjYW4gbm90IHRlcm1pbmF0ZSBhbnl0aGluZy4gVGhpcyBjaGVjayBpcyBmb3Igc2FmZXR5IG9ubHkuXG4gIC8qaXN0YW5idWwgaWdub3JlIGlmKi9cbiAgaWYgKHNpbGVudCkgeyByZXR1cm4gdHJ1ZTsgfVxuXG4gIGlmICh0eXBlb2Ygc3RhdGUuZW52LnJlZmVyZW5jZXMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgc3RhdGUuZW52LnJlZmVyZW5jZXMgPSB7fTtcbiAgfVxuICBpZiAodHlwZW9mIHN0YXRlLmVudi5yZWZlcmVuY2VzW2xhYmVsXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBzdGF0ZS5lbnYucmVmZXJlbmNlc1tsYWJlbF0gPSB7IHRpdGxlOiB0aXRsZSwgaHJlZjogaHJlZiB9O1xuICB9XG5cbiAgc3RhdGUucGFyZW50VHlwZSA9IG9sZFBhcmVudFR5cGU7XG5cbiAgc3RhdGUubGluZSA9IHN0YXJ0TGluZSArIGxpbmVzICsgMTtcbiAgcmV0dXJuIHRydWU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBcUJBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/reference.js\n");
2175
2176/***/ }),
2177
2178/***/ "../../../node_modules/markdown-it/lib/rules_block/state_block.js":
2179/*!***************************************************************************************************!*\
2180 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_block/state_block.js ***!
2181 \***************************************************************************************************/
2182/*! no static exports found */
2183/***/ (function(module, exports, __webpack_require__) {
2184
2185eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Parser state class\n 'use strict';\n\n var Token = __webpack_require__(/*! ../token */ \"../../../node_modules/markdown-it/lib/token.js\");\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n function StateBlock(src, md, env, tokens) {\n var ch, s, start, pos, len, indent, offset, indent_found;\n this.src = src; // link to parser instance\n\n this.md = md;\n this.env = env; //\n // Internal state vartiables\n //\n\n this.tokens = tokens;\n this.bMarks = []; // line begin offsets for fast jumps\n\n this.eMarks = []; // line end offsets for fast jumps\n\n this.tShift = []; // offsets of the first non-space characters (tabs not expanded)\n\n this.sCount = []; // indents for each line (tabs expanded)\n // An amount of virtual spaces (tabs expanded) between beginning\n // of each line (bMarks) and real beginning of that line.\n //\n // It exists only as a hack because blockquotes override bMarks\n // losing information in the process.\n //\n // It's used only when expanding tabs, you can think about it as\n // an initial tab length, e.g. bsCount=21 applied to string `\\t123`\n // means first tab should be expanded to 4-21%4 === 3 spaces.\n //\n\n this.bsCount = []; // block parser variables\n\n this.blkIndent = 0; // required block content indent (for example, if we are\n // inside a list, it would be positioned after list marker)\n\n this.line = 0; // line index in src\n\n this.lineMax = 0; // lines count\n\n this.tight = false; // loose/tight mode for lists\n\n this.ddIndent = -1; // indent of the current dd block (-1 if there isn't any)\n\n this.listIndent = -1; // indent of the current list block (-1 if there isn't any)\n // can be 'blockquote', 'list', 'root', 'paragraph' or 'reference'\n // used in lists to determine if they interrupt a paragraph\n\n this.parentType = 'root';\n this.level = 0; // renderer\n\n this.result = ''; // Create caches\n // Generate markers.\n\n s = this.src;\n indent_found = false;\n\n for (start = pos = indent = offset = 0, len = s.length; pos < len; pos++) {\n ch = s.charCodeAt(pos);\n\n if (!indent_found) {\n if (isSpace(ch)) {\n indent++;\n\n if (ch === 0x09) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n\n continue;\n } else {\n indent_found = true;\n }\n }\n\n if (ch === 0x0A || pos === len - 1) {\n if (ch !== 0x0A) {\n pos++;\n }\n\n this.bMarks.push(start);\n this.eMarks.push(pos);\n this.tShift.push(indent);\n this.sCount.push(offset);\n this.bsCount.push(0);\n indent_found = false;\n indent = 0;\n offset = 0;\n start = pos + 1;\n }\n } // Push fake entry to simplify cache bounds checks\n\n\n this.bMarks.push(s.length);\n this.eMarks.push(s.length);\n this.tShift.push(0);\n this.sCount.push(0);\n this.bsCount.push(0);\n this.lineMax = this.bMarks.length - 1; // don't count last fake line\n } // Push new token to \"stream\".\n //\n\n\n StateBlock.prototype.push = function (type, tag, nesting) {\n var token = new Token(type, tag, nesting);\n token.block = true;\n if (nesting < 0) this.level--; // closing tag\n\n token.level = this.level;\n if (nesting > 0) this.level++; // opening tag\n\n this.tokens.push(token);\n return token;\n };\n\n StateBlock.prototype.isEmpty = function isEmpty(line) {\n return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];\n };\n\n StateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {\n for (var max = this.lineMax; from < max; from++) {\n if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n break;\n }\n }\n\n return from;\n }; // Skip spaces from given position.\n\n\n StateBlock.prototype.skipSpaces = function skipSpaces(pos) {\n var ch;\n\n for (var max = this.src.length; pos < max; pos++) {\n ch = this.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n break;\n }\n }\n\n return pos;\n }; // Skip spaces from given position in reverse.\n\n\n StateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) {\n if (pos <= min) {\n return pos;\n }\n\n while (pos > min) {\n if (!isSpace(this.src.charCodeAt(--pos))) {\n return pos + 1;\n }\n }\n\n return pos;\n }; // Skip char codes from given position\n\n\n StateBlock.prototype.skipChars = function skipChars(pos, code) {\n for (var max = this.src.length; pos < max; pos++) {\n if (this.src.charCodeAt(pos) !== code) {\n break;\n }\n }\n\n return pos;\n }; // Skip char codes reverse from given position - 1\n\n\n StateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) {\n if (pos <= min) {\n return pos;\n }\n\n while (pos > min) {\n if (code !== this.src.charCodeAt(--pos)) {\n return pos + 1;\n }\n }\n\n return pos;\n }; // cut lines range from source.\n\n\n StateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {\n var i,\n lineIndent,\n ch,\n first,\n last,\n queue,\n lineStart,\n line = begin;\n\n if (begin >= end) {\n return '';\n }\n\n queue = new Array(end - begin);\n\n for (i = 0; line < end; line++, i++) {\n lineIndent = 0;\n lineStart = first = this.bMarks[line];\n\n if (line + 1 < end || keepLastLF) {\n // No need for bounds check because we have fake entry on tail.\n last = this.eMarks[line] + 1;\n } else {\n last = this.eMarks[line];\n }\n\n while (first < last && lineIndent < indent) {\n ch = this.src.charCodeAt(first);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4;\n } else {\n lineIndent++;\n }\n } else if (first - lineStart < this.tShift[line]) {\n // patched tShift masked characters to look like spaces (blockquotes, list markers)\n lineIndent++;\n } else {\n break;\n }\n\n first++;\n }\n\n if (lineIndent > indent) {\n // partially expanding tabs in code blocks, e.g '\\t\\tfoobar'\n // with indent=2 becomes ' \\tfoobar'\n queue[i] = new Array(lineIndent - indent + 1).join(' ') + this.src.slice(first, last);\n } else {\n queue[i] = this.src.slice(first, last);\n }\n }\n\n return queue.join('');\n }; // re-export Token class to use in block rules\n\n\n StateBlock.prototype.Token = Token;\n module.exports = StateBlock;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9zdGF0ZV9ibG9jay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfYmxvY2svc3RhdGVfYmxvY2suanM/MzRmNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQYXJzZXIgc3RhdGUgY2xhc3NcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgVG9rZW4gPSByZXF1aXJlKCcuLi90b2tlbicpO1xudmFyIGlzU3BhY2UgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1NwYWNlO1xuXG5cbmZ1bmN0aW9uIFN0YXRlQmxvY2soc3JjLCBtZCwgZW52LCB0b2tlbnMpIHtcbiAgdmFyIGNoLCBzLCBzdGFydCwgcG9zLCBsZW4sIGluZGVudCwgb2Zmc2V0LCBpbmRlbnRfZm91bmQ7XG5cbiAgdGhpcy5zcmMgPSBzcmM7XG5cbiAgLy8gbGluayB0byBwYXJzZXIgaW5zdGFuY2VcbiAgdGhpcy5tZCAgICAgPSBtZDtcblxuICB0aGlzLmVudiA9IGVudjtcblxuICAvL1xuICAvLyBJbnRlcm5hbCBzdGF0ZSB2YXJ0aWFibGVzXG4gIC8vXG5cbiAgdGhpcy50b2tlbnMgPSB0b2tlbnM7XG5cbiAgdGhpcy5iTWFya3MgPSBbXTsgIC8vIGxpbmUgYmVnaW4gb2Zmc2V0cyBmb3IgZmFzdCBqdW1wc1xuICB0aGlzLmVNYXJrcyA9IFtdOyAgLy8gbGluZSBlbmQgb2Zmc2V0cyBmb3IgZmFzdCBqdW1wc1xuICB0aGlzLnRTaGlmdCA9IFtdOyAgLy8gb2Zmc2V0cyBvZiB0aGUgZmlyc3Qgbm9uLXNwYWNlIGNoYXJhY3RlcnMgKHRhYnMgbm90IGV4cGFuZGVkKVxuICB0aGlzLnNDb3VudCA9IFtdOyAgLy8gaW5kZW50cyBmb3IgZWFjaCBsaW5lICh0YWJzIGV4cGFuZGVkKVxuXG4gIC8vIEFuIGFtb3VudCBvZiB2aXJ0dWFsIHNwYWNlcyAodGFicyBleHBhbmRlZCkgYmV0d2VlbiBiZWdpbm5pbmdcbiAgLy8gb2YgZWFjaCBsaW5lIChiTWFya3MpIGFuZCByZWFsIGJlZ2lubmluZyBvZiB0aGF0IGxpbmUuXG4gIC8vXG4gIC8vIEl0IGV4aXN0cyBvbmx5IGFzIGEgaGFjayBiZWNhdXNlIGJsb2NrcXVvdGVzIG92ZXJyaWRlIGJNYXJrc1xuICAvLyBsb3NpbmcgaW5mb3JtYXRpb24gaW4gdGhlIHByb2Nlc3MuXG4gIC8vXG4gIC8vIEl0J3MgdXNlZCBvbmx5IHdoZW4gZXhwYW5kaW5nIHRhYnMsIHlvdSBjYW4gdGhpbmsgYWJvdXQgaXQgYXNcbiAgLy8gYW4gaW5pdGlhbCB0YWIgbGVuZ3RoLCBlLmcuIGJzQ291bnQ9MjEgYXBwbGllZCB0byBzdHJpbmcgYFxcdDEyM2BcbiAgLy8gbWVhbnMgZmlyc3QgdGFiIHNob3VsZCBiZSBleHBhbmRlZCB0byA0LTIxJTQgPT09IDMgc3BhY2VzLlxuICAvL1xuICB0aGlzLmJzQ291bnQgPSBbXTtcblxuICAvLyBibG9jayBwYXJzZXIgdmFyaWFibGVzXG4gIHRoaXMuYmxrSW5kZW50ICA9IDA7IC8vIHJlcXVpcmVkIGJsb2NrIGNvbnRlbnQgaW5kZW50IChmb3IgZXhhbXBsZSwgaWYgd2UgYXJlXG4gICAgICAgICAgICAgICAgICAgICAgIC8vIGluc2lkZSBhIGxpc3QsIGl0IHdvdWxkIGJlIHBvc2l0aW9uZWQgYWZ0ZXIgbGlzdCBtYXJrZXIpXG4gIHRoaXMubGluZSAgICAgICA9IDA7IC8vIGxpbmUgaW5kZXggaW4gc3JjXG4gIHRoaXMubGluZU1heCAgICA9IDA7IC8vIGxpbmVzIGNvdW50XG4gIHRoaXMudGlnaHQgICAgICA9IGZhbHNlOyAgLy8gbG9vc2UvdGlnaHQgbW9kZSBmb3IgbGlzdHNcbiAgdGhpcy5kZEluZGVudCAgID0gLTE7IC8vIGluZGVudCBvZiB0aGUgY3VycmVudCBkZCBibG9jayAoLTEgaWYgdGhlcmUgaXNuJ3QgYW55KVxuICB0aGlzLmxpc3RJbmRlbnQgPSAtMTsgLy8gaW5kZW50IG9mIHRoZSBjdXJyZW50IGxpc3QgYmxvY2sgKC0xIGlmIHRoZXJlIGlzbid0IGFueSlcblxuICAvLyBjYW4gYmUgJ2Jsb2NrcXVvdGUnLCAnbGlzdCcsICdyb290JywgJ3BhcmFncmFwaCcgb3IgJ3JlZmVyZW5jZSdcbiAgLy8gdXNlZCBpbiBsaXN0cyB0byBkZXRlcm1pbmUgaWYgdGhleSBpbnRlcnJ1cHQgYSBwYXJhZ3JhcGhcbiAgdGhpcy5wYXJlbnRUeXBlID0gJ3Jvb3QnO1xuXG4gIHRoaXMubGV2ZWwgPSAwO1xuXG4gIC8vIHJlbmRlcmVyXG4gIHRoaXMucmVzdWx0ID0gJyc7XG5cbiAgLy8gQ3JlYXRlIGNhY2hlc1xuICAvLyBHZW5lcmF0ZSBtYXJrZXJzLlxuICBzID0gdGhpcy5zcmM7XG4gIGluZGVudF9mb3VuZCA9IGZhbHNlO1xuXG4gIGZvciAoc3RhcnQgPSBwb3MgPSBpbmRlbnQgPSBvZmZzZXQgPSAwLCBsZW4gPSBzLmxlbmd0aDsgcG9zIDwgbGVuOyBwb3MrKykge1xuICAgIGNoID0gcy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgICBpZiAoIWluZGVudF9mb3VuZCkge1xuICAgICAgaWYgKGlzU3BhY2UoY2gpKSB7XG4gICAgICAgIGluZGVudCsrO1xuXG4gICAgICAgIGlmIChjaCA9PT0gMHgwOSkge1xuICAgICAgICAgIG9mZnNldCArPSA0IC0gb2Zmc2V0ICUgNDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmZzZXQrKztcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGVudF9mb3VuZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoID09PSAweDBBIHx8IHBvcyA9PT0gbGVuIC0gMSkge1xuICAgICAgaWYgKGNoICE9PSAweDBBKSB7IHBvcysrOyB9XG4gICAgICB0aGlzLmJNYXJrcy5wdXNoKHN0YXJ0KTtcbiAgICAgIHRoaXMuZU1hcmtzLnB1c2gocG9zKTtcbiAgICAgIHRoaXMudFNoaWZ0LnB1c2goaW5kZW50KTtcbiAgICAgIHRoaXMuc0NvdW50LnB1c2gob2Zmc2V0KTtcbiAgICAgIHRoaXMuYnNDb3VudC5wdXNoKDApO1xuXG4gICAgICBpbmRlbnRfZm91bmQgPSBmYWxzZTtcbiAgICAgIGluZGVudCA9IDA7XG4gICAgICBvZmZzZXQgPSAwO1xuICAgICAgc3RhcnQgPSBwb3MgKyAxO1xuICAgIH1cbiAgfVxuXG4gIC8vIFB1c2ggZmFrZSBlbnRyeSB0byBzaW1wbGlmeSBjYWNoZSBib3VuZHMgY2hlY2tzXG4gIHRoaXMuYk1hcmtzLnB1c2gocy5sZW5ndGgpO1xuICB0aGlzLmVNYXJrcy5wdXNoKHMubGVuZ3RoKTtcbiAgdGhpcy50U2hpZnQucHVzaCgwKTtcbiAgdGhpcy5zQ291bnQucHVzaCgwKTtcbiAgdGhpcy5ic0NvdW50LnB1c2goMCk7XG5cbiAgdGhpcy5saW5lTWF4ID0gdGhpcy5iTWFya3MubGVuZ3RoIC0gMTsgLy8gZG9uJ3QgY291bnQgbGFzdCBmYWtlIGxpbmVcbn1cblxuLy8gUHVzaCBuZXcgdG9rZW4gdG8gXCJzdHJlYW1cIi5cbi8vXG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKHR5cGUsIHRhZywgbmVzdGluZykge1xuICB2YXIgdG9rZW4gPSBuZXcgVG9rZW4odHlwZSwgdGFnLCBuZXN0aW5nKTtcbiAgdG9rZW4uYmxvY2sgPSB0cnVlO1xuXG4gIGlmIChuZXN0aW5nIDwgMCkgdGhpcy5sZXZlbC0tOyAvLyBjbG9zaW5nIHRhZ1xuICB0b2tlbi5sZXZlbCA9IHRoaXMubGV2ZWw7XG4gIGlmIChuZXN0aW5nID4gMCkgdGhpcy5sZXZlbCsrOyAvLyBvcGVuaW5nIHRhZ1xuXG4gIHRoaXMudG9rZW5zLnB1c2godG9rZW4pO1xuICByZXR1cm4gdG9rZW47XG59O1xuXG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rpb24gaXNFbXB0eShsaW5lKSB7XG4gIHJldHVybiB0aGlzLmJNYXJrc1tsaW5lXSArIHRoaXMudFNoaWZ0W2xpbmVdID49IHRoaXMuZU1hcmtzW2xpbmVdO1xufTtcblxuU3RhdGVCbG9jay5wcm90b3R5cGUuc2tpcEVtcHR5TGluZXMgPSBmdW5jdGlvbiBza2lwRW1wdHlMaW5lcyhmcm9tKSB7XG4gIGZvciAodmFyIG1heCA9IHRoaXMubGluZU1heDsgZnJvbSA8IG1heDsgZnJvbSsrKSB7XG4gICAgaWYgKHRoaXMuYk1hcmtzW2Zyb21dICsgdGhpcy50U2hpZnRbZnJvbV0gPCB0aGlzLmVNYXJrc1tmcm9tXSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmcm9tO1xufTtcblxuLy8gU2tpcCBzcGFjZXMgZnJvbSBnaXZlbiBwb3NpdGlvbi5cblN0YXRlQmxvY2sucHJvdG90eXBlLnNraXBTcGFjZXMgPSBmdW5jdGlvbiBza2lwU3BhY2VzKHBvcykge1xuICB2YXIgY2g7XG5cbiAgZm9yICh2YXIgbWF4ID0gdGhpcy5zcmMubGVuZ3RoOyBwb3MgPCBtYXg7IHBvcysrKSB7XG4gICAgY2ggPSB0aGlzLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG4gICAgaWYgKCFpc1NwYWNlKGNoKSkgeyBicmVhazsgfVxuICB9XG4gIHJldHVybiBwb3M7XG59O1xuXG4vLyBTa2lwIHNwYWNlcyBmcm9tIGdpdmVuIHBvc2l0aW9uIGluIHJldmVyc2UuXG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5za2lwU3BhY2VzQmFjayA9IGZ1bmN0aW9uIHNraXBTcGFjZXNCYWNrKHBvcywgbWluKSB7XG4gIGlmIChwb3MgPD0gbWluKSB7IHJldHVybiBwb3M7IH1cblxuICB3aGlsZSAocG9zID4gbWluKSB7XG4gICAgaWYgKCFpc1NwYWNlKHRoaXMuc3JjLmNoYXJDb2RlQXQoLS1wb3MpKSkgeyByZXR1cm4gcG9zICsgMTsgfVxuICB9XG4gIHJldHVybiBwb3M7XG59O1xuXG4vLyBTa2lwIGNoYXIgY29kZXMgZnJvbSBnaXZlbiBwb3NpdGlvblxuU3RhdGVCbG9jay5wcm90b3R5cGUuc2tpcENoYXJzID0gZnVuY3Rpb24gc2tpcENoYXJzKHBvcywgY29kZSkge1xuICBmb3IgKHZhciBtYXggPSB0aGlzLnNyYy5sZW5ndGg7IHBvcyA8IG1heDsgcG9zKyspIHtcbiAgICBpZiAodGhpcy5zcmMuY2hhckNvZGVBdChwb3MpICE9PSBjb2RlKSB7IGJyZWFrOyB9XG4gIH1cbiAgcmV0dXJuIHBvcztcbn07XG5cbi8vIFNraXAgY2hhciBjb2RlcyByZXZlcnNlIGZyb20gZ2l2ZW4gcG9zaXRpb24gLSAxXG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5za2lwQ2hhcnNCYWNrID0gZnVuY3Rpb24gc2tpcENoYXJzQmFjayhwb3MsIGNvZGUsIG1pbikge1xuICBpZiAocG9zIDw9IG1pbikgeyByZXR1cm4gcG9zOyB9XG5cbiAgd2hpbGUgKHBvcyA+IG1pbikge1xuICAgIGlmIChjb2RlICE9PSB0aGlzLnNyYy5jaGFyQ29kZUF0KC0tcG9zKSkgeyByZXR1cm4gcG9zICsgMTsgfVxuICB9XG4gIHJldHVybiBwb3M7XG59O1xuXG4vLyBjdXQgbGluZXMgcmFuZ2UgZnJvbSBzb3VyY2UuXG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5nZXRMaW5lcyA9IGZ1bmN0aW9uIGdldExpbmVzKGJlZ2luLCBlbmQsIGluZGVudCwga2VlcExhc3RMRikge1xuICB2YXIgaSwgbGluZUluZGVudCwgY2gsIGZpcnN0LCBsYXN0LCBxdWV1ZSwgbGluZVN0YXJ0LFxuICAgICAgbGluZSA9IGJlZ2luO1xuXG4gIGlmIChiZWdpbiA+PSBlbmQpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBxdWV1ZSA9IG5ldyBBcnJheShlbmQgLSBiZWdpbik7XG5cbiAgZm9yIChpID0gMDsgbGluZSA8IGVuZDsgbGluZSsrLCBpKyspIHtcbiAgICBsaW5lSW5kZW50ID0gMDtcbiAgICBsaW5lU3RhcnQgPSBmaXJzdCA9IHRoaXMuYk1hcmtzW2xpbmVdO1xuXG4gICAgaWYgKGxpbmUgKyAxIDwgZW5kIHx8IGtlZXBMYXN0TEYpIHtcbiAgICAgIC8vIE5vIG5lZWQgZm9yIGJvdW5kcyBjaGVjayBiZWNhdXNlIHdlIGhhdmUgZmFrZSBlbnRyeSBvbiB0YWlsLlxuICAgICAgbGFzdCA9IHRoaXMuZU1hcmtzW2xpbmVdICsgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFzdCA9IHRoaXMuZU1hcmtzW2xpbmVdO1xuICAgIH1cblxuICAgIHdoaWxlIChmaXJzdCA8IGxhc3QgJiYgbGluZUluZGVudCA8IGluZGVudCkge1xuICAgICAgY2ggPSB0aGlzLnNyYy5jaGFyQ29kZUF0KGZpcnN0KTtcblxuICAgICAgaWYgKGlzU3BhY2UoY2gpKSB7XG4gICAgICAgIGlmIChjaCA9PT0gMHgwOSkge1xuICAgICAgICAgIGxpbmVJbmRlbnQgKz0gNCAtIChsaW5lSW5kZW50ICsgdGhpcy5ic0NvdW50W2xpbmVdKSAlIDQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluZUluZGVudCsrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGZpcnN0IC0gbGluZVN0YXJ0IDwgdGhpcy50U2hpZnRbbGluZV0pIHtcbiAgICAgICAgLy8gcGF0Y2hlZCB0U2hpZnQgbWFza2VkIGNoYXJhY3RlcnMgdG8gbG9vayBsaWtlIHNwYWNlcyAoYmxvY2txdW90ZXMsIGxpc3QgbWFya2VycylcbiAgICAgICAgbGluZUluZGVudCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGZpcnN0Kys7XG4gICAgfVxuXG4gICAgaWYgKGxpbmVJbmRlbnQgPiBpbmRlbnQpIHtcbiAgICAgIC8vIHBhcnRpYWxseSBleHBhbmRpbmcgdGFicyBpbiBjb2RlIGJsb2NrcywgZS5nICdcXHRcXHRmb29iYXInXG4gICAgICAvLyB3aXRoIGluZGVudD0yIGJlY29tZXMgJyAgXFx0Zm9vYmFyJ1xuICAgICAgcXVldWVbaV0gPSBuZXcgQXJyYXkobGluZUluZGVudCAtIGluZGVudCArIDEpLmpvaW4oJyAnKSArIHRoaXMuc3JjLnNsaWNlKGZpcnN0LCBsYXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcXVldWVbaV0gPSB0aGlzLnNyYy5zbGljZShmaXJzdCwgbGFzdCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1ZXVlLmpvaW4oJycpO1xufTtcblxuLy8gcmUtZXhwb3J0IFRva2VuIGNsYXNzIHRvIHVzZSBpbiBibG9jayBydWxlc1xuU3RhdGVCbG9jay5wcm90b3R5cGUuVG9rZW4gPSBUb2tlbjtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFN0YXRlQmxvY2s7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/state_block.js\n");
2186
2187/***/ }),
2188
2189/***/ "../../../node_modules/markdown-it/lib/rules_block/table.js":
2190/*!*********************************************************************************************!*\
2191 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_block/table.js ***!
2192 \*********************************************************************************************/
2193/*! no static exports found */
2194/***/ (function(module, exports, __webpack_require__) {
2195
2196eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // GFM table, non-standard\n 'use strict';\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n function getLine(state, line) {\n var pos = state.bMarks[line] + state.blkIndent,\n max = state.eMarks[line];\n return state.src.substr(pos, max - pos);\n }\n\n function escapedSplit(str) {\n var result = [],\n pos = 0,\n max = str.length,\n ch,\n escapes = 0,\n lastPos = 0,\n backTicked = false,\n lastBackTick = 0;\n ch = str.charCodeAt(pos);\n\n while (pos < max) {\n if (ch === 0x60\n /* ` */\n ) {\n if (backTicked) {\n // make \\` close code sequence, but not open it;\n // the reason is: `\\` is correct code block\n backTicked = false;\n lastBackTick = pos;\n } else if (escapes % 2 === 0) {\n backTicked = true;\n lastBackTick = pos;\n }\n } else if (ch === 0x7c\n /* | */\n && escapes % 2 === 0 && !backTicked) {\n result.push(str.substring(lastPos, pos));\n lastPos = pos + 1;\n }\n\n if (ch === 0x5c\n /* \\ */\n ) {\n escapes++;\n } else {\n escapes = 0;\n }\n\n pos++; // If there was an un-closed backtick, go back to just after\n // the last backtick, but as if it was a normal character\n\n if (pos === max && backTicked) {\n backTicked = false;\n pos = lastBackTick + 1;\n }\n\n ch = str.charCodeAt(pos);\n }\n\n result.push(str.substring(lastPos));\n return result;\n }\n\n module.exports = function table(state, startLine, endLine, silent) {\n var ch, lineText, pos, i, nextLine, columns, columnCount, token, aligns, t, tableLines, tbodyLines; // should have at least two lines\n\n if (startLine + 2 > endLine) {\n return false;\n }\n\n nextLine = startLine + 1;\n\n if (state.sCount[nextLine] < state.blkIndent) {\n return false;\n } // if it's indented more than 3 spaces, it should be a code block\n\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n return false;\n } // first character of the second line should be '|', '-', ':',\n // and no other characters are allowed but spaces;\n // basically, this is the equivalent of /^[-:|][-:|\\s]*$/ regexp\n\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n\n if (pos >= state.eMarks[nextLine]) {\n return false;\n }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch !== 0x7C\n /* | */\n && ch !== 0x2D\n /* - */\n && ch !== 0x3A\n /* : */\n ) {\n return false;\n }\n\n while (pos < state.eMarks[nextLine]) {\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x7C\n /* | */\n && ch !== 0x2D\n /* - */\n && ch !== 0x3A\n /* : */\n && !isSpace(ch)) {\n return false;\n }\n\n pos++;\n }\n\n lineText = getLine(state, startLine + 1);\n columns = lineText.split('|');\n aligns = [];\n\n for (i = 0; i < columns.length; i++) {\n t = columns[i].trim();\n\n if (!t) {\n // allow empty columns before and after table, but not in between columns;\n // e.g. allow ` |---| `, disallow ` ---||--- `\n if (i === 0 || i === columns.length - 1) {\n continue;\n } else {\n return false;\n }\n }\n\n if (!/^:?-+:?$/.test(t)) {\n return false;\n }\n\n if (t.charCodeAt(t.length - 1) === 0x3A\n /* : */\n ) {\n aligns.push(t.charCodeAt(0) === 0x3A\n /* : */\n ? 'center' : 'right');\n } else if (t.charCodeAt(0) === 0x3A\n /* : */\n ) {\n aligns.push('left');\n } else {\n aligns.push('');\n }\n }\n\n lineText = getLine(state, startLine).trim();\n\n if (lineText.indexOf('|') === -1) {\n return false;\n }\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n columns = escapedSplit(lineText.replace(/^\\||\\|$/g, '')); // header row will define an amount of columns in the entire table,\n // and align row shouldn't be smaller than that (the rest of the rows can)\n\n columnCount = columns.length;\n\n if (columnCount > aligns.length) {\n return false;\n }\n\n if (silent) {\n return true;\n }\n\n token = state.push('table_open', 'table', 1);\n token.map = tableLines = [startLine, 0];\n token = state.push('thead_open', 'thead', 1);\n token.map = [startLine, startLine + 1];\n token = state.push('tr_open', 'tr', 1);\n token.map = [startLine, startLine + 1];\n\n for (i = 0; i < columns.length; i++) {\n token = state.push('th_open', 'th', 1);\n token.map = [startLine, startLine + 1];\n\n if (aligns[i]) {\n token.attrs = [['style', 'text-align:' + aligns[i]]];\n }\n\n token = state.push('inline', '', 0);\n token.content = columns[i].trim();\n token.map = [startLine, startLine + 1];\n token.children = [];\n token = state.push('th_close', 'th', -1);\n }\n\n token = state.push('tr_close', 'tr', -1);\n token = state.push('thead_close', 'thead', -1);\n token = state.push('tbody_open', 'tbody', 1);\n token.map = tbodyLines = [startLine + 2, 0];\n\n for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) {\n break;\n }\n\n lineText = getLine(state, nextLine).trim();\n\n if (lineText.indexOf('|') === -1) {\n break;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n break;\n }\n\n columns = escapedSplit(lineText.replace(/^\\||\\|$/g, ''));\n token = state.push('tr_open', 'tr', 1);\n\n for (i = 0; i < columnCount; i++) {\n token = state.push('td_open', 'td', 1);\n\n if (aligns[i]) {\n token.attrs = [['style', 'text-align:' + aligns[i]]];\n }\n\n token = state.push('inline', '', 0);\n token.content = columns[i] ? columns[i].trim() : '';\n token.children = [];\n token = state.push('td_close', 'td', -1);\n }\n\n token = state.push('tr_close', 'tr', -1);\n }\n\n token = state.push('tbody_close', 'tbody', -1);\n token = state.push('table_close', 'table', -1);\n tableLines[1] = tbodyLines[1] = nextLine;\n state.line = nextLine;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay90YWJsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfYmxvY2svdGFibGUuanM/ZTVjZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRk0gdGFibGUsIG5vbi1zdGFuZGFyZFxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpc1NwYWNlID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuaXNTcGFjZTtcblxuXG5mdW5jdGlvbiBnZXRMaW5lKHN0YXRlLCBsaW5lKSB7XG4gIHZhciBwb3MgPSBzdGF0ZS5iTWFya3NbbGluZV0gKyBzdGF0ZS5ibGtJbmRlbnQsXG4gICAgICBtYXggPSBzdGF0ZS5lTWFya3NbbGluZV07XG5cbiAgcmV0dXJuIHN0YXRlLnNyYy5zdWJzdHIocG9zLCBtYXggLSBwb3MpO1xufVxuXG5mdW5jdGlvbiBlc2NhcGVkU3BsaXQoc3RyKSB7XG4gIHZhciByZXN1bHQgPSBbXSxcbiAgICAgIHBvcyA9IDAsXG4gICAgICBtYXggPSBzdHIubGVuZ3RoLFxuICAgICAgY2gsXG4gICAgICBlc2NhcGVzID0gMCxcbiAgICAgIGxhc3RQb3MgPSAwLFxuICAgICAgYmFja1RpY2tlZCA9IGZhbHNlLFxuICAgICAgbGFzdEJhY2tUaWNrID0gMDtcblxuICBjaCAgPSBzdHIuY2hhckNvZGVBdChwb3MpO1xuXG4gIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICBpZiAoY2ggPT09IDB4NjAvKiBgICovKSB7XG4gICAgICBpZiAoYmFja1RpY2tlZCkge1xuICAgICAgICAvLyBtYWtlIFxcYCBjbG9zZSBjb2RlIHNlcXVlbmNlLCBidXQgbm90IG9wZW4gaXQ7XG4gICAgICAgIC8vIHRoZSByZWFzb24gaXM6IGBcXGAgaXMgY29ycmVjdCBjb2RlIGJsb2NrXG4gICAgICAgIGJhY2tUaWNrZWQgPSBmYWxzZTtcbiAgICAgICAgbGFzdEJhY2tUaWNrID0gcG9zO1xuICAgICAgfSBlbHNlIGlmIChlc2NhcGVzICUgMiA9PT0gMCkge1xuICAgICAgICBiYWNrVGlja2VkID0gdHJ1ZTtcbiAgICAgICAgbGFzdEJhY2tUaWNrID0gcG9zO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2ggPT09IDB4N2MvKiB8ICovICYmIChlc2NhcGVzICUgMiA9PT0gMCkgJiYgIWJhY2tUaWNrZWQpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHN0ci5zdWJzdHJpbmcobGFzdFBvcywgcG9zKSk7XG4gICAgICBsYXN0UG9zID0gcG9zICsgMTtcbiAgICB9XG5cbiAgICBpZiAoY2ggPT09IDB4NWMvKiBcXCAqLykge1xuICAgICAgZXNjYXBlcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBlc2NhcGVzID0gMDtcbiAgICB9XG5cbiAgICBwb3MrKztcblxuICAgIC8vIElmIHRoZXJlIHdhcyBhbiB1bi1jbG9zZWQgYmFja3RpY2ssIGdvIGJhY2sgdG8ganVzdCBhZnRlclxuICAgIC8vIHRoZSBsYXN0IGJhY2t0aWNrLCBidXQgYXMgaWYgaXQgd2FzIGEgbm9ybWFsIGNoYXJhY3RlclxuICAgIGlmIChwb3MgPT09IG1heCAmJiBiYWNrVGlja2VkKSB7XG4gICAgICBiYWNrVGlja2VkID0gZmFsc2U7XG4gICAgICBwb3MgPSBsYXN0QmFja1RpY2sgKyAxO1xuICAgIH1cblxuICAgIGNoID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcbiAgfVxuXG4gIHJlc3VsdC5wdXNoKHN0ci5zdWJzdHJpbmcobGFzdFBvcykpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0YWJsZShzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lLCBzaWxlbnQpIHtcbiAgdmFyIGNoLCBsaW5lVGV4dCwgcG9zLCBpLCBuZXh0TGluZSwgY29sdW1ucywgY29sdW1uQ291bnQsIHRva2VuLFxuICAgICAgYWxpZ25zLCB0LCB0YWJsZUxpbmVzLCB0Ym9keUxpbmVzO1xuXG4gIC8vIHNob3VsZCBoYXZlIGF0IGxlYXN0IHR3byBsaW5lc1xuICBpZiAoc3RhcnRMaW5lICsgMiA+IGVuZExpbmUpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgbmV4dExpbmUgPSBzdGFydExpbmUgKyAxO1xuXG4gIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIDwgc3RhdGUuYmxrSW5kZW50KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgLy8gZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBzZWNvbmQgbGluZSBzaG91bGQgYmUgJ3wnLCAnLScsICc6JyxcbiAgLy8gYW5kIG5vIG90aGVyIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQgYnV0IHNwYWNlcztcbiAgLy8gYmFzaWNhbGx5LCB0aGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIC9eWy06fF1bLTp8XFxzXSokLyByZWdleHBcblxuICBwb3MgPSBzdGF0ZS5iTWFya3NbbmV4dExpbmVdICsgc3RhdGUudFNoaWZ0W25leHRMaW5lXTtcbiAgaWYgKHBvcyA+PSBzdGF0ZS5lTWFya3NbbmV4dExpbmVdKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKyspO1xuICBpZiAoY2ggIT09IDB4N0MvKiB8ICovICYmIGNoICE9PSAweDJELyogLSAqLyAmJiBjaCAhPT0gMHgzQS8qIDogKi8pIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgd2hpbGUgKHBvcyA8IHN0YXRlLmVNYXJrc1tuZXh0TGluZV0pIHtcbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgICBpZiAoY2ggIT09IDB4N0MvKiB8ICovICYmIGNoICE9PSAweDJELyogLSAqLyAmJiBjaCAhPT0gMHgzQS8qIDogKi8gJiYgIWlzU3BhY2UoY2gpKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgcG9zKys7XG4gIH1cblxuICBsaW5lVGV4dCA9IGdldExpbmUoc3RhdGUsIHN0YXJ0TGluZSArIDEpO1xuXG4gIGNvbHVtbnMgPSBsaW5lVGV4dC5zcGxpdCgnfCcpO1xuICBhbGlnbnMgPSBbXTtcbiAgZm9yIChpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICB0ID0gY29sdW1uc1tpXS50cmltKCk7XG4gICAgaWYgKCF0KSB7XG4gICAgICAvLyBhbGxvdyBlbXB0eSBjb2x1bW5zIGJlZm9yZSBhbmQgYWZ0ZXIgdGFibGUsIGJ1dCBub3QgaW4gYmV0d2VlbiBjb2x1bW5zO1xuICAgICAgLy8gZS5nLiBhbGxvdyBgIHwtLS18IGAsIGRpc2FsbG93IGAgLS0tfHwtLS0gYFxuICAgICAgaWYgKGkgPT09IDAgfHwgaSA9PT0gY29sdW1ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghL146Py0rOj8kLy50ZXN0KHQpKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGlmICh0LmNoYXJDb2RlQXQodC5sZW5ndGggLSAxKSA9PT0gMHgzQS8qIDogKi8pIHtcbiAgICAgIGFsaWducy5wdXNoKHQuY2hhckNvZGVBdCgwKSA9PT0gMHgzQS8qIDogKi8gPyAnY2VudGVyJyA6ICdyaWdodCcpO1xuICAgIH0gZWxzZSBpZiAodC5jaGFyQ29kZUF0KDApID09PSAweDNBLyogOiAqLykge1xuICAgICAgYWxpZ25zLnB1c2goJ2xlZnQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWxpZ25zLnB1c2goJycpO1xuICAgIH1cbiAgfVxuXG4gIGxpbmVUZXh0ID0gZ2V0TGluZShzdGF0ZSwgc3RhcnRMaW5lKS50cmltKCk7XG4gIGlmIChsaW5lVGV4dC5pbmRleE9mKCd8JykgPT09IC0xKSB7IHJldHVybiBmYWxzZTsgfVxuICBpZiAoc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgY29sdW1ucyA9IGVzY2FwZWRTcGxpdChsaW5lVGV4dC5yZXBsYWNlKC9eXFx8fFxcfCQvZywgJycpKTtcblxuICAvLyBoZWFkZXIgcm93IHdpbGwgZGVmaW5lIGFuIGFtb3VudCBvZiBjb2x1bW5zIGluIHRoZSBlbnRpcmUgdGFibGUsXG4gIC8vIGFuZCBhbGlnbiByb3cgc2hvdWxkbid0IGJlIHNtYWxsZXIgdGhhbiB0aGF0ICh0aGUgcmVzdCBvZiB0aGUgcm93cyBjYW4pXG4gIGNvbHVtbkNvdW50ID0gY29sdW1ucy5sZW5ndGg7XG4gIGlmIChjb2x1bW5Db3VudCA+IGFsaWducy5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgaWYgKHNpbGVudCkgeyByZXR1cm4gdHJ1ZTsgfVxuXG4gIHRva2VuICAgICA9IHN0YXRlLnB1c2goJ3RhYmxlX29wZW4nLCAndGFibGUnLCAxKTtcbiAgdG9rZW4ubWFwID0gdGFibGVMaW5lcyA9IFsgc3RhcnRMaW5lLCAwIF07XG5cbiAgdG9rZW4gICAgID0gc3RhdGUucHVzaCgndGhlYWRfb3BlbicsICd0aGVhZCcsIDEpO1xuICB0b2tlbi5tYXAgPSBbIHN0YXJ0TGluZSwgc3RhcnRMaW5lICsgMSBdO1xuXG4gIHRva2VuICAgICA9IHN0YXRlLnB1c2goJ3RyX29wZW4nLCAndHInLCAxKTtcbiAgdG9rZW4ubWFwID0gWyBzdGFydExpbmUsIHN0YXJ0TGluZSArIDEgXTtcblxuICBmb3IgKGkgPSAwOyBpIDwgY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgIHRva2VuICAgICAgICAgID0gc3RhdGUucHVzaCgndGhfb3BlbicsICd0aCcsIDEpO1xuICAgIHRva2VuLm1hcCAgICAgID0gWyBzdGFydExpbmUsIHN0YXJ0TGluZSArIDEgXTtcbiAgICBpZiAoYWxpZ25zW2ldKSB7XG4gICAgICB0b2tlbi5hdHRycyAgPSBbIFsgJ3N0eWxlJywgJ3RleHQtYWxpZ246JyArIGFsaWduc1tpXSBdIF07XG4gICAgfVxuXG4gICAgdG9rZW4gICAgICAgICAgPSBzdGF0ZS5wdXNoKCdpbmxpbmUnLCAnJywgMCk7XG4gICAgdG9rZW4uY29udGVudCAgPSBjb2x1bW5zW2ldLnRyaW0oKTtcbiAgICB0b2tlbi5tYXAgICAgICA9IFsgc3RhcnRMaW5lLCBzdGFydExpbmUgKyAxIF07XG4gICAgdG9rZW4uY2hpbGRyZW4gPSBbXTtcblxuICAgIHRva2VuICAgICAgICAgID0gc3RhdGUucHVzaCgndGhfY2xvc2UnLCAndGgnLCAtMSk7XG4gIH1cblxuICB0b2tlbiAgICAgPSBzdGF0ZS5wdXNoKCd0cl9jbG9zZScsICd0cicsIC0xKTtcbiAgdG9rZW4gICAgID0gc3RhdGUucHVzaCgndGhlYWRfY2xvc2UnLCAndGhlYWQnLCAtMSk7XG5cbiAgdG9rZW4gICAgID0gc3RhdGUucHVzaCgndGJvZHlfb3BlbicsICd0Ym9keScsIDEpO1xuICB0b2tlbi5tYXAgPSB0Ym9keUxpbmVzID0gWyBzdGFydExpbmUgKyAyLCAwIF07XG5cbiAgZm9yIChuZXh0TGluZSA9IHN0YXJ0TGluZSArIDI7IG5leHRMaW5lIDwgZW5kTGluZTsgbmV4dExpbmUrKykge1xuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIDwgc3RhdGUuYmxrSW5kZW50KSB7IGJyZWFrOyB9XG5cbiAgICBsaW5lVGV4dCA9IGdldExpbmUoc3RhdGUsIG5leHRMaW5lKS50cmltKCk7XG4gICAgaWYgKGxpbmVUZXh0LmluZGV4T2YoJ3wnKSA9PT0gLTEpIHsgYnJlYWs7IH1cbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IGJyZWFrOyB9XG4gICAgY29sdW1ucyA9IGVzY2FwZWRTcGxpdChsaW5lVGV4dC5yZXBsYWNlKC9eXFx8fFxcfCQvZywgJycpKTtcblxuICAgIHRva2VuID0gc3RhdGUucHVzaCgndHJfb3BlbicsICd0cicsIDEpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBjb2x1bW5Db3VudDsgaSsrKSB7XG4gICAgICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ3RkX29wZW4nLCAndGQnLCAxKTtcbiAgICAgIGlmIChhbGlnbnNbaV0pIHtcbiAgICAgICAgdG9rZW4uYXR0cnMgID0gWyBbICdzdHlsZScsICd0ZXh0LWFsaWduOicgKyBhbGlnbnNbaV0gXSBdO1xuICAgICAgfVxuXG4gICAgICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ2lubGluZScsICcnLCAwKTtcbiAgICAgIHRva2VuLmNvbnRlbnQgID0gY29sdW1uc1tpXSA/IGNvbHVtbnNbaV0udHJpbSgpIDogJyc7XG4gICAgICB0b2tlbi5jaGlsZHJlbiA9IFtdO1xuXG4gICAgICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ3RkX2Nsb3NlJywgJ3RkJywgLTEpO1xuICAgIH1cbiAgICB0b2tlbiA9IHN0YXRlLnB1c2goJ3RyX2Nsb3NlJywgJ3RyJywgLTEpO1xuICB9XG4gIHRva2VuID0gc3RhdGUucHVzaCgndGJvZHlfY2xvc2UnLCAndGJvZHknLCAtMSk7XG4gIHRva2VuID0gc3RhdGUucHVzaCgndGFibGVfY2xvc2UnLCAndGFibGUnLCAtMSk7XG5cbiAgdGFibGVMaW5lc1sxXSA9IHRib2R5TGluZXNbMV0gPSBuZXh0TGluZTtcbiAgc3RhdGUubGluZSA9IG5leHRMaW5lO1xuICByZXR1cm4gdHJ1ZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_block/table.js\n");
2197
2198/***/ }),
2199
2200/***/ "../../../node_modules/markdown-it/lib/rules_core/block.js":
2201/*!********************************************************************************************!*\
2202 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_core/block.js ***!
2203 \********************************************************************************************/
2204/*! no static exports found */
2205/***/ (function(module, exports, __webpack_require__) {
2206
2207eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n module.exports = function block(state) {\n var token;\n\n if (state.inlineMode) {\n token = new state.Token('inline', '', 0);\n token.content = state.src;\n token.map = [0, 1];\n token.children = [];\n state.tokens.push(token);\n } else {\n state.md.block.parse(state.src, state.md, state.env, state.tokens);\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL2Jsb2NrLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL2Jsb2NrLmpzP2U2ZDkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmxvY2soc3RhdGUpIHtcbiAgdmFyIHRva2VuO1xuXG4gIGlmIChzdGF0ZS5pbmxpbmVNb2RlKSB7XG4gICAgdG9rZW4gICAgICAgICAgPSBuZXcgc3RhdGUuVG9rZW4oJ2lubGluZScsICcnLCAwKTtcbiAgICB0b2tlbi5jb250ZW50ICA9IHN0YXRlLnNyYztcbiAgICB0b2tlbi5tYXAgICAgICA9IFsgMCwgMSBdO1xuICAgIHRva2VuLmNoaWxkcmVuID0gW107XG4gICAgc3RhdGUudG9rZW5zLnB1c2godG9rZW4pO1xuICB9IGVsc2Uge1xuICAgIHN0YXRlLm1kLmJsb2NrLnBhcnNlKHN0YXRlLnNyYywgc3RhdGUubWQsIHN0YXRlLmVudiwgc3RhdGUudG9rZW5zKTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_core/block.js\n");
2208
2209/***/ }),
2210
2211/***/ "../../../node_modules/markdown-it/lib/rules_core/inline.js":
2212/*!*********************************************************************************************!*\
2213 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_core/inline.js ***!
2214 \*********************************************************************************************/
2215/*! no static exports found */
2216/***/ (function(module, exports, __webpack_require__) {
2217
2218eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n module.exports = function inline(state) {\n var tokens = state.tokens,\n tok,\n i,\n l; // Parse inlines\n\n for (i = 0, l = tokens.length; i < l; i++) {\n tok = tokens[i];\n\n if (tok.type === 'inline') {\n state.md.inline.parse(tok.content, state.md, state.env, tok.children);\n }\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL2lubGluZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfY29yZS9pbmxpbmUuanM/ZjYyOCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5saW5lKHN0YXRlKSB7XG4gIHZhciB0b2tlbnMgPSBzdGF0ZS50b2tlbnMsIHRvaywgaSwgbDtcblxuICAvLyBQYXJzZSBpbmxpbmVzXG4gIGZvciAoaSA9IDAsIGwgPSB0b2tlbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdG9rID0gdG9rZW5zW2ldO1xuICAgIGlmICh0b2sudHlwZSA9PT0gJ2lubGluZScpIHtcbiAgICAgIHN0YXRlLm1kLmlubGluZS5wYXJzZSh0b2suY29udGVudCwgc3RhdGUubWQsIHN0YXRlLmVudiwgdG9rLmNoaWxkcmVuKTtcbiAgICB9XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_core/inline.js\n");
2219
2220/***/ }),
2221
2222/***/ "../../../node_modules/markdown-it/lib/rules_core/linkify.js":
2223/*!**********************************************************************************************!*\
2224 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_core/linkify.js ***!
2225 \**********************************************************************************************/
2226/*! no static exports found */
2227/***/ (function(module, exports, __webpack_require__) {
2228
2229eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Replace link-like texts with link nodes.\n //\n // Currently restricted by `md.validateLink()` to http/https/ftp\n //\n 'use strict';\n\n var arrayReplaceAt = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").arrayReplaceAt;\n\n function isLinkOpen(str) {\n return /^<a[>\\s]/i.test(str);\n }\n\n function isLinkClose(str) {\n return /^<\\/a\\s*>/i.test(str);\n }\n\n module.exports = function linkify(state) {\n var i,\n j,\n l,\n tokens,\n token,\n currentToken,\n nodes,\n ln,\n text,\n pos,\n lastPos,\n level,\n htmlLinkLevel,\n url,\n fullUrl,\n urlText,\n blockTokens = state.tokens,\n links;\n\n if (!state.md.options.linkify) {\n return;\n }\n\n for (j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline' || !state.md.linkify.pretest(blockTokens[j].content)) {\n continue;\n }\n\n tokens = blockTokens[j].children;\n htmlLinkLevel = 0; // We scan from the end, to keep position when new tags added.\n // Use reversed logic in links start/end match\n\n for (i = tokens.length - 1; i >= 0; i--) {\n currentToken = tokens[i]; // Skip content of markdown links\n\n if (currentToken.type === 'link_close') {\n i--;\n\n while (tokens[i].level !== currentToken.level && tokens[i].type !== 'link_open') {\n i--;\n }\n\n continue;\n } // Skip content of html tag links\n\n\n if (currentToken.type === 'html_inline') {\n if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {\n htmlLinkLevel--;\n }\n\n if (isLinkClose(currentToken.content)) {\n htmlLinkLevel++;\n }\n }\n\n if (htmlLinkLevel > 0) {\n continue;\n }\n\n if (currentToken.type === 'text' && state.md.linkify.test(currentToken.content)) {\n text = currentToken.content;\n links = state.md.linkify.match(text); // Now split string to nodes\n\n nodes = [];\n level = currentToken.level;\n lastPos = 0;\n\n for (ln = 0; ln < links.length; ln++) {\n url = links[ln].url;\n fullUrl = state.md.normalizeLink(url);\n\n if (!state.md.validateLink(fullUrl)) {\n continue;\n }\n\n urlText = links[ln].text; // Linkifier might send raw hostnames like \"example.com\", where url\n // starts with domain name. So we prepend http:// in those cases,\n // and remove it afterwards.\n //\n\n if (!links[ln].schema) {\n urlText = state.md.normalizeLinkText('http://' + urlText).replace(/^http:\\/\\//, '');\n } else if (links[ln].schema === 'mailto:' && !/^mailto:/i.test(urlText)) {\n urlText = state.md.normalizeLinkText('mailto:' + urlText).replace(/^mailto:/, '');\n } else {\n urlText = state.md.normalizeLinkText(urlText);\n }\n\n pos = links[ln].index;\n\n if (pos > lastPos) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(lastPos, pos);\n token.level = level;\n nodes.push(token);\n }\n\n token = new state.Token('link_open', 'a', 1);\n token.attrs = [['href', fullUrl]];\n token.level = level++;\n token.markup = 'linkify';\n token.info = 'auto';\n nodes.push(token);\n token = new state.Token('text', '', 0);\n token.content = urlText;\n token.level = level;\n nodes.push(token);\n token = new state.Token('link_close', 'a', -1);\n token.level = --level;\n token.markup = 'linkify';\n token.info = 'auto';\n nodes.push(token);\n lastPos = links[ln].lastIndex;\n }\n\n if (lastPos < text.length) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(lastPos);\n token.level = level;\n nodes.push(token);\n } // replace current node\n\n\n blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);\n }\n }\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL2xpbmtpZnkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2NvcmUvbGlua2lmeS5qcz80Y2ZlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFJlcGxhY2UgbGluay1saWtlIHRleHRzIHdpdGggbGluayBub2Rlcy5cbi8vXG4vLyBDdXJyZW50bHkgcmVzdHJpY3RlZCBieSBgbWQudmFsaWRhdGVMaW5rKClgIHRvIGh0dHAvaHR0cHMvZnRwXG4vL1xuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBhcnJheVJlcGxhY2VBdCA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmFycmF5UmVwbGFjZUF0O1xuXG5cbmZ1bmN0aW9uIGlzTGlua09wZW4oc3RyKSB7XG4gIHJldHVybiAvXjxhWz5cXHNdL2kudGVzdChzdHIpO1xufVxuZnVuY3Rpb24gaXNMaW5rQ2xvc2Uoc3RyKSB7XG4gIHJldHVybiAvXjxcXC9hXFxzKj4vaS50ZXN0KHN0cik7XG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBsaW5raWZ5KHN0YXRlKSB7XG4gIHZhciBpLCBqLCBsLCB0b2tlbnMsIHRva2VuLCBjdXJyZW50VG9rZW4sIG5vZGVzLCBsbiwgdGV4dCwgcG9zLCBsYXN0UG9zLFxuICAgICAgbGV2ZWwsIGh0bWxMaW5rTGV2ZWwsIHVybCwgZnVsbFVybCwgdXJsVGV4dCxcbiAgICAgIGJsb2NrVG9rZW5zID0gc3RhdGUudG9rZW5zLFxuICAgICAgbGlua3M7XG5cbiAgaWYgKCFzdGF0ZS5tZC5vcHRpb25zLmxpbmtpZnkpIHsgcmV0dXJuOyB9XG5cbiAgZm9yIChqID0gMCwgbCA9IGJsb2NrVG9rZW5zLmxlbmd0aDsgaiA8IGw7IGorKykge1xuICAgIGlmIChibG9ja1Rva2Vuc1tqXS50eXBlICE9PSAnaW5saW5lJyB8fFxuICAgICAgICAhc3RhdGUubWQubGlua2lmeS5wcmV0ZXN0KGJsb2NrVG9rZW5zW2pdLmNvbnRlbnQpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB0b2tlbnMgPSBibG9ja1Rva2Vuc1tqXS5jaGlsZHJlbjtcblxuICAgIGh0bWxMaW5rTGV2ZWwgPSAwO1xuXG4gICAgLy8gV2Ugc2NhbiBmcm9tIHRoZSBlbmQsIHRvIGtlZXAgcG9zaXRpb24gd2hlbiBuZXcgdGFncyBhZGRlZC5cbiAgICAvLyBVc2UgcmV2ZXJzZWQgbG9naWMgaW4gbGlua3Mgc3RhcnQvZW5kIG1hdGNoXG4gICAgZm9yIChpID0gdG9rZW5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjdXJyZW50VG9rZW4gPSB0b2tlbnNbaV07XG5cbiAgICAgIC8vIFNraXAgY29udGVudCBvZiBtYXJrZG93biBsaW5rc1xuICAgICAgaWYgKGN1cnJlbnRUb2tlbi50eXBlID09PSAnbGlua19jbG9zZScpIHtcbiAgICAgICAgaS0tO1xuICAgICAgICB3aGlsZSAodG9rZW5zW2ldLmxldmVsICE9PSBjdXJyZW50VG9rZW4ubGV2ZWwgJiYgdG9rZW5zW2ldLnR5cGUgIT09ICdsaW5rX29wZW4nKSB7XG4gICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBTa2lwIGNvbnRlbnQgb2YgaHRtbCB0YWcgbGlua3NcbiAgICAgIGlmIChjdXJyZW50VG9rZW4udHlwZSA9PT0gJ2h0bWxfaW5saW5lJykge1xuICAgICAgICBpZiAoaXNMaW5rT3BlbihjdXJyZW50VG9rZW4uY29udGVudCkgJiYgaHRtbExpbmtMZXZlbCA+IDApIHtcbiAgICAgICAgICBodG1sTGlua0xldmVsLS07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTGlua0Nsb3NlKGN1cnJlbnRUb2tlbi5jb250ZW50KSkge1xuICAgICAgICAgIGh0bWxMaW5rTGV2ZWwrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGh0bWxMaW5rTGV2ZWwgPiAwKSB7IGNvbnRpbnVlOyB9XG5cbiAgICAgIGlmIChjdXJyZW50VG9rZW4udHlwZSA9PT0gJ3RleHQnICYmIHN0YXRlLm1kLmxpbmtpZnkudGVzdChjdXJyZW50VG9rZW4uY29udGVudCkpIHtcblxuICAgICAgICB0ZXh0ID0gY3VycmVudFRva2VuLmNvbnRlbnQ7XG4gICAgICAgIGxpbmtzID0gc3RhdGUubWQubGlua2lmeS5tYXRjaCh0ZXh0KTtcblxuICAgICAgICAvLyBOb3cgc3BsaXQgc3RyaW5nIHRvIG5vZGVzXG4gICAgICAgIG5vZGVzID0gW107XG4gICAgICAgIGxldmVsID0gY3VycmVudFRva2VuLmxldmVsO1xuICAgICAgICBsYXN0UG9zID0gMDtcblxuICAgICAgICBmb3IgKGxuID0gMDsgbG4gPCBsaW5rcy5sZW5ndGg7IGxuKyspIHtcblxuICAgICAgICAgIHVybCA9IGxpbmtzW2xuXS51cmw7XG4gICAgICAgICAgZnVsbFVybCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmsodXJsKTtcbiAgICAgICAgICBpZiAoIXN0YXRlLm1kLnZhbGlkYXRlTGluayhmdWxsVXJsKSkgeyBjb250aW51ZTsgfVxuXG4gICAgICAgICAgdXJsVGV4dCA9IGxpbmtzW2xuXS50ZXh0O1xuXG4gICAgICAgICAgLy8gTGlua2lmaWVyIG1pZ2h0IHNlbmQgcmF3IGhvc3RuYW1lcyBsaWtlIFwiZXhhbXBsZS5jb21cIiwgd2hlcmUgdXJsXG4gICAgICAgICAgLy8gc3RhcnRzIHdpdGggZG9tYWluIG5hbWUuIFNvIHdlIHByZXBlbmQgaHR0cDovLyBpbiB0aG9zZSBjYXNlcyxcbiAgICAgICAgICAvLyBhbmQgcmVtb3ZlIGl0IGFmdGVyd2FyZHMuXG4gICAgICAgICAgLy9cbiAgICAgICAgICBpZiAoIWxpbmtzW2xuXS5zY2hlbWEpIHtcbiAgICAgICAgICAgIHVybFRleHQgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rVGV4dCgnaHR0cDovLycgKyB1cmxUZXh0KS5yZXBsYWNlKC9eaHR0cDpcXC9cXC8vLCAnJyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChsaW5rc1tsbl0uc2NoZW1hID09PSAnbWFpbHRvOicgJiYgIS9ebWFpbHRvOi9pLnRlc3QodXJsVGV4dCkpIHtcbiAgICAgICAgICAgIHVybFRleHQgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rVGV4dCgnbWFpbHRvOicgKyB1cmxUZXh0KS5yZXBsYWNlKC9ebWFpbHRvOi8sICcnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXJsVGV4dCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmtUZXh0KHVybFRleHQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBvcyA9IGxpbmtzW2xuXS5pbmRleDtcblxuICAgICAgICAgIGlmIChwb3MgPiBsYXN0UG9zKSB7XG4gICAgICAgICAgICB0b2tlbiAgICAgICAgID0gbmV3IHN0YXRlLlRva2VuKCd0ZXh0JywgJycsIDApO1xuICAgICAgICAgICAgdG9rZW4uY29udGVudCA9IHRleHQuc2xpY2UobGFzdFBvcywgcG9zKTtcbiAgICAgICAgICAgIHRva2VuLmxldmVsICAgPSBsZXZlbDtcbiAgICAgICAgICAgIG5vZGVzLnB1c2godG9rZW4pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRva2VuICAgICAgICAgPSBuZXcgc3RhdGUuVG9rZW4oJ2xpbmtfb3BlbicsICdhJywgMSk7XG4gICAgICAgICAgdG9rZW4uYXR0cnMgICA9IFsgWyAnaHJlZicsIGZ1bGxVcmwgXSBdO1xuICAgICAgICAgIHRva2VuLmxldmVsICAgPSBsZXZlbCsrO1xuICAgICAgICAgIHRva2VuLm1hcmt1cCAgPSAnbGlua2lmeSc7XG4gICAgICAgICAgdG9rZW4uaW5mbyAgICA9ICdhdXRvJztcbiAgICAgICAgICBub2Rlcy5wdXNoKHRva2VuKTtcblxuICAgICAgICAgIHRva2VuICAgICAgICAgPSBuZXcgc3RhdGUuVG9rZW4oJ3RleHQnLCAnJywgMCk7XG4gICAgICAgICAgdG9rZW4uY29udGVudCA9IHVybFRleHQ7XG4gICAgICAgICAgdG9rZW4ubGV2ZWwgICA9IGxldmVsO1xuICAgICAgICAgIG5vZGVzLnB1c2godG9rZW4pO1xuXG4gICAgICAgICAgdG9rZW4gICAgICAgICA9IG5ldyBzdGF0ZS5Ub2tlbignbGlua19jbG9zZScsICdhJywgLTEpO1xuICAgICAgICAgIHRva2VuLmxldmVsICAgPSAtLWxldmVsO1xuICAgICAgICAgIHRva2VuLm1hcmt1cCAgPSAnbGlua2lmeSc7XG4gICAgICAgICAgdG9rZW4uaW5mbyAgICA9ICdhdXRvJztcbiAgICAgICAgICBub2Rlcy5wdXNoKHRva2VuKTtcblxuICAgICAgICAgIGxhc3RQb3MgPSBsaW5rc1tsbl0ubGFzdEluZGV4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChsYXN0UG9zIDwgdGV4dC5sZW5ndGgpIHtcbiAgICAgICAgICB0b2tlbiAgICAgICAgID0gbmV3IHN0YXRlLlRva2VuKCd0ZXh0JywgJycsIDApO1xuICAgICAgICAgIHRva2VuLmNvbnRlbnQgPSB0ZXh0LnNsaWNlKGxhc3RQb3MpO1xuICAgICAgICAgIHRva2VuLmxldmVsICAgPSBsZXZlbDtcbiAgICAgICAgICBub2Rlcy5wdXNoKHRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlcGxhY2UgY3VycmVudCBub2RlXG4gICAgICAgIGJsb2NrVG9rZW5zW2pdLmNoaWxkcmVuID0gdG9rZW5zID0gYXJyYXlSZXBsYWNlQXQodG9rZW5zLCBpLCBub2Rlcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_core/linkify.js\n");
2230
2231/***/ }),
2232
2233/***/ "../../../node_modules/markdown-it/lib/rules_core/normalize.js":
2234/*!************************************************************************************************!*\
2235 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_core/normalize.js ***!
2236 \************************************************************************************************/
2237/*! no static exports found */
2238/***/ (function(module, exports, __webpack_require__) {
2239
2240eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Normalize input string\n 'use strict'; // https://spec.commonmark.org/0.29/#line-ending\n\n var NEWLINES_RE = /\\r\\n?|\\n/g;\n var NULL_RE = /\\0/g;\n\n module.exports = function normalize(state) {\n var str; // Normalize newlines\n\n str = state.src.replace(NEWLINES_RE, '\\n'); // Replace NULL characters\n\n str = str.replace(NULL_RE, '\\uFFFD');\n state.src = str;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL25vcm1hbGl6ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfY29yZS9ub3JtYWxpemUuanM/YTVmNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOb3JtYWxpemUgaW5wdXQgc3RyaW5nXG5cbid1c2Ugc3RyaWN0JztcblxuXG4vLyBodHRwczovL3NwZWMuY29tbW9ubWFyay5vcmcvMC4yOS8jbGluZS1lbmRpbmdcbnZhciBORVdMSU5FU19SRSAgPSAvXFxyXFxuP3xcXG4vZztcbnZhciBOVUxMX1JFICAgICAgPSAvXFwwL2c7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBub3JtYWxpemUoc3RhdGUpIHtcbiAgdmFyIHN0cjtcblxuICAvLyBOb3JtYWxpemUgbmV3bGluZXNcbiAgc3RyID0gc3RhdGUuc3JjLnJlcGxhY2UoTkVXTElORVNfUkUsICdcXG4nKTtcblxuICAvLyBSZXBsYWNlIE5VTEwgY2hhcmFjdGVyc1xuICBzdHIgPSBzdHIucmVwbGFjZShOVUxMX1JFLCAnXFx1RkZGRCcpO1xuXG4gIHN0YXRlLnNyYyA9IHN0cjtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_core/normalize.js\n");
2241
2242/***/ }),
2243
2244/***/ "../../../node_modules/markdown-it/lib/rules_core/replacements.js":
2245/*!***************************************************************************************************!*\
2246 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_core/replacements.js ***!
2247 \***************************************************************************************************/
2248/*! no static exports found */
2249/***/ (function(module, exports, __webpack_require__) {
2250
2251eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Simple typographic replacements\n //\n // (c) (C) → ©\n // (tm) (TM) → ™\n // (r) (R) → ®\n // +- → ±\n // (p) (P) -> §\n // ... → … (also ?.... → ?.., !.... → !..)\n // ???????? → ???, !!!!! → !!!, `,,` → `,`\n // -- → &ndash;, --- → &mdash;\n //\n 'use strict'; // TODO:\n // - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n // - miltiplication 2 x 4 -> 2 × 4\n\n var RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/; // Workaround for phantomjs - need regex without /g flag,\n // or root check will fail every second time\n\n var SCOPED_ABBR_TEST_RE = /\\((c|tm|r|p)\\)/i;\n var SCOPED_ABBR_RE = /\\((c|tm|r|p)\\)/ig;\n var SCOPED_ABBR = {\n c: '©',\n r: '®',\n p: '§',\n tm: '™'\n };\n\n function replaceFn(match, name) {\n return SCOPED_ABBR[name.toLowerCase()];\n }\n\n function replace_scoped(inlineTokens) {\n var i,\n token,\n inside_autolink = 0;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n\n if (token.type === 'text' && !inside_autolink) {\n token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn);\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--;\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++;\n }\n }\n }\n\n function replace_rare(inlineTokens) {\n var i,\n token,\n inside_autolink = 0;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n\n if (token.type === 'text' && !inside_autolink) {\n if (RARE_RE.test(token.content)) {\n token.content = token.content.replace(/\\+-/g, '±') // .., ..., ....... -> …\n // but ?..... & !..... -> ?.. & !..\n .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..').replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',') // em-dash\n .replace(/(^|[^-])---([^-]|$)/mg, '$1\\u2014$2') // en-dash\n .replace(/(^|\\s)--(\\s|$)/mg, '$1\\u2013$2').replace(/(^|[^-\\s])--([^-\\s]|$)/mg, '$1\\u2013$2');\n }\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--;\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++;\n }\n }\n }\n\n module.exports = function replace(state) {\n var blkIdx;\n\n if (!state.md.options.typographer) {\n return;\n }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline') {\n continue;\n }\n\n if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n replace_scoped(state.tokens[blkIdx].children);\n }\n\n if (RARE_RE.test(state.tokens[blkIdx].content)) {\n replace_rare(state.tokens[blkIdx].children);\n }\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL3JlcGxhY2VtZW50cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfY29yZS9yZXBsYWNlbWVudHMuanM/NTYwYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTaW1wbGUgdHlwb2dyYXBoaWMgcmVwbGFjZW1lbnRzXG4vL1xuLy8gKGMpIChDKSDihpIgwqlcbi8vICh0bSkgKFRNKSDihpIg4oSiXG4vLyAocikgKFIpIOKGkiDCrlxuLy8gKy0g4oaSIMKxXG4vLyAocCkgKFApIC0+IMKnXG4vLyAuLi4g4oaSIOKApiAoYWxzbyA/Li4uLiDihpIgPy4uLCAhLi4uLiDihpIgIS4uKVxuLy8gPz8/Pz8/Pz8g4oaSID8/PywgISEhISEg4oaSICEhISwgYCwsYCDihpIgYCxgXG4vLyAtLSDihpIgJm5kYXNoOywgLS0tIOKGkiAmbWRhc2g7XG4vL1xuJ3VzZSBzdHJpY3QnO1xuXG4vLyBUT0RPOlxuLy8gLSBmcmFjdGlvbmFscyAxLzIsIDEvNCwgMy80IC0+IMK9LCDCvCwgwr5cbi8vIC0gbWlsdGlwbGljYXRpb24gMiB4IDQgLT4gMiDDlyA0XG5cbnZhciBSQVJFX1JFID0gL1xcKy18XFwuXFwufFxcP1xcP1xcP1xcP3whISEhfCwsfC0tLztcblxuLy8gV29ya2Fyb3VuZCBmb3IgcGhhbnRvbWpzIC0gbmVlZCByZWdleCB3aXRob3V0IC9nIGZsYWcsXG4vLyBvciByb290IGNoZWNrIHdpbGwgZmFpbCBldmVyeSBzZWNvbmQgdGltZVxudmFyIFNDT1BFRF9BQkJSX1RFU1RfUkUgPSAvXFwoKGN8dG18cnxwKVxcKS9pO1xuXG52YXIgU0NPUEVEX0FCQlJfUkUgPSAvXFwoKGN8dG18cnxwKVxcKS9pZztcbnZhciBTQ09QRURfQUJCUiA9IHtcbiAgYzogJ8KpJyxcbiAgcjogJ8KuJyxcbiAgcDogJ8KnJyxcbiAgdG06ICfihKInXG59O1xuXG5mdW5jdGlvbiByZXBsYWNlRm4obWF0Y2gsIG5hbWUpIHtcbiAgcmV0dXJuIFNDT1BFRF9BQkJSW25hbWUudG9Mb3dlckNhc2UoKV07XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2Vfc2NvcGVkKGlubGluZVRva2Vucykge1xuICB2YXIgaSwgdG9rZW4sIGluc2lkZV9hdXRvbGluayA9IDA7XG5cbiAgZm9yIChpID0gaW5saW5lVG9rZW5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdG9rZW4gPSBpbmxpbmVUb2tlbnNbaV07XG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ3RleHQnICYmICFpbnNpZGVfYXV0b2xpbmspIHtcbiAgICAgIHRva2VuLmNvbnRlbnQgPSB0b2tlbi5jb250ZW50LnJlcGxhY2UoU0NPUEVEX0FCQlJfUkUsIHJlcGxhY2VGbik7XG4gICAgfVxuXG4gICAgaWYgKHRva2VuLnR5cGUgPT09ICdsaW5rX29wZW4nICYmIHRva2VuLmluZm8gPT09ICdhdXRvJykge1xuICAgICAgaW5zaWRlX2F1dG9saW5rLS07XG4gICAgfVxuXG4gICAgaWYgKHRva2VuLnR5cGUgPT09ICdsaW5rX2Nsb3NlJyAmJiB0b2tlbi5pbmZvID09PSAnYXV0bycpIHtcbiAgICAgIGluc2lkZV9hdXRvbGluaysrO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZXBsYWNlX3JhcmUoaW5saW5lVG9rZW5zKSB7XG4gIHZhciBpLCB0b2tlbiwgaW5zaWRlX2F1dG9saW5rID0gMDtcblxuICBmb3IgKGkgPSBpbmxpbmVUb2tlbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB0b2tlbiA9IGlubGluZVRva2Vuc1tpXTtcblxuICAgIGlmICh0b2tlbi50eXBlID09PSAndGV4dCcgJiYgIWluc2lkZV9hdXRvbGluaykge1xuICAgICAgaWYgKFJBUkVfUkUudGVzdCh0b2tlbi5jb250ZW50KSkge1xuICAgICAgICB0b2tlbi5jb250ZW50ID0gdG9rZW4uY29udGVudFxuICAgICAgICAgIC5yZXBsYWNlKC9cXCstL2csICfCsScpXG4gICAgICAgICAgLy8gLi4sIC4uLiwgLi4uLi4uLiAtPiDigKZcbiAgICAgICAgICAvLyBidXQgPy4uLi4uICYgIS4uLi4uIC0+ID8uLiAmICEuLlxuICAgICAgICAgIC5yZXBsYWNlKC9cXC57Mix9L2csICfigKYnKS5yZXBsYWNlKC8oWz8hXSnigKYvZywgJyQxLi4nKVxuICAgICAgICAgIC5yZXBsYWNlKC8oWz8hXSl7NCx9L2csICckMSQxJDEnKS5yZXBsYWNlKC8sezIsfS9nLCAnLCcpXG4gICAgICAgICAgLy8gZW0tZGFzaFxuICAgICAgICAgIC5yZXBsYWNlKC8oXnxbXi1dKS0tLShbXi1dfCQpL21nLCAnJDFcXHUyMDE0JDInKVxuICAgICAgICAgIC8vIGVuLWRhc2hcbiAgICAgICAgICAucmVwbGFjZSgvKF58XFxzKS0tKFxcc3wkKS9tZywgJyQxXFx1MjAxMyQyJylcbiAgICAgICAgICAucmVwbGFjZSgvKF58W14tXFxzXSktLShbXi1cXHNdfCQpL21nLCAnJDFcXHUyMDEzJDInKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ2xpbmtfb3BlbicgJiYgdG9rZW4uaW5mbyA9PT0gJ2F1dG8nKSB7XG4gICAgICBpbnNpZGVfYXV0b2xpbmstLTtcbiAgICB9XG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ2xpbmtfY2xvc2UnICYmIHRva2VuLmluZm8gPT09ICdhdXRvJykge1xuICAgICAgaW5zaWRlX2F1dG9saW5rKys7XG4gICAgfVxuICB9XG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiByZXBsYWNlKHN0YXRlKSB7XG4gIHZhciBibGtJZHg7XG5cbiAgaWYgKCFzdGF0ZS5tZC5vcHRpb25zLnR5cG9ncmFwaGVyKSB7IHJldHVybjsgfVxuXG4gIGZvciAoYmxrSWR4ID0gc3RhdGUudG9rZW5zLmxlbmd0aCAtIDE7IGJsa0lkeCA+PSAwOyBibGtJZHgtLSkge1xuXG4gICAgaWYgKHN0YXRlLnRva2Vuc1tibGtJZHhdLnR5cGUgIT09ICdpbmxpbmUnKSB7IGNvbnRpbnVlOyB9XG5cbiAgICBpZiAoU0NPUEVEX0FCQlJfVEVTVF9SRS50ZXN0KHN0YXRlLnRva2Vuc1tibGtJZHhdLmNvbnRlbnQpKSB7XG4gICAgICByZXBsYWNlX3Njb3BlZChzdGF0ZS50b2tlbnNbYmxrSWR4XS5jaGlsZHJlbik7XG4gICAgfVxuXG4gICAgaWYgKFJBUkVfUkUudGVzdChzdGF0ZS50b2tlbnNbYmxrSWR4XS5jb250ZW50KSkge1xuICAgICAgcmVwbGFjZV9yYXJlKHN0YXRlLnRva2Vuc1tibGtJZHhdLmNoaWxkcmVuKTtcbiAgICB9XG5cbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBSEE7QUFBQTtBQUFBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_core/replacements.js\n");
2252
2253/***/ }),
2254
2255/***/ "../../../node_modules/markdown-it/lib/rules_core/smartquotes.js":
2256/*!**************************************************************************************************!*\
2257 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_core/smartquotes.js ***!
2258 \**************************************************************************************************/
2259/*! no static exports found */
2260/***/ (function(module, exports, __webpack_require__) {
2261
2262eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Convert straight quotation marks to typographic ones\n //\n 'use strict';\n\n var isWhiteSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isWhiteSpace;\n\n var isPunctChar = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isPunctChar;\n\n var isMdAsciiPunct = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isMdAsciiPunct;\n\n var QUOTE_TEST_RE = /['\"]/;\n var QUOTE_RE = /['\"]/g;\n var APOSTROPHE = '\\u2019';\n /* ’ */\n\n function replaceAt(str, index, ch) {\n return str.substr(0, index) + ch + str.substr(index + 1);\n }\n\n function process_inlines(tokens, state) {\n var i, token, text, t, pos, max, thisLevel, item, lastChar, nextChar, isLastPunctChar, isNextPunctChar, isLastWhiteSpace, isNextWhiteSpace, canOpen, canClose, j, isSingle, stack, openQuote, closeQuote;\n stack = [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n thisLevel = tokens[i].level;\n\n for (j = stack.length - 1; j >= 0; j--) {\n if (stack[j].level <= thisLevel) {\n break;\n }\n }\n\n stack.length = j + 1;\n\n if (token.type !== 'text') {\n continue;\n }\n\n text = token.content;\n pos = 0;\n max = text.length;\n /*eslint no-labels:0,block-scoped-var:0*/\n\n OUTER: while (pos < max) {\n QUOTE_RE.lastIndex = pos;\n t = QUOTE_RE.exec(text);\n\n if (!t) {\n break;\n }\n\n canOpen = canClose = true;\n pos = t.index + 1;\n isSingle = t[0] === \"'\"; // Find previous character,\n // default to space if it's the beginning of the line\n //\n\n lastChar = 0x20;\n\n if (t.index - 1 >= 0) {\n lastChar = text.charCodeAt(t.index - 1);\n } else {\n for (j = i - 1; j >= 0; j--) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // lastChar defaults to 0x20\n\n if (tokens[j].type !== 'text') continue;\n lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1);\n break;\n }\n } // Find next character,\n // default to space if it's the end of the line\n //\n\n\n nextChar = 0x20;\n\n if (pos < max) {\n nextChar = text.charCodeAt(pos);\n } else {\n for (j = i + 1; j < tokens.length; j++) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // nextChar defaults to 0x20\n\n if (tokens[j].type !== 'text') continue;\n nextChar = tokens[j].content.charCodeAt(0);\n break;\n }\n }\n\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n canOpen = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n canOpen = false;\n }\n }\n\n if (isLastWhiteSpace) {\n canClose = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n canClose = false;\n }\n }\n\n if (nextChar === 0x22\n /* \" */\n && t[0] === '\"') {\n if (lastChar >= 0x30\n /* 0 */\n && lastChar <= 0x39\n /* 9 */\n ) {\n // special case: 1\"\" - count first quote as an inch\n canClose = canOpen = false;\n }\n }\n\n if (canOpen && canClose) {\n // treat this as the middle of the word\n canOpen = false;\n canClose = isNextPunctChar;\n }\n\n if (!canOpen && !canClose) {\n // middle of word\n if (isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n\n continue;\n }\n\n if (canClose) {\n // this could be a closing quote, rewind the stack to get a match\n for (j = stack.length - 1; j >= 0; j--) {\n item = stack[j];\n\n if (stack[j].level < thisLevel) {\n break;\n }\n\n if (item.single === isSingle && stack[j].level === thisLevel) {\n item = stack[j];\n\n if (isSingle) {\n openQuote = state.md.options.quotes[2];\n closeQuote = state.md.options.quotes[3];\n } else {\n openQuote = state.md.options.quotes[0];\n closeQuote = state.md.options.quotes[1];\n } // replace token.content *before* tokens[item.token].content,\n // because, if they are pointing at the same token, replaceAt\n // could mess up indices when quote length != 1\n\n\n token.content = replaceAt(token.content, t.index, closeQuote);\n tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, openQuote);\n pos += closeQuote.length - 1;\n\n if (item.token === i) {\n pos += openQuote.length - 1;\n }\n\n text = token.content;\n max = text.length;\n stack.length = j;\n continue OUTER;\n }\n }\n }\n\n if (canOpen) {\n stack.push({\n token: i,\n pos: t.index,\n single: isSingle,\n level: thisLevel\n });\n } else if (canClose && isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n }\n }\n }\n\n module.exports = function smartquotes(state) {\n /*eslint max-depth:0*/\n var blkIdx;\n\n if (!state.md.options.typographer) {\n return;\n }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline' || !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n continue;\n }\n\n process_inlines(state.tokens[blkIdx].children, state);\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL3NtYXJ0cXVvdGVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL3NtYXJ0cXVvdGVzLmpzPzg0NTMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29udmVydCBzdHJhaWdodCBxdW90YXRpb24gbWFya3MgdG8gdHlwb2dyYXBoaWMgb25lc1xuLy9cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgaXNXaGl0ZVNwYWNlICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1doaXRlU3BhY2U7XG52YXIgaXNQdW5jdENoYXIgICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1B1bmN0Q2hhcjtcbnZhciBpc01kQXNjaWlQdW5jdCA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzTWRBc2NpaVB1bmN0O1xuXG52YXIgUVVPVEVfVEVTVF9SRSA9IC9bJ1wiXS87XG52YXIgUVVPVEVfUkUgPSAvWydcIl0vZztcbnZhciBBUE9TVFJPUEhFID0gJ1xcdTIwMTknOyAvKiDigJkgKi9cblxuXG5mdW5jdGlvbiByZXBsYWNlQXQoc3RyLCBpbmRleCwgY2gpIHtcbiAgcmV0dXJuIHN0ci5zdWJzdHIoMCwgaW5kZXgpICsgY2ggKyBzdHIuc3Vic3RyKGluZGV4ICsgMSk7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NfaW5saW5lcyh0b2tlbnMsIHN0YXRlKSB7XG4gIHZhciBpLCB0b2tlbiwgdGV4dCwgdCwgcG9zLCBtYXgsIHRoaXNMZXZlbCwgaXRlbSwgbGFzdENoYXIsIG5leHRDaGFyLFxuICAgICAgaXNMYXN0UHVuY3RDaGFyLCBpc05leHRQdW5jdENoYXIsIGlzTGFzdFdoaXRlU3BhY2UsIGlzTmV4dFdoaXRlU3BhY2UsXG4gICAgICBjYW5PcGVuLCBjYW5DbG9zZSwgaiwgaXNTaW5nbGUsIHN0YWNrLCBvcGVuUXVvdGUsIGNsb3NlUXVvdGU7XG5cbiAgc3RhY2sgPSBbXTtcblxuICBmb3IgKGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgdG9rZW4gPSB0b2tlbnNbaV07XG5cbiAgICB0aGlzTGV2ZWwgPSB0b2tlbnNbaV0ubGV2ZWw7XG5cbiAgICBmb3IgKGogPSBzdGFjay5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgaWYgKHN0YWNrW2pdLmxldmVsIDw9IHRoaXNMZXZlbCkgeyBicmVhazsgfVxuICAgIH1cbiAgICBzdGFjay5sZW5ndGggPSBqICsgMTtcblxuICAgIGlmICh0b2tlbi50eXBlICE9PSAndGV4dCcpIHsgY29udGludWU7IH1cblxuICAgIHRleHQgPSB0b2tlbi5jb250ZW50O1xuICAgIHBvcyA9IDA7XG4gICAgbWF4ID0gdGV4dC5sZW5ndGg7XG5cbiAgICAvKmVzbGludCBuby1sYWJlbHM6MCxibG9jay1zY29wZWQtdmFyOjAqL1xuICAgIE9VVEVSOlxuICAgIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICAgIFFVT1RFX1JFLmxhc3RJbmRleCA9IHBvcztcbiAgICAgIHQgPSBRVU9URV9SRS5leGVjKHRleHQpO1xuICAgICAgaWYgKCF0KSB7IGJyZWFrOyB9XG5cbiAgICAgIGNhbk9wZW4gPSBjYW5DbG9zZSA9IHRydWU7XG4gICAgICBwb3MgPSB0LmluZGV4ICsgMTtcbiAgICAgIGlzU2luZ2xlID0gKHRbMF0gPT09IFwiJ1wiKTtcblxuICAgICAgLy8gRmluZCBwcmV2aW91cyBjaGFyYWN0ZXIsXG4gICAgICAvLyBkZWZhdWx0IHRvIHNwYWNlIGlmIGl0J3MgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZVxuICAgICAgLy9cbiAgICAgIGxhc3RDaGFyID0gMHgyMDtcblxuICAgICAgaWYgKHQuaW5kZXggLSAxID49IDApIHtcbiAgICAgICAgbGFzdENoYXIgPSB0ZXh0LmNoYXJDb2RlQXQodC5pbmRleCAtIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChqID0gaSAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgaWYgKHRva2Vuc1tqXS50eXBlID09PSAnc29mdGJyZWFrJyB8fCB0b2tlbnNbal0udHlwZSA9PT0gJ2hhcmRicmVhaycpIGJyZWFrOyAvLyBsYXN0Q2hhciBkZWZhdWx0cyB0byAweDIwXG4gICAgICAgICAgaWYgKHRva2Vuc1tqXS50eXBlICE9PSAndGV4dCcpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgbGFzdENoYXIgPSB0b2tlbnNbal0uY29udGVudC5jaGFyQ29kZUF0KHRva2Vuc1tqXS5jb250ZW50Lmxlbmd0aCAtIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEZpbmQgbmV4dCBjaGFyYWN0ZXIsXG4gICAgICAvLyBkZWZhdWx0IHRvIHNwYWNlIGlmIGl0J3MgdGhlIGVuZCBvZiB0aGUgbGluZVxuICAgICAgLy9cbiAgICAgIG5leHRDaGFyID0gMHgyMDtcblxuICAgICAgaWYgKHBvcyA8IG1heCkge1xuICAgICAgICBuZXh0Q2hhciA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChqID0gaSArIDE7IGogPCB0b2tlbnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBpZiAodG9rZW5zW2pdLnR5cGUgPT09ICdzb2Z0YnJlYWsnIHx8IHRva2Vuc1tqXS50eXBlID09PSAnaGFyZGJyZWFrJykgYnJlYWs7IC8vIG5leHRDaGFyIGRlZmF1bHRzIHRvIDB4MjBcbiAgICAgICAgICBpZiAodG9rZW5zW2pdLnR5cGUgIT09ICd0ZXh0JykgY29udGludWU7XG5cbiAgICAgICAgICBuZXh0Q2hhciA9IHRva2Vuc1tqXS5jb250ZW50LmNoYXJDb2RlQXQoMCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaXNMYXN0UHVuY3RDaGFyID0gaXNNZEFzY2lpUHVuY3QobGFzdENoYXIpIHx8IGlzUHVuY3RDaGFyKFN0cmluZy5mcm9tQ2hhckNvZGUobGFzdENoYXIpKTtcbiAgICAgIGlzTmV4dFB1bmN0Q2hhciA9IGlzTWRBc2NpaVB1bmN0KG5leHRDaGFyKSB8fCBpc1B1bmN0Q2hhcihTdHJpbmcuZnJvbUNoYXJDb2RlKG5leHRDaGFyKSk7XG5cbiAgICAgIGlzTGFzdFdoaXRlU3BhY2UgPSBpc1doaXRlU3BhY2UobGFzdENoYXIpO1xuICAgICAgaXNOZXh0V2hpdGVTcGFjZSA9IGlzV2hpdGVTcGFjZShuZXh0Q2hhcik7XG5cbiAgICAgIGlmIChpc05leHRXaGl0ZVNwYWNlKSB7XG4gICAgICAgIGNhbk9wZW4gPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoaXNOZXh0UHVuY3RDaGFyKSB7XG4gICAgICAgIGlmICghKGlzTGFzdFdoaXRlU3BhY2UgfHwgaXNMYXN0UHVuY3RDaGFyKSkge1xuICAgICAgICAgIGNhbk9wZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaXNMYXN0V2hpdGVTcGFjZSkge1xuICAgICAgICBjYW5DbG9zZSA9IGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChpc0xhc3RQdW5jdENoYXIpIHtcbiAgICAgICAgaWYgKCEoaXNOZXh0V2hpdGVTcGFjZSB8fCBpc05leHRQdW5jdENoYXIpKSB7XG4gICAgICAgICAgY2FuQ2xvc2UgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobmV4dENoYXIgPT09IDB4MjIgLyogXCIgKi8gJiYgdFswXSA9PT0gJ1wiJykge1xuICAgICAgICBpZiAobGFzdENoYXIgPj0gMHgzMCAvKiAwICovICYmIGxhc3RDaGFyIDw9IDB4MzkgLyogOSAqLykge1xuICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZTogMVwiXCIgLSBjb3VudCBmaXJzdCBxdW90ZSBhcyBhbiBpbmNoXG4gICAgICAgICAgY2FuQ2xvc2UgPSBjYW5PcGVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNhbk9wZW4gJiYgY2FuQ2xvc2UpIHtcbiAgICAgICAgLy8gdHJlYXQgdGhpcyBhcyB0aGUgbWlkZGxlIG9mIHRoZSB3b3JkXG4gICAgICAgIGNhbk9wZW4gPSBmYWxzZTtcbiAgICAgICAgY2FuQ2xvc2UgPSBpc05leHRQdW5jdENoYXI7XG4gICAgICB9XG5cbiAgICAgIGlmICghY2FuT3BlbiAmJiAhY2FuQ2xvc2UpIHtcbiAgICAgICAgLy8gbWlkZGxlIG9mIHdvcmRcbiAgICAgICAgaWYgKGlzU2luZ2xlKSB7XG4gICAgICAgICAgdG9rZW4uY29udGVudCA9IHJlcGxhY2VBdCh0b2tlbi5jb250ZW50LCB0LmluZGV4LCBBUE9TVFJPUEhFKTtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhbkNsb3NlKSB7XG4gICAgICAgIC8vIHRoaXMgY291bGQgYmUgYSBjbG9zaW5nIHF1b3RlLCByZXdpbmQgdGhlIHN0YWNrIHRvIGdldCBhIG1hdGNoXG4gICAgICAgIGZvciAoaiA9IHN0YWNrLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgaXRlbSA9IHN0YWNrW2pdO1xuICAgICAgICAgIGlmIChzdGFja1tqXS5sZXZlbCA8IHRoaXNMZXZlbCkgeyBicmVhazsgfVxuICAgICAgICAgIGlmIChpdGVtLnNpbmdsZSA9PT0gaXNTaW5nbGUgJiYgc3RhY2tbal0ubGV2ZWwgPT09IHRoaXNMZXZlbCkge1xuICAgICAgICAgICAgaXRlbSA9IHN0YWNrW2pdO1xuXG4gICAgICAgICAgICBpZiAoaXNTaW5nbGUpIHtcbiAgICAgICAgICAgICAgb3BlblF1b3RlID0gc3RhdGUubWQub3B0aW9ucy5xdW90ZXNbMl07XG4gICAgICAgICAgICAgIGNsb3NlUXVvdGUgPSBzdGF0ZS5tZC5vcHRpb25zLnF1b3Rlc1szXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9wZW5RdW90ZSA9IHN0YXRlLm1kLm9wdGlvbnMucXVvdGVzWzBdO1xuICAgICAgICAgICAgICBjbG9zZVF1b3RlID0gc3RhdGUubWQub3B0aW9ucy5xdW90ZXNbMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHJlcGxhY2UgdG9rZW4uY29udGVudCAqYmVmb3JlKiB0b2tlbnNbaXRlbS50b2tlbl0uY29udGVudCxcbiAgICAgICAgICAgIC8vIGJlY2F1c2UsIGlmIHRoZXkgYXJlIHBvaW50aW5nIGF0IHRoZSBzYW1lIHRva2VuLCByZXBsYWNlQXRcbiAgICAgICAgICAgIC8vIGNvdWxkIG1lc3MgdXAgaW5kaWNlcyB3aGVuIHF1b3RlIGxlbmd0aCAhPSAxXG4gICAgICAgICAgICB0b2tlbi5jb250ZW50ID0gcmVwbGFjZUF0KHRva2VuLmNvbnRlbnQsIHQuaW5kZXgsIGNsb3NlUXVvdGUpO1xuICAgICAgICAgICAgdG9rZW5zW2l0ZW0udG9rZW5dLmNvbnRlbnQgPSByZXBsYWNlQXQoXG4gICAgICAgICAgICAgIHRva2Vuc1tpdGVtLnRva2VuXS5jb250ZW50LCBpdGVtLnBvcywgb3BlblF1b3RlKTtcblxuICAgICAgICAgICAgcG9zICs9IGNsb3NlUXVvdGUubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGlmIChpdGVtLnRva2VuID09PSBpKSB7IHBvcyArPSBvcGVuUXVvdGUubGVuZ3RoIC0gMTsgfVxuXG4gICAgICAgICAgICB0ZXh0ID0gdG9rZW4uY29udGVudDtcbiAgICAgICAgICAgIG1heCA9IHRleHQubGVuZ3RoO1xuXG4gICAgICAgICAgICBzdGFjay5sZW5ndGggPSBqO1xuICAgICAgICAgICAgY29udGludWUgT1VURVI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjYW5PcGVuKSB7XG4gICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgIHRva2VuOiBpLFxuICAgICAgICAgIHBvczogdC5pbmRleCxcbiAgICAgICAgICBzaW5nbGU6IGlzU2luZ2xlLFxuICAgICAgICAgIGxldmVsOiB0aGlzTGV2ZWxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbkNsb3NlICYmIGlzU2luZ2xlKSB7XG4gICAgICAgIHRva2VuLmNvbnRlbnQgPSByZXBsYWNlQXQodG9rZW4uY29udGVudCwgdC5pbmRleCwgQVBPU1RST1BIRSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzbWFydHF1b3RlcyhzdGF0ZSkge1xuICAvKmVzbGludCBtYXgtZGVwdGg6MCovXG4gIHZhciBibGtJZHg7XG5cbiAgaWYgKCFzdGF0ZS5tZC5vcHRpb25zLnR5cG9ncmFwaGVyKSB7IHJldHVybjsgfVxuXG4gIGZvciAoYmxrSWR4ID0gc3RhdGUudG9rZW5zLmxlbmd0aCAtIDE7IGJsa0lkeCA+PSAwOyBibGtJZHgtLSkge1xuXG4gICAgaWYgKHN0YXRlLnRva2Vuc1tibGtJZHhdLnR5cGUgIT09ICdpbmxpbmUnIHx8XG4gICAgICAgICFRVU9URV9URVNUX1JFLnRlc3Qoc3RhdGUudG9rZW5zW2Jsa0lkeF0uY29udGVudCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHByb2Nlc3NfaW5saW5lcyhzdGF0ZS50b2tlbnNbYmxrSWR4XS5jaGlsZHJlbiwgc3RhdGUpO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_core/smartquotes.js\n");
2263
2264/***/ }),
2265
2266/***/ "../../../node_modules/markdown-it/lib/rules_core/state_core.js":
2267/*!*************************************************************************************************!*\
2268 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_core/state_core.js ***!
2269 \*************************************************************************************************/
2270/*! no static exports found */
2271/***/ (function(module, exports, __webpack_require__) {
2272
2273eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Core state object\n //\n 'use strict';\n\n var Token = __webpack_require__(/*! ../token */ \"../../../node_modules/markdown-it/lib/token.js\");\n\n function StateCore(src, md, env) {\n this.src = src;\n this.env = env;\n this.tokens = [];\n this.inlineMode = false;\n this.md = md; // link to parser instance\n } // re-export Token class to use in core rules\n\n\n StateCore.prototype.Token = Token;\n module.exports = StateCore;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL3N0YXRlX2NvcmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2NvcmUvc3RhdGVfY29yZS5qcz8yODA1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcmUgc3RhdGUgb2JqZWN0XG4vL1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgVG9rZW4gPSByZXF1aXJlKCcuLi90b2tlbicpO1xuXG5cbmZ1bmN0aW9uIFN0YXRlQ29yZShzcmMsIG1kLCBlbnYpIHtcbiAgdGhpcy5zcmMgPSBzcmM7XG4gIHRoaXMuZW52ID0gZW52O1xuICB0aGlzLnRva2VucyA9IFtdO1xuICB0aGlzLmlubGluZU1vZGUgPSBmYWxzZTtcbiAgdGhpcy5tZCA9IG1kOyAvLyBsaW5rIHRvIHBhcnNlciBpbnN0YW5jZVxufVxuXG4vLyByZS1leHBvcnQgVG9rZW4gY2xhc3MgdG8gdXNlIGluIGNvcmUgcnVsZXNcblN0YXRlQ29yZS5wcm90b3R5cGUuVG9rZW4gPSBUb2tlbjtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IFN0YXRlQ29yZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_core/state_core.js\n");
2274
2275/***/ }),
2276
2277/***/ "../../../node_modules/markdown-it/lib/rules_inline/autolink.js":
2278/*!*************************************************************************************************!*\
2279 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_inline/autolink.js ***!
2280 \*************************************************************************************************/
2281/*! no static exports found */
2282/***/ (function(module, exports, __webpack_require__) {
2283
2284eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Process autolinks '<protocol:...>'\n 'use strict';\n /*eslint max-len:0*/\n\n var EMAIL_RE = /^<([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;\n var AUTOLINK_RE = /^<([a-zA-Z][a-zA-Z0-9+.\\-]{1,31}):([^<>\\x00-\\x20]*)>/;\n\n module.exports = function autolink(state, silent) {\n var tail,\n linkMatch,\n emailMatch,\n url,\n fullUrl,\n token,\n pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x3C\n /* < */\n ) {\n return false;\n }\n\n tail = state.src.slice(pos);\n\n if (tail.indexOf('>') < 0) {\n return false;\n }\n\n if (AUTOLINK_RE.test(tail)) {\n linkMatch = tail.match(AUTOLINK_RE);\n url = linkMatch[0].slice(1, -1);\n fullUrl = state.md.normalizeLink(url);\n\n if (!state.md.validateLink(fullUrl)) {\n return false;\n }\n\n if (!silent) {\n token = state.push('link_open', 'a', 1);\n token.attrs = [['href', fullUrl]];\n token.markup = 'autolink';\n token.info = 'auto';\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n token = state.push('link_close', 'a', -1);\n token.markup = 'autolink';\n token.info = 'auto';\n }\n\n state.pos += linkMatch[0].length;\n return true;\n }\n\n if (EMAIL_RE.test(tail)) {\n emailMatch = tail.match(EMAIL_RE);\n url = emailMatch[0].slice(1, -1);\n fullUrl = state.md.normalizeLink('mailto:' + url);\n\n if (!state.md.validateLink(fullUrl)) {\n return false;\n }\n\n if (!silent) {\n token = state.push('link_open', 'a', 1);\n token.attrs = [['href', fullUrl]];\n token.markup = 'autolink';\n token.info = 'auto';\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n token = state.push('link_close', 'a', -1);\n token.markup = 'autolink';\n token.info = 'auto';\n }\n\n state.pos += emailMatch[0].length;\n return true;\n }\n\n return false;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvYXV0b2xpbmsuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9hdXRvbGluay5qcz9kZjg0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFByb2Nlc3MgYXV0b2xpbmtzICc8cHJvdG9jb2w6Li4uPidcblxuJ3VzZSBzdHJpY3QnO1xuXG5cbi8qZXNsaW50IG1heC1sZW46MCovXG52YXIgRU1BSUxfUkUgICAgPSAvXjwoW2EtekEtWjAtOS4hIyQlJicqK1xcLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcXC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKik+LztcbnZhciBBVVRPTElOS19SRSA9IC9ePChbYS16QS1aXVthLXpBLVowLTkrLlxcLV17MSwzMX0pOihbXjw+XFx4MDAtXFx4MjBdKik+LztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGF1dG9saW5rKHN0YXRlLCBzaWxlbnQpIHtcbiAgdmFyIHRhaWwsIGxpbmtNYXRjaCwgZW1haWxNYXRjaCwgdXJsLCBmdWxsVXJsLCB0b2tlbixcbiAgICAgIHBvcyA9IHN0YXRlLnBvcztcblxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMHgzQy8qIDwgKi8pIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgdGFpbCA9IHN0YXRlLnNyYy5zbGljZShwb3MpO1xuXG4gIGlmICh0YWlsLmluZGV4T2YoJz4nKSA8IDApIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgaWYgKEFVVE9MSU5LX1JFLnRlc3QodGFpbCkpIHtcbiAgICBsaW5rTWF0Y2ggPSB0YWlsLm1hdGNoKEFVVE9MSU5LX1JFKTtcblxuICAgIHVybCA9IGxpbmtNYXRjaFswXS5zbGljZSgxLCAtMSk7XG4gICAgZnVsbFVybCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmsodXJsKTtcbiAgICBpZiAoIXN0YXRlLm1kLnZhbGlkYXRlTGluayhmdWxsVXJsKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgIGlmICghc2lsZW50KSB7XG4gICAgICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgnbGlua19vcGVuJywgJ2EnLCAxKTtcbiAgICAgIHRva2VuLmF0dHJzICAgPSBbIFsgJ2hyZWYnLCBmdWxsVXJsIF0gXTtcbiAgICAgIHRva2VuLm1hcmt1cCAgPSAnYXV0b2xpbmsnO1xuICAgICAgdG9rZW4uaW5mbyAgICA9ICdhdXRvJztcblxuICAgICAgdG9rZW4gICAgICAgICA9IHN0YXRlLnB1c2goJ3RleHQnLCAnJywgMCk7XG4gICAgICB0b2tlbi5jb250ZW50ID0gc3RhdGUubWQubm9ybWFsaXplTGlua1RleHQodXJsKTtcblxuICAgICAgdG9rZW4gICAgICAgICA9IHN0YXRlLnB1c2goJ2xpbmtfY2xvc2UnLCAnYScsIC0xKTtcbiAgICAgIHRva2VuLm1hcmt1cCAgPSAnYXV0b2xpbmsnO1xuICAgICAgdG9rZW4uaW5mbyAgICA9ICdhdXRvJztcbiAgICB9XG5cbiAgICBzdGF0ZS5wb3MgKz0gbGlua01hdGNoWzBdLmxlbmd0aDtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChFTUFJTF9SRS50ZXN0KHRhaWwpKSB7XG4gICAgZW1haWxNYXRjaCA9IHRhaWwubWF0Y2goRU1BSUxfUkUpO1xuXG4gICAgdXJsID0gZW1haWxNYXRjaFswXS5zbGljZSgxLCAtMSk7XG4gICAgZnVsbFVybCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmsoJ21haWx0bzonICsgdXJsKTtcbiAgICBpZiAoIXN0YXRlLm1kLnZhbGlkYXRlTGluayhmdWxsVXJsKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgIGlmICghc2lsZW50KSB7XG4gICAgICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgnbGlua19vcGVuJywgJ2EnLCAxKTtcbiAgICAgIHRva2VuLmF0dHJzICAgPSBbIFsgJ2hyZWYnLCBmdWxsVXJsIF0gXTtcbiAgICAgIHRva2VuLm1hcmt1cCAgPSAnYXV0b2xpbmsnO1xuICAgICAgdG9rZW4uaW5mbyAgICA9ICdhdXRvJztcblxuICAgICAgdG9rZW4gICAgICAgICA9IHN0YXRlLnB1c2goJ3RleHQnLCAnJywgMCk7XG4gICAgICB0b2tlbi5jb250ZW50ID0gc3RhdGUubWQubm9ybWFsaXplTGlua1RleHQodXJsKTtcblxuICAgICAgdG9rZW4gICAgICAgICA9IHN0YXRlLnB1c2goJ2xpbmtfY2xvc2UnLCAnYScsIC0xKTtcbiAgICAgIHRva2VuLm1hcmt1cCAgPSAnYXV0b2xpbmsnO1xuICAgICAgdG9rZW4uaW5mbyAgICA9ICdhdXRvJztcbiAgICB9XG5cbiAgICBzdGF0ZS5wb3MgKz0gZW1haWxNYXRjaFswXS5sZW5ndGg7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/autolink.js\n");
2285
2286/***/ }),
2287
2288/***/ "../../../node_modules/markdown-it/lib/rules_inline/backticks.js":
2289/*!**************************************************************************************************!*\
2290 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_inline/backticks.js ***!
2291 \**************************************************************************************************/
2292/*! no static exports found */
2293/***/ (function(module, exports, __webpack_require__) {
2294
2295eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Parse backticks\n 'use strict';\n\n module.exports = function backtick(state, silent) {\n var start,\n max,\n marker,\n matchStart,\n matchEnd,\n token,\n pos = state.pos,\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x60\n /* ` */\n ) {\n return false;\n }\n\n start = pos;\n pos++;\n max = state.posMax;\n\n while (pos < max && state.src.charCodeAt(pos) === 0x60\n /* ` */\n ) {\n pos++;\n }\n\n marker = state.src.slice(start, pos);\n matchStart = matchEnd = pos;\n\n while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {\n matchEnd = matchStart + 1;\n\n while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60\n /* ` */\n ) {\n matchEnd++;\n }\n\n if (matchEnd - matchStart === marker.length) {\n if (!silent) {\n token = state.push('code_inline', 'code', 0);\n token.markup = marker;\n token.content = state.src.slice(pos, matchStart).replace(/\\n/g, ' ').replace(/^ (.+) $/, '$1');\n }\n\n state.pos = matchEnd;\n return true;\n }\n }\n\n if (!silent) {\n state.pending += marker;\n }\n\n state.pos += marker.length;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvYmFja3RpY2tzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvYmFja3RpY2tzLmpzPzgyODEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUGFyc2UgYmFja3RpY2tzXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiYWNrdGljayhzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciBzdGFydCwgbWF4LCBtYXJrZXIsIG1hdGNoU3RhcnQsIG1hdGNoRW5kLCB0b2tlbixcbiAgICAgIHBvcyA9IHN0YXRlLnBvcyxcbiAgICAgIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcblxuICBpZiAoY2ggIT09IDB4NjAvKiBgICovKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIHN0YXJ0ID0gcG9zO1xuICBwb3MrKztcbiAgbWF4ID0gc3RhdGUucG9zTWF4O1xuXG4gIHdoaWxlIChwb3MgPCBtYXggJiYgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHg2MC8qIGAgKi8pIHsgcG9zKys7IH1cblxuICBtYXJrZXIgPSBzdGF0ZS5zcmMuc2xpY2Uoc3RhcnQsIHBvcyk7XG5cbiAgbWF0Y2hTdGFydCA9IG1hdGNoRW5kID0gcG9zO1xuXG4gIHdoaWxlICgobWF0Y2hTdGFydCA9IHN0YXRlLnNyYy5pbmRleE9mKCdgJywgbWF0Y2hFbmQpKSAhPT0gLTEpIHtcbiAgICBtYXRjaEVuZCA9IG1hdGNoU3RhcnQgKyAxO1xuXG4gICAgd2hpbGUgKG1hdGNoRW5kIDwgbWF4ICYmIHN0YXRlLnNyYy5jaGFyQ29kZUF0KG1hdGNoRW5kKSA9PT0gMHg2MC8qIGAgKi8pIHsgbWF0Y2hFbmQrKzsgfVxuXG4gICAgaWYgKG1hdGNoRW5kIC0gbWF0Y2hTdGFydCA9PT0gbWFya2VyLmxlbmd0aCkge1xuICAgICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgICAgdG9rZW4gICAgICAgICA9IHN0YXRlLnB1c2goJ2NvZGVfaW5saW5lJywgJ2NvZGUnLCAwKTtcbiAgICAgICAgdG9rZW4ubWFya3VwICA9IG1hcmtlcjtcbiAgICAgICAgdG9rZW4uY29udGVudCA9IHN0YXRlLnNyYy5zbGljZShwb3MsIG1hdGNoU3RhcnQpXG4gICAgICAgICAgLnJlcGxhY2UoL1xcbi9nLCAnICcpXG4gICAgICAgICAgLnJlcGxhY2UoL14gKC4rKSAkLywgJyQxJyk7XG4gICAgICB9XG4gICAgICBzdGF0ZS5wb3MgPSBtYXRjaEVuZDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghc2lsZW50KSB7IHN0YXRlLnBlbmRpbmcgKz0gbWFya2VyOyB9XG4gIHN0YXRlLnBvcyArPSBtYXJrZXIubGVuZ3RoO1xuICByZXR1cm4gdHJ1ZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/backticks.js\n");
2296
2297/***/ }),
2298
2299/***/ "../../../node_modules/markdown-it/lib/rules_inline/balance_pairs.js":
2300/*!******************************************************************************************************!*\
2301 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_inline/balance_pairs.js ***!
2302 \******************************************************************************************************/
2303/*! no static exports found */
2304/***/ (function(module, exports, __webpack_require__) {
2305
2306eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // For each opening emphasis-like marker find a matching closing one\n //\n 'use strict';\n\n function processDelimiters(state, delimiters) {\n var closerIdx,\n openerIdx,\n closer,\n opener,\n minOpenerIdx,\n newMinOpenerIdx,\n isOddMatch,\n lastJump,\n openersBottom = {},\n max = delimiters.length;\n\n for (closerIdx = 0; closerIdx < max; closerIdx++) {\n closer = delimiters[closerIdx]; // Length is only used for emphasis-specific \"rule of 3\",\n // if it's not defined (in strikethrough or 3rd party plugins),\n // we can default it to 0 to disable those checks.\n //\n\n closer.length = closer.length || 0;\n if (!closer.close) continue; // Previously calculated lower bounds (previous fails)\n // for each marker and each delimiter length modulo 3.\n\n if (!openersBottom.hasOwnProperty(closer.marker)) {\n openersBottom[closer.marker] = [-1, -1, -1];\n }\n\n minOpenerIdx = openersBottom[closer.marker][closer.length % 3];\n newMinOpenerIdx = -1;\n openerIdx = closerIdx - closer.jump - 1;\n\n for (; openerIdx > minOpenerIdx; openerIdx -= opener.jump + 1) {\n opener = delimiters[openerIdx];\n if (opener.marker !== closer.marker) continue;\n if (newMinOpenerIdx === -1) newMinOpenerIdx = openerIdx;\n\n if (opener.open && opener.end < 0 && opener.level === closer.level) {\n isOddMatch = false; // from spec:\n //\n // If one of the delimiters can both open and close emphasis, then the\n // sum of the lengths of the delimiter runs containing the opening and\n // closing delimiters must not be a multiple of 3 unless both lengths\n // are multiples of 3.\n //\n\n if (opener.close || closer.open) {\n if ((opener.length + closer.length) % 3 === 0) {\n if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {\n isOddMatch = true;\n }\n }\n }\n\n if (!isOddMatch) {\n // If previous delimiter cannot be an opener, we can safely skip\n // the entire sequence in future checks. This is required to make\n // sure algorithm has linear complexity (see *_*_*_*_*_... case).\n //\n lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ? delimiters[openerIdx - 1].jump + 1 : 0;\n closer.jump = closerIdx - openerIdx + lastJump;\n closer.open = false;\n opener.end = closerIdx;\n opener.jump = lastJump;\n opener.close = false;\n newMinOpenerIdx = -1;\n break;\n }\n }\n }\n\n if (newMinOpenerIdx !== -1) {\n // If match for this delimiter run failed, we want to set lower bound for\n // future lookups. This is required to make sure algorithm has linear\n // complexity.\n //\n // See details here:\n // https://github.com/commonmark/cmark/issues/178#issuecomment-270417442\n //\n openersBottom[closer.marker][(closer.length || 0) % 3] = newMinOpenerIdx;\n }\n }\n }\n\n module.exports = function link_pairs(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n processDelimiters(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n processDelimiters(state, tokens_meta[curr].delimiters);\n }\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvYmFsYW5jZV9wYWlycy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL2JhbGFuY2VfcGFpcnMuanM/NGFjZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBGb3IgZWFjaCBvcGVuaW5nIGVtcGhhc2lzLWxpa2UgbWFya2VyIGZpbmQgYSBtYXRjaGluZyBjbG9zaW5nIG9uZVxuLy9cbid1c2Ugc3RyaWN0JztcblxuXG5mdW5jdGlvbiBwcm9jZXNzRGVsaW1pdGVycyhzdGF0ZSwgZGVsaW1pdGVycykge1xuICB2YXIgY2xvc2VySWR4LCBvcGVuZXJJZHgsIGNsb3Nlciwgb3BlbmVyLCBtaW5PcGVuZXJJZHgsIG5ld01pbk9wZW5lcklkeCxcbiAgICAgIGlzT2RkTWF0Y2gsIGxhc3RKdW1wLFxuICAgICAgb3BlbmVyc0JvdHRvbSA9IHt9LFxuICAgICAgbWF4ID0gZGVsaW1pdGVycy5sZW5ndGg7XG5cbiAgZm9yIChjbG9zZXJJZHggPSAwOyBjbG9zZXJJZHggPCBtYXg7IGNsb3NlcklkeCsrKSB7XG4gICAgY2xvc2VyID0gZGVsaW1pdGVyc1tjbG9zZXJJZHhdO1xuXG4gICAgLy8gTGVuZ3RoIGlzIG9ubHkgdXNlZCBmb3IgZW1waGFzaXMtc3BlY2lmaWMgXCJydWxlIG9mIDNcIixcbiAgICAvLyBpZiBpdCdzIG5vdCBkZWZpbmVkIChpbiBzdHJpa2V0aHJvdWdoIG9yIDNyZCBwYXJ0eSBwbHVnaW5zKSxcbiAgICAvLyB3ZSBjYW4gZGVmYXVsdCBpdCB0byAwIHRvIGRpc2FibGUgdGhvc2UgY2hlY2tzLlxuICAgIC8vXG4gICAgY2xvc2VyLmxlbmd0aCA9IGNsb3Nlci5sZW5ndGggfHwgMDtcblxuICAgIGlmICghY2xvc2VyLmNsb3NlKSBjb250aW51ZTtcblxuICAgIC8vIFByZXZpb3VzbHkgY2FsY3VsYXRlZCBsb3dlciBib3VuZHMgKHByZXZpb3VzIGZhaWxzKVxuICAgIC8vIGZvciBlYWNoIG1hcmtlciBhbmQgZWFjaCBkZWxpbWl0ZXIgbGVuZ3RoIG1vZHVsbyAzLlxuICAgIGlmICghb3BlbmVyc0JvdHRvbS5oYXNPd25Qcm9wZXJ0eShjbG9zZXIubWFya2VyKSkge1xuICAgICAgb3BlbmVyc0JvdHRvbVtjbG9zZXIubWFya2VyXSA9IFsgLTEsIC0xLCAtMSBdO1xuICAgIH1cblxuICAgIG1pbk9wZW5lcklkeCA9IG9wZW5lcnNCb3R0b21bY2xvc2VyLm1hcmtlcl1bY2xvc2VyLmxlbmd0aCAlIDNdO1xuICAgIG5ld01pbk9wZW5lcklkeCA9IC0xO1xuXG4gICAgb3BlbmVySWR4ID0gY2xvc2VySWR4IC0gY2xvc2VyLmp1bXAgLSAxO1xuXG4gICAgZm9yICg7IG9wZW5lcklkeCA+IG1pbk9wZW5lcklkeDsgb3BlbmVySWR4IC09IG9wZW5lci5qdW1wICsgMSkge1xuICAgICAgb3BlbmVyID0gZGVsaW1pdGVyc1tvcGVuZXJJZHhdO1xuXG4gICAgICBpZiAob3BlbmVyLm1hcmtlciAhPT0gY2xvc2VyLm1hcmtlcikgY29udGludWU7XG5cbiAgICAgIGlmIChuZXdNaW5PcGVuZXJJZHggPT09IC0xKSBuZXdNaW5PcGVuZXJJZHggPSBvcGVuZXJJZHg7XG5cbiAgICAgIGlmIChvcGVuZXIub3BlbiAmJlxuICAgICAgICAgIG9wZW5lci5lbmQgPCAwICYmXG4gICAgICAgICAgb3BlbmVyLmxldmVsID09PSBjbG9zZXIubGV2ZWwpIHtcblxuICAgICAgICBpc09kZE1hdGNoID0gZmFsc2U7XG5cbiAgICAgICAgLy8gZnJvbSBzcGVjOlxuICAgICAgICAvL1xuICAgICAgICAvLyBJZiBvbmUgb2YgdGhlIGRlbGltaXRlcnMgY2FuIGJvdGggb3BlbiBhbmQgY2xvc2UgZW1waGFzaXMsIHRoZW4gdGhlXG4gICAgICAgIC8vIHN1bSBvZiB0aGUgbGVuZ3RocyBvZiB0aGUgZGVsaW1pdGVyIHJ1bnMgY29udGFpbmluZyB0aGUgb3BlbmluZyBhbmRcbiAgICAgICAgLy8gY2xvc2luZyBkZWxpbWl0ZXJzIG11c3Qgbm90IGJlIGEgbXVsdGlwbGUgb2YgMyB1bmxlc3MgYm90aCBsZW5ndGhzXG4gICAgICAgIC8vIGFyZSBtdWx0aXBsZXMgb2YgMy5cbiAgICAgICAgLy9cbiAgICAgICAgaWYgKG9wZW5lci5jbG9zZSB8fCBjbG9zZXIub3Blbikge1xuICAgICAgICAgIGlmICgob3BlbmVyLmxlbmd0aCArIGNsb3Nlci5sZW5ndGgpICUgMyA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKG9wZW5lci5sZW5ndGggJSAzICE9PSAwIHx8IGNsb3Nlci5sZW5ndGggJSAzICE9PSAwKSB7XG4gICAgICAgICAgICAgIGlzT2RkTWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNPZGRNYXRjaCkge1xuICAgICAgICAgIC8vIElmIHByZXZpb3VzIGRlbGltaXRlciBjYW5ub3QgYmUgYW4gb3BlbmVyLCB3ZSBjYW4gc2FmZWx5IHNraXBcbiAgICAgICAgICAvLyB0aGUgZW50aXJlIHNlcXVlbmNlIGluIGZ1dHVyZSBjaGVja3MuIFRoaXMgaXMgcmVxdWlyZWQgdG8gbWFrZVxuICAgICAgICAgIC8vIHN1cmUgYWxnb3JpdGhtIGhhcyBsaW5lYXIgY29tcGxleGl0eSAoc2VlICpfKl8qXypfKl8uLi4gY2FzZSkuXG4gICAgICAgICAgLy9cbiAgICAgICAgICBsYXN0SnVtcCA9IG9wZW5lcklkeCA+IDAgJiYgIWRlbGltaXRlcnNbb3BlbmVySWR4IC0gMV0ub3BlbiA/XG4gICAgICAgICAgICBkZWxpbWl0ZXJzW29wZW5lcklkeCAtIDFdLmp1bXAgKyAxIDpcbiAgICAgICAgICAgIDA7XG5cbiAgICAgICAgICBjbG9zZXIuanVtcCAgPSBjbG9zZXJJZHggLSBvcGVuZXJJZHggKyBsYXN0SnVtcDtcbiAgICAgICAgICBjbG9zZXIub3BlbiAgPSBmYWxzZTtcbiAgICAgICAgICBvcGVuZXIuZW5kICAgPSBjbG9zZXJJZHg7XG4gICAgICAgICAgb3BlbmVyLmp1bXAgID0gbGFzdEp1bXA7XG4gICAgICAgICAgb3BlbmVyLmNsb3NlID0gZmFsc2U7XG4gICAgICAgICAgbmV3TWluT3BlbmVySWR4ID0gLTE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmV3TWluT3BlbmVySWR4ICE9PSAtMSkge1xuICAgICAgLy8gSWYgbWF0Y2ggZm9yIHRoaXMgZGVsaW1pdGVyIHJ1biBmYWlsZWQsIHdlIHdhbnQgdG8gc2V0IGxvd2VyIGJvdW5kIGZvclxuICAgICAgLy8gZnV0dXJlIGxvb2t1cHMuIFRoaXMgaXMgcmVxdWlyZWQgdG8gbWFrZSBzdXJlIGFsZ29yaXRobSBoYXMgbGluZWFyXG4gICAgICAvLyBjb21wbGV4aXR5LlxuICAgICAgLy9cbiAgICAgIC8vIFNlZSBkZXRhaWxzIGhlcmU6XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vY29tbW9ubWFyay9jbWFyay9pc3N1ZXMvMTc4I2lzc3VlY29tbWVudC0yNzA0MTc0NDJcbiAgICAgIC8vXG4gICAgICBvcGVuZXJzQm90dG9tW2Nsb3Nlci5tYXJrZXJdWyhjbG9zZXIubGVuZ3RoIHx8IDApICUgM10gPSBuZXdNaW5PcGVuZXJJZHg7XG4gICAgfVxuICB9XG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBsaW5rX3BhaXJzKHN0YXRlKSB7XG4gIHZhciBjdXJyLFxuICAgICAgdG9rZW5zX21ldGEgPSBzdGF0ZS50b2tlbnNfbWV0YSxcbiAgICAgIG1heCA9IHN0YXRlLnRva2Vuc19tZXRhLmxlbmd0aDtcblxuICBwcm9jZXNzRGVsaW1pdGVycyhzdGF0ZSwgc3RhdGUuZGVsaW1pdGVycyk7XG5cbiAgZm9yIChjdXJyID0gMDsgY3VyciA8IG1heDsgY3VycisrKSB7XG4gICAgaWYgKHRva2Vuc19tZXRhW2N1cnJdICYmIHRva2Vuc19tZXRhW2N1cnJdLmRlbGltaXRlcnMpIHtcbiAgICAgIHByb2Nlc3NEZWxpbWl0ZXJzKHN0YXRlLCB0b2tlbnNfbWV0YVtjdXJyXS5kZWxpbWl0ZXJzKTtcbiAgICB9XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/balance_pairs.js\n");
2307
2308/***/ }),
2309
2310/***/ "../../../node_modules/markdown-it/lib/rules_inline/emphasis.js":
2311/*!*************************************************************************************************!*\
2312 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_inline/emphasis.js ***!
2313 \*************************************************************************************************/
2314/*! no static exports found */
2315/***/ (function(module, exports, __webpack_require__) {
2316
2317eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Process *this* and _that_\n //\n 'use strict'; // Insert each marker as a separate text token, and add it to delimiter list\n //\n\n module.exports.tokenize = function emphasis(state, silent) {\n var i,\n scanned,\n token,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (silent) {\n return false;\n }\n\n if (marker !== 0x5F\n /* _ */\n && marker !== 0x2A\n /* * */\n ) {\n return false;\n }\n\n scanned = state.scanDelims(state.pos, marker === 0x2A);\n\n for (i = 0; i < scanned.length; i++) {\n token = state.push('text', '', 0);\n token.content = String.fromCharCode(marker);\n state.delimiters.push({\n // Char code of the starting marker (number).\n //\n marker: marker,\n // Total length of these series of delimiters.\n //\n length: scanned.length,\n // An amount of characters before this one that's equivalent to\n // current one. In plain English: if this delimiter does not open\n // an emphasis, neither do previous `jump` characters.\n //\n // Used to skip sequences like \"*****\" in one step, for 1st asterisk\n // value will be 0, for 2nd it's 1 and so on.\n //\n jump: i,\n // A position of the token this delimiter corresponds to.\n //\n token: state.tokens.length - 1,\n // If this delimiter is matched as a valid opener, `end` will be\n // equal to its position, otherwise it's `-1`.\n //\n end: -1,\n // Boolean flags that determine if this delimiter could open or close\n // an emphasis.\n //\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n return true;\n };\n\n function postProcess(state, delimiters) {\n var i,\n startDelim,\n endDelim,\n token,\n ch,\n isStrong,\n max = delimiters.length;\n\n for (i = max - 1; i >= 0; i--) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 0x5F\n /* _ */\n && startDelim.marker !== 0x2A\n /* * */\n ) {\n continue;\n } // Process only opening markers\n\n\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end]; // If the previous delimiter has the same marker and is adjacent to this one,\n // merge those into one strong delimiter.\n //\n // `<em><em>whatever</em></em>` -> `<strong>whatever</strong>`\n //\n\n isStrong = i > 0 && delimiters[i - 1].end === startDelim.end + 1 && delimiters[i - 1].token === startDelim.token - 1 && delimiters[startDelim.end + 1].token === endDelim.token + 1 && delimiters[i - 1].marker === startDelim.marker;\n ch = String.fromCharCode(startDelim.marker);\n token = state.tokens[startDelim.token];\n token.type = isStrong ? 'strong_open' : 'em_open';\n token.tag = isStrong ? 'strong' : 'em';\n token.nesting = 1;\n token.markup = isStrong ? ch + ch : ch;\n token.content = '';\n token = state.tokens[endDelim.token];\n token.type = isStrong ? 'strong_close' : 'em_close';\n token.tag = isStrong ? 'strong' : 'em';\n token.nesting = -1;\n token.markup = isStrong ? ch + ch : ch;\n token.content = '';\n\n if (isStrong) {\n state.tokens[delimiters[i - 1].token].content = '';\n state.tokens[delimiters[startDelim.end + 1].token].content = '';\n i--;\n }\n }\n } // Walk through delimiter list and replace text tokens with tags\n //\n\n\n module.exports.postProcess = function emphasis(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n postProcess(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters);\n }\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvZW1waGFzaXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9lbXBoYXNpcy5qcz84ZmYwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFByb2Nlc3MgKnRoaXMqIGFuZCBfdGhhdF9cbi8vXG4ndXNlIHN0cmljdCc7XG5cblxuLy8gSW5zZXJ0IGVhY2ggbWFya2VyIGFzIGEgc2VwYXJhdGUgdGV4dCB0b2tlbiwgYW5kIGFkZCBpdCB0byBkZWxpbWl0ZXIgbGlzdFxuLy9cbm1vZHVsZS5leHBvcnRzLnRva2VuaXplID0gZnVuY3Rpb24gZW1waGFzaXMoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgaSwgc2Nhbm5lZCwgdG9rZW4sXG4gICAgICBzdGFydCA9IHN0YXRlLnBvcyxcbiAgICAgIG1hcmtlciA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHN0YXJ0KTtcblxuICBpZiAoc2lsZW50KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGlmIChtYXJrZXIgIT09IDB4NUYgLyogXyAqLyAmJiBtYXJrZXIgIT09IDB4MkEgLyogKiAqLykgeyByZXR1cm4gZmFsc2U7IH1cblxuICBzY2FubmVkID0gc3RhdGUuc2NhbkRlbGltcyhzdGF0ZS5wb3MsIG1hcmtlciA9PT0gMHgyQSk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHNjYW5uZWQubGVuZ3RoOyBpKyspIHtcbiAgICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgndGV4dCcsICcnLCAwKTtcbiAgICB0b2tlbi5jb250ZW50ID0gU3RyaW5nLmZyb21DaGFyQ29kZShtYXJrZXIpO1xuXG4gICAgc3RhdGUuZGVsaW1pdGVycy5wdXNoKHtcbiAgICAgIC8vIENoYXIgY29kZSBvZiB0aGUgc3RhcnRpbmcgbWFya2VyIChudW1iZXIpLlxuICAgICAgLy9cbiAgICAgIG1hcmtlcjogbWFya2VyLFxuXG4gICAgICAvLyBUb3RhbCBsZW5ndGggb2YgdGhlc2Ugc2VyaWVzIG9mIGRlbGltaXRlcnMuXG4gICAgICAvL1xuICAgICAgbGVuZ3RoOiBzY2FubmVkLmxlbmd0aCxcblxuICAgICAgLy8gQW4gYW1vdW50IG9mIGNoYXJhY3RlcnMgYmVmb3JlIHRoaXMgb25lIHRoYXQncyBlcXVpdmFsZW50IHRvXG4gICAgICAvLyBjdXJyZW50IG9uZS4gSW4gcGxhaW4gRW5nbGlzaDogaWYgdGhpcyBkZWxpbWl0ZXIgZG9lcyBub3Qgb3BlblxuICAgICAgLy8gYW4gZW1waGFzaXMsIG5laXRoZXIgZG8gcHJldmlvdXMgYGp1bXBgIGNoYXJhY3RlcnMuXG4gICAgICAvL1xuICAgICAgLy8gVXNlZCB0byBza2lwIHNlcXVlbmNlcyBsaWtlIFwiKioqKipcIiBpbiBvbmUgc3RlcCwgZm9yIDFzdCBhc3Rlcmlza1xuICAgICAgLy8gdmFsdWUgd2lsbCBiZSAwLCBmb3IgMm5kIGl0J3MgMSBhbmQgc28gb24uXG4gICAgICAvL1xuICAgICAganVtcDogICBpLFxuXG4gICAgICAvLyBBIHBvc2l0aW9uIG9mIHRoZSB0b2tlbiB0aGlzIGRlbGltaXRlciBjb3JyZXNwb25kcyB0by5cbiAgICAgIC8vXG4gICAgICB0b2tlbjogIHN0YXRlLnRva2Vucy5sZW5ndGggLSAxLFxuXG4gICAgICAvLyBJZiB0aGlzIGRlbGltaXRlciBpcyBtYXRjaGVkIGFzIGEgdmFsaWQgb3BlbmVyLCBgZW5kYCB3aWxsIGJlXG4gICAgICAvLyBlcXVhbCB0byBpdHMgcG9zaXRpb24sIG90aGVyd2lzZSBpdCdzIGAtMWAuXG4gICAgICAvL1xuICAgICAgZW5kOiAgICAtMSxcblxuICAgICAgLy8gQm9vbGVhbiBmbGFncyB0aGF0IGRldGVybWluZSBpZiB0aGlzIGRlbGltaXRlciBjb3VsZCBvcGVuIG9yIGNsb3NlXG4gICAgICAvLyBhbiBlbXBoYXNpcy5cbiAgICAgIC8vXG4gICAgICBvcGVuOiAgIHNjYW5uZWQuY2FuX29wZW4sXG4gICAgICBjbG9zZTogIHNjYW5uZWQuY2FuX2Nsb3NlXG4gICAgfSk7XG4gIH1cblxuICBzdGF0ZS5wb3MgKz0gc2Nhbm5lZC5sZW5ndGg7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5cbmZ1bmN0aW9uIHBvc3RQcm9jZXNzKHN0YXRlLCBkZWxpbWl0ZXJzKSB7XG4gIHZhciBpLFxuICAgICAgc3RhcnREZWxpbSxcbiAgICAgIGVuZERlbGltLFxuICAgICAgdG9rZW4sXG4gICAgICBjaCxcbiAgICAgIGlzU3Ryb25nLFxuICAgICAgbWF4ID0gZGVsaW1pdGVycy5sZW5ndGg7XG5cbiAgZm9yIChpID0gbWF4IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBzdGFydERlbGltID0gZGVsaW1pdGVyc1tpXTtcblxuICAgIGlmIChzdGFydERlbGltLm1hcmtlciAhPT0gMHg1Ri8qIF8gKi8gJiYgc3RhcnREZWxpbS5tYXJrZXIgIT09IDB4MkEvKiAqICovKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIG9ubHkgb3BlbmluZyBtYXJrZXJzXG4gICAgaWYgKHN0YXJ0RGVsaW0uZW5kID09PSAtMSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgZW5kRGVsaW0gPSBkZWxpbWl0ZXJzW3N0YXJ0RGVsaW0uZW5kXTtcblxuICAgIC8vIElmIHRoZSBwcmV2aW91cyBkZWxpbWl0ZXIgaGFzIHRoZSBzYW1lIG1hcmtlciBhbmQgaXMgYWRqYWNlbnQgdG8gdGhpcyBvbmUsXG4gICAgLy8gbWVyZ2UgdGhvc2UgaW50byBvbmUgc3Ryb25nIGRlbGltaXRlci5cbiAgICAvL1xuICAgIC8vIGA8ZW0+PGVtPndoYXRldmVyPC9lbT48L2VtPmAgLT4gYDxzdHJvbmc+d2hhdGV2ZXI8L3N0cm9uZz5gXG4gICAgLy9cbiAgICBpc1N0cm9uZyA9IGkgPiAwICYmXG4gICAgICAgICAgICAgICBkZWxpbWl0ZXJzW2kgLSAxXS5lbmQgPT09IHN0YXJ0RGVsaW0uZW5kICsgMSAmJlxuICAgICAgICAgICAgICAgZGVsaW1pdGVyc1tpIC0gMV0udG9rZW4gPT09IHN0YXJ0RGVsaW0udG9rZW4gLSAxICYmXG4gICAgICAgICAgICAgICBkZWxpbWl0ZXJzW3N0YXJ0RGVsaW0uZW5kICsgMV0udG9rZW4gPT09IGVuZERlbGltLnRva2VuICsgMSAmJlxuICAgICAgICAgICAgICAgZGVsaW1pdGVyc1tpIC0gMV0ubWFya2VyID09PSBzdGFydERlbGltLm1hcmtlcjtcblxuICAgIGNoID0gU3RyaW5nLmZyb21DaGFyQ29kZShzdGFydERlbGltLm1hcmtlcik7XG5cbiAgICB0b2tlbiAgICAgICAgID0gc3RhdGUudG9rZW5zW3N0YXJ0RGVsaW0udG9rZW5dO1xuICAgIHRva2VuLnR5cGUgICAgPSBpc1N0cm9uZyA/ICdzdHJvbmdfb3BlbicgOiAnZW1fb3Blbic7XG4gICAgdG9rZW4udGFnICAgICA9IGlzU3Ryb25nID8gJ3N0cm9uZycgOiAnZW0nO1xuICAgIHRva2VuLm5lc3RpbmcgPSAxO1xuICAgIHRva2VuLm1hcmt1cCAgPSBpc1N0cm9uZyA/IGNoICsgY2ggOiBjaDtcbiAgICB0b2tlbi5jb250ZW50ID0gJyc7XG5cbiAgICB0b2tlbiAgICAgICAgID0gc3RhdGUudG9rZW5zW2VuZERlbGltLnRva2VuXTtcbiAgICB0b2tlbi50eXBlICAgID0gaXNTdHJvbmcgPyAnc3Ryb25nX2Nsb3NlJyA6ICdlbV9jbG9zZSc7XG4gICAgdG9rZW4udGFnICAgICA9IGlzU3Ryb25nID8gJ3N0cm9uZycgOiAnZW0nO1xuICAgIHRva2VuLm5lc3RpbmcgPSAtMTtcbiAgICB0b2tlbi5tYXJrdXAgID0gaXNTdHJvbmcgPyBjaCArIGNoIDogY2g7XG4gICAgdG9rZW4uY29udGVudCA9ICcnO1xuXG4gICAgaWYgKGlzU3Ryb25nKSB7XG4gICAgICBzdGF0ZS50b2tlbnNbZGVsaW1pdGVyc1tpIC0gMV0udG9rZW5dLmNvbnRlbnQgPSAnJztcbiAgICAgIHN0YXRlLnRva2Vuc1tkZWxpbWl0ZXJzW3N0YXJ0RGVsaW0uZW5kICsgMV0udG9rZW5dLmNvbnRlbnQgPSAnJztcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBXYWxrIHRocm91Z2ggZGVsaW1pdGVyIGxpc3QgYW5kIHJlcGxhY2UgdGV4dCB0b2tlbnMgd2l0aCB0YWdzXG4vL1xubW9kdWxlLmV4cG9ydHMucG9zdFByb2Nlc3MgPSBmdW5jdGlvbiBlbXBoYXNpcyhzdGF0ZSkge1xuICB2YXIgY3VycixcbiAgICAgIHRva2Vuc19tZXRhID0gc3RhdGUudG9rZW5zX21ldGEsXG4gICAgICBtYXggPSBzdGF0ZS50b2tlbnNfbWV0YS5sZW5ndGg7XG5cbiAgcG9zdFByb2Nlc3Moc3RhdGUsIHN0YXRlLmRlbGltaXRlcnMpO1xuXG4gIGZvciAoY3VyciA9IDA7IGN1cnIgPCBtYXg7IGN1cnIrKykge1xuICAgIGlmICh0b2tlbnNfbWV0YVtjdXJyXSAmJiB0b2tlbnNfbWV0YVtjdXJyXS5kZWxpbWl0ZXJzKSB7XG4gICAgICBwb3N0UHJvY2VzcyhzdGF0ZSwgdG9rZW5zX21ldGFbY3Vycl0uZGVsaW1pdGVycyk7XG4gICAgfVxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEvQkE7QUFpQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQU1BO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/emphasis.js\n");
2318
2319/***/ }),
2320
2321/***/ "../../../node_modules/markdown-it/lib/rules_inline/entity.js":
2322/*!***********************************************************************************************!*\
2323 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_inline/entity.js ***!
2324 \***********************************************************************************************/
2325/*! no static exports found */
2326/***/ (function(module, exports, __webpack_require__) {
2327
2328eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Process html entity - &#123;, &#xAF;, &quot;, ...\n 'use strict';\n\n var entities = __webpack_require__(/*! ../common/entities */ \"../../../node_modules/markdown-it/lib/common/entities.js\");\n\n var has = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").has;\n\n var isValidEntityCode = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isValidEntityCode;\n\n var fromCodePoint = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").fromCodePoint;\n\n var DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i;\n var NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;\n\n module.exports = function entity(state, silent) {\n var ch,\n code,\n match,\n pos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x26\n /* & */\n ) {\n return false;\n }\n\n if (pos + 1 < max) {\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch === 0x23\n /* # */\n ) {\n match = state.src.slice(pos).match(DIGITAL_RE);\n\n if (match) {\n if (!silent) {\n code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10);\n state.pending += isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD);\n }\n\n state.pos += match[0].length;\n return true;\n }\n } else {\n match = state.src.slice(pos).match(NAMED_RE);\n\n if (match) {\n if (has(entities, match[1])) {\n if (!silent) {\n state.pending += entities[match[1]];\n }\n\n state.pos += match[0].length;\n return true;\n }\n }\n }\n }\n\n if (!silent) {\n state.pending += '&';\n }\n\n state.pos++;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvZW50aXR5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvZW50aXR5LmpzP2U2NzciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUHJvY2VzcyBodG1sIGVudGl0eSAtICYjMTIzOywgJiN4QUY7LCAmcXVvdDssIC4uLlxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlbnRpdGllcyAgICAgICAgICA9IHJlcXVpcmUoJy4uL2NvbW1vbi9lbnRpdGllcycpO1xudmFyIGhhcyAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuaGFzO1xudmFyIGlzVmFsaWRFbnRpdHlDb2RlID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuaXNWYWxpZEVudGl0eUNvZGU7XG52YXIgZnJvbUNvZGVQb2ludCAgICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5mcm9tQ29kZVBvaW50O1xuXG5cbnZhciBESUdJVEFMX1JFID0gL14mIygoPzp4W2EtZjAtOV17MSw2fXxbMC05XXsxLDd9KSk7L2k7XG52YXIgTkFNRURfUkUgICA9IC9eJihbYS16XVthLXowLTldezEsMzF9KTsvaTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGVudGl0eShzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciBjaCwgY29kZSwgbWF0Y2gsIHBvcyA9IHN0YXRlLnBvcywgbWF4ID0gc3RhdGUucG9zTWF4O1xuXG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSAweDI2LyogJiAqLykgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAocG9zICsgMSA8IG1heCkge1xuICAgIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zICsgMSk7XG5cbiAgICBpZiAoY2ggPT09IDB4MjMgLyogIyAqLykge1xuICAgICAgbWF0Y2ggPSBzdGF0ZS5zcmMuc2xpY2UocG9zKS5tYXRjaChESUdJVEFMX1JFKTtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICAgIGNvZGUgPSBtYXRjaFsxXVswXS50b0xvd2VyQ2FzZSgpID09PSAneCcgPyBwYXJzZUludChtYXRjaFsxXS5zbGljZSgxKSwgMTYpIDogcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTtcbiAgICAgICAgICBzdGF0ZS5wZW5kaW5nICs9IGlzVmFsaWRFbnRpdHlDb2RlKGNvZGUpID8gZnJvbUNvZGVQb2ludChjb2RlKSA6IGZyb21Db2RlUG9pbnQoMHhGRkZEKTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5wb3MgKz0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWF0Y2ggPSBzdGF0ZS5zcmMuc2xpY2UocG9zKS5tYXRjaChOQU1FRF9SRSk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgaWYgKGhhcyhlbnRpdGllcywgbWF0Y2hbMV0pKSB7XG4gICAgICAgICAgaWYgKCFzaWxlbnQpIHsgc3RhdGUucGVuZGluZyArPSBlbnRpdGllc1ttYXRjaFsxXV07IH1cbiAgICAgICAgICBzdGF0ZS5wb3MgKz0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFzaWxlbnQpIHsgc3RhdGUucGVuZGluZyArPSAnJic7IH1cbiAgc3RhdGUucG9zKys7XG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/entity.js\n");
2329
2330/***/ }),
2331
2332/***/ "../../../node_modules/markdown-it/lib/rules_inline/escape.js":
2333/*!***********************************************************************************************!*\
2334 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_inline/escape.js ***!
2335 \***********************************************************************************************/
2336/*! no static exports found */
2337/***/ (function(module, exports, __webpack_require__) {
2338
2339eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Process escaped chars and hardbreaks\n 'use strict';\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n var ESCAPED = [];\n\n for (var i = 0; i < 256; i++) {\n ESCAPED.push(0);\n }\n\n '\\\\!\"#$%&\\'()*+,./:;<=>?@[]^_`{|}~-'.split('').forEach(function (ch) {\n ESCAPED[ch.charCodeAt(0)] = 1;\n });\n\n module.exports = function escape(state, silent) {\n var ch,\n pos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x5C\n /* \\ */\n ) {\n return false;\n }\n\n pos++;\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (ch < 256 && ESCAPED[ch] !== 0) {\n if (!silent) {\n state.pending += state.src[pos];\n }\n\n state.pos += 2;\n return true;\n }\n\n if (ch === 0x0A) {\n if (!silent) {\n state.push('hardbreak', 'br', 0);\n }\n\n pos++; // skip leading whitespaces from next line\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n break;\n }\n\n pos++;\n }\n\n state.pos = pos;\n return true;\n }\n }\n\n if (!silent) {\n state.pending += '\\\\';\n }\n\n state.pos++;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvZXNjYXBlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvZXNjYXBlLmpzPzI2ZGEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUHJvY2VzcyBlc2NhcGVkIGNoYXJzIGFuZCBoYXJkYnJlYWtzXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGlzU3BhY2UgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1NwYWNlO1xuXG52YXIgRVNDQVBFRCA9IFtdO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgaSsrKSB7IEVTQ0FQRUQucHVzaCgwKTsgfVxuXG4nXFxcXCFcIiMkJSZcXCcoKSorLC4vOjs8PT4/QFtdXl9ge3x9fi0nXG4gIC5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAoY2gpIHsgRVNDQVBFRFtjaC5jaGFyQ29kZUF0KDApXSA9IDE7IH0pO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZXNjYXBlKHN0YXRlLCBzaWxlbnQpIHtcbiAgdmFyIGNoLCBwb3MgPSBzdGF0ZS5wb3MsIG1heCA9IHN0YXRlLnBvc01heDtcblxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMHg1Qy8qIFxcICovKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIHBvcysrO1xuXG4gIGlmIChwb3MgPCBtYXgpIHtcbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgICBpZiAoY2ggPCAyNTYgJiYgRVNDQVBFRFtjaF0gIT09IDApIHtcbiAgICAgIGlmICghc2lsZW50KSB7IHN0YXRlLnBlbmRpbmcgKz0gc3RhdGUuc3JjW3Bvc107IH1cbiAgICAgIHN0YXRlLnBvcyArPSAyO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGNoID09PSAweDBBKSB7XG4gICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICBzdGF0ZS5wdXNoKCdoYXJkYnJlYWsnLCAnYnInLCAwKTtcbiAgICAgIH1cblxuICAgICAgcG9zKys7XG4gICAgICAvLyBza2lwIGxlYWRpbmcgd2hpdGVzcGFjZXMgZnJvbSBuZXh0IGxpbmVcbiAgICAgIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuICAgICAgICBpZiAoIWlzU3BhY2UoY2gpKSB7IGJyZWFrOyB9XG4gICAgICAgIHBvcysrO1xuICAgICAgfVxuXG4gICAgICBzdGF0ZS5wb3MgPSBwb3M7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXNpbGVudCkgeyBzdGF0ZS5wZW5kaW5nICs9ICdcXFxcJzsgfVxuICBzdGF0ZS5wb3MrKztcbiAgcmV0dXJuIHRydWU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/escape.js\n");
2340
2341/***/ }),
2342
2343/***/ "../../../node_modules/markdown-it/lib/rules_inline/html_inline.js":
2344/*!****************************************************************************************************!*\
2345 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_inline/html_inline.js ***!
2346 \****************************************************************************************************/
2347/*! no static exports found */
2348/***/ (function(module, exports, __webpack_require__) {
2349
2350eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Process html tags\n 'use strict';\n\n var HTML_TAG_RE = __webpack_require__(/*! ../common/html_re */ \"../../../node_modules/markdown-it/lib/common/html_re.js\").HTML_TAG_RE;\n\n function isLetter(ch) {\n /*eslint no-bitwise:0*/\n var lc = ch | 0x20; // to lower case\n\n return lc >= 0x61\n /* a */\n && lc <= 0x7a\n /* z */\n ;\n }\n\n module.exports = function html_inline(state, silent) {\n var ch,\n match,\n max,\n token,\n pos = state.pos;\n\n if (!state.md.options.html) {\n return false;\n } // Check start\n\n\n max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x3C\n /* < */\n || pos + 2 >= max) {\n return false;\n } // Quick fail on second char\n\n\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch !== 0x21\n /* ! */\n && ch !== 0x3F\n /* ? */\n && ch !== 0x2F\n /* / */\n && !isLetter(ch)) {\n return false;\n }\n\n match = state.src.slice(pos).match(HTML_TAG_RE);\n\n if (!match) {\n return false;\n }\n\n if (!silent) {\n token = state.push('html_inline', '', 0);\n token.content = state.src.slice(pos, pos + match[0].length);\n }\n\n state.pos += match[0].length;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvaHRtbF9pbmxpbmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9odG1sX2lubGluZS5qcz9kYjY4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFByb2Nlc3MgaHRtbCB0YWdzXG5cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgSFRNTF9UQUdfUkUgPSByZXF1aXJlKCcuLi9jb21tb24vaHRtbF9yZScpLkhUTUxfVEFHX1JFO1xuXG5cbmZ1bmN0aW9uIGlzTGV0dGVyKGNoKSB7XG4gIC8qZXNsaW50IG5vLWJpdHdpc2U6MCovXG4gIHZhciBsYyA9IGNoIHwgMHgyMDsgLy8gdG8gbG93ZXIgY2FzZVxuICByZXR1cm4gKGxjID49IDB4NjEvKiBhICovKSAmJiAobGMgPD0gMHg3YS8qIHogKi8pO1xufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaHRtbF9pbmxpbmUoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgY2gsIG1hdGNoLCBtYXgsIHRva2VuLFxuICAgICAgcG9zID0gc3RhdGUucG9zO1xuXG4gIGlmICghc3RhdGUubWQub3B0aW9ucy5odG1sKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIC8vIENoZWNrIHN0YXJ0XG4gIG1heCA9IHN0YXRlLnBvc01heDtcbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgIT09IDB4M0MvKiA8ICovIHx8XG4gICAgICBwb3MgKyAyID49IG1heCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIFF1aWNrIGZhaWwgb24gc2Vjb25kIGNoYXJcbiAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MgKyAxKTtcbiAgaWYgKGNoICE9PSAweDIxLyogISAqLyAmJlxuICAgICAgY2ggIT09IDB4M0YvKiA/ICovICYmXG4gICAgICBjaCAhPT0gMHgyRi8qIC8gKi8gJiZcbiAgICAgICFpc0xldHRlcihjaCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBtYXRjaCA9IHN0YXRlLnNyYy5zbGljZShwb3MpLm1hdGNoKEhUTUxfVEFHX1JFKTtcbiAgaWYgKCFtYXRjaCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAoIXNpbGVudCkge1xuICAgIHRva2VuICAgICAgICAgPSBzdGF0ZS5wdXNoKCdodG1sX2lubGluZScsICcnLCAwKTtcbiAgICB0b2tlbi5jb250ZW50ID0gc3RhdGUuc3JjLnNsaWNlKHBvcywgcG9zICsgbWF0Y2hbMF0ubGVuZ3RoKTtcbiAgfVxuICBzdGF0ZS5wb3MgKz0gbWF0Y2hbMF0ubGVuZ3RoO1xuICByZXR1cm4gdHJ1ZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/html_inline.js\n");
2351
2352/***/ }),
2353
2354/***/ "../../../node_modules/markdown-it/lib/rules_inline/image.js":
2355/*!**********************************************************************************************!*\
2356 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_inline/image.js ***!
2357 \**********************************************************************************************/
2358/*! no static exports found */
2359/***/ (function(module, exports, __webpack_require__) {
2360
2361eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Process ![image](<src> \"title\")\n 'use strict';\n\n var normalizeReference = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").normalizeReference;\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n module.exports = function image(state, silent) {\n var attrs,\n code,\n content,\n label,\n labelEnd,\n labelStart,\n pos,\n ref,\n res,\n title,\n token,\n tokens,\n start,\n href = '',\n oldPos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(state.pos) !== 0x21\n /* ! */\n ) {\n return false;\n }\n\n if (state.src.charCodeAt(state.pos + 1) !== 0x5B\n /* [ */\n ) {\n return false;\n }\n\n labelStart = state.pos + 2;\n labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false); // parser failed to find ']', so it's not a valid link\n\n if (labelEnd < 0) {\n return false;\n }\n\n pos = labelEnd + 1;\n\n if (pos < max && state.src.charCodeAt(pos) === 0x28\n /* ( */\n ) {\n //\n // Inline link\n //\n // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n pos++;\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n }\n\n if (pos >= max) {\n return false;\n } // [link]( <href> \"title\" )\n // ^^^^^^ parsing link destination\n\n\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = '';\n }\n } // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n\n\n start = pos;\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n } // [link]( <href> \"title\" )\n // ^^^^^^^ parsing link title\n\n\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos; // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n }\n } else {\n title = '';\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29\n /* ) */\n ) {\n state.pos = oldPos;\n return false;\n }\n\n pos++;\n } else {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') {\n return false;\n }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B\n /* [ */\n ) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n } // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n\n\n if (!label) {\n label = state.src.slice(labelStart, labelEnd);\n }\n\n ref = state.env.references[normalizeReference(label)];\n\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n\n href = ref.href;\n title = ref.title;\n } //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n\n\n if (!silent) {\n content = state.src.slice(labelStart, labelEnd);\n state.md.inline.parse(content, state.md, state.env, tokens = []);\n token = state.push('image', 'img', 0);\n token.attrs = attrs = [['src', href], ['alt', '']];\n token.children = tokens;\n token.content = content;\n\n if (title) {\n attrs.push(['title', title]);\n }\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvaW1hZ2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9pbWFnZS5qcz8xODc2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFByb2Nlc3MgIVtpbWFnZV0oPHNyYz4gXCJ0aXRsZVwiKVxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBub3JtYWxpemVSZWZlcmVuY2UgICA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLm5vcm1hbGl6ZVJlZmVyZW5jZTtcbnZhciBpc1NwYWNlICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzU3BhY2U7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbWFnZShzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciBhdHRycyxcbiAgICAgIGNvZGUsXG4gICAgICBjb250ZW50LFxuICAgICAgbGFiZWwsXG4gICAgICBsYWJlbEVuZCxcbiAgICAgIGxhYmVsU3RhcnQsXG4gICAgICBwb3MsXG4gICAgICByZWYsXG4gICAgICByZXMsXG4gICAgICB0aXRsZSxcbiAgICAgIHRva2VuLFxuICAgICAgdG9rZW5zLFxuICAgICAgc3RhcnQsXG4gICAgICBocmVmID0gJycsXG4gICAgICBvbGRQb3MgPSBzdGF0ZS5wb3MsXG4gICAgICBtYXggPSBzdGF0ZS5wb3NNYXg7XG5cbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHN0YXRlLnBvcykgIT09IDB4MjEvKiAhICovKSB7IHJldHVybiBmYWxzZTsgfVxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQoc3RhdGUucG9zICsgMSkgIT09IDB4NUIvKiBbICovKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGxhYmVsU3RhcnQgPSBzdGF0ZS5wb3MgKyAyO1xuICBsYWJlbEVuZCA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rTGFiZWwoc3RhdGUsIHN0YXRlLnBvcyArIDEsIGZhbHNlKTtcblxuICAvLyBwYXJzZXIgZmFpbGVkIHRvIGZpbmQgJ10nLCBzbyBpdCdzIG5vdCBhIHZhbGlkIGxpbmtcbiAgaWYgKGxhYmVsRW5kIDwgMCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBwb3MgPSBsYWJlbEVuZCArIDE7XG4gIGlmIChwb3MgPCBtYXggJiYgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHgyOC8qICggKi8pIHtcbiAgICAvL1xuICAgIC8vIElubGluZSBsaW5rXG4gICAgLy9cblxuICAgIC8vIFtsaW5rXSggIDxocmVmPiAgXCJ0aXRsZVwiICApXG4gICAgLy8gICAgICAgIF5eIHNraXBwaW5nIHRoZXNlIHNwYWNlc1xuICAgIHBvcysrO1xuICAgIGZvciAoOyBwb3MgPCBtYXg7IHBvcysrKSB7XG4gICAgICBjb2RlID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgIGlmICghaXNTcGFjZShjb2RlKSAmJiBjb2RlICE9PSAweDBBKSB7IGJyZWFrOyB9XG4gICAgfVxuICAgIGlmIChwb3MgPj0gbWF4KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgLy8gW2xpbmtdKCAgPGhyZWY+ICBcInRpdGxlXCIgIClcbiAgICAvLyAgICAgICAgICBeXl5eXl4gcGFyc2luZyBsaW5rIGRlc3RpbmF0aW9uXG4gICAgc3RhcnQgPSBwb3M7XG4gICAgcmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtEZXN0aW5hdGlvbihzdGF0ZS5zcmMsIHBvcywgc3RhdGUucG9zTWF4KTtcbiAgICBpZiAocmVzLm9rKSB7XG4gICAgICBocmVmID0gc3RhdGUubWQubm9ybWFsaXplTGluayhyZXMuc3RyKTtcbiAgICAgIGlmIChzdGF0ZS5tZC52YWxpZGF0ZUxpbmsoaHJlZikpIHtcbiAgICAgICAgcG9zID0gcmVzLnBvcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhyZWYgPSAnJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBbbGlua10oICA8aHJlZj4gIFwidGl0bGVcIiAgKVxuICAgIC8vICAgICAgICAgICAgICAgIF5eIHNraXBwaW5nIHRoZXNlIHNwYWNlc1xuICAgIHN0YXJ0ID0gcG9zO1xuICAgIGZvciAoOyBwb3MgPCBtYXg7IHBvcysrKSB7XG4gICAgICBjb2RlID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgIGlmICghaXNTcGFjZShjb2RlKSAmJiBjb2RlICE9PSAweDBBKSB7IGJyZWFrOyB9XG4gICAgfVxuXG4gICAgLy8gW2xpbmtdKCAgPGhyZWY+ICBcInRpdGxlXCIgIClcbiAgICAvLyAgICAgICAgICAgICAgICAgIF5eXl5eXl4gcGFyc2luZyBsaW5rIHRpdGxlXG4gICAgcmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtUaXRsZShzdGF0ZS5zcmMsIHBvcywgc3RhdGUucG9zTWF4KTtcbiAgICBpZiAocG9zIDwgbWF4ICYmIHN0YXJ0ICE9PSBwb3MgJiYgcmVzLm9rKSB7XG4gICAgICB0aXRsZSA9IHJlcy5zdHI7XG4gICAgICBwb3MgPSByZXMucG9zO1xuXG4gICAgICAvLyBbbGlua10oICA8aHJlZj4gIFwidGl0bGVcIiAgKVxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgXl4gc2tpcHBpbmcgdGhlc2Ugc3BhY2VzXG4gICAgICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgICAgICBjb2RlID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgICAgaWYgKCFpc1NwYWNlKGNvZGUpICYmIGNvZGUgIT09IDB4MEEpIHsgYnJlYWs7IH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGl0bGUgPSAnJztcbiAgICB9XG5cbiAgICBpZiAocG9zID49IG1heCB8fCBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSAweDI5LyogKSAqLykge1xuICAgICAgc3RhdGUucG9zID0gb2xkUG9zO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBwb3MrKztcbiAgfSBlbHNlIHtcbiAgICAvL1xuICAgIC8vIExpbmsgcmVmZXJlbmNlXG4gICAgLy9cbiAgICBpZiAodHlwZW9mIHN0YXRlLmVudi5yZWZlcmVuY2VzID09PSAndW5kZWZpbmVkJykgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgIGlmIChwb3MgPCBtYXggJiYgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHg1Qi8qIFsgKi8pIHtcbiAgICAgIHN0YXJ0ID0gcG9zICsgMTtcbiAgICAgIHBvcyA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rTGFiZWwoc3RhdGUsIHBvcyk7XG4gICAgICBpZiAocG9zID49IDApIHtcbiAgICAgICAgbGFiZWwgPSBzdGF0ZS5zcmMuc2xpY2Uoc3RhcnQsIHBvcysrKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBvcyA9IGxhYmVsRW5kICsgMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcG9zID0gbGFiZWxFbmQgKyAxO1xuICAgIH1cblxuICAgIC8vIGNvdmVycyBsYWJlbCA9PT0gJycgYW5kIGxhYmVsID09PSB1bmRlZmluZWRcbiAgICAvLyAoY29sbGFwc2VkIHJlZmVyZW5jZSBsaW5rIGFuZCBzaG9ydGN1dCByZWZlcmVuY2UgbGluayByZXNwZWN0aXZlbHkpXG4gICAgaWYgKCFsYWJlbCkgeyBsYWJlbCA9IHN0YXRlLnNyYy5zbGljZShsYWJlbFN0YXJ0LCBsYWJlbEVuZCk7IH1cblxuICAgIHJlZiA9IHN0YXRlLmVudi5yZWZlcmVuY2VzW25vcm1hbGl6ZVJlZmVyZW5jZShsYWJlbCldO1xuICAgIGlmICghcmVmKSB7XG4gICAgICBzdGF0ZS5wb3MgPSBvbGRQb3M7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGhyZWYgPSByZWYuaHJlZjtcbiAgICB0aXRsZSA9IHJlZi50aXRsZTtcbiAgfVxuXG4gIC8vXG4gIC8vIFdlIGZvdW5kIHRoZSBlbmQgb2YgdGhlIGxpbmssIGFuZCBrbm93IGZvciBhIGZhY3QgaXQncyBhIHZhbGlkIGxpbms7XG4gIC8vIHNvIGFsbCB0aGF0J3MgbGVmdCB0byBkbyBpcyB0byBjYWxsIHRva2VuaXplci5cbiAgLy9cbiAgaWYgKCFzaWxlbnQpIHtcbiAgICBjb250ZW50ID0gc3RhdGUuc3JjLnNsaWNlKGxhYmVsU3RhcnQsIGxhYmVsRW5kKTtcblxuICAgIHN0YXRlLm1kLmlubGluZS5wYXJzZShcbiAgICAgIGNvbnRlbnQsXG4gICAgICBzdGF0ZS5tZCxcbiAgICAgIHN0YXRlLmVudixcbiAgICAgIHRva2VucyA9IFtdXG4gICAgKTtcblxuICAgIHRva2VuICAgICAgICAgID0gc3RhdGUucHVzaCgnaW1hZ2UnLCAnaW1nJywgMCk7XG4gICAgdG9rZW4uYXR0cnMgICAgPSBhdHRycyA9IFsgWyAnc3JjJywgaHJlZiBdLCBbICdhbHQnLCAnJyBdIF07XG4gICAgdG9rZW4uY2hpbGRyZW4gPSB0b2tlbnM7XG4gICAgdG9rZW4uY29udGVudCAgPSBjb250ZW50O1xuXG4gICAgaWYgKHRpdGxlKSB7XG4gICAgICBhdHRycy5wdXNoKFsgJ3RpdGxlJywgdGl0bGUgXSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUucG9zID0gcG9zO1xuICBzdGF0ZS5wb3NNYXggPSBtYXg7XG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/image.js\n");
2362
2363/***/ }),
2364
2365/***/ "../../../node_modules/markdown-it/lib/rules_inline/link.js":
2366/*!*********************************************************************************************!*\
2367 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_inline/link.js ***!
2368 \*********************************************************************************************/
2369/*! no static exports found */
2370/***/ (function(module, exports, __webpack_require__) {
2371
2372eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Process [link](<to> \"stuff\")\n 'use strict';\n\n var normalizeReference = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").normalizeReference;\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n module.exports = function link(state, silent) {\n var attrs,\n code,\n label,\n labelEnd,\n labelStart,\n pos,\n res,\n ref,\n title,\n token,\n href = '',\n oldPos = state.pos,\n max = state.posMax,\n start = state.pos,\n parseReference = true;\n\n if (state.src.charCodeAt(state.pos) !== 0x5B\n /* [ */\n ) {\n return false;\n }\n\n labelStart = state.pos + 1;\n labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true); // parser failed to find ']', so it's not a valid link\n\n if (labelEnd < 0) {\n return false;\n }\n\n pos = labelEnd + 1;\n\n if (pos < max && state.src.charCodeAt(pos) === 0x28\n /* ( */\n ) {\n //\n // Inline link\n //\n // might have found a valid shortcut link, disable reference parsing\n parseReference = false; // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n\n pos++;\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n }\n\n if (pos >= max) {\n return false;\n } // [link]( <href> \"title\" )\n // ^^^^^^ parsing link destination\n\n\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = '';\n }\n } // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n\n\n start = pos;\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n } // [link]( <href> \"title\" )\n // ^^^^^^^ parsing link title\n\n\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos; // [link]( <href> \"title\" )\n // ^^ skipping these spaces\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n }\n } else {\n title = '';\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29\n /* ) */\n ) {\n // parsing a valid shortcut link failed, fallback to reference\n parseReference = true;\n }\n\n pos++;\n }\n\n if (parseReference) {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') {\n return false;\n }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B\n /* [ */\n ) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n } // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n\n\n if (!label) {\n label = state.src.slice(labelStart, labelEnd);\n }\n\n ref = state.env.references[normalizeReference(label)];\n\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n\n href = ref.href;\n title = ref.title;\n } //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n\n\n if (!silent) {\n state.pos = labelStart;\n state.posMax = labelEnd;\n token = state.push('link_open', 'a', 1);\n token.attrs = attrs = [['href', href]];\n\n if (title) {\n attrs.push(['title', title]);\n }\n\n state.md.inline.tokenize(state);\n token = state.push('link_close', 'a', -1);\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvbGluay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL2xpbmsuanM/NjE3YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQcm9jZXNzIFtsaW5rXSg8dG8+IFwic3R1ZmZcIilcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgbm9ybWFsaXplUmVmZXJlbmNlICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5ub3JtYWxpemVSZWZlcmVuY2U7XG52YXIgaXNTcGFjZSAgICAgICAgICAgICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1NwYWNlO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbGluayhzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciBhdHRycyxcbiAgICAgIGNvZGUsXG4gICAgICBsYWJlbCxcbiAgICAgIGxhYmVsRW5kLFxuICAgICAgbGFiZWxTdGFydCxcbiAgICAgIHBvcyxcbiAgICAgIHJlcyxcbiAgICAgIHJlZixcbiAgICAgIHRpdGxlLFxuICAgICAgdG9rZW4sXG4gICAgICBocmVmID0gJycsXG4gICAgICBvbGRQb3MgPSBzdGF0ZS5wb3MsXG4gICAgICBtYXggPSBzdGF0ZS5wb3NNYXgsXG4gICAgICBzdGFydCA9IHN0YXRlLnBvcyxcbiAgICAgIHBhcnNlUmVmZXJlbmNlID0gdHJ1ZTtcblxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQoc3RhdGUucG9zKSAhPT0gMHg1Qi8qIFsgKi8pIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgbGFiZWxTdGFydCA9IHN0YXRlLnBvcyArIDE7XG4gIGxhYmVsRW5kID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtMYWJlbChzdGF0ZSwgc3RhdGUucG9zLCB0cnVlKTtcblxuICAvLyBwYXJzZXIgZmFpbGVkIHRvIGZpbmQgJ10nLCBzbyBpdCdzIG5vdCBhIHZhbGlkIGxpbmtcbiAgaWYgKGxhYmVsRW5kIDwgMCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBwb3MgPSBsYWJlbEVuZCArIDE7XG4gIGlmIChwb3MgPCBtYXggJiYgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHgyOC8qICggKi8pIHtcbiAgICAvL1xuICAgIC8vIElubGluZSBsaW5rXG4gICAgLy9cblxuICAgIC8vIG1pZ2h0IGhhdmUgZm91bmQgYSB2YWxpZCBzaG9ydGN1dCBsaW5rLCBkaXNhYmxlIHJlZmVyZW5jZSBwYXJzaW5nXG4gICAgcGFyc2VSZWZlcmVuY2UgPSBmYWxzZTtcblxuICAgIC8vIFtsaW5rXSggIDxocmVmPiAgXCJ0aXRsZVwiICApXG4gICAgLy8gICAgICAgIF5eIHNraXBwaW5nIHRoZXNlIHNwYWNlc1xuICAgIHBvcysrO1xuICAgIGZvciAoOyBwb3MgPCBtYXg7IHBvcysrKSB7XG4gICAgICBjb2RlID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgIGlmICghaXNTcGFjZShjb2RlKSAmJiBjb2RlICE9PSAweDBBKSB7IGJyZWFrOyB9XG4gICAgfVxuICAgIGlmIChwb3MgPj0gbWF4KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgLy8gW2xpbmtdKCAgPGhyZWY+ICBcInRpdGxlXCIgIClcbiAgICAvLyAgICAgICAgICBeXl5eXl4gcGFyc2luZyBsaW5rIGRlc3RpbmF0aW9uXG4gICAgc3RhcnQgPSBwb3M7XG4gICAgcmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtEZXN0aW5hdGlvbihzdGF0ZS5zcmMsIHBvcywgc3RhdGUucG9zTWF4KTtcbiAgICBpZiAocmVzLm9rKSB7XG4gICAgICBocmVmID0gc3RhdGUubWQubm9ybWFsaXplTGluayhyZXMuc3RyKTtcbiAgICAgIGlmIChzdGF0ZS5tZC52YWxpZGF0ZUxpbmsoaHJlZikpIHtcbiAgICAgICAgcG9zID0gcmVzLnBvcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhyZWYgPSAnJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBbbGlua10oICA8aHJlZj4gIFwidGl0bGVcIiAgKVxuICAgIC8vICAgICAgICAgICAgICAgIF5eIHNraXBwaW5nIHRoZXNlIHNwYWNlc1xuICAgIHN0YXJ0ID0gcG9zO1xuICAgIGZvciAoOyBwb3MgPCBtYXg7IHBvcysrKSB7XG4gICAgICBjb2RlID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgIGlmICghaXNTcGFjZShjb2RlKSAmJiBjb2RlICE9PSAweDBBKSB7IGJyZWFrOyB9XG4gICAgfVxuXG4gICAgLy8gW2xpbmtdKCAgPGhyZWY+ICBcInRpdGxlXCIgIClcbiAgICAvLyAgICAgICAgICAgICAgICAgIF5eXl5eXl4gcGFyc2luZyBsaW5rIHRpdGxlXG4gICAgcmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtUaXRsZShzdGF0ZS5zcmMsIHBvcywgc3RhdGUucG9zTWF4KTtcbiAgICBpZiAocG9zIDwgbWF4ICYmIHN0YXJ0ICE9PSBwb3MgJiYgcmVzLm9rKSB7XG4gICAgICB0aXRsZSA9IHJlcy5zdHI7XG4gICAgICBwb3MgPSByZXMucG9zO1xuXG4gICAgICAvLyBbbGlua10oICA8aHJlZj4gIFwidGl0bGVcIiAgKVxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgXl4gc2tpcHBpbmcgdGhlc2Ugc3BhY2VzXG4gICAgICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgICAgICBjb2RlID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgICAgaWYgKCFpc1NwYWNlKGNvZGUpICYmIGNvZGUgIT09IDB4MEEpIHsgYnJlYWs7IH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGl0bGUgPSAnJztcbiAgICB9XG5cbiAgICBpZiAocG9zID49IG1heCB8fCBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSAweDI5LyogKSAqLykge1xuICAgICAgLy8gcGFyc2luZyBhIHZhbGlkIHNob3J0Y3V0IGxpbmsgZmFpbGVkLCBmYWxsYmFjayB0byByZWZlcmVuY2VcbiAgICAgIHBhcnNlUmVmZXJlbmNlID0gdHJ1ZTtcbiAgICB9XG4gICAgcG9zKys7XG4gIH1cblxuICBpZiAocGFyc2VSZWZlcmVuY2UpIHtcbiAgICAvL1xuICAgIC8vIExpbmsgcmVmZXJlbmNlXG4gICAgLy9cbiAgICBpZiAodHlwZW9mIHN0YXRlLmVudi5yZWZlcmVuY2VzID09PSAndW5kZWZpbmVkJykgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgIGlmIChwb3MgPCBtYXggJiYgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHg1Qi8qIFsgKi8pIHtcbiAgICAgIHN0YXJ0ID0gcG9zICsgMTtcbiAgICAgIHBvcyA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rTGFiZWwoc3RhdGUsIHBvcyk7XG4gICAgICBpZiAocG9zID49IDApIHtcbiAgICAgICAgbGFiZWwgPSBzdGF0ZS5zcmMuc2xpY2Uoc3RhcnQsIHBvcysrKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBvcyA9IGxhYmVsRW5kICsgMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcG9zID0gbGFiZWxFbmQgKyAxO1xuICAgIH1cblxuICAgIC8vIGNvdmVycyBsYWJlbCA9PT0gJycgYW5kIGxhYmVsID09PSB1bmRlZmluZWRcbiAgICAvLyAoY29sbGFwc2VkIHJlZmVyZW5jZSBsaW5rIGFuZCBzaG9ydGN1dCByZWZlcmVuY2UgbGluayByZXNwZWN0aXZlbHkpXG4gICAgaWYgKCFsYWJlbCkgeyBsYWJlbCA9IHN0YXRlLnNyYy5zbGljZShsYWJlbFN0YXJ0LCBsYWJlbEVuZCk7IH1cblxuICAgIHJlZiA9IHN0YXRlLmVudi5yZWZlcmVuY2VzW25vcm1hbGl6ZVJlZmVyZW5jZShsYWJlbCldO1xuICAgIGlmICghcmVmKSB7XG4gICAgICBzdGF0ZS5wb3MgPSBvbGRQb3M7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGhyZWYgPSByZWYuaHJlZjtcbiAgICB0aXRsZSA9IHJlZi50aXRsZTtcbiAgfVxuXG4gIC8vXG4gIC8vIFdlIGZvdW5kIHRoZSBlbmQgb2YgdGhlIGxpbmssIGFuZCBrbm93IGZvciBhIGZhY3QgaXQncyBhIHZhbGlkIGxpbms7XG4gIC8vIHNvIGFsbCB0aGF0J3MgbGVmdCB0byBkbyBpcyB0byBjYWxsIHRva2VuaXplci5cbiAgLy9cbiAgaWYgKCFzaWxlbnQpIHtcbiAgICBzdGF0ZS5wb3MgPSBsYWJlbFN0YXJ0O1xuICAgIHN0YXRlLnBvc01heCA9IGxhYmVsRW5kO1xuXG4gICAgdG9rZW4gICAgICAgID0gc3RhdGUucHVzaCgnbGlua19vcGVuJywgJ2EnLCAxKTtcbiAgICB0b2tlbi5hdHRycyAgPSBhdHRycyA9IFsgWyAnaHJlZicsIGhyZWYgXSBdO1xuICAgIGlmICh0aXRsZSkge1xuICAgICAgYXR0cnMucHVzaChbICd0aXRsZScsIHRpdGxlIF0pO1xuICAgIH1cblxuICAgIHN0YXRlLm1kLmlubGluZS50b2tlbml6ZShzdGF0ZSk7XG5cbiAgICB0b2tlbiAgICAgICAgPSBzdGF0ZS5wdXNoKCdsaW5rX2Nsb3NlJywgJ2EnLCAtMSk7XG4gIH1cblxuICBzdGF0ZS5wb3MgPSBwb3M7XG4gIHN0YXRlLnBvc01heCA9IG1heDtcbiAgcmV0dXJuIHRydWU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/link.js\n");
2373
2374/***/ }),
2375
2376/***/ "../../../node_modules/markdown-it/lib/rules_inline/newline.js":
2377/*!************************************************************************************************!*\
2378 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_inline/newline.js ***!
2379 \************************************************************************************************/
2380/*! no static exports found */
2381/***/ (function(module, exports, __webpack_require__) {
2382
2383eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Proceess '\\n'\n 'use strict';\n\n var isSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isSpace;\n\n module.exports = function newline(state, silent) {\n var pmax,\n max,\n pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x0A\n /* \\n */\n ) {\n return false;\n }\n\n pmax = state.pending.length - 1;\n max = state.posMax; // ' \\n' -> hardbreak\n // Lookup in pending chars is bad practice! Don't copy to other rules!\n // Pending string is stored in concat mode, indexed lookups will cause\n // convertion to flat mode.\n\n if (!silent) {\n if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {\n if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {\n state.pending = state.pending.replace(/ +$/, '');\n state.push('hardbreak', 'br', 0);\n } else {\n state.pending = state.pending.slice(0, -1);\n state.push('softbreak', 'br', 0);\n }\n } else {\n state.push('softbreak', 'br', 0);\n }\n }\n\n pos++; // skip heading spaces for next line\n\n while (pos < max && isSpace(state.src.charCodeAt(pos))) {\n pos++;\n }\n\n state.pos = pos;\n return true;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvbmV3bGluZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL25ld2xpbmUuanM/M2VhNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQcm9jZWVzcyAnXFxuJ1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpc1NwYWNlID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuaXNTcGFjZTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG5ld2xpbmUoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgcG1heCwgbWF4LCBwb3MgPSBzdGF0ZS5wb3M7XG5cbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgIT09IDB4MEEvKiBcXG4gKi8pIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgcG1heCA9IHN0YXRlLnBlbmRpbmcubGVuZ3RoIC0gMTtcbiAgbWF4ID0gc3RhdGUucG9zTWF4O1xuXG4gIC8vICcgIFxcbicgLT4gaGFyZGJyZWFrXG4gIC8vIExvb2t1cCBpbiBwZW5kaW5nIGNoYXJzIGlzIGJhZCBwcmFjdGljZSEgRG9uJ3QgY29weSB0byBvdGhlciBydWxlcyFcbiAgLy8gUGVuZGluZyBzdHJpbmcgaXMgc3RvcmVkIGluIGNvbmNhdCBtb2RlLCBpbmRleGVkIGxvb2t1cHMgd2lsbCBjYXVzZVxuICAvLyBjb252ZXJ0aW9uIHRvIGZsYXQgbW9kZS5cbiAgaWYgKCFzaWxlbnQpIHtcbiAgICBpZiAocG1heCA+PSAwICYmIHN0YXRlLnBlbmRpbmcuY2hhckNvZGVBdChwbWF4KSA9PT0gMHgyMCkge1xuICAgICAgaWYgKHBtYXggPj0gMSAmJiBzdGF0ZS5wZW5kaW5nLmNoYXJDb2RlQXQocG1heCAtIDEpID09PSAweDIwKSB7XG4gICAgICAgIHN0YXRlLnBlbmRpbmcgPSBzdGF0ZS5wZW5kaW5nLnJlcGxhY2UoLyArJC8sICcnKTtcbiAgICAgICAgc3RhdGUucHVzaCgnaGFyZGJyZWFrJywgJ2JyJywgMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5wZW5kaW5nID0gc3RhdGUucGVuZGluZy5zbGljZSgwLCAtMSk7XG4gICAgICAgIHN0YXRlLnB1c2goJ3NvZnRicmVhaycsICdicicsIDApO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnB1c2goJ3NvZnRicmVhaycsICdicicsIDApO1xuICAgIH1cbiAgfVxuXG4gIHBvcysrO1xuXG4gIC8vIHNraXAgaGVhZGluZyBzcGFjZXMgZm9yIG5leHQgbGluZVxuICB3aGlsZSAocG9zIDwgbWF4ICYmIGlzU3BhY2Uoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSkpIHsgcG9zKys7IH1cblxuICBzdGF0ZS5wb3MgPSBwb3M7XG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/newline.js\n");
2384
2385/***/ }),
2386
2387/***/ "../../../node_modules/markdown-it/lib/rules_inline/state_inline.js":
2388/*!*****************************************************************************************************!*\
2389 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_inline/state_inline.js ***!
2390 \*****************************************************************************************************/
2391/*! no static exports found */
2392/***/ (function(module, exports, __webpack_require__) {
2393
2394eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Inline parser state\n 'use strict';\n\n var Token = __webpack_require__(/*! ../token */ \"../../../node_modules/markdown-it/lib/token.js\");\n\n var isWhiteSpace = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isWhiteSpace;\n\n var isPunctChar = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isPunctChar;\n\n var isMdAsciiPunct = __webpack_require__(/*! ../common/utils */ \"../../../node_modules/markdown-it/lib/common/utils.js\").isMdAsciiPunct;\n\n function StateInline(src, md, env, outTokens) {\n this.src = src;\n this.env = env;\n this.md = md;\n this.tokens = outTokens;\n this.tokens_meta = Array(outTokens.length);\n this.pos = 0;\n this.posMax = this.src.length;\n this.level = 0;\n this.pending = '';\n this.pendingLevel = 0; // Stores { start: end } pairs. Useful for backtrack\n // optimization of pairs parse (emphasis, strikes).\n\n this.cache = {}; // List of emphasis-like delimiters for current tag\n\n this.delimiters = []; // Stack of delimiter lists for upper level tags\n\n this._prev_delimiters = [];\n } // Flush pending text\n //\n\n\n StateInline.prototype.pushPending = function () {\n var token = new Token('text', '', 0);\n token.content = this.pending;\n token.level = this.pendingLevel;\n this.tokens.push(token);\n this.pending = '';\n return token;\n }; // Push new token to \"stream\".\n // If pending text exists - flush it as text token\n //\n\n\n StateInline.prototype.push = function (type, tag, nesting) {\n if (this.pending) {\n this.pushPending();\n }\n\n var token = new Token(type, tag, nesting);\n var token_meta = null;\n\n if (nesting < 0) {\n // closing tag\n this.level--;\n this.delimiters = this._prev_delimiters.pop();\n }\n\n token.level = this.level;\n\n if (nesting > 0) {\n // opening tag\n this.level++;\n\n this._prev_delimiters.push(this.delimiters);\n\n this.delimiters = [];\n token_meta = {\n delimiters: this.delimiters\n };\n }\n\n this.pendingLevel = this.level;\n this.tokens.push(token);\n this.tokens_meta.push(token_meta);\n return token;\n }; // Scan a sequence of emphasis-like markers, and determine whether\n // it can start an emphasis sequence or end an emphasis sequence.\n //\n // - start - position to scan from (it should point at a valid marker);\n // - canSplitWord - determine if these markers can be found inside a word\n //\n\n\n StateInline.prototype.scanDelims = function (start, canSplitWord) {\n var pos = start,\n lastChar,\n nextChar,\n count,\n can_open,\n can_close,\n isLastWhiteSpace,\n isLastPunctChar,\n isNextWhiteSpace,\n isNextPunctChar,\n left_flanking = true,\n right_flanking = true,\n max = this.posMax,\n marker = this.src.charCodeAt(start); // treat beginning of the line as a whitespace\n\n lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20;\n\n while (pos < max && this.src.charCodeAt(pos) === marker) {\n pos++;\n }\n\n count = pos - start; // treat end of the line as a whitespace\n\n nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20;\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n left_flanking = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n left_flanking = false;\n }\n }\n\n if (isLastWhiteSpace) {\n right_flanking = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n right_flanking = false;\n }\n }\n\n if (!canSplitWord) {\n can_open = left_flanking && (!right_flanking || isLastPunctChar);\n can_close = right_flanking && (!left_flanking || isNextPunctChar);\n } else {\n can_open = left_flanking;\n can_close = right_flanking;\n }\n\n return {\n can_open: can_open,\n can_close: can_close,\n length: count\n };\n }; // re-export Token class to use in block rules\n\n\n StateInline.prototype.Token = Token;\n module.exports = StateInline;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvc3RhdGVfaW5saW5lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvc3RhdGVfaW5saW5lLmpzP2ViYTAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW5saW5lIHBhcnNlciBzdGF0ZVxuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFRva2VuICAgICAgICAgID0gcmVxdWlyZSgnLi4vdG9rZW4nKTtcbnZhciBpc1doaXRlU3BhY2UgICA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzV2hpdGVTcGFjZTtcbnZhciBpc1B1bmN0Q2hhciAgICA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzUHVuY3RDaGFyO1xudmFyIGlzTWRBc2NpaVB1bmN0ID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuaXNNZEFzY2lpUHVuY3Q7XG5cblxuZnVuY3Rpb24gU3RhdGVJbmxpbmUoc3JjLCBtZCwgZW52LCBvdXRUb2tlbnMpIHtcbiAgdGhpcy5zcmMgPSBzcmM7XG4gIHRoaXMuZW52ID0gZW52O1xuICB0aGlzLm1kID0gbWQ7XG4gIHRoaXMudG9rZW5zID0gb3V0VG9rZW5zO1xuICB0aGlzLnRva2Vuc19tZXRhID0gQXJyYXkob3V0VG9rZW5zLmxlbmd0aCk7XG5cbiAgdGhpcy5wb3MgPSAwO1xuICB0aGlzLnBvc01heCA9IHRoaXMuc3JjLmxlbmd0aDtcbiAgdGhpcy5sZXZlbCA9IDA7XG4gIHRoaXMucGVuZGluZyA9ICcnO1xuICB0aGlzLnBlbmRpbmdMZXZlbCA9IDA7XG5cbiAgLy8gU3RvcmVzIHsgc3RhcnQ6IGVuZCB9IHBhaXJzLiBVc2VmdWwgZm9yIGJhY2t0cmFja1xuICAvLyBvcHRpbWl6YXRpb24gb2YgcGFpcnMgcGFyc2UgKGVtcGhhc2lzLCBzdHJpa2VzKS5cbiAgdGhpcy5jYWNoZSA9IHt9O1xuXG4gIC8vIExpc3Qgb2YgZW1waGFzaXMtbGlrZSBkZWxpbWl0ZXJzIGZvciBjdXJyZW50IHRhZ1xuICB0aGlzLmRlbGltaXRlcnMgPSBbXTtcblxuICAvLyBTdGFjayBvZiBkZWxpbWl0ZXIgbGlzdHMgZm9yIHVwcGVyIGxldmVsIHRhZ3NcbiAgdGhpcy5fcHJldl9kZWxpbWl0ZXJzID0gW107XG59XG5cblxuLy8gRmx1c2ggcGVuZGluZyB0ZXh0XG4vL1xuU3RhdGVJbmxpbmUucHJvdG90eXBlLnB1c2hQZW5kaW5nID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdG9rZW4gPSBuZXcgVG9rZW4oJ3RleHQnLCAnJywgMCk7XG4gIHRva2VuLmNvbnRlbnQgPSB0aGlzLnBlbmRpbmc7XG4gIHRva2VuLmxldmVsID0gdGhpcy5wZW5kaW5nTGV2ZWw7XG4gIHRoaXMudG9rZW5zLnB1c2godG9rZW4pO1xuICB0aGlzLnBlbmRpbmcgPSAnJztcbiAgcmV0dXJuIHRva2VuO1xufTtcblxuXG4vLyBQdXNoIG5ldyB0b2tlbiB0byBcInN0cmVhbVwiLlxuLy8gSWYgcGVuZGluZyB0ZXh0IGV4aXN0cyAtIGZsdXNoIGl0IGFzIHRleHQgdG9rZW5cbi8vXG5TdGF0ZUlubGluZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uICh0eXBlLCB0YWcsIG5lc3RpbmcpIHtcbiAgaWYgKHRoaXMucGVuZGluZykge1xuICAgIHRoaXMucHVzaFBlbmRpbmcoKTtcbiAgfVxuXG4gIHZhciB0b2tlbiA9IG5ldyBUb2tlbih0eXBlLCB0YWcsIG5lc3RpbmcpO1xuICB2YXIgdG9rZW5fbWV0YSA9IG51bGw7XG5cbiAgaWYgKG5lc3RpbmcgPCAwKSB7XG4gICAgLy8gY2xvc2luZyB0YWdcbiAgICB0aGlzLmxldmVsLS07XG4gICAgdGhpcy5kZWxpbWl0ZXJzID0gdGhpcy5fcHJldl9kZWxpbWl0ZXJzLnBvcCgpO1xuICB9XG5cbiAgdG9rZW4ubGV2ZWwgPSB0aGlzLmxldmVsO1xuXG4gIGlmIChuZXN0aW5nID4gMCkge1xuICAgIC8vIG9wZW5pbmcgdGFnXG4gICAgdGhpcy5sZXZlbCsrO1xuICAgIHRoaXMuX3ByZXZfZGVsaW1pdGVycy5wdXNoKHRoaXMuZGVsaW1pdGVycyk7XG4gICAgdGhpcy5kZWxpbWl0ZXJzID0gW107XG4gICAgdG9rZW5fbWV0YSA9IHsgZGVsaW1pdGVyczogdGhpcy5kZWxpbWl0ZXJzIH07XG4gIH1cblxuICB0aGlzLnBlbmRpbmdMZXZlbCA9IHRoaXMubGV2ZWw7XG4gIHRoaXMudG9rZW5zLnB1c2godG9rZW4pO1xuICB0aGlzLnRva2Vuc19tZXRhLnB1c2godG9rZW5fbWV0YSk7XG4gIHJldHVybiB0b2tlbjtcbn07XG5cblxuLy8gU2NhbiBhIHNlcXVlbmNlIG9mIGVtcGhhc2lzLWxpa2UgbWFya2VycywgYW5kIGRldGVybWluZSB3aGV0aGVyXG4vLyBpdCBjYW4gc3RhcnQgYW4gZW1waGFzaXMgc2VxdWVuY2Ugb3IgZW5kIGFuIGVtcGhhc2lzIHNlcXVlbmNlLlxuLy9cbi8vICAtIHN0YXJ0IC0gcG9zaXRpb24gdG8gc2NhbiBmcm9tIChpdCBzaG91bGQgcG9pbnQgYXQgYSB2YWxpZCBtYXJrZXIpO1xuLy8gIC0gY2FuU3BsaXRXb3JkIC0gZGV0ZXJtaW5lIGlmIHRoZXNlIG1hcmtlcnMgY2FuIGJlIGZvdW5kIGluc2lkZSBhIHdvcmRcbi8vXG5TdGF0ZUlubGluZS5wcm90b3R5cGUuc2NhbkRlbGltcyA9IGZ1bmN0aW9uIChzdGFydCwgY2FuU3BsaXRXb3JkKSB7XG4gIHZhciBwb3MgPSBzdGFydCwgbGFzdENoYXIsIG5leHRDaGFyLCBjb3VudCwgY2FuX29wZW4sIGNhbl9jbG9zZSxcbiAgICAgIGlzTGFzdFdoaXRlU3BhY2UsIGlzTGFzdFB1bmN0Q2hhcixcbiAgICAgIGlzTmV4dFdoaXRlU3BhY2UsIGlzTmV4dFB1bmN0Q2hhcixcbiAgICAgIGxlZnRfZmxhbmtpbmcgPSB0cnVlLFxuICAgICAgcmlnaHRfZmxhbmtpbmcgPSB0cnVlLFxuICAgICAgbWF4ID0gdGhpcy5wb3NNYXgsXG4gICAgICBtYXJrZXIgPSB0aGlzLnNyYy5jaGFyQ29kZUF0KHN0YXJ0KTtcblxuICAvLyB0cmVhdCBiZWdpbm5pbmcgb2YgdGhlIGxpbmUgYXMgYSB3aGl0ZXNwYWNlXG4gIGxhc3RDaGFyID0gc3RhcnQgPiAwID8gdGhpcy5zcmMuY2hhckNvZGVBdChzdGFydCAtIDEpIDogMHgyMDtcblxuICB3aGlsZSAocG9zIDwgbWF4ICYmIHRoaXMuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gbWFya2VyKSB7IHBvcysrOyB9XG5cbiAgY291bnQgPSBwb3MgLSBzdGFydDtcblxuICAvLyB0cmVhdCBlbmQgb2YgdGhlIGxpbmUgYXMgYSB3aGl0ZXNwYWNlXG4gIG5leHRDaGFyID0gcG9zIDwgbWF4ID8gdGhpcy5zcmMuY2hhckNvZGVBdChwb3MpIDogMHgyMDtcblxuICBpc0xhc3RQdW5jdENoYXIgPSBpc01kQXNjaWlQdW5jdChsYXN0Q2hhcikgfHwgaXNQdW5jdENoYXIoU3RyaW5nLmZyb21DaGFyQ29kZShsYXN0Q2hhcikpO1xuICBpc05leHRQdW5jdENoYXIgPSBpc01kQXNjaWlQdW5jdChuZXh0Q2hhcikgfHwgaXNQdW5jdENoYXIoU3RyaW5nLmZyb21DaGFyQ29kZShuZXh0Q2hhcikpO1xuXG4gIGlzTGFzdFdoaXRlU3BhY2UgPSBpc1doaXRlU3BhY2UobGFzdENoYXIpO1xuICBpc05leHRXaGl0ZVNwYWNlID0gaXNXaGl0ZVNwYWNlKG5leHRDaGFyKTtcblxuICBpZiAoaXNOZXh0V2hpdGVTcGFjZSkge1xuICAgIGxlZnRfZmxhbmtpbmcgPSBmYWxzZTtcbiAgfSBlbHNlIGlmIChpc05leHRQdW5jdENoYXIpIHtcbiAgICBpZiAoIShpc0xhc3RXaGl0ZVNwYWNlIHx8IGlzTGFzdFB1bmN0Q2hhcikpIHtcbiAgICAgIGxlZnRfZmxhbmtpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAoaXNMYXN0V2hpdGVTcGFjZSkge1xuICAgIHJpZ2h0X2ZsYW5raW5nID0gZmFsc2U7XG4gIH0gZWxzZSBpZiAoaXNMYXN0UHVuY3RDaGFyKSB7XG4gICAgaWYgKCEoaXNOZXh0V2hpdGVTcGFjZSB8fCBpc05leHRQdW5jdENoYXIpKSB7XG4gICAgICByaWdodF9mbGFua2luZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghY2FuU3BsaXRXb3JkKSB7XG4gICAgY2FuX29wZW4gID0gbGVmdF9mbGFua2luZyAgJiYgKCFyaWdodF9mbGFua2luZyB8fCBpc0xhc3RQdW5jdENoYXIpO1xuICAgIGNhbl9jbG9zZSA9IHJpZ2h0X2ZsYW5raW5nICYmICghbGVmdF9mbGFua2luZyAgfHwgaXNOZXh0UHVuY3RDaGFyKTtcbiAgfSBlbHNlIHtcbiAgICBjYW5fb3BlbiAgPSBsZWZ0X2ZsYW5raW5nO1xuICAgIGNhbl9jbG9zZSA9IHJpZ2h0X2ZsYW5raW5nO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjYW5fb3BlbjogIGNhbl9vcGVuLFxuICAgIGNhbl9jbG9zZTogY2FuX2Nsb3NlLFxuICAgIGxlbmd0aDogICAgY291bnRcbiAgfTtcbn07XG5cblxuLy8gcmUtZXhwb3J0IFRva2VuIGNsYXNzIHRvIHVzZSBpbiBibG9jayBydWxlc1xuU3RhdGVJbmxpbmUucHJvdG90eXBlLlRva2VuID0gVG9rZW47XG5cblxubW9kdWxlLmV4cG9ydHMgPSBTdGF0ZUlubGluZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/state_inline.js\n");
2395
2396/***/ }),
2397
2398/***/ "../../../node_modules/markdown-it/lib/rules_inline/strikethrough.js":
2399/*!******************************************************************************************************!*\
2400 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_inline/strikethrough.js ***!
2401 \******************************************************************************************************/
2402/*! no static exports found */
2403/***/ (function(module, exports, __webpack_require__) {
2404
2405eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // ~~strike through~~\n //\n 'use strict'; // Insert each marker as a separate text token, and add it to delimiter list\n //\n\n module.exports.tokenize = function strikethrough(state, silent) {\n var i,\n scanned,\n token,\n len,\n ch,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (silent) {\n return false;\n }\n\n if (marker !== 0x7E\n /* ~ */\n ) {\n return false;\n }\n\n scanned = state.scanDelims(state.pos, true);\n len = scanned.length;\n ch = String.fromCharCode(marker);\n\n if (len < 2) {\n return false;\n }\n\n if (len % 2) {\n token = state.push('text', '', 0);\n token.content = ch;\n len--;\n }\n\n for (i = 0; i < len; i += 2) {\n token = state.push('text', '', 0);\n token.content = ch + ch;\n state.delimiters.push({\n marker: marker,\n length: 0,\n // disable \"rule of 3\" length checks meant for emphasis\n jump: i,\n token: state.tokens.length - 1,\n end: -1,\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n return true;\n };\n\n function postProcess(state, delimiters) {\n var i,\n j,\n startDelim,\n endDelim,\n token,\n loneMarkers = [],\n max = delimiters.length;\n\n for (i = 0; i < max; i++) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 0x7E\n /* ~ */\n ) {\n continue;\n }\n\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end];\n token = state.tokens[startDelim.token];\n token.type = 's_open';\n token.tag = 's';\n token.nesting = 1;\n token.markup = '~~';\n token.content = '';\n token = state.tokens[endDelim.token];\n token.type = 's_close';\n token.tag = 's';\n token.nesting = -1;\n token.markup = '~~';\n token.content = '';\n\n if (state.tokens[endDelim.token - 1].type === 'text' && state.tokens[endDelim.token - 1].content === '~') {\n loneMarkers.push(endDelim.token - 1);\n }\n } // If a marker sequence has an odd number of characters, it's splitted\n // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n // start of the sequence.\n //\n // So, we have to move all those markers after subsequent s_close tags.\n //\n\n\n while (loneMarkers.length) {\n i = loneMarkers.pop();\n j = i + 1;\n\n while (j < state.tokens.length && state.tokens[j].type === 's_close') {\n j++;\n }\n\n j--;\n\n if (i !== j) {\n token = state.tokens[j];\n state.tokens[j] = state.tokens[i];\n state.tokens[i] = token;\n }\n }\n } // Walk through delimiter list and replace text tokens with tags\n //\n\n\n module.exports.postProcess = function strikethrough(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n postProcess(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters);\n }\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvc3RyaWtldGhyb3VnaC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL3N0cmlrZXRocm91Z2guanM/M2IzYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fnN0cmlrZSB0aHJvdWdofn5cbi8vXG4ndXNlIHN0cmljdCc7XG5cblxuLy8gSW5zZXJ0IGVhY2ggbWFya2VyIGFzIGEgc2VwYXJhdGUgdGV4dCB0b2tlbiwgYW5kIGFkZCBpdCB0byBkZWxpbWl0ZXIgbGlzdFxuLy9cbm1vZHVsZS5leHBvcnRzLnRva2VuaXplID0gZnVuY3Rpb24gc3RyaWtldGhyb3VnaChzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciBpLCBzY2FubmVkLCB0b2tlbiwgbGVuLCBjaCxcbiAgICAgIHN0YXJ0ID0gc3RhdGUucG9zLFxuICAgICAgbWFya2VyID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQoc3RhcnQpO1xuXG4gIGlmIChzaWxlbnQpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgaWYgKG1hcmtlciAhPT0gMHg3RS8qIH4gKi8pIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgc2Nhbm5lZCA9IHN0YXRlLnNjYW5EZWxpbXMoc3RhdGUucG9zLCB0cnVlKTtcbiAgbGVuID0gc2Nhbm5lZC5sZW5ndGg7XG4gIGNoID0gU3RyaW5nLmZyb21DaGFyQ29kZShtYXJrZXIpO1xuXG4gIGlmIChsZW4gPCAyKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGlmIChsZW4gJSAyKSB7XG4gICAgdG9rZW4gICAgICAgICA9IHN0YXRlLnB1c2goJ3RleHQnLCAnJywgMCk7XG4gICAgdG9rZW4uY29udGVudCA9IGNoO1xuICAgIGxlbi0tO1xuICB9XG5cbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7XG4gICAgdG9rZW4gICAgICAgICA9IHN0YXRlLnB1c2goJ3RleHQnLCAnJywgMCk7XG4gICAgdG9rZW4uY29udGVudCA9IGNoICsgY2g7XG5cbiAgICBzdGF0ZS5kZWxpbWl0ZXJzLnB1c2goe1xuICAgICAgbWFya2VyOiBtYXJrZXIsXG4gICAgICBsZW5ndGg6IDAsIC8vIGRpc2FibGUgXCJydWxlIG9mIDNcIiBsZW5ndGggY2hlY2tzIG1lYW50IGZvciBlbXBoYXNpc1xuICAgICAganVtcDogICBpLFxuICAgICAgdG9rZW46ICBzdGF0ZS50b2tlbnMubGVuZ3RoIC0gMSxcbiAgICAgIGVuZDogICAgLTEsXG4gICAgICBvcGVuOiAgIHNjYW5uZWQuY2FuX29wZW4sXG4gICAgICBjbG9zZTogIHNjYW5uZWQuY2FuX2Nsb3NlXG4gICAgfSk7XG4gIH1cblxuICBzdGF0ZS5wb3MgKz0gc2Nhbm5lZC5sZW5ndGg7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5cbmZ1bmN0aW9uIHBvc3RQcm9jZXNzKHN0YXRlLCBkZWxpbWl0ZXJzKSB7XG4gIHZhciBpLCBqLFxuICAgICAgc3RhcnREZWxpbSxcbiAgICAgIGVuZERlbGltLFxuICAgICAgdG9rZW4sXG4gICAgICBsb25lTWFya2VycyA9IFtdLFxuICAgICAgbWF4ID0gZGVsaW1pdGVycy5sZW5ndGg7XG5cbiAgZm9yIChpID0gMDsgaSA8IG1heDsgaSsrKSB7XG4gICAgc3RhcnREZWxpbSA9IGRlbGltaXRlcnNbaV07XG5cbiAgICBpZiAoc3RhcnREZWxpbS5tYXJrZXIgIT09IDB4N0UvKiB+ICovKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnREZWxpbS5lbmQgPT09IC0xKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBlbmREZWxpbSA9IGRlbGltaXRlcnNbc3RhcnREZWxpbS5lbmRdO1xuXG4gICAgdG9rZW4gICAgICAgICA9IHN0YXRlLnRva2Vuc1tzdGFydERlbGltLnRva2VuXTtcbiAgICB0b2tlbi50eXBlICAgID0gJ3Nfb3Blbic7XG4gICAgdG9rZW4udGFnICAgICA9ICdzJztcbiAgICB0b2tlbi5uZXN0aW5nID0gMTtcbiAgICB0b2tlbi5tYXJrdXAgID0gJ35+JztcbiAgICB0b2tlbi5jb250ZW50ID0gJyc7XG5cbiAgICB0b2tlbiAgICAgICAgID0gc3RhdGUudG9rZW5zW2VuZERlbGltLnRva2VuXTtcbiAgICB0b2tlbi50eXBlICAgID0gJ3NfY2xvc2UnO1xuICAgIHRva2VuLnRhZyAgICAgPSAncyc7XG4gICAgdG9rZW4ubmVzdGluZyA9IC0xO1xuICAgIHRva2VuLm1hcmt1cCAgPSAnfn4nO1xuICAgIHRva2VuLmNvbnRlbnQgPSAnJztcblxuICAgIGlmIChzdGF0ZS50b2tlbnNbZW5kRGVsaW0udG9rZW4gLSAxXS50eXBlID09PSAndGV4dCcgJiZcbiAgICAgICAgc3RhdGUudG9rZW5zW2VuZERlbGltLnRva2VuIC0gMV0uY29udGVudCA9PT0gJ34nKSB7XG5cbiAgICAgIGxvbmVNYXJrZXJzLnB1c2goZW5kRGVsaW0udG9rZW4gLSAxKTtcbiAgICB9XG4gIH1cblxuICAvLyBJZiBhIG1hcmtlciBzZXF1ZW5jZSBoYXMgYW4gb2RkIG51bWJlciBvZiBjaGFyYWN0ZXJzLCBpdCdzIHNwbGl0dGVkXG4gIC8vIGxpa2UgdGhpczogYH5+fn5+YCAtPiBgfmAgKyBgfn5gICsgYH5+YCwgbGVhdmluZyBvbmUgbWFya2VyIGF0IHRoZVxuICAvLyBzdGFydCBvZiB0aGUgc2VxdWVuY2UuXG4gIC8vXG4gIC8vIFNvLCB3ZSBoYXZlIHRvIG1vdmUgYWxsIHRob3NlIG1hcmtlcnMgYWZ0ZXIgc3Vic2VxdWVudCBzX2Nsb3NlIHRhZ3MuXG4gIC8vXG4gIHdoaWxlIChsb25lTWFya2Vycy5sZW5ndGgpIHtcbiAgICBpID0gbG9uZU1hcmtlcnMucG9wKCk7XG4gICAgaiA9IGkgKyAxO1xuXG4gICAgd2hpbGUgKGogPCBzdGF0ZS50b2tlbnMubGVuZ3RoICYmIHN0YXRlLnRva2Vuc1tqXS50eXBlID09PSAnc19jbG9zZScpIHtcbiAgICAgIGorKztcbiAgICB9XG5cbiAgICBqLS07XG5cbiAgICBpZiAoaSAhPT0gaikge1xuICAgICAgdG9rZW4gPSBzdGF0ZS50b2tlbnNbal07XG4gICAgICBzdGF0ZS50b2tlbnNbal0gPSBzdGF0ZS50b2tlbnNbaV07XG4gICAgICBzdGF0ZS50b2tlbnNbaV0gPSB0b2tlbjtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBXYWxrIHRocm91Z2ggZGVsaW1pdGVyIGxpc3QgYW5kIHJlcGxhY2UgdGV4dCB0b2tlbnMgd2l0aCB0YWdzXG4vL1xubW9kdWxlLmV4cG9ydHMucG9zdFByb2Nlc3MgPSBmdW5jdGlvbiBzdHJpa2V0aHJvdWdoKHN0YXRlKSB7XG4gIHZhciBjdXJyLFxuICAgICAgdG9rZW5zX21ldGEgPSBzdGF0ZS50b2tlbnNfbWV0YSxcbiAgICAgIG1heCA9IHN0YXRlLnRva2Vuc19tZXRhLmxlbmd0aDtcblxuICBwb3N0UHJvY2VzcyhzdGF0ZSwgc3RhdGUuZGVsaW1pdGVycyk7XG5cbiAgZm9yIChjdXJyID0gMDsgY3VyciA8IG1heDsgY3VycisrKSB7XG4gICAgaWYgKHRva2Vuc19tZXRhW2N1cnJdICYmIHRva2Vuc19tZXRhW2N1cnJdLmRlbGltaXRlcnMpIHtcbiAgICAgIHBvc3RQcm9jZXNzKHN0YXRlLCB0b2tlbnNfbWV0YVtjdXJyXS5kZWxpbWl0ZXJzKTtcbiAgICB9XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBU0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/strikethrough.js\n");
2406
2407/***/ }),
2408
2409/***/ "../../../node_modules/markdown-it/lib/rules_inline/text.js":
2410/*!*********************************************************************************************!*\
2411 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_inline/text.js ***!
2412 \*********************************************************************************************/
2413/*! no static exports found */
2414/***/ (function(module, exports, __webpack_require__) {
2415
2416eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Skip text characters for text token, place those to pending buffer\n // and increment current pos\n 'use strict'; // Rule to skip pure text\n // '{}$%@~+=:' reserved for extentions\n // !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n // !!!! Don't confuse with \"Markdown ASCII Punctuation\" chars\n // http://spec.commonmark.org/0.15/#ascii-punctuation-character\n\n function isTerminatorChar(ch) {\n switch (ch) {\n case 0x0A\n /* \\n */\n :\n case 0x21\n /* ! */\n :\n case 0x23\n /* # */\n :\n case 0x24\n /* $ */\n :\n case 0x25\n /* % */\n :\n case 0x26\n /* & */\n :\n case 0x2A\n /* * */\n :\n case 0x2B\n /* + */\n :\n case 0x2D\n /* - */\n :\n case 0x3A\n /* : */\n :\n case 0x3C\n /* < */\n :\n case 0x3D\n /* = */\n :\n case 0x3E\n /* > */\n :\n case 0x40\n /* @ */\n :\n case 0x5B\n /* [ */\n :\n case 0x5C\n /* \\ */\n :\n case 0x5D\n /* ] */\n :\n case 0x5E\n /* ^ */\n :\n case 0x5F\n /* _ */\n :\n case 0x60\n /* ` */\n :\n case 0x7B\n /* { */\n :\n case 0x7D\n /* } */\n :\n case 0x7E\n /* ~ */\n :\n return true;\n\n default:\n return false;\n }\n }\n\n module.exports = function text(state, silent) {\n var pos = state.pos;\n\n while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n pos++;\n }\n\n if (pos === state.pos) {\n return false;\n }\n\n if (!silent) {\n state.pending += state.src.slice(state.pos, pos);\n }\n\n state.pos = pos;\n return true;\n }; // Alternative implementation, for memory.\n //\n // It costs 10% of performance, but allows extend terminators list, if place it\n // to `ParcerInline` property. Probably, will switch to it sometime, such\n // flexibility required.\n\n /*\n var TERMINATOR_RE = /[\\n!#$%&*+\\-:<=>@[\\\\\\]^_`{}~]/;\n \n module.exports = function text(state, silent) {\n var pos = state.pos,\n idx = state.src.slice(pos).search(TERMINATOR_RE);\n \n // first char is terminator -> empty text\n if (idx === 0) { return false; }\n \n // no terminator -> text till end of string\n if (idx < 0) {\n if (!silent) { state.pending += state.src.slice(pos); }\n state.pos = state.src.length;\n return true;\n }\n \n if (!silent) { state.pending += state.src.slice(pos, pos + idx); }\n \n state.pos += idx;\n \n return true;\n };*/\n\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvdGV4dC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL3RleHQuanM/ZTBjNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTa2lwIHRleHQgY2hhcmFjdGVycyBmb3IgdGV4dCB0b2tlbiwgcGxhY2UgdGhvc2UgdG8gcGVuZGluZyBidWZmZXJcbi8vIGFuZCBpbmNyZW1lbnQgY3VycmVudCBwb3NcblxuJ3VzZSBzdHJpY3QnO1xuXG5cbi8vIFJ1bGUgdG8gc2tpcCBwdXJlIHRleHRcbi8vICd7fSQlQH4rPTonIHJlc2VydmVkIGZvciBleHRlbnRpb25zXG5cbi8vICEsIFwiLCAjLCAkLCAlLCAmLCAnLCAoLCApLCAqLCArLCAsLCAtLCAuLCAvLCA6LCA7LCA8LCA9LCA+LCA/LCBALCBbLCBcXCwgXSwgXiwgXywgYCwgeywgfCwgfSwgb3IgflxuXG4vLyAhISEhIERvbid0IGNvbmZ1c2Ugd2l0aCBcIk1hcmtkb3duIEFTQ0lJIFB1bmN0dWF0aW9uXCIgY2hhcnNcbi8vIGh0dHA6Ly9zcGVjLmNvbW1vbm1hcmsub3JnLzAuMTUvI2FzY2lpLXB1bmN0dWF0aW9uLWNoYXJhY3RlclxuZnVuY3Rpb24gaXNUZXJtaW5hdG9yQ2hhcihjaCkge1xuICBzd2l0Y2ggKGNoKSB7XG4gICAgY2FzZSAweDBBLyogXFxuICovOlxuICAgIGNhc2UgMHgyMS8qICEgKi86XG4gICAgY2FzZSAweDIzLyogIyAqLzpcbiAgICBjYXNlIDB4MjQvKiAkICovOlxuICAgIGNhc2UgMHgyNS8qICUgKi86XG4gICAgY2FzZSAweDI2LyogJiAqLzpcbiAgICBjYXNlIDB4MkEvKiAqICovOlxuICAgIGNhc2UgMHgyQi8qICsgKi86XG4gICAgY2FzZSAweDJELyogLSAqLzpcbiAgICBjYXNlIDB4M0EvKiA6ICovOlxuICAgIGNhc2UgMHgzQy8qIDwgKi86XG4gICAgY2FzZSAweDNELyogPSAqLzpcbiAgICBjYXNlIDB4M0UvKiA+ICovOlxuICAgIGNhc2UgMHg0MC8qIEAgKi86XG4gICAgY2FzZSAweDVCLyogWyAqLzpcbiAgICBjYXNlIDB4NUMvKiBcXCAqLzpcbiAgICBjYXNlIDB4NUQvKiBdICovOlxuICAgIGNhc2UgMHg1RS8qIF4gKi86XG4gICAgY2FzZSAweDVGLyogXyAqLzpcbiAgICBjYXNlIDB4NjAvKiBgICovOlxuICAgIGNhc2UgMHg3Qi8qIHsgKi86XG4gICAgY2FzZSAweDdELyogfSAqLzpcbiAgICBjYXNlIDB4N0UvKiB+ICovOlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRleHQoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgcG9zID0gc3RhdGUucG9zO1xuXG4gIHdoaWxlIChwb3MgPCBzdGF0ZS5wb3NNYXggJiYgIWlzVGVybWluYXRvckNoYXIoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSkpIHtcbiAgICBwb3MrKztcbiAgfVxuXG4gIGlmIChwb3MgPT09IHN0YXRlLnBvcykgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAoIXNpbGVudCkgeyBzdGF0ZS5wZW5kaW5nICs9IHN0YXRlLnNyYy5zbGljZShzdGF0ZS5wb3MsIHBvcyk7IH1cblxuICBzdGF0ZS5wb3MgPSBwb3M7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBBbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiwgZm9yIG1lbW9yeS5cbi8vXG4vLyBJdCBjb3N0cyAxMCUgb2YgcGVyZm9ybWFuY2UsIGJ1dCBhbGxvd3MgZXh0ZW5kIHRlcm1pbmF0b3JzIGxpc3QsIGlmIHBsYWNlIGl0XG4vLyB0byBgUGFyY2VySW5saW5lYCBwcm9wZXJ0eS4gUHJvYmFibHksIHdpbGwgc3dpdGNoIHRvIGl0IHNvbWV0aW1lLCBzdWNoXG4vLyBmbGV4aWJpbGl0eSByZXF1aXJlZC5cblxuLypcbnZhciBURVJNSU5BVE9SX1JFID0gL1tcXG4hIyQlJiorXFwtOjw9PkBbXFxcXFxcXV5fYHt9fl0vO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRleHQoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgcG9zID0gc3RhdGUucG9zLFxuICAgICAgaWR4ID0gc3RhdGUuc3JjLnNsaWNlKHBvcykuc2VhcmNoKFRFUk1JTkFUT1JfUkUpO1xuXG4gIC8vIGZpcnN0IGNoYXIgaXMgdGVybWluYXRvciAtPiBlbXB0eSB0ZXh0XG4gIGlmIChpZHggPT09IDApIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgLy8gbm8gdGVybWluYXRvciAtPiB0ZXh0IHRpbGwgZW5kIG9mIHN0cmluZ1xuICBpZiAoaWR4IDwgMCkge1xuICAgIGlmICghc2lsZW50KSB7IHN0YXRlLnBlbmRpbmcgKz0gc3RhdGUuc3JjLnNsaWNlKHBvcyk7IH1cbiAgICBzdGF0ZS5wb3MgPSBzdGF0ZS5zcmMubGVuZ3RoO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKCFzaWxlbnQpIHsgc3RhdGUucGVuZGluZyArPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBwb3MgKyBpZHgpOyB9XG5cbiAgc3RhdGUucG9zICs9IGlkeDtcblxuICByZXR1cm4gdHJ1ZTtcbn07Ki9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFJQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBMUJBO0FBNEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/text.js\n");
2417
2418/***/ }),
2419
2420/***/ "../../../node_modules/markdown-it/lib/rules_inline/text_collapse.js":
2421/*!******************************************************************************************************!*\
2422 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/rules_inline/text_collapse.js ***!
2423 \******************************************************************************************************/
2424/*! no static exports found */
2425/***/ (function(module, exports, __webpack_require__) {
2426
2427eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Clean up tokens after emphasis and strikethrough postprocessing:\n // merge adjacent text nodes into one and re-calculate all token levels\n //\n // This is necessary because initially emphasis delimiter markers (*, _, ~)\n // are treated as their own separate text tokens. Then emphasis rule either\n // leaves them as text (needed to merge with adjacent text) or turns them\n // into opening/closing tags (which messes up levels inside).\n //\n 'use strict';\n\n module.exports = function text_collapse(state) {\n var curr,\n last,\n level = 0,\n tokens = state.tokens,\n max = state.tokens.length;\n\n for (curr = last = 0; curr < max; curr++) {\n // re-calculate levels after emphasis/strikethrough turns some text nodes\n // into opening/closing tags\n if (tokens[curr].nesting < 0) level--; // closing tag\n\n tokens[curr].level = level;\n if (tokens[curr].nesting > 0) level++; // opening tag\n\n if (tokens[curr].type === 'text' && curr + 1 < max && tokens[curr + 1].type === 'text') {\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n } else {\n if (curr !== last) {\n tokens[last] = tokens[curr];\n }\n\n last++;\n }\n }\n\n if (curr !== last) {\n tokens.length = last;\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvdGV4dF9jb2xsYXBzZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL3RleHRfY29sbGFwc2UuanM/YjkyMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDbGVhbiB1cCB0b2tlbnMgYWZ0ZXIgZW1waGFzaXMgYW5kIHN0cmlrZXRocm91Z2ggcG9zdHByb2Nlc3Npbmc6XG4vLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzIGludG8gb25lIGFuZCByZS1jYWxjdWxhdGUgYWxsIHRva2VuIGxldmVsc1xuLy9cbi8vIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaW5pdGlhbGx5IGVtcGhhc2lzIGRlbGltaXRlciBtYXJrZXJzICgqLCBfLCB+KVxuLy8gYXJlIHRyZWF0ZWQgYXMgdGhlaXIgb3duIHNlcGFyYXRlIHRleHQgdG9rZW5zLiBUaGVuIGVtcGhhc2lzIHJ1bGUgZWl0aGVyXG4vLyBsZWF2ZXMgdGhlbSBhcyB0ZXh0IChuZWVkZWQgdG8gbWVyZ2Ugd2l0aCBhZGphY2VudCB0ZXh0KSBvciB0dXJucyB0aGVtXG4vLyBpbnRvIG9wZW5pbmcvY2xvc2luZyB0YWdzICh3aGljaCBtZXNzZXMgdXAgbGV2ZWxzIGluc2lkZSkuXG4vL1xuJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdGV4dF9jb2xsYXBzZShzdGF0ZSkge1xuICB2YXIgY3VyciwgbGFzdCxcbiAgICAgIGxldmVsID0gMCxcbiAgICAgIHRva2VucyA9IHN0YXRlLnRva2VucyxcbiAgICAgIG1heCA9IHN0YXRlLnRva2Vucy5sZW5ndGg7XG5cbiAgZm9yIChjdXJyID0gbGFzdCA9IDA7IGN1cnIgPCBtYXg7IGN1cnIrKykge1xuICAgIC8vIHJlLWNhbGN1bGF0ZSBsZXZlbHMgYWZ0ZXIgZW1waGFzaXMvc3RyaWtldGhyb3VnaCB0dXJucyBzb21lIHRleHQgbm9kZXNcbiAgICAvLyBpbnRvIG9wZW5pbmcvY2xvc2luZyB0YWdzXG4gICAgaWYgKHRva2Vuc1tjdXJyXS5uZXN0aW5nIDwgMCkgbGV2ZWwtLTsgLy8gY2xvc2luZyB0YWdcbiAgICB0b2tlbnNbY3Vycl0ubGV2ZWwgPSBsZXZlbDtcbiAgICBpZiAodG9rZW5zW2N1cnJdLm5lc3RpbmcgPiAwKSBsZXZlbCsrOyAvLyBvcGVuaW5nIHRhZ1xuXG4gICAgaWYgKHRva2Vuc1tjdXJyXS50eXBlID09PSAndGV4dCcgJiZcbiAgICAgICAgY3VyciArIDEgPCBtYXggJiZcbiAgICAgICAgdG9rZW5zW2N1cnIgKyAxXS50eXBlID09PSAndGV4dCcpIHtcblxuICAgICAgLy8gY29sbGFwc2UgdHdvIGFkamFjZW50IHRleHQgbm9kZXNcbiAgICAgIHRva2Vuc1tjdXJyICsgMV0uY29udGVudCA9IHRva2Vuc1tjdXJyXS5jb250ZW50ICsgdG9rZW5zW2N1cnIgKyAxXS5jb250ZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY3VyciAhPT0gbGFzdCkgeyB0b2tlbnNbbGFzdF0gPSB0b2tlbnNbY3Vycl07IH1cblxuICAgICAgbGFzdCsrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjdXJyICE9PSBsYXN0KSB7XG4gICAgdG9rZW5zLmxlbmd0aCA9IGxhc3Q7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/rules_inline/text_collapse.js\n");
2428
2429/***/ }),
2430
2431/***/ "../../../node_modules/markdown-it/lib/token.js":
2432/*!*********************************************************************************!*\
2433 !*** /home/runner/work/graphiql/graphiql/node_modules/markdown-it/lib/token.js ***!
2434 \*********************************************************************************/
2435/*! no static exports found */
2436/***/ (function(module, exports, __webpack_require__) {
2437
2438eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Token class\n 'use strict';\n /**\n * class Token\n **/\n\n /**\n * new Token(type, tag, nesting)\n *\n * Create new token and fill passed properties.\n **/\n\n function Token(type, tag, nesting) {\n /**\n * Token#type -> String\n *\n * Type of the token (string, e.g. \"paragraph_open\")\n **/\n this.type = type;\n /**\n * Token#tag -> String\n *\n * html tag name, e.g. \"p\"\n **/\n\n this.tag = tag;\n /**\n * Token#attrs -> Array\n *\n * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]`\n **/\n\n this.attrs = null;\n /**\n * Token#map -> Array\n *\n * Source map info. Format: `[ line_begin, line_end ]`\n **/\n\n this.map = null;\n /**\n * Token#nesting -> Number\n *\n * Level change (number in {-1, 0, 1} set), where:\n *\n * - `1` means the tag is opening\n * - `0` means the tag is self-closing\n * - `-1` means the tag is closing\n **/\n\n this.nesting = nesting;\n /**\n * Token#level -> Number\n *\n * nesting level, the same as `state.level`\n **/\n\n this.level = 0;\n /**\n * Token#children -> Array\n *\n * An array of child nodes (inline and img tokens)\n **/\n\n this.children = null;\n /**\n * Token#content -> String\n *\n * In a case of self-closing tag (code, html, fence, etc.),\n * it has contents of this tag.\n **/\n\n this.content = '';\n /**\n * Token#markup -> String\n *\n * '*' or '_' for emphasis, fence string for fence, etc.\n **/\n\n this.markup = '';\n /**\n * Token#info -> String\n *\n * fence infostring\n **/\n\n this.info = '';\n /**\n * Token#meta -> Object\n *\n * A place for plugins to store an arbitrary data\n **/\n\n this.meta = null;\n /**\n * Token#block -> Boolean\n *\n * True for block-level tokens, false for inline tokens.\n * Used in renderer to calculate line breaks\n **/\n\n this.block = false;\n /**\n * Token#hidden -> Boolean\n *\n * If it's true, ignore this element when rendering. Used for tight lists\n * to hide paragraphs.\n **/\n\n this.hidden = false;\n }\n /**\n * Token.attrIndex(name) -> Number\n *\n * Search attribute index by name.\n **/\n\n\n Token.prototype.attrIndex = function attrIndex(name) {\n var attrs, i, len;\n\n if (!this.attrs) {\n return -1;\n }\n\n attrs = this.attrs;\n\n for (i = 0, len = attrs.length; i < len; i++) {\n if (attrs[i][0] === name) {\n return i;\n }\n }\n\n return -1;\n };\n /**\n * Token.attrPush(attrData)\n *\n * Add `[ name, value ]` attribute to list. Init attrs if necessary\n **/\n\n\n Token.prototype.attrPush = function attrPush(attrData) {\n if (this.attrs) {\n this.attrs.push(attrData);\n } else {\n this.attrs = [attrData];\n }\n };\n /**\n * Token.attrSet(name, value)\n *\n * Set `name` attribute to `value`. Override old value if exists.\n **/\n\n\n Token.prototype.attrSet = function attrSet(name, value) {\n var idx = this.attrIndex(name),\n attrData = [name, value];\n\n if (idx < 0) {\n this.attrPush(attrData);\n } else {\n this.attrs[idx] = attrData;\n }\n };\n /**\n * Token.attrGet(name)\n *\n * Get the value of attribute `name`, or null if it does not exist.\n **/\n\n\n Token.prototype.attrGet = function attrGet(name) {\n var idx = this.attrIndex(name),\n value = null;\n\n if (idx >= 0) {\n value = this.attrs[idx][1];\n }\n\n return value;\n };\n /**\n * Token.attrJoin(name, value)\n *\n * Join value to existing attribute via space. Or create new attribute if not\n * exists. Useful to operate with token classes.\n **/\n\n\n Token.prototype.attrJoin = function attrJoin(name, value) {\n var idx = this.attrIndex(name);\n\n if (idx < 0) {\n this.attrPush([name, value]);\n } else {\n this.attrs[idx][1] = this.attrs[idx][1] + ' ' + value;\n }\n };\n\n module.exports = Token;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi90b2tlbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvdG9rZW4uanM/ZTJjOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUb2tlbiBjbGFzc1xuXG4ndXNlIHN0cmljdCc7XG5cblxuLyoqXG4gKiBjbGFzcyBUb2tlblxuICoqL1xuXG4vKipcbiAqIG5ldyBUb2tlbih0eXBlLCB0YWcsIG5lc3RpbmcpXG4gKlxuICogQ3JlYXRlIG5ldyB0b2tlbiBhbmQgZmlsbCBwYXNzZWQgcHJvcGVydGllcy5cbiAqKi9cbmZ1bmN0aW9uIFRva2VuKHR5cGUsIHRhZywgbmVzdGluZykge1xuICAvKipcbiAgICogVG9rZW4jdHlwZSAtPiBTdHJpbmdcbiAgICpcbiAgICogVHlwZSBvZiB0aGUgdG9rZW4gKHN0cmluZywgZS5nLiBcInBhcmFncmFwaF9vcGVuXCIpXG4gICAqKi9cbiAgdGhpcy50eXBlICAgICA9IHR5cGU7XG5cbiAgLyoqXG4gICAqIFRva2VuI3RhZyAtPiBTdHJpbmdcbiAgICpcbiAgICogaHRtbCB0YWcgbmFtZSwgZS5nLiBcInBcIlxuICAgKiovXG4gIHRoaXMudGFnICAgICAgPSB0YWc7XG5cbiAgLyoqXG4gICAqIFRva2VuI2F0dHJzIC0+IEFycmF5XG4gICAqXG4gICAqIEh0bWwgYXR0cmlidXRlcy4gRm9ybWF0OiBgWyBbIG5hbWUxLCB2YWx1ZTEgXSwgWyBuYW1lMiwgdmFsdWUyIF0gXWBcbiAgICoqL1xuICB0aGlzLmF0dHJzICAgID0gbnVsbDtcblxuICAvKipcbiAgICogVG9rZW4jbWFwIC0+IEFycmF5XG4gICAqXG4gICAqIFNvdXJjZSBtYXAgaW5mby4gRm9ybWF0OiBgWyBsaW5lX2JlZ2luLCBsaW5lX2VuZCBdYFxuICAgKiovXG4gIHRoaXMubWFwICAgICAgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUb2tlbiNuZXN0aW5nIC0+IE51bWJlclxuICAgKlxuICAgKiBMZXZlbCBjaGFuZ2UgKG51bWJlciBpbiB7LTEsIDAsIDF9IHNldCksIHdoZXJlOlxuICAgKlxuICAgKiAtICBgMWAgbWVhbnMgdGhlIHRhZyBpcyBvcGVuaW5nXG4gICAqIC0gIGAwYCBtZWFucyB0aGUgdGFnIGlzIHNlbGYtY2xvc2luZ1xuICAgKiAtIGAtMWAgbWVhbnMgdGhlIHRhZyBpcyBjbG9zaW5nXG4gICAqKi9cbiAgdGhpcy5uZXN0aW5nICA9IG5lc3Rpbmc7XG5cbiAgLyoqXG4gICAqIFRva2VuI2xldmVsIC0+IE51bWJlclxuICAgKlxuICAgKiBuZXN0aW5nIGxldmVsLCB0aGUgc2FtZSBhcyBgc3RhdGUubGV2ZWxgXG4gICAqKi9cbiAgdGhpcy5sZXZlbCAgICA9IDA7XG5cbiAgLyoqXG4gICAqIFRva2VuI2NoaWxkcmVuIC0+IEFycmF5XG4gICAqXG4gICAqIEFuIGFycmF5IG9mIGNoaWxkIG5vZGVzIChpbmxpbmUgYW5kIGltZyB0b2tlbnMpXG4gICAqKi9cbiAgdGhpcy5jaGlsZHJlbiA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRva2VuI2NvbnRlbnQgLT4gU3RyaW5nXG4gICAqXG4gICAqIEluIGEgY2FzZSBvZiBzZWxmLWNsb3NpbmcgdGFnIChjb2RlLCBodG1sLCBmZW5jZSwgZXRjLiksXG4gICAqIGl0IGhhcyBjb250ZW50cyBvZiB0aGlzIHRhZy5cbiAgICoqL1xuICB0aGlzLmNvbnRlbnQgID0gJyc7XG5cbiAgLyoqXG4gICAqIFRva2VuI21hcmt1cCAtPiBTdHJpbmdcbiAgICpcbiAgICogJyonIG9yICdfJyBmb3IgZW1waGFzaXMsIGZlbmNlIHN0cmluZyBmb3IgZmVuY2UsIGV0Yy5cbiAgICoqL1xuICB0aGlzLm1hcmt1cCAgID0gJyc7XG5cbiAgLyoqXG4gICAqIFRva2VuI2luZm8gLT4gU3RyaW5nXG4gICAqXG4gICAqIGZlbmNlIGluZm9zdHJpbmdcbiAgICoqL1xuICB0aGlzLmluZm8gICAgID0gJyc7XG5cbiAgLyoqXG4gICAqIFRva2VuI21ldGEgLT4gT2JqZWN0XG4gICAqXG4gICAqIEEgcGxhY2UgZm9yIHBsdWdpbnMgdG8gc3RvcmUgYW4gYXJiaXRyYXJ5IGRhdGFcbiAgICoqL1xuICB0aGlzLm1ldGEgICAgID0gbnVsbDtcblxuICAvKipcbiAgICogVG9rZW4jYmxvY2sgLT4gQm9vbGVhblxuICAgKlxuICAgKiBUcnVlIGZvciBibG9jay1sZXZlbCB0b2tlbnMsIGZhbHNlIGZvciBpbmxpbmUgdG9rZW5zLlxuICAgKiBVc2VkIGluIHJlbmRlcmVyIHRvIGNhbGN1bGF0ZSBsaW5lIGJyZWFrc1xuICAgKiovXG4gIHRoaXMuYmxvY2sgICAgPSBmYWxzZTtcblxuICAvKipcbiAgICogVG9rZW4jaGlkZGVuIC0+IEJvb2xlYW5cbiAgICpcbiAgICogSWYgaXQncyB0cnVlLCBpZ25vcmUgdGhpcyBlbGVtZW50IHdoZW4gcmVuZGVyaW5nLiBVc2VkIGZvciB0aWdodCBsaXN0c1xuICAgKiB0byBoaWRlIHBhcmFncmFwaHMuXG4gICAqKi9cbiAgdGhpcy5oaWRkZW4gICA9IGZhbHNlO1xufVxuXG5cbi8qKlxuICogVG9rZW4uYXR0ckluZGV4KG5hbWUpIC0+IE51bWJlclxuICpcbiAqIFNlYXJjaCBhdHRyaWJ1dGUgaW5kZXggYnkgbmFtZS5cbiAqKi9cblRva2VuLnByb3RvdHlwZS5hdHRySW5kZXggPSBmdW5jdGlvbiBhdHRySW5kZXgobmFtZSkge1xuICB2YXIgYXR0cnMsIGksIGxlbjtcblxuICBpZiAoIXRoaXMuYXR0cnMpIHsgcmV0dXJuIC0xOyB9XG5cbiAgYXR0cnMgPSB0aGlzLmF0dHJzO1xuXG4gIGZvciAoaSA9IDAsIGxlbiA9IGF0dHJzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGF0dHJzW2ldWzBdID09PSBuYW1lKSB7IHJldHVybiBpOyB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufTtcblxuXG4vKipcbiAqIFRva2VuLmF0dHJQdXNoKGF0dHJEYXRhKVxuICpcbiAqIEFkZCBgWyBuYW1lLCB2YWx1ZSBdYCBhdHRyaWJ1dGUgdG8gbGlzdC4gSW5pdCBhdHRycyBpZiBuZWNlc3NhcnlcbiAqKi9cblRva2VuLnByb3RvdHlwZS5hdHRyUHVzaCA9IGZ1bmN0aW9uIGF0dHJQdXNoKGF0dHJEYXRhKSB7XG4gIGlmICh0aGlzLmF0dHJzKSB7XG4gICAgdGhpcy5hdHRycy5wdXNoKGF0dHJEYXRhKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmF0dHJzID0gWyBhdHRyRGF0YSBdO1xuICB9XG59O1xuXG5cbi8qKlxuICogVG9rZW4uYXR0clNldChuYW1lLCB2YWx1ZSlcbiAqXG4gKiBTZXQgYG5hbWVgIGF0dHJpYnV0ZSB0byBgdmFsdWVgLiBPdmVycmlkZSBvbGQgdmFsdWUgaWYgZXhpc3RzLlxuICoqL1xuVG9rZW4ucHJvdG90eXBlLmF0dHJTZXQgPSBmdW5jdGlvbiBhdHRyU2V0KG5hbWUsIHZhbHVlKSB7XG4gIHZhciBpZHggPSB0aGlzLmF0dHJJbmRleChuYW1lKSxcbiAgICAgIGF0dHJEYXRhID0gWyBuYW1lLCB2YWx1ZSBdO1xuXG4gIGlmIChpZHggPCAwKSB7XG4gICAgdGhpcy5hdHRyUHVzaChhdHRyRGF0YSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5hdHRyc1tpZHhdID0gYXR0ckRhdGE7XG4gIH1cbn07XG5cblxuLyoqXG4gKiBUb2tlbi5hdHRyR2V0KG5hbWUpXG4gKlxuICogR2V0IHRoZSB2YWx1ZSBvZiBhdHRyaWJ1dGUgYG5hbWVgLCBvciBudWxsIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICoqL1xuVG9rZW4ucHJvdG90eXBlLmF0dHJHZXQgPSBmdW5jdGlvbiBhdHRyR2V0KG5hbWUpIHtcbiAgdmFyIGlkeCA9IHRoaXMuYXR0ckluZGV4KG5hbWUpLCB2YWx1ZSA9IG51bGw7XG4gIGlmIChpZHggPj0gMCkge1xuICAgIHZhbHVlID0gdGhpcy5hdHRyc1tpZHhdWzFdO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cblxuLyoqXG4gKiBUb2tlbi5hdHRySm9pbihuYW1lLCB2YWx1ZSlcbiAqXG4gKiBKb2luIHZhbHVlIHRvIGV4aXN0aW5nIGF0dHJpYnV0ZSB2aWEgc3BhY2UuIE9yIGNyZWF0ZSBuZXcgYXR0cmlidXRlIGlmIG5vdFxuICogZXhpc3RzLiBVc2VmdWwgdG8gb3BlcmF0ZSB3aXRoIHRva2VuIGNsYXNzZXMuXG4gKiovXG5Ub2tlbi5wcm90b3R5cGUuYXR0ckpvaW4gPSBmdW5jdGlvbiBhdHRySm9pbihuYW1lLCB2YWx1ZSkge1xuICB2YXIgaWR4ID0gdGhpcy5hdHRySW5kZXgobmFtZSk7XG5cbiAgaWYgKGlkeCA8IDApIHtcbiAgICB0aGlzLmF0dHJQdXNoKFsgbmFtZSwgdmFsdWUgXSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5hdHRyc1tpZHhdWzFdID0gdGhpcy5hdHRyc1tpZHhdWzFdICsgJyAnICsgdmFsdWU7XG4gIH1cbn07XG5cblxubW9kdWxlLmV4cG9ydHMgPSBUb2tlbjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/markdown-it/lib/token.js\n");
2439
2440/***/ }),
2441
2442/***/ "../../../node_modules/mdurl/decode.js":
2443/*!************************************************************************!*\
2444 !*** /home/runner/work/graphiql/graphiql/node_modules/mdurl/decode.js ***!
2445 \************************************************************************/
2446/*! no static exports found */
2447/***/ (function(module, exports, __webpack_require__) {
2448
2449eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n /* eslint-disable no-bitwise */\n\n var decodeCache = {};\n\n function getDecodeCache(exclude) {\n var i,\n ch,\n cache = decodeCache[exclude];\n\n if (cache) {\n return cache;\n }\n\n cache = decodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n cache.push(ch);\n }\n\n for (i = 0; i < exclude.length; i++) {\n ch = exclude.charCodeAt(i);\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2);\n }\n\n return cache;\n } // Decode percent-encoded string.\n //\n\n\n function decode(string, exclude) {\n var cache;\n\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars;\n }\n\n cache = getDecodeCache(exclude);\n return string.replace(/(%[a-f0-9]{2})+/gi, function (seq) {\n var i,\n l,\n b1,\n b2,\n b3,\n b4,\n chr,\n result = '';\n\n for (i = 0, l = seq.length; i < l; i += 3) {\n b1 = parseInt(seq.slice(i + 1, i + 3), 16);\n\n if (b1 < 0x80) {\n result += cache[b1];\n continue;\n }\n\n if ((b1 & 0xE0) === 0xC0 && i + 3 < l) {\n // 110xxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n\n if ((b2 & 0xC0) === 0x80) {\n chr = b1 << 6 & 0x7C0 | b2 & 0x3F;\n\n if (chr < 0x80) {\n result += '\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 3;\n continue;\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && i + 6 < l) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n chr = b1 << 12 & 0xF000 | b2 << 6 & 0xFC0 | b3 & 0x3F;\n\n if (chr < 0x800 || chr >= 0xD800 && chr <= 0xDFFF) {\n result += '\\ufffd\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 6;\n continue;\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && i + 9 < l) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n b4 = parseInt(seq.slice(i + 10, i + 12), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n chr = b1 << 18 & 0x1C0000 | b2 << 12 & 0x3F000 | b3 << 6 & 0xFC0 | b4 & 0x3F;\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += '\\ufffd\\ufffd\\ufffd\\ufffd';\n } else {\n chr -= 0x10000;\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF));\n }\n\n i += 9;\n continue;\n }\n }\n\n result += '\\ufffd';\n }\n\n return result;\n });\n }\n\n decode.defaultChars = ';/?:@&=+$,#';\n decode.componentChars = '';\n module.exports = decode;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21kdXJsL2RlY29kZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tZHVybC9kZWNvZGUuanM/NjIzNiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbid1c2Ugc3RyaWN0JztcblxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlICovXG5cbnZhciBkZWNvZGVDYWNoZSA9IHt9O1xuXG5mdW5jdGlvbiBnZXREZWNvZGVDYWNoZShleGNsdWRlKSB7XG4gIHZhciBpLCBjaCwgY2FjaGUgPSBkZWNvZGVDYWNoZVtleGNsdWRlXTtcbiAgaWYgKGNhY2hlKSB7IHJldHVybiBjYWNoZTsgfVxuXG4gIGNhY2hlID0gZGVjb2RlQ2FjaGVbZXhjbHVkZV0gPSBbXTtcblxuICBmb3IgKGkgPSAwOyBpIDwgMTI4OyBpKyspIHtcbiAgICBjaCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7XG4gICAgY2FjaGUucHVzaChjaCk7XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgZXhjbHVkZS5sZW5ndGg7IGkrKykge1xuICAgIGNoID0gZXhjbHVkZS5jaGFyQ29kZUF0KGkpO1xuICAgIGNhY2hlW2NoXSA9ICclJyArICgnMCcgKyBjaC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSkuc2xpY2UoLTIpO1xuICB9XG5cbiAgcmV0dXJuIGNhY2hlO1xufVxuXG5cbi8vIERlY29kZSBwZXJjZW50LWVuY29kZWQgc3RyaW5nLlxuLy9cbmZ1bmN0aW9uIGRlY29kZShzdHJpbmcsIGV4Y2x1ZGUpIHtcbiAgdmFyIGNhY2hlO1xuXG4gIGlmICh0eXBlb2YgZXhjbHVkZSAhPT0gJ3N0cmluZycpIHtcbiAgICBleGNsdWRlID0gZGVjb2RlLmRlZmF1bHRDaGFycztcbiAgfVxuXG4gIGNhY2hlID0gZ2V0RGVjb2RlQ2FjaGUoZXhjbHVkZSk7XG5cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8oJVthLWYwLTldezJ9KSsvZ2ksIGZ1bmN0aW9uKHNlcSkge1xuICAgIHZhciBpLCBsLCBiMSwgYjIsIGIzLCBiNCwgY2hyLFxuICAgICAgICByZXN1bHQgPSAnJztcblxuICAgIGZvciAoaSA9IDAsIGwgPSBzZXEubGVuZ3RoOyBpIDwgbDsgaSArPSAzKSB7XG4gICAgICBiMSA9IHBhcnNlSW50KHNlcS5zbGljZShpICsgMSwgaSArIDMpLCAxNik7XG5cbiAgICAgIGlmIChiMSA8IDB4ODApIHtcbiAgICAgICAgcmVzdWx0ICs9IGNhY2hlW2IxXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICgoYjEgJiAweEUwKSA9PT0gMHhDMCAmJiAoaSArIDMgPCBsKSkge1xuICAgICAgICAvLyAxMTB4eHh4eCAxMHh4eHh4eFxuICAgICAgICBiMiA9IHBhcnNlSW50KHNlcS5zbGljZShpICsgNCwgaSArIDYpLCAxNik7XG5cbiAgICAgICAgaWYgKChiMiAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgY2hyID0gKChiMSA8PCA2KSAmIDB4N0MwKSB8IChiMiAmIDB4M0YpO1xuXG4gICAgICAgICAgaWYgKGNociA8IDB4ODApIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSAnXFx1ZmZmZFxcdWZmZmQnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjaHIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGkgKz0gMztcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoKGIxICYgMHhGMCkgPT09IDB4RTAgJiYgKGkgKyA2IDwgbCkpIHtcbiAgICAgICAgLy8gMTExMHh4eHggMTB4eHh4eHggMTB4eHh4eHhcbiAgICAgICAgYjIgPSBwYXJzZUludChzZXEuc2xpY2UoaSArIDQsIGkgKyA2KSwgMTYpO1xuICAgICAgICBiMyA9IHBhcnNlSW50KHNlcS5zbGljZShpICsgNywgaSArIDkpLCAxNik7XG5cbiAgICAgICAgaWYgKChiMiAmIDB4QzApID09PSAweDgwICYmIChiMyAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgY2hyID0gKChiMSA8PCAxMikgJiAweEYwMDApIHwgKChiMiA8PCA2KSAmIDB4RkMwKSB8IChiMyAmIDB4M0YpO1xuXG4gICAgICAgICAgaWYgKGNociA8IDB4ODAwIHx8IChjaHIgPj0gMHhEODAwICYmIGNociA8PSAweERGRkYpKSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gJ1xcdWZmZmRcXHVmZmZkXFx1ZmZmZCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNocik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaSArPSA2O1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICgoYjEgJiAweEY4KSA9PT0gMHhGMCAmJiAoaSArIDkgPCBsKSkge1xuICAgICAgICAvLyAxMTExMTB4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eFxuICAgICAgICBiMiA9IHBhcnNlSW50KHNlcS5zbGljZShpICsgNCwgaSArIDYpLCAxNik7XG4gICAgICAgIGIzID0gcGFyc2VJbnQoc2VxLnNsaWNlKGkgKyA3LCBpICsgOSksIDE2KTtcbiAgICAgICAgYjQgPSBwYXJzZUludChzZXEuc2xpY2UoaSArIDEwLCBpICsgMTIpLCAxNik7XG5cbiAgICAgICAgaWYgKChiMiAmIDB4QzApID09PSAweDgwICYmIChiMyAmIDB4QzApID09PSAweDgwICYmIChiNCAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgY2hyID0gKChiMSA8PCAxOCkgJiAweDFDMDAwMCkgfCAoKGIyIDw8IDEyKSAmIDB4M0YwMDApIHwgKChiMyA8PCA2KSAmIDB4RkMwKSB8IChiNCAmIDB4M0YpO1xuXG4gICAgICAgICAgaWYgKGNociA8IDB4MTAwMDAgfHwgY2hyID4gMHgxMEZGRkYpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSAnXFx1ZmZmZFxcdWZmZmRcXHVmZmZkXFx1ZmZmZCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNociAtPSAweDEwMDAwO1xuICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODAwICsgKGNociA+PiAxMCksIDB4REMwMCArIChjaHIgJiAweDNGRikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGkgKz0gOTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXN1bHQgKz0gJ1xcdWZmZmQnO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5cbmRlY29kZS5kZWZhdWx0Q2hhcnMgICA9ICc7Lz86QCY9KyQsIyc7XG5kZWNvZGUuY29tcG9uZW50Q2hhcnMgPSAnJztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlY29kZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/mdurl/decode.js\n");
2450
2451/***/ }),
2452
2453/***/ "../../../node_modules/mdurl/encode.js":
2454/*!************************************************************************!*\
2455 !*** /home/runner/work/graphiql/graphiql/node_modules/mdurl/encode.js ***!
2456 \************************************************************************/
2457/*! no static exports found */
2458/***/ (function(module, exports, __webpack_require__) {
2459
2460eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n var encodeCache = {}; // Create a lookup array where anything but characters in `chars` string\n // and alphanumeric chars is percent-encoded.\n //\n\n function getEncodeCache(exclude) {\n var i,\n ch,\n cache = encodeCache[exclude];\n\n if (cache) {\n return cache;\n }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n } // Encode unsafe characters with percent-encoding, skipping already\n // encoded sequences.\n //\n // - string - string to encode\n // - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n // - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n //\n\n\n function encode(string, exclude, keepEscaped) {\n var i,\n l,\n code,\n nextCode,\n cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25\n /* % */\n && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n }\n\n encode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\n encode.componentChars = \"-_.!~*'()\";\n module.exports = encode;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21kdXJsL2VuY29kZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tZHVybC9lbmNvZGUuanM/NmZiNiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbid1c2Ugc3RyaWN0JztcblxuXG52YXIgZW5jb2RlQ2FjaGUgPSB7fTtcblxuXG4vLyBDcmVhdGUgYSBsb29rdXAgYXJyYXkgd2hlcmUgYW55dGhpbmcgYnV0IGNoYXJhY3RlcnMgaW4gYGNoYXJzYCBzdHJpbmdcbi8vIGFuZCBhbHBoYW51bWVyaWMgY2hhcnMgaXMgcGVyY2VudC1lbmNvZGVkLlxuLy9cbmZ1bmN0aW9uIGdldEVuY29kZUNhY2hlKGV4Y2x1ZGUpIHtcbiAgdmFyIGksIGNoLCBjYWNoZSA9IGVuY29kZUNhY2hlW2V4Y2x1ZGVdO1xuICBpZiAoY2FjaGUpIHsgcmV0dXJuIGNhY2hlOyB9XG5cbiAgY2FjaGUgPSBlbmNvZGVDYWNoZVtleGNsdWRlXSA9IFtdO1xuXG4gIGZvciAoaSA9IDA7IGkgPCAxMjg7IGkrKykge1xuICAgIGNoID0gU3RyaW5nLmZyb21DaGFyQ29kZShpKTtcblxuICAgIGlmICgvXlswLTlhLXpdJC9pLnRlc3QoY2gpKSB7XG4gICAgICAvLyBhbHdheXMgYWxsb3cgdW5lbmNvZGVkIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzXG4gICAgICBjYWNoZS5wdXNoKGNoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FjaGUucHVzaCgnJScgKyAoJzAnICsgaS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSkuc2xpY2UoLTIpKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgZXhjbHVkZS5sZW5ndGg7IGkrKykge1xuICAgIGNhY2hlW2V4Y2x1ZGUuY2hhckNvZGVBdChpKV0gPSBleGNsdWRlW2ldO1xuICB9XG5cbiAgcmV0dXJuIGNhY2hlO1xufVxuXG5cbi8vIEVuY29kZSB1bnNhZmUgY2hhcmFjdGVycyB3aXRoIHBlcmNlbnQtZW5jb2RpbmcsIHNraXBwaW5nIGFscmVhZHlcbi8vIGVuY29kZWQgc2VxdWVuY2VzLlxuLy9cbi8vICAtIHN0cmluZyAgICAgICAtIHN0cmluZyB0byBlbmNvZGVcbi8vICAtIGV4Y2x1ZGUgICAgICAtIGxpc3Qgb2YgY2hhcmFjdGVycyB0byBpZ25vcmUgKGluIGFkZGl0aW9uIHRvIGEtekEtWjAtOSlcbi8vICAtIGtlZXBFc2NhcGVkICAtIGRvbid0IGVuY29kZSAnJScgaW4gYSBjb3JyZWN0IGVzY2FwZSBzZXF1ZW5jZSAoZGVmYXVsdDogdHJ1ZSlcbi8vXG5mdW5jdGlvbiBlbmNvZGUoc3RyaW5nLCBleGNsdWRlLCBrZWVwRXNjYXBlZCkge1xuICB2YXIgaSwgbCwgY29kZSwgbmV4dENvZGUsIGNhY2hlLFxuICAgICAgcmVzdWx0ID0gJyc7XG5cbiAgaWYgKHR5cGVvZiBleGNsdWRlICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGVuY29kZShzdHJpbmcsIGtlZXBFc2NhcGVkKVxuICAgIGtlZXBFc2NhcGVkICA9IGV4Y2x1ZGU7XG4gICAgZXhjbHVkZSA9IGVuY29kZS5kZWZhdWx0Q2hhcnM7XG4gIH1cblxuICBpZiAodHlwZW9mIGtlZXBFc2NhcGVkID09PSAndW5kZWZpbmVkJykge1xuICAgIGtlZXBFc2NhcGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGNhY2hlID0gZ2V0RW5jb2RlQ2FjaGUoZXhjbHVkZSk7XG5cbiAgZm9yIChpID0gMCwgbCA9IHN0cmluZy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjb2RlID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7XG5cbiAgICBpZiAoa2VlcEVzY2FwZWQgJiYgY29kZSA9PT0gMHgyNSAvKiAlICovICYmIGkgKyAyIDwgbCkge1xuICAgICAgaWYgKC9eWzAtOWEtZl17Mn0kL2kudGVzdChzdHJpbmcuc2xpY2UoaSArIDEsIGkgKyAzKSkpIHtcbiAgICAgICAgcmVzdWx0ICs9IHN0cmluZy5zbGljZShpLCBpICsgMyk7XG4gICAgICAgIGkgKz0gMjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPCAxMjgpIHtcbiAgICAgIHJlc3VsdCArPSBjYWNoZVtjb2RlXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjb2RlID49IDB4RDgwMCAmJiBjb2RlIDw9IDB4REZGRikge1xuICAgICAgaWYgKGNvZGUgPj0gMHhEODAwICYmIGNvZGUgPD0gMHhEQkZGICYmIGkgKyAxIDwgbCkge1xuICAgICAgICBuZXh0Q29kZSA9IHN0cmluZy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgICAgICAgaWYgKG5leHRDb2RlID49IDB4REMwMCAmJiBuZXh0Q29kZSA8PSAweERGRkYpIHtcbiAgICAgICAgICByZXN1bHQgKz0gZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ1tpXSArIHN0cmluZ1tpICsgMV0pO1xuICAgICAgICAgIGkrKztcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzdWx0ICs9ICclRUYlQkYlQkQnO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgcmVzdWx0ICs9IGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZW5jb2RlLmRlZmF1bHRDaGFycyAgID0gXCI7Lz86QCY9KyQsLV8uIX4qJygpI1wiO1xuZW5jb2RlLmNvbXBvbmVudENoYXJzID0gXCItXy4hfionKClcIjtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGVuY29kZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFDQTtBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/mdurl/encode.js\n");
2461
2462/***/ }),
2463
2464/***/ "../../../node_modules/mdurl/format.js":
2465/*!************************************************************************!*\
2466 !*** /home/runner/work/graphiql/graphiql/node_modules/mdurl/format.js ***!
2467 \************************************************************************/
2468/*! no static exports found */
2469/***/ (function(module, exports, __webpack_require__) {
2470
2471eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n module.exports = function format(url) {\n var result = '';\n result += url.protocol || '';\n result += url.slashes ? '//' : '';\n result += url.auth ? url.auth + '@' : '';\n\n if (url.hostname && url.hostname.indexOf(':') !== -1) {\n // ipv6 address\n result += '[' + url.hostname + ']';\n } else {\n result += url.hostname || '';\n }\n\n result += url.port ? ':' + url.port : '';\n result += url.pathname || '';\n result += url.search || '';\n result += url.hash || '';\n return result;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21kdXJsL2Zvcm1hdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9tZHVybC9mb3JtYXQuanM/OTgyZiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbid1c2Ugc3RyaWN0JztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZvcm1hdCh1cmwpIHtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuXG4gIHJlc3VsdCArPSB1cmwucHJvdG9jb2wgfHwgJyc7XG4gIHJlc3VsdCArPSB1cmwuc2xhc2hlcyA/ICcvLycgOiAnJztcbiAgcmVzdWx0ICs9IHVybC5hdXRoID8gdXJsLmF1dGggKyAnQCcgOiAnJztcblxuICBpZiAodXJsLmhvc3RuYW1lICYmIHVybC5ob3N0bmFtZS5pbmRleE9mKCc6JykgIT09IC0xKSB7XG4gICAgLy8gaXB2NiBhZGRyZXNzXG4gICAgcmVzdWx0ICs9ICdbJyArIHVybC5ob3N0bmFtZSArICddJztcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgKz0gdXJsLmhvc3RuYW1lIHx8ICcnO1xuICB9XG5cbiAgcmVzdWx0ICs9IHVybC5wb3J0ID8gJzonICsgdXJsLnBvcnQgOiAnJztcbiAgcmVzdWx0ICs9IHVybC5wYXRobmFtZSB8fCAnJztcbiAgcmVzdWx0ICs9IHVybC5zZWFyY2ggfHwgJyc7XG4gIHJlc3VsdCArPSB1cmwuaGFzaCB8fCAnJztcblxuICByZXR1cm4gcmVzdWx0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/mdurl/format.js\n");
2472
2473/***/ }),
2474
2475/***/ "../../../node_modules/mdurl/index.js":
2476/*!***********************************************************************!*\
2477 !*** /home/runner/work/graphiql/graphiql/node_modules/mdurl/index.js ***!
2478 \***********************************************************************/
2479/*! no static exports found */
2480/***/ (function(module, exports, __webpack_require__) {
2481
2482eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n module.exports.encode = __webpack_require__(/*! ./encode */ \"../../../node_modules/mdurl/encode.js\");\n module.exports.decode = __webpack_require__(/*! ./decode */ \"../../../node_modules/mdurl/decode.js\");\n module.exports.format = __webpack_require__(/*! ./format */ \"../../../node_modules/mdurl/format.js\");\n module.exports.parse = __webpack_require__(/*! ./parse */ \"../../../node_modules/mdurl/parse.js\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21kdXJsL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21kdXJsL2luZGV4LmpzPzg0ZWYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzLmVuY29kZSA9IHJlcXVpcmUoJy4vZW5jb2RlJyk7XG5tb2R1bGUuZXhwb3J0cy5kZWNvZGUgPSByZXF1aXJlKCcuL2RlY29kZScpO1xubW9kdWxlLmV4cG9ydHMuZm9ybWF0ID0gcmVxdWlyZSgnLi9mb3JtYXQnKTtcbm1vZHVsZS5leHBvcnRzLnBhcnNlICA9IHJlcXVpcmUoJy4vcGFyc2UnKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/mdurl/index.js\n");
2483
2484/***/ }),
2485
2486/***/ "../../../node_modules/mdurl/parse.js":
2487/*!***********************************************************************!*\
2488 !*** /home/runner/work/graphiql/graphiql/node_modules/mdurl/parse.js ***!
2489 \***********************************************************************/
2490/*! no static exports found */
2491/***/ (function(module, exports, __webpack_require__) {
2492
2493eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n // Copyright Joyent, Inc. and other Node contributors.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a\n // copy of this software and associated documentation files (the\n // \"Software\"), to deal in the Software without restriction, including\n // without limitation the rights to use, copy, modify, merge, publish,\n // distribute, sublicense, and/or sell copies of the Software, and to permit\n // persons to whom the Software is furnished to do so, subject to the\n // following conditions:\n //\n // The above copyright notice and this permission notice shall be included\n // in all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n // USE OR OTHER DEALINGS IN THE SOFTWARE.\n 'use strict'; //\n // Changes from joyent/node:\n //\n // 1. No leading slash in paths,\n // e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n //\n // 2. Backslashes are not replaced with slashes,\n // so `http:\\\\example.org\\` is treated like a relative path\n //\n // 3. Trailing colon is treated like a part of the path,\n // i.e. in `http://example.org:foo` pathname is `:foo`\n //\n // 4. Nothing is URL-encoded in the resulting object,\n // (in joyent/node some chars in auth and paths are encoded)\n //\n // 5. `url.parse()` does not have `parseQueryString` argument\n //\n // 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n // which can be constructed using other parts of the url.\n //\n\n function Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.pathname = null;\n } // Reference: RFC 3986, RFC 1808, RFC 2396\n // define these here so at least they only have to be\n // compiled once on the first module load.\n\n\n var protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n\n /* eslint-disable no-script-url */\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n };\n /* eslint-enable no-script-url */\n\n function urlParse(url, slashesDenoteHost) {\n if (url && url instanceof Url) {\n return url;\n }\n\n var u = new Url();\n u.parse(url, slashesDenoteHost);\n return u;\n }\n\n Url.prototype.parse = function (url, slashesDenoteHost) {\n var i,\n l,\n lowerProto,\n hec,\n slashes,\n rest = url; // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n\n if (simplePath) {\n this.pathname = simplePath[1];\n\n if (simplePath[2]) {\n this.search = simplePath[2];\n }\n\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n\n if (proto) {\n proto = proto[0];\n lowerProto = proto.toLowerCase();\n this.protocol = proto;\n rest = rest.substr(proto.length);\n } // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n\n\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n slashes = rest.substr(0, 2) === '//';\n\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n\n for (i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i]);\n\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n } // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n\n\n var auth, atSign;\n\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n } // Now we have a portion which is definitely the auth.\n // Pull that off.\n\n\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = auth;\n } // the host is the remaining to the left of the first non-host char\n\n\n hostEnd = -1;\n\n for (i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i]);\n\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n } // if we still have not hit it, then the entire thing is a host.\n\n\n if (hostEnd === -1) {\n hostEnd = rest.length;\n }\n\n if (rest[hostEnd - 1] === ':') {\n hostEnd--;\n }\n\n var host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd); // pull out port.\n\n this.parseHost(host); // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n\n this.hostname = this.hostname || ''; // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']'; // validate a little.\n\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n\n for (i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n\n if (!part) {\n continue;\n }\n\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n } // we test again with ASCII char only\n\n\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n\n if (notHost.length) {\n rest = notHost.join('.') + rest;\n }\n\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } // strip [ and ] from the hostname\n // the host field still retains them, though\n\n\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n }\n } // chop off from the tail first.\n\n\n var hash = rest.indexOf('#');\n\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n\n var qm = rest.indexOf('?');\n\n if (qm !== -1) {\n this.search = rest.substr(qm);\n rest = rest.slice(0, qm);\n }\n\n if (rest) {\n this.pathname = rest;\n }\n\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '';\n }\n\n return this;\n };\n\n Url.prototype.parseHost = function (host) {\n var port = portPattern.exec(host);\n\n if (port) {\n port = port[0];\n\n if (port !== ':') {\n this.port = port.substr(1);\n }\n\n host = host.substr(0, host.length - port.length);\n }\n\n if (host) {\n this.hostname = host;\n }\n };\n\n module.exports = urlParse;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21kdXJsL3BhcnNlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21kdXJsL3BhcnNlLmpzP2Q4MTIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuLy9cbi8vIENoYW5nZXMgZnJvbSBqb3llbnQvbm9kZTpcbi8vXG4vLyAxLiBObyBsZWFkaW5nIHNsYXNoIGluIHBhdGhzLFxuLy8gICAgZS5nLiBpbiBgdXJsLnBhcnNlKCdodHRwOi8vZm9vP2JhcicpYCBwYXRobmFtZSBpcyBgYCwgbm90IGAvYFxuLy9cbi8vIDIuIEJhY2tzbGFzaGVzIGFyZSBub3QgcmVwbGFjZWQgd2l0aCBzbGFzaGVzLFxuLy8gICAgc28gYGh0dHA6XFxcXGV4YW1wbGUub3JnXFxgIGlzIHRyZWF0ZWQgbGlrZSBhIHJlbGF0aXZlIHBhdGhcbi8vXG4vLyAzLiBUcmFpbGluZyBjb2xvbiBpcyB0cmVhdGVkIGxpa2UgYSBwYXJ0IG9mIHRoZSBwYXRoLFxuLy8gICAgaS5lLiBpbiBgaHR0cDovL2V4YW1wbGUub3JnOmZvb2AgcGF0aG5hbWUgaXMgYDpmb29gXG4vL1xuLy8gNC4gTm90aGluZyBpcyBVUkwtZW5jb2RlZCBpbiB0aGUgcmVzdWx0aW5nIG9iamVjdCxcbi8vICAgIChpbiBqb3llbnQvbm9kZSBzb21lIGNoYXJzIGluIGF1dGggYW5kIHBhdGhzIGFyZSBlbmNvZGVkKVxuLy9cbi8vIDUuIGB1cmwucGFyc2UoKWAgZG9lcyBub3QgaGF2ZSBgcGFyc2VRdWVyeVN0cmluZ2AgYXJndW1lbnRcbi8vXG4vLyA2LiBSZW1vdmVkIGV4dHJhbmVvdXMgcmVzdWx0IHByb3BlcnRpZXM6IGBob3N0YCwgYHBhdGhgLCBgcXVlcnlgLCBldGMuLFxuLy8gICAgd2hpY2ggY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIG90aGVyIHBhcnRzIG9mIHRoZSB1cmwuXG4vL1xuXG5cbmZ1bmN0aW9uIFVybCgpIHtcbiAgdGhpcy5wcm90b2NvbCA9IG51bGw7XG4gIHRoaXMuc2xhc2hlcyA9IG51bGw7XG4gIHRoaXMuYXV0aCA9IG51bGw7XG4gIHRoaXMucG9ydCA9IG51bGw7XG4gIHRoaXMuaG9zdG5hbWUgPSBudWxsO1xuICB0aGlzLmhhc2ggPSBudWxsO1xuICB0aGlzLnNlYXJjaCA9IG51bGw7XG4gIHRoaXMucGF0aG5hbWUgPSBudWxsO1xufVxuXG4vLyBSZWZlcmVuY2U6IFJGQyAzOTg2LCBSRkMgMTgwOCwgUkZDIDIzOTZcblxuLy8gZGVmaW5lIHRoZXNlIGhlcmUgc28gYXQgbGVhc3QgdGhleSBvbmx5IGhhdmUgdG8gYmVcbi8vIGNvbXBpbGVkIG9uY2Ugb24gdGhlIGZpcnN0IG1vZHVsZSBsb2FkLlxudmFyIHByb3RvY29sUGF0dGVybiA9IC9eKFthLXowLTkuKy1dKzopL2ksXG4gICAgcG9ydFBhdHRlcm4gPSAvOlswLTldKiQvLFxuXG4gICAgLy8gU3BlY2lhbCBjYXNlIGZvciBhIHNpbXBsZSBwYXRoIFVSTFxuICAgIHNpbXBsZVBhdGhQYXR0ZXJuID0gL14oXFwvXFwvPyg/IVxcLylbXlxcP1xcc10qKShcXD9bXlxcc10qKT8kLyxcblxuICAgIC8vIFJGQyAyMzk2OiBjaGFyYWN0ZXJzIHJlc2VydmVkIGZvciBkZWxpbWl0aW5nIFVSTHMuXG4gICAgLy8gV2UgYWN0dWFsbHkganVzdCBhdXRvLWVzY2FwZSB0aGVzZS5cbiAgICBkZWxpbXMgPSBbICc8JywgJz4nLCAnXCInLCAnYCcsICcgJywgJ1xccicsICdcXG4nLCAnXFx0JyBdLFxuXG4gICAgLy8gUkZDIDIzOTY6IGNoYXJhY3RlcnMgbm90IGFsbG93ZWQgZm9yIHZhcmlvdXMgcmVhc29ucy5cbiAgICB1bndpc2UgPSBbICd7JywgJ30nLCAnfCcsICdcXFxcJywgJ14nLCAnYCcgXS5jb25jYXQoZGVsaW1zKSxcblxuICAgIC8vIEFsbG93ZWQgYnkgUkZDcywgYnV0IGNhdXNlIG9mIFhTUyBhdHRhY2tzLiAgQWx3YXlzIGVzY2FwZSB0aGVzZS5cbiAgICBhdXRvRXNjYXBlID0gWyAnXFwnJyBdLmNvbmNhdCh1bndpc2UpLFxuICAgIC8vIENoYXJhY3RlcnMgdGhhdCBhcmUgbmV2ZXIgZXZlciBhbGxvd2VkIGluIGEgaG9zdG5hbWUuXG4gICAgLy8gTm90ZSB0aGF0IGFueSBpbnZhbGlkIGNoYXJzIGFyZSBhbHNvIGhhbmRsZWQsIGJ1dCB0aGVzZVxuICAgIC8vIGFyZSB0aGUgb25lcyB0aGF0IGFyZSAqZXhwZWN0ZWQqIHRvIGJlIHNlZW4sIHNvIHdlIGZhc3QtcGF0aFxuICAgIC8vIHRoZW0uXG4gICAgbm9uSG9zdENoYXJzID0gWyAnJScsICcvJywgJz8nLCAnOycsICcjJyBdLmNvbmNhdChhdXRvRXNjYXBlKSxcbiAgICBob3N0RW5kaW5nQ2hhcnMgPSBbICcvJywgJz8nLCAnIycgXSxcbiAgICBob3N0bmFtZU1heExlbiA9IDI1NSxcbiAgICBob3N0bmFtZVBhcnRQYXR0ZXJuID0gL15bK2EtejAtOUEtWl8tXXswLDYzfSQvLFxuICAgIGhvc3RuYW1lUGFydFN0YXJ0ID0gL14oWythLXowLTlBLVpfLV17MCw2M30pKC4qKSQvLFxuICAgIC8vIHByb3RvY29scyB0aGF0IGNhbiBhbGxvdyBcInVuc2FmZVwiIGFuZCBcInVud2lzZVwiIGNoYXJzLlxuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXNjcmlwdC11cmwgKi9cbiAgICAvLyBwcm90b2NvbHMgdGhhdCBuZXZlciBoYXZlIGEgaG9zdG5hbWUuXG4gICAgaG9zdGxlc3NQcm90b2NvbCA9IHtcbiAgICAgICdqYXZhc2NyaXB0JzogdHJ1ZSxcbiAgICAgICdqYXZhc2NyaXB0Oic6IHRydWVcbiAgICB9LFxuICAgIC8vIHByb3RvY29scyB0aGF0IGFsd2F5cyBjb250YWluIGEgLy8gYml0LlxuICAgIHNsYXNoZWRQcm90b2NvbCA9IHtcbiAgICAgICdodHRwJzogdHJ1ZSxcbiAgICAgICdodHRwcyc6IHRydWUsXG4gICAgICAnZnRwJzogdHJ1ZSxcbiAgICAgICdnb3BoZXInOiB0cnVlLFxuICAgICAgJ2ZpbGUnOiB0cnVlLFxuICAgICAgJ2h0dHA6JzogdHJ1ZSxcbiAgICAgICdodHRwczonOiB0cnVlLFxuICAgICAgJ2Z0cDonOiB0cnVlLFxuICAgICAgJ2dvcGhlcjonOiB0cnVlLFxuICAgICAgJ2ZpbGU6JzogdHJ1ZVxuICAgIH07XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby1zY3JpcHQtdXJsICovXG5cbmZ1bmN0aW9uIHVybFBhcnNlKHVybCwgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgaWYgKHVybCAmJiB1cmwgaW5zdGFuY2VvZiBVcmwpIHsgcmV0dXJuIHVybDsgfVxuXG4gIHZhciB1ID0gbmV3IFVybCgpO1xuICB1LnBhcnNlKHVybCwgc2xhc2hlc0Rlbm90ZUhvc3QpO1xuICByZXR1cm4gdTtcbn1cblxuVXJsLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uKHVybCwgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgdmFyIGksIGwsIGxvd2VyUHJvdG8sIGhlYywgc2xhc2hlcyxcbiAgICAgIHJlc3QgPSB1cmw7XG5cbiAgLy8gdHJpbSBiZWZvcmUgcHJvY2VlZGluZy5cbiAgLy8gVGhpcyBpcyB0byBzdXBwb3J0IHBhcnNlIHN0dWZmIGxpa2UgXCIgIGh0dHA6Ly9mb28uY29tICBcXG5cIlxuICByZXN0ID0gcmVzdC50cmltKCk7XG5cbiAgaWYgKCFzbGFzaGVzRGVub3RlSG9zdCAmJiB1cmwuc3BsaXQoJyMnKS5sZW5ndGggPT09IDEpIHtcbiAgICAvLyBUcnkgZmFzdCBwYXRoIHJlZ2V4cFxuICAgIHZhciBzaW1wbGVQYXRoID0gc2ltcGxlUGF0aFBhdHRlcm4uZXhlYyhyZXN0KTtcbiAgICBpZiAoc2ltcGxlUGF0aCkge1xuICAgICAgdGhpcy5wYXRobmFtZSA9IHNpbXBsZVBhdGhbMV07XG4gICAgICBpZiAoc2ltcGxlUGF0aFsyXSkge1xuICAgICAgICB0aGlzLnNlYXJjaCA9IHNpbXBsZVBhdGhbMl07XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1cblxuICB2YXIgcHJvdG8gPSBwcm90b2NvbFBhdHRlcm4uZXhlYyhyZXN0KTtcbiAgaWYgKHByb3RvKSB7XG4gICAgcHJvdG8gPSBwcm90b1swXTtcbiAgICBsb3dlclByb3RvID0gcHJvdG8udG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLnByb3RvY29sID0gcHJvdG87XG4gICAgcmVzdCA9IHJlc3Quc3Vic3RyKHByb3RvLmxlbmd0aCk7XG4gIH1cblxuICAvLyBmaWd1cmUgb3V0IGlmIGl0J3MgZ290IGEgaG9zdFxuICAvLyB1c2VyQHNlcnZlciBpcyAqYWx3YXlzKiBpbnRlcnByZXRlZCBhcyBhIGhvc3RuYW1lLCBhbmQgdXJsXG4gIC8vIHJlc29sdXRpb24gd2lsbCB0cmVhdCAvL2Zvby9iYXIgYXMgaG9zdD1mb28scGF0aD1iYXIgYmVjYXVzZSB0aGF0J3NcbiAgLy8gaG93IHRoZSBicm93c2VyIHJlc29sdmVzIHJlbGF0aXZlIFVSTHMuXG4gIGlmIChzbGFzaGVzRGVub3RlSG9zdCB8fCBwcm90byB8fCByZXN0Lm1hdGNoKC9eXFwvXFwvW15AXFwvXStAW15AXFwvXSsvKSkge1xuICAgIHNsYXNoZXMgPSByZXN0LnN1YnN0cigwLCAyKSA9PT0gJy8vJztcbiAgICBpZiAoc2xhc2hlcyAmJiAhKHByb3RvICYmIGhvc3RsZXNzUHJvdG9jb2xbcHJvdG9dKSkge1xuICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKDIpO1xuICAgICAgdGhpcy5zbGFzaGVzID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWhvc3RsZXNzUHJvdG9jb2xbcHJvdG9dICYmXG4gICAgICAoc2xhc2hlcyB8fCAocHJvdG8gJiYgIXNsYXNoZWRQcm90b2NvbFtwcm90b10pKSkge1xuXG4gICAgLy8gdGhlcmUncyBhIGhvc3RuYW1lLlxuICAgIC8vIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiAvLCA/LCA7LCBvciAjIGVuZHMgdGhlIGhvc3QuXG4gICAgLy9cbiAgICAvLyBJZiB0aGVyZSBpcyBhbiBAIGluIHRoZSBob3N0bmFtZSwgdGhlbiBub24taG9zdCBjaGFycyAqYXJlKiBhbGxvd2VkXG4gICAgLy8gdG8gdGhlIGxlZnQgb2YgdGhlIGxhc3QgQCBzaWduLCB1bmxlc3Mgc29tZSBob3N0LWVuZGluZyBjaGFyYWN0ZXJcbiAgICAvLyBjb21lcyAqYmVmb3JlKiB0aGUgQC1zaWduLlxuICAgIC8vIFVSTHMgYXJlIG9ibm94aW91cy5cbiAgICAvL1xuICAgIC8vIGV4OlxuICAgIC8vIGh0dHA6Ly9hQGJAYy8gPT4gdXNlcjphQGIgaG9zdDpjXG4gICAgLy8gaHR0cDovL2FAYj9AYyA9PiB1c2VyOmEgaG9zdDpjIHBhdGg6Lz9AY1xuXG4gICAgLy8gdjAuMTIgVE9ETyhpc2FhY3MpOiBUaGlzIGlzIG5vdCBxdWl0ZSBob3cgQ2hyb21lIGRvZXMgdGhpbmdzLlxuICAgIC8vIFJldmlldyBvdXIgdGVzdCBjYXNlIGFnYWluc3QgYnJvd3NlcnMgbW9yZSBjb21wcmVoZW5zaXZlbHkuXG5cbiAgICAvLyBmaW5kIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiBhbnkgaG9zdEVuZGluZ0NoYXJzXG4gICAgdmFyIGhvc3RFbmQgPSAtMTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgaG9zdEVuZGluZ0NoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBoZWMgPSByZXN0LmluZGV4T2YoaG9zdEVuZGluZ0NoYXJzW2ldKTtcbiAgICAgIGlmIChoZWMgIT09IC0xICYmIChob3N0RW5kID09PSAtMSB8fCBoZWMgPCBob3N0RW5kKSkge1xuICAgICAgICBob3N0RW5kID0gaGVjO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGF0IHRoaXMgcG9pbnQsIGVpdGhlciB3ZSBoYXZlIGFuIGV4cGxpY2l0IHBvaW50IHdoZXJlIHRoZVxuICAgIC8vIGF1dGggcG9ydGlvbiBjYW5ub3QgZ28gcGFzdCwgb3IgdGhlIGxhc3QgQCBjaGFyIGlzIHRoZSBkZWNpZGVyLlxuICAgIHZhciBhdXRoLCBhdFNpZ247XG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKSB7XG4gICAgICAvLyBhdFNpZ24gY2FuIGJlIGFueXdoZXJlLlxuICAgICAgYXRTaWduID0gcmVzdC5sYXN0SW5kZXhPZignQCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBhdFNpZ24gbXVzdCBiZSBpbiBhdXRoIHBvcnRpb24uXG4gICAgICAvLyBodHRwOi8vYUBiL2NAZCA9PiBob3N0OmIgYXV0aDphIHBhdGg6L2NAZFxuICAgICAgYXRTaWduID0gcmVzdC5sYXN0SW5kZXhPZignQCcsIGhvc3RFbmQpO1xuICAgIH1cblxuICAgIC8vIE5vdyB3ZSBoYXZlIGEgcG9ydGlvbiB3aGljaCBpcyBkZWZpbml0ZWx5IHRoZSBhdXRoLlxuICAgIC8vIFB1bGwgdGhhdCBvZmYuXG4gICAgaWYgKGF0U2lnbiAhPT0gLTEpIHtcbiAgICAgIGF1dGggPSByZXN0LnNsaWNlKDAsIGF0U2lnbik7XG4gICAgICByZXN0ID0gcmVzdC5zbGljZShhdFNpZ24gKyAxKTtcbiAgICAgIHRoaXMuYXV0aCA9IGF1dGg7XG4gICAgfVxuXG4gICAgLy8gdGhlIGhvc3QgaXMgdGhlIHJlbWFpbmluZyB0byB0aGUgbGVmdCBvZiB0aGUgZmlyc3Qgbm9uLWhvc3QgY2hhclxuICAgIGhvc3RFbmQgPSAtMTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbm9uSG9zdENoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBoZWMgPSByZXN0LmluZGV4T2Yobm9uSG9zdENoYXJzW2ldKTtcbiAgICAgIGlmIChoZWMgIT09IC0xICYmIChob3N0RW5kID09PSAtMSB8fCBoZWMgPCBob3N0RW5kKSkge1xuICAgICAgICBob3N0RW5kID0gaGVjO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBpZiB3ZSBzdGlsbCBoYXZlIG5vdCBoaXQgaXQsIHRoZW4gdGhlIGVudGlyZSB0aGluZyBpcyBhIGhvc3QuXG4gICAgaWYgKGhvc3RFbmQgPT09IC0xKSB7XG4gICAgICBob3N0RW5kID0gcmVzdC5sZW5ndGg7XG4gICAgfVxuXG4gICAgaWYgKHJlc3RbaG9zdEVuZCAtIDFdID09PSAnOicpIHsgaG9zdEVuZC0tOyB9XG4gICAgdmFyIGhvc3QgPSByZXN0LnNsaWNlKDAsIGhvc3RFbmQpO1xuICAgIHJlc3QgPSByZXN0LnNsaWNlKGhvc3RFbmQpO1xuXG4gICAgLy8gcHVsbCBvdXQgcG9ydC5cbiAgICB0aGlzLnBhcnNlSG9zdChob3N0KTtcblxuICAgIC8vIHdlJ3ZlIGluZGljYXRlZCB0aGF0IHRoZXJlIGlzIGEgaG9zdG5hbWUsXG4gICAgLy8gc28gZXZlbiBpZiBpdCdzIGVtcHR5LCBpdCBoYXMgdG8gYmUgcHJlc2VudC5cbiAgICB0aGlzLmhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZSB8fCAnJztcblxuICAgIC8vIGlmIGhvc3RuYW1lIGJlZ2lucyB3aXRoIFsgYW5kIGVuZHMgd2l0aCBdXG4gICAgLy8gYXNzdW1lIHRoYXQgaXQncyBhbiBJUHY2IGFkZHJlc3MuXG4gICAgdmFyIGlwdjZIb3N0bmFtZSA9IHRoaXMuaG9zdG5hbWVbMF0gPT09ICdbJyAmJlxuICAgICAgICB0aGlzLmhvc3RuYW1lW3RoaXMuaG9zdG5hbWUubGVuZ3RoIC0gMV0gPT09ICddJztcblxuICAgIC8vIHZhbGlkYXRlIGEgbGl0dGxlLlxuICAgIGlmICghaXB2Nkhvc3RuYW1lKSB7XG4gICAgICB2YXIgaG9zdHBhcnRzID0gdGhpcy5ob3N0bmFtZS5zcGxpdCgvXFwuLyk7XG4gICAgICBmb3IgKGkgPSAwLCBsID0gaG9zdHBhcnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB2YXIgcGFydCA9IGhvc3RwYXJ0c1tpXTtcbiAgICAgICAgaWYgKCFwYXJ0KSB7IGNvbnRpbnVlOyB9XG4gICAgICAgIGlmICghcGFydC5tYXRjaChob3N0bmFtZVBhcnRQYXR0ZXJuKSkge1xuICAgICAgICAgIHZhciBuZXdwYXJ0ID0gJyc7XG4gICAgICAgICAgZm9yICh2YXIgaiA9IDAsIGsgPSBwYXJ0Lmxlbmd0aDsgaiA8IGs7IGorKykge1xuICAgICAgICAgICAgaWYgKHBhcnQuY2hhckNvZGVBdChqKSA+IDEyNykge1xuICAgICAgICAgICAgICAvLyB3ZSByZXBsYWNlIG5vbi1BU0NJSSBjaGFyIHdpdGggYSB0ZW1wb3JhcnkgcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0aGlzIHRvIG1ha2Ugc3VyZSBzaXplIG9mIGhvc3RuYW1lIGlzIG5vdFxuICAgICAgICAgICAgICAvLyBicm9rZW4gYnkgcmVwbGFjaW5nIG5vbi1BU0NJSSBieSBub3RoaW5nXG4gICAgICAgICAgICAgIG5ld3BhcnQgKz0gJ3gnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmV3cGFydCArPSBwYXJ0W2pdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB3ZSB0ZXN0IGFnYWluIHdpdGggQVNDSUkgY2hhciBvbmx5XG4gICAgICAgICAgaWYgKCFuZXdwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFBhdHRlcm4pKSB7XG4gICAgICAgICAgICB2YXIgdmFsaWRQYXJ0cyA9IGhvc3RwYXJ0cy5zbGljZSgwLCBpKTtcbiAgICAgICAgICAgIHZhciBub3RIb3N0ID0gaG9zdHBhcnRzLnNsaWNlKGkgKyAxKTtcbiAgICAgICAgICAgIHZhciBiaXQgPSBwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFN0YXJ0KTtcbiAgICAgICAgICAgIGlmIChiaXQpIHtcbiAgICAgICAgICAgICAgdmFsaWRQYXJ0cy5wdXNoKGJpdFsxXSk7XG4gICAgICAgICAgICAgIG5vdEhvc3QudW5zaGlmdChiaXRbMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vdEhvc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJlc3QgPSBub3RIb3N0LmpvaW4oJy4nKSArIHJlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmhvc3RuYW1lID0gdmFsaWRQYXJ0cy5qb2luKCcuJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5ob3N0bmFtZS5sZW5ndGggPiBob3N0bmFtZU1heExlbikge1xuICAgICAgdGhpcy5ob3N0bmFtZSA9ICcnO1xuICAgIH1cblxuICAgIC8vIHN0cmlwIFsgYW5kIF0gZnJvbSB0aGUgaG9zdG5hbWVcbiAgICAvLyB0aGUgaG9zdCBmaWVsZCBzdGlsbCByZXRhaW5zIHRoZW0sIHRob3VnaFxuICAgIGlmIChpcHY2SG9zdG5hbWUpIHtcbiAgICAgIHRoaXMuaG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lLnN1YnN0cigxLCB0aGlzLmhvc3RuYW1lLmxlbmd0aCAtIDIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGNob3Agb2ZmIGZyb20gdGhlIHRhaWwgZmlyc3QuXG4gIHZhciBoYXNoID0gcmVzdC5pbmRleE9mKCcjJyk7XG4gIGlmIChoYXNoICE9PSAtMSkge1xuICAgIC8vIGdvdCBhIGZyYWdtZW50IHN0cmluZy5cbiAgICB0aGlzLmhhc2ggPSByZXN0LnN1YnN0cihoYXNoKTtcbiAgICByZXN0ID0gcmVzdC5zbGljZSgwLCBoYXNoKTtcbiAgfVxuICB2YXIgcW0gPSByZXN0LmluZGV4T2YoJz8nKTtcbiAgaWYgKHFtICE9PSAtMSkge1xuICAgIHRoaXMuc2VhcmNoID0gcmVzdC5zdWJzdHIocW0pO1xuICAgIHJlc3QgPSByZXN0LnNsaWNlKDAsIHFtKTtcbiAgfVxuICBpZiAocmVzdCkgeyB0aGlzLnBhdGhuYW1lID0gcmVzdDsgfVxuICBpZiAoc2xhc2hlZFByb3RvY29sW2xvd2VyUHJvdG9dICYmXG4gICAgICB0aGlzLmhvc3RuYW1lICYmICF0aGlzLnBhdGhuYW1lKSB7XG4gICAgdGhpcy5wYXRobmFtZSA9ICcnO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5VcmwucHJvdG90eXBlLnBhcnNlSG9zdCA9IGZ1bmN0aW9uKGhvc3QpIHtcbiAgdmFyIHBvcnQgPSBwb3J0UGF0dGVybi5leGVjKGhvc3QpO1xuICBpZiAocG9ydCkge1xuICAgIHBvcnQgPSBwb3J0WzBdO1xuICAgIGlmIChwb3J0ICE9PSAnOicpIHtcbiAgICAgIHRoaXMucG9ydCA9IHBvcnQuc3Vic3RyKDEpO1xuICAgIH1cbiAgICBob3N0ID0gaG9zdC5zdWJzdHIoMCwgaG9zdC5sZW5ndGggLSBwb3J0Lmxlbmd0aCk7XG4gIH1cbiAgaWYgKGhvc3QpIHsgdGhpcy5ob3N0bmFtZSA9IGhvc3Q7IH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gdXJsUGFyc2U7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFJQTtBQUpBO0FBT0E7QUFDQTtBQVJBO0FBV0E7QUFYQTtBQWNBO0FBZEE7QUFnQkE7QUFDQTtBQUNBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBd0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQTNCQTtBQWdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVkE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/mdurl/parse.js\n");
2494
2495/***/ }),
2496
2497/***/ "../../../node_modules/meros/browser/index.mjs":
2498/*!********************************************************************************!*\
2499 !*** /home/runner/work/graphiql/graphiql/node_modules/meros/browser/index.mjs ***!
2500 \********************************************************************************/
2501/*! exports provided: meros */
2502/***/ (function(module, __webpack_exports__, __webpack_require__) {
2503
2504"use strict";
2505eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"meros\", function() { return meros; });\nconst separator = '\\r\\n\\r\\n';\r\nconst decoder = new TextDecoder;\r\nasync function* generate(stream, boundary, options) {\r\n const reader = stream.getReader(), is_eager = !options || !options.multiple;\r\n let buffer = '', is_preamble = true, payloads = [];\r\n try {\r\n let result;\r\n outer: while (!(result = await reader.read()).done) {\r\n const chunk = decoder.decode(result.value);\r\n const idx_chunk = chunk.indexOf(boundary);\r\n let idx_boundary = buffer.length;\r\n buffer += chunk;\r\n if (!!~idx_chunk) {\r\n // chunk itself had `boundary` marker\r\n idx_boundary += idx_chunk;\r\n }\r\n else {\r\n // search combined (boundary can be across chunks)\r\n idx_boundary = buffer.indexOf(boundary);\r\n }\r\n payloads = [];\r\n while (!!~idx_boundary) {\r\n const current = buffer.substring(0, idx_boundary);\r\n const next = buffer.substring(idx_boundary + boundary.length);\r\n if (is_preamble) {\r\n is_preamble = false;\r\n }\r\n else {\r\n const headers = {};\r\n const idx_headers = current.indexOf(separator);\r\n const arr_headers = buffer.slice(0, idx_headers).toString().trim().split(/\\r\\n/);\r\n // parse headers\r\n let tmp;\r\n while (tmp = arr_headers.shift()) {\r\n tmp = tmp.split(': ');\r\n headers[tmp.shift().toLowerCase()] = tmp.join(': ');\r\n }\r\n let body = current.substring(idx_headers + separator.length, current.lastIndexOf('\\r\\n'));\r\n let is_json = false;\r\n tmp = headers['content-type'];\r\n if (tmp && !!~tmp.indexOf('application/json')) {\r\n try {\r\n body = JSON.parse(body);\r\n is_json = true;\r\n }\r\n catch (_) {\r\n }\r\n }\r\n tmp = { headers, body, json: is_json };\r\n is_eager ? yield tmp : payloads.push(tmp);\r\n // hit a tail boundary, break\r\n if (next.substring(0, 2) === '--')\r\n break outer;\r\n }\r\n buffer = next;\r\n idx_boundary = buffer.indexOf(boundary);\r\n }\r\n if (payloads.length)\r\n yield payloads;\r\n }\r\n }\r\n finally {\r\n if (payloads.length)\r\n yield payloads;\r\n reader.releaseLock();\r\n }\r\n}\n\n/**\r\n * Yield immediately for every part made available on the response. If the `content-type` of the response isn't a\r\n * multipart body, then we'll resolve with {@link Response}.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * const parts = await fetch('/fetch-multipart')\r\n * .then(meros);\r\n *\r\n * for await (const part of parts) {\r\n * // do something with this part\r\n * }\r\n * ```\r\n */\r\nasync function meros(response, options) {\r\n if (!response.ok || !response.body || response.bodyUsed)\r\n return response;\r\n const ctype = response.headers.get('content-type');\r\n if (!ctype || !~ctype.indexOf('multipart/mixed'))\r\n return response;\r\n const idx_boundary = ctype.indexOf('boundary=');\r\n return generate(response.body, `--${!!~idx_boundary\r\n ? // +9 for 'boundary='.length\r\n ctype.substring(idx_boundary + 9).trim().replace(/['\"]/g, '')\r\n : '-'}`, options);\r\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm9zL2Jyb3dzZXIvaW5kZXgubWpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL21lcm9zL2Jyb3dzZXIvaW5kZXgubWpzPzUyYTQiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgc2VwYXJhdG9yID0gJ1xcclxcblxcclxcbic7XHJcbmNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXI7XHJcbmFzeW5jIGZ1bmN0aW9uKiBnZW5lcmF0ZShzdHJlYW0sIGJvdW5kYXJ5LCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCksIGlzX2VhZ2VyID0gIW9wdGlvbnMgfHwgIW9wdGlvbnMubXVsdGlwbGU7XHJcbiAgICBsZXQgYnVmZmVyID0gJycsIGlzX3ByZWFtYmxlID0gdHJ1ZSwgcGF5bG9hZHMgPSBbXTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdDtcclxuICAgICAgICBvdXRlcjogd2hpbGUgKCEocmVzdWx0ID0gYXdhaXQgcmVhZGVyLnJlYWQoKSkuZG9uZSkge1xyXG4gICAgICAgICAgICBjb25zdCBjaHVuayA9IGRlY29kZXIuZGVjb2RlKHJlc3VsdC52YWx1ZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGlkeF9jaHVuayA9IGNodW5rLmluZGV4T2YoYm91bmRhcnkpO1xyXG4gICAgICAgICAgICBsZXQgaWR4X2JvdW5kYXJ5ID0gYnVmZmVyLmxlbmd0aDtcclxuICAgICAgICAgICAgYnVmZmVyICs9IGNodW5rO1xyXG4gICAgICAgICAgICBpZiAoISF+aWR4X2NodW5rKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjaHVuayBpdHNlbGYgaGFkIGBib3VuZGFyeWAgbWFya2VyXHJcbiAgICAgICAgICAgICAgICBpZHhfYm91bmRhcnkgKz0gaWR4X2NodW5rO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gc2VhcmNoIGNvbWJpbmVkIChib3VuZGFyeSBjYW4gYmUgYWNyb3NzIGNodW5rcylcclxuICAgICAgICAgICAgICAgIGlkeF9ib3VuZGFyeSA9IGJ1ZmZlci5pbmRleE9mKGJvdW5kYXJ5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwYXlsb2FkcyA9IFtdO1xyXG4gICAgICAgICAgICB3aGlsZSAoISF+aWR4X2JvdW5kYXJ5KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gYnVmZmVyLnN1YnN0cmluZygwLCBpZHhfYm91bmRhcnkpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IGJ1ZmZlci5zdWJzdHJpbmcoaWR4X2JvdW5kYXJ5ICsgYm91bmRhcnkubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgIGlmIChpc19wcmVhbWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlzX3ByZWFtYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXJzID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWR4X2hlYWRlcnMgPSBjdXJyZW50LmluZGV4T2Yoc2VwYXJhdG9yKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcnJfaGVhZGVycyA9IGJ1ZmZlci5zbGljZSgwLCBpZHhfaGVhZGVycykudG9TdHJpbmcoKS50cmltKCkuc3BsaXQoL1xcclxcbi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhcnNlIGhlYWRlcnNcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdG1wO1xyXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICh0bXAgPSBhcnJfaGVhZGVycy5zaGlmdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IHRtcC5zcGxpdCgnOiAnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1t0bXAuc2hpZnQoKS50b0xvd2VyQ2FzZSgpXSA9IHRtcC5qb2luKCc6ICcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgYm9keSA9IGN1cnJlbnQuc3Vic3RyaW5nKGlkeF9oZWFkZXJzICsgc2VwYXJhdG9yLmxlbmd0aCwgY3VycmVudC5sYXN0SW5kZXhPZignXFxyXFxuJykpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpc19qc29uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdG1wID0gaGVhZGVyc1snY29udGVudC10eXBlJ107XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCAmJiAhIX50bXAuaW5kZXhPZignYXBwbGljYXRpb24vanNvbicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gSlNPTi5wYXJzZShib2R5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2pzb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChfKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdG1wID0geyBoZWFkZXJzLCBib2R5LCBqc29uOiBpc19qc29uIH07XHJcbiAgICAgICAgICAgICAgICAgICAgaXNfZWFnZXIgPyB5aWVsZCB0bXAgOiBwYXlsb2Fkcy5wdXNoKHRtcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaGl0IGEgdGFpbCBib3VuZGFyeSwgYnJlYWtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dC5zdWJzdHJpbmcoMCwgMikgPT09ICctLScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG91dGVyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnVmZmVyID0gbmV4dDtcclxuICAgICAgICAgICAgICAgIGlkeF9ib3VuZGFyeSA9IGJ1ZmZlci5pbmRleE9mKGJvdW5kYXJ5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocGF5bG9hZHMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgeWllbGQgcGF5bG9hZHM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgaWYgKHBheWxvYWRzLmxlbmd0aClcclxuICAgICAgICAgICAgeWllbGQgcGF5bG9hZHM7XHJcbiAgICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7XHJcbiAgICB9XHJcbn1cblxuLyoqXHJcbiAqIFlpZWxkIGltbWVkaWF0ZWx5IGZvciBldmVyeSBwYXJ0IG1hZGUgYXZhaWxhYmxlIG9uIHRoZSByZXNwb25zZS4gSWYgdGhlIGBjb250ZW50LXR5cGVgIG9mIHRoZSByZXNwb25zZSBpc24ndCBhXHJcbiAqIG11bHRpcGFydCBib2R5LCB0aGVuIHdlJ2xsIHJlc29sdmUgd2l0aCB7QGxpbmsgUmVzcG9uc2V9LlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKlxyXG4gKiBgYGBqc1xyXG4gKiBjb25zdCBwYXJ0cyA9IGF3YWl0IGZldGNoKCcvZmV0Y2gtbXVsdGlwYXJ0JylcclxuICogICAgICAudGhlbihtZXJvcyk7XHJcbiAqXHJcbiAqIGZvciBhd2FpdCAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xyXG4gKiAgICAgLy8gZG8gc29tZXRoaW5nIHdpdGggdGhpcyBwYXJ0XHJcbiAqIH1cclxuICogYGBgXHJcbiAqL1xyXG5hc3luYyBmdW5jdGlvbiBtZXJvcyhyZXNwb25zZSwgb3B0aW9ucykge1xyXG4gICAgaWYgKCFyZXNwb25zZS5vayB8fCAhcmVzcG9uc2UuYm9keSB8fCByZXNwb25zZS5ib2R5VXNlZClcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICBjb25zdCBjdHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKTtcclxuICAgIGlmICghY3R5cGUgfHwgIX5jdHlwZS5pbmRleE9mKCdtdWx0aXBhcnQvbWl4ZWQnKSlcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICBjb25zdCBpZHhfYm91bmRhcnkgPSBjdHlwZS5pbmRleE9mKCdib3VuZGFyeT0nKTtcclxuICAgIHJldHVybiBnZW5lcmF0ZShyZXNwb25zZS5ib2R5LCBgLS0keyEhfmlkeF9ib3VuZGFyeVxyXG4gICAgICAgID8gLy8gKzkgZm9yICdib3VuZGFyeT0nLmxlbmd0aFxyXG4gICAgICAgICAgICBjdHlwZS5zdWJzdHJpbmcoaWR4X2JvdW5kYXJ5ICsgOSkudHJpbSgpLnJlcGxhY2UoL1snXCJdL2csICcnKVxyXG4gICAgICAgIDogJy0nfWAsIG9wdGlvbnMpO1xyXG59XG5cbmV4cG9ydCB7IG1lcm9zIH07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/meros/browser/index.mjs\n");
2506
2507/***/ }),
2508
2509/***/ "../../../node_modules/node-libs-browser/node_modules/punycode/punycode.js":
2510/*!************************************************************************************************************!*\
2511 !*** /home/runner/work/graphiql/graphiql/node_modules/node-libs-browser/node_modules/punycode/punycode.js ***!
2512 \************************************************************************************************************/
2513/*! no static exports found */
2514/***/ (function(module, exports, __webpack_require__) {
2515
2516eval("/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n /*! https://mths.be/punycode v1.4.1 by @mathias */\n ;\n\n (function (root) {\n /** Detect free variables */\n var freeExports = true && exports && !exports.nodeType && exports;\n var freeModule = true && module && !module.nodeType && module;\n var freeGlobal = typeof global == 'object' && global;\n\n if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal) {\n root = freeGlobal;\n }\n /**\n * The `punycode` object.\n * @name punycode\n * @type Object\n */\n\n\n var punycode,\n\n /** Highest positive signed 32-bit float value */\n maxInt = 2147483647,\n // aka. 0x7FFFFFFF or 2^31-1\n\n /** Bootstring parameters */\n base = 36,\n tMin = 1,\n tMax = 26,\n skew = 38,\n damp = 700,\n initialBias = 72,\n initialN = 128,\n // 0x80\n delimiter = '-',\n // '\\x2D'\n\n /** Regular expressions */\n regexPunycode = /^xn--/,\n regexNonASCII = /[^\\x20-\\x7E]/,\n // unprintable ASCII chars + non-ASCII chars\n regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g,\n // RFC 3490 separators\n\n /** Error messages */\n errors = {\n 'overflow': 'Overflow: input needs wider integers to process',\n 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n 'invalid-input': 'Invalid input'\n },\n\n /** Convenience shortcuts */\n baseMinusTMin = base - tMin,\n floor = Math.floor,\n stringFromCharCode = String.fromCharCode,\n\n /** Temporary variable */\n key;\n /*--------------------------------------------------------------------------*/\n\n /**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\n\n function error(type) {\n throw new RangeError(errors[type]);\n }\n /**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\n\n\n function map(array, fn) {\n var length = array.length;\n var result = [];\n\n while (length--) {\n result[length] = fn(array[length]);\n }\n\n return result;\n }\n /**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\n\n\n function mapDomain(string, fn) {\n var parts = string.split('@');\n var result = '';\n\n if (parts.length > 1) {\n // In email addresses, only the domain name should be punycoded. Leave\n // the local part (i.e. everything up to `@`) intact.\n result = parts[0] + '@';\n string = parts[1];\n } // Avoid `split(regex)` for IE8 compatibility. See #17.\n\n\n string = string.replace(regexSeparators, '\\x2E');\n var labels = string.split('.');\n var encoded = map(labels, fn).join('.');\n return result + encoded;\n }\n /**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\n\n\n function ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n\n while (counter < length) {\n value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n }\n /**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\n\n\n function ucs2encode(array) {\n return map(array, function (value) {\n var output = '';\n\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n\n output += stringFromCharCode(value);\n return output;\n }).join('');\n }\n /**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\n\n\n function basicToDigit(codePoint) {\n if (codePoint - 48 < 10) {\n return codePoint - 22;\n }\n\n if (codePoint - 65 < 26) {\n return codePoint - 65;\n }\n\n if (codePoint - 97 < 26) {\n return codePoint - 97;\n }\n\n return base;\n }\n /**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\n\n\n function digitToBasic(digit, flag) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n }\n /**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\n\n\n function adapt(delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n\n for (;\n /* no initialization */\n delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n }\n /**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\n\n\n function decode(input) {\n // Don't use UCS-2\n var output = [],\n inputLength = input.length,\n out,\n i = 0,\n n = initialN,\n bias = initialBias,\n basic,\n j,\n index,\n oldi,\n w,\n k,\n digit,\n t,\n\n /** Cached calculation results */\n baseMinusT; // Handle the basic code points: let `basic` be the number of input code\n // points before the last delimiter, or `0` if there is none, then copy\n // the first basic code points to the output.\n\n basic = input.lastIndexOf(delimiter);\n\n if (basic < 0) {\n basic = 0;\n }\n\n for (j = 0; j < basic; ++j) {\n // if it's not a basic code point\n if (input.charCodeAt(j) >= 0x80) {\n error('not-basic');\n }\n\n output.push(input.charCodeAt(j));\n } // Main decoding loop: start just after the last delimiter if any basic code\n // points were copied; start at the beginning otherwise.\n\n\n for (index = basic > 0 ? basic + 1 : 0; index < inputLength;)\n /* no final expression */\n {\n // `index` is the index of the next character to be consumed.\n // Decode a generalized variable-length integer into `delta`,\n // which gets added to `i`. The overflow checking is easier\n // if we increase `i` as we go, then subtract off its starting\n // value at the end to obtain `delta`.\n for (oldi = i, w = 1, k = base;;\n /* no condition */\n k += base) {\n if (index >= inputLength) {\n error('invalid-input');\n }\n\n digit = basicToDigit(input.charCodeAt(index++));\n\n if (digit >= base || digit > floor((maxInt - i) / w)) {\n error('overflow');\n }\n\n i += digit * w;\n t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (digit < t) {\n break;\n }\n\n baseMinusT = base - t;\n\n if (w > floor(maxInt / baseMinusT)) {\n error('overflow');\n }\n\n w *= baseMinusT;\n }\n\n out = output.length + 1;\n bias = adapt(i - oldi, out, oldi == 0); // `i` was supposed to wrap around from `out` to `0`,\n // incrementing `n` each time, so we'll fix that now:\n\n if (floor(i / out) > maxInt - n) {\n error('overflow');\n }\n\n n += floor(i / out);\n i %= out; // Insert `n` at position `i` of the output\n\n output.splice(i++, 0, n);\n }\n\n return ucs2encode(output);\n }\n /**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\n\n\n function encode(input) {\n var n,\n delta,\n handledCPCount,\n basicLength,\n bias,\n j,\n m,\n q,\n k,\n t,\n currentValue,\n output = [],\n\n /** `inputLength` will hold the number of code points in `input`. */\n inputLength,\n\n /** Cached calculation results */\n handledCPCountPlusOne,\n baseMinusT,\n qMinusT; // Convert the input in UCS-2 to Unicode\n\n input = ucs2decode(input); // Cache the length\n\n inputLength = input.length; // Initialize the state\n\n n = initialN;\n delta = 0;\n bias = initialBias; // Handle the basic code points\n\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n handledCPCount = basicLength = output.length; // `handledCPCount` is the number of code points that have been handled;\n // `basicLength` is the number of basic code points.\n // Finish the basic string - if it is not empty - with a delimiter\n\n if (basicLength) {\n output.push(delimiter);\n } // Main encoding loop:\n\n\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next\n // larger one:\n for (m = maxInt, j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n } // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n // but guard against overflow\n\n\n handledCPCountPlusOne = handledCPCount + 1;\n\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n error('overflow');\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue < n && ++delta > maxInt) {\n error('overflow');\n }\n\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer\n for (q = delta, k = base;;\n /* no condition */\n k += base) {\n t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (q < t) {\n break;\n }\n\n qMinusT = q - t;\n baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q, 0)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n\n return output.join('');\n }\n /**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\n\n\n function toUnicode(input) {\n return mapDomain(input, function (string) {\n return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n });\n }\n /**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\n\n\n function toASCII(input) {\n return mapDomain(input, function (string) {\n return regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n });\n }\n /*--------------------------------------------------------------------------*/\n\n /** Define the public API */\n\n\n punycode = {\n /**\n * A string representing the current Punycode.js version number.\n * @memberOf punycode\n * @type String\n */\n 'version': '1.4.1',\n\n /**\n * An object of methods to convert from JavaScript's internal character\n * representation (UCS-2) to Unicode code points, and back.\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode\n * @type Object\n */\n 'ucs2': {\n 'decode': ucs2decode,\n 'encode': ucs2encode\n },\n 'decode': decode,\n 'encode': encode,\n 'toASCII': toASCII,\n 'toUnicode': toUnicode\n };\n /** Expose `punycode` */\n // Some AMD build optimizers, like r.js, check for specific condition patterns\n // like the following:\n\n if (true) {\n !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n return punycode;\n }).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n })(void 0);\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ \"../../../node_modules/webpack/buildin/module.js\")(module), __webpack_require__(/*! ./../../../webpack/buildin/global.js */ \"../../../node_modules/webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25vZGUtbGlicy1icm93c2VyL25vZGVfbW9kdWxlcy9wdW55Y29kZS9wdW55Y29kZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9ub2RlLWxpYnMtYnJvd3Nlci9ub2RlX21vZHVsZXMvcHVueWNvZGUvcHVueWNvZGUuanM/Y2NmMCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgaHR0cHM6Ly9tdGhzLmJlL3B1bnljb2RlIHYxLjQuMSBieSBAbWF0aGlhcyAqL1xuOyhmdW5jdGlvbihyb290KSB7XG5cblx0LyoqIERldGVjdCBmcmVlIHZhcmlhYmxlcyAqL1xuXHR2YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmXG5cdFx0IWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblx0dmFyIGZyZWVNb2R1bGUgPSB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJlxuXHRcdCFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXHR2YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsO1xuXHRpZiAoXG5cdFx0ZnJlZUdsb2JhbC5nbG9iYWwgPT09IGZyZWVHbG9iYWwgfHxcblx0XHRmcmVlR2xvYmFsLndpbmRvdyA9PT0gZnJlZUdsb2JhbCB8fFxuXHRcdGZyZWVHbG9iYWwuc2VsZiA9PT0gZnJlZUdsb2JhbFxuXHQpIHtcblx0XHRyb290ID0gZnJlZUdsb2JhbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgYHB1bnljb2RlYCBvYmplY3QuXG5cdCAqIEBuYW1lIHB1bnljb2RlXG5cdCAqIEB0eXBlIE9iamVjdFxuXHQgKi9cblx0dmFyIHB1bnljb2RlLFxuXG5cdC8qKiBIaWdoZXN0IHBvc2l0aXZlIHNpZ25lZCAzMi1iaXQgZmxvYXQgdmFsdWUgKi9cblx0bWF4SW50ID0gMjE0NzQ4MzY0NywgLy8gYWthLiAweDdGRkZGRkZGIG9yIDJeMzEtMVxuXG5cdC8qKiBCb290c3RyaW5nIHBhcmFtZXRlcnMgKi9cblx0YmFzZSA9IDM2LFxuXHR0TWluID0gMSxcblx0dE1heCA9IDI2LFxuXHRza2V3ID0gMzgsXG5cdGRhbXAgPSA3MDAsXG5cdGluaXRpYWxCaWFzID0gNzIsXG5cdGluaXRpYWxOID0gMTI4LCAvLyAweDgwXG5cdGRlbGltaXRlciA9ICctJywgLy8gJ1xceDJEJ1xuXG5cdC8qKiBSZWd1bGFyIGV4cHJlc3Npb25zICovXG5cdHJlZ2V4UHVueWNvZGUgPSAvXnhuLS0vLFxuXHRyZWdleE5vbkFTQ0lJID0gL1teXFx4MjAtXFx4N0VdLywgLy8gdW5wcmludGFibGUgQVNDSUkgY2hhcnMgKyBub24tQVNDSUkgY2hhcnNcblx0cmVnZXhTZXBhcmF0b3JzID0gL1tcXHgyRVxcdTMwMDJcXHVGRjBFXFx1RkY2MV0vZywgLy8gUkZDIDM0OTAgc2VwYXJhdG9yc1xuXG5cdC8qKiBFcnJvciBtZXNzYWdlcyAqL1xuXHRlcnJvcnMgPSB7XG5cdFx0J292ZXJmbG93JzogJ092ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzJyxcblx0XHQnbm90LWJhc2ljJzogJ0lsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCknLFxuXHRcdCdpbnZhbGlkLWlucHV0JzogJ0ludmFsaWQgaW5wdXQnXG5cdH0sXG5cblx0LyoqIENvbnZlbmllbmNlIHNob3J0Y3V0cyAqL1xuXHRiYXNlTWludXNUTWluID0gYmFzZSAtIHRNaW4sXG5cdGZsb29yID0gTWF0aC5mbG9vcixcblx0c3RyaW5nRnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZSxcblxuXHQvKiogVGVtcG9yYXJ5IHZhcmlhYmxlICovXG5cdGtleTtcblxuXHQvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuXHQvKipcblx0ICogQSBnZW5lcmljIGVycm9yIHV0aWxpdHkgZnVuY3Rpb24uXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIFRoZSBlcnJvciB0eXBlLlxuXHQgKiBAcmV0dXJucyB7RXJyb3J9IFRocm93cyBhIGBSYW5nZUVycm9yYCB3aXRoIHRoZSBhcHBsaWNhYmxlIGVycm9yIG1lc3NhZ2UuXG5cdCAqL1xuXHRmdW5jdGlvbiBlcnJvcih0eXBlKSB7XG5cdFx0dGhyb3cgbmV3IFJhbmdlRXJyb3IoZXJyb3JzW3R5cGVdKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBIGdlbmVyaWMgYEFycmF5I21hcGAgdXRpbGl0eSBmdW5jdGlvbi5cblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5IGFycmF5XG5cdCAqIGl0ZW0uXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gQSBuZXcgYXJyYXkgb2YgdmFsdWVzIHJldHVybmVkIGJ5IHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cblx0ICovXG5cdGZ1bmN0aW9uIG1hcChhcnJheSwgZm4pIHtcblx0XHR2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXHRcdHZhciByZXN1bHQgPSBbXTtcblx0XHR3aGlsZSAobGVuZ3RoLS0pIHtcblx0XHRcdHJlc3VsdFtsZW5ndGhdID0gZm4oYXJyYXlbbGVuZ3RoXSk7XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHQvKipcblx0ICogQSBzaW1wbGUgYEFycmF5I21hcGAtbGlrZSB3cmFwcGVyIHRvIHdvcmsgd2l0aCBkb21haW4gbmFtZSBzdHJpbmdzIG9yIGVtYWlsXG5cdCAqIGFkZHJlc3Nlcy5cblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGRvbWFpbiBUaGUgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcy5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5XG5cdCAqIGNoYXJhY3Rlci5cblx0ICogQHJldHVybnMge0FycmF5fSBBIG5ldyBzdHJpbmcgb2YgY2hhcmFjdGVycyByZXR1cm5lZCBieSB0aGUgY2FsbGJhY2tcblx0ICogZnVuY3Rpb24uXG5cdCAqL1xuXHRmdW5jdGlvbiBtYXBEb21haW4oc3RyaW5nLCBmbikge1xuXHRcdHZhciBwYXJ0cyA9IHN0cmluZy5zcGxpdCgnQCcpO1xuXHRcdHZhciByZXN1bHQgPSAnJztcblx0XHRpZiAocGFydHMubGVuZ3RoID4gMSkge1xuXHRcdFx0Ly8gSW4gZW1haWwgYWRkcmVzc2VzLCBvbmx5IHRoZSBkb21haW4gbmFtZSBzaG91bGQgYmUgcHVueWNvZGVkLiBMZWF2ZVxuXHRcdFx0Ly8gdGhlIGxvY2FsIHBhcnQgKGkuZS4gZXZlcnl0aGluZyB1cCB0byBgQGApIGludGFjdC5cblx0XHRcdHJlc3VsdCA9IHBhcnRzWzBdICsgJ0AnO1xuXHRcdFx0c3RyaW5nID0gcGFydHNbMV07XG5cdFx0fVxuXHRcdC8vIEF2b2lkIGBzcGxpdChyZWdleClgIGZvciBJRTggY29tcGF0aWJpbGl0eS4gU2VlICMxNy5cblx0XHRzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShyZWdleFNlcGFyYXRvcnMsICdcXHgyRScpO1xuXHRcdHZhciBsYWJlbHMgPSBzdHJpbmcuc3BsaXQoJy4nKTtcblx0XHR2YXIgZW5jb2RlZCA9IG1hcChsYWJlbHMsIGZuKS5qb2luKCcuJyk7XG5cdFx0cmV0dXJuIHJlc3VsdCArIGVuY29kZWQ7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBudW1lcmljIGNvZGUgcG9pbnRzIG9mIGVhY2ggVW5pY29kZVxuXHQgKiBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4gV2hpbGUgSmF2YVNjcmlwdCB1c2VzIFVDUy0yIGludGVybmFsbHksXG5cdCAqIHRoaXMgZnVuY3Rpb24gd2lsbCBjb252ZXJ0IGEgcGFpciBvZiBzdXJyb2dhdGUgaGFsdmVzIChlYWNoIG9mIHdoaWNoXG5cdCAqIFVDUy0yIGV4cG9zZXMgYXMgc2VwYXJhdGUgY2hhcmFjdGVycykgaW50byBhIHNpbmdsZSBjb2RlIHBvaW50LFxuXHQgKiBtYXRjaGluZyBVVEYtMTYuXG5cdCAqIEBzZWUgYHB1bnljb2RlLnVjczIuZW5jb2RlYFxuXHQgKiBAc2VlIDxodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZz5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcblx0ICogQG5hbWUgZGVjb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBzdHJpbmcgVGhlIFVuaWNvZGUgaW5wdXQgc3RyaW5nIChVQ1MtMikuXG5cdCAqIEByZXR1cm5zIHtBcnJheX0gVGhlIG5ldyBhcnJheSBvZiBjb2RlIHBvaW50cy5cblx0ICovXG5cdGZ1bmN0aW9uIHVjczJkZWNvZGUoc3RyaW5nKSB7XG5cdFx0dmFyIG91dHB1dCA9IFtdLFxuXHRcdCAgICBjb3VudGVyID0gMCxcblx0XHQgICAgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCxcblx0XHQgICAgdmFsdWUsXG5cdFx0ICAgIGV4dHJhO1xuXHRcdHdoaWxlIChjb3VudGVyIDwgbGVuZ3RoKSB7XG5cdFx0XHR2YWx1ZSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG5cdFx0XHRpZiAodmFsdWUgPj0gMHhEODAwICYmIHZhbHVlIDw9IDB4REJGRiAmJiBjb3VudGVyIDwgbGVuZ3RoKSB7XG5cdFx0XHRcdC8vIGhpZ2ggc3Vycm9nYXRlLCBhbmQgdGhlcmUgaXMgYSBuZXh0IGNoYXJhY3RlclxuXHRcdFx0XHRleHRyYSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG5cdFx0XHRcdGlmICgoZXh0cmEgJiAweEZDMDApID09IDB4REMwMCkgeyAvLyBsb3cgc3Vycm9nYXRlXG5cdFx0XHRcdFx0b3V0cHV0LnB1c2goKCh2YWx1ZSAmIDB4M0ZGKSA8PCAxMCkgKyAoZXh0cmEgJiAweDNGRikgKyAweDEwMDAwKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyB1bm1hdGNoZWQgc3Vycm9nYXRlOyBvbmx5IGFwcGVuZCB0aGlzIGNvZGUgdW5pdCwgaW4gY2FzZSB0aGUgbmV4dFxuXHRcdFx0XHRcdC8vIGNvZGUgdW5pdCBpcyB0aGUgaGlnaCBzdXJyb2dhdGUgb2YgYSBzdXJyb2dhdGUgcGFpclxuXHRcdFx0XHRcdG91dHB1dC5wdXNoKHZhbHVlKTtcblx0XHRcdFx0XHRjb3VudGVyLS07XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG91dHB1dC5wdXNoKHZhbHVlKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG91dHB1dDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgc3RyaW5nIGJhc2VkIG9uIGFuIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG5cdCAqIEBzZWUgYHB1bnljb2RlLnVjczIuZGVjb2RlYFxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGUudWNzMlxuXHQgKiBAbmFtZSBlbmNvZGVcblx0ICogQHBhcmFtIHtBcnJheX0gY29kZVBvaW50cyBUaGUgYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cblx0ICogQHJldHVybnMge1N0cmluZ30gVGhlIG5ldyBVbmljb2RlIHN0cmluZyAoVUNTLTIpLlxuXHQgKi9cblx0ZnVuY3Rpb24gdWNzMmVuY29kZShhcnJheSkge1xuXHRcdHJldHVybiBtYXAoYXJyYXksIGZ1bmN0aW9uKHZhbHVlKSB7XG5cdFx0XHR2YXIgb3V0cHV0ID0gJyc7XG5cdFx0XHRpZiAodmFsdWUgPiAweEZGRkYpIHtcblx0XHRcdFx0dmFsdWUgLT0gMHgxMDAwMDtcblx0XHRcdFx0b3V0cHV0ICs9IHN0cmluZ0Zyb21DaGFyQ29kZSh2YWx1ZSA+Pj4gMTAgJiAweDNGRiB8IDB4RDgwMCk7XG5cdFx0XHRcdHZhbHVlID0gMHhEQzAwIHwgdmFsdWUgJiAweDNGRjtcblx0XHRcdH1cblx0XHRcdG91dHB1dCArPSBzdHJpbmdGcm9tQ2hhckNvZGUodmFsdWUpO1xuXHRcdFx0cmV0dXJuIG91dHB1dDtcblx0XHR9KS5qb2luKCcnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIGJhc2ljIGNvZGUgcG9pbnQgaW50byBhIGRpZ2l0L2ludGVnZXIuXG5cdCAqIEBzZWUgYGRpZ2l0VG9CYXNpYygpYFxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge051bWJlcn0gY29kZVBvaW50IFRoZSBiYXNpYyBudW1lcmljIGNvZGUgcG9pbnQgdmFsdWUuXG5cdCAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBudW1lcmljIHZhbHVlIG9mIGEgYmFzaWMgY29kZSBwb2ludCAoZm9yIHVzZSBpblxuXHQgKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGluIHRoZSByYW5nZSBgMGAgdG8gYGJhc2UgLSAxYCwgb3IgYGJhc2VgIGlmXG5cdCAqIHRoZSBjb2RlIHBvaW50IGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbHVlLlxuXHQgKi9cblx0ZnVuY3Rpb24gYmFzaWNUb0RpZ2l0KGNvZGVQb2ludCkge1xuXHRcdGlmIChjb2RlUG9pbnQgLSA0OCA8IDEwKSB7XG5cdFx0XHRyZXR1cm4gY29kZVBvaW50IC0gMjI7XG5cdFx0fVxuXHRcdGlmIChjb2RlUG9pbnQgLSA2NSA8IDI2KSB7XG5cdFx0XHRyZXR1cm4gY29kZVBvaW50IC0gNjU7XG5cdFx0fVxuXHRcdGlmIChjb2RlUG9pbnQgLSA5NyA8IDI2KSB7XG5cdFx0XHRyZXR1cm4gY29kZVBvaW50IC0gOTc7XG5cdFx0fVxuXHRcdHJldHVybiBiYXNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgZGlnaXQvaW50ZWdlciBpbnRvIGEgYmFzaWMgY29kZSBwb2ludC5cblx0ICogQHNlZSBgYmFzaWNUb0RpZ2l0KClgXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBkaWdpdCBUaGUgbnVtZXJpYyB2YWx1ZSBvZiBhIGJhc2ljIGNvZGUgcG9pbnQuXG5cdCAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBiYXNpYyBjb2RlIHBvaW50IHdob3NlIHZhbHVlICh3aGVuIHVzZWQgZm9yXG5cdCAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaXMgYGRpZ2l0YCwgd2hpY2ggbmVlZHMgdG8gYmUgaW4gdGhlIHJhbmdlXG5cdCAqIGAwYCB0byBgYmFzZSAtIDFgLiBJZiBgZmxhZ2AgaXMgbm9uLXplcm8sIHRoZSB1cHBlcmNhc2UgZm9ybSBpc1xuXHQgKiB1c2VkOyBlbHNlLCB0aGUgbG93ZXJjYXNlIGZvcm0gaXMgdXNlZC4gVGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZFxuXHQgKiBpZiBgZmxhZ2AgaXMgbm9uLXplcm8gYW5kIGBkaWdpdGAgaGFzIG5vIHVwcGVyY2FzZSBmb3JtLlxuXHQgKi9cblx0ZnVuY3Rpb24gZGlnaXRUb0Jhc2ljKGRpZ2l0LCBmbGFnKSB7XG5cdFx0Ly8gIDAuLjI1IG1hcCB0byBBU0NJSSBhLi56IG9yIEEuLlpcblx0XHQvLyAyNi4uMzUgbWFwIHRvIEFTQ0lJIDAuLjlcblx0XHRyZXR1cm4gZGlnaXQgKyAyMiArIDc1ICogKGRpZ2l0IDwgMjYpIC0gKChmbGFnICE9IDApIDw8IDUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEJpYXMgYWRhcHRhdGlvbiBmdW5jdGlvbiBhcyBwZXIgc2VjdGlvbiAzLjQgb2YgUkZDIDM0OTIuXG5cdCAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNDkyI3NlY3Rpb24tMy40XG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5jdGlvbiBhZGFwdChkZWx0YSwgbnVtUG9pbnRzLCBmaXJzdFRpbWUpIHtcblx0XHR2YXIgayA9IDA7XG5cdFx0ZGVsdGEgPSBmaXJzdFRpbWUgPyBmbG9vcihkZWx0YSAvIGRhbXApIDogZGVsdGEgPj4gMTtcblx0XHRkZWx0YSArPSBmbG9vcihkZWx0YSAvIG51bVBvaW50cyk7XG5cdFx0Zm9yICgvKiBubyBpbml0aWFsaXphdGlvbiAqLzsgZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxOyBrICs9IGJhc2UpIHtcblx0XHRcdGRlbHRhID0gZmxvb3IoZGVsdGEgLyBiYXNlTWludXNUTWluKTtcblx0XHR9XG5cdFx0cmV0dXJuIGZsb29yKGsgKyAoYmFzZU1pbnVzVE1pbiArIDEpICogZGVsdGEgLyAoZGVsdGEgKyBza2V3KSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzIHRvIGEgc3RyaW5nIG9mIFVuaWNvZGVcblx0ICogc3ltYm9scy5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cblx0ICogQHJldHVybnMge1N0cmluZ30gVGhlIHJlc3VsdGluZyBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzLlxuXHQgKi9cblx0ZnVuY3Rpb24gZGVjb2RlKGlucHV0KSB7XG5cdFx0Ly8gRG9uJ3QgdXNlIFVDUy0yXG5cdFx0dmFyIG91dHB1dCA9IFtdLFxuXHRcdCAgICBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aCxcblx0XHQgICAgb3V0LFxuXHRcdCAgICBpID0gMCxcblx0XHQgICAgbiA9IGluaXRpYWxOLFxuXHRcdCAgICBiaWFzID0gaW5pdGlhbEJpYXMsXG5cdFx0ICAgIGJhc2ljLFxuXHRcdCAgICBqLFxuXHRcdCAgICBpbmRleCxcblx0XHQgICAgb2xkaSxcblx0XHQgICAgdyxcblx0XHQgICAgayxcblx0XHQgICAgZGlnaXQsXG5cdFx0ICAgIHQsXG5cdFx0ICAgIC8qKiBDYWNoZWQgY2FsY3VsYXRpb24gcmVzdWx0cyAqL1xuXHRcdCAgICBiYXNlTWludXNUO1xuXG5cdFx0Ly8gSGFuZGxlIHRoZSBiYXNpYyBjb2RlIHBvaW50czogbGV0IGBiYXNpY2AgYmUgdGhlIG51bWJlciBvZiBpbnB1dCBjb2RlXG5cdFx0Ly8gcG9pbnRzIGJlZm9yZSB0aGUgbGFzdCBkZWxpbWl0ZXIsIG9yIGAwYCBpZiB0aGVyZSBpcyBub25lLCB0aGVuIGNvcHlcblx0XHQvLyB0aGUgZmlyc3QgYmFzaWMgY29kZSBwb2ludHMgdG8gdGhlIG91dHB1dC5cblxuXHRcdGJhc2ljID0gaW5wdXQubGFzdEluZGV4T2YoZGVsaW1pdGVyKTtcblx0XHRpZiAoYmFzaWMgPCAwKSB7XG5cdFx0XHRiYXNpYyA9IDA7XG5cdFx0fVxuXG5cdFx0Zm9yIChqID0gMDsgaiA8IGJhc2ljOyArK2opIHtcblx0XHRcdC8vIGlmIGl0J3Mgbm90IGEgYmFzaWMgY29kZSBwb2ludFxuXHRcdFx0aWYgKGlucHV0LmNoYXJDb2RlQXQoaikgPj0gMHg4MCkge1xuXHRcdFx0XHRlcnJvcignbm90LWJhc2ljJyk7XG5cdFx0XHR9XG5cdFx0XHRvdXRwdXQucHVzaChpbnB1dC5jaGFyQ29kZUF0KGopKTtcblx0XHR9XG5cblx0XHQvLyBNYWluIGRlY29kaW5nIGxvb3A6IHN0YXJ0IGp1c3QgYWZ0ZXIgdGhlIGxhc3QgZGVsaW1pdGVyIGlmIGFueSBiYXNpYyBjb2RlXG5cdFx0Ly8gcG9pbnRzIHdlcmUgY29waWVkOyBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG90aGVyd2lzZS5cblxuXHRcdGZvciAoaW5kZXggPSBiYXNpYyA+IDAgPyBiYXNpYyArIDEgOiAwOyBpbmRleCA8IGlucHV0TGVuZ3RoOyAvKiBubyBmaW5hbCBleHByZXNzaW9uICovKSB7XG5cblx0XHRcdC8vIGBpbmRleGAgaXMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSBjb25zdW1lZC5cblx0XHRcdC8vIERlY29kZSBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyIGludG8gYGRlbHRhYCxcblx0XHRcdC8vIHdoaWNoIGdldHMgYWRkZWQgdG8gYGlgLiBUaGUgb3ZlcmZsb3cgY2hlY2tpbmcgaXMgZWFzaWVyXG5cdFx0XHQvLyBpZiB3ZSBpbmNyZWFzZSBgaWAgYXMgd2UgZ28sIHRoZW4gc3VidHJhY3Qgb2ZmIGl0cyBzdGFydGluZ1xuXHRcdFx0Ly8gdmFsdWUgYXQgdGhlIGVuZCB0byBvYnRhaW4gYGRlbHRhYC5cblx0XHRcdGZvciAob2xkaSA9IGksIHcgPSAxLCBrID0gYmFzZTsgLyogbm8gY29uZGl0aW9uICovOyBrICs9IGJhc2UpIHtcblxuXHRcdFx0XHRpZiAoaW5kZXggPj0gaW5wdXRMZW5ndGgpIHtcblx0XHRcdFx0XHRlcnJvcignaW52YWxpZC1pbnB1dCcpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZGlnaXQgPSBiYXNpY1RvRGlnaXQoaW5wdXQuY2hhckNvZGVBdChpbmRleCsrKSk7XG5cblx0XHRcdFx0aWYgKGRpZ2l0ID49IGJhc2UgfHwgZGlnaXQgPiBmbG9vcigobWF4SW50IC0gaSkgLyB3KSkge1xuXHRcdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aSArPSBkaWdpdCAqIHc7XG5cdFx0XHRcdHQgPSBrIDw9IGJpYXMgPyB0TWluIDogKGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXMpO1xuXG5cdFx0XHRcdGlmIChkaWdpdCA8IHQpIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdFx0aWYgKHcgPiBmbG9vcihtYXhJbnQgLyBiYXNlTWludXNUKSkge1xuXHRcdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dyAqPSBiYXNlTWludXNUO1xuXG5cdFx0XHR9XG5cblx0XHRcdG91dCA9IG91dHB1dC5sZW5ndGggKyAxO1xuXHRcdFx0YmlhcyA9IGFkYXB0KGkgLSBvbGRpLCBvdXQsIG9sZGkgPT0gMCk7XG5cblx0XHRcdC8vIGBpYCB3YXMgc3VwcG9zZWQgdG8gd3JhcCBhcm91bmQgZnJvbSBgb3V0YCB0byBgMGAsXG5cdFx0XHQvLyBpbmNyZW1lbnRpbmcgYG5gIGVhY2ggdGltZSwgc28gd2UnbGwgZml4IHRoYXQgbm93OlxuXHRcdFx0aWYgKGZsb29yKGkgLyBvdXQpID4gbWF4SW50IC0gbikge1xuXHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdH1cblxuXHRcdFx0biArPSBmbG9vcihpIC8gb3V0KTtcblx0XHRcdGkgJT0gb3V0O1xuXG5cdFx0XHQvLyBJbnNlcnQgYG5gIGF0IHBvc2l0aW9uIGBpYCBvZiB0aGUgb3V0cHV0XG5cdFx0XHRvdXRwdXQuc3BsaWNlKGkrKywgMCwgbik7XG5cblx0XHR9XG5cblx0XHRyZXR1cm4gdWNzMmVuY29kZShvdXRwdXQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scyAoZS5nLiBhIGRvbWFpbiBuYW1lIGxhYmVsKSB0byBhXG5cdCAqIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cblx0ICovXG5cdGZ1bmN0aW9uIGVuY29kZShpbnB1dCkge1xuXHRcdHZhciBuLFxuXHRcdCAgICBkZWx0YSxcblx0XHQgICAgaGFuZGxlZENQQ291bnQsXG5cdFx0ICAgIGJhc2ljTGVuZ3RoLFxuXHRcdCAgICBiaWFzLFxuXHRcdCAgICBqLFxuXHRcdCAgICBtLFxuXHRcdCAgICBxLFxuXHRcdCAgICBrLFxuXHRcdCAgICB0LFxuXHRcdCAgICBjdXJyZW50VmFsdWUsXG5cdFx0ICAgIG91dHB1dCA9IFtdLFxuXHRcdCAgICAvKiogYGlucHV0TGVuZ3RoYCB3aWxsIGhvbGQgdGhlIG51bWJlciBvZiBjb2RlIHBvaW50cyBpbiBgaW5wdXRgLiAqL1xuXHRcdCAgICBpbnB1dExlbmd0aCxcblx0XHQgICAgLyoqIENhY2hlZCBjYWxjdWxhdGlvbiByZXN1bHRzICovXG5cdFx0ICAgIGhhbmRsZWRDUENvdW50UGx1c09uZSxcblx0XHQgICAgYmFzZU1pbnVzVCxcblx0XHQgICAgcU1pbnVzVDtcblxuXHRcdC8vIENvbnZlcnQgdGhlIGlucHV0IGluIFVDUy0yIHRvIFVuaWNvZGVcblx0XHRpbnB1dCA9IHVjczJkZWNvZGUoaW5wdXQpO1xuXG5cdFx0Ly8gQ2FjaGUgdGhlIGxlbmd0aFxuXHRcdGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG5cdFx0Ly8gSW5pdGlhbGl6ZSB0aGUgc3RhdGVcblx0XHRuID0gaW5pdGlhbE47XG5cdFx0ZGVsdGEgPSAwO1xuXHRcdGJpYXMgPSBpbml0aWFsQmlhcztcblxuXHRcdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHNcblx0XHRmb3IgKGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuXHRcdFx0Y3VycmVudFZhbHVlID0gaW5wdXRbal07XG5cdFx0XHRpZiAoY3VycmVudFZhbHVlIDwgMHg4MCkge1xuXHRcdFx0XHRvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoY3VycmVudFZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aGFuZGxlZENQQ291bnQgPSBiYXNpY0xlbmd0aCA9IG91dHB1dC5sZW5ndGg7XG5cblx0XHQvLyBgaGFuZGxlZENQQ291bnRgIGlzIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgdGhhdCBoYXZlIGJlZW4gaGFuZGxlZDtcblx0XHQvLyBgYmFzaWNMZW5ndGhgIGlzIHRoZSBudW1iZXIgb2YgYmFzaWMgY29kZSBwb2ludHMuXG5cblx0XHQvLyBGaW5pc2ggdGhlIGJhc2ljIHN0cmluZyAtIGlmIGl0IGlzIG5vdCBlbXB0eSAtIHdpdGggYSBkZWxpbWl0ZXJcblx0XHRpZiAoYmFzaWNMZW5ndGgpIHtcblx0XHRcdG91dHB1dC5wdXNoKGRlbGltaXRlcik7XG5cdFx0fVxuXG5cdFx0Ly8gTWFpbiBlbmNvZGluZyBsb29wOlxuXHRcdHdoaWxlIChoYW5kbGVkQ1BDb3VudCA8IGlucHV0TGVuZ3RoKSB7XG5cblx0XHRcdC8vIEFsbCBub24tYmFzaWMgY29kZSBwb2ludHMgPCBuIGhhdmUgYmVlbiBoYW5kbGVkIGFscmVhZHkuIEZpbmQgdGhlIG5leHRcblx0XHRcdC8vIGxhcmdlciBvbmU6XG5cdFx0XHRmb3IgKG0gPSBtYXhJbnQsIGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuXHRcdFx0XHRjdXJyZW50VmFsdWUgPSBpbnB1dFtqXTtcblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA+PSBuICYmIGN1cnJlbnRWYWx1ZSA8IG0pIHtcblx0XHRcdFx0XHRtID0gY3VycmVudFZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEluY3JlYXNlIGBkZWx0YWAgZW5vdWdoIHRvIGFkdmFuY2UgdGhlIGRlY29kZXIncyA8bixpPiBzdGF0ZSB0byA8bSwwPixcblx0XHRcdC8vIGJ1dCBndWFyZCBhZ2FpbnN0IG92ZXJmbG93XG5cdFx0XHRoYW5kbGVkQ1BDb3VudFBsdXNPbmUgPSBoYW5kbGVkQ1BDb3VudCArIDE7XG5cdFx0XHRpZiAobSAtIG4gPiBmbG9vcigobWF4SW50IC0gZGVsdGEpIC8gaGFuZGxlZENQQ291bnRQbHVzT25lKSkge1xuXHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdH1cblxuXHRcdFx0ZGVsdGEgKz0gKG0gLSBuKSAqIGhhbmRsZWRDUENvdW50UGx1c09uZTtcblx0XHRcdG4gPSBtO1xuXG5cdFx0XHRmb3IgKGogPSAwOyBqIDwgaW5wdXRMZW5ndGg7ICsraikge1xuXHRcdFx0XHRjdXJyZW50VmFsdWUgPSBpbnB1dFtqXTtcblxuXHRcdFx0XHRpZiAoY3VycmVudFZhbHVlIDwgbiAmJiArK2RlbHRhID4gbWF4SW50KSB7XG5cdFx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoY3VycmVudFZhbHVlID09IG4pIHtcblx0XHRcdFx0XHQvLyBSZXByZXNlbnQgZGVsdGEgYXMgYSBnZW5lcmFsaXplZCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlclxuXHRcdFx0XHRcdGZvciAocSA9IGRlbHRhLCBrID0gYmFzZTsgLyogbm8gY29uZGl0aW9uICovOyBrICs9IGJhc2UpIHtcblx0XHRcdFx0XHRcdHQgPSBrIDw9IGJpYXMgPyB0TWluIDogKGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXMpO1xuXHRcdFx0XHRcdFx0aWYgKHEgPCB0KSB7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cU1pbnVzVCA9IHEgLSB0O1xuXHRcdFx0XHRcdFx0YmFzZU1pbnVzVCA9IGJhc2UgLSB0O1xuXHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goXG5cdFx0XHRcdFx0XHRcdHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWModCArIHFNaW51c1QgJSBiYXNlTWludXNULCAwKSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRxID0gZmxvb3IocU1pbnVzVCAvIGJhc2VNaW51c1QpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWMocSwgMCkpKTtcblx0XHRcdFx0XHRiaWFzID0gYWRhcHQoZGVsdGEsIGhhbmRsZWRDUENvdW50UGx1c09uZSwgaGFuZGxlZENQQ291bnQgPT0gYmFzaWNMZW5ndGgpO1xuXHRcdFx0XHRcdGRlbHRhID0gMDtcblx0XHRcdFx0XHQrK2hhbmRsZWRDUENvdW50O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdCsrZGVsdGE7XG5cdFx0XHQrK247XG5cblx0XHR9XG5cdFx0cmV0dXJuIG91dHB1dC5qb2luKCcnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzXG5cdCAqIHRvIFVuaWNvZGUuIE9ubHkgdGhlIFB1bnljb2RlZCBwYXJ0cyBvZiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQsIGkuZS5cblx0ICogaXQgZG9lc24ndCBtYXR0ZXIgaWYgeW91IGNhbGwgaXQgb24gYSBzdHJpbmcgdGhhdCBoYXMgYWxyZWFkeSBiZWVuXG5cdCAqIGNvbnZlcnRlZCB0byBVbmljb2RlLlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBQdW55Y29kZWQgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcyB0b1xuXHQgKiBjb252ZXJ0IHRvIFVuaWNvZGUuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBVbmljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBQdW55Y29kZVxuXHQgKiBzdHJpbmcuXG5cdCAqL1xuXHRmdW5jdGlvbiB0b1VuaWNvZGUoaW5wdXQpIHtcblx0XHRyZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRcdHJldHVybiByZWdleFB1bnljb2RlLnRlc3Qoc3RyaW5nKVxuXHRcdFx0XHQ/IGRlY29kZShzdHJpbmcuc2xpY2UoNCkudG9Mb3dlckNhc2UoKSlcblx0XHRcdFx0OiBzdHJpbmc7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBVbmljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzIHRvXG5cdCAqIFB1bnljb2RlLiBPbmx5IHRoZSBub24tQVNDSUkgcGFydHMgb2YgdGhlIGRvbWFpbiBuYW1lIHdpbGwgYmUgY29udmVydGVkLFxuXHQgKiBpLmUuIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IHdpdGggYSBkb21haW4gdGhhdCdzIGFscmVhZHkgaW5cblx0ICogQVNDSUkuXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG8gY29udmVydCwgYXMgYVxuXHQgKiBVbmljb2RlIHN0cmluZy5cblx0ICogQHJldHVybnMge1N0cmluZ30gVGhlIFB1bnljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBkb21haW4gbmFtZSBvclxuXHQgKiBlbWFpbCBhZGRyZXNzLlxuXHQgKi9cblx0ZnVuY3Rpb24gdG9BU0NJSShpbnB1dCkge1xuXHRcdHJldHVybiBtYXBEb21haW4oaW5wdXQsIGZ1bmN0aW9uKHN0cmluZykge1xuXHRcdFx0cmV0dXJuIHJlZ2V4Tm9uQVNDSUkudGVzdChzdHJpbmcpXG5cdFx0XHRcdD8gJ3huLS0nICsgZW5jb2RlKHN0cmluZylcblx0XHRcdFx0OiBzdHJpbmc7XG5cdFx0fSk7XG5cdH1cblxuXHQvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuXHQvKiogRGVmaW5lIHRoZSBwdWJsaWMgQVBJICovXG5cdHB1bnljb2RlID0ge1xuXHRcdC8qKlxuXHRcdCAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBQdW55Y29kZS5qcyB2ZXJzaW9uIG51bWJlci5cblx0XHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0XHQgKiBAdHlwZSBTdHJpbmdcblx0XHQgKi9cblx0XHQndmVyc2lvbic6ICcxLjQuMScsXG5cdFx0LyoqXG5cdFx0ICogQW4gb2JqZWN0IG9mIG1ldGhvZHMgdG8gY29udmVydCBmcm9tIEphdmFTY3JpcHQncyBpbnRlcm5hbCBjaGFyYWN0ZXJcblx0XHQgKiByZXByZXNlbnRhdGlvbiAoVUNTLTIpIHRvIFVuaWNvZGUgY29kZSBwb2ludHMsIGFuZCBiYWNrLlxuXHRcdCAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuXHRcdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHRcdCAqIEB0eXBlIE9iamVjdFxuXHRcdCAqL1xuXHRcdCd1Y3MyJzoge1xuXHRcdFx0J2RlY29kZSc6IHVjczJkZWNvZGUsXG5cdFx0XHQnZW5jb2RlJzogdWNzMmVuY29kZVxuXHRcdH0sXG5cdFx0J2RlY29kZSc6IGRlY29kZSxcblx0XHQnZW5jb2RlJzogZW5jb2RlLFxuXHRcdCd0b0FTQ0lJJzogdG9BU0NJSSxcblx0XHQndG9Vbmljb2RlJzogdG9Vbmljb2RlXG5cdH07XG5cblx0LyoqIEV4cG9zZSBgcHVueWNvZGVgICovXG5cdC8vIFNvbWUgQU1EIGJ1aWxkIG9wdGltaXplcnMsIGxpa2Ugci5qcywgY2hlY2sgZm9yIHNwZWNpZmljIGNvbmRpdGlvbiBwYXR0ZXJuc1xuXHQvLyBsaWtlIHRoZSBmb2xsb3dpbmc6XG5cdGlmIChcblx0XHR0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiZcblx0XHR0eXBlb2YgZGVmaW5lLmFtZCA9PSAnb2JqZWN0JyAmJlxuXHRcdGRlZmluZS5hbWRcblx0KSB7XG5cdFx0ZGVmaW5lKCdwdW55Y29kZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIHB1bnljb2RlO1xuXHRcdH0pO1xuXHR9IGVsc2UgaWYgKGZyZWVFeHBvcnRzICYmIGZyZWVNb2R1bGUpIHtcblx0XHRpZiAobW9kdWxlLmV4cG9ydHMgPT0gZnJlZUV4cG9ydHMpIHtcblx0XHRcdC8vIGluIE5vZGUuanMsIGlvLmpzLCBvciBSaW5nb0pTIHYwLjguMCtcblx0XHRcdGZyZWVNb2R1bGUuZXhwb3J0cyA9IHB1bnljb2RlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBpbiBOYXJ3aGFsIG9yIFJpbmdvSlMgdjAuNy4wLVxuXHRcdFx0Zm9yIChrZXkgaW4gcHVueWNvZGUpIHtcblx0XHRcdFx0cHVueWNvZGUuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAoZnJlZUV4cG9ydHNba2V5XSA9IHB1bnljb2RlW2tleV0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIHtcblx0XHQvLyBpbiBSaGlubyBvciBhIHdlYiBicm93c2VyXG5cdFx0cm9vdC5wdW55Y29kZSA9IHB1bnljb2RlO1xuXHR9XG5cbn0odGhpcykpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFJQTtBQUNBO0FBTkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFhQTtBQWJBO0FBQ0E7QUFjQTtBQUNBO0FBaEJBO0FBQUE7QUFrQkE7QUFsQkE7QUFDQTtBQW1CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQUtBO0FBQ0E7QUE1QkE7QUFBQTtBQUNBO0FBK0JBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFXQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBZkE7QUFBQTtBQUNBO0FBbUJBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBckJBO0FBd0JBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUNBLGFBYUE7QUFFQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/node-libs-browser/node_modules/punycode/punycode.js\n");
2517
2518/***/ }),
2519
2520/***/ "../../../node_modules/nullthrows/nullthrows.js":
2521/*!*********************************************************************************!*\
2522 !*** /home/runner/work/graphiql/graphiql/node_modules/nullthrows/nullthrows.js ***!
2523 \*********************************************************************************/
2524/*! no static exports found */
2525/***/ (function(module, exports, __webpack_require__) {
2526
2527eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n function nullthrows(x, message) {\n if (x != null) {\n return x;\n }\n\n var error = new Error(message !== undefined ? message : 'Got unexpected ' + x);\n error.framesToPop = 1; // Skip nullthrows's own stack frame.\n\n throw error;\n }\n\n module.exports = nullthrows;\n module.exports.default = nullthrows;\n Object.defineProperty(module.exports, '__esModule', {\n value: true\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL251bGx0aHJvd3MvbnVsbHRocm93cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9udWxsdGhyb3dzL251bGx0aHJvd3MuanM/ODI5NSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIG51bGx0aHJvd3MoeCwgbWVzc2FnZSkge1xuICBpZiAoeCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHg7XG4gIH1cbiAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UgIT09IHVuZGVmaW5lZCA/IG1lc3NhZ2UgOiAnR290IHVuZXhwZWN0ZWQgJyArIHgpO1xuICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIFNraXAgbnVsbHRocm93cydzIG93biBzdGFjayBmcmFtZS5cbiAgdGhyb3cgZXJyb3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbnVsbHRocm93cztcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBudWxsdGhyb3dzO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLmV4cG9ydHMsICdfX2VzTW9kdWxlJywge3ZhbHVlOiB0cnVlfSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/nullthrows/nullthrows.js\n");
2528
2529/***/ }),
2530
2531/***/ "../../../node_modules/regenerator-runtime/runtime.js":
2532/*!***************************************************************************************!*\
2533 !*** /home/runner/work/graphiql/graphiql/node_modules/regenerator-runtime/runtime.js ***!
2534 \***************************************************************************************/
2535/*! no static exports found */
2536/***/ (function(module, exports, __webpack_require__) {
2537
2538eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n /**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n var runtime = function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function (obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n return generator;\n }\n\n exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\"; // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n\n var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n\n\n var IteratorPrototype = {};\n\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n\n if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"); // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function (genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n };\n\n exports.mark = function (genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n\n genFun.prototype = Object.create(Gp);\n return genFun;\n }; // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n\n\n exports.awrap = function (arg) {\n return {\n __await: arg\n };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n\n if (value && typeof value === \"object\" && hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function (unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function (error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n } // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n\n\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n\n exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n\n exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n } // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n\n\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n var record = tryCatch(innerFn, self, context);\n\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n } else if (record.type === \"throw\") {\n state = GenStateCompleted; // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n } // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (!info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield).\n\n context.next = delegate.nextLoc; // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n } // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n\n\n context.delegate = null;\n return ContinueSentinel;\n } // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n\n\n defineIteratorMethods(Gp);\n define(Gp, toStringTagSymbol, \"Generator\"); // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n\n Gp[iteratorSymbol] = function () {\n return this;\n };\n\n Gp.toString = function () {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{\n tryLoc: \"root\"\n }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n keys.reverse(); // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n } // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n\n\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n return next;\n };\n\n return next.next = next;\n }\n } // Return an iterator with no values.\n\n\n return {\n next: doneResult\n };\n }\n\n exports.values = values;\n\n function doneResult() {\n return {\n value: undefined,\n done: true\n };\n }\n\n Context.prototype = {\n constructor: Context,\n reset: function (skipTempReset) {\n this.prev = 0;\n this.next = 0; // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n this.method = \"next\";\n this.arg = undefined;\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n stop: function () {\n this.done = true;\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n dispatchException: function (exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n abrupt: function (type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n complete: function (record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" || record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n finish: function (finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n \"catch\": function (tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n } // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function (iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n }; // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n\n return exports;\n }( // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n true ? module.exports : undefined);\n\n try {\n regeneratorRuntime = runtime;\n } catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanM/NjllMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbnZhciBydW50aW1lID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIHZhciBPcCA9IE9iamVjdC5wcm90b3R5cGU7XG4gIHZhciBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eTtcbiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG4gIHZhciAkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiID8gU3ltYm9sIDoge307XG4gIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gIHZhciBhc3luY0l0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCI7XG4gIHZhciB0b1N0cmluZ1RhZ1N5bWJvbCA9ICRTeW1ib2wudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG5cbiAgZnVuY3Rpb24gZGVmaW5lKG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIG9ialtrZXldO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gSUUgOCBoYXMgYSBicm9rZW4gT2JqZWN0LmRlZmluZVByb3BlcnR5IHRoYXQgb25seSB3b3JrcyBvbiBET00gb2JqZWN0cy5cbiAgICBkZWZpbmUoe30sIFwiXCIpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBkZWZpbmUgPSBmdW5jdGlvbihvYmosIGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfVxuICBleHBvcnRzLndyYXAgPSB3cmFwO1xuXG4gIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG4gIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG4gIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG4gIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG4gIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcbiAgICB9XG4gIH1cblxuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG4gIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cbiAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRpc3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuXG4gIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cbiAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvclxuICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gIC8vIGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgaXQuXG4gIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICBJdGVyYXRvclByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gIGlmIChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAmJlxuICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7XG4gICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAvLyBvZiB0aGUgcG9seWZpbGwuXG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxuXG4gIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9XG4gICAgR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IGRlZmluZShcbiAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSxcbiAgICB0b1N0cmluZ1RhZ1N5bWJvbCxcbiAgICBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgKTtcblxuICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICBkZWZpbmUocHJvdG90eXBlLCBtZXRob2QsIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBjdG9yXG4gICAgICA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG4gICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuICAgICAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgICAgIDogZmFsc2U7XG4gIH07XG5cbiAgZXhwb3J0cy5tYXJrID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICBkZWZpbmUoZ2VuRnVuLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JGdW5jdGlvblwiKTtcbiAgICB9XG4gICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApO1xuICAgIHJldHVybiBnZW5GdW47XG4gIH07XG5cbiAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG4gIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG4gIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC5cbiAgZXhwb3J0cy5hd3JhcCA9IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yLCBQcm9taXNlSW1wbCkge1xuICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHJlamVjdChyZWNvcmQuYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWNvcmQuYXJnO1xuICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGludm9rZShcInRocm93XCIsIGVyciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlSW1wbC5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkge1xuICAgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG4gICAgICAgICAgLy8gdGhlIC52YWx1ZSBvZiB0aGUgUHJvbWlzZTx7dmFsdWUsZG9uZX0+IHJlc3VsdCBmb3IgdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uXG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgICAgICAvLyBJZiBhIHJlamVjdGVkIFByb21pc2Ugd2FzIHlpZWxkZWQsIHRocm93IHRoZSByZWplY3Rpb24gYmFja1xuICAgICAgICAgIC8vIGludG8gdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgaGFuZGxlZCB0aGVyZS5cbiAgICAgICAgICByZXR1cm4gaW52b2tlKFwidGhyb3dcIiwgZXJyb3IsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cbiAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlSW1wbChmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcbiAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcbiAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKFxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5IGxhdGVyXG4gICAgICAgICAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICkgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG4gICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIEFzeW5jSXRlcmF0b3IucHJvdG90eXBlW2FzeW5jSXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICBleHBvcnRzLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yO1xuXG4gIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2ZcbiAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG4gIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuICBleHBvcnRzLmFzeW5jID0gZnVuY3Rpb24oaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QsIFByb21pc2VJbXBsKSB7XG4gICAgaWYgKFByb21pc2VJbXBsID09PSB2b2lkIDApIFByb21pc2VJbXBsID0gUHJvbWlzZTtcblxuICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3IoXG4gICAgICB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSxcbiAgICAgIFByb21pc2VJbXBsXG4gICAgKTtcblxuICAgIHJldHVybiBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbilcbiAgICAgID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG4gICAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7XG4gICAgICAgIH0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuICAgIHZhciBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQ7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVDb21wbGV0ZWQpIHtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgdGhyb3cgYXJnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcbiAgICAgICAgLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWdlbmVyYXRvcnJlc3VtZVxuICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGNvbnRleHQuYXJnID0gYXJnO1xuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuICAgICAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCA9PT0gQ29udGludWVTZW50aW5lbCkgY29udGludWU7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVSZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgY29udGV4dC5zZW50ID0gY29udGV4dC5fc2VudCA9IGNvbnRleHQuYXJnO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydCkge1xuICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAgIHRocm93IGNvbnRleHQuYXJnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgICBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBjb250ZXh0LmFyZyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZSA9IEdlblN0YXRlRXhlY3V0aW5nO1xuXG4gICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG4gICAgICAgICAgLy8gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBmcm9tIGlubmVyRm4sIHdlIGxlYXZlIHN0YXRlID09PVxuICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cbiAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgPyBHZW5TdGF0ZUNvbXBsZXRlZFxuICAgICAgICAgICAgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXG4gICAgICAgICAgaWYgKHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZyxcbiAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXhjZXB0aW9uIGJ5IGxvb3BpbmcgYmFjayBhcm91bmQgdG8gdGhlXG4gICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZykgY2FsbCBhYm92ZS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gQ2FsbCBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF0oY29udGV4dC5hcmcpIGFuZCBoYW5kbGUgdGhlXG4gIC8vIHJlc3VsdCwgZWl0aGVyIGJ5IHJldHVybmluZyBhIHsgdmFsdWUsIGRvbmUgfSByZXN1bHQgZnJvbSB0aGVcbiAgLy8gZGVsZWdhdGUgaXRlcmF0b3IsIG9yIGJ5IG1vZGlmeWluZyBjb250ZXh0Lm1ldGhvZCBhbmQgY29udGV4dC5hcmcsXG4gIC8vIHNldHRpbmcgY29udGV4dC5kZWxlZ2F0ZSB0byBudWxsLCBhbmQgcmV0dXJuaW5nIHRoZSBDb250aW51ZVNlbnRpbmVsLlxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEEgLnRocm93IG9yIC5yZXR1cm4gd2hlbiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIG5vIC50aHJvd1xuICAgICAgLy8gbWV0aG9kIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC5cbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAvLyBOb3RlOiBbXCJyZXR1cm5cIl0gbXVzdCBiZSB1c2VkIGZvciBFUzMgcGFyc2luZyBjb21wYXRpYmlsaXR5LlxuICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3JbXCJyZXR1cm5cIl0pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG4gICAgICAgICAgLy8gY2hhbmNlIHRvIGNsZWFuIHVwLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAvLyBJZiBtYXliZUludm9rZURlbGVnYXRlKGNvbnRleHQpIGNoYW5nZWQgY29udGV4dC5tZXRob2QgZnJvbVxuICAgICAgICAgICAgLy8gXCJyZXR1cm5cIiB0byBcInRocm93XCIsIGxldCB0aGF0IG92ZXJyaWRlIHRoZSBUeXBlRXJyb3IgYmVsb3cuXG4gICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcblxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXG4gICAgaWYgKCEgaW5mbykge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnlcbiAgICAgIC8vIHZhcmlhYmxlIHNwZWNpZmllZCBieSBkZWxlZ2F0ZS5yZXN1bHROYW1lIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZTtcblxuICAgICAgLy8gUmVzdW1lIGV4ZWN1dGlvbiBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbiAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYztcblxuICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci5cbiAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgfVxuXG4gIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4gdGVybXMgb2YgdGhlXG4gIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuICBkZWZpbmUoR3AsIHRvU3RyaW5nVGFnU3ltYm9sLCBcIkdlbmVyYXRvclwiKTtcblxuICAvLyBBIEdlbmVyYXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3aGVuIHRoZVxuICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZVxuICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAvLyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMgdGhhdCBkb2Vzbid0IGhhcHBlbi5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuXG4gIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH07XG5cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG4gICAgaWYgKDEgaW4gbG9jcykge1xuICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdO1xuICAgIH1cblxuICAgIGlmICgyIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmZpbmFsbHlMb2MgPSBsb2NzWzJdO1xuICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuICAgIH1cblxuICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgZGVsZXRlIHJlY29yZC5hcmc7XG4gICAgZW50cnkuY29tcGxldGlvbiA9IHJlY29yZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2hcbiAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG4gICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogXCJyb290XCIgfV07XG4gICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gIH1cblxuICBleHBvcnRzLmtleXMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGtleXMucHVzaChrZXkpO1xuICAgIH1cbiAgICBrZXlzLnJldmVyc2UoKTtcblxuICAgIC8vIFJhdGhlciB0aGFuIHJldHVybmluZyBhbiBvYmplY3Qgd2l0aCBhIG5leHQgbWV0aG9kLCB3ZSBrZWVwXG4gICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICBuZXh0LnZhbHVlID0ga2V5O1xuICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXNcbiAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsdWVzKGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG4gICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gaXRlcmFibGU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4oaXRlcmFibGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICB3aGlsZSAoKytpIDwgaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoaXRlcmFibGUsIGkpKSB7XG4gICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcbiAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cbiAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG4gIH1cbiAgZXhwb3J0cy52YWx1ZXMgPSB2YWx1ZXM7XG5cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH1cblxuICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcblxuICAgIHJlc2V0OiBmdW5jdGlvbihza2lwVGVtcFJlc2V0KSB7XG4gICAgICB0aGlzLnByZXYgPSAwO1xuICAgICAgdGhpcy5uZXh0ID0gMDtcbiAgICAgIC8vIFJlc2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG5cbiAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcbiAgICAgICAgICAvLyBOb3Qgc3VyZSBhYm91dCB0aGUgb3B0aW1hbCBvcmRlciBvZiB0aGVzZSBjb25kaXRpb25zOlxuICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiZcbiAgICAgICAgICAgICAgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuXG4gICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcbiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICB9LFxuXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uKGV4Y2VwdGlvbikge1xuICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcbiAgICAgICAgcmVjb3JkLmFyZyA9IGV4Y2VwdGlvbjtcbiAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXG4gICAgICAgIGlmIChjYXVnaHQpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhISBjYXVnaHQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG4gICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvXG4gICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICB2YXIgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG5cbiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0NhdGNoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFicnVwdDogZnVuY3Rpb24odHlwZSwgYXJnKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiZcbiAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJlxuICAgICAgICAgICh0eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgdHlwZSA9PT0gXCJjb250aW51ZVwiKSAmJlxuICAgICAgICAgIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmXG4gICAgICAgICAgYXJnIDw9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcbiAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuICAgICAgICBmaW5hbGx5RW50cnkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcbiAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2M7XG4gICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuICAgIH0sXG5cbiAgICBjb21wbGV0ZTogZnVuY3Rpb24ocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG4gICAgICAgIHRoaXMucnZhbCA9IHRoaXMuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIiAmJiBhZnRlckxvYykge1xuICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfSxcblxuICAgIGZpbmlzaDogZnVuY3Rpb24oZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG4gICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbih0cnlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcbiAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93bjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cbiAgICAgIC8vIGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBrbm93biBjYXRjaCBibG9jay5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuXG4gICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24oaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLFxuICAgICAgICByZXN1bHROYW1lOiByZXN1bHROYW1lLFxuICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cbiAgICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cbiAgfTtcblxuICAvLyBSZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIGFzIGEgQ29tbW9uSlMgbW9kdWxlXG4gIC8vIG9yIG5vdCwgcmV0dXJuIHRoZSBydW50aW1lIG9iamVjdCBzbyB0aGF0IHdlIGNhbiBkZWNsYXJlIHRoZSB2YXJpYWJsZVxuICAvLyByZWdlbmVyYXRvclJ1bnRpbWUgaW4gdGhlIG91dGVyIHNjb3BlLCB3aGljaCBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmVcbiAgLy8gaW5qZWN0ZWQgZWFzaWx5IGJ5IGBiaW4vcmVnZW5lcmF0b3IgLS1pbmNsdWRlLXJ1bnRpbWUgc2NyaXB0LmpzYC5cbiAgcmV0dXJuIGV4cG9ydHM7XG5cbn0oXG4gIC8vIElmIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZSwgdXNlIG1vZHVsZS5leHBvcnRzXG4gIC8vIGFzIHRoZSByZWdlbmVyYXRvclJ1bnRpbWUgbmFtZXNwYWNlLiBPdGhlcndpc2UgY3JlYXRlIGEgbmV3IGVtcHR5XG4gIC8vIG9iamVjdC4gRWl0aGVyIHdheSwgdGhlIHJlc3VsdGluZyBvYmplY3Qgd2lsbCBiZSB1c2VkIHRvIGluaXRpYWxpemVcbiAgLy8gdGhlIHJlZ2VuZXJhdG9yUnVudGltZSB2YXJpYWJsZSBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS5cbiAgdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiA/IG1vZHVsZS5leHBvcnRzIDoge31cbikpO1xuXG50cnkge1xuICByZWdlbmVyYXRvclJ1bnRpbWUgPSBydW50aW1lO1xufSBjYXRjaCAoYWNjaWRlbnRhbFN0cmljdE1vZGUpIHtcbiAgLy8gVGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSBydW5uaW5nIGluIHN0cmljdCBtb2RlLCBzbyB0aGUgYWJvdmVcbiAgLy8gYXNzaWdubWVudCBzaG91bGQgYWx3YXlzIHdvcmsgdW5sZXNzIHNvbWV0aGluZyBpcyBtaXNjb25maWd1cmVkLiBKdXN0XG4gIC8vIGluIGNhc2UgcnVudGltZS5qcyBhY2NpZGVudGFsbHkgcnVucyBpbiBzdHJpY3QgbW9kZSwgd2UgY2FuIGVzY2FwZVxuICAvLyBzdHJpY3QgbW9kZSB1c2luZyBhIGdsb2JhbCBGdW5jdGlvbiBjYWxsLiBUaGlzIGNvdWxkIGNvbmNlaXZhYmx5IGZhaWxcbiAgLy8gaWYgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBmb3JiaWRzIHVzaW5nIEZ1bmN0aW9uLCBidXQgaW4gdGhhdCBjYXNlXG4gIC8vIHRoZSBwcm9wZXIgc29sdXRpb24gaXMgdG8gZml4IHRoZSBhY2NpZGVudGFsIHN0cmljdCBtb2RlIHByb2JsZW0uIElmXG4gIC8vIHlvdSd2ZSBtaXNjb25maWd1cmVkIHlvdXIgYnVuZGxlciB0byBmb3JjZSBzdHJpY3QgbW9kZSBhbmQgYXBwbGllZCBhXG4gIC8vIENTUCB0byBmb3JiaWQgRnVuY3Rpb24sIGFuZCB5b3UncmUgbm90IHdpbGxpbmcgdG8gZml4IGVpdGhlciBvZiB0aG9zZVxuICAvLyBwcm9ibGVtcywgcGxlYXNlIGRldGFpbCB5b3VyIHVuaXF1ZSBwcmVkaWNhbWVudCBpbiBhIEdpdEh1YiBpc3N1ZS5cbiAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBS0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXJNQTtBQXlNQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/regenerator-runtime/runtime.js\n");
2539
2540/***/ }),
2541
2542/***/ "../../../node_modules/toggle-selection/index.js":
2543/*!**********************************************************************************!*\
2544 !*** /home/runner/work/graphiql/graphiql/node_modules/toggle-selection/index.js ***!
2545 \**********************************************************************************/
2546/*! no static exports found */
2547/***/ (function(module, exports, __webpack_require__) {
2548
2549eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n module.exports = function () {\n var selection = document.getSelection();\n\n if (!selection.rangeCount) {\n return function () {};\n }\n\n var active = document.activeElement;\n var ranges = [];\n\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) {\n // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' && selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function (range) {\n selection.addRange(range);\n });\n }\n\n active && active.focus();\n };\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RvZ2dsZS1zZWxlY3Rpb24vaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvdG9nZ2xlLXNlbGVjdGlvbi9pbmRleC5qcz84YmJjIl0sInNvdXJjZXNDb250ZW50IjpbIlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzZWxlY3Rpb24gPSBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKTtcbiAgaWYgKCFzZWxlY3Rpb24ucmFuZ2VDb3VudCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuICB2YXIgYWN0aXZlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblxuICB2YXIgcmFuZ2VzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0aW9uLnJhbmdlQ291bnQ7IGkrKykge1xuICAgIHJhbmdlcy5wdXNoKHNlbGVjdGlvbi5nZXRSYW5nZUF0KGkpKTtcbiAgfVxuXG4gIHN3aXRjaCAoYWN0aXZlLnRhZ05hbWUudG9VcHBlckNhc2UoKSkgeyAvLyAudG9VcHBlckNhc2UgaGFuZGxlcyBYSFRNTFxuICAgIGNhc2UgJ0lOUFVUJzpcbiAgICBjYXNlICdURVhUQVJFQSc6XG4gICAgICBhY3RpdmUuYmx1cigpO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgYWN0aXZlID0gbnVsbDtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHNlbGVjdGlvbi50eXBlID09PSAnQ2FyZXQnICYmXG4gICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuXG4gICAgaWYgKCFzZWxlY3Rpb24ucmFuZ2VDb3VudCkge1xuICAgICAgcmFuZ2VzLmZvckVhY2goZnVuY3Rpb24ocmFuZ2UpIHtcbiAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGFjdGl2ZSAmJlxuICAgIGFjdGl2ZS5mb2N1cygpO1xuICB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBQ0E7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/toggle-selection/index.js\n");
2550
2551/***/ }),
2552
2553/***/ "../../../node_modules/uc.micro/categories/Cc/regex.js":
2554/*!****************************************************************************************!*\
2555 !*** /home/runner/work/graphiql/graphiql/node_modules/uc.micro/categories/Cc/regex.js ***!
2556 \****************************************************************************************/
2557/*! no static exports found */
2558/***/ (function(module, exports, __webpack_require__) {
2559
2560eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n module.exports = /[\\0-\\x1F\\x7F-\\x9F]/;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VjLm1pY3JvL2NhdGVnb3JpZXMvQ2MvcmVnZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvdWMubWljcm8vY2F0ZWdvcmllcy9DYy9yZWdleC5qcz84MzMxIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzPS9bXFwwLVxceDFGXFx4N0YtXFx4OUZdLyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/uc.micro/categories/Cc/regex.js\n");
2561
2562/***/ }),
2563
2564/***/ "../../../node_modules/uc.micro/categories/Cf/regex.js":
2565/*!****************************************************************************************!*\
2566 !*** /home/runner/work/graphiql/graphiql/node_modules/uc.micro/categories/Cf/regex.js ***!
2567 \****************************************************************************************/
2568/*! no static exports found */
2569/***/ (function(module, exports, __webpack_require__) {
2570
2571eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n module.exports = /[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VjLm1pY3JvL2NhdGVnb3JpZXMvQ2YvcmVnZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvdWMubWljcm8vY2F0ZWdvcmllcy9DZi9yZWdleC5qcz8zODFmIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzPS9bXFx4QURcXHUwNjAwLVxcdTA2MDVcXHUwNjFDXFx1MDZERFxcdTA3MEZcXHUwOEUyXFx1MTgwRVxcdTIwMEItXFx1MjAwRlxcdTIwMkEtXFx1MjAyRVxcdTIwNjAtXFx1MjA2NFxcdTIwNjYtXFx1MjA2RlxcdUZFRkZcXHVGRkY5LVxcdUZGRkJdfFxcdUQ4MDRbXFx1RENCRFxcdURDQ0RdfFxcdUQ4MkZbXFx1RENBMC1cXHVEQ0EzXXxcXHVEODM0W1xcdURENzMtXFx1REQ3QV18XFx1REI0MFtcXHVEQzAxXFx1REMyMC1cXHVEQzdGXS8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/uc.micro/categories/Cf/regex.js\n");
2572
2573/***/ }),
2574
2575/***/ "../../../node_modules/uc.micro/categories/P/regex.js":
2576/*!***************************************************************************************!*\
2577 !*** /home/runner/work/graphiql/graphiql/node_modules/uc.micro/categories/P/regex.js ***!
2578 \***************************************************************************************/
2579/*! no static exports found */
2580/***/ (function(module, exports, __webpack_require__) {
2581
2582eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n module.exports = /[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4E\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDF55-\\uDF59]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VjLm1pY3JvL2NhdGVnb3JpZXMvUC9yZWdleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy91Yy5taWNyby9jYXRlZ29yaWVzL1AvcmVnZXguanM/MTQ0NyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cz0vWyEtIyUtXFwqLC1cXC86O1xcP0BcXFstXFxdX1xce1xcfVxceEExXFx4QTdcXHhBQlxceEI2XFx4QjdcXHhCQlxceEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDU4QVxcdTA1QkVcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRVxcdTA2MUZcXHUwNjZBLVxcdTA2NkRcXHUwNkQ0XFx1MDcwMC1cXHUwNzBEXFx1MDdGNy1cXHUwN0Y5XFx1MDgzMC1cXHUwODNFXFx1MDg1RVxcdTA5NjRcXHUwOTY1XFx1MDk3MFxcdTA5RkRcXHUwQTc2XFx1MEFGMFxcdTBDODRcXHUwREY0XFx1MEU0RlxcdTBFNUFcXHUwRTVCXFx1MEYwNC1cXHUwRjEyXFx1MEYxNFxcdTBGM0EtXFx1MEYzRFxcdTBGODVcXHUwRkQwLVxcdTBGRDRcXHUwRkQ5XFx1MEZEQVxcdTEwNEEtXFx1MTA0RlxcdTEwRkJcXHUxMzYwLVxcdTEzNjhcXHUxNDAwXFx1MTY2RFxcdTE2NkVcXHUxNjlCXFx1MTY5Q1xcdTE2RUItXFx1MTZFRFxcdTE3MzVcXHUxNzM2XFx1MTdENC1cXHUxN0Q2XFx1MTdEOC1cXHUxN0RBXFx1MTgwMC1cXHUxODBBXFx1MTk0NFxcdTE5NDVcXHUxQTFFXFx1MUExRlxcdTFBQTAtXFx1MUFBNlxcdTFBQTgtXFx1MUFBRFxcdTFCNUEtXFx1MUI2MFxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjA0M1xcdTIwNDUtXFx1MjA1MVxcdTIwNTMtXFx1MjA1RVxcdTIwN0RcXHUyMDdFXFx1MjA4RFxcdTIwOEVcXHUyMzA4LVxcdTIzMEJcXHUyMzI5XFx1MjMyQVxcdTI3NjgtXFx1Mjc3NVxcdTI3QzVcXHUyN0M2XFx1MjdFNi1cXHUyN0VGXFx1Mjk4My1cXHUyOTk4XFx1MjlEOC1cXHUyOURCXFx1MjlGQ1xcdTI5RkRcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwLVxcdTJFMkVcXHUyRTMwLVxcdTJFNEVcXHUzMDAxLVxcdTMwMDNcXHUzMDA4LVxcdTMwMTFcXHUzMDE0LVxcdTMwMUZcXHUzMDMwXFx1MzAzRFxcdTMwQTBcXHUzMEZCXFx1QTRGRVxcdUE0RkZcXHVBNjBELVxcdUE2MEZcXHVBNjczXFx1QTY3RVxcdUE2RjItXFx1QTZGN1xcdUE4NzQtXFx1QTg3N1xcdUE4Q0VcXHVBOENGXFx1QThGOC1cXHVBOEZBXFx1QThGQ1xcdUE5MkVcXHVBOTJGXFx1QTk1RlxcdUE5QzEtXFx1QTlDRFxcdUE5REVcXHVBOURGXFx1QUE1Qy1cXHVBQTVGXFx1QUFERVxcdUFBREZcXHVBQUYwXFx1QUFGMVxcdUFCRUJcXHVGRDNFXFx1RkQzRlxcdUZFMTAtXFx1RkUxOVxcdUZFMzAtXFx1RkU1MlxcdUZFNTQtXFx1RkU2MVxcdUZFNjNcXHVGRTY4XFx1RkU2QVxcdUZFNkJcXHVGRjAxLVxcdUZGMDNcXHVGRjA1LVxcdUZGMEFcXHVGRjBDLVxcdUZGMEZcXHVGRjFBXFx1RkYxQlxcdUZGMUZcXHVGRjIwXFx1RkYzQi1cXHVGRjNEXFx1RkYzRlxcdUZGNUJcXHVGRjVEXFx1RkY1Ri1cXHVGRjY1XXxcXHVEODAwW1xcdUREMDAtXFx1REQwMlxcdURGOUZcXHVERkQwXXxcXHVEODAxXFx1REQ2RnxcXHVEODAyW1xcdURDNTdcXHVERDFGXFx1REQzRlxcdURFNTAtXFx1REU1OFxcdURFN0ZcXHVERUYwLVxcdURFRjZcXHVERjM5LVxcdURGM0ZcXHVERjk5LVxcdURGOUNdfFxcdUQ4MDNbXFx1REY1NS1cXHVERjU5XXxcXHVEODA0W1xcdURDNDctXFx1REM0RFxcdURDQkJcXHVEQ0JDXFx1RENCRS1cXHVEQ0MxXFx1REQ0MC1cXHVERDQzXFx1REQ3NFxcdURENzVcXHVEREM1LVxcdUREQzhcXHVERENEXFx1REREQlxcdUREREQtXFx1RERERlxcdURFMzgtXFx1REUzRFxcdURFQTldfFxcdUQ4MDVbXFx1REM0Qi1cXHVEQzRGXFx1REM1QlxcdURDNURcXHVEQ0M2XFx1RERDMS1cXHVEREQ3XFx1REU0MS1cXHVERTQzXFx1REU2MC1cXHVERTZDXFx1REYzQy1cXHVERjNFXXxcXHVEODA2W1xcdURDM0JcXHVERTNGLVxcdURFNDZcXHVERTlBLVxcdURFOUNcXHVERTlFLVxcdURFQTJdfFxcdUQ4MDdbXFx1REM0MS1cXHVEQzQ1XFx1REM3MFxcdURDNzFcXHVERUY3XFx1REVGOF18XFx1RDgwOVtcXHVEQzcwLVxcdURDNzRdfFxcdUQ4MUFbXFx1REU2RVxcdURFNkZcXHVERUY1XFx1REYzNy1cXHVERjNCXFx1REY0NF18XFx1RDgxQltcXHVERTk3LVxcdURFOUFdfFxcdUQ4MkZcXHVEQzlGfFxcdUQ4MzZbXFx1REU4Ny1cXHVERThCXXxcXHVEODNBW1xcdURENUVcXHVERDVGXS8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/uc.micro/categories/P/regex.js\n");
2583
2584/***/ }),
2585
2586/***/ "../../../node_modules/uc.micro/categories/Z/regex.js":
2587/*!***************************************************************************************!*\
2588 !*** /home/runner/work/graphiql/graphiql/node_modules/uc.micro/categories/Z/regex.js ***!
2589 \***************************************************************************************/
2590/*! no static exports found */
2591/***/ (function(module, exports, __webpack_require__) {
2592
2593eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n module.exports = /[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VjLm1pY3JvL2NhdGVnb3JpZXMvWi9yZWdleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy9ob21lL3J1bm5lci93b3JrL2dyYXBoaXFsL2dyYXBoaXFsL25vZGVfbW9kdWxlcy91Yy5taWNyby9jYXRlZ29yaWVzL1ovcmVnZXguanM/MmE5ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cz0vWyBcXHhBMFxcdTE2ODBcXHUyMDAwLVxcdTIwMEFcXHUyMDI4XFx1MjAyOVxcdTIwMkZcXHUyMDVGXFx1MzAwMF0vIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/uc.micro/categories/Z/regex.js\n");
2594
2595/***/ }),
2596
2597/***/ "../../../node_modules/uc.micro/index.js":
2598/*!**************************************************************************!*\
2599 !*** /home/runner/work/graphiql/graphiql/node_modules/uc.micro/index.js ***!
2600 \**************************************************************************/
2601/*! no static exports found */
2602/***/ (function(module, exports, __webpack_require__) {
2603
2604eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n 'use strict';\n\n exports.Any = __webpack_require__(/*! ./properties/Any/regex */ \"../../../node_modules/uc.micro/properties/Any/regex.js\");\n exports.Cc = __webpack_require__(/*! ./categories/Cc/regex */ \"../../../node_modules/uc.micro/categories/Cc/regex.js\");\n exports.Cf = __webpack_require__(/*! ./categories/Cf/regex */ \"../../../node_modules/uc.micro/categories/Cf/regex.js\");\n exports.P = __webpack_require__(/*! ./categories/P/regex */ \"../../../node_modules/uc.micro/categories/P/regex.js\");\n exports.Z = __webpack_require__(/*! ./categories/Z/regex */ \"../../../node_modules/uc.micro/categories/Z/regex.js\");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VjLm1pY3JvL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL3VjLm1pY3JvL2luZGV4LmpzPzcwNTEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLkFueSA9IHJlcXVpcmUoJy4vcHJvcGVydGllcy9BbnkvcmVnZXgnKTtcbmV4cG9ydHMuQ2MgID0gcmVxdWlyZSgnLi9jYXRlZ29yaWVzL0NjL3JlZ2V4Jyk7XG5leHBvcnRzLkNmICA9IHJlcXVpcmUoJy4vY2F0ZWdvcmllcy9DZi9yZWdleCcpO1xuZXhwb3J0cy5QICAgPSByZXF1aXJlKCcuL2NhdGVnb3JpZXMvUC9yZWdleCcpO1xuZXhwb3J0cy5aICAgPSByZXF1aXJlKCcuL2NhdGVnb3JpZXMvWi9yZWdleCcpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/uc.micro/index.js\n");
2605
2606/***/ }),
2607
2608/***/ "../../../node_modules/uc.micro/properties/Any/regex.js":
2609/*!*****************************************************************************************!*\
2610 !*** /home/runner/work/graphiql/graphiql/node_modules/uc.micro/properties/Any/regex.js ***!
2611 \*****************************************************************************************/
2612/*! no static exports found */
2613/***/ (function(module, exports, __webpack_require__) {
2614
2615eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n module.exports = /[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VjLm1pY3JvL3Byb3BlcnRpZXMvQW55L3JlZ2V4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvL2hvbWUvcnVubmVyL3dvcmsvZ3JhcGhpcWwvZ3JhcGhpcWwvbm9kZV9tb2R1bGVzL3VjLm1pY3JvL3Byb3BlcnRpZXMvQW55L3JlZ2V4LmpzPzNmYzYiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHM9L1tcXDAtXFx1RDdGRlxcdUUwMDAtXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXS8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/uc.micro/properties/Any/regex.js\n");
2616
2617/***/ }),
2618
2619/***/ "../../../node_modules/vscode-languageserver-types/lib/esm/main.js":
2620/*!****************************************************************************************************!*\
2621 !*** /home/runner/work/graphiql/graphiql/node_modules/vscode-languageserver-types/lib/esm/main.js ***!
2622 \****************************************************************************************************/
2623/*! no static exports found */
2624/***/ (function(module, exports, __webpack_require__) {
2625
2626eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n /* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\n 'use strict';\n /**\r\n * The Position namespace provides helper functions to work with\r\n * [Position](#Position) literals.\r\n */\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.TextDocument = _exports.EOL = _exports.SelectionRange = _exports.DocumentLink = _exports.FormattingOptions = _exports.CodeLens = _exports.CodeAction = _exports.CodeActionContext = _exports.CodeActionKind = _exports.DocumentSymbol = _exports.SymbolInformation = _exports.SymbolTag = _exports.SymbolKind = _exports.DocumentHighlight = _exports.DocumentHighlightKind = _exports.SignatureInformation = _exports.ParameterInformation = _exports.Hover = _exports.MarkedString = _exports.CompletionList = _exports.CompletionItem = _exports.CompletionItemTag = _exports.InsertTextFormat = _exports.CompletionItemKind = _exports.MarkupContent = _exports.MarkupKind = _exports.TextDocumentItem = _exports.VersionedTextDocumentIdentifier = _exports.TextDocumentIdentifier = _exports.WorkspaceChange = _exports.WorkspaceEdit = _exports.DeleteFile = _exports.RenameFile = _exports.CreateFile = _exports.TextDocumentEdit = _exports.TextEdit = _exports.Command = _exports.Diagnostic = _exports.DiagnosticTag = _exports.DiagnosticSeverity = _exports.DiagnosticRelatedInformation = _exports.FoldingRange = _exports.FoldingRangeKind = _exports.ColorPresentation = _exports.ColorInformation = _exports.Color = _exports.LocationLink = _exports.Location = _exports.Range = _exports.Position = void 0;\n var Position;\n _exports.Position = Position;\n\n (function (Position) {\n /**\r\n * Creates a new Position literal from the given line and character.\r\n * @param line The position's line.\r\n * @param character The position's character.\r\n */\n function create(line, character) {\n return {\n line: line,\n character: character\n };\n }\n\n Position.create = create;\n /**\r\n * Checks whether the given liternal conforms to the [Position](#Position) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.number(candidate.line) && Is.number(candidate.character);\n }\n\n Position.is = is;\n })(Position || (_exports.Position = Position = {}));\n /**\r\n * The Range namespace provides helper functions to work with\r\n * [Range](#Range) literals.\r\n */\n\n\n var Range;\n _exports.Range = Range;\n\n (function (Range) {\n function create(one, two, three, four) {\n if (Is.number(one) && Is.number(two) && Is.number(three) && Is.number(four)) {\n return {\n start: Position.create(one, two),\n end: Position.create(three, four)\n };\n } else if (Position.is(one) && Position.is(two)) {\n return {\n start: one,\n end: two\n };\n } else {\n throw new Error(\"Range#create called with invalid arguments[\" + one + \", \" + two + \", \" + three + \", \" + four + \"]\");\n }\n }\n\n Range.create = create;\n /**\r\n * Checks whether the given literal conforms to the [Range](#Range) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end);\n }\n\n Range.is = is;\n })(Range || (_exports.Range = Range = {}));\n /**\r\n * The Location namespace provides helper functions to work with\r\n * [Location](#Location) literals.\r\n */\n\n\n var Location;\n _exports.Location = Location;\n\n (function (Location) {\n /**\r\n * Creates a Location literal.\r\n * @param uri The location's uri.\r\n * @param range The location's range.\r\n */\n function create(uri, range) {\n return {\n uri: uri,\n range: range\n };\n }\n\n Location.create = create;\n /**\r\n * Checks whether the given literal conforms to the [Location](#Location) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri));\n }\n\n Location.is = is;\n })(Location || (_exports.Location = Location = {}));\n /**\r\n * The LocationLink namespace provides helper functions to work with\r\n * [LocationLink](#LocationLink) literals.\r\n */\n\n\n var LocationLink;\n _exports.LocationLink = LocationLink;\n\n (function (LocationLink) {\n /**\r\n * Creates a LocationLink literal.\r\n * @param targetUri The definition's uri.\r\n * @param targetRange The full range of the definition.\r\n * @param targetSelectionRange The span of the symbol definition at the target.\r\n * @param originSelectionRange The span of the symbol being defined in the originating source file.\r\n */\n function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) {\n return {\n targetUri: targetUri,\n targetRange: targetRange,\n targetSelectionRange: targetSelectionRange,\n originSelectionRange: originSelectionRange\n };\n }\n\n LocationLink.create = create;\n /**\r\n * Checks whether the given literal conforms to the [LocationLink](#LocationLink) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri) && (Range.is(candidate.targetSelectionRange) || Is.undefined(candidate.targetSelectionRange)) && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange));\n }\n\n LocationLink.is = is;\n })(LocationLink || (_exports.LocationLink = LocationLink = {}));\n /**\r\n * The Color namespace provides helper functions to work with\r\n * [Color](#Color) literals.\r\n */\n\n\n var Color;\n _exports.Color = Color;\n\n (function (Color) {\n /**\r\n * Creates a new Color literal.\r\n */\n function create(red, green, blue, alpha) {\n return {\n red: red,\n green: green,\n blue: blue,\n alpha: alpha\n };\n }\n\n Color.create = create;\n /**\r\n * Checks whether the given literal conforms to the [Color](#Color) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.number(candidate.red) && Is.number(candidate.green) && Is.number(candidate.blue) && Is.number(candidate.alpha);\n }\n\n Color.is = is;\n })(Color || (_exports.Color = Color = {}));\n /**\r\n * The ColorInformation namespace provides helper functions to work with\r\n * [ColorInformation](#ColorInformation) literals.\r\n */\n\n\n var ColorInformation;\n _exports.ColorInformation = ColorInformation;\n\n (function (ColorInformation) {\n /**\r\n * Creates a new ColorInformation literal.\r\n */\n function create(range, color) {\n return {\n range: range,\n color: color\n };\n }\n\n ColorInformation.create = create;\n /**\r\n * Checks whether the given literal conforms to the [ColorInformation](#ColorInformation) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Range.is(candidate.range) && Color.is(candidate.color);\n }\n\n ColorInformation.is = is;\n })(ColorInformation || (_exports.ColorInformation = ColorInformation = {}));\n /**\r\n * The Color namespace provides helper functions to work with\r\n * [ColorPresentation](#ColorPresentation) literals.\r\n */\n\n\n var ColorPresentation;\n _exports.ColorPresentation = ColorPresentation;\n\n (function (ColorPresentation) {\n /**\r\n * Creates a new ColorInformation literal.\r\n */\n function create(label, textEdit, additionalTextEdits) {\n return {\n label: label,\n textEdit: textEdit,\n additionalTextEdits: additionalTextEdits\n };\n }\n\n ColorPresentation.create = create;\n /**\r\n * Checks whether the given literal conforms to the [ColorInformation](#ColorInformation) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.string(candidate.label) && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate)) && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is));\n }\n\n ColorPresentation.is = is;\n })(ColorPresentation || (_exports.ColorPresentation = ColorPresentation = {}));\n /**\r\n * Enum of known range kinds\r\n */\n\n\n var FoldingRangeKind;\n _exports.FoldingRangeKind = FoldingRangeKind;\n\n (function (FoldingRangeKind) {\n /**\r\n * Folding range for a comment\r\n */\n FoldingRangeKind[\"Comment\"] = \"comment\";\n /**\r\n * Folding range for a imports or includes\r\n */\n\n FoldingRangeKind[\"Imports\"] = \"imports\";\n /**\r\n * Folding range for a region (e.g. `#region`)\r\n */\n\n FoldingRangeKind[\"Region\"] = \"region\";\n })(FoldingRangeKind || (_exports.FoldingRangeKind = FoldingRangeKind = {}));\n /**\r\n * The folding range namespace provides helper functions to work with\r\n * [FoldingRange](#FoldingRange) literals.\r\n */\n\n\n var FoldingRange;\n _exports.FoldingRange = FoldingRange;\n\n (function (FoldingRange) {\n /**\r\n * Creates a new FoldingRange literal.\r\n */\n function create(startLine, endLine, startCharacter, endCharacter, kind) {\n var result = {\n startLine: startLine,\n endLine: endLine\n };\n\n if (Is.defined(startCharacter)) {\n result.startCharacter = startCharacter;\n }\n\n if (Is.defined(endCharacter)) {\n result.endCharacter = endCharacter;\n }\n\n if (Is.defined(kind)) {\n result.kind = kind;\n }\n\n return result;\n }\n\n FoldingRange.create = create;\n /**\r\n * Checks whether the given literal conforms to the [FoldingRange](#FoldingRange) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.number(candidate.startLine) && Is.number(candidate.startLine) && (Is.undefined(candidate.startCharacter) || Is.number(candidate.startCharacter)) && (Is.undefined(candidate.endCharacter) || Is.number(candidate.endCharacter)) && (Is.undefined(candidate.kind) || Is.string(candidate.kind));\n }\n\n FoldingRange.is = is;\n })(FoldingRange || (_exports.FoldingRange = FoldingRange = {}));\n /**\r\n * The DiagnosticRelatedInformation namespace provides helper functions to work with\r\n * [DiagnosticRelatedInformation](#DiagnosticRelatedInformation) literals.\r\n */\n\n\n var DiagnosticRelatedInformation;\n _exports.DiagnosticRelatedInformation = DiagnosticRelatedInformation;\n\n (function (DiagnosticRelatedInformation) {\n /**\r\n * Creates a new DiagnosticRelatedInformation literal.\r\n */\n function create(location, message) {\n return {\n location: location,\n message: message\n };\n }\n\n DiagnosticRelatedInformation.create = create;\n /**\r\n * Checks whether the given literal conforms to the [DiagnosticRelatedInformation](#DiagnosticRelatedInformation) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message);\n }\n\n DiagnosticRelatedInformation.is = is;\n })(DiagnosticRelatedInformation || (_exports.DiagnosticRelatedInformation = DiagnosticRelatedInformation = {}));\n /**\r\n * The diagnostic's severity.\r\n */\n\n\n var DiagnosticSeverity;\n _exports.DiagnosticSeverity = DiagnosticSeverity;\n\n (function (DiagnosticSeverity) {\n /**\r\n * Reports an error.\r\n */\n DiagnosticSeverity.Error = 1;\n /**\r\n * Reports a warning.\r\n */\n\n DiagnosticSeverity.Warning = 2;\n /**\r\n * Reports an information.\r\n */\n\n DiagnosticSeverity.Information = 3;\n /**\r\n * Reports a hint.\r\n */\n\n DiagnosticSeverity.Hint = 4;\n })(DiagnosticSeverity || (_exports.DiagnosticSeverity = DiagnosticSeverity = {}));\n /**\r\n * The diagnostic tags.\r\n *\r\n * @since 3.15.0\r\n */\n\n\n var DiagnosticTag;\n _exports.DiagnosticTag = DiagnosticTag;\n\n (function (DiagnosticTag) {\n /**\r\n * Unused or unnecessary code.\r\n *\r\n * Clients are allowed to render diagnostics with this tag faded out instead of having\r\n * an error squiggle.\r\n */\n DiagnosticTag.Unnecessary = 1;\n /**\r\n * Deprecated or obsolete code.\r\n *\r\n * Clients are allowed to rendered diagnostics with this tag strike through.\r\n */\n\n DiagnosticTag.Deprecated = 2;\n })(DiagnosticTag || (_exports.DiagnosticTag = DiagnosticTag = {}));\n /**\r\n * The Diagnostic namespace provides helper functions to work with\r\n * [Diagnostic](#Diagnostic) literals.\r\n */\n\n\n var Diagnostic;\n _exports.Diagnostic = Diagnostic;\n\n (function (Diagnostic) {\n /**\r\n * Creates a new Diagnostic literal.\r\n */\n function create(range, message, severity, code, source, relatedInformation) {\n var result = {\n range: range,\n message: message\n };\n\n if (Is.defined(severity)) {\n result.severity = severity;\n }\n\n if (Is.defined(code)) {\n result.code = code;\n }\n\n if (Is.defined(source)) {\n result.source = source;\n }\n\n if (Is.defined(relatedInformation)) {\n result.relatedInformation = relatedInformation;\n }\n\n return result;\n }\n\n Diagnostic.create = create;\n /**\r\n * Checks whether the given literal conforms to the [Diagnostic](#Diagnostic) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && Is.string(candidate.message) && (Is.number(candidate.severity) || Is.undefined(candidate.severity)) && (Is.number(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code)) && (Is.string(candidate.source) || Is.undefined(candidate.source)) && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is));\n }\n\n Diagnostic.is = is;\n })(Diagnostic || (_exports.Diagnostic = Diagnostic = {}));\n /**\r\n * The Command namespace provides helper functions to work with\r\n * [Command](#Command) literals.\r\n */\n\n\n var Command;\n _exports.Command = Command;\n\n (function (Command) {\n /**\r\n * Creates a new Command literal.\r\n */\n function create(title, command) {\n var args = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n\n var result = {\n title: title,\n command: command\n };\n\n if (Is.defined(args) && args.length > 0) {\n result.arguments = args;\n }\n\n return result;\n }\n\n Command.create = create;\n /**\r\n * Checks whether the given literal conforms to the [Command](#Command) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command);\n }\n\n Command.is = is;\n })(Command || (_exports.Command = Command = {}));\n /**\r\n * The TextEdit namespace provides helper function to create replace,\r\n * insert and delete edits more easily.\r\n */\n\n\n var TextEdit;\n _exports.TextEdit = TextEdit;\n\n (function (TextEdit) {\n /**\r\n * Creates a replace text edit.\r\n * @param range The range of text to be replaced.\r\n * @param newText The new text.\r\n */\n function replace(range, newText) {\n return {\n range: range,\n newText: newText\n };\n }\n\n TextEdit.replace = replace;\n /**\r\n * Creates a insert text edit.\r\n * @param position The position to insert the text at.\r\n * @param newText The text to be inserted.\r\n */\n\n function insert(position, newText) {\n return {\n range: {\n start: position,\n end: position\n },\n newText: newText\n };\n }\n\n TextEdit.insert = insert;\n /**\r\n * Creates a delete text edit.\r\n * @param range The range of text to be deleted.\r\n */\n\n function del(range) {\n return {\n range: range,\n newText: ''\n };\n }\n\n TextEdit.del = del;\n\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.newText) && Range.is(candidate.range);\n }\n\n TextEdit.is = is;\n })(TextEdit || (_exports.TextEdit = TextEdit = {}));\n /**\r\n * The TextDocumentEdit namespace provides helper function to create\r\n * an edit that manipulates a text document.\r\n */\n\n\n var TextDocumentEdit;\n _exports.TextDocumentEdit = TextDocumentEdit;\n\n (function (TextDocumentEdit) {\n /**\r\n * Creates a new `TextDocumentEdit`\r\n */\n function create(textDocument, edits) {\n return {\n textDocument: textDocument,\n edits: edits\n };\n }\n\n TextDocumentEdit.create = create;\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && VersionedTextDocumentIdentifier.is(candidate.textDocument) && Array.isArray(candidate.edits);\n }\n\n TextDocumentEdit.is = is;\n })(TextDocumentEdit || (_exports.TextDocumentEdit = TextDocumentEdit = {}));\n\n var CreateFile;\n _exports.CreateFile = CreateFile;\n\n (function (CreateFile) {\n function create(uri, options) {\n var result = {\n kind: 'create',\n uri: uri\n };\n\n if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {\n result.options = options;\n }\n\n return result;\n }\n\n CreateFile.create = create;\n\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === 'create' && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists)));\n }\n\n CreateFile.is = is;\n })(CreateFile || (_exports.CreateFile = CreateFile = {}));\n\n var RenameFile;\n _exports.RenameFile = RenameFile;\n\n (function (RenameFile) {\n function create(oldUri, newUri, options) {\n var result = {\n kind: 'rename',\n oldUri: oldUri,\n newUri: newUri\n };\n\n if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {\n result.options = options;\n }\n\n return result;\n }\n\n RenameFile.create = create;\n\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === 'rename' && Is.string(candidate.oldUri) && Is.string(candidate.newUri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists)));\n }\n\n RenameFile.is = is;\n })(RenameFile || (_exports.RenameFile = RenameFile = {}));\n\n var DeleteFile;\n _exports.DeleteFile = DeleteFile;\n\n (function (DeleteFile) {\n function create(uri, options) {\n var result = {\n kind: 'delete',\n uri: uri\n };\n\n if (options !== void 0 && (options.recursive !== void 0 || options.ignoreIfNotExists !== void 0)) {\n result.options = options;\n }\n\n return result;\n }\n\n DeleteFile.create = create;\n\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === 'delete' && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.recursive === void 0 || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === void 0 || Is.boolean(candidate.options.ignoreIfNotExists)));\n }\n\n DeleteFile.is = is;\n })(DeleteFile || (_exports.DeleteFile = DeleteFile = {}));\n\n var WorkspaceEdit;\n _exports.WorkspaceEdit = WorkspaceEdit;\n\n (function (WorkspaceEdit) {\n function is(value) {\n var candidate = value;\n return candidate && (candidate.changes !== void 0 || candidate.documentChanges !== void 0) && (candidate.documentChanges === void 0 || candidate.documentChanges.every(function (change) {\n if (Is.string(change.kind)) {\n return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change);\n } else {\n return TextDocumentEdit.is(change);\n }\n }));\n }\n\n WorkspaceEdit.is = is;\n })(WorkspaceEdit || (_exports.WorkspaceEdit = WorkspaceEdit = {}));\n\n var TextEditChangeImpl =\n /** @class */\n function () {\n function TextEditChangeImpl(edits) {\n this.edits = edits;\n }\n\n TextEditChangeImpl.prototype.insert = function (position, newText) {\n this.edits.push(TextEdit.insert(position, newText));\n };\n\n TextEditChangeImpl.prototype.replace = function (range, newText) {\n this.edits.push(TextEdit.replace(range, newText));\n };\n\n TextEditChangeImpl.prototype.delete = function (range) {\n this.edits.push(TextEdit.del(range));\n };\n\n TextEditChangeImpl.prototype.add = function (edit) {\n this.edits.push(edit);\n };\n\n TextEditChangeImpl.prototype.all = function () {\n return this.edits;\n };\n\n TextEditChangeImpl.prototype.clear = function () {\n this.edits.splice(0, this.edits.length);\n };\n\n return TextEditChangeImpl;\n }();\n /**\r\n * A workspace change helps constructing changes to a workspace.\r\n */\n\n\n var WorkspaceChange =\n /** @class */\n function () {\n function WorkspaceChange(workspaceEdit) {\n var _this = this;\n\n this._textEditChanges = Object.create(null);\n\n if (workspaceEdit) {\n this._workspaceEdit = workspaceEdit;\n\n if (workspaceEdit.documentChanges) {\n workspaceEdit.documentChanges.forEach(function (change) {\n if (TextDocumentEdit.is(change)) {\n var textEditChange = new TextEditChangeImpl(change.edits);\n _this._textEditChanges[change.textDocument.uri] = textEditChange;\n }\n });\n } else if (workspaceEdit.changes) {\n Object.keys(workspaceEdit.changes).forEach(function (key) {\n var textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]);\n _this._textEditChanges[key] = textEditChange;\n });\n }\n }\n }\n\n Object.defineProperty(WorkspaceChange.prototype, \"edit\", {\n /**\r\n * Returns the underlying [WorkspaceEdit](#WorkspaceEdit) literal\r\n * use to be returned from a workspace edit operation like rename.\r\n */\n get: function () {\n return this._workspaceEdit;\n },\n enumerable: true,\n configurable: true\n });\n\n WorkspaceChange.prototype.getTextEditChange = function (key) {\n if (VersionedTextDocumentIdentifier.is(key)) {\n if (!this._workspaceEdit) {\n this._workspaceEdit = {\n documentChanges: []\n };\n }\n\n if (!this._workspaceEdit.documentChanges) {\n throw new Error('Workspace edit is not configured for document changes.');\n }\n\n var textDocument = key;\n var result = this._textEditChanges[textDocument.uri];\n\n if (!result) {\n var edits = [];\n var textDocumentEdit = {\n textDocument: textDocument,\n edits: edits\n };\n\n this._workspaceEdit.documentChanges.push(textDocumentEdit);\n\n result = new TextEditChangeImpl(edits);\n this._textEditChanges[textDocument.uri] = result;\n }\n\n return result;\n } else {\n if (!this._workspaceEdit) {\n this._workspaceEdit = {\n changes: Object.create(null)\n };\n }\n\n if (!this._workspaceEdit.changes) {\n throw new Error('Workspace edit is not configured for normal text edit changes.');\n }\n\n var result = this._textEditChanges[key];\n\n if (!result) {\n var edits = [];\n this._workspaceEdit.changes[key] = edits;\n result = new TextEditChangeImpl(edits);\n this._textEditChanges[key] = result;\n }\n\n return result;\n }\n };\n\n WorkspaceChange.prototype.createFile = function (uri, options) {\n this.checkDocumentChanges();\n\n this._workspaceEdit.documentChanges.push(CreateFile.create(uri, options));\n };\n\n WorkspaceChange.prototype.renameFile = function (oldUri, newUri, options) {\n this.checkDocumentChanges();\n\n this._workspaceEdit.documentChanges.push(RenameFile.create(oldUri, newUri, options));\n };\n\n WorkspaceChange.prototype.deleteFile = function (uri, options) {\n this.checkDocumentChanges();\n\n this._workspaceEdit.documentChanges.push(DeleteFile.create(uri, options));\n };\n\n WorkspaceChange.prototype.checkDocumentChanges = function () {\n if (!this._workspaceEdit || !this._workspaceEdit.documentChanges) {\n throw new Error('Workspace edit is not configured for document changes.');\n }\n };\n\n return WorkspaceChange;\n }();\n\n _exports.WorkspaceChange = WorkspaceChange;\n\n /**\r\n * The TextDocumentIdentifier namespace provides helper functions to work with\r\n * [TextDocumentIdentifier](#TextDocumentIdentifier) literals.\r\n */\n var TextDocumentIdentifier;\n _exports.TextDocumentIdentifier = TextDocumentIdentifier;\n\n (function (TextDocumentIdentifier) {\n /**\r\n * Creates a new TextDocumentIdentifier literal.\r\n * @param uri The document's uri.\r\n */\n function create(uri) {\n return {\n uri: uri\n };\n }\n\n TextDocumentIdentifier.create = create;\n /**\r\n * Checks whether the given literal conforms to the [TextDocumentIdentifier](#TextDocumentIdentifier) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri);\n }\n\n TextDocumentIdentifier.is = is;\n })(TextDocumentIdentifier || (_exports.TextDocumentIdentifier = TextDocumentIdentifier = {}));\n /**\r\n * The VersionedTextDocumentIdentifier namespace provides helper functions to work with\r\n * [VersionedTextDocumentIdentifier](#VersionedTextDocumentIdentifier) literals.\r\n */\n\n\n var VersionedTextDocumentIdentifier;\n _exports.VersionedTextDocumentIdentifier = VersionedTextDocumentIdentifier;\n\n (function (VersionedTextDocumentIdentifier) {\n /**\r\n * Creates a new VersionedTextDocumentIdentifier literal.\r\n * @param uri The document's uri.\r\n * @param uri The document's text.\r\n */\n function create(uri, version) {\n return {\n uri: uri,\n version: version\n };\n }\n\n VersionedTextDocumentIdentifier.create = create;\n /**\r\n * Checks whether the given literal conforms to the [VersionedTextDocumentIdentifier](#VersionedTextDocumentIdentifier) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.number(candidate.version));\n }\n\n VersionedTextDocumentIdentifier.is = is;\n })(VersionedTextDocumentIdentifier || (_exports.VersionedTextDocumentIdentifier = VersionedTextDocumentIdentifier = {}));\n /**\r\n * The TextDocumentItem namespace provides helper functions to work with\r\n * [TextDocumentItem](#TextDocumentItem) literals.\r\n */\n\n\n var TextDocumentItem;\n _exports.TextDocumentItem = TextDocumentItem;\n\n (function (TextDocumentItem) {\n /**\r\n * Creates a new TextDocumentItem literal.\r\n * @param uri The document's uri.\r\n * @param languageId The document's language identifier.\r\n * @param version The document's version number.\r\n * @param text The document's text.\r\n */\n function create(uri, languageId, version, text) {\n return {\n uri: uri,\n languageId: languageId,\n version: version,\n text: text\n };\n }\n\n TextDocumentItem.create = create;\n /**\r\n * Checks whether the given literal conforms to the [TextDocumentItem](#TextDocumentItem) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.number(candidate.version) && Is.string(candidate.text);\n }\n\n TextDocumentItem.is = is;\n })(TextDocumentItem || (_exports.TextDocumentItem = TextDocumentItem = {}));\n /**\r\n * Describes the content type that a client supports in various\r\n * result literals like `Hover`, `ParameterInfo` or `CompletionItem`.\r\n *\r\n * Please note that `MarkupKinds` must not start with a `$`. This kinds\r\n * are reserved for internal usage.\r\n */\n\n\n var MarkupKind;\n _exports.MarkupKind = MarkupKind;\n\n (function (MarkupKind) {\n /**\r\n * Plain text is supported as a content format\r\n */\n MarkupKind.PlainText = 'plaintext';\n /**\r\n * Markdown is supported as a content format\r\n */\n\n MarkupKind.Markdown = 'markdown';\n })(MarkupKind || (_exports.MarkupKind = MarkupKind = {}));\n\n (function (MarkupKind) {\n /**\r\n * Checks whether the given value is a value of the [MarkupKind](#MarkupKind) type.\r\n */\n function is(value) {\n var candidate = value;\n return candidate === MarkupKind.PlainText || candidate === MarkupKind.Markdown;\n }\n\n MarkupKind.is = is;\n })(MarkupKind || (_exports.MarkupKind = MarkupKind = {}));\n\n var MarkupContent;\n _exports.MarkupContent = MarkupContent;\n\n (function (MarkupContent) {\n /**\r\n * Checks whether the given value conforms to the [MarkupContent](#MarkupContent) interface.\r\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value);\n }\n\n MarkupContent.is = is;\n })(MarkupContent || (_exports.MarkupContent = MarkupContent = {}));\n /**\r\n * The kind of a completion entry.\r\n */\n\n\n var CompletionItemKind;\n _exports.CompletionItemKind = CompletionItemKind;\n\n (function (CompletionItemKind) {\n CompletionItemKind.Text = 1;\n CompletionItemKind.Method = 2;\n CompletionItemKind.Function = 3;\n CompletionItemKind.Constructor = 4;\n CompletionItemKind.Field = 5;\n CompletionItemKind.Variable = 6;\n CompletionItemKind.Class = 7;\n CompletionItemKind.Interface = 8;\n CompletionItemKind.Module = 9;\n CompletionItemKind.Property = 10;\n CompletionItemKind.Unit = 11;\n CompletionItemKind.Value = 12;\n CompletionItemKind.Enum = 13;\n CompletionItemKind.Keyword = 14;\n CompletionItemKind.Snippet = 15;\n CompletionItemKind.Color = 16;\n CompletionItemKind.File = 17;\n CompletionItemKind.Reference = 18;\n CompletionItemKind.Folder = 19;\n CompletionItemKind.EnumMember = 20;\n CompletionItemKind.Constant = 21;\n CompletionItemKind.Struct = 22;\n CompletionItemKind.Event = 23;\n CompletionItemKind.Operator = 24;\n CompletionItemKind.TypeParameter = 25;\n })(CompletionItemKind || (_exports.CompletionItemKind = CompletionItemKind = {}));\n /**\r\n * Defines whether the insert text in a completion item should be interpreted as\r\n * plain text or a snippet.\r\n */\n\n\n var InsertTextFormat;\n _exports.InsertTextFormat = InsertTextFormat;\n\n (function (InsertTextFormat) {\n /**\r\n * The primary text to be inserted is treated as a plain string.\r\n */\n InsertTextFormat.PlainText = 1;\n /**\r\n * The primary text to be inserted is treated as a snippet.\r\n *\r\n * A snippet can define tab stops and placeholders with `$1`, `$2`\r\n * and `${3:foo}`. `$0` defines the final tab stop, it defaults to\r\n * the end of the snippet. Placeholders with equal identifiers are linked,\r\n * that is typing in one will update others too.\r\n *\r\n * See also: https://github.com/Microsoft/vscode/blob/master/src/vs/editor/contrib/snippet/common/snippet.md\r\n */\n\n InsertTextFormat.Snippet = 2;\n })(InsertTextFormat || (_exports.InsertTextFormat = InsertTextFormat = {}));\n /**\r\n * Completion item tags are extra annotations that tweak the rendering of a completion\r\n * item.\r\n *\r\n * @since 3.15.0\r\n */\n\n\n var CompletionItemTag;\n _exports.CompletionItemTag = CompletionItemTag;\n\n (function (CompletionItemTag) {\n /**\r\n * Render a completion as obsolete, usually using a strike-out.\r\n */\n CompletionItemTag.Deprecated = 1;\n })(CompletionItemTag || (_exports.CompletionItemTag = CompletionItemTag = {}));\n /**\r\n * The CompletionItem namespace provides functions to deal with\r\n * completion items.\r\n */\n\n\n var CompletionItem;\n _exports.CompletionItem = CompletionItem;\n\n (function (CompletionItem) {\n /**\r\n * Create a completion item and seed it with a label.\r\n * @param label The completion item's label\r\n */\n function create(label) {\n return {\n label: label\n };\n }\n\n CompletionItem.create = create;\n })(CompletionItem || (_exports.CompletionItem = CompletionItem = {}));\n /**\r\n * The CompletionList namespace provides functions to deal with\r\n * completion lists.\r\n */\n\n\n var CompletionList;\n _exports.CompletionList = CompletionList;\n\n (function (CompletionList) {\n /**\r\n * Creates a new completion list.\r\n *\r\n * @param items The completion items.\r\n * @param isIncomplete The list is not complete.\r\n */\n function create(items, isIncomplete) {\n return {\n items: items ? items : [],\n isIncomplete: !!isIncomplete\n };\n }\n\n CompletionList.create = create;\n })(CompletionList || (_exports.CompletionList = CompletionList = {}));\n\n var MarkedString;\n _exports.MarkedString = MarkedString;\n\n (function (MarkedString) {\n /**\r\n * Creates a marked string from plain text.\r\n *\r\n * @param plainText The plain text.\r\n */\n function fromPlainText(plainText) {\n return plainText.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, '\\\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash\n }\n\n MarkedString.fromPlainText = fromPlainText;\n /**\r\n * Checks whether the given value conforms to the [MarkedString](#MarkedString) type.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.string(candidate) || Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value);\n }\n\n MarkedString.is = is;\n })(MarkedString || (_exports.MarkedString = MarkedString = {}));\n\n var Hover;\n _exports.Hover = Hover;\n\n (function (Hover) {\n /**\r\n * Checks whether the given value conforms to the [Hover](#Hover) interface.\r\n */\n function is(value) {\n var candidate = value;\n return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) || MarkedString.is(candidate.contents) || Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === void 0 || Range.is(value.range));\n }\n\n Hover.is = is;\n })(Hover || (_exports.Hover = Hover = {}));\n /**\r\n * The ParameterInformation namespace provides helper functions to work with\r\n * [ParameterInformation](#ParameterInformation) literals.\r\n */\n\n\n var ParameterInformation;\n _exports.ParameterInformation = ParameterInformation;\n\n (function (ParameterInformation) {\n /**\r\n * Creates a new parameter information literal.\r\n *\r\n * @param label A label string.\r\n * @param documentation A doc string.\r\n */\n function create(label, documentation) {\n return documentation ? {\n label: label,\n documentation: documentation\n } : {\n label: label\n };\n }\n\n ParameterInformation.create = create;\n })(ParameterInformation || (_exports.ParameterInformation = ParameterInformation = {}));\n /**\r\n * The SignatureInformation namespace provides helper functions to work with\r\n * [SignatureInformation](#SignatureInformation) literals.\r\n */\n\n\n var SignatureInformation;\n _exports.SignatureInformation = SignatureInformation;\n\n (function (SignatureInformation) {\n function create(label, documentation) {\n var parameters = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n parameters[_i - 2] = arguments[_i];\n }\n\n var result = {\n label: label\n };\n\n if (Is.defined(documentation)) {\n result.documentation = documentation;\n }\n\n if (Is.defined(parameters)) {\n result.parameters = parameters;\n } else {\n result.parameters = [];\n }\n\n return result;\n }\n\n SignatureInformation.create = create;\n })(SignatureInformation || (_exports.SignatureInformation = SignatureInformation = {}));\n /**\r\n * A document highlight kind.\r\n */\n\n\n var DocumentHighlightKind;\n _exports.DocumentHighlightKind = DocumentHighlightKind;\n\n (function (DocumentHighlightKind) {\n /**\r\n * A textual occurrence.\r\n */\n DocumentHighlightKind.Text = 1;\n /**\r\n * Read-access of a symbol, like reading a variable.\r\n */\n\n DocumentHighlightKind.Read = 2;\n /**\r\n * Write-access of a symbol, like writing to a variable.\r\n */\n\n DocumentHighlightKind.Write = 3;\n })(DocumentHighlightKind || (_exports.DocumentHighlightKind = DocumentHighlightKind = {}));\n /**\r\n * DocumentHighlight namespace to provide helper functions to work with\r\n * [DocumentHighlight](#DocumentHighlight) literals.\r\n */\n\n\n var DocumentHighlight;\n _exports.DocumentHighlight = DocumentHighlight;\n\n (function (DocumentHighlight) {\n /**\r\n * Create a DocumentHighlight object.\r\n * @param range The range the highlight applies to.\r\n */\n function create(range, kind) {\n var result = {\n range: range\n };\n\n if (Is.number(kind)) {\n result.kind = kind;\n }\n\n return result;\n }\n\n DocumentHighlight.create = create;\n })(DocumentHighlight || (_exports.DocumentHighlight = DocumentHighlight = {}));\n /**\r\n * A symbol kind.\r\n */\n\n\n var SymbolKind;\n _exports.SymbolKind = SymbolKind;\n\n (function (SymbolKind) {\n SymbolKind.File = 1;\n SymbolKind.Module = 2;\n SymbolKind.Namespace = 3;\n SymbolKind.Package = 4;\n SymbolKind.Class = 5;\n SymbolKind.Method = 6;\n SymbolKind.Property = 7;\n SymbolKind.Field = 8;\n SymbolKind.Constructor = 9;\n SymbolKind.Enum = 10;\n SymbolKind.Interface = 11;\n SymbolKind.Function = 12;\n SymbolKind.Variable = 13;\n SymbolKind.Constant = 14;\n SymbolKind.String = 15;\n SymbolKind.Number = 16;\n SymbolKind.Boolean = 17;\n SymbolKind.Array = 18;\n SymbolKind.Object = 19;\n SymbolKind.Key = 20;\n SymbolKind.Null = 21;\n SymbolKind.EnumMember = 22;\n SymbolKind.Struct = 23;\n SymbolKind.Event = 24;\n SymbolKind.Operator = 25;\n SymbolKind.TypeParameter = 26;\n })(SymbolKind || (_exports.SymbolKind = SymbolKind = {}));\n /**\r\n * Symbol tags are extra annotations that tweak the rendering of a symbol.\r\n * @since 3.15\r\n */\n\n\n var SymbolTag;\n _exports.SymbolTag = SymbolTag;\n\n (function (SymbolTag) {\n /**\r\n * Render a symbol as obsolete, usually using a strike-out.\r\n */\n SymbolTag.Deprecated = 1;\n })(SymbolTag || (_exports.SymbolTag = SymbolTag = {}));\n\n var SymbolInformation;\n _exports.SymbolInformation = SymbolInformation;\n\n (function (SymbolInformation) {\n /**\r\n * Creates a new symbol information literal.\r\n *\r\n * @param name The name of the symbol.\r\n * @param kind The kind of the symbol.\r\n * @param range The range of the location of the symbol.\r\n * @param uri The resource of the location of symbol, defaults to the current document.\r\n * @param containerName The name of the symbol containing the symbol.\r\n */\n function create(name, kind, range, uri, containerName) {\n var result = {\n name: name,\n kind: kind,\n location: {\n uri: uri,\n range: range\n }\n };\n\n if (containerName) {\n result.containerName = containerName;\n }\n\n return result;\n }\n\n SymbolInformation.create = create;\n })(SymbolInformation || (_exports.SymbolInformation = SymbolInformation = {}));\n\n var DocumentSymbol;\n _exports.DocumentSymbol = DocumentSymbol;\n\n (function (DocumentSymbol) {\n /**\r\n * Creates a new symbol information literal.\r\n *\r\n * @param name The name of the symbol.\r\n * @param detail The detail of the symbol.\r\n * @param kind The kind of the symbol.\r\n * @param range The range of the symbol.\r\n * @param selectionRange The selectionRange of the symbol.\r\n * @param children Children of the symbol.\r\n */\n function create(name, detail, kind, range, selectionRange, children) {\n var result = {\n name: name,\n detail: detail,\n kind: kind,\n range: range,\n selectionRange: selectionRange\n };\n\n if (children !== void 0) {\n result.children = children;\n }\n\n return result;\n }\n\n DocumentSymbol.create = create;\n /**\r\n * Checks whether the given literal conforms to the [DocumentSymbol](#DocumentSymbol) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return candidate && Is.string(candidate.name) && Is.number(candidate.kind) && Range.is(candidate.range) && Range.is(candidate.selectionRange) && (candidate.detail === void 0 || Is.string(candidate.detail)) && (candidate.deprecated === void 0 || Is.boolean(candidate.deprecated)) && (candidate.children === void 0 || Array.isArray(candidate.children));\n }\n\n DocumentSymbol.is = is;\n })(DocumentSymbol || (_exports.DocumentSymbol = DocumentSymbol = {}));\n /**\r\n * A set of predefined code action kinds\r\n */\n\n\n var CodeActionKind;\n _exports.CodeActionKind = CodeActionKind;\n\n (function (CodeActionKind) {\n /**\r\n * Empty kind.\r\n */\n CodeActionKind.Empty = '';\n /**\r\n * Base kind for quickfix actions: 'quickfix'\r\n */\n\n CodeActionKind.QuickFix = 'quickfix';\n /**\r\n * Base kind for refactoring actions: 'refactor'\r\n */\n\n CodeActionKind.Refactor = 'refactor';\n /**\r\n * Base kind for refactoring extraction actions: 'refactor.extract'\r\n *\r\n * Example extract actions:\r\n *\r\n * - Extract method\r\n * - Extract function\r\n * - Extract variable\r\n * - Extract interface from class\r\n * - ...\r\n */\n\n CodeActionKind.RefactorExtract = 'refactor.extract';\n /**\r\n * Base kind for refactoring inline actions: 'refactor.inline'\r\n *\r\n * Example inline actions:\r\n *\r\n * - Inline function\r\n * - Inline variable\r\n * - Inline constant\r\n * - ...\r\n */\n\n CodeActionKind.RefactorInline = 'refactor.inline';\n /**\r\n * Base kind for refactoring rewrite actions: 'refactor.rewrite'\r\n *\r\n * Example rewrite actions:\r\n *\r\n * - Convert JavaScript function to class\r\n * - Add or remove parameter\r\n * - Encapsulate field\r\n * - Make method static\r\n * - Move method to base class\r\n * - ...\r\n */\n\n CodeActionKind.RefactorRewrite = 'refactor.rewrite';\n /**\r\n * Base kind for source actions: `source`\r\n *\r\n * Source code actions apply to the entire file.\r\n */\n\n CodeActionKind.Source = 'source';\n /**\r\n * Base kind for an organize imports source action: `source.organizeImports`\r\n */\n\n CodeActionKind.SourceOrganizeImports = 'source.organizeImports';\n /**\r\n * Base kind for auto-fix source actions: `source.fixAll`.\r\n *\r\n * Fix all actions automatically fix errors that have a clear fix that do not require user input.\r\n * They should not suppress errors or perform unsafe fixes such as generating new types or classes.\r\n *\r\n * @since 3.15.0\r\n */\n\n CodeActionKind.SourceFixAll = 'source.fixAll';\n })(CodeActionKind || (_exports.CodeActionKind = CodeActionKind = {}));\n /**\r\n * The CodeActionContext namespace provides helper functions to work with\r\n * [CodeActionContext](#CodeActionContext) literals.\r\n */\n\n\n var CodeActionContext;\n _exports.CodeActionContext = CodeActionContext;\n\n (function (CodeActionContext) {\n /**\r\n * Creates a new CodeActionContext literal.\r\n */\n function create(diagnostics, only) {\n var result = {\n diagnostics: diagnostics\n };\n\n if (only !== void 0 && only !== null) {\n result.only = only;\n }\n\n return result;\n }\n\n CodeActionContext.create = create;\n /**\r\n * Checks whether the given literal conforms to the [CodeActionContext](#CodeActionContext) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) && (candidate.only === void 0 || Is.typedArray(candidate.only, Is.string));\n }\n\n CodeActionContext.is = is;\n })(CodeActionContext || (_exports.CodeActionContext = CodeActionContext = {}));\n\n var CodeAction;\n _exports.CodeAction = CodeAction;\n\n (function (CodeAction) {\n function create(title, commandOrEdit, kind) {\n var result = {\n title: title\n };\n\n if (Command.is(commandOrEdit)) {\n result.command = commandOrEdit;\n } else {\n result.edit = commandOrEdit;\n }\n\n if (kind !== void 0) {\n result.kind = kind;\n }\n\n return result;\n }\n\n CodeAction.create = create;\n\n function is(value) {\n var candidate = value;\n return candidate && Is.string(candidate.title) && (candidate.diagnostics === void 0 || Is.typedArray(candidate.diagnostics, Diagnostic.is)) && (candidate.kind === void 0 || Is.string(candidate.kind)) && (candidate.edit !== void 0 || candidate.command !== void 0) && (candidate.command === void 0 || Command.is(candidate.command)) && (candidate.isPreferred === void 0 || Is.boolean(candidate.isPreferred)) && (candidate.edit === void 0 || WorkspaceEdit.is(candidate.edit));\n }\n\n CodeAction.is = is;\n })(CodeAction || (_exports.CodeAction = CodeAction = {}));\n /**\r\n * The CodeLens namespace provides helper functions to work with\r\n * [CodeLens](#CodeLens) literals.\r\n */\n\n\n var CodeLens;\n _exports.CodeLens = CodeLens;\n\n (function (CodeLens) {\n /**\r\n * Creates a new CodeLens literal.\r\n */\n function create(range, data) {\n var result = {\n range: range\n };\n\n if (Is.defined(data)) {\n result.data = data;\n }\n\n return result;\n }\n\n CodeLens.create = create;\n /**\r\n * Checks whether the given literal conforms to the [CodeLens](#CodeLens) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command));\n }\n\n CodeLens.is = is;\n })(CodeLens || (_exports.CodeLens = CodeLens = {}));\n /**\r\n * The FormattingOptions namespace provides helper functions to work with\r\n * [FormattingOptions](#FormattingOptions) literals.\r\n */\n\n\n var FormattingOptions;\n _exports.FormattingOptions = FormattingOptions;\n\n (function (FormattingOptions) {\n /**\r\n * Creates a new FormattingOptions literal.\r\n */\n function create(tabSize, insertSpaces) {\n return {\n tabSize: tabSize,\n insertSpaces: insertSpaces\n };\n }\n\n FormattingOptions.create = create;\n /**\r\n * Checks whether the given literal conforms to the [FormattingOptions](#FormattingOptions) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.number(candidate.tabSize) && Is.boolean(candidate.insertSpaces);\n }\n\n FormattingOptions.is = is;\n })(FormattingOptions || (_exports.FormattingOptions = FormattingOptions = {}));\n /**\r\n * The DocumentLink namespace provides helper functions to work with\r\n * [DocumentLink](#DocumentLink) literals.\r\n */\n\n\n var DocumentLink;\n _exports.DocumentLink = DocumentLink;\n\n (function (DocumentLink) {\n /**\r\n * Creates a new DocumentLink literal.\r\n */\n function create(range, target, data) {\n return {\n range: range,\n target: target,\n data: data\n };\n }\n\n DocumentLink.create = create;\n /**\r\n * Checks whether the given literal conforms to the [DocumentLink](#DocumentLink) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target));\n }\n\n DocumentLink.is = is;\n })(DocumentLink || (_exports.DocumentLink = DocumentLink = {}));\n /**\r\n * The SelectionRange namespace provides helper function to work with\r\n * SelectionRange literals.\r\n */\n\n\n var SelectionRange;\n _exports.SelectionRange = SelectionRange;\n\n (function (SelectionRange) {\n /**\r\n * Creates a new SelectionRange\r\n * @param range the range.\r\n * @param parent an optional parent.\r\n */\n function create(range, parent) {\n return {\n range: range,\n parent: parent\n };\n }\n\n SelectionRange.create = create;\n\n function is(value) {\n var candidate = value;\n return candidate !== undefined && Range.is(candidate.range) && (candidate.parent === undefined || SelectionRange.is(candidate.parent));\n }\n\n SelectionRange.is = is;\n })(SelectionRange || (_exports.SelectionRange = SelectionRange = {}));\n\n var EOL = ['\\n', '\\r\\n', '\\r'];\n /**\r\n * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\r\n */\n\n _exports.EOL = EOL;\n var TextDocument;\n _exports.TextDocument = TextDocument;\n\n (function (TextDocument) {\n /**\r\n * Creates a new ITextDocument literal from the given uri and content.\r\n * @param uri The document's uri.\r\n * @param languageId The document's language Id.\r\n * @param content The document's content.\r\n */\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n\n TextDocument.create = create;\n /**\r\n * Checks whether the given literal conforms to the [ITextDocument](#ITextDocument) interface.\r\n */\n\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.number(candidate.lineCount) && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;\n }\n\n TextDocument.is = is;\n\n function applyEdits(document, edits) {\n var text = document.getText();\n var sortedEdits = mergeSort(edits, function (a, b) {\n var diff = a.range.start.line - b.range.start.line;\n\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n\n return diff;\n });\n var lastModifiedOffset = text.length;\n\n for (var i = sortedEdits.length - 1; i >= 0; i--) {\n var e = sortedEdits[i];\n var startOffset = document.offsetAt(e.range.start);\n var endOffset = document.offsetAt(e.range.end);\n\n if (endOffset <= lastModifiedOffset) {\n text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length);\n } else {\n throw new Error('Overlapping edit');\n }\n\n lastModifiedOffset = startOffset;\n }\n\n return text;\n }\n\n TextDocument.applyEdits = applyEdits;\n\n function mergeSort(data, compare) {\n if (data.length <= 1) {\n // sorted\n return data;\n }\n\n var p = data.length / 2 | 0;\n var left = data.slice(0, p);\n var right = data.slice(p);\n mergeSort(left, compare);\n mergeSort(right, compare);\n var leftIdx = 0;\n var rightIdx = 0;\n var i = 0;\n\n while (leftIdx < left.length && rightIdx < right.length) {\n var ret = compare(left[leftIdx], right[rightIdx]);\n\n if (ret <= 0) {\n // smaller_equal -> take left to preserve order\n data[i++] = left[leftIdx++];\n } else {\n // greater -> take right\n data[i++] = right[rightIdx++];\n }\n }\n\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n\n return data;\n }\n })(TextDocument || (_exports.TextDocument = TextDocument = {}));\n\n var FullTextDocument =\n /** @class */\n function () {\n function FullTextDocument(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = undefined;\n }\n\n Object.defineProperty(FullTextDocument.prototype, \"uri\", {\n get: function () {\n return this._uri;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FullTextDocument.prototype, \"languageId\", {\n get: function () {\n return this._languageId;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FullTextDocument.prototype, \"version\", {\n get: function () {\n return this._version;\n },\n enumerable: true,\n configurable: true\n });\n\n FullTextDocument.prototype.getText = function (range) {\n if (range) {\n var start = this.offsetAt(range.start);\n var end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n\n return this._content;\n };\n\n FullTextDocument.prototype.update = function (event, version) {\n this._content = event.text;\n this._version = version;\n this._lineOffsets = undefined;\n };\n\n FullTextDocument.prototype.getLineOffsets = function () {\n if (this._lineOffsets === undefined) {\n var lineOffsets = [];\n var text = this._content;\n var isLineStart = true;\n\n for (var i = 0; i < text.length; i++) {\n if (isLineStart) {\n lineOffsets.push(i);\n isLineStart = false;\n }\n\n var ch = text.charAt(i);\n isLineStart = ch === '\\r' || ch === '\\n';\n\n if (ch === '\\r' && i + 1 < text.length && text.charAt(i + 1) === '\\n') {\n i++;\n }\n }\n\n if (isLineStart && text.length > 0) {\n lineOffsets.push(text.length);\n }\n\n this._lineOffsets = lineOffsets;\n }\n\n return this._lineOffsets;\n };\n\n FullTextDocument.prototype.positionAt = function (offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n var lineOffsets = this.getLineOffsets();\n var low = 0,\n high = lineOffsets.length;\n\n if (high === 0) {\n return Position.create(0, offset);\n }\n\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n\n if (lineOffsets[mid] > offset) {\n high = mid;\n } else {\n low = mid + 1;\n }\n } // low is the least x for which the line offset is larger than the current offset\n // or array.length if no line offset is larger than the current offset\n\n\n var line = low - 1;\n return Position.create(line, offset - lineOffsets[line]);\n };\n\n FullTextDocument.prototype.offsetAt = function (position) {\n var lineOffsets = this.getLineOffsets();\n\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n } else if (position.line < 0) {\n return 0;\n }\n\n var lineOffset = lineOffsets[position.line];\n var nextLineOffset = position.line + 1 < lineOffsets.length ? lineOffsets[position.line + 1] : this._content.length;\n return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);\n };\n\n Object.defineProperty(FullTextDocument.prototype, \"lineCount\", {\n get: function () {\n return this.getLineOffsets().length;\n },\n enumerable: true,\n configurable: true\n });\n return FullTextDocument;\n }();\n\n var Is;\n\n (function (Is) {\n var toString = Object.prototype.toString;\n\n function defined(value) {\n return typeof value !== 'undefined';\n }\n\n Is.defined = defined;\n\n function undefined(value) {\n return typeof value === 'undefined';\n }\n\n Is.undefined = undefined;\n\n function boolean(value) {\n return value === true || value === false;\n }\n\n Is.boolean = boolean;\n\n function string(value) {\n return toString.call(value) === '[object String]';\n }\n\n Is.string = string;\n\n function number(value) {\n return toString.call(value) === '[object Number]';\n }\n\n Is.number = number;\n\n function func(value) {\n return toString.call(value) === '[object Function]';\n }\n\n Is.func = func;\n\n function objectLiteral(value) {\n // Strictly speaking class instances pass this check as well. Since the LSP\n // doesn't use classes we ignore this for now. If we do we need to add something\n // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null`\n return value !== null && typeof value === 'object';\n }\n\n Is.objectLiteral = objectLiteral;\n\n function typedArray(value, check) {\n return Array.isArray(value) && value.every(check);\n }\n\n Is.typedArray = typedArray;\n })(Is || (Is = {}));\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZzY29kZS1sYW5ndWFnZXNlcnZlci10eXBlcy9saWIvZXNtL21haW4uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8vaG9tZS9ydW5uZXIvd29yay9ncmFwaGlxbC9ncmFwaGlxbC9ub2RlX21vZHVsZXMvdnNjb2RlLWxhbmd1YWdlc2VydmVyLXR5cGVzL2xpYi9lc20vbWFpbi5qcz9hNWIzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuJ3VzZSBzdHJpY3QnO1xyXG4vKipcclxuICogVGhlIFBvc2l0aW9uIG5hbWVzcGFjZSBwcm92aWRlcyBoZWxwZXIgZnVuY3Rpb25zIHRvIHdvcmsgd2l0aFxyXG4gKiBbUG9zaXRpb25dKCNQb3NpdGlvbikgbGl0ZXJhbHMuXHJcbiAqL1xyXG5leHBvcnQgdmFyIFBvc2l0aW9uO1xyXG4oZnVuY3Rpb24gKFBvc2l0aW9uKSB7XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBuZXcgUG9zaXRpb24gbGl0ZXJhbCBmcm9tIHRoZSBnaXZlbiBsaW5lIGFuZCBjaGFyYWN0ZXIuXHJcbiAgICAgKiBAcGFyYW0gbGluZSBUaGUgcG9zaXRpb24ncyBsaW5lLlxyXG4gICAgICogQHBhcmFtIGNoYXJhY3RlciBUaGUgcG9zaXRpb24ncyBjaGFyYWN0ZXIuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGNyZWF0ZShsaW5lLCBjaGFyYWN0ZXIpIHtcclxuICAgICAgICByZXR1cm4geyBsaW5lOiBsaW5lLCBjaGFyYWN0ZXI6IGNoYXJhY3RlciB9O1xyXG4gICAgfVxyXG4gICAgUG9zaXRpb24uY3JlYXRlID0gY3JlYXRlO1xyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gbGl0ZXJuYWwgY29uZm9ybXMgdG8gdGhlIFtQb3NpdGlvbl0oI1Bvc2l0aW9uKSBpbnRlcmZhY2UuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XHJcbiAgICAgICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiBJcy5vYmplY3RMaXRlcmFsKGNhbmRpZGF0ZSkgJiYgSXMubnVtYmVyKGNhbmRpZGF0ZS5saW5lKSAmJiBJcy5udW1iZXIoY2FuZGlkYXRlLmNoYXJhY3Rlcik7XHJcbiAgICB9XHJcbiAgICBQb3NpdGlvbi5pcyA9IGlzO1xyXG59KShQb3NpdGlvbiB8fCAoUG9zaXRpb24gPSB7fSkpO1xyXG4vKipcclxuICogVGhlIFJhbmdlIG5hbWVzcGFjZSBwcm92aWRlcyBoZWxwZXIgZnVuY3Rpb25zIHRvIHdvcmsgd2l0aFxyXG4gKiBbUmFuZ2VdKCNSYW5nZSkgbGl0ZXJhbHMuXHJcbiAqL1xyXG5leHBvcnQgdmFyIFJhbmdlO1xyXG4oZnVuY3Rpb24gKFJhbmdlKSB7XHJcbiAgICBmdW5jdGlvbiBjcmVhdGUob25lLCB0d28sIHRocmVlLCBmb3VyKSB7XHJcbiAgICAgICAgaWYgKElzLm51bWJlcihvbmUpICYmIElzLm51bWJlcih0d28pICYmIElzLm51bWJlcih0aHJlZSkgJiYgSXMubnVtYmVyKGZvdXIpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHN0YXJ0OiBQb3NpdGlvbi5jcmVhdGUob25lLCB0d28pLCBlbmQ6IFBvc2l0aW9uLmNyZWF0ZSh0aHJlZSwgZm91cikgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoUG9zaXRpb24uaXMob25lKSAmJiBQb3NpdGlvbi5pcyh0d28pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHN0YXJ0OiBvbmUsIGVuZDogdHdvIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSYW5nZSNjcmVhdGUgY2FsbGVkIHdpdGggaW52YWxpZCBhcmd1bWVudHNbXCIgKyBvbmUgKyBcIiwgXCIgKyB0d28gKyBcIiwgXCIgKyB0aHJlZSArIFwiLCBcIiArIGZvdXIgKyBcIl1cIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgUmFuZ2UuY3JlYXRlID0gY3JlYXRlO1xyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gbGl0ZXJhbCBjb25mb3JtcyB0byB0aGUgW1JhbmdlXSgjUmFuZ2UpIGludGVyZmFjZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gaXModmFsdWUpIHtcclxuICAgICAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIElzLm9iamVjdExpdGVyYWwoY2FuZGlkYXRlKSAmJiBQb3NpdGlvbi5pcyhjYW5kaWRhdGUuc3RhcnQpICYmIFBvc2l0aW9uLmlzKGNhbmRpZGF0ZS5lbmQpO1xyXG4gICAgfVxyXG4gICAgUmFuZ2UuaXMgPSBpcztcclxufSkoUmFuZ2UgfHwgKFJhbmdlID0ge30pKTtcclxuLyoqXHJcbiAqIFRoZSBMb2NhdGlvbiBuYW1lc3BhY2UgcHJvdmlkZXMgaGVscGVyIGZ1bmN0aW9ucyB0byB3b3JrIHdpdGhcclxuICogW0xvY2F0aW9uXSgjTG9jYXRpb24pIGxpdGVyYWxzLlxyXG4gKi9cclxuZXhwb3J0IHZhciBMb2NhdGlvbjtcclxuKGZ1bmN0aW9uIChMb2NhdGlvbikge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgTG9jYXRpb24gbGl0ZXJhbC5cclxuICAgICAqIEBwYXJhbSB1cmkgVGhlIGxvY2F0aW9uJ3MgdXJpLlxyXG4gICAgICogQHBhcmFtIHJhbmdlIFRoZSBsb2NhdGlvbidzIHJhbmdlLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBjcmVhdGUodXJpLCByYW5nZSkge1xyXG4gICAgICAgIHJldHVybiB7IHVyaTogdXJpLCByYW5nZTogcmFuZ2UgfTtcclxuICAgIH1cclxuICAgIExvY2F0aW9uLmNyZWF0ZSA9IGNyZWF0ZTtcclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGxpdGVyYWwgY29uZm9ybXMgdG8gdGhlIFtMb2NhdGlvbl0oI0xvY2F0aW9uKSBpbnRlcmZhY2UuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XHJcbiAgICAgICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiBJcy5kZWZpbmVkKGNhbmRpZGF0ZSkgJiYgUmFuZ2UuaXMoY2FuZGlkYXRlLnJhbmdlKSAmJiAoSXMuc3RyaW5nKGNhbmRpZGF0ZS51cmkpIHx8IElzLnVuZGVmaW5lZChjYW5kaWRhdGUudXJpKSk7XHJcbiAgICB9XHJcbiAgICBMb2NhdGlvbi5pcyA9IGlzO1xyXG59KShMb2NhdGlvbiB8fCAoTG9jYXRpb24gPSB7fSkpO1xyXG4vKipcclxuICogVGhlIExvY2F0aW9uTGluayBuYW1lc3BhY2UgcHJvdmlkZXMgaGVscGVyIGZ1bmN0aW9ucyB0byB3b3JrIHdpdGhcclxuICogW0xvY2F0aW9uTGlua10oI0xvY2F0aW9uTGluaykgbGl0ZXJhbHMuXHJcbiAqL1xyXG5leHBvcnQgdmFyIExvY2F0aW9uTGluaztcclxuKGZ1bmN0aW9uIChMb2NhdGlvbkxpbmspIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIExvY2F0aW9uTGluayBsaXRlcmFsLlxyXG4gICAgICogQHBhcmFtIHRhcmdldFVyaSBUaGUgZGVmaW5pdGlvbidzIHVyaS5cclxuICAgICAqIEBwYXJhbSB0YXJnZXRSYW5nZSBUaGUgZnVsbCByYW5nZSBvZiB0aGUgZGVmaW5pdGlvbi5cclxuICAgICAqIEBwYXJhbSB0YXJnZXRTZWxlY3Rpb25SYW5nZSBUaGUgc3BhbiBvZiB0aGUgc3ltYm9sIGRlZmluaXRpb24gYXQgdGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBvcmlnaW5TZWxlY3Rpb25SYW5nZSBUaGUgc3BhbiBvZiB0aGUgc3ltYm9sIGJlaW5nIGRlZmluZWQgaW4gdGhlIG9yaWdpbmF0aW5nIHNvdXJjZSBmaWxlLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBjcmVhdGUodGFyZ2V0VXJpLCB0YXJnZXRSYW5nZSwgdGFyZ2V0U2VsZWN0aW9uUmFuZ2UsIG9yaWdpblNlbGVjdGlvblJhbmdlKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgdGFyZ2V0VXJpOiB0YXJnZXRVcmksIHRhcmdldFJhbmdlOiB0YXJnZXRSYW5nZSwgdGFyZ2V0U2VsZWN0aW9uUmFuZ2U6IHRhcmdldFNlbGVjdGlvblJhbmdlLCBvcmlnaW5TZWxlY3Rpb25SYW5nZTogb3JpZ2luU2VsZWN0aW9uUmFuZ2UgfTtcclxuICAgIH1cclxuICAgIExvY2F0aW9uTGluay5jcmVhdGUgPSBjcmVhdGU7XHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBsaXRlcmFsIGNvbmZvcm1zIHRvIHRoZSBbTG9jYXRpb25MaW5rXSgjTG9jYXRpb25MaW5rKSBpbnRlcmZhY2UuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XHJcbiAgICAgICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiBJcy5kZWZpbmVkKGNhbmRpZGF0ZSkgJiYgUmFuZ2UuaXMoY2FuZGlkYXRlLnRhcmdldFJhbmdlKSAmJiBJcy5zdHJpbmcoY2FuZGlkYXRlLnRhcmdldFVyaSlcclxuICAgICAgICAgICAgJiYgKFJhbmdlLmlzKGNhbmRpZGF0ZS50YXJnZXRTZWxlY3Rpb25SYW5nZSkgfHwgSXMudW5kZWZpbmVkKGNhbmRpZGF0ZS50YXJnZXRTZWxlY3Rpb25SYW5nZSkpXHJcbiAgICAgICAgICAgICYmIChSYW5nZS5pcyhjYW5kaWRhdGUub3JpZ2luU2VsZWN0aW9uUmFuZ2UpIHx8IElzLnVuZGVmaW5lZChjYW5kaWRhdGUub3JpZ2luU2VsZWN0aW9uUmFuZ2UpKTtcclxuICAgIH1cclxuICAgIExvY2F0aW9uTGluay5pcyA9IGlzO1xyXG59KShMb2NhdGlvbkxpbmsgfHwgKExvY2F0aW9uTGluayA9IHt9KSk7XHJcbi8qKlxyXG4gKiBUaGUgQ29sb3IgbmFtZXNwYWNlIHByb3ZpZGVzIGhlbHBlciBmdW5jdGlvbnMgdG8gd29yayB3aXRoXHJcbiAqIFtDb2xvcl0oI0NvbG9yKSBsaXRlcmFscy5cclxuICovXHJcbmV4cG9ydCB2YXIgQ29sb3I7XHJcbihmdW5jdGlvbiAoQ29sb3IpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBDb2xvciBsaXRlcmFsLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBjcmVhdGUocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZWQ6IHJlZCxcclxuICAgICAgICAgICAgZ3JlZW46IGdyZWVuLFxyXG4gICAgICAgICAgICBibHVlOiBibHVlLFxyXG4gICAgICAgICAgICBhbHBoYTogYWxwaGEsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIENvbG9yLmNyZWF0ZSA9IGNyZWF0ZTtcclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGxpdGVyYWwgY29uZm9ybXMgdG8gdGhlIFtDb2xvcl0oI0NvbG9yKSBpbnRlcmZhY2UuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XHJcbiAgICAgICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiBJcy5udW1iZXIoY2FuZGlkYXRlLnJlZClcclxuICAgICAgICAgICAgJiYgSXMubnVtYmVyKGNhbmRpZGF0ZS5ncmVlbilcclxuICAgICAgICAgICAgJiYgSXMubnVtYmVyKGNhbmRpZGF0ZS5ibHVlKVxyXG4gICAgICAgICAgICAmJiBJcy5udW1iZXIoY2FuZGlkYXRlLmFscGhhKTtcclxuICAgIH1cclxuICAgIENvbG9yLmlzID0gaXM7XHJcbn0pKENvbG9yIHx8IChDb2xvciA9IHt9KSk7XHJcbi8qKlxyXG4gKiBUaGUgQ29sb3JJbmZvcm1hdGlvbiBuYW1lc3BhY2UgcHJvdmlkZXMgaGVscGVyIGZ1bmN0aW9ucyB0byB3b3JrIHdpdGhcclxuICogW0NvbG9ySW5mb3JtYXRpb25dKCNDb2xvckluZm9ybWF0aW9uKSBsaXRlcmFscy5cclxuICovXHJcbmV4cG9ydCB2YXIgQ29sb3JJbmZvcm1hdGlvbjtcclxuKGZ1bmN0aW9uIChDb2xvckluZm9ybWF0aW9uKSB7XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBuZXcgQ29sb3JJbmZvcm1hdGlvbiBsaXRlcmFsLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBjcmVhdGUocmFuZ2UsIGNvbG9yKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmFuZ2U6IHJhbmdlLFxyXG4gICAgICAgICAgICBjb2xvcjogY29sb3IsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIENvbG9ySW5mb3JtYXRpb24uY3JlYXRlID0gY3JlYXRlO1xyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gbGl0ZXJhbCBjb25mb3JtcyB0byB0aGUgW0NvbG9ySW5mb3JtYXRpb25dKCNDb2xvckluZm9ybWF0aW9uKSBpbnRlcmZhY2UuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XHJcbiAgICAgICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiBSYW5nZS5pcyhjYW5kaWRhdGUucmFuZ2UpICYmIENvbG9yLmlzKGNhbmRpZGF0ZS5jb2xvcik7XHJcbiAgICB9XHJcbiAgICBDb2xvckluZm9ybWF0aW9uLmlzID0gaXM7XHJcbn0pKENvbG9ySW5mb3JtYXRpb24gfHwgKENvbG9ySW5mb3JtYXRpb24gPSB7fSkpO1xyXG4vKipcclxuICogVGhlIENvbG9yIG5hbWVzcGFjZSBwcm92aWRlcyBoZWxwZXIgZnVuY3Rpb25zIHRvIHdvcmsgd2l0aFxyXG4gKiBbQ29sb3JQcmVzZW50YXRpb25dKCNDb2xvclByZXNlbnRhdGlvbikgbGl0ZXJhbHMuXHJcbiAqL1xyXG5leHBvcnQgdmFyIENvbG9yUHJlc2VudGF0aW9uO1xyXG4oZnVuY3Rpb24gKENvbG9yUHJlc2VudGF0aW9uKSB7XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBuZXcgQ29sb3JJbmZvcm1hdGlvbiBsaXRlcmFsLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBjcmVhdGUobGFiZWwsIHRleHRFZGl0LCBhZGRpdGlvbmFsVGV4dEVkaXRzKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgICB0ZXh0RWRpdDogdGV4dEVkaXQsXHJcbiAgICAgICAgICAgIGFkZGl0aW9uYWxUZXh0RWRpdHM6IGFkZGl0aW9uYWxUZXh0RWRpdHMsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIENvbG9yUHJlc2VudGF0aW9uLmNyZWF0ZSA9IGNyZWF0ZTtcclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGxpdGVyYWwgY29uZm9ybXMgdG8gdGhlIFtDb2xvckluZm9ybWF0aW9uXSgjQ29sb3JJbmZvcm1hdGlvbikgaW50ZXJmYWNlLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xyXG4gICAgICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gSXMuc3RyaW5nKGNhbmRpZGF0ZS5sYWJlbClcclxuICAgICAgICAgICAgJiYgKElzLnVuZGVmaW5lZChjYW5kaWRhdGUudGV4dEVkaXQpIHx8IFRleHRFZGl0LmlzKGNhbmRpZGF0ZSkpXHJcbiAgICAgICAgICAgICYmIChJcy51bmRlZmluZWQoY2FuZGlkYXRlLmFkZGl0aW9uYWxUZXh0RWRpdHMpIHx8IElzLnR5cGVkQXJyYXkoY2FuZGlkYXRlLmFkZGl0aW9uYWxUZXh0RWRpdHMsIFRleHRFZGl0LmlzKSk7XHJcbiAgICB9XHJcbiAgICBDb2xvclByZXNlbnRhdGlvbi5pcyA9IGlzO1xyXG59KShDb2xvclByZXNlbnRhdGlvbiB8fCAoQ29sb3JQcmVzZW50YXRpb24gPSB7fSkpO1xyXG4vKipcclxuICogRW51bSBvZiBrbm93biByYW5nZSBraW5kc1xyXG4gKi9cclxuZXhwb3J0IHZhciBGb2xkaW5nUmFuZ2VLaW5kO1xyXG4oZnVuY3Rpb24gKEZvbGRpbmdSYW5nZUtpbmQpIHtcclxuICAgIC8qKlxyXG4gICAgICogRm9sZGluZyByYW5nZSBmb3IgYSBjb21tZW50XHJcbiAgICAgKi9cclxuICAgIEZvbGRpbmdSYW5nZUtpbmRbXCJDb21tZW50XCJdID0gXCJjb21tZW50XCI7XHJcbiAgICAvKipcclxuICAgICAqIEZvbGRpbmcgcmFuZ2UgZm9yIGEgaW1wb3J0cyBvciBpbmNsdWRlc1xyXG4gICAgICovXHJcbiAgICBGb2xkaW5nUmFuZ2VLaW5kW1wiSW1wb3J0c1wiXSA9IFwiaW1wb3J0c1wiO1xyXG4gICAgLyoqXHJcbiAgICAgKiBGb2xkaW5nIHJhbmdlIGZvciBhIHJlZ2lvbiAoZS5nLiBgI3JlZ2lvbmApXHJcbiAgICAgKi9cclxuICAgIEZvbGRpbmdSYW5nZUtpbmRbXCJSZWdpb25cIl0gPSBcInJlZ2lvblwiO1xyXG59KShGb2xkaW5nUmFuZ2VLaW5kIHx8IChGb2xkaW5nUmFuZ2VLaW5kID0ge30pKTtcclxuLyoqXHJcbiAqIFRoZSBmb2xkaW5nIHJhbmdlIG5hbWVzcGFjZSBwcm92aWRlcyBoZWxwZXIgZnVuY3Rpb25zIHRvIHdvcmsgd2l0aFxyXG4gKiBbRm9sZGluZ1JhbmdlXSgjRm9sZGluZ1JhbmdlKSBsaXRlcmFscy5cclxuICovXHJcbmV4cG9ydCB2YXIgRm9sZGluZ1JhbmdlO1xyXG4oZnVuY3Rpb24gKEZvbGRpbmdSYW5nZSkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEZvbGRpbmdSYW5nZSBsaXRlcmFsLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBjcmVhdGUoc3RhcnRMaW5lLCBlbmRMaW5lLCBzdGFydENoYXJhY3RlciwgZW5kQ2hhcmFjdGVyLCBraW5kKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgc3RhcnRMaW5lOiBzdGFydExpbmUsXHJcbiAgICAgICAgICAgIGVuZExpbmU6IGVuZExpbmVcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChJcy5kZWZpbmVkKHN0YXJ0Q2hhcmFjdGVyKSkge1xyXG4gICAgICAgICAgICByZXN1bHQuc3RhcnRDaGFyYWN0ZXIgPSBzdGFydENoYXJhY3RlcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKElzLmRlZmluZWQoZW5kQ2hhcmFjdGVyKSkge1xyXG4gICAgICAgICAgICByZXN1bHQuZW5kQ2hhcmFjdGVyID0gZW5kQ2hhcmFjdGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoSXMuZGVmaW5lZChraW5kKSkge1xyXG4gICAgICAgICAgICByZXN1bHQua2luZCA9IGtpbmQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBGb2xkaW5nUmFuZ2UuY3JlYXRlID0gY3JlYXRlO1xyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gbGl0ZXJhbCBjb25mb3JtcyB0byB0aGUgW0ZvbGRpbmdSYW5nZV0oI0ZvbGRpbmdSYW5nZSkgaW50ZXJmYWNlLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xyXG4gICAgICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gSXMubnVtYmVyKGNhbmRpZGF0ZS5zdGFydExpbmUpICYmIElzLm51bWJlcihjYW5kaWRhdGUuc3RhcnRMaW5lKVxyXG4gICAgICAgICAgICAmJiAoSXMudW5kZWZpbmVkKGNhbmRpZGF0ZS5zdGFydENoYXJhY3RlcikgfHwgSXMubnVtYmVyKGNhbmRpZGF0ZS5zdGFydENoYXJhY3RlcikpXHJcbiAgICAgICAgICAgICYmIChJcy51bmRlZmluZWQoY2FuZGlkYXRlLmVuZENoYXJhY3RlcikgfHwgSXMubnVtYmVyKGNhbmRpZGF0ZS5lbmRDaGFyYWN0ZXIpKVxyXG4gICAgICAgICAgICAmJiAoSXMudW5kZWZpbmVkKGNhbmRpZGF0ZS5raW5kKSB8fCBJcy5zdHJpbmcoY2FuZGlkYXRlLmtpbmQpKTtcclxuICAgIH1cclxuICAgIEZvbGRpbmdSYW5nZS5pcyA9IGlzO1xyXG59KShGb2xkaW5nUmFuZ2UgfHwgKEZvbGRpbmdSYW5nZSA9IHt9KSk7XHJcbi8qKlxyXG4gKiBUaGUgRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbiBuYW1lc3BhY2UgcHJvdmlkZXMgaGVscGVyIGZ1bmN0aW9ucyB0byB3b3JrIHdpdGhcclxuICogW0RpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25dKCNEaWFnbm9zdGljUmVsYXRlZEluZm9ybWF0aW9uKSBsaXRlcmFscy5cclxuICovXHJcbmV4cG9ydCB2YXIgRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbjtcclxuKGZ1bmN0aW9uIChEaWFnbm9zdGljUmVsYXRlZEluZm9ybWF0aW9uKSB7XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBuZXcgRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbiBsaXRlcmFsLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBjcmVhdGUobG9jYXRpb24sIG1lc3NhZ2UpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24sXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2VcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbi5jcmVhdGUgPSBjcmVhdGU7XHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBsaXRlcmFsIGNvbmZvcm1zIHRvIHRoZSBbRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbl0oI0RpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb24pIGludGVyZmFjZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gaXModmFsdWUpIHtcclxuICAgICAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIElzLmRlZmluZWQoY2FuZGlkYXRlKSAmJiBMb2NhdGlvbi5pcyhjYW5kaWRhdGUubG9jYXRpb24pICYmIElzLnN0cmluZyhjYW5kaWRhdGUubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgICBEaWFnbm9zdGljUmVsYXRlZEluZm9ybWF0aW9uLmlzID0gaXM7XHJcbn0pKERpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb24gfHwgKERpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb24gPSB7fSkpO1xyXG4vKipcclxuICogVGhlIGRpYWdub3N0aWMncyBzZXZlcml0eS5cclxuICovXHJcbmV4cG9ydCB2YXIgRGlhZ25vc3RpY1NldmVyaXR5O1xyXG4oZnVuY3Rpb24gKERpYWdub3N0aWNTZXZlcml0eSkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBSZXBvcnRzIGFuIGVycm9yLlxyXG4gICAgICovXHJcbiAgICBEaWFnbm9zdGljU2V2ZXJpdHkuRXJyb3IgPSAxO1xyXG4gICAgLyoqXHJcbiAgICAgKiBSZXBvcnRzIGEgd2FybmluZy5cclxuICAgICAqL1xyXG4gICAgRGlhZ25vc3RpY1NldmVyaXR5Lldhcm5pbmcgPSAyO1xyXG4gICAgLyoqXHJcbiAgICAgKiBSZXBvcnRzIGFuIGluZm9ybWF0aW9uLlxyXG4gICAgICovXHJcbiAgICBEaWFnbm9zdGljU2V2ZXJpdHkuSW5mb3JtYXRpb24gPSAzO1xyXG4gICAgLyoqXHJcbiAgICAgKiBSZXBvcnRzIGEgaGludC5cclxuICAgICAqL1xyXG4gICAgRGlhZ25vc3RpY1NldmVyaXR5LkhpbnQgPSA0O1xyXG59KShEaWFnbm9zdGljU2V2ZXJpdHkgfHwgKERpYWdub3N0aWNTZXZlcml0eSA9IHt9KSk7XHJcbi8qKlxyXG4gKiBUaGUgZGlhZ25vc3RpYyB0YWdzLlxyXG4gKlxyXG4gKiBAc2luY2UgMy4xNS4wXHJcbiAqL1xyXG5leHBvcnQgdmFyIERpYWdub3N0aWNUYWc7XHJcbihmdW5jdGlvbiAoRGlhZ25vc3RpY1RhZykge1xyXG4gICAgLyoqXHJcbiAgICAgKiBVbnVzZWQgb3IgdW5uZWNlc3NhcnkgY29kZS5cclxuICAgICAqXHJcbiAgICAgKiBDbGllbnRzIGFyZSBhbGxvd2VkIHRvIHJlbmRlciBkaWFnbm9zdGljcyB3aXRoIHRoaXMgdGFnIGZhZGVkIG91dCBpbnN0ZWFkIG9mIGhhdmluZ1xyXG4gICAgICogYW4gZXJyb3Igc3F1aWdnbGUuXHJcbiAgICAgKi9cclxuICAgIERpYWdub3N0aWNUYWcuVW5uZWNlc3NhcnkgPSAxO1xyXG4gICAgLyoqXHJcbiAgICAgKiBEZXByZWNhdGVkIG9yIG9ic29sZXRlIGNvZGUuXHJcbiAgICAgKlxyXG4gICAgICogQ2xpZW50cyBhcmUgYWxsb3dlZCB0byByZW5kZXJlZCBkaWFnbm9zdGljcyB3aXRoIHRoaXMgdGFnIHN0cmlrZSB0aHJvdWdoLlxyXG4gICAgICovXHJcbiAgICBEaWFnbm9zdGljVGFnLkRlcHJlY2F0ZWQgPSAyO1xyXG59KShEaWFnbm9zdGljVGFnIHx8IChEaWFnbm9zdGljVGFnID0ge30pKTtcclxuLyoqXHJcbiAqIFRoZSBEaWFnbm9zdGljIG5hbWVzcGFjZSBwcm92aWRlcyBoZWxwZXIgZnVuY3Rpb25zIHRvIHdvcmsgd2l0aFxyXG4gKiBbRGlhZ25vc3RpY10oI0RpYWdub3N0aWMpIGxpdGVyYWxzLlxyXG4gKi9cclxuZXhwb3J0IHZhciBEaWFnbm9zdGljO1xyXG4oZnVuY3Rpb24gKERpYWdub3N0aWMpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBEaWFnbm9zdGljIGxpdGVyYWwuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGNyZWF0ZShyYW5nZSwgbWVzc2FnZSwgc2V2ZXJpdHksIGNvZGUsIHNvdXJjZSwgcmVsYXRlZEluZm9ybWF0aW9uKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHsgcmFuZ2U6IHJhbmdlLCBtZXNzYWdlOiBtZXNzYWdlIH07XHJcbiAgICAgICAgaWYgKElzLmRlZmluZWQoc2V2ZXJpdHkpKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5zZXZlcml0eSA9IHNldmVyaXR5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoSXMuZGVmaW5lZChjb2RlKSkge1xyXG4gICAgICAgICAgICByZXN1bHQuY29kZSA9IGNvZGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChJcy5kZWZpbmVkKHNvdXJjZSkpIHtcclxuICAgICAgICAgICAgcmVzdWx0LnNvdXJjZSA9IHNvdXJjZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKElzLmRlZmluZWQocmVsYXRlZEluZm9ybWF0aW9uKSkge1xyXG4gICAgICAgICAgICByZXN1bHQucmVsYXRlZEluZm9ybWF0aW9uID0gcmVsYXRlZEluZm9ybWF0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgRGlhZ25vc3RpYy5jcmVhdGUgPSBjcmVhdGU7XHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBsaXRlcmFsIGNvbmZvcm1zIHRvIHRoZSBbRGlhZ25vc3RpY10oI0RpYWdub3N0aWMpIGludGVyZmFjZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gaXModmFsdWUpIHtcclxuICAgICAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIElzLmRlZmluZWQoY2FuZGlkYXRlKVxyXG4gICAgICAgICAgICAmJiBSYW5nZS5pcyhjYW5kaWRhdGUucmFuZ2UpXHJcbiAgICAgICAgICAgICYmIElzLnN0cmluZyhjYW5kaWRhdGUubWVzc2FnZSlcclxuICAgICAgICAgICAgJiYgKElzLm51bWJlcihjYW5kaWRhdGUuc2V2ZXJpdHkpIHx8IElzLnVuZGVmaW5lZChjYW5kaWRhdGUuc2V2ZXJpdHkpKVxyXG4gICAgICAgICAgICAmJiAoSXMubnVtYmVyKGNhbmRpZGF0ZS5jb2RlKSB8fCBJcy5zdHJpbmcoY2FuZGlkYXRlLmNvZGUpIHx8IElzLnVuZGVmaW5lZChjYW5kaWRhdGUuY29kZSkpXHJcbiAgICAgICAgICAgICYmIChJcy5zdHJpbmcoY2FuZGlkYXRlLnNvdXJjZSkgfHwgSXMudW5kZWZpbmVkKGNhbmRpZGF0ZS5zb3VyY2UpKVxyXG4gICAgICAgICAgICAmJiAoSXMudW5kZWZpbmVkKGNhbmRpZGF0ZS5yZWxhdGVkSW5mb3JtYXRpb24pIHx8IElzLnR5cGVkQXJyYXkoY2FuZGlkYXRlLnJlbGF0ZWRJbmZvcm1hdGlvbiwgRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbi5pcykpO1xyXG4gICAgfVxyXG4gICAgRGlhZ25vc3RpYy5pcyA9IGlzO1xyXG59KShEaWFnbm9zdGljIHx8IChEaWFnbm9zdGljID0ge30pKTtcclxuLyoqXHJcbiAqIFRoZSBDb21tYW5kIG5hbWVzcGFjZSBwcm92aWRlcyBoZWxwZXIgZnVuY3Rpb25zIHRvIHdvcmsgd2l0aFxyXG4gKiBbQ29tbWFuZF0oI0NvbW1hbmQpIGxpdGVyYWxzLlxyXG4gKi9cclxuZXhwb3J0IHZhciBDb21tYW5kO1xyXG4oZnVuY3Rpb24gKENvbW1hbmQpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBDb21tYW5kIGxpdGVyYWwuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGNyZWF0ZSh0aXRsZSwgY29tbWFuZCkge1xyXG4gICAgICAgIHZhciBhcmdzID0gW107XHJcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICAgICAgYXJnc1tfaSAtIDJdID0gYXJndW1lbnRzW19pXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHsgdGl0bGU6IHRpdGxlLCBjb21tYW5kOiBjb21tYW5kIH07XHJcbiAgICAgICAgaWYgKElzLmRlZmluZWQoYXJncykgJiYgYXJncy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5hcmd1bWVudHMgPSBhcmdzO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgQ29tbWFuZC5jcmVhdGUgPSBjcmVhdGU7XHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBsaXRlcmFsIGNvbmZvcm1zIHRvIHRoZSBbQ29tbWFuZF0oI0NvbW1hbmQpIGludGVyZmFjZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gaXModmFsdWUpIHtcclxuICAgICAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIElzLmRlZmluZWQoY2FuZGlkYXRlKSAmJiBJcy5zdHJpbmcoY2FuZGlkYXRlLnRpdGxlKSAmJiBJcy5zdHJpbmcoY2FuZGlkYXRlLmNvbW1hbmQpO1xyXG4gICAgfVxyXG4gICAgQ29tbWFuZC5pcyA9IGlzO1xyXG59KShDb21tYW5kIHx8IChDb21tYW5kID0ge30pKTtcclxuLyoqXHJcbiAqIFRoZSBUZXh0RWRpdCBuYW1lc3BhY2UgcHJvdmlkZXMgaGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSByZXBsYWNlLFxyXG4gKiBpbnNlcnQgYW5kIGRlbGV0ZSBlZGl0cyBtb3JlIGVhc2lseS5cclxuICovXHJcbmV4cG9ydCB2YXIgVGV4dEVkaXQ7XHJcbihmdW5jdGlvbiAoVGV4dEVkaXQpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIHJlcGxhY2UgdGV4dCBlZGl0LlxyXG4gICAgICogQHBhcmFtIHJhbmdlIFRoZSByYW5nZSBvZiB0ZXh0IHRvIGJlIHJlcGxhY2VkLlxyXG4gICAgICogQHBhcmFtIG5ld1RleHQgVGhlIG5ldyB0ZXh0LlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiByZXBsYWNlKHJhbmdlLCBuZXdUZXh0KSB7XHJcbiAgICAgICAgcmV0dXJuIHsgcmFuZ2U6IHJhbmdlLCBuZXdUZXh0OiBuZXdUZXh0IH07XHJcbiAgICB9XHJcbiAgICBUZXh0RWRpdC5yZXBsYWNlID0gcmVwbGFjZTtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIGluc2VydCB0ZXh0IGVkaXQuXHJcbiAgICAgKiBAcGFyYW0gcG9zaXRpb24gVGhlIHBvc2l0aW9uIHRvIGluc2VydCB0aGUgdGV4dCBhdC5cclxuICAgICAqIEBwYXJhbSBuZXdUZXh0IFRoZSB0ZXh0IHRvIGJlIGluc2VydGVkLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBpbnNlcnQocG9zaXRpb24sIG5ld1RleHQpIHtcclxuICAgICAgICByZXR1cm4geyByYW5nZTogeyBzdGFydDogcG9zaXRpb24sIGVuZDogcG9zaXRpb24gfSwgbmV3VGV4dDogbmV3VGV4dCB9O1xyXG4gICAgfVxyXG4gICAgVGV4dEVkaXQuaW5zZXJ0ID0gaW5zZXJ0O1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgZGVsZXRlIHRleHQgZWRpdC5cclxuICAgICAqIEBwYXJhbSByYW5nZSBUaGUgcmFuZ2Ugb2YgdGV4dCB0byBiZSBkZWxldGVkLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBkZWwocmFuZ2UpIHtcclxuICAgICAgICByZXR1cm4geyByYW5nZTogcmFuZ2UsIG5ld1RleHQ6ICcnIH07XHJcbiAgICB9XHJcbiAgICBUZXh0RWRpdC5kZWwgPSBkZWw7XHJcbiAgICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xyXG4gICAgICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gSXMub2JqZWN0TGl0ZXJhbChjYW5kaWRhdGUpXHJcbiAgICAgICAgICAgICYmIElzLnN0cmluZyhjYW5kaWRhdGUubmV3VGV4dClcclxuICAgICAgICAgICAgJiYgUmFuZ2UuaXMoY2FuZGlkYXRlLnJhbmdlKTtcclxuICAgIH1cclxuICAgIFRleHRFZGl0LmlzID0gaXM7XHJcbn0pKFRleHRFZGl0IHx8IChUZXh0RWRpdCA9IHt9KSk7XHJcbi8qKlxyXG4gKiBUaGUgVGV4dERvY3VtZW50RWRpdCBuYW1lc3BhY2UgcHJvdmlkZXMgaGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZVxyXG4gKiBhbiBlZGl0IHRoYXQgbWFuaXB1bGF0ZXMgYSB0ZXh0IGRvY3VtZW50LlxyXG4gKi9cclxuZXhwb3J0IHZhciBUZXh0RG9jdW1lbnRFZGl0O1xyXG4oZnVuY3Rpb24gKFRleHREb2N1bWVudEVkaXQpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBgVGV4dERvY3VtZW50RWRpdGBcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gY3JlYXRlKHRleHREb2N1bWVudCwgZWRpdHMpIHtcclxuICAgICAgICByZXR1cm4geyB0ZXh0RG9jdW1lbnQ6IHRleHREb2N1bWVudCwgZWRpdHM6IGVkaXRzIH07XHJcbiAgICB9XHJcbiAgICBUZXh0RG9jdW1lbnRFZGl0LmNyZWF0ZSA9IGNyZWF0ZTtcclxuICAgIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XHJcbiAgICAgICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiBJcy5kZWZpbmVkKGNhbmRpZGF0ZSlcclxuICAgICAgICAgICAgJiYgVmVyc2lvbmVkVGV4dERvY3VtZW50SWRlbnRpZmllci5pcyhjYW5kaWRhdGUudGV4dERvY3VtZW50KVxyXG4gICAgICAgICAgICAmJiBBcnJheS5pc0FycmF5KGNhbmRpZGF0ZS5lZGl0cyk7XHJcbiAgICB9XHJcbiAgICBUZXh0RG9jdW1lbnRFZGl0LmlzID0gaXM7XHJcbn0pKFRleHREb2N1bWVudEVkaXQgfHwgKFRleHREb2N1bWVudEVkaXQgPSB7fSkpO1xyXG5leHBvcnQgdmFyIENyZWF0ZUZpbGU7XHJcbihmdW5jdGlvbiAoQ3JlYXRlRmlsZSkge1xyXG4gICAgZnVuY3Rpb24gY3JlYXRlKHVyaSwgb3B0aW9ucykge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSB7XHJcbiAgICAgICAgICAgIGtpbmQ6ICdjcmVhdGUnLFxyXG4gICAgICAgICAgICB1cmk6IHVyaVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKG9wdGlvbnMgIT09IHZvaWQgMCAmJiAob3B0aW9ucy5vdmVyd3JpdGUgIT09IHZvaWQgMCB8fCBvcHRpb25zLmlnbm9yZUlmRXhpc3RzICE9PSB2b2lkIDApKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5vcHRpb25zID0gb3B0aW9ucztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuICAgIENyZWF0ZUZpbGUuY3JlYXRlID0gY3JlYXRlO1xyXG4gICAgZnVuY3Rpb24gaXModmFsdWUpIHtcclxuICAgICAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZSAmJiBjYW5kaWRhdGUua2luZCA9PT0gJ2NyZWF0ZScgJiYgSXMuc3RyaW5nKGNhbmRpZGF0ZS51cmkpICYmXHJcbiAgICAgICAgICAgIChjYW5kaWRhdGUub3B0aW9ucyA9PT0gdm9pZCAwIHx8XHJcbiAgICAgICAgICAgICAgICAoKGNhbmRpZGF0ZS5vcHRpb25zLm92ZXJ3cml0ZSA9PT0gdm9pZCAwIHx8IElzLmJvb2xlYW4oY2FuZGlkYXRlLm9wdGlvbnMub3ZlcndyaXRlKSkgJiYgKGNhbmRpZGF0ZS5vcHRpb25zLmlnbm9yZUlmRXhpc3RzID09PSB2b2lkIDAgfHwgSXMuYm9vbGVhbihjYW5kaWRhdGUub3B0aW9ucy5pZ25vcmVJZkV4aXN0cykpKSk7XHJcbiAgICB9XHJcbiAgICBDcmVhdGVGaWxlLmlzID0gaXM7XHJcbn0pKENyZWF0ZUZpbGUgfHwgKENyZWF0ZUZpbGUgPSB7fSkpO1xyXG5leHBvcnQgdmFyIFJlbmFtZUZpbGU7XHJcbihmdW5jdGlvbiAoUmVuYW1lRmlsZSkge1xyXG4gICAgZnVuY3Rpb24gY3JlYXRlKG9sZFVyaSwgbmV3VXJpLCBvcHRpb25zKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcclxuICAgICAgICAgICAga2luZDogJ3JlbmFtZScsXHJcbiAgICAgICAgICAgIG9sZFVyaTogb2xkVXJpLFxyXG4gICAgICAgICAgICBuZXdVcmk6IG5ld1VyaVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKG9wdGlvbnMgIT09IHZvaWQgMCAmJiAob3B0aW9ucy5vdmVyd3JpdGUgIT09IHZvaWQgMCB8fCBvcHRpb25zLmlnbm9yZUlmRXhpc3RzICE9PSB2b2lkIDApKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5vcHRpb25zID0gb3B0aW9ucztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuICAgIFJlbmFtZUZpbGUuY3JlYXRlID0gY3JlYXRlO1xyXG4gICAgZnVuY3Rpb24gaXModmFsdWUpIHtcclxuICAgICAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZSAmJiBjYW5kaWRhdGUua2luZCA9PT0gJ3JlbmFtZScgJiYgSXMuc3RyaW5nKGNhbmRpZGF0ZS5vbGRVcmkpICYmIElzLnN0cmluZyhjYW5kaWRhdGUubmV3VXJpKSAmJlxyXG4gICAgICAgICAgICAoY2FuZGlkYXRlLm9wdGlvbnMgPT09IHZvaWQgMCB8fFxyXG4gICAgICAgICAgICAgICAgKChjYW5kaWRhdGUub3B0aW9ucy5vdmVyd3JpdGUgPT09IHZvaWQgMCB8fCBJcy5ib29sZWFuKGNhbmRpZGF0ZS5vcHRpb25zLm92ZXJ3cml0ZSkpICYmIChjYW5kaWRhdGUub3B0aW9ucy5pZ25vcmVJZkV4aXN0cyA9PT0gdm9pZCAwIHx8IElzLmJvb2xlYW4oY2FuZGlkYXRlLm9wdGlvbnMuaWdub3JlSWZFeGlzdHMpKSkpO1xyXG4gICAgfVxyXG4gICAgUmVuYW1lRmlsZS5pcyA9IGlzO1xyXG59KShSZW5hbWVGaWxlIHx8IChSZW5hbWVGaWxlID0ge30pKTtcclxuZXhwb3J0IHZhciBEZWxldGVGaWxlO1xyXG4oZnVuY3Rpb24gKERlbGV0ZUZpbGUpIHtcclxuICAgIGZ1bmN0aW9uIGNyZWF0ZSh1cmksIG9wdGlvbnMpIHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICBraW5kOiAnZGVsZXRlJyxcclxuICAgICAgICAgICAgdXJpOiB1cmlcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChvcHRpb25zICE9PSB2b2lkIDAgJiYgKG9wdGlvbnMucmVjdXJzaXZlICE9PSB2b2lkIDAgfHwgb3B0aW9ucy5pZ25vcmVJZk5vdEV4aXN0cyAhPT0gdm9pZCAwKSkge1xyXG4gICAgICAgICAgICByZXN1bHQub3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBEZWxldGVGaWxlLmNyZWF0ZSA9IGNyZWF0ZTtcclxuICAgIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XHJcbiAgICAgICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiBjYW5kaWRhdGUgJiYgY2FuZGlkYXRlLmtpbmQgPT09ICdkZWxldGUnICYmIElzLnN0cmluZyhjYW5kaWRhdGUudXJpKSAmJlxyXG4gICAgICAgICAgICAoY2FuZGlkYXRlLm9wdGlvbnMgPT09IHZvaWQgMCB8fFxyXG4gICAgICAgICAgICAgICAgKChjYW5kaWRhdGUub3B0aW9ucy5yZWN1cnNpdmUgPT09IHZvaWQgMCB8fCBJcy5ib29sZWFuKGNhbmRpZGF0ZS5vcHRpb25zLnJlY3Vyc2l2ZSkpICYmIChjYW5kaWRhdGUub3B0aW9ucy5pZ25vcmVJZk5vdEV4aXN0cyA9PT0gdm9pZCAwIHx8IElzLmJvb2xlYW4oY2FuZGlkYXRlLm9wdGlvbnMuaWdub3JlSWZOb3RFeGlzdHMpKSkpO1xyXG4gICAgfVxyXG4gICAgRGVsZXRlRmlsZS5pcyA9IGlzO1xyXG59KShEZWxldGVGaWxlIHx8IChEZWxldGVGaWxlID0ge30pKTtcclxuZXhwb3J0IHZhciBXb3Jrc3BhY2VFZGl0O1xyXG4oZnVuY3Rpb24gKFdvcmtzcGFjZUVkaXQpIHtcclxuICAgIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XHJcbiAgICAgICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiBjYW5kaWRhdGUgJiZcclxuICAgICAgICAgICAgKGNhbmRpZGF0ZS5jaGFuZ2VzICE9PSB2b2lkIDAgfHwgY2FuZGlkYXRlLmRvY3VtZW50Q2hhbmdlcyAhPT0gdm9pZCAwKSAmJlxyXG4gICAgICAgICAgICAoY2FuZGlkYXRlLmRvY3VtZW50Q2hhbmdlcyA9PT0gdm9pZCAwIHx8IGNhbmRpZGF0ZS5kb2N1bWVudENoYW5nZXMuZXZlcnkoZnVuY3Rpb24gKGNoYW5nZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKElzLnN0cmluZyhjaGFuZ2Uua2luZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ3JlYXRlRmlsZS5pcyhjaGFuZ2UpIHx8IFJlbmFtZUZpbGUuaXMoY2hhbmdlKSB8fCBEZWxldGVGaWxlLmlzKGNoYW5nZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gVGV4dERvY3VtZW50RWRpdC5pcyhjaGFuZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICBXb3Jrc3BhY2VFZGl0LmlzID0gaXM7XHJcbn0pKFdvcmtzcGFjZUVkaXQgfHwgKFdvcmtzcGFjZUVkaXQgPSB7fSkpO1xyXG52YXIgVGV4dEVkaXRDaGFuZ2VJbXBsID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gVGV4dEVkaXRDaGFuZ2VJbXBsKGVkaXRzKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0cyA9IGVkaXRzO1xyXG4gICAgfVxyXG4gICAgVGV4dEVkaXRDaGFuZ2VJbXBsLnByb3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbiAocG9zaXRpb24sIG5ld1RleHQpIHtcclxuICAgICAgICB0aGlzLmVkaXRzLnB1c2goVGV4dEVkaXQuaW5zZXJ0KHBvc2l0aW9uLCBuZXdUZXh0KSk7XHJcbiAgICB9O1xyXG4gICAgVGV4dEVkaXRDaGFuZ2VJbXBsLnByb3RvdHlwZS5yZXBsYWNlID0gZnVuY3Rpb24gKHJhbmdlLCBuZXdUZXh0KSB7XHJcbiAgICAgICAgdGhpcy5lZGl0cy5wdXNoKFRleHRFZGl0LnJlcGxhY2UocmFuZ2UsIG5ld1RleHQpKTtcclxuICAgIH07XHJcbiAgICBUZXh0RWRpdENoYW5nZUltcGwucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uIChyYW5nZSkge1xyXG4gICAgICAgIHRoaXMuZWRpdHMucHVzaChUZXh0RWRpdC5kZWwocmFuZ2UpKTtcclxuICAgIH07XHJcbiAgICBUZXh0RWRpdENoYW5nZUltcGwucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChlZGl0KSB7XHJcbiAgICAgICAgdGhpcy5lZGl0cy5wdXNoKGVkaXQpO1xyXG4gICAgfTtcclxuICAgIFRleHRFZGl0Q2hhbmdlSW1wbC5wcm90b3R5cGUuYWxsID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRzO1xyXG4gICAgfTtcclxuICAgIFRleHRFZGl0Q2hhbmdlSW1wbC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0cy5zcGxpY2UoMCwgdGhpcy5lZGl0cy5sZW5ndGgpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBUZXh0RWRpdENoYW5nZUltcGw7XHJcbn0oKSk7XHJcbi8qKlxyXG4gKiBBIHdvcmtzcGFjZSBjaGFuZ2UgaGVscHMgY29uc3RydWN0aW5nIGNoYW5nZXMgdG8gYSB3b3Jrc3BhY2UuXHJcbiAqL1xyXG52YXIgV29ya3NwYWNlQ2hhbmdlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gV29ya3NwYWNlQ2hhbmdlKHdvcmtzcGFjZUVkaXQpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMuX3RleHRFZGl0Q2hhbmdlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICAgICAgaWYgKHdvcmtzcGFjZUVkaXQpIHtcclxuICAgICAgICAgICAgdGhpcy5fd29ya3NwYWNlRWRpdCA9IHdvcmtzcGFjZUVkaXQ7XHJcbiAgICAgICAgICAgIGlmICh3b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcykge1xyXG4gICAgICAgICAgICAgICAgd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMuZm9yRWFjaChmdW5jdGlvbiAoY2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRleHREb2N1bWVudEVkaXQuaXMoY2hhbmdlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGV4dEVkaXRDaGFuZ2UgPSBuZXcgVGV4dEVkaXRDaGFuZ2VJbXBsKGNoYW5nZS5lZGl0cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLl90ZXh0RWRpdENoYW5nZXNbY2hhbmdlLnRleHREb2N1bWVudC51cmldID0gdGV4dEVkaXRDaGFuZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAod29ya3NwYWNlRWRpdC5jaGFuZ2VzKSB7XHJcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh3b3Jrc3BhY2VFZGl0LmNoYW5nZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0RWRpdENoYW5nZSA9IG5ldyBUZXh0RWRpdENoYW5nZUltcGwod29ya3NwYWNlRWRpdC5jaGFuZ2VzW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl90ZXh0RWRpdENoYW5nZXNba2V5XSA9IHRleHRFZGl0Q2hhbmdlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV29ya3NwYWNlQ2hhbmdlLnByb3RvdHlwZSwgXCJlZGl0XCIsIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIFtXb3Jrc3BhY2VFZGl0XSgjV29ya3NwYWNlRWRpdCkgbGl0ZXJhbFxyXG4gICAgICAgICAqIHVzZSB0byBiZSByZXR1cm5lZCBmcm9tIGEgd29ya3NwYWNlIGVkaXQgb3BlcmF0aW9uIGxpa2UgcmVuYW1lLlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd29ya3NwYWNlRWRpdDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIFdvcmtzcGFjZUNoYW5nZS5wcm90b3R5cGUuZ2V0VGV4dEVkaXRDaGFuZ2UgPSBmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgaWYgKFZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXIuaXMoa2V5KSkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3dvcmtzcGFjZUVkaXQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3dvcmtzcGFjZUVkaXQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRDaGFuZ2VzOiBbXVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBkb2N1bWVudCBjaGFuZ2VzLicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciB0ZXh0RG9jdW1lbnQgPSBrZXk7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl90ZXh0RWRpdENoYW5nZXNbdGV4dERvY3VtZW50LnVyaV07XHJcbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZWRpdHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHZhciB0ZXh0RG9jdW1lbnRFZGl0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHREb2N1bWVudDogdGV4dERvY3VtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIGVkaXRzOiBlZGl0c1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2godGV4dERvY3VtZW50RWRpdCk7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXcgVGV4dEVkaXRDaGFuZ2VJbXBsKGVkaXRzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0Q2hhbmdlc1t0ZXh0RG9jdW1lbnQudXJpXSA9IHJlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl93b3Jrc3BhY2VFZGl0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl93b3Jrc3BhY2VFZGl0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZXM6IE9iamVjdC5jcmVhdGUobnVsbClcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIG5vcm1hbCB0ZXh0IGVkaXQgY2hhbmdlcy4nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fdGV4dEVkaXRDaGFuZ2VzW2tleV07XHJcbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZWRpdHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlc1trZXldID0gZWRpdHM7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXcgVGV4dEVkaXRDaGFuZ2VJbXBsKGVkaXRzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0Q2hhbmdlc1trZXldID0gcmVzdWx0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFdvcmtzcGFjZUNoYW5nZS5wcm90b3R5cGUuY3JlYXRlRmlsZSA9IGZ1bmN0aW9uICh1cmksIG9wdGlvbnMpIHtcclxuICAgICAgICB0aGlzLmNoZWNrRG9jdW1lbnRDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMucHVzaChDcmVhdGVGaWxlLmNyZWF0ZSh1cmksIG9wdGlvbnMpKTtcclxuICAgIH07XHJcbiAgICBXb3Jrc3BhY2VDaGFuZ2UucHJvdG90eXBlLnJlbmFtZUZpbGUgPSBmdW5jdGlvbiAob2xkVXJpLCBuZXdVcmksIG9wdGlvbnMpIHtcclxuICAgICAgICB0aGlzLmNoZWNrRG9jdW1lbnRDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMucHVzaChSZW5hbWVGaWxlLmNyZWF0ZShvbGRVcmksIG5ld1VyaSwgb3B0aW9ucykpO1xyXG4gICAgfTtcclxuICAgIFdvcmtzcGFjZUNoYW5nZS5wcm90b3R5cGUuZGVsZXRlRmlsZSA9IGZ1bmN0aW9uICh1cmksIG9wdGlvbnMpIHtcclxuICAgICAgICB0aGlzLmNoZWNrRG9jdW1lbnRDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMucHVzaChEZWxldGVGaWxlLmNyZWF0ZSh1cmksIG9wdGlvbnMpKTtcclxuICAgIH07XHJcbiAgICBXb3Jrc3BhY2VDaGFuZ2UucHJvdG90eXBlLmNoZWNrRG9jdW1lbnRDaGFuZ2VzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fd29ya3NwYWNlRWRpdCB8fCAhdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2hhbmdlcy4nKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFdvcmtzcGFjZUNoYW5nZTtcclxufSgpKTtcclxuZXhwb3J0IHsgV29ya3NwYWNlQ2hhbmdlIH07XHJcbi8qKlxyXG4gKiBUaGUgVGV4dERvY3VtZW50SWRlbnRpZmllciBuYW1lc3BhY2UgcHJvdmlkZXMgaGVscGVyIGZ1bmN0aW9ucyB0byB3b3JrIHdpdGhcclxuICogW1RleHREb2N1bWVudElkZW50aWZpZXJdKCNUZXh0RG9jdW1lbnRJZGVudGlmaWVyKSBsaXRlcmFscy5cclxuICovXHJcbmV4cG9ydCB2YXIgVGV4dERvY3VtZW50SWRlbnRpZmllcjtcclxuKGZ1bmN0aW9uIChUZXh0RG9jdW1lbnRJZGVudGlmaWVyKSB7XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBuZXcgVGV4dERvY3VtZW50SWRlbnRpZmllciBsaXRlcmFsLlxyXG4gICAgICogQHBhcmFtIHVyaSBUaGUgZG9jdW1lbnQncyB1cmkuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGNyZWF0ZSh1cmkpIHtcclxuICAgICAgICByZXR1cm4geyB1cmk6IHVyaSB9O1xyXG4gICAgfVxyXG4gICAgVGV4dERvY3VtZW50SWRlbnRpZmllci5jcmVhdGUgPSBjcmVhdGU7XHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBsaXRlcmFsIGNvbmZvcm1zIHRvIHRoZSBbVGV4dERvY3VtZW50SWRlbnRpZmllcl0oI1RleHREb2N1bWVudElkZW50aWZpZXIpIGludGVyZmFjZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gaXModmFsdWUpIHtcclxuICAgICAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIElzLmRlZmluZWQoY2FuZGlkYXRlKSAmJiBJcy5zdHJpbmcoY2FuZGlkYXRlLnVyaSk7XHJcbiAgICB9XHJcbiAgICBUZXh0RG9jdW1lbnRJZGVudGlmaWVyLmlzID0gaXM7XHJcbn0pKFRleHREb2N1bWVudElkZW50aWZpZXIgfHwgKFRleHREb2N1bWVudElkZW50aWZpZXIgPSB7fSkpO1xyXG4vKipcclxuICogVGhlIFZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXIgbmFtZXNwYWNlIHByb3ZpZGVzIGhlbHBlciBmdW5jdGlvbnMgdG8gd29yayB3aXRoXHJcbiAqIFtWZXJzaW9uZWRUZXh0RG9jdW1lbnRJZGVudGlmaWVyXSgjVmVyc2lvbmVkVGV4dERvY3VtZW50SWRlbnRpZmllcikgbGl0ZXJhbHMuXHJcbiAqL1xyXG5leHBvcnQgdmFyIFZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXI7XHJcbihmdW5jdGlvbiAoVmVyc2lvbmVkVGV4dERvY3VtZW50SWRlbnRpZmllcikge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgbmV3IFZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXIgbGl0ZXJhbC5cclxuICAgICAqIEBwYXJhbSB1cmkgVGhlIGRvY3VtZW50J3MgdXJpLlxyXG4gICAgICogQHBhcmFtIHVyaSBUaGUgZG9jdW1lbnQncyB0ZXh0LlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBjcmVhdGUodXJpLCB2ZXJzaW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgdXJpOiB1cmksIHZlcnNpb246IHZlcnNpb24gfTtcclxuICAgIH1cclxuICAgIFZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXIuY3JlYXRlID0gY3JlYXRlO1xyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gbGl0ZXJhbCBjb25mb3JtcyB0byB0aGUgW1ZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXJdKCNWZXJzaW9uZWRUZXh0RG9jdW1lbnRJZGVudGlmaWVyKSBpbnRlcmZhY2UuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XHJcbiAgICAgICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiBJcy5kZWZpbmVkKGNhbmRpZGF0ZSkgJiYgSXMuc3RyaW5nKGNhbmRpZGF0ZS51cmkpICYmIChjYW5kaWRhdGUudmVyc2lvbiA9PT0gbnVsbCB8fCBJcy5udW1iZXIoY2FuZGlkYXRlLnZlcnNpb24pKTtcclxuICAgIH1cclxuICAgIFZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXIuaXMgPSBpcztcclxufSkoVmVyc2lvbmVkVGV4dERvY3VtZW50SWRlbnRpZmllciB8fCAoVmVyc2lvbmVkVGV4dERvY3VtZW50SWRlbnRpZmllciA9IHt9KSk7XHJcbi8qKlxyXG4gKiBUaGUgVGV4dERvY3VtZW50SXRlbSBuYW1lc3BhY2UgcHJvdmlkZXMgaGVscGVyIGZ1bmN0aW9ucyB0byB3b3JrIHdpdGhcclxuICogW1RleHREb2N1bWVudEl0ZW1dKCNUZXh0RG9jdW1lbnRJdGVtKSBsaXRlcmFscy5cclxuICovXHJcbmV4cG9ydCB2YXIgVGV4dERvY3VtZW50SXRlbTtcclxuKGZ1bmN0aW9uIChUZXh0RG9jdW1lbnRJdGVtKSB7XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBuZXcgVGV4dERvY3VtZW50SXRlbSBsaXRlcmFsLlxyXG4gICAgICogQHBhcmFtIHVyaSBUaGUgZG9jdW1lbnQncyB1cmkuXHJcbiAgICAgKiBAcGFyYW0gbGFuZ3VhZ2VJZCBUaGUgZG9jdW1lbnQncyBsYW5ndWFnZSBpZGVudGlmaWVyLlxyXG4gICAgICogQHBhcmFtIHZlcnNpb24gVGhlIGRvY3VtZW50J3MgdmVyc2lvbiBudW1iZXIuXHJcbiAgICAgKiBAcGFyYW0gdGV4dCBUaGUgZG9jdW1lbnQncyB0ZXh0LlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBjcmVhdGUodXJpLCBsYW5ndWFnZUlkLCB2ZXJzaW9uLCB0ZXh0KSB7XHJcbiAgICAgICAgcmV0dXJuIHsgdXJpOiB1cmksIGxhbmd1YWdlSWQ6IGxhbmd1YWdlSWQsIHZlcnNpb246IHZlcnNpb24sIHRleHQ6IHRleHQgfTtcclxuICAgIH1cclxuICAgIFRleHREb2N1bWVudEl0ZW0uY3JlYXRlID0gY3JlYXRlO1xyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gbGl0ZXJhbCBjb25mb3JtcyB0byB0aGUgW1RleHREb2N1bWVudEl0ZW1dKCNUZXh0RG9jdW1lbnRJdGVtKSBpbnRlcmZhY2UuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XHJcbiAgICAgICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiBJcy5kZWZpbmVkKGNhbmRpZGF0ZSkgJiYgSXMuc3RyaW5nKGNhbmRpZGF0ZS51cmkpICYmIElzLnN0cmluZyhjYW5kaWRhdGUubGFuZ3VhZ2VJZCkgJiYgSXMubnVtYmVyKGNhbmRpZGF0ZS52ZXJzaW9uKSAmJiBJcy5zdHJpbmcoY2FuZGlkYXRlLnRleHQpO1xyXG4gICAgfVxyXG4gICAgVGV4dERvY3VtZW50SXRlbS5pcyA9IGlzO1xyXG59KShUZXh0RG9jdW1lbnRJdGVtIHx8IChUZXh0RG9jdW1lbnRJdGVtID0ge30pKTtcclxuLyoqXHJcbiAqIERlc2NyaWJlcyB0aGUgY29udGVudCB0eXBlIHRoYXQgYSBjbGllbnQgc3VwcG9ydHMgaW4gdmFyaW91c1xyXG4gKiByZXN1bHQgbGl0ZXJhbHMgbGlrZSBgSG92ZXJgLCBgUGFyYW1ldGVySW5mb2Agb3IgYENvbXBsZXRpb25JdGVtYC5cclxuICpcclxuICogUGxlYXNlIG5vdGUgdGhhdCBgTWFya3VwS2luZHNgIG11c3Qgbm90IHN0YXJ0IHdpdGggYSBgJGAuIFRoaXMga2luZHNcclxuICogYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2FnZS5cclxuICovXHJcbmV4cG9ydCB2YXIgTWFya3VwS2luZDtcclxuKGZ1bmN0aW9uIChNYXJrdXBLaW5kKSB7XHJcbiAgICAvKipcclxuICAgICAqIFBsYWluIHRleHQgaXMgc3VwcG9ydGVkIGFzIGEgY29udGVudCBmb3JtYXRcclxuICAgICAqL1xyXG4gICAgTWFya3VwS2luZC5QbGFpblRleHQgPSAncGxhaW50ZXh0JztcclxuICAgIC8qKlxyXG4gICAgICogTWFya2Rvd24gaXMgc3VwcG9ydGVkIGFzIGEgY29udGVudCBmb3JtYXRcclxuICAgICAqL1xyXG4gICAgTWFya3VwS2luZC5NYXJrZG93biA9ICdtYXJrZG93bic7XHJcbn0pKE1hcmt1cEtpbmQgfHwgKE1hcmt1cEtpbmQgPSB7fSkpO1xyXG4oZnVuY3Rpb24gKE1hcmt1cEtpbmQpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGlzIGEgdmFsdWUgb2YgdGhlIFtNYXJrdXBLaW5kXSgjTWFya3VwS2luZCkgdHlwZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gaXModmFsdWUpIHtcclxuICAgICAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZSA9PT0gTWFya3VwS2luZC5QbGFpblRleHQgfHwgY2FuZGlkYXRlID09PSBNYXJrdXBLaW5kLk1hcmtkb3duO1xyXG4gICAgfVxyXG4gICAgTWFya3VwS2luZC5pcyA9IGlzO1xyXG59KShNYXJrdXBLaW5kIHx8IChNYXJrdXBLaW5kID0ge30pKTtcclxuZXhwb3J0IHZhciBNYXJrdXBDb250ZW50O1xyXG4oZnVuY3Rpb24gKE1hcmt1cENvbnRlbnQpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGNvbmZvcm1zIHRvIHRoZSBbTWFya3VwQ29udGVudF0oI01hcmt1cENvbnRlbnQpIGludGVyZmFjZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gaXModmFsdWUpIHtcclxuICAgICAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIElzLm9iamVjdExpdGVyYWwodmFsdWUpICYmIE1hcmt1cEtpbmQuaXMoY2FuZGlkYXRlLmtpbmQpICYmIElzLnN0cmluZyhjYW5kaWRhdGUudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgTWFya3VwQ29udGVudC5pcyA9IGlzO1xyXG59KShNYXJrdXBDb250ZW50IHx8IChNYXJrdXBDb250ZW50ID0ge30pKTtcclxuLyoqXHJcbiAqIFRoZSBraW5kIG9mIGEgY29tcGxldGlvbiBlbnRyeS5cclxuICovXHJcbmV4cG9ydCB2YXIgQ29tcGxldGlvbkl0ZW1LaW5kO1xyXG4oZnVuY3Rpb24gKENvbXBsZXRpb25JdGVtS2luZCkge1xyXG4gICAgQ29tcGxldGlvbkl0ZW1LaW5kLlRleHQgPSAxO1xyXG4gICAgQ29tcGxldGlvbkl0ZW1LaW5kLk1ldGhvZCA9IDI7XHJcbiAgICBDb21wbGV0aW9uSXRlbUtpbmQuRnVuY3Rpb24gPSAzO1xyXG4gICAgQ29tcGxldGlvbkl0ZW1LaW5kLkNvbnN0cnVjdG9yID0gNDtcclxuICAgIENvbXBsZXRpb25JdGVtS2luZC5GaWVsZCA9IDU7XHJcbiAgICBDb21wbGV0aW9uSXRlbUtpbmQuVmFyaWFibGUgPSA2O1xyXG4gICAgQ29tcGxldGlvbkl0ZW1LaW5kLkNsYXNzID0gNztcclxuICAgIENvbXBsZXRpb25JdGVtS2luZC5JbnRlcmZhY2UgPSA4O1xyXG4gICAgQ29tcGxldGlvbkl0ZW1LaW5kLk1vZHVsZSA9IDk7XHJcbiAgICBDb21wbGV0aW9uSXRlbUtpbmQuUHJvcGVydHkgPSAxMDtcclxuICAgIENvbXBsZXRpb25JdGVtS2luZC5Vbml0ID0gMTE7XHJcbiAgICBDb21wbGV0aW9uSXRlbUtpbmQuVmFsdWUgPSAxMjtcclxuICAgIENvbXBsZXRpb25JdGVtS2luZC5FbnVtID0gMTM7XHJcbiAgICBDb21wbGV0aW9uSXRlbUtpbmQuS2V5d29yZCA9IDE0O1xyXG4gICAgQ29tcGxldGlvbkl0ZW1LaW5kLlNuaXBwZXQgPSAxNTtcclxuICAgIENvbXBsZXRpb25JdGVtS2luZC5Db2xvciA9IDE2O1xyXG4gICAgQ29tcGxldGlvbkl0ZW1LaW5kLkZpbGUgPSAxNztcclxuICAgIENvbXBsZXRpb25JdGVtS2luZC5SZWZlcmVuY2UgPSAxODtcclxuICAgIENvbXBsZXRpb25JdGVtS2luZC5Gb2xkZXIgPSAxOTtcclxuICAgIENvbXBsZXRpb25JdGVtS2luZC5FbnVtTWVtYmVyID0gMjA7XHJcbiAgICBDb21wbGV0aW9uSXRlbUtpbmQuQ29uc3RhbnQgPSAyMTtcclxuICAgIENvbXBsZXRpb25JdGVtS2luZC5TdHJ1Y3QgPSAyMjtcclxuICAgIENvbXBsZXRpb25JdGVtS2luZC5FdmVudCA9IDIzO1xyXG4gICAgQ29tcGxldGlvbkl0ZW1LaW5kLk9wZXJhdG9yID0gMjQ7XHJcbiAgICBDb21wbGV0aW9uSXRlbUtpbmQuVHlwZVBhcmFtZXRlciA9IDI1O1xyXG59KShDb21wbGV0aW9uSXRlbUtpbmQgfHwgKENvbXBsZXRpb25JdGVtS2luZCA9IHt9KSk7XHJcbi8qKlxyXG4gKiBEZWZpbmVzIHdoZXRoZXIgdGhlIGluc2VydCB0ZXh0IGluIGEgY29tcGxldGlvbiBpdGVtIHNob3VsZCBiZSBpbnRlcnByZXRlZCBhc1xyXG4gKiBwbGFpbiB0ZXh0IG9yIGEgc25pcHBldC5cclxuICovXHJcbmV4cG9ydCB2YXIgSW5zZXJ0VGV4dEZvcm1hdDtcclxuKGZ1bmN0aW9uIChJbnNlcnRUZXh0Rm9ybWF0KSB7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBwcmltYXJ5IHRleHQgdG8gYmUgaW5zZXJ0ZWQgaXMgdHJlYXRlZCBhcyBhIHBsYWluIHN0cmluZy5cclxuICAgICAqL1xyXG4gICAgSW5zZXJ0VGV4dEZvcm1hdC5QbGFpblRleHQgPSAxO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgcHJpbWFyeSB0ZXh0IHRvIGJlIGluc2VydGVkIGlzIHRyZWF0ZWQgYXMgYSBzbmlwcGV0LlxyXG4gICAgICpcclxuICAgICAqIEEgc25pcHBldCBjYW4gZGVmaW5lIHRhYiBzdG9wcyBhbmQgcGxhY2Vob2xkZXJzIHdpdGggYCQxYCwgYCQyYFxyXG4gICAgICogYW5kIGAkezM6Zm9vfWAuIGAkMGAgZGVmaW5lcyB0aGUgZmluYWwgdGFiIHN0b3AsIGl0IGRlZmF1bHRzIHRvXHJcbiAgICAgKiB0aGUgZW5kIG9mIHRoZSBzbmlwcGV0LiBQbGFjZWhvbGRlcnMgd2l0aCBlcXVhbCBpZGVudGlmaWVycyBhcmUgbGlua2VkLFxyXG4gICAgICogdGhhdCBpcyB0eXBpbmcgaW4gb25lIHdpbGwgdXBkYXRlIG90aGVycyB0b28uXHJcbiAgICAgKlxyXG4gICAgICogU2VlIGFsc286IGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvdnNjb2RlL2Jsb2IvbWFzdGVyL3NyYy92cy9lZGl0b3IvY29udHJpYi9zbmlwcGV0L2NvbW1vbi9zbmlwcGV0Lm1kXHJcbiAgICAgKi9cclxuICAgIEluc2VydFRleHRGb3JtYXQuU25pcHBldCA9IDI7XHJcbn0pKEluc2VydFRleHRGb3JtYXQgfHwgKEluc2VydFRleHRGb3JtYXQgPSB7fSkpO1xyXG4vKipcclxuICogQ29tcGxldGlvbiBpdGVtIHRhZ3MgYXJlIGV4dHJhIGFubm90YXRpb25zIHRoYXQgdHdlYWsgdGhlIHJlbmRlcmluZyBvZiBhIGNvbXBsZXRpb25cclxuICogaXRlbS5cclxuICpcclxuICogQHNpbmNlIDMuMTUuMFxyXG4gKi9cclxuZXhwb3J0IHZhciBDb21wbGV0aW9uSXRlbVRhZztcclxuKGZ1bmN0aW9uIChDb21wbGV0aW9uSXRlbVRhZykge1xyXG4gICAgLyoqXHJcbiAgICAgKiBSZW5kZXIgYSBjb21wbGV0aW9uIGFzIG9ic29sZXRlLCB1c3VhbGx5IHVzaW5nIGEgc3RyaWtlLW91dC5cclxuICAgICAqL1xyXG4gICAgQ29tcGxldGlvbkl0ZW1UYWcuRGVwcmVjYXRlZCA9IDE7XHJcbn0pKENvbXBsZXRpb25JdGVtVGFnIHx8IChDb21wbGV0aW9uSXRlbVRhZyA9IHt9KSk7XHJcbi8qKlxyXG4gKiBUaGUgQ29tcGxldGlvbkl0ZW0gbmFtZXNwYWNlIHByb3ZpZGVzIGZ1bmN0aW9ucyB0byBkZWFsIHdpdGhcclxuICogY29tcGxldGlvbiBpdGVtcy5cclxuICovXHJcbmV4cG9ydCB2YXIgQ29tcGxldGlvbkl0ZW07XHJcbihmdW5jdGlvbiAoQ29tcGxldGlvbkl0ZW0pIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlIGEgY29tcGxldGlvbiBpdGVtIGFuZCBzZWVkIGl0IHdpdGggYSBsYWJlbC5cclxuICAgICAqIEBwYXJhbSBsYWJlbCBUaGUgY29tcGxldGlvbiBpdGVtJ3MgbGFiZWxcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gY3JlYXRlKGxhYmVsKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgbGFiZWw6IGxhYmVsIH07XHJcbiAgICB9XHJcbiAgICBDb21wbGV0aW9uSXRlbS5jcmVhdGUgPSBjcmVhdGU7XHJcbn0pKENvbXBsZXRpb25JdGVtIHx8IChDb21wbGV0aW9uSXRlbSA9IHt9KSk7XHJcbi8qKlxyXG4gKiBUaGUgQ29tcGxldGlvbkxpc3QgbmFtZXNwYWNlIHByb3ZpZGVzIGZ1bmN0aW9ucyB0byBkZWFsIHdpdGhcclxuICogY29tcGxldGlvbiBsaXN0cy5cclxuICovXHJcbmV4cG9ydCB2YXIgQ29tcGxldGlvbkxpc3Q7XHJcbihmdW5jdGlvbiAoQ29tcGxldGlvbkxpc3QpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBjb21wbGV0aW9uIGxpc3QuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGl0ZW1zIFRoZSBjb21wbGV0aW9uIGl0ZW1zLlxyXG4gICAgICogQHBhcmFtIGlzSW5jb21wbGV0ZSBUaGUgbGlzdCBpcyBub3QgY29tcGxldGUuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGNyZWF0ZShpdGVtcywgaXNJbmNvbXBsZXRlKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgaXRlbXM6IGl0ZW1zID8gaXRlbXMgOiBbXSwgaXNJbmNvbXBsZXRlOiAhIWlzSW5jb21wbGV0ZSB9O1xyXG4gICAgfVxyXG4gICAgQ29tcGxldGlvbkxpc3QuY3JlYXRlID0gY3JlYXRlO1xyXG59KShDb21wbGV0aW9uTGlzdCB8fCAoQ29tcGxldGlvbkxpc3QgPSB7fSkpO1xyXG5leHBvcnQgdmFyIE1hcmtlZFN0cmluZztcclxuKGZ1bmN0aW9uIChNYXJrZWRTdHJpbmcpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG1hcmtlZCBzdHJpbmcgZnJvbSBwbGFpbiB0ZXh0LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBwbGFpblRleHQgVGhlIHBsYWluIHRleHQuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGZyb21QbGFpblRleHQocGxhaW5UZXh0KSB7XHJcbiAgICAgICAgcmV0dXJuIHBsYWluVGV4dC5yZXBsYWNlKC9bXFxcXGAqX3t9W1xcXSgpIytcXC0uIV0vZywgJ1xcXFwkJicpOyAvLyBlc2NhcGUgbWFya2Rvd24gc3ludGF4IHRva2VuczogaHR0cDovL2RhcmluZ2ZpcmViYWxsLm5ldC9wcm9qZWN0cy9tYXJrZG93bi9zeW50YXgjYmFja3NsYXNoXHJcbiAgICB9XHJcbiAgICBNYXJrZWRTdHJpbmcuZnJvbVBsYWluVGV4dCA9IGZyb21QbGFpblRleHQ7XHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBjb25mb3JtcyB0byB0aGUgW01hcmtlZFN0cmluZ10oI01hcmtlZFN0cmluZykgdHlwZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gaXModmFsdWUpIHtcclxuICAgICAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIElzLnN0cmluZyhjYW5kaWRhdGUpIHx8IChJcy5vYmplY3RMaXRlcmFsKGNhbmRpZGF0ZSkgJiYgSXMuc3RyaW5nKGNhbmRpZGF0ZS5sYW5ndWFnZSkgJiYgSXMuc3RyaW5nKGNhbmRpZGF0ZS52YWx1ZSkpO1xyXG4gICAgfVxyXG4gICAgTWFya2VkU3RyaW5nLmlzID0gaXM7XHJcbn0pKE1hcmtlZFN0cmluZyB8fCAoTWFya2VkU3RyaW5nID0ge30pKTtcclxuZXhwb3J0IHZhciBIb3ZlcjtcclxuKGZ1bmN0aW9uIChIb3Zlcikge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gdmFsdWUgY29uZm9ybXMgdG8gdGhlIFtIb3Zlcl0oI0hvdmVyKSBpbnRlcmZhY2UuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XHJcbiAgICAgICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiAhIWNhbmRpZGF0ZSAmJiBJcy5vYmplY3RMaXRlcmFsKGNhbmRpZGF0ZSkgJiYgKE1hcmt1cENvbnRlbnQuaXMoY2FuZGlkYXRlLmNvbnRlbnRzKSB8fFxyXG4gICAgICAgICAgICBNYXJrZWRTdHJpbmcuaXMoY2FuZGlkYXRlLmNvbnRlbnRzKSB8fFxyXG4gICAgICAgICAgICBJcy50eXBlZEFycmF5KGNhbmRpZGF0ZS5jb250ZW50cywgTWFya2VkU3RyaW5nLmlzKSkgJiYgKHZhbHVlLnJhbmdlID09PSB2b2lkIDAgfHwgUmFuZ2UuaXModmFsdWUucmFuZ2UpKTtcclxuICAgIH1cclxuICAgIEhvdmVyLmlzID0gaXM7XHJcbn0pKEhvdmVyIHx8IChIb3ZlciA9IHt9KSk7XHJcbi8qKlxyXG4gKiBUaGUgUGFyYW1ldGVySW5mb3JtYXRpb24gbmFtZXNwYWNlIHByb3ZpZGVzIGhlbHBlciBmdW5jdGlvbnMgdG8gd29yayB3aXRoXHJcbiAqIFtQYXJhbWV0ZXJJbmZvcm1hdGlvbl0oI1BhcmFtZXRlckluZm9ybWF0aW9uKSBsaXRlcmFscy5cclxuICovXHJcbmV4cG9ydCB2YXIgUGFyYW1ldGVySW5mb3JtYXRpb247XHJcbihmdW5jdGlvbiAoUGFyYW1ldGVySW5mb3JtYXRpb24pIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBwYXJhbWV0ZXIgaW5mb3JtYXRpb24gbGl0ZXJhbC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gbGFiZWwgQSBsYWJlbCBzdHJpbmcuXHJcbiAgICAgKiBAcGFyYW0gZG9jdW1lbnRhdGlvbiBBIGRvYyBzdHJpbmcuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGNyZWF0ZShsYWJlbCwgZG9jdW1lbnRhdGlvbikge1xyXG4gICAgICAgIHJldHVybiBkb2N1bWVudGF0aW9uID8geyBsYWJlbDogbGFiZWwsIGRvY3VtZW50YXRpb246IGRvY3VtZW50YXRpb24gfSA6IHsgbGFiZWw6IGxhYmVsIH07XHJcbiAgICB9XHJcbiAgICBQYXJhbWV0ZXJJbmZvcm1hdGlvbi5jcmVhdGUgPSBjcmVhdGU7XHJcbn0pKFBhcmFtZXRlckluZm9ybWF0aW9uIHx8IChQYXJhbWV0ZXJJbmZvcm1hdGlvbiA9IHt9KSk7XHJcbi8qKlxyXG4gKiBUaGUgU2lnbmF0dXJlSW5mb3JtYXRpb24gbmFtZXNwYWNlIHByb3ZpZGVzIGhlbHBlciBmdW5jdGlvbnMgdG8gd29yayB3aXRoXHJcbiAqIFtTaWduYXR1cmVJbmZvcm1hdGlvbl0oI1NpZ25hdHVyZUluZm9ybWF0aW9uKSBsaXRlcmFscy5cclxuICovXHJcbmV4cG9ydCB2YXIgU2lnbmF0dXJlSW5mb3JtYXRpb247XHJcbihmdW5jdGlvbiAoU2lnbmF0dXJlSW5mb3JtYXRpb24pIHtcclxuICAgIGZ1bmN0aW9uIGNyZWF0ZShsYWJlbCwgZG9jdW1lbnRhdGlvbikge1xyXG4gICAgICAgIHZhciBwYXJhbWV0ZXJzID0gW107XHJcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICAgICAgcGFyYW1ldGVyc1tfaSAtIDJdID0gYXJndW1lbnRzW19pXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHsgbGFiZWw6IGxhYmVsIH07XHJcbiAgICAgICAgaWYgKElzLmRlZmluZWQoZG9jdW1lbnRhdGlvbikpIHtcclxuICAgICAgICAgICAgcmVzdWx0LmRvY3VtZW50YXRpb24gPSBkb2N1bWVudGF0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoSXMuZGVmaW5lZChwYXJhbWV0ZXJzKSkge1xyXG4gICAgICAgICAgICByZXN1bHQucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXN1bHQucGFyYW1ldGVycyA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgU2lnbmF0dXJlSW5mb3JtYXRpb24uY3JlYXRlID0gY3JlYXRlO1xyXG59KShTaWduYXR1cmVJbmZvcm1hdGlvbiB8fCAoU2lnbmF0dXJlSW5mb3JtYXRpb24gPSB7fSkpO1xyXG4vKipcclxuICogQSBkb2N1bWVudCBoaWdobGlnaHQga2luZC5cclxuICovXHJcbmV4cG9ydCB2YXIgRG9jdW1lbnRIaWdobGlnaHRLaW5kO1xyXG4oZnVuY3Rpb24gKERvY3VtZW50SGlnaGxpZ2h0S2luZCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBBIHRleHR1YWwgb2NjdXJyZW5jZS5cclxuICAgICAqL1xyXG4gICAgRG9jdW1lbnRIaWdobGlnaHRLaW5kLlRleHQgPSAxO1xyXG4gICAgLyoqXHJcbiAgICAgKiBSZWFkLWFjY2VzcyBvZiBhIHN5bWJvbCwgbGlrZSByZWFkaW5nIGEgdmFyaWFibGUuXHJcbiAgICAgKi9cclxuICAgIERvY3VtZW50SGlnaGxpZ2h0S2luZC5SZWFkID0gMjtcclxuICAgIC8qKlxyXG4gICAgICogV3JpdGUtYWNjZXNzIG9mIGEgc3ltYm9sLCBsaWtlIHdyaXRpbmcgdG8gYSB2YXJpYWJsZS5cclxuICAgICAqL1xyXG4gICAgRG9jdW1lbnRIaWdobGlnaHRLaW5kLldyaXRlID0gMztcclxufSkoRG9jdW1lbnRIaWdobGlnaHRLaW5kIHx8IChEb2N1bWVudEhpZ2hsaWdodEtpbmQgPSB7fSkpO1xyXG4vKipcclxuICogRG9jdW1lbnRIaWdobGlnaHQgbmFtZXNwYWNlIHRvIHByb3ZpZGUgaGVscGVyIGZ1bmN0aW9ucyB0byB3b3JrIHdpdGhcclxuICogW0RvY3VtZW50SGlnaGxpZ2h0XSgjRG9jdW1lbnRIaWdobGlnaHQpIGxpdGVyYWxzLlxyXG4gKi9cclxuZXhwb3J0IHZhciBEb2N1bWVudEhpZ2hsaWdodDtcclxuKGZ1bmN0aW9uIChEb2N1bWVudEhpZ2hsaWdodCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGUgYSBEb2N1bWVudEhpZ2hsaWdodCBvYmplY3QuXHJcbiAgICAgKiBAcGFyYW0gcmFuZ2UgVGhlIHJhbmdlIHRoZSBoaWdobGlnaHQgYXBwbGllcyB0by5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gY3JlYXRlKHJhbmdlLCBraW5kKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHsgcmFuZ2U6IHJhbmdlIH07XHJcbiAgICAgICAgaWYgKElzLm51bWJlcihraW5kKSkge1xyXG4gICAgICAgICAgICByZXN1bHQua2luZCA9IGtpbmQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBEb2N1bWVudEhpZ2hsaWdodC5jcmVhdGUgPSBjcmVhdGU7XHJcbn0pKERvY3VtZW50SGlnaGxpZ2h0IHx8IChEb2N1bWVudEhpZ2hsaWdodCA9IHt9KSk7XHJcbi8qKlxyXG4gKiBBIHN5bWJvbCBraW5kLlxyXG4gKi9cclxuZXhwb3J0IHZhciBTeW1ib2xLaW5kO1xyXG4oZnVuY3Rpb24gKFN5bWJvbEtpbmQpIHtcclxuICAgIFN5bWJvbEtpbmQuRmlsZSA9IDE7XHJcbiAgICBTeW1ib2xLaW5kLk1vZHVsZSA9IDI7XHJcbiAgICBTeW1ib2xLaW5kLk5hbWVzcGFjZSA9IDM7XHJcbiAgICBTeW1ib2xLaW5kLlBhY2thZ2UgPSA0O1xyXG4gICAgU3ltYm9sS2luZC5DbGFzcyA9IDU7XHJcbiAgICBTeW1ib2xLaW5kLk1ldGhvZCA9IDY7XHJcbiAgICBTeW1ib2xLaW5kLlByb3BlcnR5ID0gNztcclxuICAgIFN5bWJvbEtpbmQuRmllbGQgPSA4O1xyXG4gICAgU3ltYm9sS2luZC5Db25zdHJ1Y3RvciA9IDk7XHJcbiAgICBTeW1ib2xLaW5kLkVudW0gPSAxMDtcclxuICAgIFN5bWJvbEtpbmQuSW50ZXJmYWNlID0gMTE7XHJcbiAgICBTeW1ib2xLaW5kLkZ1bmN0aW9uID0gMTI7XHJcbiAgICBTeW1ib2xLaW5kLlZhcmlhYmxlID0gMTM7XHJcbiAgICBTeW1ib2xLaW5kLkNvbnN0YW50ID0gMTQ7XHJcbiAgICBTeW1ib2xLaW5kLlN0cmluZyA9IDE1O1xyXG4gICAgU3ltYm9sS2luZC5OdW1iZXIgPSAxNjtcclxuICAgIFN5bWJvbEtpbmQuQm9vbGVhbiA9IDE3O1xyXG4gICAgU3ltYm9sS2luZC5BcnJheSA9IDE4O1xyXG4gICAgU3ltYm9sS2luZC5PYmplY3QgPSAxOTtcclxuICAgIFN5bWJvbEtpbmQuS2V5ID0gMjA7XHJcbiAgICBTeW1ib2xLaW5kLk51bGwgPSAyMTtcclxuICAgIFN5bWJvbEtpbmQuRW51bU1lbWJlciA9IDIyO1xyXG4gICAgU3ltYm9sS2luZC5TdHJ1Y3QgPSAyMztcclxuICAgIFN5bWJvbEtpbmQuRXZlbnQgPSAyNDtcclxuICAgIFN5bWJvbEtpbmQuT3BlcmF0b3IgPSAyNTtcclxuICAgIFN5bWJvbEtpbmQuVHlwZVBhcmFtZXRlciA9IDI2O1xyXG59KShTeW1ib2xLaW5kIHx8IChTeW1ib2xLaW5kID0ge30pKTtcclxuLyoqXHJcbiAqIFN5bWJvbCB0YWdzIGFyZSBleHRyYSBhbm5vdGF0aW9ucyB0aGF0IHR3ZWFrIHRoZSByZW5kZXJpbmcgb2YgYSBzeW1ib2wuXHJcbiAqIEBzaW5jZSAzLjE1XHJcbiAqL1xyXG5leHBvcnQgdmFyIFN5bWJvbFRhZztcclxuKGZ1bmN0aW9uIChTeW1ib2xUYWcpIHtcclxuICAgIC8qKlxyXG4gICAgICogUmVuZGVyIGEgc3ltYm9sIGFzIG9ic29sZXRlLCB1c3VhbGx5IHVzaW5nIGEgc3RyaWtlLW91dC5cclxuICAgICAqL1xyXG4gICAgU3ltYm9sVGFnLkRlcHJlY2F0ZWQgPSAxO1xyXG59KShTeW1ib2xUYWcgfHwgKFN5bWJvbFRhZyA9IHt9KSk7XHJcbmV4cG9ydCB2YXIgU3ltYm9sSW5mb3JtYXRpb247XHJcbihmdW5jdGlvbiAoU3ltYm9sSW5mb3JtYXRpb24pIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBzeW1ib2wgaW5mb3JtYXRpb24gbGl0ZXJhbC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgc3ltYm9sLlxyXG4gICAgICogQHBhcmFtIGtpbmQgVGhlIGtpbmQgb2YgdGhlIHN5bWJvbC5cclxuICAgICAqIEBwYXJhbSByYW5nZSBUaGUgcmFuZ2Ugb2YgdGhlIGxvY2F0aW9uIG9mIHRoZSBzeW1ib2wuXHJcbiAgICAgKiBAcGFyYW0gdXJpIFRoZSByZXNvdXJjZSBvZiB0aGUgbG9jYXRpb24gb2Ygc3ltYm9sLCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBkb2N1bWVudC5cclxuICAgICAqIEBwYXJhbSBjb250YWluZXJOYW1lIFRoZSBuYW1lIG9mIHRoZSBzeW1ib2wgY29udGFpbmluZyB0aGUgc3ltYm9sLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBjcmVhdGUobmFtZSwga2luZCwgcmFuZ2UsIHVyaSwgY29udGFpbmVyTmFtZSkge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXHJcbiAgICAgICAgICAgIGtpbmQ6IGtpbmQsXHJcbiAgICAgICAgICAgIGxvY2F0aW9uOiB7IHVyaTogdXJpLCByYW5nZTogcmFuZ2UgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKGNvbnRhaW5lck5hbWUpIHtcclxuICAgICAgICAgICAgcmVzdWx0LmNvbnRhaW5lck5hbWUgPSBjb250YWluZXJOYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgU3ltYm9sSW5mb3JtYXRpb24uY3JlYXRlID0gY3JlYXRlO1xyXG59KShTeW1ib2xJbmZvcm1hdGlvbiB8fCAoU3ltYm9sSW5mb3JtYXRpb24gPSB7fSkpO1xyXG5leHBvcnQgdmFyIERvY3VtZW50U3ltYm9sO1xyXG4oZnVuY3Rpb24gKERvY3VtZW50U3ltYm9sKSB7XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBuZXcgc3ltYm9sIGluZm9ybWF0aW9uIGxpdGVyYWwuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHN5bWJvbC5cclxuICAgICAqIEBwYXJhbSBkZXRhaWwgVGhlIGRldGFpbCBvZiB0aGUgc3ltYm9sLlxyXG4gICAgICogQHBhcmFtIGtpbmQgVGhlIGtpbmQgb2YgdGhlIHN5bWJvbC5cclxuICAgICAqIEBwYXJhbSByYW5nZSBUaGUgcmFuZ2Ugb2YgdGhlIHN5bWJvbC5cclxuICAgICAqIEBwYXJhbSBzZWxlY3Rpb25SYW5nZSBUaGUgc2VsZWN0aW9uUmFuZ2Ugb2YgdGhlIHN5bWJvbC5cclxuICAgICAqIEBwYXJhbSBjaGlsZHJlbiBDaGlsZHJlbiBvZiB0aGUgc3ltYm9sLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBjcmVhdGUobmFtZSwgZGV0YWlsLCBraW5kLCByYW5nZSwgc2VsZWN0aW9uUmFuZ2UsIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICAgICAgZGV0YWlsOiBkZXRhaWwsXHJcbiAgICAgICAgICAgIGtpbmQ6IGtpbmQsXHJcbiAgICAgICAgICAgIHJhbmdlOiByYW5nZSxcclxuICAgICAgICAgICAgc2VsZWN0aW9uUmFuZ2U6IHNlbGVjdGlvblJhbmdlXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoY2hpbGRyZW4gIT09IHZvaWQgMCkge1xyXG4gICAgICAgICAgICByZXN1bHQuY2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuICAgIERvY3VtZW50U3ltYm9sLmNyZWF0ZSA9IGNyZWF0ZTtcclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGxpdGVyYWwgY29uZm9ybXMgdG8gdGhlIFtEb2N1bWVudFN5bWJvbF0oI0RvY3VtZW50U3ltYm9sKSBpbnRlcmZhY2UuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XHJcbiAgICAgICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiBjYW5kaWRhdGUgJiZcclxuICAgICAgICAgICAgSXMuc3RyaW5nKGNhbmRpZGF0ZS5uYW1lKSAmJiBJcy5udW1iZXIoY2FuZGlkYXRlLmtpbmQpICYmXHJcbiAgICAgICAgICAgIFJhbmdlLmlzKGNhbmRpZGF0ZS5yYW5nZSkgJiYgUmFuZ2UuaXMoY2FuZGlkYXRlLnNlbGVjdGlvblJhbmdlKSAmJlxyXG4gICAgICAgICAgICAoY2FuZGlkYXRlLmRldGFpbCA9PT0gdm9pZCAwIHx8IElzLnN0cmluZyhjYW5kaWRhdGUuZGV0YWlsKSkgJiZcclxuICAgICAgICAgICAgKGNhbmRpZGF0ZS5kZXByZWNhdGVkID09PSB2b2lkIDAgfHwgSXMuYm9vbGVhbihjYW5kaWRhdGUuZGVwcmVjYXRlZCkpICYmXHJcbiAgICAgICAgICAgIChjYW5kaWRhdGUuY2hpbGRyZW4gPT09IHZvaWQgMCB8fCBBcnJheS5pc0FycmF5KGNhbmRpZGF0ZS5jaGlsZHJlbikpO1xyXG4gICAgfVxyXG4gICAgRG9jdW1lbnRTeW1ib2wuaXMgPSBpcztcclxufSkoRG9jdW1lbnRTeW1ib2wgfHwgKERvY3VtZW50U3ltYm9sID0ge30pKTtcclxuLyoqXHJcbiAqIEEgc2V0IG9mIHByZWRlZmluZWQgY29kZSBhY3Rpb24ga2luZHNcclxuICovXHJcbmV4cG9ydCB2YXIgQ29kZUFjdGlvbktpbmQ7XHJcbihmdW5jdGlvbiAoQ29kZUFjdGlvbktpbmQpIHtcclxuICAgIC8qKlxyXG4gICAgICogRW1wdHkga2luZC5cclxuICAgICAqL1xyXG4gICAgQ29kZUFjdGlvbktpbmQuRW1wdHkgPSAnJztcclxuICAgIC8qKlxyXG4gICAgICogQmFzZSBraW5kIGZvciBxdWlja2ZpeCBhY3Rpb25zOiAncXVpY2tmaXgnXHJcbiAgICAgKi9cclxuICAgIENvZGVBY3Rpb25LaW5kLlF1aWNrRml4ID0gJ3F1aWNrZml4JztcclxuICAgIC8qKlxyXG4gICAgICogQmFzZSBraW5kIGZvciByZWZhY3RvcmluZyBhY3Rpb25zOiAncmVmYWN0b3InXHJcbiAgICAgKi9cclxuICAgIENvZGVBY3Rpb25LaW5kLlJlZmFjdG9yID0gJ3JlZmFjdG9yJztcclxuICAgIC8qKlxyXG4gICAgICogQmFzZSBraW5kIGZvciByZWZhY3RvcmluZyBleHRyYWN0aW9uIGFjdGlvbnM6ICdyZWZhY3Rvci5leHRyYWN0J1xyXG4gICAgICpcclxuICAgICAqIEV4YW1wbGUgZXh0cmFjdCBhY3Rpb25zOlxyXG4gICAgICpcclxuICAgICAqIC0gRXh0cmFjdCBtZXRob2RcclxuICAgICAqIC0gRXh0cmFjdCBmdW5jdGlvblxyXG4gICAgICogLSBFeHRyYWN0IHZhcmlhYmxlXHJcbiAgICAgKiAtIEV4dHJhY3QgaW50ZXJmYWNlIGZyb20gY2xhc3NcclxuICAgICAqIC0gLi4uXHJcbiAgICAgKi9cclxuICAgIENvZGVBY3Rpb25LaW5kLlJlZmFjdG9yRXh0cmFjdCA9ICdyZWZhY3Rvci5leHRyYWN0JztcclxuICAgIC8qKlxyXG4gICAgICogQmFzZSBraW5kIGZvciByZWZhY3RvcmluZyBpbmxpbmUgYWN0aW9uczogJ3JlZmFjdG9yLmlubGluZSdcclxuICAgICAqXHJcbiAgICAgKiBFeGFtcGxlIGlubGluZSBhY3Rpb25zOlxyXG4gICAgICpcclxuICAgICAqIC0gSW5saW5lIGZ1bmN0aW9uXHJcbiAgICAgKiAtIElubGluZSB2YXJpYWJsZVxyXG4gICAgICogLSBJbmxpbmUgY29uc3RhbnRcclxuICAgICAqIC0gLi4uXHJcbiAgICAgKi9cclxuICAgIENvZGVBY3Rpb25LaW5kLlJlZmFjdG9ySW5saW5lID0gJ3JlZmFjdG9yLmlubGluZSc7XHJcbiAgICAvKipcclxuICAgICAqIEJhc2Uga2luZCBmb3IgcmVmYWN0b3JpbmcgcmV3cml0ZSBhY3Rpb25zOiAncmVmYWN0b3IucmV3cml0ZSdcclxuICAgICAqXHJcbiAgICAgKiBFeGFtcGxlIHJld3JpdGUgYWN0aW9uczpcclxuICAgICAqXHJcbiAgICAgKiAtIENvbnZlcnQgSmF2YVNjcmlwdCBmdW5jdGlvbiB0byBjbGFzc1xyXG4gICAgICogLSBBZGQgb3IgcmVtb3ZlIHBhcmFtZXRlclxyXG4gICAgICogLSBFbmNhcHN1bGF0ZSBmaWVsZFxyXG4gICAgICogLSBNYWtlIG1ldGhvZCBzdGF0aWNcclxuICAgICAqIC0gTW92ZSBtZXRob2QgdG8gYmFzZSBjbGFzc1xyXG4gICAgICogLSAuLi5cclxuICAgICAqL1xyXG4gICAgQ29kZUFjdGlvbktpbmQuUmVmYWN0b3JSZXdyaXRlID0gJ3JlZmFjdG9yLnJld3JpdGUnO1xyXG4gICAgLyoqXHJcbiAgICAgKiBCYXNlIGtpbmQgZm9yIHNvdXJjZSBhY3Rpb25zOiBgc291cmNlYFxyXG4gICAgICpcclxuICAgICAqIFNvdXJjZSBjb2RlIGFjdGlvbnMgYXBwbHkgdG8gdGhlIGVudGlyZSBmaWxlLlxyXG4gICAgICovXHJcbiAgICBDb2RlQWN0aW9uS2luZC5Tb3VyY2UgPSAnc291cmNlJztcclxuICAgIC8qKlxyXG4gICAgICogQmFzZSBraW5kIGZvciBhbiBvcmdhbml6ZSBpbXBvcnRzIHNvdXJjZSBhY3Rpb246IGBzb3VyY2Uub3JnYW5pemVJbXBvcnRzYFxyXG4gICAgICovXHJcbiAgICBDb2RlQWN0aW9uS2luZC5Tb3VyY2VPcmdhbml6ZUltcG9ydHMgPSAnc291cmNlLm9yZ2FuaXplSW1wb3J0cyc7XHJcbiAgICAvKipcclxuICAgICAqIEJhc2Uga2luZCBmb3IgYXV0by1maXggc291cmNlIGFjdGlvbnM6IGBzb3VyY2UuZml4QWxsYC5cclxuICAgICAqXHJcbiAgICAgKiBGaXggYWxsIGFjdGlvbnMgYXV0b21hdGljYWxseSBmaXggZXJyb3JzIHRoYXQgaGF2ZSBhIGNsZWFyIGZpeCB0aGF0IGRvIG5vdCByZXF1aXJlIHVzZXIgaW5wdXQuXHJcbiAgICAgKiBUaGV5IHNob3VsZCBub3Qgc3VwcHJlc3MgZXJyb3JzIG9yIHBlcmZvcm0gdW5zYWZlIGZpeGVzIHN1Y2ggYXMgZ2VuZXJhdGluZyBuZXcgdHlwZXMgb3IgY2xhc3Nlcy5cclxuICAgICAqXHJcbiAgICAgKiBAc2luY2UgMy4xNS4wXHJcbiAgICAgKi9cclxuICAgIENvZGVBY3Rpb25LaW5kLlNvdXJjZUZpeEFsbCA9ICdzb3VyY2UuZml4QWxsJztcclxufSkoQ29kZUFjdGlvbktpbmQgfHwgKENvZGVBY3Rpb25LaW5kID0ge30pKTtcclxuLyoqXHJcbiAqIFRoZSBDb2RlQWN0aW9uQ29udGV4dCBuYW1lc3BhY2UgcHJvdmlkZXMgaGVscGVyIGZ1bmN0aW9ucyB0byB3b3JrIHdpdGhcclxuICogW0NvZGVBY3Rpb25Db250ZXh0XSgjQ29kZUFjdGlvbkNvbnRleHQpIGxpdGVyYWxzLlxyXG4gKi9cclxuZXhwb3J0IHZhciBDb2RlQWN0aW9uQ29udGV4dDtcclxuKGZ1bmN0aW9uIChDb2RlQWN0aW9uQ29udGV4dCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgbmV3IENvZGVBY3Rpb25Db250ZXh0IGxpdGVyYWwuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGNyZWF0ZShkaWFnbm9zdGljcywgb25seSkge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSB7IGRpYWdub3N0aWNzOiBkaWFnbm9zdGljcyB9O1xyXG4gICAgICAgIGlmIChvbmx5ICE9PSB2b2lkIDAgJiYgb25seSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXN1bHQub25seSA9IG9ubHk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBDb2RlQWN0aW9uQ29udGV4dC5jcmVhdGUgPSBjcmVhdGU7XHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBsaXRlcmFsIGNvbmZvcm1zIHRvIHRoZSBbQ29kZUFjdGlvbkNvbnRleHRdKCNDb2RlQWN0aW9uQ29udGV4dCkgaW50ZXJmYWNlLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xyXG4gICAgICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gSXMuZGVmaW5lZChjYW5kaWRhdGUpICYmIElzLnR5cGVkQXJyYXkoY2FuZGlkYXRlLmRpYWdub3N0aWNzLCBEaWFnbm9zdGljLmlzKSAmJiAoY2FuZGlkYXRlLm9ubHkgPT09IHZvaWQgMCB8fCBJcy50eXBlZEFycmF5KGNhbmRpZGF0ZS5vbmx5LCBJcy5zdHJpbmcpKTtcclxuICAgIH1cclxuICAgIENvZGVBY3Rpb25Db250ZXh0LmlzID0gaXM7XHJcbn0pKENvZGVBY3Rpb25Db250ZXh0IHx8IChDb2RlQWN0aW9uQ29udGV4dCA9IHt9KSk7XHJcbmV4cG9ydCB2YXIgQ29kZUFjdGlvbjtcclxuKGZ1bmN0aW9uIChDb2RlQWN0aW9uKSB7XHJcbiAgICBmdW5jdGlvbiBjcmVhdGUodGl0bGUsIGNvbW1hbmRPckVkaXQsIGtpbmQpIHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0geyB0aXRsZTogdGl0bGUgfTtcclxuICAgICAgICBpZiAoQ29tbWFuZC5pcyhjb21tYW5kT3JFZGl0KSkge1xyXG4gICAgICAgICAgICByZXN1bHQuY29tbWFuZCA9IGNvbW1hbmRPckVkaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXN1bHQuZWRpdCA9IGNvbW1hbmRPckVkaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChraW5kICE9PSB2b2lkIDApIHtcclxuICAgICAgICAgICAgcmVzdWx0LmtpbmQgPSBraW5kO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgQ29kZUFjdGlvbi5jcmVhdGUgPSBjcmVhdGU7XHJcbiAgICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xyXG4gICAgICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gY2FuZGlkYXRlICYmIElzLnN0cmluZyhjYW5kaWRhdGUudGl0bGUpICYmXHJcbiAgICAgICAgICAgIChjYW5kaWRhdGUuZGlhZ25vc3RpY3MgPT09IHZvaWQgMCB8fCBJcy50eXBlZEFycmF5KGNhbmRpZGF0ZS5kaWFnbm9zdGljcywgRGlhZ25vc3RpYy5pcykpICYmXHJcbiAgICAgICAgICAgIChjYW5kaWRhdGUua2luZCA9PT0gdm9pZCAwIHx8IElzLnN0cmluZyhjYW5kaWRhdGUua2luZCkpICYmXHJcbiAgICAgICAgICAgIChjYW5kaWRhdGUuZWRpdCAhPT0gdm9pZCAwIHx8IGNhbmRpZGF0ZS5jb21tYW5kICE9PSB2b2lkIDApICYmXHJcbiAgICAgICAgICAgIChjYW5kaWRhdGUuY29tbWFuZCA9PT0gdm9pZCAwIHx8IENvbW1hbmQuaXMoY2FuZGlkYXRlLmNvbW1hbmQpKSAmJlxyXG4gICAgICAgICAgICAoY2FuZGlkYXRlLmlzUHJlZmVycmVkID09PSB2b2lkIDAgfHwgSXMuYm9vbGVhbihjYW5kaWRhdGUuaXNQcmVmZXJyZWQpKSAmJlxyXG4gICAgICAgICAgICAoY2FuZGlkYXRlLmVkaXQgPT09IHZvaWQgMCB8fCBXb3Jrc3BhY2VFZGl0LmlzKGNhbmRpZGF0ZS5lZGl0KSk7XHJcbiAgICB9XHJcbiAgICBDb2RlQWN0aW9uLmlzID0gaXM7XHJcbn0pKENvZGVBY3Rpb24gfHwgKENvZGVBY3Rpb24gPSB7fSkpO1xyXG4vKipcclxuICogVGhlIENvZGVMZW5zIG5hbWVzcGFjZSBwcm92aWRlcyBoZWxwZXIgZnVuY3Rpb25zIHRvIHdvcmsgd2l0aFxyXG4gKiBbQ29kZUxlbnNdKCNDb2RlTGVucykgbGl0ZXJhbHMuXHJcbiAqL1xyXG5leHBvcnQgdmFyIENvZGVMZW5zO1xyXG4oZnVuY3Rpb24gKENvZGVMZW5zKSB7XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBuZXcgQ29kZUxlbnMgbGl0ZXJhbC5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gY3JlYXRlKHJhbmdlLCBkYXRhKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHsgcmFuZ2U6IHJhbmdlIH07XHJcbiAgICAgICAgaWYgKElzLmRlZmluZWQoZGF0YSkpIHtcclxuICAgICAgICAgICAgcmVzdWx0LmRhdGEgPSBkYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgQ29kZUxlbnMuY3JlYXRlID0gY3JlYXRlO1xyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gbGl0ZXJhbCBjb25mb3JtcyB0byB0aGUgW0NvZGVMZW5zXSgjQ29kZUxlbnMpIGludGVyZmFjZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gaXModmFsdWUpIHtcclxuICAgICAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIElzLmRlZmluZWQoY2FuZGlkYXRlKSAmJiBSYW5nZS5pcyhjYW5kaWRhdGUucmFuZ2UpICYmIChJcy51bmRlZmluZWQoY2FuZGlkYXRlLmNvbW1hbmQpIHx8IENvbW1hbmQuaXMoY2FuZGlkYXRlLmNvbW1hbmQpKTtcclxuICAgIH1cclxuICAgIENvZGVMZW5zLmlzID0gaXM7XHJcbn0pKENvZGVMZW5zIHx8IChDb2RlTGVucyA9IHt9KSk7XHJcbi8qKlxyXG4gKiBUaGUgRm9ybWF0dGluZ09wdGlvbnMgbmFtZXNwYWNlIHByb3ZpZGVzIGhlbHBlciBmdW5jdGlvbnMgdG8gd29yayB3aXRoXHJcbiAqIFtGb3JtYXR0aW5nT3B0aW9uc10oI0Zvcm1hdHRpbmdPcHRpb25zKSBsaXRlcmFscy5cclxuICovXHJcbmV4cG9ydCB2YXIgRm9ybWF0dGluZ09wdGlvbnM7XHJcbihmdW5jdGlvbiAoRm9ybWF0dGluZ09wdGlvbnMpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBGb3JtYXR0aW5nT3B0aW9ucyBsaXRlcmFsLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBjcmVhdGUodGFiU2l6ZSwgaW5zZXJ0U3BhY2VzKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgdGFiU2l6ZTogdGFiU2l6ZSwgaW5zZXJ0U3BhY2VzOiBpbnNlcnRTcGFjZXMgfTtcclxuICAgIH1cclxuICAgIEZvcm1hdHRpbmdPcHRpb25zLmNyZWF0ZSA9IGNyZWF0ZTtcclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGxpdGVyYWwgY29uZm9ybXMgdG8gdGhlIFtGb3JtYXR0aW5nT3B0aW9uc10oI0Zvcm1hdHRpbmdPcHRpb25zKSBpbnRlcmZhY2UuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XHJcbiAgICAgICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiBJcy5kZWZpbmVkKGNhbmRpZGF0ZSkgJiYgSXMubnVtYmVyKGNhbmRpZGF0ZS50YWJTaXplKSAmJiBJcy5ib29sZWFuKGNhbmRpZGF0ZS5pbnNlcnRTcGFjZXMpO1xyXG4gICAgfVxyXG4gICAgRm9ybWF0dGluZ09wdGlvbnMuaXMgPSBpcztcclxufSkoRm9ybWF0dGluZ09wdGlvbnMgfHwgKEZvcm1hdHRpbmdPcHRpb25zID0ge30pKTtcclxuLyoqXHJcbiAqIFRoZSBEb2N1bWVudExpbmsgbmFtZXNwYWNlIHByb3ZpZGVzIGhlbHBlciBmdW5jdGlvbnMgdG8gd29yayB3aXRoXHJcbiAqIFtEb2N1bWVudExpbmtdKCNEb2N1bWVudExpbmspIGxpdGVyYWxzLlxyXG4gKi9cclxuZXhwb3J0IHZhciBEb2N1bWVudExpbms7XHJcbihmdW5jdGlvbiAoRG9jdW1lbnRMaW5rKSB7XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBuZXcgRG9jdW1lbnRMaW5rIGxpdGVyYWwuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGNyZWF0ZShyYW5nZSwgdGFyZ2V0LCBkYXRhKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgcmFuZ2U6IHJhbmdlLCB0YXJnZXQ6IHRhcmdldCwgZGF0YTogZGF0YSB9O1xyXG4gICAgfVxyXG4gICAgRG9jdW1lbnRMaW5rLmNyZWF0ZSA9IGNyZWF0ZTtcclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGxpdGVyYWwgY29uZm9ybXMgdG8gdGhlIFtEb2N1bWVudExpbmtdKCNEb2N1bWVudExpbmspIGludGVyZmFjZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gaXModmFsdWUpIHtcclxuICAgICAgICB2YXIgY2FuZGlkYXRlID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIElzLmRlZmluZWQoY2FuZGlkYXRlKSAmJiBSYW5nZS5pcyhjYW5kaWRhdGUucmFuZ2UpICYmIChJcy51bmRlZmluZWQoY2FuZGlkYXRlLnRhcmdldCkgfHwgSXMuc3RyaW5nKGNhbmRpZGF0ZS50YXJnZXQpKTtcclxuICAgIH1cclxuICAgIERvY3VtZW50TGluay5pcyA9IGlzO1xyXG59KShEb2N1bWVudExpbmsgfHwgKERvY3VtZW50TGluayA9IHt9KSk7XHJcbi8qKlxyXG4gKiBUaGUgU2VsZWN0aW9uUmFuZ2UgbmFtZXNwYWNlIHByb3ZpZGVzIGhlbHBlciBmdW5jdGlvbiB0byB3b3JrIHdpdGhcclxuICogU2VsZWN0aW9uUmFuZ2UgbGl0ZXJhbHMuXHJcbiAqL1xyXG5leHBvcnQgdmFyIFNlbGVjdGlvblJhbmdlO1xyXG4oZnVuY3Rpb24gKFNlbGVjdGlvblJhbmdlKSB7XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBuZXcgU2VsZWN0aW9uUmFuZ2VcclxuICAgICAqIEBwYXJhbSByYW5nZSB0aGUgcmFuZ2UuXHJcbiAgICAgKiBAcGFyYW0gcGFyZW50IGFuIG9wdGlvbmFsIHBhcmVudC5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gY3JlYXRlKHJhbmdlLCBwYXJlbnQpIHtcclxuICAgICAgICByZXR1cm4geyByYW5nZTogcmFuZ2UsIHBhcmVudDogcGFyZW50IH07XHJcbiAgICB9XHJcbiAgICBTZWxlY3Rpb25SYW5nZS5jcmVhdGUgPSBjcmVhdGU7XHJcbiAgICBmdW5jdGlvbiBpcyh2YWx1ZSkge1xyXG4gICAgICAgIHZhciBjYW5kaWRhdGUgPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gY2FuZGlkYXRlICE9PSB1bmRlZmluZWQgJiYgUmFuZ2UuaXMoY2FuZGlkYXRlLnJhbmdlKSAmJiAoY2FuZGlkYXRlLnBhcmVudCA9PT0gdW5kZWZpbmVkIHx8IFNlbGVjdGlvblJhbmdlLmlzKGNhbmRpZGF0ZS5wYXJlbnQpKTtcclxuICAgIH1cclxuICAgIFNlbGVjdGlvblJhbmdlLmlzID0gaXM7XHJcbn0pKFNlbGVjdGlvblJhbmdlIHx8IChTZWxlY3Rpb25SYW5nZSA9IHt9KSk7XHJcbmV4cG9ydCB2YXIgRU9MID0gWydcXG4nLCAnXFxyXFxuJywgJ1xcciddO1xyXG4vKipcclxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSB0ZXh0IGRvY3VtZW50IGZyb20gdGhlIG5ldyB2c2NvZGUtbGFuZ3VhZ2VzZXJ2ZXItdGV4dGRvY3VtZW50IHBhY2thZ2UuXHJcbiAqL1xyXG5leHBvcnQgdmFyIFRleHREb2N1bWVudDtcclxuKGZ1bmN0aW9uIChUZXh0RG9jdW1lbnQpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBJVGV4dERvY3VtZW50IGxpdGVyYWwgZnJvbSB0aGUgZ2l2ZW4gdXJpIGFuZCBjb250ZW50LlxyXG4gICAgICogQHBhcmFtIHVyaSBUaGUgZG9jdW1lbnQncyB1cmkuXHJcbiAgICAgKiBAcGFyYW0gbGFuZ3VhZ2VJZCAgVGhlIGRvY3VtZW50J3MgbGFuZ3VhZ2UgSWQuXHJcbiAgICAgKiBAcGFyYW0gY29udGVudCBUaGUgZG9jdW1lbnQncyBjb250ZW50LlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBjcmVhdGUodXJpLCBsYW5ndWFnZUlkLCB2ZXJzaW9uLCBjb250ZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBGdWxsVGV4dERvY3VtZW50KHVyaSwgbGFuZ3VhZ2VJZCwgdmVyc2lvbiwgY29udGVudCk7XHJcbiAgICB9XHJcbiAgICBUZXh0RG9jdW1lbnQuY3JlYXRlID0gY3JlYXRlO1xyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gbGl0ZXJhbCBjb25mb3JtcyB0byB0aGUgW0lUZXh0RG9jdW1lbnRdKCNJVGV4dERvY3VtZW50KSBpbnRlcmZhY2UuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGlzKHZhbHVlKSB7XHJcbiAgICAgICAgdmFyIGNhbmRpZGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiBJcy5kZWZpbmVkKGNhbmRpZGF0ZSkgJiYgSXMuc3RyaW5nKGNhbmRpZGF0ZS51cmkpICYmIChJcy51bmRlZmluZWQoY2FuZGlkYXRlLmxhbmd1YWdlSWQpIHx8IElzLnN0cmluZyhjYW5kaWRhdGUubGFuZ3VhZ2VJZCkpICYmIElzLm51bWJlcihjYW5kaWRhdGUubGluZUNvdW50KVxyXG4gICAgICAgICAgICAmJiBJcy5mdW5jKGNhbmRpZGF0ZS5nZXRUZXh0KSAmJiBJcy5mdW5jKGNhbmRpZGF0ZS5wb3NpdGlvbkF0KSAmJiBJcy5mdW5jKGNhbmRpZGF0ZS5vZmZzZXRBdCkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB9XHJcbiAgICBUZXh0RG9jdW1lbnQuaXMgPSBpcztcclxuICAgIGZ1bmN0aW9uIGFwcGx5RWRpdHMoZG9jdW1lbnQsIGVkaXRzKSB7XHJcbiAgICAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRUZXh0KCk7XHJcbiAgICAgICAgdmFyIHNvcnRlZEVkaXRzID0gbWVyZ2VTb3J0KGVkaXRzLCBmdW5jdGlvbiAoYSwgYikge1xyXG4gICAgICAgICAgICB2YXIgZGlmZiA9IGEucmFuZ2Uuc3RhcnQubGluZSAtIGIucmFuZ2Uuc3RhcnQubGluZTtcclxuICAgICAgICAgICAgaWYgKGRpZmYgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhLnJhbmdlLnN0YXJ0LmNoYXJhY3RlciAtIGIucmFuZ2Uuc3RhcnQuY2hhcmFjdGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBkaWZmO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHZhciBsYXN0TW9kaWZpZWRPZmZzZXQgPSB0ZXh0Lmxlbmd0aDtcclxuICAgICAgICBmb3IgKHZhciBpID0gc29ydGVkRWRpdHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgdmFyIGUgPSBzb3J0ZWRFZGl0c1tpXTtcclxuICAgICAgICAgICAgdmFyIHN0YXJ0T2Zmc2V0ID0gZG9jdW1lbnQub2Zmc2V0QXQoZS5yYW5nZS5zdGFydCk7XHJcbiAgICAgICAgICAgIHZhciBlbmRPZmZzZXQgPSBkb2N1bWVudC5vZmZzZXRBdChlLnJhbmdlLmVuZCk7XHJcbiAgICAgICAgICAgIGlmIChlbmRPZmZzZXQgPD0gbGFzdE1vZGlmaWVkT2Zmc2V0KSB7XHJcbiAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcoMCwgc3RhcnRPZmZzZXQpICsgZS5uZXdUZXh0ICsgdGV4dC5zdWJzdHJpbmcoZW5kT2Zmc2V0LCB0ZXh0Lmxlbmd0aCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ092ZXJsYXBwaW5nIGVkaXQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWRPZmZzZXQgPSBzdGFydE9mZnNldDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRleHQ7XHJcbiAgICB9XHJcbiAgICBUZXh0RG9jdW1lbnQuYXBwbHlFZGl0cyA9IGFwcGx5RWRpdHM7XHJcbiAgICBmdW5jdGlvbiBtZXJnZVNvcnQoZGF0YSwgY29tcGFyZSkge1xyXG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCA8PSAxKSB7XHJcbiAgICAgICAgICAgIC8vIHNvcnRlZFxyXG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHAgPSAoZGF0YS5sZW5ndGggLyAyKSB8IDA7XHJcbiAgICAgICAgdmFyIGxlZnQgPSBkYXRhLnNsaWNlKDAsIHApO1xyXG4gICAgICAgIHZhciByaWdodCA9IGRhdGEuc2xpY2UocCk7XHJcbiAgICAgICAgbWVyZ2VTb3J0KGxlZnQsIGNvbXBhcmUpO1xyXG4gICAgICAgIG1lcmdlU29ydChyaWdodCwgY29tcGFyZSk7XHJcbiAgICAgICAgdmFyIGxlZnRJZHggPSAwO1xyXG4gICAgICAgIHZhciByaWdodElkeCA9IDA7XHJcbiAgICAgICAgdmFyIGkgPSAwO1xyXG4gICAgICAgIHdoaWxlIChsZWZ0SWR4IDwgbGVmdC5sZW5ndGggJiYgcmlnaHRJZHggPCByaWdodC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdmFyIHJldCA9IGNvbXBhcmUobGVmdFtsZWZ0SWR4XSwgcmlnaHRbcmlnaHRJZHhdKTtcclxuICAgICAgICAgICAgaWYgKHJldCA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzbWFsbGVyX2VxdWFsIC0+IHRha2UgbGVmdCB0byBwcmVzZXJ2ZSBvcmRlclxyXG4gICAgICAgICAgICAgICAgZGF0YVtpKytdID0gbGVmdFtsZWZ0SWR4KytdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gZ3JlYXRlciAtPiB0YWtlIHJpZ2h0XHJcbiAgICAgICAgICAgICAgICBkYXRhW2krK10gPSByaWdodFtyaWdodElkeCsrXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB3aGlsZSAobGVmdElkeCA8IGxlZnQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGRhdGFbaSsrXSA9IGxlZnRbbGVmdElkeCsrXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKHJpZ2h0SWR4IDwgcmlnaHQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGRhdGFbaSsrXSA9IHJpZ2h0W3JpZ2h0SWR4KytdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgIH1cclxufSkoVGV4dERvY3VtZW50IHx8IChUZXh0RG9jdW1lbnQgPSB7fSkpO1xyXG52YXIgRnVsbFRleHREb2N1bWVudCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEZ1bGxUZXh0RG9jdW1lbnQodXJpLCBsYW5ndWFnZUlkLCB2ZXJzaW9uLCBjb250ZW50KSB7XHJcbiAgICAgICAgdGhpcy5fdXJpID0gdXJpO1xyXG4gICAgICAgIHRoaXMuX2xhbmd1YWdlSWQgPSBsYW5ndWFnZUlkO1xyXG4gICAgICAgIHRoaXMuX3ZlcnNpb24gPSB2ZXJzaW9uO1xyXG4gICAgICAgIHRoaXMuX2NvbnRlbnQgPSBjb250ZW50O1xyXG4gICAgICAgIHRoaXMuX2xpbmVPZmZzZXRzID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZ1bGxUZXh0RG9jdW1lbnQucHJvdG90eXBlLCBcInVyaVwiLCB7XHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl91cmk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRnVsbFRleHREb2N1bWVudC5wcm90b3R5cGUsIFwibGFuZ3VhZ2VJZFwiLCB7XHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9sYW5ndWFnZUlkO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZ1bGxUZXh0RG9jdW1lbnQucHJvdG90eXBlLCBcInZlcnNpb25cIiwge1xyXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdmVyc2lvbjtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIEZ1bGxUZXh0RG9jdW1lbnQucHJvdG90eXBlLmdldFRleHQgPSBmdW5jdGlvbiAocmFuZ2UpIHtcclxuICAgICAgICBpZiAocmFuZ2UpIHtcclxuICAgICAgICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5vZmZzZXRBdChyYW5nZS5zdGFydCk7XHJcbiAgICAgICAgICAgIHZhciBlbmQgPSB0aGlzLm9mZnNldEF0KHJhbmdlLmVuZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50LnN1YnN0cmluZyhzdGFydCwgZW5kKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnQ7XHJcbiAgICB9O1xyXG4gICAgRnVsbFRleHREb2N1bWVudC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGV2ZW50LCB2ZXJzaW9uKSB7XHJcbiAgICAgICAgdGhpcy5fY29udGVudCA9IGV2ZW50LnRleHQ7XHJcbiAgICAgICAgdGhpcy5fdmVyc2lvbiA9IHZlcnNpb247XHJcbiAgICAgICAgdGhpcy5fbGluZU9mZnNldHMgPSB1bmRlZmluZWQ7XHJcbiAgICB9O1xyXG4gICAgRnVsbFRleHREb2N1bWVudC5wcm90b3R5cGUuZ2V0TGluZU9mZnNldHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2xpbmVPZmZzZXRzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdmFyIGxpbmVPZmZzZXRzID0gW107XHJcbiAgICAgICAgICAgIHZhciB0ZXh0ID0gdGhpcy5fY29udGVudDtcclxuICAgICAgICAgICAgdmFyIGlzTGluZVN0YXJ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNMaW5lU3RhcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsaW5lT2Zmc2V0cy5wdXNoKGkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlzTGluZVN0YXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgY2ggPSB0ZXh0LmNoYXJBdChpKTtcclxuICAgICAgICAgICAgICAgIGlzTGluZVN0YXJ0ID0gKGNoID09PSAnXFxyJyB8fCBjaCA9PT0gJ1xcbicpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAnXFxyJyAmJiBpICsgMSA8IHRleHQubGVuZ3RoICYmIHRleHQuY2hhckF0KGkgKyAxKSA9PT0gJ1xcbicpIHtcclxuICAgICAgICAgICAgICAgICAgICBpKys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGlzTGluZVN0YXJ0ICYmIHRleHQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgbGluZU9mZnNldHMucHVzaCh0ZXh0Lmxlbmd0aCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fbGluZU9mZnNldHMgPSBsaW5lT2Zmc2V0cztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmVPZmZzZXRzO1xyXG4gICAgfTtcclxuICAgIEZ1bGxUZXh0RG9jdW1lbnQucHJvdG90eXBlLnBvc2l0aW9uQXQgPSBmdW5jdGlvbiAob2Zmc2V0KSB7XHJcbiAgICAgICAgb2Zmc2V0ID0gTWF0aC5tYXgoTWF0aC5taW4ob2Zmc2V0LCB0aGlzLl9jb250ZW50Lmxlbmd0aCksIDApO1xyXG4gICAgICAgIHZhciBsaW5lT2Zmc2V0cyA9IHRoaXMuZ2V0TGluZU9mZnNldHMoKTtcclxuICAgICAgICB2YXIgbG93ID0gMCwgaGlnaCA9IGxpbmVPZmZzZXRzLmxlbmd0aDtcclxuICAgICAgICBpZiAoaGlnaCA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gUG9zaXRpb24uY3JlYXRlKDAsIG9mZnNldCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XHJcbiAgICAgICAgICAgIHZhciBtaWQgPSBNYXRoLmZsb29yKChsb3cgKyBoaWdoKSAvIDIpO1xyXG4gICAgICAgICAgICBpZiAobGluZU9mZnNldHNbbWlkXSA+IG9mZnNldCkge1xyXG4gICAgICAgICAgICAgICAgaGlnaCA9IG1pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxvdyA9IG1pZCArIDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbG93IGlzIHRoZSBsZWFzdCB4IGZvciB3aGljaCB0aGUgbGluZSBvZmZzZXQgaXMgbGFyZ2VyIHRoYW4gdGhlIGN1cnJlbnQgb2Zmc2V0XHJcbiAgICAgICAgLy8gb3IgYXJyYXkubGVuZ3RoIGlmIG5vIGxpbmUgb2Zmc2V0IGlzIGxhcmdlciB0aGFuIHRoZSBjdXJyZW50IG9mZnNldFxyXG4gICAgICAgIHZhciBsaW5lID0gbG93IC0gMTtcclxuICAgICAgICByZXR1cm4gUG9zaXRpb24uY3JlYXRlKGxpbmUsIG9mZnNldCAtIGxpbmVPZmZzZXRzW2xpbmVdKTtcclxuICAgIH07XHJcbiAgICBGdWxsVGV4dERvY3VtZW50LnByb3RvdHlwZS5vZmZzZXRBdCA9IGZ1bmN0aW9uIChwb3NpdGlvbikge1xyXG4gICAgICAgIHZhciBsaW5lT2Zmc2V0cyA9IHRoaXMuZ2V0TGluZU9mZnNldHMoKTtcclxuICAgICAgICBpZiAocG9zaXRpb24ubGluZSA+PSBsaW5lT2Zmc2V0cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwb3NpdGlvbi5saW5lIDwgMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGxpbmVPZmZzZXQgPSBsaW5lT2Zmc2V0c1twb3NpdGlvbi5saW5lXTtcclxuICAgICAgICB2YXIgbmV4dExpbmVPZmZzZXQgPSAocG9zaXRpb24ubGluZSArIDEgPCBsaW5lT2Zmc2V0cy5sZW5ndGgpID8gbGluZU9mZnNldHNbcG9zaXRpb24ubGluZSArIDFdIDogdGhpcy5fY29udGVudC5sZW5ndGg7XHJcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KE1hdGgubWluKGxpbmVPZmZzZXQgKyBwb3NpdGlvbi5jaGFyYWN0ZXIsIG5leHRMaW5lT2Zmc2V0KSwgbGluZU9mZnNldCk7XHJcbiAgICB9O1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZ1bGxUZXh0RG9jdW1lbnQucHJvdG90eXBlLCBcImxpbmVDb3VudFwiLCB7XHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldExpbmVPZmZzZXRzKCkubGVuZ3RoO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIEZ1bGxUZXh0RG9jdW1lbnQ7XHJcbn0oKSk7XHJcbnZhciBJcztcclxuKGZ1bmN0aW9uIChJcykge1xyXG4gICAgdmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcclxuICAgIGZ1bmN0aW9uIGRlZmluZWQodmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJztcclxuICAgIH1cclxuICAgIElzLmRlZmluZWQgPSBkZWZpbmVkO1xyXG4gICAgZnVuY3Rpb24gdW5kZWZpbmVkKHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCc7XHJcbiAgICB9XHJcbiAgICBJcy51bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgICBmdW5jdGlvbiBib29sZWFuKHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZTtcclxuICAgIH1cclxuICAgIElzLmJvb2xlYW4gPSBib29sZWFuO1xyXG4gICAgZnVuY3Rpb24gc3RyaW5nKHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBTdHJpbmddJztcclxuICAgIH1cclxuICAgIElzLnN0cmluZyA9IHN0cmluZztcclxuICAgIGZ1bmN0aW9uIG51bWJlcih2YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgTnVtYmVyXSc7XHJcbiAgICB9XHJcbiAgICBJcy5udW1iZXIgPSBudW1iZXI7XHJcbiAgICBmdW5jdGlvbiBmdW5jKHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xyXG4gICAgfVxyXG4gICAgSXMuZnVuYyA9IGZ1bmM7XHJcbiAgICBmdW5jdGlvbiBvYmplY3RMaXRlcmFsKHZhbHVlKSB7XHJcbiAgICAgICAgLy8gU3RyaWN0bHkgc3BlYWtpbmcgY2xhc3MgaW5zdGFuY2VzIHBhc3MgdGhpcyBjaGVjayBhcyB3ZWxsLiBTaW5jZSB0aGUgTFNQXHJcbiAgICAgICAgLy8gZG9lc24ndCB1c2UgY2xhc3NlcyB3ZSBpZ25vcmUgdGhpcyBmb3Igbm93LiBJZiB3ZSBkbyB3ZSBuZWVkIHRvIGFkZCBzb21ldGhpbmdcclxuICAgICAgICAvLyBsaWtlIHRoaXM6IGBPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKHgpKSA9PT0gbnVsbGBcclxuICAgICAgICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JztcclxuICAgIH1cclxuICAgIElzLm9iamVjdExpdGVyYWwgPSBvYmplY3RMaXRlcmFsO1xyXG4gICAgZnVuY3Rpb24gdHlwZWRBcnJheSh2YWx1ZSwgY2hlY2spIHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUuZXZlcnkoY2hlY2spO1xyXG4gICAgfVxyXG4gICAgSXMudHlwZWRBcnJheSA9IHR5cGVkQXJyYXk7XHJcbn0pKElzIHx8IChJcyA9IHt9KSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFBQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVEE7QUFDQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFIQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQUE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/vscode-languageserver-types/lib/esm/main.js\n");
2627
2628/***/ }),
2629
2630/***/ "../../../node_modules/webpack/buildin/global.js":
2631/*!***********************************!*\
2632 !*** (webpack)/buildin/global.js ***!
2633 \***********************************/
2634/*! no static exports found */
2635/***/ (function(module, exports, __webpack_require__) {
2636
2637eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n var g; // This works in non-strict mode\n\n g = function () {\n return this;\n }();\n\n try {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n } catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") g = window;\n } // g can still be undefined, but nothing to do about it...\n // We return undefined, instead of nothing here, so it's\n // easier to handle this case. if(!global) { ...}\n\n\n module.exports = g;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3dlYnBhY2svYnVpbGRpbi9nbG9iYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8od2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanM/Y2QwMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/webpack/buildin/global.js\n");
2638
2639/***/ }),
2640
2641/***/ "../../../node_modules/webpack/buildin/module.js":
2642/*!***********************************!*\
2643 !*** (webpack)/buildin/module.js ***!
2644 \***********************************/
2645/*! no static exports found */
2646/***/ (function(module, exports, __webpack_require__) {
2647
2648eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function () {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function () {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3dlYnBhY2svYnVpbGRpbi9tb2R1bGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8od2VicGFjaykvYnVpbGRpbi9tb2R1bGUuanM/Y2VkMiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHRpZiAoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcblx0XHRtb2R1bGUuZGVwcmVjYXRlID0gZnVuY3Rpb24oKSB7fTtcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcblx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XG5cdH1cblx0cmV0dXJuIG1vZHVsZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/webpack/buildin/module.js\n");
2649
2650/***/ }),
2651
2652/***/ "../../codemirror-graphql/hint.js":
2653/*!*******************************************************************************!*\
2654 !*** /home/runner/work/graphiql/graphiql/packages/codemirror-graphql/hint.js ***!
2655 \*******************************************************************************/
2656/*! no static exports found */
2657/***/ (function(module, exports, __webpack_require__) {
2658
2659eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n var __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var codemirror_1 = __importDefault(__webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n\n __webpack_require__(/*! codemirror/addon/hint/show-hint */ \"../../../node_modules/codemirror/addon/hint/show-hint.js\");\n\n var graphql_language_service_interface_1 = __webpack_require__(/*! graphql-language-service-interface */ \"../../graphql-language-service-interface/esm/index.js\");\n\n var graphql_language_service_utils_1 = __webpack_require__(/*! graphql-language-service-utils */ \"../../graphql-language-service-utils/esm/index.js\");\n\n codemirror_1.default.registerHelper('hint', 'graphql', function (editor, options) {\n var schema = options.schema;\n\n if (!schema) {\n return;\n }\n\n var cur = editor.getCursor();\n var token = editor.getTokenAt(cur);\n var tokenStart = token.type !== null && /\"|\\w/.test(token.string[0]) ? token.start : token.end;\n var position = new graphql_language_service_utils_1.Position(cur.line, tokenStart);\n var rawResults = graphql_language_service_interface_1.getAutocompleteSuggestions(schema, editor.getValue(), position, token, options.externalFragments);\n var results = {\n list: rawResults.map(function (item) {\n return {\n text: item.label,\n type: item.type,\n description: item.documentation,\n isDeprecated: item.isDeprecated,\n deprecationReason: item.deprecationReason\n };\n }),\n from: {\n line: cur.line,\n ch: tokenStart\n },\n to: {\n line: cur.line,\n ch: token.end\n }\n };\n\n if (results && results.list && results.list.length > 0) {\n results.from = codemirror_1.default.Pos(results.from.line, results.from.ch);\n results.to = codemirror_1.default.Pos(results.to.line, results.to.ch);\n codemirror_1.default.signal(editor, 'hasCompletion', editor, results, token);\n }\n\n return results;\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29kZW1pcnJvci1ncmFwaHFsL2hpbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC9zcmMvaGludC50cz9jYzBjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvZGVtaXJyb3JfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiY29kZW1pcnJvclwiKSk7XG5yZXF1aXJlKFwiY29kZW1pcnJvci9hZGRvbi9oaW50L3Nob3ctaGludFwiKTtcbnZhciBncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfaW50ZXJmYWNlXzEgPSByZXF1aXJlKFwiZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLWludGVyZmFjZVwiKTtcbnZhciBncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfdXRpbHNfMSA9IHJlcXVpcmUoXCJncmFwaHFsLWxhbmd1YWdlLXNlcnZpY2UtdXRpbHNcIik7XG5jb2RlbWlycm9yXzEuZGVmYXVsdC5yZWdpc3RlckhlbHBlcignaGludCcsICdncmFwaHFsJywgZnVuY3Rpb24gKGVkaXRvciwgb3B0aW9ucykge1xuICAgIHZhciBzY2hlbWEgPSBvcHRpb25zLnNjaGVtYTtcbiAgICBpZiAoIXNjaGVtYSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBjdXIgPSBlZGl0b3IuZ2V0Q3Vyc29yKCk7XG4gICAgdmFyIHRva2VuID0gZWRpdG9yLmdldFRva2VuQXQoY3VyKTtcbiAgICB2YXIgdG9rZW5TdGFydCA9IHRva2VuLnR5cGUgIT09IG51bGwgJiYgL1wifFxcdy8udGVzdCh0b2tlbi5zdHJpbmdbMF0pXG4gICAgICAgID8gdG9rZW4uc3RhcnRcbiAgICAgICAgOiB0b2tlbi5lbmQ7XG4gICAgdmFyIHBvc2l0aW9uID0gbmV3IGdyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV91dGlsc18xLlBvc2l0aW9uKGN1ci5saW5lLCB0b2tlblN0YXJ0KTtcbiAgICB2YXIgcmF3UmVzdWx0cyA9IGdyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9pbnRlcmZhY2VfMS5nZXRBdXRvY29tcGxldGVTdWdnZXN0aW9ucyhzY2hlbWEsIGVkaXRvci5nZXRWYWx1ZSgpLCBwb3NpdGlvbiwgdG9rZW4sIG9wdGlvbnMuZXh0ZXJuYWxGcmFnbWVudHMpO1xuICAgIHZhciByZXN1bHRzID0ge1xuICAgICAgICBsaXN0OiByYXdSZXN1bHRzLm1hcChmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIHRleHQ6IGl0ZW0ubGFiZWwsXG4gICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kb2N1bWVudGF0aW9uLFxuICAgICAgICAgICAgaXNEZXByZWNhdGVkOiBpdGVtLmlzRGVwcmVjYXRlZCxcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiBpdGVtLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgICAgICB9KTsgfSksXG4gICAgICAgIGZyb206IHsgbGluZTogY3VyLmxpbmUsIGNoOiB0b2tlblN0YXJ0IH0sXG4gICAgICAgIHRvOiB7IGxpbmU6IGN1ci5saW5lLCBjaDogdG9rZW4uZW5kIH0sXG4gICAgfTtcbiAgICBpZiAocmVzdWx0cyAmJiByZXN1bHRzLmxpc3QgJiYgcmVzdWx0cy5saXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0cy5mcm9tID0gY29kZW1pcnJvcl8xLmRlZmF1bHQuUG9zKHJlc3VsdHMuZnJvbS5saW5lLCByZXN1bHRzLmZyb20uY2gpO1xuICAgICAgICByZXN1bHRzLnRvID0gY29kZW1pcnJvcl8xLmRlZmF1bHQuUG9zKHJlc3VsdHMudG8ubGluZSwgcmVzdWx0cy50by5jaCk7XG4gICAgICAgIGNvZGVtaXJyb3JfMS5kZWZhdWx0LnNpZ25hbChlZGl0b3IsICdoYXNDb21wbGV0aW9uJywgZWRpdG9yLCByZXN1bHRzLCB0b2tlbik7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oaW50LmpzLm1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBZ0RBO0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFFQTtBQVFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU1BO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQVRBO0FBQ0E7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../codemirror-graphql/hint.js\n");
2660
2661/***/ }),
2662
2663/***/ "../../codemirror-graphql/info.js":
2664/*!*******************************************************************************!*\
2665 !*** /home/runner/work/graphiql/graphiql/packages/codemirror-graphql/info.js ***!
2666 \*******************************************************************************/
2667/*! no static exports found */
2668/***/ (function(module, exports, __webpack_require__) {
2669
2670eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n var __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var graphql_1 = __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n\n var codemirror_1 = __importDefault(__webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n\n var getTypeInfo_1 = __importDefault(__webpack_require__(/*! ./utils/getTypeInfo */ \"../../codemirror-graphql/utils/getTypeInfo.js\"));\n\n var SchemaReference_1 = __webpack_require__(/*! ./utils/SchemaReference */ \"../../codemirror-graphql/utils/SchemaReference.js\");\n\n __webpack_require__(/*! ./utils/info-addon */ \"../../codemirror-graphql/utils/info-addon.js\");\n\n codemirror_1.default.registerHelper('info', 'graphql', function (token, options) {\n if (!options.schema || !token.state) {\n return;\n }\n\n var state = token.state;\n var kind = state.kind;\n var step = state.step;\n var typeInfo = getTypeInfo_1.default(options.schema, token.state);\n\n if (kind === 'Field' && step === 0 && typeInfo.fieldDef || kind === 'AliasedField' && step === 2 && typeInfo.fieldDef) {\n var into = document.createElement('div');\n renderField(into, typeInfo, options);\n renderDescription(into, options, typeInfo.fieldDef);\n return into;\n } else if (kind === 'Directive' && step === 1 && typeInfo.directiveDef) {\n var into = document.createElement('div');\n renderDirective(into, typeInfo, options);\n renderDescription(into, options, typeInfo.directiveDef);\n return into;\n } else if (kind === 'Argument' && step === 0 && typeInfo.argDef) {\n var into = document.createElement('div');\n renderArg(into, typeInfo, options);\n renderDescription(into, options, typeInfo.argDef);\n return into;\n } else if (kind === 'EnumValue' && typeInfo.enumValue && typeInfo.enumValue.description) {\n var into = document.createElement('div');\n renderEnumValue(into, typeInfo, options);\n renderDescription(into, options, typeInfo.enumValue);\n return into;\n } else if (kind === 'NamedType' && typeInfo.type && typeInfo.type.description) {\n var into = document.createElement('div');\n renderType(into, typeInfo, options, typeInfo.type);\n renderDescription(into, options, typeInfo.type);\n return into;\n }\n });\n\n function renderField(into, typeInfo, options) {\n renderQualifiedField(into, typeInfo, options);\n renderTypeAnnotation(into, typeInfo, options, typeInfo.type);\n }\n\n function renderQualifiedField(into, typeInfo, options) {\n var _a;\n\n var fieldName = ((_a = typeInfo.fieldDef) === null || _a === void 0 ? void 0 : _a.name) || '';\n\n if (fieldName.slice(0, 2) !== '__') {\n renderType(into, typeInfo, options, typeInfo.parentType);\n text(into, '.');\n }\n\n text(into, fieldName, 'field-name', options, SchemaReference_1.getFieldReference(typeInfo));\n }\n\n function renderDirective(into, typeInfo, options) {\n var _a;\n\n var name = '@' + (((_a = typeInfo.directiveDef) === null || _a === void 0 ? void 0 : _a.name) || '');\n text(into, name, 'directive-name', options, SchemaReference_1.getDirectiveReference(typeInfo));\n }\n\n function renderArg(into, typeInfo, options) {\n var _a;\n\n if (typeInfo.directiveDef) {\n renderDirective(into, typeInfo, options);\n } else if (typeInfo.fieldDef) {\n renderQualifiedField(into, typeInfo, options);\n }\n\n var name = ((_a = typeInfo.argDef) === null || _a === void 0 ? void 0 : _a.name) || '';\n text(into, '(');\n text(into, name, 'arg-name', options, SchemaReference_1.getArgumentReference(typeInfo));\n renderTypeAnnotation(into, typeInfo, options, typeInfo.inputType);\n text(into, ')');\n }\n\n function renderTypeAnnotation(into, typeInfo, options, t) {\n text(into, ': ');\n renderType(into, typeInfo, options, t);\n }\n\n function renderEnumValue(into, typeInfo, options) {\n var _a;\n\n var name = ((_a = typeInfo.enumValue) === null || _a === void 0 ? void 0 : _a.name) || '';\n renderType(into, typeInfo, options, typeInfo.inputType);\n text(into, '.');\n text(into, name, 'enum-value', options, SchemaReference_1.getEnumValueReference(typeInfo));\n }\n\n function renderType(into, typeInfo, options, t) {\n if (t instanceof graphql_1.GraphQLNonNull) {\n renderType(into, typeInfo, options, t.ofType);\n text(into, '!');\n } else if (t instanceof graphql_1.GraphQLList) {\n text(into, '[');\n renderType(into, typeInfo, options, t.ofType);\n text(into, ']');\n } else {\n text(into, (t === null || t === void 0 ? void 0 : t.name) || '', 'type-name', options, SchemaReference_1.getTypeReference(typeInfo, t));\n }\n }\n\n function renderDescription(into, options, def) {\n var description = def.description;\n\n if (description) {\n var descriptionDiv = document.createElement('div');\n descriptionDiv.className = 'info-description';\n\n if (options.renderDescription) {\n descriptionDiv.innerHTML = options.renderDescription(description);\n } else {\n descriptionDiv.appendChild(document.createTextNode(description));\n }\n\n into.appendChild(descriptionDiv);\n }\n\n renderDeprecation(into, options, def);\n }\n\n function renderDeprecation(into, options, def) {\n var reason = def.deprecationReason;\n\n if (reason) {\n var deprecationDiv = document.createElement('div');\n deprecationDiv.className = 'info-deprecation';\n\n if (options.renderDescription) {\n deprecationDiv.innerHTML = options.renderDescription(reason);\n } else {\n deprecationDiv.appendChild(document.createTextNode(reason));\n }\n\n var label = document.createElement('span');\n label.className = 'info-deprecation-label';\n label.appendChild(document.createTextNode('Deprecated: '));\n deprecationDiv.insertBefore(label, deprecationDiv.firstChild);\n into.appendChild(deprecationDiv);\n }\n }\n\n function text(into, content, className, options, ref) {\n if (className === void 0) {\n className = '';\n }\n\n if (options === void 0) {\n options = {\n onClick: null\n };\n }\n\n if (ref === void 0) {\n ref = null;\n }\n\n if (className) {\n var onClick_1 = options.onClick;\n var node = void 0;\n\n if (onClick_1) {\n node = document.createElement('a');\n node.href = 'javascript:void 0';\n node.addEventListener('click', function (e) {\n onClick_1(ref, e);\n });\n } else {\n node = document.createElement('span');\n }\n\n node.className = className;\n node.appendChild(document.createTextNode(content));\n into.appendChild(node);\n } else {\n into.appendChild(document.createTextNode(content));\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29kZW1pcnJvci1ncmFwaHFsL2luZm8uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC9zcmMvaW5mby50cz85MjRjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGdyYXBocWxfMSA9IHJlcXVpcmUoXCJncmFwaHFsXCIpO1xudmFyIGNvZGVtaXJyb3JfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiY29kZW1pcnJvclwiKSk7XG52YXIgZ2V0VHlwZUluZm9fMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi91dGlscy9nZXRUeXBlSW5mb1wiKSk7XG52YXIgU2NoZW1hUmVmZXJlbmNlXzEgPSByZXF1aXJlKFwiLi91dGlscy9TY2hlbWFSZWZlcmVuY2VcIik7XG5yZXF1aXJlKFwiLi91dGlscy9pbmZvLWFkZG9uXCIpO1xuY29kZW1pcnJvcl8xLmRlZmF1bHQucmVnaXN0ZXJIZWxwZXIoJ2luZm8nLCAnZ3JhcGhxbCcsIGZ1bmN0aW9uICh0b2tlbiwgb3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucy5zY2hlbWEgfHwgIXRva2VuLnN0YXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHN0YXRlID0gdG9rZW4uc3RhdGU7XG4gICAgdmFyIGtpbmQgPSBzdGF0ZS5raW5kO1xuICAgIHZhciBzdGVwID0gc3RhdGUuc3RlcDtcbiAgICB2YXIgdHlwZUluZm8gPSBnZXRUeXBlSW5mb18xLmRlZmF1bHQob3B0aW9ucy5zY2hlbWEsIHRva2VuLnN0YXRlKTtcbiAgICBpZiAoKGtpbmQgPT09ICdGaWVsZCcgJiYgc3RlcCA9PT0gMCAmJiB0eXBlSW5mby5maWVsZERlZikgfHxcbiAgICAgICAgKGtpbmQgPT09ICdBbGlhc2VkRmllbGQnICYmIHN0ZXAgPT09IDIgJiYgdHlwZUluZm8uZmllbGREZWYpKSB7XG4gICAgICAgIHZhciBpbnRvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHJlbmRlckZpZWxkKGludG8sIHR5cGVJbmZvLCBvcHRpb25zKTtcbiAgICAgICAgcmVuZGVyRGVzY3JpcHRpb24oaW50bywgb3B0aW9ucywgdHlwZUluZm8uZmllbGREZWYpO1xuICAgICAgICByZXR1cm4gaW50bztcbiAgICB9XG4gICAgZWxzZSBpZiAoa2luZCA9PT0gJ0RpcmVjdGl2ZScgJiYgc3RlcCA9PT0gMSAmJiB0eXBlSW5mby5kaXJlY3RpdmVEZWYpIHtcbiAgICAgICAgdmFyIGludG8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgcmVuZGVyRGlyZWN0aXZlKGludG8sIHR5cGVJbmZvLCBvcHRpb25zKTtcbiAgICAgICAgcmVuZGVyRGVzY3JpcHRpb24oaW50bywgb3B0aW9ucywgdHlwZUluZm8uZGlyZWN0aXZlRGVmKTtcbiAgICAgICAgcmV0dXJuIGludG87XG4gICAgfVxuICAgIGVsc2UgaWYgKGtpbmQgPT09ICdBcmd1bWVudCcgJiYgc3RlcCA9PT0gMCAmJiB0eXBlSW5mby5hcmdEZWYpIHtcbiAgICAgICAgdmFyIGludG8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgcmVuZGVyQXJnKGludG8sIHR5cGVJbmZvLCBvcHRpb25zKTtcbiAgICAgICAgcmVuZGVyRGVzY3JpcHRpb24oaW50bywgb3B0aW9ucywgdHlwZUluZm8uYXJnRGVmKTtcbiAgICAgICAgcmV0dXJuIGludG87XG4gICAgfVxuICAgIGVsc2UgaWYgKGtpbmQgPT09ICdFbnVtVmFsdWUnICYmXG4gICAgICAgIHR5cGVJbmZvLmVudW1WYWx1ZSAmJlxuICAgICAgICB0eXBlSW5mby5lbnVtVmFsdWUuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgdmFyIGludG8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgcmVuZGVyRW51bVZhbHVlKGludG8sIHR5cGVJbmZvLCBvcHRpb25zKTtcbiAgICAgICAgcmVuZGVyRGVzY3JpcHRpb24oaW50bywgb3B0aW9ucywgdHlwZUluZm8uZW51bVZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGludG87XG4gICAgfVxuICAgIGVsc2UgaWYgKGtpbmQgPT09ICdOYW1lZFR5cGUnICYmXG4gICAgICAgIHR5cGVJbmZvLnR5cGUgJiZcbiAgICAgICAgdHlwZUluZm8udHlwZS5kZXNjcmlwdGlvbikge1xuICAgICAgICB2YXIgaW50byA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICByZW5kZXJUeXBlKGludG8sIHR5cGVJbmZvLCBvcHRpb25zLCB0eXBlSW5mby50eXBlKTtcbiAgICAgICAgcmVuZGVyRGVzY3JpcHRpb24oaW50bywgb3B0aW9ucywgdHlwZUluZm8udHlwZSk7XG4gICAgICAgIHJldHVybiBpbnRvO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gcmVuZGVyRmllbGQoaW50bywgdHlwZUluZm8sIG9wdGlvbnMpIHtcbiAgICByZW5kZXJRdWFsaWZpZWRGaWVsZChpbnRvLCB0eXBlSW5mbywgb3B0aW9ucyk7XG4gICAgcmVuZGVyVHlwZUFubm90YXRpb24oaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHR5cGVJbmZvLnR5cGUpO1xufVxuZnVuY3Rpb24gcmVuZGVyUXVhbGlmaWVkRmllbGQoaW50bywgdHlwZUluZm8sIG9wdGlvbnMpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIGZpZWxkTmFtZSA9ICgoX2EgPSB0eXBlSW5mby5maWVsZERlZikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5hbWUpIHx8ICcnO1xuICAgIGlmIChmaWVsZE5hbWUuc2xpY2UoMCwgMikgIT09ICdfXycpIHtcbiAgICAgICAgcmVuZGVyVHlwZShpbnRvLCB0eXBlSW5mbywgb3B0aW9ucywgdHlwZUluZm8ucGFyZW50VHlwZSk7XG4gICAgICAgIHRleHQoaW50bywgJy4nKTtcbiAgICB9XG4gICAgdGV4dChpbnRvLCBmaWVsZE5hbWUsICdmaWVsZC1uYW1lJywgb3B0aW9ucywgU2NoZW1hUmVmZXJlbmNlXzEuZ2V0RmllbGRSZWZlcmVuY2UodHlwZUluZm8pKTtcbn1cbmZ1bmN0aW9uIHJlbmRlckRpcmVjdGl2ZShpbnRvLCB0eXBlSW5mbywgb3B0aW9ucykge1xuICAgIHZhciBfYTtcbiAgICB2YXIgbmFtZSA9ICdAJyArICgoKF9hID0gdHlwZUluZm8uZGlyZWN0aXZlRGVmKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmFtZSkgfHwgJycpO1xuICAgIHRleHQoaW50bywgbmFtZSwgJ2RpcmVjdGl2ZS1uYW1lJywgb3B0aW9ucywgU2NoZW1hUmVmZXJlbmNlXzEuZ2V0RGlyZWN0aXZlUmVmZXJlbmNlKHR5cGVJbmZvKSk7XG59XG5mdW5jdGlvbiByZW5kZXJBcmcoaW50bywgdHlwZUluZm8sIG9wdGlvbnMpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHR5cGVJbmZvLmRpcmVjdGl2ZURlZikge1xuICAgICAgICByZW5kZXJEaXJlY3RpdmUoaW50bywgdHlwZUluZm8sIG9wdGlvbnMpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlSW5mby5maWVsZERlZikge1xuICAgICAgICByZW5kZXJRdWFsaWZpZWRGaWVsZChpbnRvLCB0eXBlSW5mbywgb3B0aW9ucyk7XG4gICAgfVxuICAgIHZhciBuYW1lID0gKChfYSA9IHR5cGVJbmZvLmFyZ0RlZikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5hbWUpIHx8ICcnO1xuICAgIHRleHQoaW50bywgJygnKTtcbiAgICB0ZXh0KGludG8sIG5hbWUsICdhcmctbmFtZScsIG9wdGlvbnMsIFNjaGVtYVJlZmVyZW5jZV8xLmdldEFyZ3VtZW50UmVmZXJlbmNlKHR5cGVJbmZvKSk7XG4gICAgcmVuZGVyVHlwZUFubm90YXRpb24oaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHR5cGVJbmZvLmlucHV0VHlwZSk7XG4gICAgdGV4dChpbnRvLCAnKScpO1xufVxuZnVuY3Rpb24gcmVuZGVyVHlwZUFubm90YXRpb24oaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHQpIHtcbiAgICB0ZXh0KGludG8sICc6ICcpO1xuICAgIHJlbmRlclR5cGUoaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHQpO1xufVxuZnVuY3Rpb24gcmVuZGVyRW51bVZhbHVlKGludG8sIHR5cGVJbmZvLCBvcHRpb25zKSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciBuYW1lID0gKChfYSA9IHR5cGVJbmZvLmVudW1WYWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5hbWUpIHx8ICcnO1xuICAgIHJlbmRlclR5cGUoaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHR5cGVJbmZvLmlucHV0VHlwZSk7XG4gICAgdGV4dChpbnRvLCAnLicpO1xuICAgIHRleHQoaW50bywgbmFtZSwgJ2VudW0tdmFsdWUnLCBvcHRpb25zLCBTY2hlbWFSZWZlcmVuY2VfMS5nZXRFbnVtVmFsdWVSZWZlcmVuY2UodHlwZUluZm8pKTtcbn1cbmZ1bmN0aW9uIHJlbmRlclR5cGUoaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHQpIHtcbiAgICBpZiAodCBpbnN0YW5jZW9mIGdyYXBocWxfMS5HcmFwaFFMTm9uTnVsbCkge1xuICAgICAgICByZW5kZXJUeXBlKGludG8sIHR5cGVJbmZvLCBvcHRpb25zLCB0Lm9mVHlwZSk7XG4gICAgICAgIHRleHQoaW50bywgJyEnKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodCBpbnN0YW5jZW9mIGdyYXBocWxfMS5HcmFwaFFMTGlzdCkge1xuICAgICAgICB0ZXh0KGludG8sICdbJyk7XG4gICAgICAgIHJlbmRlclR5cGUoaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHQub2ZUeXBlKTtcbiAgICAgICAgdGV4dChpbnRvLCAnXScpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGV4dChpbnRvLCAodCA9PT0gbnVsbCB8fCB0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0Lm5hbWUpIHx8ICcnLCAndHlwZS1uYW1lJywgb3B0aW9ucywgU2NoZW1hUmVmZXJlbmNlXzEuZ2V0VHlwZVJlZmVyZW5jZSh0eXBlSW5mbywgdCkpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHJlbmRlckRlc2NyaXB0aW9uKGludG8sIG9wdGlvbnMsIGRlZikge1xuICAgIHZhciBkZXNjcmlwdGlvbiA9IGRlZi5kZXNjcmlwdGlvbjtcbiAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgdmFyIGRlc2NyaXB0aW9uRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGRlc2NyaXB0aW9uRGl2LmNsYXNzTmFtZSA9ICdpbmZvLWRlc2NyaXB0aW9uJztcbiAgICAgICAgaWYgKG9wdGlvbnMucmVuZGVyRGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uRGl2LmlubmVySFRNTCA9IG9wdGlvbnMucmVuZGVyRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVzY3JpcHRpb25EaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZGVzY3JpcHRpb24pKTtcbiAgICAgICAgfVxuICAgICAgICBpbnRvLmFwcGVuZENoaWxkKGRlc2NyaXB0aW9uRGl2KTtcbiAgICB9XG4gICAgcmVuZGVyRGVwcmVjYXRpb24oaW50bywgb3B0aW9ucywgZGVmKTtcbn1cbmZ1bmN0aW9uIHJlbmRlckRlcHJlY2F0aW9uKGludG8sIG9wdGlvbnMsIGRlZikge1xuICAgIHZhciByZWFzb24gPSBkZWYuZGVwcmVjYXRpb25SZWFzb247XG4gICAgaWYgKHJlYXNvbikge1xuICAgICAgICB2YXIgZGVwcmVjYXRpb25EaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgZGVwcmVjYXRpb25EaXYuY2xhc3NOYW1lID0gJ2luZm8tZGVwcmVjYXRpb24nO1xuICAgICAgICBpZiAob3B0aW9ucy5yZW5kZXJEZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25EaXYuaW5uZXJIVE1MID0gb3B0aW9ucy5yZW5kZXJEZXNjcmlwdGlvbihyZWFzb24pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25EaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocmVhc29uKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICBsYWJlbC5jbGFzc05hbWUgPSAnaW5mby1kZXByZWNhdGlvbi1sYWJlbCc7XG4gICAgICAgIGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdEZXByZWNhdGVkOiAnKSk7XG4gICAgICAgIGRlcHJlY2F0aW9uRGl2Lmluc2VydEJlZm9yZShsYWJlbCwgZGVwcmVjYXRpb25EaXYuZmlyc3RDaGlsZCk7XG4gICAgICAgIGludG8uYXBwZW5kQ2hpbGQoZGVwcmVjYXRpb25EaXYpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHRleHQoaW50bywgY29udGVudCwgY2xhc3NOYW1lLCBvcHRpb25zLCByZWYpIHtcbiAgICBpZiAoY2xhc3NOYW1lID09PSB2b2lkIDApIHsgY2xhc3NOYW1lID0gJyc7IH1cbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7IG9uQ2xpY2s6IG51bGwgfTsgfVxuICAgIGlmIChyZWYgPT09IHZvaWQgMCkgeyByZWYgPSBudWxsOyB9XG4gICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgICB2YXIgb25DbGlja18xID0gb3B0aW9ucy5vbkNsaWNrO1xuICAgICAgICB2YXIgbm9kZSA9IHZvaWQgMDtcbiAgICAgICAgaWYgKG9uQ2xpY2tfMSkge1xuICAgICAgICAgICAgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgIG5vZGUuaHJlZiA9ICdqYXZhc2NyaXB0OnZvaWQgMCc7XG4gICAgICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBvbkNsaWNrXzEocmVmLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICAgICAgbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KSk7XG4gICAgICAgIGludG8uYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpbnRvLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNvbnRlbnQpKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmZvLmpzLm1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBT0E7QUFDQTtBQXVCQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFLQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOzs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQVVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../codemirror-graphql/info.js\n");
2671
2672/***/ }),
2673
2674/***/ "../../codemirror-graphql/jump.js":
2675/*!*******************************************************************************!*\
2676 !*** /home/runner/work/graphiql/graphiql/packages/codemirror-graphql/jump.js ***!
2677 \*******************************************************************************/
2678/*! no static exports found */
2679/***/ (function(module, exports, __webpack_require__) {
2680
2681eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n var __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var codemirror_1 = __importDefault(__webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n\n var getTypeInfo_1 = __importDefault(__webpack_require__(/*! ./utils/getTypeInfo */ \"../../codemirror-graphql/utils/getTypeInfo.js\"));\n\n var SchemaReference_1 = __webpack_require__(/*! ./utils/SchemaReference */ \"../../codemirror-graphql/utils/SchemaReference.js\");\n\n __webpack_require__(/*! ./utils/jump-addon */ \"../../codemirror-graphql/utils/jump-addon.js\");\n\n codemirror_1.default.registerHelper('jump', 'graphql', function (token, options) {\n if (!options.schema || !options.onClick || !token.state) {\n return;\n }\n\n var state = token.state;\n var kind = state.kind;\n var step = state.step;\n var typeInfo = getTypeInfo_1.default(options.schema, state);\n\n if (kind === 'Field' && step === 0 && typeInfo.fieldDef || kind === 'AliasedField' && step === 2 && typeInfo.fieldDef) {\n return SchemaReference_1.getFieldReference(typeInfo);\n } else if (kind === 'Directive' && step === 1 && typeInfo.directiveDef) {\n return SchemaReference_1.getDirectiveReference(typeInfo);\n } else if (kind === 'Argument' && step === 0 && typeInfo.argDef) {\n return SchemaReference_1.getArgumentReference(typeInfo);\n } else if (kind === 'EnumValue' && typeInfo.enumValue) {\n return SchemaReference_1.getEnumValueReference(typeInfo);\n } else if (kind === 'NamedType' && typeInfo.type) {\n return SchemaReference_1.getTypeReference(typeInfo);\n }\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29kZW1pcnJvci1ncmFwaHFsL2p1bXAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC9zcmMvanVtcC50cz9mM2E5Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvZGVtaXJyb3JfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiY29kZW1pcnJvclwiKSk7XG52YXIgZ2V0VHlwZUluZm9fMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi91dGlscy9nZXRUeXBlSW5mb1wiKSk7XG52YXIgU2NoZW1hUmVmZXJlbmNlXzEgPSByZXF1aXJlKFwiLi91dGlscy9TY2hlbWFSZWZlcmVuY2VcIik7XG5yZXF1aXJlKFwiLi91dGlscy9qdW1wLWFkZG9uXCIpO1xuY29kZW1pcnJvcl8xLmRlZmF1bHQucmVnaXN0ZXJIZWxwZXIoJ2p1bXAnLCAnZ3JhcGhxbCcsIGZ1bmN0aW9uICh0b2tlbiwgb3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucy5zY2hlbWEgfHwgIW9wdGlvbnMub25DbGljayB8fCAhdG9rZW4uc3RhdGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgc3RhdGUgPSB0b2tlbi5zdGF0ZTtcbiAgICB2YXIga2luZCA9IHN0YXRlLmtpbmQ7XG4gICAgdmFyIHN0ZXAgPSBzdGF0ZS5zdGVwO1xuICAgIHZhciB0eXBlSW5mbyA9IGdldFR5cGVJbmZvXzEuZGVmYXVsdChvcHRpb25zLnNjaGVtYSwgc3RhdGUpO1xuICAgIGlmICgoa2luZCA9PT0gJ0ZpZWxkJyAmJiBzdGVwID09PSAwICYmIHR5cGVJbmZvLmZpZWxkRGVmKSB8fFxuICAgICAgICAoa2luZCA9PT0gJ0FsaWFzZWRGaWVsZCcgJiYgc3RlcCA9PT0gMiAmJiB0eXBlSW5mby5maWVsZERlZikpIHtcbiAgICAgICAgcmV0dXJuIFNjaGVtYVJlZmVyZW5jZV8xLmdldEZpZWxkUmVmZXJlbmNlKHR5cGVJbmZvKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoa2luZCA9PT0gJ0RpcmVjdGl2ZScgJiYgc3RlcCA9PT0gMSAmJiB0eXBlSW5mby5kaXJlY3RpdmVEZWYpIHtcbiAgICAgICAgcmV0dXJuIFNjaGVtYVJlZmVyZW5jZV8xLmdldERpcmVjdGl2ZVJlZmVyZW5jZSh0eXBlSW5mbyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGtpbmQgPT09ICdBcmd1bWVudCcgJiYgc3RlcCA9PT0gMCAmJiB0eXBlSW5mby5hcmdEZWYpIHtcbiAgICAgICAgcmV0dXJuIFNjaGVtYVJlZmVyZW5jZV8xLmdldEFyZ3VtZW50UmVmZXJlbmNlKHR5cGVJbmZvKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoa2luZCA9PT0gJ0VudW1WYWx1ZScgJiYgdHlwZUluZm8uZW51bVZhbHVlKSB7XG4gICAgICAgIHJldHVybiBTY2hlbWFSZWZlcmVuY2VfMS5nZXRFbnVtVmFsdWVSZWZlcmVuY2UodHlwZUluZm8pO1xuICAgIH1cbiAgICBlbHNlIGlmIChraW5kID09PSAnTmFtZWRUeXBlJyAmJiB0eXBlSW5mby50eXBlKSB7XG4gICAgICAgIHJldHVybiBTY2hlbWFSZWZlcmVuY2VfMS5nZXRUeXBlUmVmZXJlbmNlKHR5cGVJbmZvKTtcbiAgICB9XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWp1bXAuanMubWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQU1BO0FBQ0E7QUFxQkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../codemirror-graphql/jump.js\n");
2682
2683/***/ }),
2684
2685/***/ "../../codemirror-graphql/lint.js":
2686/*!*******************************************************************************!*\
2687 !*** /home/runner/work/graphiql/graphiql/packages/codemirror-graphql/lint.js ***!
2688 \*******************************************************************************/
2689/*! no static exports found */
2690/***/ (function(module, exports, __webpack_require__) {
2691
2692eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n var __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var codemirror_1 = __importDefault(__webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n\n var graphql_language_service_interface_1 = __webpack_require__(/*! graphql-language-service-interface */ \"../../graphql-language-service-interface/esm/index.js\");\n\n var SEVERITY = ['error', 'warning', 'information', 'hint'];\n var TYPE = {\n 'GraphQL: Validation': 'validation',\n 'GraphQL: Deprecation': 'deprecation',\n 'GraphQL: Syntax': 'syntax'\n };\n codemirror_1.default.registerHelper('lint', 'graphql', function (text, options) {\n var schema = options.schema;\n var rawResults = graphql_language_service_interface_1.getDiagnostics(text, schema, options.validationRules, undefined, options.externalFragments);\n var results = rawResults.map(function (error) {\n return {\n message: error.message,\n severity: error.severity ? SEVERITY[error.severity - 1] : SEVERITY[0],\n type: error.source ? TYPE[error.source] : undefined,\n from: codemirror_1.default.Pos(error.range.start.line, error.range.start.character),\n to: codemirror_1.default.Pos(error.range.end.line, error.range.end.character)\n };\n });\n return results;\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29kZW1pcnJvci1ncmFwaHFsL2xpbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC9zcmMvbGludC50cz85ZmZjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvZGVtaXJyb3JfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiY29kZW1pcnJvclwiKSk7XG52YXIgZ3JhcGhxbF9sYW5ndWFnZV9zZXJ2aWNlX2ludGVyZmFjZV8xID0gcmVxdWlyZShcImdyYXBocWwtbGFuZ3VhZ2Utc2VydmljZS1pbnRlcmZhY2VcIik7XG52YXIgU0VWRVJJVFkgPSBbJ2Vycm9yJywgJ3dhcm5pbmcnLCAnaW5mb3JtYXRpb24nLCAnaGludCddO1xudmFyIFRZUEUgPSB7XG4gICAgJ0dyYXBoUUw6IFZhbGlkYXRpb24nOiAndmFsaWRhdGlvbicsXG4gICAgJ0dyYXBoUUw6IERlcHJlY2F0aW9uJzogJ2RlcHJlY2F0aW9uJyxcbiAgICAnR3JhcGhRTDogU3ludGF4JzogJ3N5bnRheCcsXG59O1xuY29kZW1pcnJvcl8xLmRlZmF1bHQucmVnaXN0ZXJIZWxwZXIoJ2xpbnQnLCAnZ3JhcGhxbCcsIGZ1bmN0aW9uICh0ZXh0LCBvcHRpb25zKSB7XG4gICAgdmFyIHNjaGVtYSA9IG9wdGlvbnMuc2NoZW1hO1xuICAgIHZhciByYXdSZXN1bHRzID0gZ3JhcGhxbF9sYW5ndWFnZV9zZXJ2aWNlX2ludGVyZmFjZV8xLmdldERpYWdub3N0aWNzKHRleHQsIHNjaGVtYSwgb3B0aW9ucy52YWxpZGF0aW9uUnVsZXMsIHVuZGVmaW5lZCwgb3B0aW9ucy5leHRlcm5hbEZyYWdtZW50cyk7XG4gICAgdmFyIHJlc3VsdHMgPSByYXdSZXN1bHRzLm1hcChmdW5jdGlvbiAoZXJyb3IpIHsgcmV0dXJuICh7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgIHNldmVyaXR5OiBlcnJvci5zZXZlcml0eSA/IFNFVkVSSVRZW2Vycm9yLnNldmVyaXR5IC0gMV0gOiBTRVZFUklUWVswXSxcbiAgICAgICAgdHlwZTogZXJyb3Iuc291cmNlID8gVFlQRVtlcnJvci5zb3VyY2VdIDogdW5kZWZpbmVkLFxuICAgICAgICBmcm9tOiBjb2RlbWlycm9yXzEuZGVmYXVsdC5Qb3MoZXJyb3IucmFuZ2Uuc3RhcnQubGluZSwgZXJyb3IucmFuZ2Uuc3RhcnQuY2hhcmFjdGVyKSxcbiAgICAgICAgdG86IGNvZGVtaXJyb3JfMS5kZWZhdWx0LlBvcyhlcnJvci5yYW5nZS5lbmQubGluZSwgZXJyb3IucmFuZ2UuZW5kLmNoYXJhY3RlciksXG4gICAgfSk7IH0pO1xuICAgIHJldHVybiByZXN1bHRzO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1saW50LmpzLm1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQTBCQTtBQUlBO0FBQ0E7QUFRQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBTUE7QUFFQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../codemirror-graphql/lint.js\n");
2693
2694/***/ }),
2695
2696/***/ "../../codemirror-graphql/mode.js":
2697/*!*******************************************************************************!*\
2698 !*** /home/runner/work/graphiql/graphiql/packages/codemirror-graphql/mode.js ***!
2699 \*******************************************************************************/
2700/*! no static exports found */
2701/***/ (function(module, exports, __webpack_require__) {
2702
2703eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n var __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var codemirror_1 = __importDefault(__webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n\n var graphql_language_service_parser_1 = __webpack_require__(/*! graphql-language-service-parser */ \"../../graphql-language-service-parser/esm/index.js\");\n\n codemirror_1.default.defineMode('graphql', function (config) {\n var parser = graphql_language_service_parser_1.onlineParser({\n eatWhitespace: function (stream) {\n return stream.eatWhile(graphql_language_service_parser_1.isIgnored);\n },\n lexRules: graphql_language_service_parser_1.LexRules,\n parseRules: graphql_language_service_parser_1.ParseRules,\n editorConfig: {\n tabSize: config.tabSize\n }\n });\n return {\n config: config,\n startState: parser.startState,\n token: parser.token,\n indent: indent,\n electricInput: /^\\s*[})\\]]/,\n fold: 'brace',\n lineComment: '#',\n closeBrackets: {\n pairs: '()[]{}\"\"',\n explode: '()[]{}'\n }\n };\n });\n\n function indent(state, textAfter) {\n var _a, _b;\n\n var levels = state.levels;\n var level = !levels || levels.length === 0 ? state.indentLevel : levels[levels.length - 1] - (((_a = this.electricInput) === null || _a === void 0 ? void 0 : _a.test(textAfter)) ? 1 : 0);\n return (level || 0) * (((_b = this.config) === null || _b === void 0 ? void 0 : _b.indentUnit) || 0);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29kZW1pcnJvci1ncmFwaHFsL21vZGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC9zcmMvbW9kZS50cz9hNjU1Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvZGVtaXJyb3JfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiY29kZW1pcnJvclwiKSk7XG52YXIgZ3JhcGhxbF9sYW5ndWFnZV9zZXJ2aWNlX3BhcnNlcl8xID0gcmVxdWlyZShcImdyYXBocWwtbGFuZ3VhZ2Utc2VydmljZS1wYXJzZXJcIik7XG5jb2RlbWlycm9yXzEuZGVmYXVsdC5kZWZpbmVNb2RlKCdncmFwaHFsJywgZnVuY3Rpb24gKGNvbmZpZykge1xuICAgIHZhciBwYXJzZXIgPSBncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEub25saW5lUGFyc2VyKHtcbiAgICAgICAgZWF0V2hpdGVzcGFjZTogZnVuY3Rpb24gKHN0cmVhbSkgeyByZXR1cm4gc3RyZWFtLmVhdFdoaWxlKGdyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5pc0lnbm9yZWQpOyB9LFxuICAgICAgICBsZXhSdWxlczogZ3JhcGhxbF9sYW5ndWFnZV9zZXJ2aWNlX3BhcnNlcl8xLkxleFJ1bGVzLFxuICAgICAgICBwYXJzZVJ1bGVzOiBncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEuUGFyc2VSdWxlcyxcbiAgICAgICAgZWRpdG9yQ29uZmlnOiB7IHRhYlNpemU6IGNvbmZpZy50YWJTaXplIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgIHN0YXJ0U3RhdGU6IHBhcnNlci5zdGFydFN0YXRlLFxuICAgICAgICB0b2tlbjogcGFyc2VyLnRva2VuLFxuICAgICAgICBpbmRlbnQ6IGluZGVudCxcbiAgICAgICAgZWxlY3RyaWNJbnB1dDogL15cXHMqW30pXFxdXS8sXG4gICAgICAgIGZvbGQ6ICdicmFjZScsXG4gICAgICAgIGxpbmVDb21tZW50OiAnIycsXG4gICAgICAgIGNsb3NlQnJhY2tldHM6IHtcbiAgICAgICAgICAgIHBhaXJzOiAnKClbXXt9XCJcIicsXG4gICAgICAgICAgICBleHBsb2RlOiAnKClbXXt9JyxcbiAgICAgICAgfSxcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBpbmRlbnQoc3RhdGUsIHRleHRBZnRlcikge1xuICAgIHZhciBfYSwgX2I7XG4gICAgdmFyIGxldmVscyA9IHN0YXRlLmxldmVscztcbiAgICB2YXIgbGV2ZWwgPSAhbGV2ZWxzIHx8IGxldmVscy5sZW5ndGggPT09IDBcbiAgICAgICAgPyBzdGF0ZS5pbmRlbnRMZXZlbFxuICAgICAgICA6IGxldmVsc1tsZXZlbHMubGVuZ3RoIC0gMV0gLVxuICAgICAgICAgICAgKCgoX2EgPSB0aGlzLmVsZWN0cmljSW5wdXQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXN0KHRleHRBZnRlcikpID8gMSA6IDApO1xuICAgIHJldHVybiAobGV2ZWwgfHwgMCkgKiAoKChfYiA9IHRoaXMuY29uZmlnKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuaW5kZW50VW5pdCkgfHwgMCk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tb2RlLmpzLm1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQUE7QUFDQTtBQTJCQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUpBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBUkE7QUFhQTtBQUNBO0FBRUE7OztBQVFBO0FBR0E7QUFLQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../codemirror-graphql/mode.js\n");
2704
2705/***/ }),
2706
2707/***/ "../../codemirror-graphql/results/mode.js":
2708/*!***************************************************************************************!*\
2709 !*** /home/runner/work/graphiql/graphiql/packages/codemirror-graphql/results/mode.js ***!
2710 \***************************************************************************************/
2711/*! no static exports found */
2712/***/ (function(module, exports, __webpack_require__) {
2713
2714eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n var __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var codemirror_1 = __importDefault(__webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n\n var graphql_language_service_parser_1 = __webpack_require__(/*! graphql-language-service-parser */ \"../../graphql-language-service-parser/esm/index.js\");\n\n codemirror_1.default.defineMode('graphql-results', function (config) {\n var parser = graphql_language_service_parser_1.onlineParser({\n eatWhitespace: function (stream) {\n return stream.eatSpace();\n },\n lexRules: LexRules,\n parseRules: ParseRules,\n editorConfig: {\n tabSize: config.tabSize\n }\n });\n return {\n config: config,\n startState: parser.startState,\n token: parser.token,\n indent: indent,\n electricInput: /^\\s*[}\\]]/,\n fold: 'brace',\n closeBrackets: {\n pairs: '[]{}\"\"',\n explode: '[]{}'\n }\n };\n });\n\n function indent(state, textAfter) {\n var _a, _b;\n\n var levels = state.levels;\n var level = !levels || levels.length === 0 ? state.indentLevel : levels[levels.length - 1] - (((_a = this.electricInput) === null || _a === void 0 ? void 0 : _a.test(textAfter)) ? 1 : 0);\n return (level || 0) * (((_b = this.config) === null || _b === void 0 ? void 0 : _b.indentUnit) || 0);\n }\n\n var LexRules = {\n Punctuation: /^\\[|]|\\{|\\}|:|,/,\n Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,\n String: /^\"(?:[^\"\\\\]|\\\\(?:\"|\\/|\\\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*\"?/,\n Keyword: /^true|false|null/\n };\n var ParseRules = {\n Document: [graphql_language_service_parser_1.p('{'), graphql_language_service_parser_1.list('Entry', graphql_language_service_parser_1.p(',')), graphql_language_service_parser_1.p('}')],\n Entry: [graphql_language_service_parser_1.t('String', 'def'), graphql_language_service_parser_1.p(':'), 'Value'],\n Value: function (token) {\n switch (token.kind) {\n case 'Number':\n return 'NumberValue';\n\n case 'String':\n return 'StringValue';\n\n case 'Punctuation':\n switch (token.value) {\n case '[':\n return 'ListValue';\n\n case '{':\n return 'ObjectValue';\n }\n\n return null;\n\n case 'Keyword':\n switch (token.value) {\n case 'true':\n case 'false':\n return 'BooleanValue';\n\n case 'null':\n return 'NullValue';\n }\n\n return null;\n }\n },\n NumberValue: [graphql_language_service_parser_1.t('Number', 'number')],\n StringValue: [graphql_language_service_parser_1.t('String', 'string')],\n BooleanValue: [graphql_language_service_parser_1.t('Keyword', 'builtin')],\n NullValue: [graphql_language_service_parser_1.t('Keyword', 'keyword')],\n ListValue: [graphql_language_service_parser_1.p('['), graphql_language_service_parser_1.list('Value', graphql_language_service_parser_1.p(',')), graphql_language_service_parser_1.p(']')],\n ObjectValue: [graphql_language_service_parser_1.p('{'), graphql_language_service_parser_1.list('ObjectField', graphql_language_service_parser_1.p(',')), graphql_language_service_parser_1.p('}')],\n ObjectField: [graphql_language_service_parser_1.t('String', 'property'), graphql_language_service_parser_1.p(':'), 'Value']\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29kZW1pcnJvci1ncmFwaHFsL3Jlc3VsdHMvbW9kZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uL3NyYy9yZXN1bHRzL21vZGUudHM/NjFhYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBjb2RlbWlycm9yXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImNvZGVtaXJyb3JcIikpO1xudmFyIGdyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMSA9IHJlcXVpcmUoXCJncmFwaHFsLWxhbmd1YWdlLXNlcnZpY2UtcGFyc2VyXCIpO1xuY29kZW1pcnJvcl8xLmRlZmF1bHQuZGVmaW5lTW9kZSgnZ3JhcGhxbC1yZXN1bHRzJywgZnVuY3Rpb24gKGNvbmZpZykge1xuICAgIHZhciBwYXJzZXIgPSBncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEub25saW5lUGFyc2VyKHtcbiAgICAgICAgZWF0V2hpdGVzcGFjZTogZnVuY3Rpb24gKHN0cmVhbSkgeyByZXR1cm4gc3RyZWFtLmVhdFNwYWNlKCk7IH0sXG4gICAgICAgIGxleFJ1bGVzOiBMZXhSdWxlcyxcbiAgICAgICAgcGFyc2VSdWxlczogUGFyc2VSdWxlcyxcbiAgICAgICAgZWRpdG9yQ29uZmlnOiB7IHRhYlNpemU6IGNvbmZpZy50YWJTaXplIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgIHN0YXJ0U3RhdGU6IHBhcnNlci5zdGFydFN0YXRlLFxuICAgICAgICB0b2tlbjogcGFyc2VyLnRva2VuLFxuICAgICAgICBpbmRlbnQ6IGluZGVudCxcbiAgICAgICAgZWxlY3RyaWNJbnB1dDogL15cXHMqW31cXF1dLyxcbiAgICAgICAgZm9sZDogJ2JyYWNlJyxcbiAgICAgICAgY2xvc2VCcmFja2V0czoge1xuICAgICAgICAgICAgcGFpcnM6ICdbXXt9XCJcIicsXG4gICAgICAgICAgICBleHBsb2RlOiAnW117fScsXG4gICAgICAgIH0sXG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gaW5kZW50KHN0YXRlLCB0ZXh0QWZ0ZXIpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHZhciBsZXZlbHMgPSBzdGF0ZS5sZXZlbHM7XG4gICAgdmFyIGxldmVsID0gIWxldmVscyB8fCBsZXZlbHMubGVuZ3RoID09PSAwXG4gICAgICAgID8gc3RhdGUuaW5kZW50TGV2ZWxcbiAgICAgICAgOiBsZXZlbHNbbGV2ZWxzLmxlbmd0aCAtIDFdIC1cbiAgICAgICAgICAgICgoKF9hID0gdGhpcy5lbGVjdHJpY0lucHV0KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGVzdCh0ZXh0QWZ0ZXIpKSA/IDEgOiAwKTtcbiAgICByZXR1cm4gKGxldmVsIHx8IDApICogKCgoX2IgPSB0aGlzLmNvbmZpZykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmluZGVudFVuaXQpIHx8IDApO1xufVxudmFyIExleFJ1bGVzID0ge1xuICAgIFB1bmN0dWF0aW9uOiAvXlxcW3xdfFxce3xcXH18OnwsLyxcbiAgICBOdW1iZXI6IC9eLT8oPzowfCg/OlsxLTldWzAtOV0qKSkoPzpcXC5bMC05XSopPyg/OltlRV1bKy1dP1swLTldKyk/LyxcbiAgICBTdHJpbmc6IC9eXCIoPzpbXlwiXFxcXF18XFxcXCg/OlwifFxcL3xcXFxcfGJ8ZnxufHJ8dHx1WzAtOWEtZkEtRl17NH0pKSpcIj8vLFxuICAgIEtleXdvcmQ6IC9edHJ1ZXxmYWxzZXxudWxsLyxcbn07XG52YXIgUGFyc2VSdWxlcyA9IHtcbiAgICBEb2N1bWVudDogW2dyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5wKCd7JyksIGdyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5saXN0KCdFbnRyeScsIGdyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5wKCcsJykpLCBncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEucCgnfScpXSxcbiAgICBFbnRyeTogW2dyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS50KCdTdHJpbmcnLCAnZGVmJyksIGdyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5wKCc6JyksICdWYWx1ZSddLFxuICAgIFZhbHVlOiBmdW5jdGlvbiAodG9rZW4pIHtcbiAgICAgICAgc3dpdGNoICh0b2tlbi5raW5kKSB7XG4gICAgICAgICAgICBjYXNlICdOdW1iZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiAnTnVtYmVyVmFsdWUnO1xuICAgICAgICAgICAgY2FzZSAnU3RyaW5nJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1N0cmluZ1ZhbHVlJztcbiAgICAgICAgICAgIGNhc2UgJ1B1bmN0dWF0aW9uJzpcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRva2VuLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1snOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdMaXN0VmFsdWUnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd7JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnT2JqZWN0VmFsdWUnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGNhc2UgJ0tleXdvcmQnOlxuICAgICAgICAgICAgICAgIHN3aXRjaCAodG9rZW4udmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndHJ1ZSc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZhbHNlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnQm9vbGVhblZhbHVlJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ051bGxWYWx1ZSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBOdW1iZXJWYWx1ZTogW2dyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS50KCdOdW1iZXInLCAnbnVtYmVyJyldLFxuICAgIFN0cmluZ1ZhbHVlOiBbZ3JhcGhxbF9sYW5ndWFnZV9zZXJ2aWNlX3BhcnNlcl8xLnQoJ1N0cmluZycsICdzdHJpbmcnKV0sXG4gICAgQm9vbGVhblZhbHVlOiBbZ3JhcGhxbF9sYW5ndWFnZV9zZXJ2aWNlX3BhcnNlcl8xLnQoJ0tleXdvcmQnLCAnYnVpbHRpbicpXSxcbiAgICBOdWxsVmFsdWU6IFtncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEudCgnS2V5d29yZCcsICdrZXl3b3JkJyldLFxuICAgIExpc3RWYWx1ZTogW2dyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5wKCdbJyksIGdyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5saXN0KCdWYWx1ZScsIGdyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5wKCcsJykpLCBncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEucCgnXScpXSxcbiAgICBPYmplY3RWYWx1ZTogW2dyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5wKCd7JyksIGdyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5saXN0KCdPYmplY3RGaWVsZCcsIGdyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5wKCcsJykpLCBncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEucCgnfScpXSxcbiAgICBPYmplY3RGaWVsZDogW2dyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS50KCdTdHJpbmcnLCAncHJvcGVydHknKSwgZ3JhcGhxbF9sYW5ndWFnZV9zZXJ2aWNlX3BhcnNlcl8xLnAoJzonKSwgJ1ZhbHVlJ10sXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bW9kZS5qcy5tYXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFZQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUpBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQVBBO0FBWUE7QUFDQTtBQUNBOzs7QUFRQTtBQUdBO0FBS0E7QUFDQTtBQUNBO0FBSUE7QUFFQTtBQUdBO0FBR0E7QUFHQTtBQVhBO0FBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUpBO0FBQ0E7QUFLQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUxBO0FBQ0E7QUFNQTtBQXJCQTtBQXVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbENBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../codemirror-graphql/results/mode.js\n");
2715
2716/***/ }),
2717
2718/***/ "../../codemirror-graphql/utils/SchemaReference.js":
2719/*!************************************************************************************************!*\
2720 !*** /home/runner/work/graphiql/graphiql/packages/codemirror-graphql/utils/SchemaReference.js ***!
2721 \************************************************************************************************/
2722/*! no static exports found */
2723/***/ (function(module, exports, __webpack_require__) {
2724
2725eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getTypeReference = exports.getEnumValueReference = exports.getArgumentReference = exports.getDirectiveReference = exports.getFieldReference = void 0;\n\n var graphql_1 = __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n\n function getFieldReference(typeInfo) {\n return {\n kind: 'Field',\n schema: typeInfo.schema,\n field: typeInfo.fieldDef,\n type: isMetaField(typeInfo.fieldDef) ? null : typeInfo.parentType\n };\n }\n\n exports.getFieldReference = getFieldReference;\n\n function getDirectiveReference(typeInfo) {\n return {\n kind: 'Directive',\n schema: typeInfo.schema,\n directive: typeInfo.directiveDef\n };\n }\n\n exports.getDirectiveReference = getDirectiveReference;\n\n function getArgumentReference(typeInfo) {\n return typeInfo.directiveDef ? {\n kind: 'Argument',\n schema: typeInfo.schema,\n argument: typeInfo.argDef,\n directive: typeInfo.directiveDef\n } : {\n kind: 'Argument',\n schema: typeInfo.schema,\n argument: typeInfo.argDef,\n field: typeInfo.fieldDef,\n type: isMetaField(typeInfo.fieldDef) ? null : typeInfo.parentType\n };\n }\n\n exports.getArgumentReference = getArgumentReference;\n\n function getEnumValueReference(typeInfo) {\n return {\n kind: 'EnumValue',\n value: typeInfo.enumValue || undefined,\n type: typeInfo.inputType ? graphql_1.getNamedType(typeInfo.inputType) : undefined\n };\n }\n\n exports.getEnumValueReference = getEnumValueReference;\n\n function getTypeReference(typeInfo, type) {\n return {\n kind: 'Type',\n schema: typeInfo.schema,\n type: type || typeInfo.type\n };\n }\n\n exports.getTypeReference = getTypeReference;\n\n function isMetaField(fieldDef) {\n return fieldDef.name.slice(0, 2) === '__';\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29kZW1pcnJvci1ncmFwaHFsL3V0aWxzL1NjaGVtYVJlZmVyZW5jZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uL3NyYy91dGlscy9TY2hlbWFSZWZlcmVuY2UudHM/MDUyYiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZ2V0VHlwZVJlZmVyZW5jZSA9IGV4cG9ydHMuZ2V0RW51bVZhbHVlUmVmZXJlbmNlID0gZXhwb3J0cy5nZXRBcmd1bWVudFJlZmVyZW5jZSA9IGV4cG9ydHMuZ2V0RGlyZWN0aXZlUmVmZXJlbmNlID0gZXhwb3J0cy5nZXRGaWVsZFJlZmVyZW5jZSA9IHZvaWQgMDtcbnZhciBncmFwaHFsXzEgPSByZXF1aXJlKFwiZ3JhcGhxbFwiKTtcbmZ1bmN0aW9uIGdldEZpZWxkUmVmZXJlbmNlKHR5cGVJbmZvKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAga2luZDogJ0ZpZWxkJyxcbiAgICAgICAgc2NoZW1hOiB0eXBlSW5mby5zY2hlbWEsXG4gICAgICAgIGZpZWxkOiB0eXBlSW5mby5maWVsZERlZixcbiAgICAgICAgdHlwZTogaXNNZXRhRmllbGQodHlwZUluZm8uZmllbGREZWYpID8gbnVsbCA6IHR5cGVJbmZvLnBhcmVudFR5cGUsXG4gICAgfTtcbn1cbmV4cG9ydHMuZ2V0RmllbGRSZWZlcmVuY2UgPSBnZXRGaWVsZFJlZmVyZW5jZTtcbmZ1bmN0aW9uIGdldERpcmVjdGl2ZVJlZmVyZW5jZSh0eXBlSW5mbykge1xuICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6ICdEaXJlY3RpdmUnLFxuICAgICAgICBzY2hlbWE6IHR5cGVJbmZvLnNjaGVtYSxcbiAgICAgICAgZGlyZWN0aXZlOiB0eXBlSW5mby5kaXJlY3RpdmVEZWYsXG4gICAgfTtcbn1cbmV4cG9ydHMuZ2V0RGlyZWN0aXZlUmVmZXJlbmNlID0gZ2V0RGlyZWN0aXZlUmVmZXJlbmNlO1xuZnVuY3Rpb24gZ2V0QXJndW1lbnRSZWZlcmVuY2UodHlwZUluZm8pIHtcbiAgICByZXR1cm4gdHlwZUluZm8uZGlyZWN0aXZlRGVmXG4gICAgICAgID8ge1xuICAgICAgICAgICAga2luZDogJ0FyZ3VtZW50JyxcbiAgICAgICAgICAgIHNjaGVtYTogdHlwZUluZm8uc2NoZW1hLFxuICAgICAgICAgICAgYXJndW1lbnQ6IHR5cGVJbmZvLmFyZ0RlZixcbiAgICAgICAgICAgIGRpcmVjdGl2ZTogdHlwZUluZm8uZGlyZWN0aXZlRGVmLFxuICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAga2luZDogJ0FyZ3VtZW50JyxcbiAgICAgICAgICAgIHNjaGVtYTogdHlwZUluZm8uc2NoZW1hLFxuICAgICAgICAgICAgYXJndW1lbnQ6IHR5cGVJbmZvLmFyZ0RlZixcbiAgICAgICAgICAgIGZpZWxkOiB0eXBlSW5mby5maWVsZERlZixcbiAgICAgICAgICAgIHR5cGU6IGlzTWV0YUZpZWxkKHR5cGVJbmZvLmZpZWxkRGVmKSA/IG51bGwgOiB0eXBlSW5mby5wYXJlbnRUeXBlLFxuICAgICAgICB9O1xufVxuZXhwb3J0cy5nZXRBcmd1bWVudFJlZmVyZW5jZSA9IGdldEFyZ3VtZW50UmVmZXJlbmNlO1xuZnVuY3Rpb24gZ2V0RW51bVZhbHVlUmVmZXJlbmNlKHR5cGVJbmZvKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAga2luZDogJ0VudW1WYWx1ZScsXG4gICAgICAgIHZhbHVlOiB0eXBlSW5mby5lbnVtVmFsdWUgfHwgdW5kZWZpbmVkLFxuICAgICAgICB0eXBlOiB0eXBlSW5mby5pbnB1dFR5cGVcbiAgICAgICAgICAgID8gZ3JhcGhxbF8xLmdldE5hbWVkVHlwZSh0eXBlSW5mby5pbnB1dFR5cGUpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9O1xufVxuZXhwb3J0cy5nZXRFbnVtVmFsdWVSZWZlcmVuY2UgPSBnZXRFbnVtVmFsdWVSZWZlcmVuY2U7XG5mdW5jdGlvbiBnZXRUeXBlUmVmZXJlbmNlKHR5cGVJbmZvLCB0eXBlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAga2luZDogJ1R5cGUnLFxuICAgICAgICBzY2hlbWE6IHR5cGVJbmZvLnNjaGVtYSxcbiAgICAgICAgdHlwZTogdHlwZSB8fCB0eXBlSW5mby50eXBlLFxuICAgIH07XG59XG5leHBvcnRzLmdldFR5cGVSZWZlcmVuY2UgPSBnZXRUeXBlUmVmZXJlbmNlO1xuZnVuY3Rpb24gaXNNZXRhRmllbGQoZmllbGREZWYpIHtcbiAgICByZXR1cm4gZmllbGREZWYubmFtZS5zbGljZSgwLCAyKSA9PT0gJ19fJztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNjaGVtYVJlZmVyZW5jZS5qcy5tYXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFzREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBUkE7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFQQTtBQUNBO0FBT0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBaEJBO0FBQ0E7QUFnQkE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUpBO0FBUUE7QUFDQTtBQVZBO0FBQ0E7QUFZQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBVkE7QUFDQTtBQVVBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../codemirror-graphql/utils/SchemaReference.js\n");
2726
2727/***/ }),
2728
2729/***/ "../../codemirror-graphql/utils/forEachState.js":
2730/*!*********************************************************************************************!*\
2731 !*** /home/runner/work/graphiql/graphiql/packages/codemirror-graphql/utils/forEachState.js ***!
2732 \*********************************************************************************************/
2733/*! no static exports found */
2734/***/ (function(module, exports, __webpack_require__) {
2735
2736eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function forEachState(stack, fn) {\n var reverseStateStack = [];\n var state = stack;\n\n while (state && state.kind) {\n reverseStateStack.push(state);\n state = state.prevState;\n }\n\n for (var i = reverseStateStack.length - 1; i >= 0; i--) {\n fn(reverseStateStack[i]);\n }\n }\n\n exports.default = forEachState;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29kZW1pcnJvci1ncmFwaHFsL3V0aWxzL2ZvckVhY2hTdGF0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uL3NyYy91dGlscy9mb3JFYWNoU3RhdGUudHM/NjUwOSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmZ1bmN0aW9uIGZvckVhY2hTdGF0ZShzdGFjaywgZm4pIHtcbiAgICB2YXIgcmV2ZXJzZVN0YXRlU3RhY2sgPSBbXTtcbiAgICB2YXIgc3RhdGUgPSBzdGFjaztcbiAgICB3aGlsZSAoc3RhdGUgJiYgc3RhdGUua2luZCkge1xuICAgICAgICByZXZlcnNlU3RhdGVTdGFjay5wdXNoKHN0YXRlKTtcbiAgICAgICAgc3RhdGUgPSBzdGF0ZS5wcmV2U3RhdGU7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSByZXZlcnNlU3RhdGVTdGFjay5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBmbihyZXZlcnNlU3RhdGVTdGFja1tpXSk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gZm9yRWFjaFN0YXRlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Zm9yRWFjaFN0YXRlLmpzLm1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFhQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWEE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../codemirror-graphql/utils/forEachState.js\n");
2737
2738/***/ }),
2739
2740/***/ "../../codemirror-graphql/utils/getTypeInfo.js":
2741/*!********************************************************************************************!*\
2742 !*** /home/runner/work/graphiql/graphiql/packages/codemirror-graphql/utils/getTypeInfo.js ***!
2743 \********************************************************************************************/
2744/*! no static exports found */
2745/***/ (function(module, exports, __webpack_require__) {
2746
2747eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n var __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var graphql_1 = __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n\n var introspection_1 = __webpack_require__(/*! graphql/type/introspection */ \"../../../node_modules/graphql/type/introspection.mjs\");\n\n var forEachState_1 = __importDefault(__webpack_require__(/*! ./forEachState */ \"../../codemirror-graphql/utils/forEachState.js\"));\n\n function getTypeInfo(schema, tokenState) {\n var info = {\n schema: schema,\n type: null,\n parentType: null,\n inputType: null,\n directiveDef: null,\n fieldDef: null,\n argDef: null,\n argDefs: null,\n objectFieldDefs: null\n };\n forEachState_1.default(tokenState, function (state) {\n switch (state.kind) {\n case 'Query':\n case 'ShortQuery':\n info.type = schema.getQueryType();\n break;\n\n case 'Mutation':\n info.type = schema.getMutationType();\n break;\n\n case 'Subscription':\n info.type = schema.getSubscriptionType();\n break;\n\n case 'InlineFragment':\n case 'FragmentDefinition':\n if (state.type) {\n info.type = schema.getType(state.type);\n }\n\n break;\n\n case 'Field':\n case 'AliasedField':\n info.fieldDef = info.type && state.name ? getFieldDef(schema, info.parentType, state.name) : null;\n info.type = info.fieldDef && info.fieldDef.type;\n break;\n\n case 'SelectionSet':\n info.parentType = info.type ? graphql_1.getNamedType(info.type) : null;\n break;\n\n case 'Directive':\n info.directiveDef = state.name ? schema.getDirective(state.name) : null;\n break;\n\n case 'Arguments':\n var parentDef = state.prevState ? state.prevState.kind === 'Field' ? info.fieldDef : state.prevState.kind === 'Directive' ? info.directiveDef : state.prevState.kind === 'AliasedField' ? state.prevState.name && getFieldDef(schema, info.parentType, state.prevState.name) : null : null;\n info.argDefs = parentDef ? parentDef.args : null;\n break;\n\n case 'Argument':\n info.argDef = null;\n\n if (info.argDefs) {\n for (var i = 0; i < info.argDefs.length; i++) {\n if (info.argDefs[i].name === state.name) {\n info.argDef = info.argDefs[i];\n break;\n }\n }\n }\n\n info.inputType = info.argDef && info.argDef.type;\n break;\n\n case 'EnumValue':\n var enumType = info.inputType ? graphql_1.getNamedType(info.inputType) : null;\n info.enumValue = enumType instanceof graphql_1.GraphQLEnumType ? find(enumType.getValues(), function (val) {\n return val.value === state.name;\n }) : null;\n break;\n\n case 'ListValue':\n var nullableType = info.inputType ? graphql_1.getNullableType(info.inputType) : null;\n info.inputType = nullableType instanceof graphql_1.GraphQLList ? nullableType.ofType : null;\n break;\n\n case 'ObjectValue':\n var objectType = info.inputType ? graphql_1.getNamedType(info.inputType) : null;\n info.objectFieldDefs = objectType instanceof graphql_1.GraphQLInputObjectType ? objectType.getFields() : null;\n break;\n\n case 'ObjectField':\n var objectField = state.name && info.objectFieldDefs ? info.objectFieldDefs[state.name] : null;\n info.inputType = objectField && objectField.type;\n break;\n\n case 'NamedType':\n info.type = state.name ? schema.getType(state.name) : null;\n break;\n }\n });\n return info;\n }\n\n exports.default = getTypeInfo;\n\n function getFieldDef(schema, type, fieldName) {\n if (fieldName === introspection_1.SchemaMetaFieldDef.name && schema.getQueryType() === type) {\n return introspection_1.SchemaMetaFieldDef;\n }\n\n if (fieldName === introspection_1.TypeMetaFieldDef.name && schema.getQueryType() === type) {\n return introspection_1.TypeMetaFieldDef;\n }\n\n if (fieldName === introspection_1.TypeNameMetaFieldDef.name && graphql_1.isCompositeType(type)) {\n return introspection_1.TypeNameMetaFieldDef;\n }\n\n if (type && type.getFields) {\n return type.getFields()[fieldName];\n }\n }\n\n function find(array, predicate) {\n for (var i = 0; i < array.length; i++) {\n if (predicate(array[i])) {\n return array[i];\n }\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29kZW1pcnJvci1ncmFwaHFsL3V0aWxzL2dldFR5cGVJbmZvLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi4vc3JjL3V0aWxzL2dldFR5cGVJbmZvLnRzPzdlYTEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgZ3JhcGhxbF8xID0gcmVxdWlyZShcImdyYXBocWxcIik7XG52YXIgaW50cm9zcGVjdGlvbl8xID0gcmVxdWlyZShcImdyYXBocWwvdHlwZS9pbnRyb3NwZWN0aW9uXCIpO1xudmFyIGZvckVhY2hTdGF0ZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL2ZvckVhY2hTdGF0ZVwiKSk7XG5mdW5jdGlvbiBnZXRUeXBlSW5mbyhzY2hlbWEsIHRva2VuU3RhdGUpIHtcbiAgICB2YXIgaW5mbyA9IHtcbiAgICAgICAgc2NoZW1hOiBzY2hlbWEsXG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICAgIHBhcmVudFR5cGU6IG51bGwsXG4gICAgICAgIGlucHV0VHlwZTogbnVsbCxcbiAgICAgICAgZGlyZWN0aXZlRGVmOiBudWxsLFxuICAgICAgICBmaWVsZERlZjogbnVsbCxcbiAgICAgICAgYXJnRGVmOiBudWxsLFxuICAgICAgICBhcmdEZWZzOiBudWxsLFxuICAgICAgICBvYmplY3RGaWVsZERlZnM6IG51bGwsXG4gICAgfTtcbiAgICBmb3JFYWNoU3RhdGVfMS5kZWZhdWx0KHRva2VuU3RhdGUsIGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICBzd2l0Y2ggKHN0YXRlLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ1F1ZXJ5JzpcbiAgICAgICAgICAgIGNhc2UgJ1Nob3J0UXVlcnknOlxuICAgICAgICAgICAgICAgIGluZm8udHlwZSA9IHNjaGVtYS5nZXRRdWVyeVR5cGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ011dGF0aW9uJzpcbiAgICAgICAgICAgICAgICBpbmZvLnR5cGUgPSBzY2hlbWEuZ2V0TXV0YXRpb25UeXBlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTdWJzY3JpcHRpb24nOlxuICAgICAgICAgICAgICAgIGluZm8udHlwZSA9IHNjaGVtYS5nZXRTdWJzY3JpcHRpb25UeXBlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdJbmxpbmVGcmFnbWVudCc6XG4gICAgICAgICAgICBjYXNlICdGcmFnbWVudERlZmluaXRpb24nOlxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZm8udHlwZSA9IHNjaGVtYS5nZXRUeXBlKHN0YXRlLnR5cGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0ZpZWxkJzpcbiAgICAgICAgICAgIGNhc2UgJ0FsaWFzZWRGaWVsZCc6XG4gICAgICAgICAgICAgICAgaW5mby5maWVsZERlZiA9XG4gICAgICAgICAgICAgICAgICAgIGluZm8udHlwZSAmJiBzdGF0ZS5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGdldEZpZWxkRGVmKHNjaGVtYSwgaW5mby5wYXJlbnRUeXBlLCBzdGF0ZS5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgICAgIGluZm8udHlwZSA9IGluZm8uZmllbGREZWYgJiYgaW5mby5maWVsZERlZi50eXBlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnU2VsZWN0aW9uU2V0JzpcbiAgICAgICAgICAgICAgICBpbmZvLnBhcmVudFR5cGUgPSBpbmZvLnR5cGUgPyBncmFwaHFsXzEuZ2V0TmFtZWRUeXBlKGluZm8udHlwZSkgOiBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnRGlyZWN0aXZlJzpcbiAgICAgICAgICAgICAgICBpbmZvLmRpcmVjdGl2ZURlZiA9IHN0YXRlLm5hbWUgPyBzY2hlbWEuZ2V0RGlyZWN0aXZlKHN0YXRlLm5hbWUpIDogbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0FyZ3VtZW50cyc6XG4gICAgICAgICAgICAgICAgdmFyIHBhcmVudERlZiA9IHN0YXRlLnByZXZTdGF0ZVxuICAgICAgICAgICAgICAgICAgICA/IHN0YXRlLnByZXZTdGF0ZS5raW5kID09PSAnRmllbGQnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGluZm8uZmllbGREZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc3RhdGUucHJldlN0YXRlLmtpbmQgPT09ICdEaXJlY3RpdmUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbmZvLmRpcmVjdGl2ZURlZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc3RhdGUucHJldlN0YXRlLmtpbmQgPT09ICdBbGlhc2VkRmllbGQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc3RhdGUucHJldlN0YXRlLm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEZpZWxkRGVmKHNjaGVtYSwgaW5mby5wYXJlbnRUeXBlLCBzdGF0ZS5wcmV2U3RhdGUubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgICAgICBpbmZvLmFyZ0RlZnMgPSBwYXJlbnREZWYgPyBwYXJlbnREZWYuYXJncyA6IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBcmd1bWVudCc6XG4gICAgICAgICAgICAgICAgaW5mby5hcmdEZWYgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChpbmZvLmFyZ0RlZnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmZvLmFyZ0RlZnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLmFyZ0RlZnNbaV0ubmFtZSA9PT0gc3RhdGUubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uYXJnRGVmID0gaW5mby5hcmdEZWZzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluZm8uaW5wdXRUeXBlID0gaW5mby5hcmdEZWYgJiYgaW5mby5hcmdEZWYudHlwZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0VudW1WYWx1ZSc6XG4gICAgICAgICAgICAgICAgdmFyIGVudW1UeXBlID0gaW5mby5pbnB1dFR5cGUgPyBncmFwaHFsXzEuZ2V0TmFtZWRUeXBlKGluZm8uaW5wdXRUeXBlKSA6IG51bGw7XG4gICAgICAgICAgICAgICAgaW5mby5lbnVtVmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICBlbnVtVHlwZSBpbnN0YW5jZW9mIGdyYXBocWxfMS5HcmFwaFFMRW51bVR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZmluZChlbnVtVHlwZS5nZXRWYWx1ZXMoKSwgZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gdmFsLnZhbHVlID09PSBzdGF0ZS5uYW1lOyB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTGlzdFZhbHVlJzpcbiAgICAgICAgICAgICAgICB2YXIgbnVsbGFibGVUeXBlID0gaW5mby5pbnB1dFR5cGVcbiAgICAgICAgICAgICAgICAgICAgPyBncmFwaHFsXzEuZ2V0TnVsbGFibGVUeXBlKGluZm8uaW5wdXRUeXBlKVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICAgICAgaW5mby5pbnB1dFR5cGUgPVxuICAgICAgICAgICAgICAgICAgICBudWxsYWJsZVR5cGUgaW5zdGFuY2VvZiBncmFwaHFsXzEuR3JhcGhRTExpc3QgPyBudWxsYWJsZVR5cGUub2ZUeXBlIDogbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ09iamVjdFZhbHVlJzpcbiAgICAgICAgICAgICAgICB2YXIgb2JqZWN0VHlwZSA9IGluZm8uaW5wdXRUeXBlID8gZ3JhcGhxbF8xLmdldE5hbWVkVHlwZShpbmZvLmlucHV0VHlwZSkgOiBudWxsO1xuICAgICAgICAgICAgICAgIGluZm8ub2JqZWN0RmllbGREZWZzID1cbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0VHlwZSBpbnN0YW5jZW9mIGdyYXBocWxfMS5HcmFwaFFMSW5wdXRPYmplY3RUeXBlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG9iamVjdFR5cGUuZ2V0RmllbGRzKClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ09iamVjdEZpZWxkJzpcbiAgICAgICAgICAgICAgICB2YXIgb2JqZWN0RmllbGQgPSBzdGF0ZS5uYW1lICYmIGluZm8ub2JqZWN0RmllbGREZWZzXG4gICAgICAgICAgICAgICAgICAgID8gaW5mby5vYmplY3RGaWVsZERlZnNbc3RhdGUubmFtZV1cbiAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgICAgIGluZm8uaW5wdXRUeXBlID0gb2JqZWN0RmllbGQgJiYgb2JqZWN0RmllbGQudHlwZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ05hbWVkVHlwZSc6XG4gICAgICAgICAgICAgICAgaW5mby50eXBlID0gc3RhdGUubmFtZSA/IHNjaGVtYS5nZXRUeXBlKHN0YXRlLm5hbWUpIDogbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpbmZvO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gZ2V0VHlwZUluZm87XG5mdW5jdGlvbiBnZXRGaWVsZERlZihzY2hlbWEsIHR5cGUsIGZpZWxkTmFtZSkge1xuICAgIGlmIChmaWVsZE5hbWUgPT09IGludHJvc3BlY3Rpb25fMS5TY2hlbWFNZXRhRmllbGREZWYubmFtZSAmJiBzY2hlbWEuZ2V0UXVlcnlUeXBlKCkgPT09IHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGludHJvc3BlY3Rpb25fMS5TY2hlbWFNZXRhRmllbGREZWY7XG4gICAgfVxuICAgIGlmIChmaWVsZE5hbWUgPT09IGludHJvc3BlY3Rpb25fMS5UeXBlTWV0YUZpZWxkRGVmLm5hbWUgJiYgc2NoZW1hLmdldFF1ZXJ5VHlwZSgpID09PSB0eXBlKSB7XG4gICAgICAgIHJldHVybiBpbnRyb3NwZWN0aW9uXzEuVHlwZU1ldGFGaWVsZERlZjtcbiAgICB9XG4gICAgaWYgKGZpZWxkTmFtZSA9PT0gaW50cm9zcGVjdGlvbl8xLlR5cGVOYW1lTWV0YUZpZWxkRGVmLm5hbWUgJiYgZ3JhcGhxbF8xLmlzQ29tcG9zaXRlVHlwZSh0eXBlKSkge1xuICAgICAgICByZXR1cm4gaW50cm9zcGVjdGlvbl8xLlR5cGVOYW1lTWV0YUZpZWxkRGVmO1xuICAgIH1cbiAgICBpZiAodHlwZSAmJiB0eXBlLmdldEZpZWxkcykge1xuICAgICAgICByZXR1cm4gdHlwZS5nZXRGaWVsZHMoKVtmaWVsZE5hbWVdO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGZpbmQoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHByZWRpY2F0ZShhcnJheVtpXSkpIHtcbiAgICAgICAgICAgIHJldHVybiBhcnJheVtpXTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldFR5cGVJbmZvLmpzLm1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBa0JBO0FBQ0E7QUFLQTtBQUNBO0FBa0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQVVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBdEZBO0FBd0ZBO0FBRUE7QUFDQTtBQUNBO0FBMUdBO0FBQ0E7QUEyR0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../codemirror-graphql/utils/getTypeInfo.js\n");
2748
2749/***/ }),
2750
2751/***/ "../../codemirror-graphql/utils/hintList.js":
2752/*!*****************************************************************************************!*\
2753 !*** /home/runner/work/graphiql/graphiql/packages/codemirror-graphql/utils/hintList.js ***!
2754 \*****************************************************************************************/
2755/*! no static exports found */
2756/***/ (function(module, exports, __webpack_require__) {
2757
2758eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function hintList(cursor, token, list) {\n var hints = filterAndSortList(list, normalizeText(token.string));\n\n if (!hints) {\n return;\n }\n\n var tokenStart = token.type !== null && /\"|\\w/.test(token.string[0]) ? token.start : token.end;\n return {\n list: hints,\n from: {\n line: cursor.line,\n ch: tokenStart\n },\n to: {\n line: cursor.line,\n ch: token.end\n }\n };\n }\n\n exports.default = hintList;\n\n function filterAndSortList(list, text) {\n if (!text) {\n return filterNonEmpty(list, function (entry) {\n return !entry.isDeprecated;\n });\n }\n\n var byProximity = list.map(function (entry) {\n return {\n proximity: getProximity(normalizeText(entry.text), text),\n entry: entry\n };\n });\n var conciseMatches = filterNonEmpty(filterNonEmpty(byProximity, function (pair) {\n return pair.proximity <= 2;\n }), function (pair) {\n return !pair.entry.isDeprecated;\n });\n var sortedMatches = conciseMatches.sort(function (a, b) {\n return (a.entry.isDeprecated ? 1 : 0) - (b.entry.isDeprecated ? 1 : 0) || a.proximity - b.proximity || a.entry.text.length - b.entry.text.length;\n });\n return sortedMatches.map(function (pair) {\n return pair.entry;\n });\n }\n\n function filterNonEmpty(array, predicate) {\n var filtered = array.filter(predicate);\n return filtered.length === 0 ? array : filtered;\n }\n\n function normalizeText(text) {\n return text.toLowerCase().replace(/\\W/g, '');\n }\n\n function getProximity(suggestion, text) {\n var proximity = lexicalDistance(text, suggestion);\n\n if (suggestion.length > text.length) {\n proximity -= suggestion.length - text.length - 1;\n proximity += suggestion.indexOf(text) === 0 ? 0 : 0.5;\n }\n\n return proximity;\n }\n\n function lexicalDistance(a, b) {\n var i;\n var j;\n var d = [];\n var aLength = a.length;\n var bLength = b.length;\n\n for (i = 0; i <= aLength; i++) {\n d[i] = [i];\n }\n\n for (j = 1; j <= bLength; j++) {\n d[0][j] = j;\n }\n\n for (i = 1; i <= aLength; i++) {\n for (j = 1; j <= bLength; j++) {\n var cost = a[i - 1] === b[j - 1] ? 0 : 1;\n d[i][j] = Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost);\n\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost);\n }\n }\n }\n\n return d[aLength][bLength];\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29kZW1pcnJvci1ncmFwaHFsL3V0aWxzL2hpbnRMaXN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi4vc3JjL3V0aWxzL2hpbnRMaXN0LnRzPzc0YzQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5mdW5jdGlvbiBoaW50TGlzdChjdXJzb3IsIHRva2VuLCBsaXN0KSB7XG4gICAgdmFyIGhpbnRzID0gZmlsdGVyQW5kU29ydExpc3QobGlzdCwgbm9ybWFsaXplVGV4dCh0b2tlbi5zdHJpbmcpKTtcbiAgICBpZiAoIWhpbnRzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRva2VuU3RhcnQgPSB0b2tlbi50eXBlICE9PSBudWxsICYmIC9cInxcXHcvLnRlc3QodG9rZW4uc3RyaW5nWzBdKVxuICAgICAgICA/IHRva2VuLnN0YXJ0XG4gICAgICAgIDogdG9rZW4uZW5kO1xuICAgIHJldHVybiB7XG4gICAgICAgIGxpc3Q6IGhpbnRzLFxuICAgICAgICBmcm9tOiB7IGxpbmU6IGN1cnNvci5saW5lLCBjaDogdG9rZW5TdGFydCB9LFxuICAgICAgICB0bzogeyBsaW5lOiBjdXJzb3IubGluZSwgY2g6IHRva2VuLmVuZCB9LFxuICAgIH07XG59XG5leHBvcnRzLmRlZmF1bHQgPSBoaW50TGlzdDtcbmZ1bmN0aW9uIGZpbHRlckFuZFNvcnRMaXN0KGxpc3QsIHRleHQpIHtcbiAgICBpZiAoIXRleHQpIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlck5vbkVtcHR5KGxpc3QsIGZ1bmN0aW9uIChlbnRyeSkgeyByZXR1cm4gIWVudHJ5LmlzRGVwcmVjYXRlZDsgfSk7XG4gICAgfVxuICAgIHZhciBieVByb3hpbWl0eSA9IGxpc3QubWFwKGZ1bmN0aW9uIChlbnRyeSkgeyByZXR1cm4gKHtcbiAgICAgICAgcHJveGltaXR5OiBnZXRQcm94aW1pdHkobm9ybWFsaXplVGV4dChlbnRyeS50ZXh0KSwgdGV4dCksXG4gICAgICAgIGVudHJ5OiBlbnRyeSxcbiAgICB9KTsgfSk7XG4gICAgdmFyIGNvbmNpc2VNYXRjaGVzID0gZmlsdGVyTm9uRW1wdHkoZmlsdGVyTm9uRW1wdHkoYnlQcm94aW1pdHksIGZ1bmN0aW9uIChwYWlyKSB7IHJldHVybiBwYWlyLnByb3hpbWl0eSA8PSAyOyB9KSwgZnVuY3Rpb24gKHBhaXIpIHsgcmV0dXJuICFwYWlyLmVudHJ5LmlzRGVwcmVjYXRlZDsgfSk7XG4gICAgdmFyIHNvcnRlZE1hdGNoZXMgPSBjb25jaXNlTWF0Y2hlcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiAoYS5lbnRyeS5pc0RlcHJlY2F0ZWQgPyAxIDogMCkgLSAoYi5lbnRyeS5pc0RlcHJlY2F0ZWQgPyAxIDogMCkgfHxcbiAgICAgICAgICAgIGEucHJveGltaXR5IC0gYi5wcm94aW1pdHkgfHxcbiAgICAgICAgICAgIGEuZW50cnkudGV4dC5sZW5ndGggLSBiLmVudHJ5LnRleHQubGVuZ3RoO1xuICAgIH0pO1xuICAgIHJldHVybiBzb3J0ZWRNYXRjaGVzLm1hcChmdW5jdGlvbiAocGFpcikgeyByZXR1cm4gcGFpci5lbnRyeTsgfSk7XG59XG5mdW5jdGlvbiBmaWx0ZXJOb25FbXB0eShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgdmFyIGZpbHRlcmVkID0gYXJyYXkuZmlsdGVyKHByZWRpY2F0ZSk7XG4gICAgcmV0dXJuIGZpbHRlcmVkLmxlbmd0aCA9PT0gMCA/IGFycmF5IDogZmlsdGVyZWQ7XG59XG5mdW5jdGlvbiBub3JtYWxpemVUZXh0KHRleHQpIHtcbiAgICByZXR1cm4gdGV4dC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xcVy9nLCAnJyk7XG59XG5mdW5jdGlvbiBnZXRQcm94aW1pdHkoc3VnZ2VzdGlvbiwgdGV4dCkge1xuICAgIHZhciBwcm94aW1pdHkgPSBsZXhpY2FsRGlzdGFuY2UodGV4dCwgc3VnZ2VzdGlvbik7XG4gICAgaWYgKHN1Z2dlc3Rpb24ubGVuZ3RoID4gdGV4dC5sZW5ndGgpIHtcbiAgICAgICAgcHJveGltaXR5IC09IHN1Z2dlc3Rpb24ubGVuZ3RoIC0gdGV4dC5sZW5ndGggLSAxO1xuICAgICAgICBwcm94aW1pdHkgKz0gc3VnZ2VzdGlvbi5pbmRleE9mKHRleHQpID09PSAwID8gMCA6IDAuNTtcbiAgICB9XG4gICAgcmV0dXJuIHByb3hpbWl0eTtcbn1cbmZ1bmN0aW9uIGxleGljYWxEaXN0YW5jZShhLCBiKSB7XG4gICAgdmFyIGk7XG4gICAgdmFyIGo7XG4gICAgdmFyIGQgPSBbXTtcbiAgICB2YXIgYUxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIHZhciBiTGVuZ3RoID0gYi5sZW5ndGg7XG4gICAgZm9yIChpID0gMDsgaSA8PSBhTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZFtpXSA9IFtpXTtcbiAgICB9XG4gICAgZm9yIChqID0gMTsgaiA8PSBiTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgZFswXVtqXSA9IGo7XG4gICAgfVxuICAgIGZvciAoaSA9IDE7IGkgPD0gYUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZvciAoaiA9IDE7IGogPD0gYkxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICB2YXIgY29zdCA9IGFbaSAtIDFdID09PSBiW2ogLSAxXSA/IDAgOiAxO1xuICAgICAgICAgICAgZFtpXVtqXSA9IE1hdGgubWluKGRbaSAtIDFdW2pdICsgMSwgZFtpXVtqIC0gMV0gKyAxLCBkW2kgLSAxXVtqIC0gMV0gKyBjb3N0KTtcbiAgICAgICAgICAgIGlmIChpID4gMSAmJiBqID4gMSAmJiBhW2kgLSAxXSA9PT0gYltqIC0gMl0gJiYgYVtpIC0gMl0gPT09IGJbaiAtIDFdKSB7XG4gICAgICAgICAgICAgICAgZFtpXVtqXSA9IE1hdGgubWluKGRbaV1bal0sIGRbaSAtIDJdW2ogLSAyXSArIGNvc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkW2FMZW5ndGhdW2JMZW5ndGhdO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGludExpc3QuanMubWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQWFBO0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUhBO0FBS0E7QUFDQTtBQXJCQTtBQUNBO0FBdUJBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUdBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUdBO0FBRUE7QUFFQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../codemirror-graphql/utils/hintList.js\n");
2759
2760/***/ }),
2761
2762/***/ "../../codemirror-graphql/utils/info-addon.js":
2763/*!*******************************************************************************************!*\
2764 !*** /home/runner/work/graphiql/graphiql/packages/codemirror-graphql/utils/info-addon.js ***!
2765 \*******************************************************************************************/
2766/*! no static exports found */
2767/***/ (function(module, exports, __webpack_require__) {
2768
2769eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n var __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var codemirror_1 = __importDefault(__webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n\n codemirror_1.default.defineOption('info', false, function (cm, options, old) {\n if (old && old !== codemirror_1.default.Init) {\n var oldOnMouseOver = cm.state.info.onMouseOver;\n codemirror_1.default.off(cm.getWrapperElement(), 'mouseover', oldOnMouseOver);\n clearTimeout(cm.state.info.hoverTimeout);\n delete cm.state.info;\n }\n\n if (options) {\n var state = cm.state.info = createState(options);\n state.onMouseOver = onMouseOver.bind(null, cm);\n codemirror_1.default.on(cm.getWrapperElement(), 'mouseover', state.onMouseOver);\n }\n });\n\n function createState(options) {\n return {\n options: options instanceof Function ? {\n render: options\n } : options === true ? {} : options\n };\n }\n\n function getHoverTime(cm) {\n var options = cm.state.info.options;\n return options && options.hoverTime || 500;\n }\n\n function onMouseOver(cm, e) {\n var state = cm.state.info;\n var target = e.target || e.srcElement;\n\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n if (target.nodeName !== 'SPAN' || state.hoverTimeout !== undefined) {\n return;\n }\n\n var box = target.getBoundingClientRect();\n\n var onMouseMove = function () {\n clearTimeout(state.hoverTimeout);\n state.hoverTimeout = setTimeout(onHover, hoverTime);\n };\n\n var onMouseOut = function () {\n codemirror_1.default.off(document, 'mousemove', onMouseMove);\n codemirror_1.default.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n clearTimeout(state.hoverTimeout);\n state.hoverTimeout = undefined;\n };\n\n var onHover = function () {\n codemirror_1.default.off(document, 'mousemove', onMouseMove);\n codemirror_1.default.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n state.hoverTimeout = undefined;\n onMouseHover(cm, box);\n };\n\n var hoverTime = getHoverTime(cm);\n state.hoverTimeout = setTimeout(onHover, hoverTime);\n codemirror_1.default.on(document, 'mousemove', onMouseMove);\n codemirror_1.default.on(cm.getWrapperElement(), 'mouseout', onMouseOut);\n }\n\n function onMouseHover(cm, box) {\n var pos = cm.coordsChar({\n left: (box.left + box.right) / 2,\n top: (box.top + box.bottom) / 2\n });\n var state = cm.state.info;\n var options = state.options;\n var render = options.render || cm.getHelper(pos, 'info');\n\n if (render) {\n var token = cm.getTokenAt(pos, true);\n\n if (token) {\n var info = render(token, options, cm, pos);\n\n if (info) {\n showPopup(cm, box, info);\n }\n }\n }\n }\n\n function showPopup(cm, box, info) {\n var popup = document.createElement('div');\n popup.className = 'CodeMirror-info';\n popup.appendChild(info);\n document.body.appendChild(popup);\n var popupBox = popup.getBoundingClientRect();\n var popupStyle = window.getComputedStyle(popup);\n var popupWidth = popupBox.right - popupBox.left + parseFloat(popupStyle.marginLeft) + parseFloat(popupStyle.marginRight);\n var popupHeight = popupBox.bottom - popupBox.top + parseFloat(popupStyle.marginTop) + parseFloat(popupStyle.marginBottom);\n var topPos = box.bottom;\n\n if (popupHeight > window.innerHeight - box.bottom - 15 && box.top > window.innerHeight - box.bottom) {\n topPos = box.top - popupHeight;\n }\n\n if (topPos < 0) {\n topPos = box.bottom;\n }\n\n var leftPos = Math.max(0, window.innerWidth - popupWidth - 15);\n\n if (leftPos > box.left) {\n leftPos = box.left;\n }\n\n popup.style.opacity = '1';\n popup.style.top = topPos + 'px';\n popup.style.left = leftPos + 'px';\n var popupTimeout;\n\n var onMouseOverPopup = function () {\n clearTimeout(popupTimeout);\n };\n\n var onMouseOut = function () {\n clearTimeout(popupTimeout);\n popupTimeout = setTimeout(hidePopup, 200);\n };\n\n var hidePopup = function () {\n codemirror_1.default.off(popup, 'mouseover', onMouseOverPopup);\n codemirror_1.default.off(popup, 'mouseout', onMouseOut);\n codemirror_1.default.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n\n if (popup.style.opacity) {\n popup.style.opacity = '0';\n setTimeout(function () {\n if (popup.parentNode) {\n popup.parentNode.removeChild(popup);\n }\n }, 600);\n } else if (popup.parentNode) {\n popup.parentNode.removeChild(popup);\n }\n };\n\n codemirror_1.default.on(popup, 'mouseover', onMouseOverPopup);\n codemirror_1.default.on(popup, 'mouseout', onMouseOut);\n codemirror_1.default.on(cm.getWrapperElement(), 'mouseout', onMouseOut);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29kZW1pcnJvci1ncmFwaHFsL3V0aWxzL2luZm8tYWRkb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uLi9zcmMvdXRpbHMvaW5mby1hZGRvbi50cz85NTJkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvZGVtaXJyb3JfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiY29kZW1pcnJvclwiKSk7XG5jb2RlbWlycm9yXzEuZGVmYXVsdC5kZWZpbmVPcHRpb24oJ2luZm8nLCBmYWxzZSwgZnVuY3Rpb24gKGNtLCBvcHRpb25zLCBvbGQpIHtcbiAgICBpZiAob2xkICYmIG9sZCAhPT0gY29kZW1pcnJvcl8xLmRlZmF1bHQuSW5pdCkge1xuICAgICAgICB2YXIgb2xkT25Nb3VzZU92ZXIgPSBjbS5zdGF0ZS5pbmZvLm9uTW91c2VPdmVyO1xuICAgICAgICBjb2RlbWlycm9yXzEuZGVmYXVsdC5vZmYoY20uZ2V0V3JhcHBlckVsZW1lbnQoKSwgJ21vdXNlb3ZlcicsIG9sZE9uTW91c2VPdmVyKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGNtLnN0YXRlLmluZm8uaG92ZXJUaW1lb3V0KTtcbiAgICAgICAgZGVsZXRlIGNtLnN0YXRlLmluZm87XG4gICAgfVxuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IChjbS5zdGF0ZS5pbmZvID0gY3JlYXRlU3RhdGUob3B0aW9ucykpO1xuICAgICAgICBzdGF0ZS5vbk1vdXNlT3ZlciA9IG9uTW91c2VPdmVyLmJpbmQobnVsbCwgY20pO1xuICAgICAgICBjb2RlbWlycm9yXzEuZGVmYXVsdC5vbihjbS5nZXRXcmFwcGVyRWxlbWVudCgpLCAnbW91c2VvdmVyJywgc3RhdGUub25Nb3VzZU92ZXIpO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gY3JlYXRlU3RhdGUob3B0aW9ucykge1xuICAgIHJldHVybiB7XG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnMgaW5zdGFuY2VvZiBGdW5jdGlvblxuICAgICAgICAgICAgPyB7IHJlbmRlcjogb3B0aW9ucyB9XG4gICAgICAgICAgICA6IG9wdGlvbnMgPT09IHRydWVcbiAgICAgICAgICAgICAgICA/IHt9XG4gICAgICAgICAgICAgICAgOiBvcHRpb25zLFxuICAgIH07XG59XG5mdW5jdGlvbiBnZXRIb3ZlclRpbWUoY20pIHtcbiAgICB2YXIgb3B0aW9ucyA9IGNtLnN0YXRlLmluZm8ub3B0aW9ucztcbiAgICByZXR1cm4gKG9wdGlvbnMgJiYgb3B0aW9ucy5ob3ZlclRpbWUpIHx8IDUwMDtcbn1cbmZ1bmN0aW9uIG9uTW91c2VPdmVyKGNtLCBlKSB7XG4gICAgdmFyIHN0YXRlID0gY20uc3RhdGUuaW5mbztcbiAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQgfHwgZS5zcmNFbGVtZW50O1xuICAgIGlmICghKHRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0YXJnZXQubm9kZU5hbWUgIT09ICdTUEFOJyB8fCBzdGF0ZS5ob3ZlclRpbWVvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBib3ggPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdmFyIG9uTW91c2VNb3ZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoc3RhdGUuaG92ZXJUaW1lb3V0KTtcbiAgICAgICAgc3RhdGUuaG92ZXJUaW1lb3V0ID0gc2V0VGltZW91dChvbkhvdmVyLCBob3ZlclRpbWUpO1xuICAgIH07XG4gICAgdmFyIG9uTW91c2VPdXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvZGVtaXJyb3JfMS5kZWZhdWx0Lm9mZihkb2N1bWVudCwgJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcbiAgICAgICAgY29kZW1pcnJvcl8xLmRlZmF1bHQub2ZmKGNtLmdldFdyYXBwZXJFbGVtZW50KCksICdtb3VzZW91dCcsIG9uTW91c2VPdXQpO1xuICAgICAgICBjbGVhclRpbWVvdXQoc3RhdGUuaG92ZXJUaW1lb3V0KTtcbiAgICAgICAgc3RhdGUuaG92ZXJUaW1lb3V0ID0gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgdmFyIG9uSG92ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvZGVtaXJyb3JfMS5kZWZhdWx0Lm9mZihkb2N1bWVudCwgJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcbiAgICAgICAgY29kZW1pcnJvcl8xLmRlZmF1bHQub2ZmKGNtLmdldFdyYXBwZXJFbGVtZW50KCksICdtb3VzZW91dCcsIG9uTW91c2VPdXQpO1xuICAgICAgICBzdGF0ZS5ob3ZlclRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIG9uTW91c2VIb3ZlcihjbSwgYm94KTtcbiAgICB9O1xuICAgIHZhciBob3ZlclRpbWUgPSBnZXRIb3ZlclRpbWUoY20pO1xuICAgIHN0YXRlLmhvdmVyVGltZW91dCA9IHNldFRpbWVvdXQob25Ib3ZlciwgaG92ZXJUaW1lKTtcbiAgICBjb2RlbWlycm9yXzEuZGVmYXVsdC5vbihkb2N1bWVudCwgJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcbiAgICBjb2RlbWlycm9yXzEuZGVmYXVsdC5vbihjbS5nZXRXcmFwcGVyRWxlbWVudCgpLCAnbW91c2VvdXQnLCBvbk1vdXNlT3V0KTtcbn1cbmZ1bmN0aW9uIG9uTW91c2VIb3ZlcihjbSwgYm94KSB7XG4gICAgdmFyIHBvcyA9IGNtLmNvb3Jkc0NoYXIoe1xuICAgICAgICBsZWZ0OiAoYm94LmxlZnQgKyBib3gucmlnaHQpIC8gMixcbiAgICAgICAgdG9wOiAoYm94LnRvcCArIGJveC5ib3R0b20pIC8gMixcbiAgICB9KTtcbiAgICB2YXIgc3RhdGUgPSBjbS5zdGF0ZS5pbmZvO1xuICAgIHZhciBvcHRpb25zID0gc3RhdGUub3B0aW9ucztcbiAgICB2YXIgcmVuZGVyID0gb3B0aW9ucy5yZW5kZXIgfHwgY20uZ2V0SGVscGVyKHBvcywgJ2luZm8nKTtcbiAgICBpZiAocmVuZGVyKSB7XG4gICAgICAgIHZhciB0b2tlbiA9IGNtLmdldFRva2VuQXQocG9zLCB0cnVlKTtcbiAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICB2YXIgaW5mbyA9IHJlbmRlcih0b2tlbiwgb3B0aW9ucywgY20sIHBvcyk7XG4gICAgICAgICAgICBpZiAoaW5mbykge1xuICAgICAgICAgICAgICAgIHNob3dQb3B1cChjbSwgYm94LCBpbmZvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHNob3dQb3B1cChjbSwgYm94LCBpbmZvKSB7XG4gICAgdmFyIHBvcHVwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgcG9wdXAuY2xhc3NOYW1lID0gJ0NvZGVNaXJyb3ItaW5mbyc7XG4gICAgcG9wdXAuYXBwZW5kQ2hpbGQoaW5mbyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwb3B1cCk7XG4gICAgdmFyIHBvcHVwQm94ID0gcG9wdXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdmFyIHBvcHVwU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShwb3B1cCk7XG4gICAgdmFyIHBvcHVwV2lkdGggPSBwb3B1cEJveC5yaWdodCAtXG4gICAgICAgIHBvcHVwQm94LmxlZnQgK1xuICAgICAgICBwYXJzZUZsb2F0KHBvcHVwU3R5bGUubWFyZ2luTGVmdCkgK1xuICAgICAgICBwYXJzZUZsb2F0KHBvcHVwU3R5bGUubWFyZ2luUmlnaHQpO1xuICAgIHZhciBwb3B1cEhlaWdodCA9IHBvcHVwQm94LmJvdHRvbSAtXG4gICAgICAgIHBvcHVwQm94LnRvcCArXG4gICAgICAgIHBhcnNlRmxvYXQocG9wdXBTdHlsZS5tYXJnaW5Ub3ApICtcbiAgICAgICAgcGFyc2VGbG9hdChwb3B1cFN0eWxlLm1hcmdpbkJvdHRvbSk7XG4gICAgdmFyIHRvcFBvcyA9IGJveC5ib3R0b207XG4gICAgaWYgKHBvcHVwSGVpZ2h0ID4gd2luZG93LmlubmVySGVpZ2h0IC0gYm94LmJvdHRvbSAtIDE1ICYmXG4gICAgICAgIGJveC50b3AgPiB3aW5kb3cuaW5uZXJIZWlnaHQgLSBib3guYm90dG9tKSB7XG4gICAgICAgIHRvcFBvcyA9IGJveC50b3AgLSBwb3B1cEhlaWdodDtcbiAgICB9XG4gICAgaWYgKHRvcFBvcyA8IDApIHtcbiAgICAgICAgdG9wUG9zID0gYm94LmJvdHRvbTtcbiAgICB9XG4gICAgdmFyIGxlZnRQb3MgPSBNYXRoLm1heCgwLCB3aW5kb3cuaW5uZXJXaWR0aCAtIHBvcHVwV2lkdGggLSAxNSk7XG4gICAgaWYgKGxlZnRQb3MgPiBib3gubGVmdCkge1xuICAgICAgICBsZWZ0UG9zID0gYm94LmxlZnQ7XG4gICAgfVxuICAgIHBvcHVwLnN0eWxlLm9wYWNpdHkgPSAnMSc7XG4gICAgcG9wdXAuc3R5bGUudG9wID0gdG9wUG9zICsgJ3B4JztcbiAgICBwb3B1cC5zdHlsZS5sZWZ0ID0gbGVmdFBvcyArICdweCc7XG4gICAgdmFyIHBvcHVwVGltZW91dDtcbiAgICB2YXIgb25Nb3VzZU92ZXJQb3B1cCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHBvcHVwVGltZW91dCk7XG4gICAgfTtcbiAgICB2YXIgb25Nb3VzZU91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHBvcHVwVGltZW91dCk7XG4gICAgICAgIHBvcHVwVGltZW91dCA9IHNldFRpbWVvdXQoaGlkZVBvcHVwLCAyMDApO1xuICAgIH07XG4gICAgdmFyIGhpZGVQb3B1cCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29kZW1pcnJvcl8xLmRlZmF1bHQub2ZmKHBvcHVwLCAnbW91c2VvdmVyJywgb25Nb3VzZU92ZXJQb3B1cCk7XG4gICAgICAgIGNvZGVtaXJyb3JfMS5kZWZhdWx0Lm9mZihwb3B1cCwgJ21vdXNlb3V0Jywgb25Nb3VzZU91dCk7XG4gICAgICAgIGNvZGVtaXJyb3JfMS5kZWZhdWx0Lm9mZihjbS5nZXRXcmFwcGVyRWxlbWVudCgpLCAnbW91c2VvdXQnLCBvbk1vdXNlT3V0KTtcbiAgICAgICAgaWYgKHBvcHVwLnN0eWxlLm9wYWNpdHkpIHtcbiAgICAgICAgICAgIHBvcHVwLnN0eWxlLm9wYWNpdHkgPSAnMCc7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAocG9wdXAucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBwb3B1cC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHBvcHVwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBvcHVwLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIHBvcHVwLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocG9wdXApO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjb2RlbWlycm9yXzEuZGVmYXVsdC5vbihwb3B1cCwgJ21vdXNlb3ZlcicsIG9uTW91c2VPdmVyUG9wdXApO1xuICAgIGNvZGVtaXJyb3JfMS5kZWZhdWx0Lm9uKHBvcHVwLCAnbW91c2VvdXQnLCBvbk1vdXNlT3V0KTtcbiAgICBjb2RlbWlycm9yXzEuZGVmYXVsdC5vbihjbS5nZXRXcmFwcGVyRWxlbWVudCgpLCAnbW91c2VvdXQnLCBvbk1vdXNlT3V0KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZm8tYWRkb24uanMubWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFFQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBSEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUtBO0FBTUE7QUFDQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../codemirror-graphql/utils/info-addon.js\n");
2770
2771/***/ }),
2772
2773/***/ "../../codemirror-graphql/utils/jsonParse.js":
2774/*!******************************************************************************************!*\
2775 !*** /home/runner/work/graphiql/graphiql/packages/codemirror-graphql/utils/jsonParse.js ***!
2776 \******************************************************************************************/
2777/*! no static exports found */
2778/***/ (function(module, exports, __webpack_require__) {
2779
2780eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function jsonParse(str) {\n string = str;\n strLen = str.length;\n start = end = lastEnd = -1;\n ch();\n lex();\n var ast = parseObj();\n expect('EOF');\n return ast;\n }\n\n exports.default = jsonParse;\n var string;\n var strLen;\n var start;\n var end;\n var lastEnd;\n var code;\n var kind;\n\n function parseObj() {\n var nodeStart = start;\n var members = [];\n expect('{');\n\n if (!skip('}')) {\n do {\n members.push(parseMember());\n } while (skip(','));\n\n expect('}');\n }\n\n return {\n kind: 'Object',\n start: nodeStart,\n end: lastEnd,\n members: members\n };\n }\n\n function parseMember() {\n var nodeStart = start;\n var key = kind === 'String' ? curToken() : null;\n expect('String');\n expect(':');\n var value = parseVal();\n return {\n kind: 'Member',\n start: nodeStart,\n end: lastEnd,\n key: key,\n value: value\n };\n }\n\n function parseArr() {\n var nodeStart = start;\n var values = [];\n expect('[');\n\n if (!skip(']')) {\n do {\n values.push(parseVal());\n } while (skip(','));\n\n expect(']');\n }\n\n return {\n kind: 'Array',\n start: nodeStart,\n end: lastEnd,\n values: values\n };\n }\n\n function parseVal() {\n switch (kind) {\n case '[':\n return parseArr();\n\n case '{':\n return parseObj();\n\n case 'String':\n case 'Number':\n case 'Boolean':\n case 'Null':\n var token = curToken();\n lex();\n return token;\n }\n\n expect('Value');\n }\n\n function curToken() {\n return {\n kind: kind,\n start: start,\n end: end,\n value: JSON.parse(string.slice(start, end))\n };\n }\n\n function expect(str) {\n if (kind === str) {\n lex();\n return;\n }\n\n var found;\n\n if (kind === 'EOF') {\n found = '[end of file]';\n } else if (end - start > 1) {\n found = '`' + string.slice(start, end) + '`';\n } else {\n var match = string.slice(start).match(/^.+?\\b/);\n found = '`' + (match ? match[0] : string[start]) + '`';\n }\n\n throw syntaxError(\"Expected \" + str + \" but found \" + found + \".\");\n }\n\n function syntaxError(message) {\n return {\n message: message,\n start: start,\n end: end\n };\n }\n\n function skip(k) {\n if (kind === k) {\n lex();\n return true;\n }\n }\n\n function ch() {\n if (end < strLen) {\n end++;\n code = end === strLen ? 0 : string.charCodeAt(end);\n }\n\n return code;\n }\n\n function lex() {\n lastEnd = end;\n\n while (code === 9 || code === 10 || code === 13 || code === 32) {\n ch();\n }\n\n if (code === 0) {\n kind = 'EOF';\n return;\n }\n\n start = end;\n\n switch (code) {\n case 34:\n kind = 'String';\n return readString();\n\n case 45:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n kind = 'Number';\n return readNumber();\n\n case 102:\n if (string.slice(start, start + 5) !== 'false') {\n break;\n }\n\n end += 4;\n ch();\n kind = 'Boolean';\n return;\n\n case 110:\n if (string.slice(start, start + 4) !== 'null') {\n break;\n }\n\n end += 3;\n ch();\n kind = 'Null';\n return;\n\n case 116:\n if (string.slice(start, start + 4) !== 'true') {\n break;\n }\n\n end += 3;\n ch();\n kind = 'Boolean';\n return;\n }\n\n kind = string[start];\n ch();\n }\n\n function readString() {\n ch();\n\n while (code !== 34 && code > 31) {\n if (code === 92) {\n code = ch();\n\n switch (code) {\n case 34:\n case 47:\n case 92:\n case 98:\n case 102:\n case 110:\n case 114:\n case 116:\n ch();\n break;\n\n case 117:\n ch();\n readHex();\n readHex();\n readHex();\n readHex();\n break;\n\n default:\n throw syntaxError('Bad character escape sequence.');\n }\n } else if (end === strLen) {\n throw syntaxError('Unterminated string.');\n } else {\n ch();\n }\n }\n\n if (code === 34) {\n ch();\n return;\n }\n\n throw syntaxError('Unterminated string.');\n }\n\n function readHex() {\n if (code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102) {\n return ch();\n }\n\n throw syntaxError('Expected hexadecimal digit.');\n }\n\n function readNumber() {\n if (code === 45) {\n ch();\n }\n\n if (code === 48) {\n ch();\n } else {\n readDigits();\n }\n\n if (code === 46) {\n ch();\n readDigits();\n }\n\n if (code === 69 || code === 101) {\n code = ch();\n\n if (code === 43 || code === 45) {\n ch();\n }\n\n readDigits();\n }\n }\n\n function readDigits() {\n if (code < 48 || code > 57) {\n throw syntaxError('Expected decimal digit.');\n }\n\n do {\n ch();\n } while (code >= 48 && code <= 57);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29kZW1pcnJvci1ncmFwaHFsL3V0aWxzL2pzb25QYXJzZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uL3NyYy91dGlscy9qc29uUGFyc2UudHM/NjFhYiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmZ1bmN0aW9uIGpzb25QYXJzZShzdHIpIHtcbiAgICBzdHJpbmcgPSBzdHI7XG4gICAgc3RyTGVuID0gc3RyLmxlbmd0aDtcbiAgICBzdGFydCA9IGVuZCA9IGxhc3RFbmQgPSAtMTtcbiAgICBjaCgpO1xuICAgIGxleCgpO1xuICAgIHZhciBhc3QgPSBwYXJzZU9iaigpO1xuICAgIGV4cGVjdCgnRU9GJyk7XG4gICAgcmV0dXJuIGFzdDtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IGpzb25QYXJzZTtcbnZhciBzdHJpbmc7XG52YXIgc3RyTGVuO1xudmFyIHN0YXJ0O1xudmFyIGVuZDtcbnZhciBsYXN0RW5kO1xudmFyIGNvZGU7XG52YXIga2luZDtcbmZ1bmN0aW9uIHBhcnNlT2JqKCkge1xuICAgIHZhciBub2RlU3RhcnQgPSBzdGFydDtcbiAgICB2YXIgbWVtYmVycyA9IFtdO1xuICAgIGV4cGVjdCgneycpO1xuICAgIGlmICghc2tpcCgnfScpKSB7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIG1lbWJlcnMucHVzaChwYXJzZU1lbWJlcigpKTtcbiAgICAgICAgfSB3aGlsZSAoc2tpcCgnLCcpKTtcbiAgICAgICAgZXhwZWN0KCd9Jyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6ICdPYmplY3QnLFxuICAgICAgICBzdGFydDogbm9kZVN0YXJ0LFxuICAgICAgICBlbmQ6IGxhc3RFbmQsXG4gICAgICAgIG1lbWJlcnM6IG1lbWJlcnMsXG4gICAgfTtcbn1cbmZ1bmN0aW9uIHBhcnNlTWVtYmVyKCkge1xuICAgIHZhciBub2RlU3RhcnQgPSBzdGFydDtcbiAgICB2YXIga2V5ID0ga2luZCA9PT0gJ1N0cmluZycgPyBjdXJUb2tlbigpIDogbnVsbDtcbiAgICBleHBlY3QoJ1N0cmluZycpO1xuICAgIGV4cGVjdCgnOicpO1xuICAgIHZhciB2YWx1ZSA9IHBhcnNlVmFsKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAga2luZDogJ01lbWJlcicsXG4gICAgICAgIHN0YXJ0OiBub2RlU3RhcnQsXG4gICAgICAgIGVuZDogbGFzdEVuZCxcbiAgICAgICAga2V5OiBrZXksXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICB9O1xufVxuZnVuY3Rpb24gcGFyc2VBcnIoKSB7XG4gICAgdmFyIG5vZGVTdGFydCA9IHN0YXJ0O1xuICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICBleHBlY3QoJ1snKTtcbiAgICBpZiAoIXNraXAoJ10nKSkge1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaChwYXJzZVZhbCgpKTtcbiAgICAgICAgfSB3aGlsZSAoc2tpcCgnLCcpKTtcbiAgICAgICAgZXhwZWN0KCddJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6ICdBcnJheScsXG4gICAgICAgIHN0YXJ0OiBub2RlU3RhcnQsXG4gICAgICAgIGVuZDogbGFzdEVuZCxcbiAgICAgICAgdmFsdWVzOiB2YWx1ZXMsXG4gICAgfTtcbn1cbmZ1bmN0aW9uIHBhcnNlVmFsKCkge1xuICAgIHN3aXRjaCAoa2luZCkge1xuICAgICAgICBjYXNlICdbJzpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUFycigpO1xuICAgICAgICBjYXNlICd7JzpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZU9iaigpO1xuICAgICAgICBjYXNlICdTdHJpbmcnOlxuICAgICAgICBjYXNlICdOdW1iZXInOlxuICAgICAgICBjYXNlICdCb29sZWFuJzpcbiAgICAgICAgY2FzZSAnTnVsbCc6XG4gICAgICAgICAgICB2YXIgdG9rZW4gPSBjdXJUb2tlbigpO1xuICAgICAgICAgICAgbGV4KCk7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgfVxuICAgIGV4cGVjdCgnVmFsdWUnKTtcbn1cbmZ1bmN0aW9uIGN1clRva2VuKCkge1xuICAgIHJldHVybiB7IGtpbmQ6IGtpbmQsIHN0YXJ0OiBzdGFydCwgZW5kOiBlbmQsIHZhbHVlOiBKU09OLnBhcnNlKHN0cmluZy5zbGljZShzdGFydCwgZW5kKSkgfTtcbn1cbmZ1bmN0aW9uIGV4cGVjdChzdHIpIHtcbiAgICBpZiAoa2luZCA9PT0gc3RyKSB7XG4gICAgICAgIGxleCgpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBmb3VuZDtcbiAgICBpZiAoa2luZCA9PT0gJ0VPRicpIHtcbiAgICAgICAgZm91bmQgPSAnW2VuZCBvZiBmaWxlXSc7XG4gICAgfVxuICAgIGVsc2UgaWYgKGVuZCAtIHN0YXJ0ID4gMSkge1xuICAgICAgICBmb3VuZCA9ICdgJyArIHN0cmluZy5zbGljZShzdGFydCwgZW5kKSArICdgJztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBtYXRjaCA9IHN0cmluZy5zbGljZShzdGFydCkubWF0Y2goL14uKz9cXGIvKTtcbiAgICAgICAgZm91bmQgPSAnYCcgKyAobWF0Y2ggPyBtYXRjaFswXSA6IHN0cmluZ1tzdGFydF0pICsgJ2AnO1xuICAgIH1cbiAgICB0aHJvdyBzeW50YXhFcnJvcihcIkV4cGVjdGVkIFwiICsgc3RyICsgXCIgYnV0IGZvdW5kIFwiICsgZm91bmQgKyBcIi5cIik7XG59XG5mdW5jdGlvbiBzeW50YXhFcnJvcihtZXNzYWdlKSB7XG4gICAgcmV0dXJuIHsgbWVzc2FnZTogbWVzc2FnZSwgc3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZCB9O1xufVxuZnVuY3Rpb24gc2tpcChrKSB7XG4gICAgaWYgKGtpbmQgPT09IGspIHtcbiAgICAgICAgbGV4KCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNoKCkge1xuICAgIGlmIChlbmQgPCBzdHJMZW4pIHtcbiAgICAgICAgZW5kKys7XG4gICAgICAgIGNvZGUgPSBlbmQgPT09IHN0ckxlbiA/IDAgOiBzdHJpbmcuY2hhckNvZGVBdChlbmQpO1xuICAgIH1cbiAgICByZXR1cm4gY29kZTtcbn1cbmZ1bmN0aW9uIGxleCgpIHtcbiAgICBsYXN0RW5kID0gZW5kO1xuICAgIHdoaWxlIChjb2RlID09PSA5IHx8IGNvZGUgPT09IDEwIHx8IGNvZGUgPT09IDEzIHx8IGNvZGUgPT09IDMyKSB7XG4gICAgICAgIGNoKCk7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgIGtpbmQgPSAnRU9GJztcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdGFydCA9IGVuZDtcbiAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICAgIGtpbmQgPSAnU3RyaW5nJztcbiAgICAgICAgICAgIHJldHVybiByZWFkU3RyaW5nKCk7XG4gICAgICAgIGNhc2UgNDU6XG4gICAgICAgIGNhc2UgNDg6XG4gICAgICAgIGNhc2UgNDk6XG4gICAgICAgIGNhc2UgNTA6XG4gICAgICAgIGNhc2UgNTE6XG4gICAgICAgIGNhc2UgNTI6XG4gICAgICAgIGNhc2UgNTM6XG4gICAgICAgIGNhc2UgNTQ6XG4gICAgICAgIGNhc2UgNTU6XG4gICAgICAgIGNhc2UgNTY6XG4gICAgICAgIGNhc2UgNTc6XG4gICAgICAgICAgICBraW5kID0gJ051bWJlcic7XG4gICAgICAgICAgICByZXR1cm4gcmVhZE51bWJlcigpO1xuICAgICAgICBjYXNlIDEwMjpcbiAgICAgICAgICAgIGlmIChzdHJpbmcuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgNSkgIT09ICdmYWxzZScpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVuZCArPSA0O1xuICAgICAgICAgICAgY2goKTtcbiAgICAgICAgICAgIGtpbmQgPSAnQm9vbGVhbic7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgMTEwOlxuICAgICAgICAgICAgaWYgKHN0cmluZy5zbGljZShzdGFydCwgc3RhcnQgKyA0KSAhPT0gJ251bGwnKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbmQgKz0gMztcbiAgICAgICAgICAgIGNoKCk7XG4gICAgICAgICAgICBraW5kID0gJ051bGwnO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjYXNlIDExNjpcbiAgICAgICAgICAgIGlmIChzdHJpbmcuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgNCkgIT09ICd0cnVlJykge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW5kICs9IDM7XG4gICAgICAgICAgICBjaCgpO1xuICAgICAgICAgICAga2luZCA9ICdCb29sZWFuJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICB9XG4gICAga2luZCA9IHN0cmluZ1tzdGFydF07XG4gICAgY2goKTtcbn1cbmZ1bmN0aW9uIHJlYWRTdHJpbmcoKSB7XG4gICAgY2goKTtcbiAgICB3aGlsZSAoY29kZSAhPT0gMzQgJiYgY29kZSA+IDMxKSB7XG4gICAgICAgIGlmIChjb2RlID09PSA5Mikge1xuICAgICAgICAgICAgY29kZSA9IGNoKCk7XG4gICAgICAgICAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDM0OlxuICAgICAgICAgICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgICAgICAgY2FzZSA5MjpcbiAgICAgICAgICAgICAgICBjYXNlIDk4OlxuICAgICAgICAgICAgICAgIGNhc2UgMTAyOlxuICAgICAgICAgICAgICAgIGNhc2UgMTEwOlxuICAgICAgICAgICAgICAgIGNhc2UgMTE0OlxuICAgICAgICAgICAgICAgIGNhc2UgMTE2OlxuICAgICAgICAgICAgICAgICAgICBjaCgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDExNzpcbiAgICAgICAgICAgICAgICAgICAgY2goKTtcbiAgICAgICAgICAgICAgICAgICAgcmVhZEhleCgpO1xuICAgICAgICAgICAgICAgICAgICByZWFkSGV4KCk7XG4gICAgICAgICAgICAgICAgICAgIHJlYWRIZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVhZEhleCgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBzeW50YXhFcnJvcignQmFkIGNoYXJhY3RlciBlc2NhcGUgc2VxdWVuY2UuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZW5kID09PSBzdHJMZW4pIHtcbiAgICAgICAgICAgIHRocm93IHN5bnRheEVycm9yKCdVbnRlcm1pbmF0ZWQgc3RyaW5nLicpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2goKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gMzQpIHtcbiAgICAgICAgY2goKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aHJvdyBzeW50YXhFcnJvcignVW50ZXJtaW5hdGVkIHN0cmluZy4nKTtcbn1cbmZ1bmN0aW9uIHJlYWRIZXgoKSB7XG4gICAgaWYgKChjb2RlID49IDQ4ICYmIGNvZGUgPD0gNTcpIHx8XG4gICAgICAgIChjb2RlID49IDY1ICYmIGNvZGUgPD0gNzApIHx8XG4gICAgICAgIChjb2RlID49IDk3ICYmIGNvZGUgPD0gMTAyKSkge1xuICAgICAgICByZXR1cm4gY2goKTtcbiAgICB9XG4gICAgdGhyb3cgc3ludGF4RXJyb3IoJ0V4cGVjdGVkIGhleGFkZWNpbWFsIGRpZ2l0LicpO1xufVxuZnVuY3Rpb24gcmVhZE51bWJlcigpIHtcbiAgICBpZiAoY29kZSA9PT0gNDUpIHtcbiAgICAgICAgY2goKTtcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDQ4KSB7XG4gICAgICAgIGNoKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZWFkRGlnaXRzKCk7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSA0Nikge1xuICAgICAgICBjaCgpO1xuICAgICAgICByZWFkRGlnaXRzKCk7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSA2OSB8fCBjb2RlID09PSAxMDEpIHtcbiAgICAgICAgY29kZSA9IGNoKCk7XG4gICAgICAgIGlmIChjb2RlID09PSA0MyB8fCBjb2RlID09PSA0NSkge1xuICAgICAgICAgICAgY2goKTtcbiAgICAgICAgfVxuICAgICAgICByZWFkRGlnaXRzKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gcmVhZERpZ2l0cygpIHtcbiAgICBpZiAoY29kZSA8IDQ4IHx8IGNvZGUgPiA1Nykge1xuICAgICAgICB0aHJvdyBzeW50YXhFcnJvcignRXhwZWN0ZWQgZGVjaW1hbCBkaWdpdC4nKTtcbiAgICB9XG4gICAgZG8ge1xuICAgICAgICBjaCgpO1xuICAgIH0gd2hpbGUgKGNvZGUgPj0gNDggJiYgY29kZSA8PSA1Nyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1qc29uUGFyc2UuanMubWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQXFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVkE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBMkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVhBO0FBQ0E7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQWhEQTtBQUNBO0FBa0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQW5CQTtBQXFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../codemirror-graphql/utils/jsonParse.js\n");
2781
2782/***/ }),
2783
2784/***/ "../../codemirror-graphql/utils/jump-addon.js":
2785/*!*******************************************************************************************!*\
2786 !*** /home/runner/work/graphiql/graphiql/packages/codemirror-graphql/utils/jump-addon.js ***!
2787 \*******************************************************************************************/
2788/*! no static exports found */
2789/***/ (function(module, exports, __webpack_require__) {
2790
2791eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n var __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var codemirror_1 = __importDefault(__webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n\n codemirror_1.default.defineOption('jump', false, function (cm, options, old) {\n if (old && old !== codemirror_1.default.Init) {\n var oldOnMouseOver = cm.state.jump.onMouseOver;\n codemirror_1.default.off(cm.getWrapperElement(), 'mouseover', oldOnMouseOver);\n var oldOnMouseOut = cm.state.jump.onMouseOut;\n codemirror_1.default.off(cm.getWrapperElement(), 'mouseout', oldOnMouseOut);\n codemirror_1.default.off(document, 'keydown', cm.state.jump.onKeyDown);\n delete cm.state.jump;\n }\n\n if (options) {\n var state = cm.state.jump = {\n options: options,\n onMouseOver: onMouseOver.bind(null, cm),\n onMouseOut: onMouseOut.bind(null, cm),\n onKeyDown: onKeyDown.bind(null, cm)\n };\n codemirror_1.default.on(cm.getWrapperElement(), 'mouseover', state.onMouseOver);\n codemirror_1.default.on(cm.getWrapperElement(), 'mouseout', state.onMouseOut);\n codemirror_1.default.on(document, 'keydown', state.onKeyDown);\n }\n });\n\n function onMouseOver(cm, event) {\n var target = event.target || event.srcElement;\n\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n if ((target === null || target === void 0 ? void 0 : target.nodeName) !== 'SPAN') {\n return;\n }\n\n var box = target.getBoundingClientRect();\n var cursor = {\n left: (box.left + box.right) / 2,\n top: (box.top + box.bottom) / 2\n };\n cm.state.jump.cursor = cursor;\n\n if (cm.state.jump.isHoldingModifier) {\n enableJumpMode(cm);\n }\n }\n\n function onMouseOut(cm) {\n if (!cm.state.jump.isHoldingModifier && cm.state.jump.cursor) {\n cm.state.jump.cursor = null;\n return;\n }\n\n if (cm.state.jump.isHoldingModifier && cm.state.jump.marker) {\n disableJumpMode(cm);\n }\n }\n\n function onKeyDown(cm, event) {\n if (cm.state.jump.isHoldingModifier || !isJumpModifier(event.key)) {\n return;\n }\n\n cm.state.jump.isHoldingModifier = true;\n\n if (cm.state.jump.cursor) {\n enableJumpMode(cm);\n }\n\n var onKeyUp = function (upEvent) {\n if (upEvent.code !== event.code) {\n return;\n }\n\n cm.state.jump.isHoldingModifier = false;\n\n if (cm.state.jump.marker) {\n disableJumpMode(cm);\n }\n\n codemirror_1.default.off(document, 'keyup', onKeyUp);\n codemirror_1.default.off(document, 'click', onClick);\n cm.off('mousedown', onMouseDown);\n };\n\n var onClick = function (clickEvent) {\n var destination = cm.state.jump.destination;\n\n if (destination) {\n cm.state.jump.options.onClick(destination, clickEvent);\n }\n };\n\n var onMouseDown = function (_, downEvent) {\n if (cm.state.jump.destination) {\n downEvent.codemirrorIgnore = true;\n }\n };\n\n codemirror_1.default.on(document, 'keyup', onKeyUp);\n codemirror_1.default.on(document, 'click', onClick);\n cm.on('mousedown', onMouseDown);\n }\n\n var isMac = typeof navigator !== 'undefined' && navigator && navigator.appVersion.indexOf('Mac') !== -1;\n\n function isJumpModifier(key) {\n return key === (isMac ? 'Meta' : 'Control');\n }\n\n function enableJumpMode(cm) {\n if (cm.state.jump.marker) {\n return;\n }\n\n var cursor = cm.state.jump.cursor;\n var pos = cm.coordsChar(cursor);\n var token = cm.getTokenAt(pos, true);\n var options = cm.state.jump.options;\n var getDestination = options.getDestination || cm.getHelper(pos, 'jump');\n\n if (getDestination) {\n var destination = getDestination(token, options, cm);\n\n if (destination) {\n var marker = cm.markText({\n line: pos.line,\n ch: token.start\n }, {\n line: pos.line,\n ch: token.end\n }, {\n className: 'CodeMirror-jump-token'\n });\n cm.state.jump.marker = marker;\n cm.state.jump.destination = destination;\n }\n }\n }\n\n function disableJumpMode(cm) {\n var marker = cm.state.jump.marker;\n cm.state.jump.marker = null;\n cm.state.jump.destination = null;\n marker.clear();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29kZW1pcnJvci1ncmFwaHFsL3V0aWxzL2p1bXAtYWRkb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uLi9zcmMvdXRpbHMvanVtcC1hZGRvbi50cz81YTVjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvZGVtaXJyb3JfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiY29kZW1pcnJvclwiKSk7XG5jb2RlbWlycm9yXzEuZGVmYXVsdC5kZWZpbmVPcHRpb24oJ2p1bXAnLCBmYWxzZSwgZnVuY3Rpb24gKGNtLCBvcHRpb25zLCBvbGQpIHtcbiAgICBpZiAob2xkICYmIG9sZCAhPT0gY29kZW1pcnJvcl8xLmRlZmF1bHQuSW5pdCkge1xuICAgICAgICB2YXIgb2xkT25Nb3VzZU92ZXIgPSBjbS5zdGF0ZS5qdW1wLm9uTW91c2VPdmVyO1xuICAgICAgICBjb2RlbWlycm9yXzEuZGVmYXVsdC5vZmYoY20uZ2V0V3JhcHBlckVsZW1lbnQoKSwgJ21vdXNlb3ZlcicsIG9sZE9uTW91c2VPdmVyKTtcbiAgICAgICAgdmFyIG9sZE9uTW91c2VPdXQgPSBjbS5zdGF0ZS5qdW1wLm9uTW91c2VPdXQ7XG4gICAgICAgIGNvZGVtaXJyb3JfMS5kZWZhdWx0Lm9mZihjbS5nZXRXcmFwcGVyRWxlbWVudCgpLCAnbW91c2VvdXQnLCBvbGRPbk1vdXNlT3V0KTtcbiAgICAgICAgY29kZW1pcnJvcl8xLmRlZmF1bHQub2ZmKGRvY3VtZW50LCAna2V5ZG93bicsIGNtLnN0YXRlLmp1bXAub25LZXlEb3duKTtcbiAgICAgICAgZGVsZXRlIGNtLnN0YXRlLmp1bXA7XG4gICAgfVxuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IChjbS5zdGF0ZS5qdW1wID0ge1xuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgICAgIG9uTW91c2VPdmVyOiBvbk1vdXNlT3Zlci5iaW5kKG51bGwsIGNtKSxcbiAgICAgICAgICAgIG9uTW91c2VPdXQ6IG9uTW91c2VPdXQuYmluZChudWxsLCBjbSksXG4gICAgICAgICAgICBvbktleURvd246IG9uS2V5RG93bi5iaW5kKG51bGwsIGNtKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvZGVtaXJyb3JfMS5kZWZhdWx0Lm9uKGNtLmdldFdyYXBwZXJFbGVtZW50KCksICdtb3VzZW92ZXInLCBzdGF0ZS5vbk1vdXNlT3Zlcik7XG4gICAgICAgIGNvZGVtaXJyb3JfMS5kZWZhdWx0Lm9uKGNtLmdldFdyYXBwZXJFbGVtZW50KCksICdtb3VzZW91dCcsIHN0YXRlLm9uTW91c2VPdXQpO1xuICAgICAgICBjb2RlbWlycm9yXzEuZGVmYXVsdC5vbihkb2N1bWVudCwgJ2tleWRvd24nLCBzdGF0ZS5vbktleURvd24pO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gb25Nb3VzZU92ZXIoY20sIGV2ZW50KSB7XG4gICAgdmFyIHRhcmdldCA9IGV2ZW50LnRhcmdldCB8fCBldmVudC5zcmNFbGVtZW50O1xuICAgIGlmICghKHRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICgodGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0Lm5vZGVOYW1lKSAhPT0gJ1NQQU4nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGJveCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB2YXIgY3Vyc29yID0ge1xuICAgICAgICBsZWZ0OiAoYm94LmxlZnQgKyBib3gucmlnaHQpIC8gMixcbiAgICAgICAgdG9wOiAoYm94LnRvcCArIGJveC5ib3R0b20pIC8gMixcbiAgICB9O1xuICAgIGNtLnN0YXRlLmp1bXAuY3Vyc29yID0gY3Vyc29yO1xuICAgIGlmIChjbS5zdGF0ZS5qdW1wLmlzSG9sZGluZ01vZGlmaWVyKSB7XG4gICAgICAgIGVuYWJsZUp1bXBNb2RlKGNtKTtcbiAgICB9XG59XG5mdW5jdGlvbiBvbk1vdXNlT3V0KGNtKSB7XG4gICAgaWYgKCFjbS5zdGF0ZS5qdW1wLmlzSG9sZGluZ01vZGlmaWVyICYmIGNtLnN0YXRlLmp1bXAuY3Vyc29yKSB7XG4gICAgICAgIGNtLnN0YXRlLmp1bXAuY3Vyc29yID0gbnVsbDtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY20uc3RhdGUuanVtcC5pc0hvbGRpbmdNb2RpZmllciAmJiBjbS5zdGF0ZS5qdW1wLm1hcmtlcikge1xuICAgICAgICBkaXNhYmxlSnVtcE1vZGUoY20pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG9uS2V5RG93bihjbSwgZXZlbnQpIHtcbiAgICBpZiAoY20uc3RhdGUuanVtcC5pc0hvbGRpbmdNb2RpZmllciB8fCAhaXNKdW1wTW9kaWZpZXIoZXZlbnQua2V5KSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNtLnN0YXRlLmp1bXAuaXNIb2xkaW5nTW9kaWZpZXIgPSB0cnVlO1xuICAgIGlmIChjbS5zdGF0ZS5qdW1wLmN1cnNvcikge1xuICAgICAgICBlbmFibGVKdW1wTW9kZShjbSk7XG4gICAgfVxuICAgIHZhciBvbktleVVwID0gZnVuY3Rpb24gKHVwRXZlbnQpIHtcbiAgICAgICAgaWYgKHVwRXZlbnQuY29kZSAhPT0gZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNtLnN0YXRlLmp1bXAuaXNIb2xkaW5nTW9kaWZpZXIgPSBmYWxzZTtcbiAgICAgICAgaWYgKGNtLnN0YXRlLmp1bXAubWFya2VyKSB7XG4gICAgICAgICAgICBkaXNhYmxlSnVtcE1vZGUoY20pO1xuICAgICAgICB9XG4gICAgICAgIGNvZGVtaXJyb3JfMS5kZWZhdWx0Lm9mZihkb2N1bWVudCwgJ2tleXVwJywgb25LZXlVcCk7XG4gICAgICAgIGNvZGVtaXJyb3JfMS5kZWZhdWx0Lm9mZihkb2N1bWVudCwgJ2NsaWNrJywgb25DbGljayk7XG4gICAgICAgIGNtLm9mZignbW91c2Vkb3duJywgb25Nb3VzZURvd24pO1xuICAgIH07XG4gICAgdmFyIG9uQ2xpY2sgPSBmdW5jdGlvbiAoY2xpY2tFdmVudCkge1xuICAgICAgICB2YXIgZGVzdGluYXRpb24gPSBjbS5zdGF0ZS5qdW1wLmRlc3RpbmF0aW9uO1xuICAgICAgICBpZiAoZGVzdGluYXRpb24pIHtcbiAgICAgICAgICAgIGNtLnN0YXRlLmp1bXAub3B0aW9ucy5vbkNsaWNrKGRlc3RpbmF0aW9uLCBjbGlja0V2ZW50KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdmFyIG9uTW91c2VEb3duID0gZnVuY3Rpb24gKF8sIGRvd25FdmVudCkge1xuICAgICAgICBpZiAoY20uc3RhdGUuanVtcC5kZXN0aW5hdGlvbikge1xuICAgICAgICAgICAgZG93bkV2ZW50LmNvZGVtaXJyb3JJZ25vcmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjb2RlbWlycm9yXzEuZGVmYXVsdC5vbihkb2N1bWVudCwgJ2tleXVwJywgb25LZXlVcCk7XG4gICAgY29kZW1pcnJvcl8xLmRlZmF1bHQub24oZG9jdW1lbnQsICdjbGljaycsIG9uQ2xpY2spO1xuICAgIGNtLm9uKCdtb3VzZWRvd24nLCBvbk1vdXNlRG93bik7XG59XG52YXIgaXNNYWMgPSB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIG5hdmlnYXRvciAmJlxuICAgIG5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoJ01hYycpICE9PSAtMTtcbmZ1bmN0aW9uIGlzSnVtcE1vZGlmaWVyKGtleSkge1xuICAgIHJldHVybiBrZXkgPT09IChpc01hYyA/ICdNZXRhJyA6ICdDb250cm9sJyk7XG59XG5mdW5jdGlvbiBlbmFibGVKdW1wTW9kZShjbSkge1xuICAgIGlmIChjbS5zdGF0ZS5qdW1wLm1hcmtlcikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBjdXJzb3IgPSBjbS5zdGF0ZS5qdW1wLmN1cnNvcjtcbiAgICB2YXIgcG9zID0gY20uY29vcmRzQ2hhcihjdXJzb3IpO1xuICAgIHZhciB0b2tlbiA9IGNtLmdldFRva2VuQXQocG9zLCB0cnVlKTtcbiAgICB2YXIgb3B0aW9ucyA9IGNtLnN0YXRlLmp1bXAub3B0aW9ucztcbiAgICB2YXIgZ2V0RGVzdGluYXRpb24gPSBvcHRpb25zLmdldERlc3RpbmF0aW9uIHx8IGNtLmdldEhlbHBlcihwb3MsICdqdW1wJyk7XG4gICAgaWYgKGdldERlc3RpbmF0aW9uKSB7XG4gICAgICAgIHZhciBkZXN0aW5hdGlvbiA9IGdldERlc3RpbmF0aW9uKHRva2VuLCBvcHRpb25zLCBjbSk7XG4gICAgICAgIGlmIChkZXN0aW5hdGlvbikge1xuICAgICAgICAgICAgdmFyIG1hcmtlciA9IGNtLm1hcmtUZXh0KHsgbGluZTogcG9zLmxpbmUsIGNoOiB0b2tlbi5zdGFydCB9LCB7IGxpbmU6IHBvcy5saW5lLCBjaDogdG9rZW4uZW5kIH0sIHsgY2xhc3NOYW1lOiAnQ29kZU1pcnJvci1qdW1wLXRva2VuJyB9KTtcbiAgICAgICAgICAgIGNtLnN0YXRlLmp1bXAubWFya2VyID0gbWFya2VyO1xuICAgICAgICAgICAgY20uc3RhdGUuanVtcC5kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZGlzYWJsZUp1bXBNb2RlKGNtKSB7XG4gICAgdmFyIG1hcmtlciA9IGNtLnN0YXRlLmp1bXAubWFya2VyO1xuICAgIGNtLnN0YXRlLmp1bXAubWFya2VyID0gbnVsbDtcbiAgICBjbS5zdGF0ZS5qdW1wLmRlc3RpbmF0aW9uID0gbnVsbDtcbiAgICBtYXJrZXIuY2xlYXIoKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWp1bXAtYWRkb24uanMubWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFFQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../codemirror-graphql/utils/jump-addon.js\n");
2792
2793/***/ }),
2794
2795/***/ "../../codemirror-graphql/variables/hint.js":
2796/*!*****************************************************************************************!*\
2797 !*** /home/runner/work/graphiql/graphiql/packages/codemirror-graphql/variables/hint.js ***!
2798 \*****************************************************************************************/
2799/*! no static exports found */
2800/***/ (function(module, exports, __webpack_require__) {
2801
2802eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n var __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var codemirror_1 = __importDefault(__webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n\n var graphql_1 = __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n\n var forEachState_1 = __importDefault(__webpack_require__(/*! ../utils/forEachState */ \"../../codemirror-graphql/utils/forEachState.js\"));\n\n var hintList_1 = __importDefault(__webpack_require__(/*! ../utils/hintList */ \"../../codemirror-graphql/utils/hintList.js\"));\n\n codemirror_1.default.registerHelper('hint', 'graphql-variables', function (editor, options) {\n var cur = editor.getCursor();\n var token = editor.getTokenAt(cur);\n var results = getVariablesHint(cur, token, options);\n\n if (results && results.list && results.list.length > 0) {\n results.from = codemirror_1.default.Pos(results.from.line, results.from.ch);\n results.to = codemirror_1.default.Pos(results.to.line, results.to.ch);\n codemirror_1.default.signal(editor, 'hasCompletion', editor, results, token);\n }\n\n return results;\n });\n\n function getVariablesHint(cur, token, options) {\n var state = token.state.kind === 'Invalid' ? token.state.prevState : token.state;\n var kind = state.kind;\n var step = state.step;\n\n if (kind === 'Document' && step === 0) {\n return hintList_1.default(cur, token, [{\n text: '{'\n }]);\n }\n\n var variableToType = options.variableToType;\n\n if (!variableToType) {\n return;\n }\n\n var typeInfo = getTypeInfo(variableToType, token.state);\n\n if (kind === 'Document' || kind === 'Variable' && step === 0) {\n var variableNames = Object.keys(variableToType);\n return hintList_1.default(cur, token, variableNames.map(function (name) {\n return {\n text: \"\\\"\" + name + \"\\\": \",\n type: variableToType[name]\n };\n }));\n }\n\n if (kind === 'ObjectValue' || kind === 'ObjectField' && step === 0) {\n if (typeInfo.fields) {\n var inputFields = Object.keys(typeInfo.fields).map(function (fieldName) {\n return typeInfo.fields[fieldName];\n });\n return hintList_1.default(cur, token, inputFields.map(function (field) {\n return {\n text: \"\\\"\" + field.name + \"\\\": \",\n type: field.type,\n description: field.description\n };\n }));\n }\n }\n\n if (kind === 'StringValue' || kind === 'NumberValue' || kind === 'BooleanValue' || kind === 'NullValue' || kind === 'ListValue' && step === 1 || kind === 'ObjectField' && step === 2 || kind === 'Variable' && step === 2) {\n var namedInputType_1 = typeInfo.type ? graphql_1.getNamedType(typeInfo.type) : undefined;\n\n if (namedInputType_1 instanceof graphql_1.GraphQLInputObjectType) {\n return hintList_1.default(cur, token, [{\n text: '{'\n }]);\n } else if (namedInputType_1 instanceof graphql_1.GraphQLEnumType) {\n var values = namedInputType_1.getValues();\n return hintList_1.default(cur, token, values.map(function (value) {\n return {\n text: \"\\\"\" + value.name + \"\\\"\",\n type: namedInputType_1,\n description: value.description\n };\n }));\n } else if (namedInputType_1 === graphql_1.GraphQLBoolean) {\n return hintList_1.default(cur, token, [{\n text: 'true',\n type: graphql_1.GraphQLBoolean,\n description: 'Not false.'\n }, {\n text: 'false',\n type: graphql_1.GraphQLBoolean,\n description: 'Not true.'\n }]);\n }\n }\n }\n\n function getTypeInfo(variableToType, tokenState) {\n var info = {\n type: null,\n fields: null\n };\n forEachState_1.default(tokenState, function (state) {\n if (state.kind === 'Variable') {\n info.type = variableToType[state.name];\n } else if (state.kind === 'ListValue') {\n var nullableType = info.type ? graphql_1.getNullableType(info.type) : undefined;\n info.type = nullableType instanceof graphql_1.GraphQLList ? nullableType.ofType : null;\n } else if (state.kind === 'ObjectValue') {\n var objectType = info.type ? graphql_1.getNamedType(info.type) : undefined;\n info.fields = objectType instanceof graphql_1.GraphQLInputObjectType ? objectType.getFields() : null;\n } else if (state.kind === 'ObjectField') {\n var objectField = state.name && info.fields ? info.fields[state.name] : null;\n info.type = objectField && objectField.type;\n }\n });\n return info;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29kZW1pcnJvci1ncmFwaHFsL3ZhcmlhYmxlcy9oaW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi4vc3JjL3ZhcmlhYmxlcy9oaW50LnRzPzM2YTgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29kZW1pcnJvcl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJjb2RlbWlycm9yXCIpKTtcbnZhciBncmFwaHFsXzEgPSByZXF1aXJlKFwiZ3JhcGhxbFwiKTtcbnZhciBmb3JFYWNoU3RhdGVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vdXRpbHMvZm9yRWFjaFN0YXRlXCIpKTtcbnZhciBoaW50TGlzdF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuLi91dGlscy9oaW50TGlzdFwiKSk7XG5jb2RlbWlycm9yXzEuZGVmYXVsdC5yZWdpc3RlckhlbHBlcignaGludCcsICdncmFwaHFsLXZhcmlhYmxlcycsIGZ1bmN0aW9uIChlZGl0b3IsIG9wdGlvbnMpIHtcbiAgICB2YXIgY3VyID0gZWRpdG9yLmdldEN1cnNvcigpO1xuICAgIHZhciB0b2tlbiA9IGVkaXRvci5nZXRUb2tlbkF0KGN1cik7XG4gICAgdmFyIHJlc3VsdHMgPSBnZXRWYXJpYWJsZXNIaW50KGN1ciwgdG9rZW4sIG9wdGlvbnMpO1xuICAgIGlmIChyZXN1bHRzICYmIHJlc3VsdHMubGlzdCAmJiByZXN1bHRzLmxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHRzLmZyb20gPSBjb2RlbWlycm9yXzEuZGVmYXVsdC5Qb3MocmVzdWx0cy5mcm9tLmxpbmUsIHJlc3VsdHMuZnJvbS5jaCk7XG4gICAgICAgIHJlc3VsdHMudG8gPSBjb2RlbWlycm9yXzEuZGVmYXVsdC5Qb3MocmVzdWx0cy50by5saW5lLCByZXN1bHRzLnRvLmNoKTtcbiAgICAgICAgY29kZW1pcnJvcl8xLmRlZmF1bHQuc2lnbmFsKGVkaXRvciwgJ2hhc0NvbXBsZXRpb24nLCBlZGl0b3IsIHJlc3VsdHMsIHRva2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHM7XG59KTtcbmZ1bmN0aW9uIGdldFZhcmlhYmxlc0hpbnQoY3VyLCB0b2tlbiwgb3B0aW9ucykge1xuICAgIHZhciBzdGF0ZSA9IHRva2VuLnN0YXRlLmtpbmQgPT09ICdJbnZhbGlkJyA/IHRva2VuLnN0YXRlLnByZXZTdGF0ZSA6IHRva2VuLnN0YXRlO1xuICAgIHZhciBraW5kID0gc3RhdGUua2luZDtcbiAgICB2YXIgc3RlcCA9IHN0YXRlLnN0ZXA7XG4gICAgaWYgKGtpbmQgPT09ICdEb2N1bWVudCcgJiYgc3RlcCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gaGludExpc3RfMS5kZWZhdWx0KGN1ciwgdG9rZW4sIFt7IHRleHQ6ICd7JyB9XSk7XG4gICAgfVxuICAgIHZhciB2YXJpYWJsZVRvVHlwZSA9IG9wdGlvbnMudmFyaWFibGVUb1R5cGU7XG4gICAgaWYgKCF2YXJpYWJsZVRvVHlwZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0eXBlSW5mbyA9IGdldFR5cGVJbmZvKHZhcmlhYmxlVG9UeXBlLCB0b2tlbi5zdGF0ZSk7XG4gICAgaWYgKGtpbmQgPT09ICdEb2N1bWVudCcgfHwgKGtpbmQgPT09ICdWYXJpYWJsZScgJiYgc3RlcCA9PT0gMCkpIHtcbiAgICAgICAgdmFyIHZhcmlhYmxlTmFtZXMgPSBPYmplY3Qua2V5cyh2YXJpYWJsZVRvVHlwZSk7XG4gICAgICAgIHJldHVybiBoaW50TGlzdF8xLmRlZmF1bHQoY3VyLCB0b2tlbiwgdmFyaWFibGVOYW1lcy5tYXAoZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuICh7XG4gICAgICAgICAgICB0ZXh0OiBcIlxcXCJcIiArIG5hbWUgKyBcIlxcXCI6IFwiLFxuICAgICAgICAgICAgdHlwZTogdmFyaWFibGVUb1R5cGVbbmFtZV0sXG4gICAgICAgIH0pOyB9KSk7XG4gICAgfVxuICAgIGlmIChraW5kID09PSAnT2JqZWN0VmFsdWUnIHx8IChraW5kID09PSAnT2JqZWN0RmllbGQnICYmIHN0ZXAgPT09IDApKSB7XG4gICAgICAgIGlmICh0eXBlSW5mby5maWVsZHMpIHtcbiAgICAgICAgICAgIHZhciBpbnB1dEZpZWxkcyA9IE9iamVjdC5rZXlzKHR5cGVJbmZvLmZpZWxkcykubWFwKGZ1bmN0aW9uIChmaWVsZE5hbWUpIHsgcmV0dXJuIHR5cGVJbmZvLmZpZWxkc1tmaWVsZE5hbWVdOyB9KTtcbiAgICAgICAgICAgIHJldHVybiBoaW50TGlzdF8xLmRlZmF1bHQoY3VyLCB0b2tlbiwgaW5wdXRGaWVsZHMubWFwKGZ1bmN0aW9uIChmaWVsZCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIlxcXCJcIiArIGZpZWxkLm5hbWUgKyBcIlxcXCI6IFwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IGZpZWxkLnR5cGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGZpZWxkLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSk7IH0pKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoa2luZCA9PT0gJ1N0cmluZ1ZhbHVlJyB8fFxuICAgICAgICBraW5kID09PSAnTnVtYmVyVmFsdWUnIHx8XG4gICAgICAgIGtpbmQgPT09ICdCb29sZWFuVmFsdWUnIHx8XG4gICAgICAgIGtpbmQgPT09ICdOdWxsVmFsdWUnIHx8XG4gICAgICAgIChraW5kID09PSAnTGlzdFZhbHVlJyAmJiBzdGVwID09PSAxKSB8fFxuICAgICAgICAoa2luZCA9PT0gJ09iamVjdEZpZWxkJyAmJiBzdGVwID09PSAyKSB8fFxuICAgICAgICAoa2luZCA9PT0gJ1ZhcmlhYmxlJyAmJiBzdGVwID09PSAyKSkge1xuICAgICAgICB2YXIgbmFtZWRJbnB1dFR5cGVfMSA9IHR5cGVJbmZvLnR5cGVcbiAgICAgICAgICAgID8gZ3JhcGhxbF8xLmdldE5hbWVkVHlwZSh0eXBlSW5mby50eXBlKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChuYW1lZElucHV0VHlwZV8xIGluc3RhbmNlb2YgZ3JhcGhxbF8xLkdyYXBoUUxJbnB1dE9iamVjdFR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiBoaW50TGlzdF8xLmRlZmF1bHQoY3VyLCB0b2tlbiwgW3sgdGV4dDogJ3snIH1dKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChuYW1lZElucHV0VHlwZV8xIGluc3RhbmNlb2YgZ3JhcGhxbF8xLkdyYXBoUUxFbnVtVHlwZSkge1xuICAgICAgICAgICAgdmFyIHZhbHVlcyA9IG5hbWVkSW5wdXRUeXBlXzEuZ2V0VmFsdWVzKCk7XG4gICAgICAgICAgICByZXR1cm4gaGludExpc3RfMS5kZWZhdWx0KGN1ciwgdG9rZW4sIHZhbHVlcy5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiAoe1xuICAgICAgICAgICAgICAgIHRleHQ6IFwiXFxcIlwiICsgdmFsdWUubmFtZSArIFwiXFxcIlwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IG5hbWVkSW5wdXRUeXBlXzEsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHZhbHVlLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSk7IH0pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChuYW1lZElucHV0VHlwZV8xID09PSBncmFwaHFsXzEuR3JhcGhRTEJvb2xlYW4pIHtcbiAgICAgICAgICAgIHJldHVybiBoaW50TGlzdF8xLmRlZmF1bHQoY3VyLCB0b2tlbiwgW1xuICAgICAgICAgICAgICAgIHsgdGV4dDogJ3RydWUnLCB0eXBlOiBncmFwaHFsXzEuR3JhcGhRTEJvb2xlYW4sIGRlc2NyaXB0aW9uOiAnTm90IGZhbHNlLicgfSxcbiAgICAgICAgICAgICAgICB7IHRleHQ6ICdmYWxzZScsIHR5cGU6IGdyYXBocWxfMS5HcmFwaFFMQm9vbGVhbiwgZGVzY3JpcHRpb246ICdOb3QgdHJ1ZS4nIH0sXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGdldFR5cGVJbmZvKHZhcmlhYmxlVG9UeXBlLCB0b2tlblN0YXRlKSB7XG4gICAgdmFyIGluZm8gPSB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICAgIGZpZWxkczogbnVsbCxcbiAgICB9O1xuICAgIGZvckVhY2hTdGF0ZV8xLmRlZmF1bHQodG9rZW5TdGF0ZSwgZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICAgIGlmIChzdGF0ZS5raW5kID09PSAnVmFyaWFibGUnKSB7XG4gICAgICAgICAgICBpbmZvLnR5cGUgPSB2YXJpYWJsZVRvVHlwZVtzdGF0ZS5uYW1lXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzdGF0ZS5raW5kID09PSAnTGlzdFZhbHVlJykge1xuICAgICAgICAgICAgdmFyIG51bGxhYmxlVHlwZSA9IGluZm8udHlwZSA/IGdyYXBocWxfMS5nZXROdWxsYWJsZVR5cGUoaW5mby50eXBlKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGluZm8udHlwZSA9XG4gICAgICAgICAgICAgICAgbnVsbGFibGVUeXBlIGluc3RhbmNlb2YgZ3JhcGhxbF8xLkdyYXBoUUxMaXN0ID8gbnVsbGFibGVUeXBlLm9mVHlwZSA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3RhdGUua2luZCA9PT0gJ09iamVjdFZhbHVlJykge1xuICAgICAgICAgICAgdmFyIG9iamVjdFR5cGUgPSBpbmZvLnR5cGUgPyBncmFwaHFsXzEuZ2V0TmFtZWRUeXBlKGluZm8udHlwZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpbmZvLmZpZWxkcyA9XG4gICAgICAgICAgICAgICAgb2JqZWN0VHlwZSBpbnN0YW5jZW9mIGdyYXBocWxfMS5HcmFwaFFMSW5wdXRPYmplY3RUeXBlXG4gICAgICAgICAgICAgICAgICAgID8gb2JqZWN0VHlwZS5nZXRGaWVsZHMoKVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3RhdGUua2luZCA9PT0gJ09iamVjdEZpZWxkJykge1xuICAgICAgICAgICAgdmFyIG9iamVjdEZpZWxkID0gc3RhdGUubmFtZSAmJiBpbmZvLmZpZWxkcyA/IGluZm8uZmllbGRzW3N0YXRlLm5hbWVdIDogbnVsbDtcbiAgICAgICAgICAgIGluZm8udHlwZSA9IG9iamVjdEZpZWxkICYmIG9iamVjdEZpZWxkLnR5cGU7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaW5mbztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhpbnQuanMubWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBYUE7QUFDQTtBQUFBO0FBQ0E7QUFvQ0E7QUFPQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBTUE7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRkE7QUFHQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQVNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../codemirror-graphql/variables/hint.js\n");
2803
2804/***/ }),
2805
2806/***/ "../../codemirror-graphql/variables/lint.js":
2807/*!*****************************************************************************************!*\
2808 !*** /home/runner/work/graphiql/graphiql/packages/codemirror-graphql/variables/lint.js ***!
2809 \*****************************************************************************************/
2810/*! no static exports found */
2811/***/ (function(module, exports, __webpack_require__) {
2812
2813eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n var __read = void 0 && (void 0).__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n };\n\n var __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var codemirror_1 = __importDefault(__webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n\n var graphql_1 = __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n\n var jsonParse_1 = __importDefault(__webpack_require__(/*! ../utils/jsonParse */ \"../../codemirror-graphql/utils/jsonParse.js\"));\n\n codemirror_1.default.registerHelper('lint', 'graphql-variables', function (text, options, editor) {\n if (!text) {\n return [];\n }\n\n var ast;\n\n try {\n ast = jsonParse_1.default(text);\n } catch (syntaxError) {\n if (syntaxError.stack) {\n throw syntaxError;\n }\n\n return [lintError(editor, syntaxError, syntaxError.message)];\n }\n\n var variableToType = options.variableToType;\n\n if (!variableToType) {\n return [];\n }\n\n return validateVariables(editor, variableToType, ast);\n });\n\n function validateVariables(editor, variableToType, variablesAST) {\n var errors = [];\n variablesAST.members.forEach(function (member) {\n var _a;\n\n if (member) {\n var variableName = (_a = member.key) === null || _a === void 0 ? void 0 : _a.value;\n var type = variableToType[variableName];\n\n if (!type) {\n errors.push(lintError(editor, member.key, \"Variable \\\"$\" + variableName + \"\\\" does not appear in any GraphQL query.\"));\n } else {\n validateValue(type, member.value).forEach(function (_a) {\n var _b = __read(_a, 2),\n node = _b[0],\n message = _b[1];\n\n errors.push(lintError(editor, node, message));\n });\n }\n }\n });\n return errors;\n }\n\n function validateValue(type, valueAST) {\n if (!type || !valueAST) {\n return [];\n }\n\n if (type instanceof graphql_1.GraphQLNonNull) {\n if (valueAST.kind === 'Null') {\n return [[valueAST, \"Type \\\"\" + type + \"\\\" is non-nullable and cannot be null.\"]];\n }\n\n return validateValue(type.ofType, valueAST);\n }\n\n if (valueAST.kind === 'Null') {\n return [];\n }\n\n if (type instanceof graphql_1.GraphQLList) {\n var itemType_1 = type.ofType;\n\n if (valueAST.kind === 'Array') {\n var values = valueAST.values || [];\n return mapCat(values, function (item) {\n return validateValue(itemType_1, item);\n });\n }\n\n return validateValue(itemType_1, valueAST);\n }\n\n if (type instanceof graphql_1.GraphQLInputObjectType) {\n if (valueAST.kind !== 'Object') {\n return [[valueAST, \"Type \\\"\" + type + \"\\\" must be an Object.\"]];\n }\n\n var providedFields_1 = Object.create(null);\n var fieldErrors_1 = mapCat(valueAST.members, function (member) {\n var _a;\n\n var fieldName = (_a = member === null || member === void 0 ? void 0 : member.key) === null || _a === void 0 ? void 0 : _a.value;\n providedFields_1[fieldName] = true;\n var inputField = type.getFields()[fieldName];\n\n if (!inputField) {\n return [[member.key, \"Type \\\"\" + type + \"\\\" does not have a field \\\"\" + fieldName + \"\\\".\"]];\n }\n\n var fieldType = inputField ? inputField.type : undefined;\n return validateValue(fieldType, member.value);\n });\n Object.keys(type.getFields()).forEach(function (fieldName) {\n if (!providedFields_1[fieldName]) {\n var fieldType = type.getFields()[fieldName].type;\n\n if (fieldType instanceof graphql_1.GraphQLNonNull) {\n fieldErrors_1.push([valueAST, \"Object of type \\\"\" + type + \"\\\" is missing required field \\\"\" + fieldName + \"\\\".\"]);\n }\n }\n });\n return fieldErrors_1;\n }\n\n if (type.name === 'Boolean' && valueAST.kind !== 'Boolean' || type.name === 'String' && valueAST.kind !== 'String' || type.name === 'ID' && valueAST.kind !== 'Number' && valueAST.kind !== 'String' || type.name === 'Float' && valueAST.kind !== 'Number' || type.name === 'Int' && (valueAST.kind !== 'Number' || (valueAST.value | 0) !== valueAST.value)) {\n return [[valueAST, \"Expected value of type \\\"\" + type + \"\\\".\"]];\n }\n\n if (type instanceof graphql_1.GraphQLEnumType || type instanceof graphql_1.GraphQLScalarType) {\n if (valueAST.kind !== 'String' && valueAST.kind !== 'Number' && valueAST.kind !== 'Boolean' && valueAST.kind !== 'Null' || isNullish(type.parseValue(valueAST.value))) {\n return [[valueAST, \"Expected value of type \\\"\" + type + \"\\\".\"]];\n }\n }\n\n return [];\n }\n\n function lintError(editor, node, message) {\n return {\n message: message,\n severity: 'error',\n type: 'validation',\n from: editor.posFromIndex(node.start),\n to: editor.posFromIndex(node.end)\n };\n }\n\n function isNullish(value) {\n return value === null || value === undefined || value !== value;\n }\n\n function mapCat(array, mapper) {\n return Array.prototype.concat.apply([], array.map(mapper));\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29kZW1pcnJvci1ncmFwaHFsL3ZhcmlhYmxlcy9saW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi4vc3JjL3ZhcmlhYmxlcy9saW50LnRzP2RjZWYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29kZW1pcnJvcl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJjb2RlbWlycm9yXCIpKTtcbnZhciBncmFwaHFsXzEgPSByZXF1aXJlKFwiZ3JhcGhxbFwiKTtcbnZhciBqc29uUGFyc2VfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi4vdXRpbHMvanNvblBhcnNlXCIpKTtcbmNvZGVtaXJyb3JfMS5kZWZhdWx0LnJlZ2lzdGVySGVscGVyKCdsaW50JywgJ2dyYXBocWwtdmFyaWFibGVzJywgZnVuY3Rpb24gKHRleHQsIG9wdGlvbnMsIGVkaXRvcikge1xuICAgIGlmICghdGV4dCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHZhciBhc3Q7XG4gICAgdHJ5IHtcbiAgICAgICAgYXN0ID0ganNvblBhcnNlXzEuZGVmYXVsdCh0ZXh0KTtcbiAgICB9XG4gICAgY2F0Y2ggKHN5bnRheEVycm9yKSB7XG4gICAgICAgIGlmIChzeW50YXhFcnJvci5zdGFjaykge1xuICAgICAgICAgICAgdGhyb3cgc3ludGF4RXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtsaW50RXJyb3IoZWRpdG9yLCBzeW50YXhFcnJvciwgc3ludGF4RXJyb3IubWVzc2FnZSldO1xuICAgIH1cbiAgICB2YXIgdmFyaWFibGVUb1R5cGUgPSBvcHRpb25zLnZhcmlhYmxlVG9UeXBlO1xuICAgIGlmICghdmFyaWFibGVUb1R5cGUpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdGVWYXJpYWJsZXMoZWRpdG9yLCB2YXJpYWJsZVRvVHlwZSwgYXN0KTtcbn0pO1xuZnVuY3Rpb24gdmFsaWRhdGVWYXJpYWJsZXMoZWRpdG9yLCB2YXJpYWJsZVRvVHlwZSwgdmFyaWFibGVzQVNUKSB7XG4gICAgdmFyIGVycm9ycyA9IFtdO1xuICAgIHZhcmlhYmxlc0FTVC5tZW1iZXJzLmZvckVhY2goZnVuY3Rpb24gKG1lbWJlcikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChtZW1iZXIpIHtcbiAgICAgICAgICAgIHZhciB2YXJpYWJsZU5hbWUgPSAoX2EgPSBtZW1iZXIua2V5KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudmFsdWU7XG4gICAgICAgICAgICB2YXIgdHlwZSA9IHZhcmlhYmxlVG9UeXBlW3ZhcmlhYmxlTmFtZV07XG4gICAgICAgICAgICBpZiAoIXR5cGUpIHtcbiAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChsaW50RXJyb3IoZWRpdG9yLCBtZW1iZXIua2V5LCBcIlZhcmlhYmxlIFxcXCIkXCIgKyB2YXJpYWJsZU5hbWUgKyBcIlxcXCIgZG9lcyBub3QgYXBwZWFyIGluIGFueSBHcmFwaFFMIHF1ZXJ5LlwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZVZhbHVlKHR5cGUsIG1lbWJlci52YWx1ZSkuZm9yRWFjaChmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9iID0gX19yZWFkKF9hLCAyKSwgbm9kZSA9IF9iWzBdLCBtZXNzYWdlID0gX2JbMV07XG4gICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKGxpbnRFcnJvcihlZGl0b3IsIG5vZGUsIG1lc3NhZ2UpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBlcnJvcnM7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZVZhbHVlKHR5cGUsIHZhbHVlQVNUKSB7XG4gICAgaWYgKCF0eXBlIHx8ICF2YWx1ZUFTVCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGlmICh0eXBlIGluc3RhbmNlb2YgZ3JhcGhxbF8xLkdyYXBoUUxOb25OdWxsKSB7XG4gICAgICAgIGlmICh2YWx1ZUFTVC5raW5kID09PSAnTnVsbCcpIHtcbiAgICAgICAgICAgIHJldHVybiBbW3ZhbHVlQVNULCBcIlR5cGUgXFxcIlwiICsgdHlwZSArIFwiXFxcIiBpcyBub24tbnVsbGFibGUgYW5kIGNhbm5vdCBiZSBudWxsLlwiXV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlVmFsdWUodHlwZS5vZlR5cGUsIHZhbHVlQVNUKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlQVNULmtpbmQgPT09ICdOdWxsJykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGlmICh0eXBlIGluc3RhbmNlb2YgZ3JhcGhxbF8xLkdyYXBoUUxMaXN0KSB7XG4gICAgICAgIHZhciBpdGVtVHlwZV8xID0gdHlwZS5vZlR5cGU7XG4gICAgICAgIGlmICh2YWx1ZUFTVC5raW5kID09PSAnQXJyYXknKSB7XG4gICAgICAgICAgICB2YXIgdmFsdWVzID0gdmFsdWVBU1QudmFsdWVzIHx8IFtdO1xuICAgICAgICAgICAgcmV0dXJuIG1hcENhdCh2YWx1ZXMsIGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiB2YWxpZGF0ZVZhbHVlKGl0ZW1UeXBlXzEsIGl0ZW0pOyB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsaWRhdGVWYWx1ZShpdGVtVHlwZV8xLCB2YWx1ZUFTVCk7XG4gICAgfVxuICAgIGlmICh0eXBlIGluc3RhbmNlb2YgZ3JhcGhxbF8xLkdyYXBoUUxJbnB1dE9iamVjdFR5cGUpIHtcbiAgICAgICAgaWYgKHZhbHVlQVNULmtpbmQgIT09ICdPYmplY3QnKSB7XG4gICAgICAgICAgICByZXR1cm4gW1t2YWx1ZUFTVCwgXCJUeXBlIFxcXCJcIiArIHR5cGUgKyBcIlxcXCIgbXVzdCBiZSBhbiBPYmplY3QuXCJdXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJvdmlkZWRGaWVsZHNfMSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHZhciBmaWVsZEVycm9yc18xID0gbWFwQ2F0KHZhbHVlQVNULm1lbWJlcnMsIGZ1bmN0aW9uIChtZW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBmaWVsZE5hbWUgPSAoX2EgPSBtZW1iZXIgPT09IG51bGwgfHwgbWVtYmVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtZW1iZXIua2V5KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudmFsdWU7XG4gICAgICAgICAgICBwcm92aWRlZEZpZWxkc18xW2ZpZWxkTmFtZV0gPSB0cnVlO1xuICAgICAgICAgICAgdmFyIGlucHV0RmllbGQgPSB0eXBlLmdldEZpZWxkcygpW2ZpZWxkTmFtZV07XG4gICAgICAgICAgICBpZiAoIWlucHV0RmllbGQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXIua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJUeXBlIFxcXCJcIiArIHR5cGUgKyBcIlxcXCIgZG9lcyBub3QgaGF2ZSBhIGZpZWxkIFxcXCJcIiArIGZpZWxkTmFtZSArIFwiXFxcIi5cIixcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGZpZWxkVHlwZSA9IGlucHV0RmllbGQgPyBpbnB1dEZpZWxkLnR5cGUgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVWYWx1ZShmaWVsZFR5cGUsIG1lbWJlci52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3Qua2V5cyh0eXBlLmdldEZpZWxkcygpKS5mb3JFYWNoKGZ1bmN0aW9uIChmaWVsZE5hbWUpIHtcbiAgICAgICAgICAgIGlmICghcHJvdmlkZWRGaWVsZHNfMVtmaWVsZE5hbWVdKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZpZWxkVHlwZSA9IHR5cGUuZ2V0RmllbGRzKClbZmllbGROYW1lXS50eXBlO1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZFR5cGUgaW5zdGFuY2VvZiBncmFwaHFsXzEuR3JhcGhRTE5vbk51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGRFcnJvcnNfMS5wdXNoKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQVNULFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJPYmplY3Qgb2YgdHlwZSBcXFwiXCIgKyB0eXBlICsgXCJcXFwiIGlzIG1pc3NpbmcgcmVxdWlyZWQgZmllbGQgXFxcIlwiICsgZmllbGROYW1lICsgXCJcXFwiLlwiLFxuICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmllbGRFcnJvcnNfMTtcbiAgICB9XG4gICAgaWYgKCh0eXBlLm5hbWUgPT09ICdCb29sZWFuJyAmJiB2YWx1ZUFTVC5raW5kICE9PSAnQm9vbGVhbicpIHx8XG4gICAgICAgICh0eXBlLm5hbWUgPT09ICdTdHJpbmcnICYmIHZhbHVlQVNULmtpbmQgIT09ICdTdHJpbmcnKSB8fFxuICAgICAgICAodHlwZS5uYW1lID09PSAnSUQnICYmXG4gICAgICAgICAgICB2YWx1ZUFTVC5raW5kICE9PSAnTnVtYmVyJyAmJlxuICAgICAgICAgICAgdmFsdWVBU1Qua2luZCAhPT0gJ1N0cmluZycpIHx8XG4gICAgICAgICh0eXBlLm5hbWUgPT09ICdGbG9hdCcgJiYgdmFsdWVBU1Qua2luZCAhPT0gJ051bWJlcicpIHx8XG4gICAgICAgICh0eXBlLm5hbWUgPT09ICdJbnQnICYmXG4gICAgICAgICAgICAodmFsdWVBU1Qua2luZCAhPT0gJ051bWJlcicgfHwgKHZhbHVlQVNULnZhbHVlIHwgMCkgIT09IHZhbHVlQVNULnZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuIFtbdmFsdWVBU1QsIFwiRXhwZWN0ZWQgdmFsdWUgb2YgdHlwZSBcXFwiXCIgKyB0eXBlICsgXCJcXFwiLlwiXV07XG4gICAgfVxuICAgIGlmICh0eXBlIGluc3RhbmNlb2YgZ3JhcGhxbF8xLkdyYXBoUUxFbnVtVHlwZSB8fCB0eXBlIGluc3RhbmNlb2YgZ3JhcGhxbF8xLkdyYXBoUUxTY2FsYXJUeXBlKSB7XG4gICAgICAgIGlmICgodmFsdWVBU1Qua2luZCAhPT0gJ1N0cmluZycgJiZcbiAgICAgICAgICAgIHZhbHVlQVNULmtpbmQgIT09ICdOdW1iZXInICYmXG4gICAgICAgICAgICB2YWx1ZUFTVC5raW5kICE9PSAnQm9vbGVhbicgJiZcbiAgICAgICAgICAgIHZhbHVlQVNULmtpbmQgIT09ICdOdWxsJykgfHxcbiAgICAgICAgICAgIGlzTnVsbGlzaCh0eXBlLnBhcnNlVmFsdWUodmFsdWVBU1QudmFsdWUpKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtbdmFsdWVBU1QsIFwiRXhwZWN0ZWQgdmFsdWUgb2YgdHlwZSBcXFwiXCIgKyB0eXBlICsgXCJcXFwiLlwiXV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFtdO1xufVxuZnVuY3Rpb24gbGludEVycm9yKGVkaXRvciwgbm9kZSwgbWVzc2FnZSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICB0eXBlOiAndmFsaWRhdGlvbicsXG4gICAgICAgIGZyb206IGVkaXRvci5wb3NGcm9tSW5kZXgobm9kZS5zdGFydCksXG4gICAgICAgIHRvOiBlZGl0b3IucG9zRnJvbUluZGV4KG5vZGUuZW5kKSxcbiAgICB9O1xufVxuZnVuY3Rpb24gaXNOdWxsaXNoKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgIT09IHZhbHVlO1xufVxuZnVuY3Rpb24gbWFwQ2F0KGFycmF5LCBtYXBwZXIpIHtcbiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgYXJyYXkubWFwKG1hcHBlcikpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bGludC5qcy5tYXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBUUE7QUFDQTtBQXNCQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFLQTtBQUVBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFPQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQU1BO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQVdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../codemirror-graphql/variables/lint.js\n");
2814
2815/***/ }),
2816
2817/***/ "../../codemirror-graphql/variables/mode.js":
2818/*!*****************************************************************************************!*\
2819 !*** /home/runner/work/graphiql/graphiql/packages/codemirror-graphql/variables/mode.js ***!
2820 \*****************************************************************************************/
2821/*! no static exports found */
2822/***/ (function(module, exports, __webpack_require__) {
2823
2824eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function () {\n \"use strict\";\n\n var __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var codemirror_1 = __importDefault(__webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n\n var graphql_language_service_parser_1 = __webpack_require__(/*! graphql-language-service-parser */ \"../../graphql-language-service-parser/esm/index.js\");\n\n codemirror_1.default.defineMode('graphql-variables', function (config) {\n var parser = graphql_language_service_parser_1.onlineParser({\n eatWhitespace: function (stream) {\n return stream.eatSpace();\n },\n lexRules: LexRules,\n parseRules: ParseRules,\n editorConfig: {\n tabSize: config.tabSize\n }\n });\n return {\n config: config,\n startState: parser.startState,\n token: parser.token,\n indent: indent,\n electricInput: /^\\s*[}\\]]/,\n fold: 'brace',\n closeBrackets: {\n pairs: '[]{}\"\"',\n explode: '[]{}'\n }\n };\n });\n\n function indent(state, textAfter) {\n var _a, _b;\n\n var levels = state.levels;\n var level = !levels || levels.length === 0 ? state.indentLevel : levels[levels.length - 1] - (((_a = this.electricInput) === null || _a === void 0 ? void 0 : _a.test(textAfter)) ? 1 : 0);\n return (level || 0) * (((_b = this.config) === null || _b === void 0 ? void 0 : _b.indentUnit) || 0);\n }\n\n var LexRules = {\n Punctuation: /^\\[|]|\\{|\\}|:|,/,\n Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,\n String: /^\"(?:[^\"\\\\]|\\\\(?:\"|\\/|\\\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*\"?/,\n Keyword: /^true|false|null/\n };\n var ParseRules = {\n Document: [graphql_language_service_parser_1.p('{'), graphql_language_service_parser_1.list('Variable', graphql_language_service_parser_1.opt(graphql_language_service_parser_1.p(','))), graphql_language_service_parser_1.p('}')],\n Variable: [namedKey('variable'), graphql_language_service_parser_1.p(':'), 'Value'],\n Value: function (token) {\n switch (token.kind) {\n case 'Number':\n return 'NumberValue';\n\n case 'String':\n return 'StringValue';\n\n case 'Punctuation':\n switch (token.value) {\n case '[':\n return 'ListValue';\n\n case '{':\n return 'ObjectValue';\n }\n\n return null;\n\n case 'Keyword':\n switch (token.value) {\n case 'true':\n case 'false':\n return 'BooleanValue';\n\n case 'null':\n return 'NullValue';\n }\n\n return null;\n }\n },\n NumberValue: [graphql_language_service_parser_1.t('Number', 'number')],\n StringValue: [graphql_language_service_parser_1.t('String', 'string')],\n BooleanValue: [graphql_language_service_parser_1.t('Keyword', 'builtin')],\n NullValue: [graphql_language_service_parser_1.t('Keyword', 'keyword')],\n ListValue: [graphql_language_service_parser_1.p('['), graphql_language_service_parser_1.list('Value', graphql_language_service_parser_1.opt(graphql_language_service_parser_1.p(','))), graphql_language_service_parser_1.p(']')],\n ObjectValue: [graphql_language_service_parser_1.p('{'), graphql_language_service_parser_1.list('ObjectField', graphql_language_service_parser_1.opt(graphql_language_service_parser_1.p(','))), graphql_language_service_parser_1.p('}')],\n ObjectField: [namedKey('attribute'), graphql_language_service_parser_1.p(':'), 'Value']\n };\n\n function namedKey(style) {\n return {\n style: style,\n match: function (token) {\n return token.kind === 'String';\n },\n update: function (state, token) {\n state.name = token.value.slice(1, -1);\n }\n };\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29kZW1pcnJvci1ncmFwaHFsL3ZhcmlhYmxlcy9tb2RlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi4vc3JjL3ZhcmlhYmxlcy9tb2RlLnRzPzIxMzgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29kZW1pcnJvcl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJjb2RlbWlycm9yXCIpKTtcbnZhciBncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEgPSByZXF1aXJlKFwiZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLXBhcnNlclwiKTtcbmNvZGVtaXJyb3JfMS5kZWZhdWx0LmRlZmluZU1vZGUoJ2dyYXBocWwtdmFyaWFibGVzJywgZnVuY3Rpb24gKGNvbmZpZykge1xuICAgIHZhciBwYXJzZXIgPSBncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEub25saW5lUGFyc2VyKHtcbiAgICAgICAgZWF0V2hpdGVzcGFjZTogZnVuY3Rpb24gKHN0cmVhbSkgeyByZXR1cm4gc3RyZWFtLmVhdFNwYWNlKCk7IH0sXG4gICAgICAgIGxleFJ1bGVzOiBMZXhSdWxlcyxcbiAgICAgICAgcGFyc2VSdWxlczogUGFyc2VSdWxlcyxcbiAgICAgICAgZWRpdG9yQ29uZmlnOiB7IHRhYlNpemU6IGNvbmZpZy50YWJTaXplIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgIHN0YXJ0U3RhdGU6IHBhcnNlci5zdGFydFN0YXRlLFxuICAgICAgICB0b2tlbjogcGFyc2VyLnRva2VuLFxuICAgICAgICBpbmRlbnQ6IGluZGVudCxcbiAgICAgICAgZWxlY3RyaWNJbnB1dDogL15cXHMqW31cXF1dLyxcbiAgICAgICAgZm9sZDogJ2JyYWNlJyxcbiAgICAgICAgY2xvc2VCcmFja2V0czoge1xuICAgICAgICAgICAgcGFpcnM6ICdbXXt9XCJcIicsXG4gICAgICAgICAgICBleHBsb2RlOiAnW117fScsXG4gICAgICAgIH0sXG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gaW5kZW50KHN0YXRlLCB0ZXh0QWZ0ZXIpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHZhciBsZXZlbHMgPSBzdGF0ZS5sZXZlbHM7XG4gICAgdmFyIGxldmVsID0gIWxldmVscyB8fCBsZXZlbHMubGVuZ3RoID09PSAwXG4gICAgICAgID8gc3RhdGUuaW5kZW50TGV2ZWxcbiAgICAgICAgOiBsZXZlbHNbbGV2ZWxzLmxlbmd0aCAtIDFdIC1cbiAgICAgICAgICAgICgoKF9hID0gdGhpcy5lbGVjdHJpY0lucHV0KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGVzdCh0ZXh0QWZ0ZXIpKSA/IDEgOiAwKTtcbiAgICByZXR1cm4gKGxldmVsIHx8IDApICogKCgoX2IgPSB0aGlzLmNvbmZpZykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmluZGVudFVuaXQpIHx8IDApO1xufVxudmFyIExleFJ1bGVzID0ge1xuICAgIFB1bmN0dWF0aW9uOiAvXlxcW3xdfFxce3xcXH18OnwsLyxcbiAgICBOdW1iZXI6IC9eLT8oPzowfCg/OlsxLTldWzAtOV0qKSkoPzpcXC5bMC05XSopPyg/OltlRV1bKy1dP1swLTldKyk/LyxcbiAgICBTdHJpbmc6IC9eXCIoPzpbXlwiXFxcXF18XFxcXCg/OlwifFxcL3xcXFxcfGJ8ZnxufHJ8dHx1WzAtOWEtZkEtRl17NH0pKSpcIj8vLFxuICAgIEtleXdvcmQ6IC9edHJ1ZXxmYWxzZXxudWxsLyxcbn07XG52YXIgUGFyc2VSdWxlcyA9IHtcbiAgICBEb2N1bWVudDogW2dyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5wKCd7JyksIGdyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5saXN0KCdWYXJpYWJsZScsIGdyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5vcHQoZ3JhcGhxbF9sYW5ndWFnZV9zZXJ2aWNlX3BhcnNlcl8xLnAoJywnKSkpLCBncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEucCgnfScpXSxcbiAgICBWYXJpYWJsZTogW25hbWVkS2V5KCd2YXJpYWJsZScpLCBncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEucCgnOicpLCAnVmFsdWUnXSxcbiAgICBWYWx1ZTogZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgICAgIHN3aXRjaCAodG9rZW4ua2luZCkge1xuICAgICAgICAgICAgY2FzZSAnTnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ051bWJlclZhbHVlJztcbiAgICAgICAgICAgIGNhc2UgJ1N0cmluZyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdTdHJpbmdWYWx1ZSc7XG4gICAgICAgICAgICBjYXNlICdQdW5jdHVhdGlvbic6XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0b2tlbi52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdbJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnTGlzdFZhbHVlJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAneyc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ09iamVjdFZhbHVlJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjYXNlICdLZXl3b3JkJzpcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRva2VuLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RydWUnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdmYWxzZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0Jvb2xlYW5WYWx1ZSc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdOdWxsVmFsdWUnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgTnVtYmVyVmFsdWU6IFtncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEudCgnTnVtYmVyJywgJ251bWJlcicpXSxcbiAgICBTdHJpbmdWYWx1ZTogW2dyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS50KCdTdHJpbmcnLCAnc3RyaW5nJyldLFxuICAgIEJvb2xlYW5WYWx1ZTogW2dyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS50KCdLZXl3b3JkJywgJ2J1aWx0aW4nKV0sXG4gICAgTnVsbFZhbHVlOiBbZ3JhcGhxbF9sYW5ndWFnZV9zZXJ2aWNlX3BhcnNlcl8xLnQoJ0tleXdvcmQnLCAna2V5d29yZCcpXSxcbiAgICBMaXN0VmFsdWU6IFtncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEucCgnWycpLCBncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEubGlzdCgnVmFsdWUnLCBncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEub3B0KGdyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5wKCcsJykpKSwgZ3JhcGhxbF9sYW5ndWFnZV9zZXJ2aWNlX3BhcnNlcl8xLnAoJ10nKV0sXG4gICAgT2JqZWN0VmFsdWU6IFtncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEucCgneycpLCBncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEubGlzdCgnT2JqZWN0RmllbGQnLCBncmFwaHFsX2xhbmd1YWdlX3NlcnZpY2VfcGFyc2VyXzEub3B0KGdyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5wKCcsJykpKSwgZ3JhcGhxbF9sYW5ndWFnZV9zZXJ2aWNlX3BhcnNlcl8xLnAoJ30nKV0sXG4gICAgT2JqZWN0RmllbGQ6IFtuYW1lZEtleSgnYXR0cmlidXRlJyksIGdyYXBocWxfbGFuZ3VhZ2Vfc2VydmljZV9wYXJzZXJfMS5wKCc6JyksICdWYWx1ZSddLFxufTtcbmZ1bmN0aW9uIG5hbWVkS2V5KHN0eWxlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgICBtYXRjaDogZnVuY3Rpb24gKHRva2VuKSB7IHJldHVybiB0b2tlbi5raW5kID09PSAnU3RyaW5nJzsgfSxcbiAgICAgICAgdXBkYXRlOiBmdW5jdGlvbiAoc3RhdGUsIHRva2VuKSB7XG4gICAgICAgICAgICBzdGF0ZS5uYW1lID0gdG9rZW4udmFsdWUuc2xpY2UoMSwgLTEpO1xuICAgICAgICB9LFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tb2RlLmpzLm1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQWFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSkE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBUEE7QUFZQTtBQUNBO0FBQ0E7OztBQVFBO0FBR0E7QUFLQTtBQUNBO0FBQ0E7QUFJQTtBQUVBO0FBR0E7QUFHQTtBQUdBO0FBWEE7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBSkE7QUFDQTtBQUtBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBTEE7QUFDQTtBQU1BO0FBckJBO0FBdUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFsQ0E7QUFDQTtBQXFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../codemirror-graphql/variables/mode.js\n");
2825
2826/***/ }),
2827
2828/***/ "../../graphiql-toolkit/esm/create-fetcher/createFetcher.js":
2829/*!*********************************************************************************************************!*\
2830 !*** /home/runner/work/graphiql/graphiql/packages/graphiql-toolkit/esm/create-fetcher/createFetcher.js ***!
2831 \*********************************************************************************************************/
2832/*! no static exports found */
2833/***/ (function(module, exports, __webpack_require__) {
2834
2835eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./lib */ \"../../graphiql-toolkit/esm/create-fetcher/lib.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _lib) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.createGraphiQLFetcher = createGraphiQLFetcher;\n\n function createGraphiQLFetcher(options) {\n let httpFetch;\n\n if (typeof window !== null && (window === null || window === void 0 ? void 0 : window.fetch)) {\n httpFetch = window.fetch;\n }\n\n if ((options === null || options === void 0 ? void 0 : options.enableIncrementalDelivery) === null || options.enableIncrementalDelivery !== false) {\n options.enableIncrementalDelivery = true;\n }\n\n if (options.fetch) {\n httpFetch = options.fetch;\n }\n\n if (!httpFetch) {\n throw Error('No valid fetcher implementation available');\n }\n\n const simpleFetcher = (0, _lib.createSimpleFetcher)(options, httpFetch);\n const wsFetcher = (0, _lib.getWsFetcher)(options);\n const httpFetcher = options.enableIncrementalDelivery ? (0, _lib.createMultipartFetcher)(options, httpFetch) : simpleFetcher;\n return (graphQLParams, fetcherOpts) => {\n if (graphQLParams.operationName === 'IntrospectionQuery') {\n return (options.schemaFetcher || simpleFetcher)(graphQLParams, fetcherOpts);\n }\n\n const isSubscription = (0, _lib.isSubscriptionWithName)(fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.documentAST, graphQLParams.operationName);\n\n if (isSubscription) {\n if (!wsFetcher) {\n throw Error(`Your GraphiQL createFetcher is not properly configured for websocket subscriptions yet. ${options.subscriptionUrl ? `Provided URL ${options.subscriptionUrl} failed` : `Please provide subscriptionUrl, wsClient or legacyClient option first.`}`);\n }\n\n return wsFetcher(graphQLParams);\n }\n\n return httpFetcher(graphQLParams, fetcherOpts);\n };\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vY3JlYXRlLWZldGNoZXIvY3JlYXRlRmV0Y2hlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uLy4uL3NyYy9jcmVhdGUtZmV0Y2hlci9jcmVhdGVGZXRjaGVyLnRzPzI3MzYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlTXVsdGlwYXJ0RmV0Y2hlciwgY3JlYXRlU2ltcGxlRmV0Y2hlciwgaXNTdWJzY3JpcHRpb25XaXRoTmFtZSwgZ2V0V3NGZXRjaGVyLCB9IGZyb20gJy4vbGliJztcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHcmFwaGlRTEZldGNoZXIob3B0aW9ucykge1xuICAgIGxldCBodHRwRmV0Y2g7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IG51bGwgJiYgKHdpbmRvdyA9PT0gbnVsbCB8fCB3aW5kb3cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHdpbmRvdy5mZXRjaCkpIHtcbiAgICAgICAgaHR0cEZldGNoID0gd2luZG93LmZldGNoO1xuICAgIH1cbiAgICBpZiAoKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5lbmFibGVJbmNyZW1lbnRhbERlbGl2ZXJ5KSA9PT0gbnVsbCB8fFxuICAgICAgICBvcHRpb25zLmVuYWJsZUluY3JlbWVudGFsRGVsaXZlcnkgIT09IGZhbHNlKSB7XG4gICAgICAgIG9wdGlvbnMuZW5hYmxlSW5jcmVtZW50YWxEZWxpdmVyeSA9IHRydWU7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmZldGNoKSB7XG4gICAgICAgIGh0dHBGZXRjaCA9IG9wdGlvbnMuZmV0Y2g7XG4gICAgfVxuICAgIGlmICghaHR0cEZldGNoKSB7XG4gICAgICAgIHRocm93IEVycm9yKCdObyB2YWxpZCBmZXRjaGVyIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZScpO1xuICAgIH1cbiAgICBjb25zdCBzaW1wbGVGZXRjaGVyID0gY3JlYXRlU2ltcGxlRmV0Y2hlcihvcHRpb25zLCBodHRwRmV0Y2gpO1xuICAgIGNvbnN0IHdzRmV0Y2hlciA9IGdldFdzRmV0Y2hlcihvcHRpb25zKTtcbiAgICBjb25zdCBodHRwRmV0Y2hlciA9IG9wdGlvbnMuZW5hYmxlSW5jcmVtZW50YWxEZWxpdmVyeVxuICAgICAgICA/IGNyZWF0ZU11bHRpcGFydEZldGNoZXIob3B0aW9ucywgaHR0cEZldGNoKVxuICAgICAgICA6IHNpbXBsZUZldGNoZXI7XG4gICAgcmV0dXJuIChncmFwaFFMUGFyYW1zLCBmZXRjaGVyT3B0cykgPT4ge1xuICAgICAgICBpZiAoZ3JhcGhRTFBhcmFtcy5vcGVyYXRpb25OYW1lID09PSAnSW50cm9zcGVjdGlvblF1ZXJ5Jykge1xuICAgICAgICAgICAgcmV0dXJuIChvcHRpb25zLnNjaGVtYUZldGNoZXIgfHwgc2ltcGxlRmV0Y2hlcikoZ3JhcGhRTFBhcmFtcywgZmV0Y2hlck9wdHMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzU3Vic2NyaXB0aW9uID0gaXNTdWJzY3JpcHRpb25XaXRoTmFtZShmZXRjaGVyT3B0cyA9PT0gbnVsbCB8fCBmZXRjaGVyT3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZmV0Y2hlck9wdHMuZG9jdW1lbnRBU1QsIGdyYXBoUUxQYXJhbXMub3BlcmF0aW9uTmFtZSk7XG4gICAgICAgIGlmIChpc1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgaWYgKCF3c0ZldGNoZXIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgWW91ciBHcmFwaGlRTCBjcmVhdGVGZXRjaGVyIGlzIG5vdCBwcm9wZXJseSBjb25maWd1cmVkIGZvciB3ZWJzb2NrZXQgc3Vic2NyaXB0aW9ucyB5ZXQuICR7b3B0aW9ucy5zdWJzY3JpcHRpb25VcmxcbiAgICAgICAgICAgICAgICAgICAgPyBgUHJvdmlkZWQgVVJMICR7b3B0aW9ucy5zdWJzY3JpcHRpb25Vcmx9IGZhaWxlZGBcbiAgICAgICAgICAgICAgICAgICAgOiBgUGxlYXNlIHByb3ZpZGUgc3Vic2NyaXB0aW9uVXJsLCB3c0NsaWVudCBvciBsZWdhY3lDbGllbnQgb3B0aW9uIGZpcnN0LmB9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gd3NGZXRjaGVyKGdyYXBoUUxQYXJhbXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBodHRwRmV0Y2hlcihncmFwaFFMUGFyYW1zLCBmZXRjaGVyT3B0cyk7XG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNyZWF0ZUZldGNoZXIuanMubWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFpQkE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/create-fetcher/createFetcher.js\n");
2836
2837/***/ }),
2838
2839/***/ "../../graphiql-toolkit/esm/create-fetcher/index.js":
2840/*!*************************************************************************************************!*\
2841 !*** /home/runner/work/graphiql/graphiql/packages/graphiql-toolkit/esm/create-fetcher/index.js ***!
2842 \*************************************************************************************************/
2843/*! no static exports found */
2844/***/ (function(module, exports, __webpack_require__) {
2845
2846eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./types */ \"../../graphiql-toolkit/esm/create-fetcher/types.js\"), __webpack_require__(/*! ./createFetcher */ \"../../graphiql-toolkit/esm/create-fetcher/createFetcher.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _types, _createFetcher) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n var _exportNames = {\n createGraphiQLFetcher: true\n };\n Object.defineProperty(_exports, \"createGraphiQLFetcher\", {\n enumerable: true,\n get: function () {\n return _createFetcher.createGraphiQLFetcher;\n }\n });\n Object.keys(_types).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in _exports && _exports[key] === _types[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _types[key];\n }\n });\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vY3JlYXRlLWZldGNoZXIvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uLi8uLi9zcmMvY3JlYXRlLWZldGNoZXIvaW5kZXgudHM/ODM5MSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCB7IGNyZWF0ZUdyYXBoaVFMRmV0Y2hlciB9IGZyb20gJy4vY3JlYXRlRmV0Y2hlcic7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/create-fetcher/index.js\n");
2847
2848/***/ }),
2849
2850/***/ "../../graphiql-toolkit/esm/create-fetcher/lib.js":
2851/*!***********************************************************************************************!*\
2852 !*** /home/runner/work/graphiql/graphiql/packages/graphiql-toolkit/esm/create-fetcher/lib.js ***!
2853 \***********************************************************************************************/
2854/*! no static exports found */
2855/***/ (function(module, exports, __webpack_require__) {
2856
2857eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! meros */ \"../../../node_modules/meros/browser/index.mjs\"), __webpack_require__(/*! graphql-ws */ \"../../../node_modules/graphql-ws/umd/graphql-ws.js\"), __webpack_require__(/*! @n1ru4l/push-pull-async-iterable-iterator */ \"../../../node_modules/@n1ru4l/push-pull-async-iterable-iterator/dist/push-pull-async-iterable-iterator.esm.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql, _meros, _graphqlWs, _pushPullAsyncIterableIterator) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.getWsFetcher = _exports.createMultipartFetcher = _exports.createLegacyWebsocketsFetcher = _exports.createWebsocketsFetcherFromClient = _exports.createWebsocketsFetcherFromUrl = _exports.createSimpleFetcher = _exports.isSubscriptionWithName = void 0;\n\n var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\n\n var __await = void 0 && (void 0).__await || function (v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n };\n\n var __asyncValues = void 0 && (void 0).__asyncValues || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n };\n\n var __asyncGenerator = void 0 && (void 0).__asyncGenerator || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n };\n\n const isSubscriptionWithName = (document, name) => {\n let isSubscription = false;\n (0, _graphql.visit)(document, {\n OperationDefinition(node) {\n var _a;\n\n if (name === ((_a = node.name) === null || _a === void 0 ? void 0 : _a.value)) {\n if (node.operation === 'subscription') {\n isSubscription = true;\n }\n }\n }\n\n });\n return isSubscription;\n };\n\n _exports.isSubscriptionWithName = isSubscriptionWithName;\n\n const createSimpleFetcher = (options, httpFetch) => (graphQLParams, fetcherOpts) => __awaiter(void 0, void 0, void 0, function* () {\n const data = yield httpFetch(options.url, {\n method: 'POST',\n body: JSON.stringify(graphQLParams),\n headers: Object.assign(Object.assign({\n 'content-type': 'application/json'\n }, options.headers), fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.headers)\n });\n return data.json();\n });\n\n _exports.createSimpleFetcher = createSimpleFetcher;\n\n const createWebsocketsFetcherFromUrl = (url, connectionParams) => {\n let wsClient;\n\n try {\n wsClient = (0, _graphqlWs.createClient)({\n url,\n connectionParams\n });\n return createWebsocketsFetcherFromClient(wsClient);\n } catch (err) {\n console.error(`Error creating websocket client for:\\n${url}\\n\\n${err}`);\n }\n };\n\n _exports.createWebsocketsFetcherFromUrl = createWebsocketsFetcherFromUrl;\n\n const createWebsocketsFetcherFromClient = wsClient => graphQLParams => (0, _pushPullAsyncIterableIterator.makeAsyncIterableIteratorFromSink)(sink => wsClient.subscribe(graphQLParams, Object.assign(Object.assign({}, sink), {\n error: err => {\n if (err instanceof Error) {\n sink.error(err);\n } else if (err instanceof CloseEvent) {\n sink.error(new Error(`Socket closed with event ${err.code} ${err.reason || ''}`.trim()));\n } else {\n sink.error(new Error(err.map(({\n message\n }) => message).join(', ')));\n }\n }\n })));\n\n _exports.createWebsocketsFetcherFromClient = createWebsocketsFetcherFromClient;\n\n const createLegacyWebsocketsFetcher = legacyWsClient => graphQLParams => {\n const observable = legacyWsClient.request(graphQLParams);\n return (0, _pushPullAsyncIterableIterator.makeAsyncIterableIteratorFromSink)(sink => observable.subscribe(sink).unsubscribe);\n };\n\n _exports.createLegacyWebsocketsFetcher = createLegacyWebsocketsFetcher;\n\n const createMultipartFetcher = (options, httpFetch) => function (graphQLParams, fetcherOpts) {\n return __asyncGenerator(this, arguments, function* () {\n var e_1, _a;\n\n const response = yield __await(httpFetch(options.url, {\n method: 'POST',\n body: JSON.stringify(graphQLParams),\n headers: Object.assign(Object.assign({\n 'content-type': 'application/json',\n accept: 'application/json, multipart/mixed'\n }, options.headers), fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.headers)\n }).then(response => (0, _meros.meros)(response, {\n multiple: true\n })));\n\n if (!(0, _pushPullAsyncIterableIterator.isAsyncIterable)(response)) {\n return yield __await(yield yield __await(response.json()));\n }\n\n try {\n for (var response_1 = __asyncValues(response), response_1_1; response_1_1 = yield __await(response_1.next()), !response_1_1.done;) {\n const chunk = response_1_1.value;\n\n if (chunk.some(part => !part.json)) {\n const message = chunk.map(part => `Headers::\\n${part.headers}\\n\\nBody::\\n${part.body}`);\n throw new Error(`Expected multipart chunks to be of json type. got:\\n${message}`);\n }\n\n yield yield __await(chunk.map(part => part.body));\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (response_1_1 && !response_1_1.done && (_a = response_1.return)) yield __await(_a.call(response_1));\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n });\n };\n\n _exports.createMultipartFetcher = createMultipartFetcher;\n\n const getWsFetcher = options => {\n if (options.wsClient) {\n return createWebsocketsFetcherFromClient(options.wsClient);\n }\n\n if (options.legacyClient) {\n return createLegacyWebsocketsFetcher(options.legacyClient);\n }\n\n if (options.subscriptionUrl) {\n return createWebsocketsFetcherFromUrl(options.subscriptionUrl, options.wsConnectionParams);\n }\n };\n\n _exports.getWsFetcher = getWsFetcher;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vY3JlYXRlLWZldGNoZXIvbGliLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi4vLi4vc3JjL2NyZWF0ZS1mZXRjaGVyL2xpYi50cz8yNWUxIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fYXdhaXQgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXQpIHx8IGZ1bmN0aW9uICh2KSB7IHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpOyB9XG52YXIgX19hc3luY1ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX19hc3luY1ZhbHVlcykgfHwgZnVuY3Rpb24gKG8pIHtcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XG59O1xudmFyIF9fYXN5bmNHZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fYXN5bmNHZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cbn07XG5pbXBvcnQgeyB2aXNpdCB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgbWVyb3MgfSBmcm9tICdtZXJvcyc7XG5pbXBvcnQgeyBjcmVhdGVDbGllbnQgfSBmcm9tICdncmFwaHFsLXdzJztcbmltcG9ydCB7IGlzQXN5bmNJdGVyYWJsZSwgbWFrZUFzeW5jSXRlcmFibGVJdGVyYXRvckZyb21TaW5rLCB9IGZyb20gJ0BuMXJ1NGwvcHVzaC1wdWxsLWFzeW5jLWl0ZXJhYmxlLWl0ZXJhdG9yJztcbmV4cG9ydCBjb25zdCBpc1N1YnNjcmlwdGlvbldpdGhOYW1lID0gKGRvY3VtZW50LCBuYW1lKSA9PiB7XG4gICAgbGV0IGlzU3Vic2NyaXB0aW9uID0gZmFsc2U7XG4gICAgdmlzaXQoZG9jdW1lbnQsIHtcbiAgICAgICAgT3BlcmF0aW9uRGVmaW5pdGlvbihub2RlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gKChfYSA9IG5vZGUubmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmIChub2RlLm9wZXJhdGlvbiA9PT0gJ3N1YnNjcmlwdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNTdWJzY3JpcHRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gaXNTdWJzY3JpcHRpb247XG59O1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVNpbXBsZUZldGNoZXIgPSAob3B0aW9ucywgaHR0cEZldGNoKSA9PiAoZ3JhcGhRTFBhcmFtcywgZmV0Y2hlck9wdHMpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBodHRwRmV0Y2gob3B0aW9ucy51cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGdyYXBoUUxQYXJhbXMpLFxuICAgICAgICBoZWFkZXJzOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oeyAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sIG9wdGlvbnMuaGVhZGVycyksIGZldGNoZXJPcHRzID09PSBudWxsIHx8IGZldGNoZXJPcHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmZXRjaGVyT3B0cy5oZWFkZXJzKSxcbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YS5qc29uKCk7XG59KTtcbmV4cG9ydCBjb25zdCBjcmVhdGVXZWJzb2NrZXRzRmV0Y2hlckZyb21VcmwgPSAodXJsLCBjb25uZWN0aW9uUGFyYW1zKSA9PiB7XG4gICAgbGV0IHdzQ2xpZW50O1xuICAgIHRyeSB7XG4gICAgICAgIHdzQ2xpZW50ID0gY3JlYXRlQ2xpZW50KHtcbiAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgIGNvbm5lY3Rpb25QYXJhbXMsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY3JlYXRlV2Vic29ja2V0c0ZldGNoZXJGcm9tQ2xpZW50KHdzQ2xpZW50KTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBjcmVhdGluZyB3ZWJzb2NrZXQgY2xpZW50IGZvcjpcXG4ke3VybH1cXG5cXG4ke2Vycn1gKTtcbiAgICB9XG59O1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVdlYnNvY2tldHNGZXRjaGVyRnJvbUNsaWVudCA9ICh3c0NsaWVudCkgPT4gKGdyYXBoUUxQYXJhbXMpID0+IG1ha2VBc3luY0l0ZXJhYmxlSXRlcmF0b3JGcm9tU2luayhzaW5rID0+IHdzQ2xpZW50LnN1YnNjcmliZShncmFwaFFMUGFyYW1zLCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHNpbmspLCB7IGVycm9yOiBlcnIgPT4ge1xuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHNpbmsuZXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBDbG9zZUV2ZW50KSB7XG4gICAgICAgICAgICBzaW5rLmVycm9yKG5ldyBFcnJvcihgU29ja2V0IGNsb3NlZCB3aXRoIGV2ZW50ICR7ZXJyLmNvZGV9ICR7ZXJyLnJlYXNvbiB8fCAnJ31gLnRyaW0oKSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2luay5lcnJvcihuZXcgRXJyb3IoZXJyLm1hcCgoeyBtZXNzYWdlIH0pID0+IG1lc3NhZ2UpLmpvaW4oJywgJykpKTtcbiAgICAgICAgfVxuICAgIH0gfSkpKTtcbmV4cG9ydCBjb25zdCBjcmVhdGVMZWdhY3lXZWJzb2NrZXRzRmV0Y2hlciA9IChsZWdhY3lXc0NsaWVudCkgPT4gKGdyYXBoUUxQYXJhbXMpID0+IHtcbiAgICBjb25zdCBvYnNlcnZhYmxlID0gbGVnYWN5V3NDbGllbnQucmVxdWVzdChncmFwaFFMUGFyYW1zKTtcbiAgICByZXR1cm4gbWFrZUFzeW5jSXRlcmFibGVJdGVyYXRvckZyb21TaW5rKHNpbmsgPT4gb2JzZXJ2YWJsZS5zdWJzY3JpYmUoc2luaykudW5zdWJzY3JpYmUpO1xufTtcbmV4cG9ydCBjb25zdCBjcmVhdGVNdWx0aXBhcnRGZXRjaGVyID0gKG9wdGlvbnMsIGh0dHBGZXRjaCkgPT4gZnVuY3Rpb24gKGdyYXBoUUxQYXJhbXMsIGZldGNoZXJPcHRzKSB7XG4gICAgcmV0dXJuIF9fYXN5bmNHZW5lcmF0b3IodGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB5aWVsZCBfX2F3YWl0KGh0dHBGZXRjaChvcHRpb25zLnVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShncmFwaFFMUGFyYW1zKSxcbiAgICAgICAgICAgIGhlYWRlcnM6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7ICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsIGFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24sIG11bHRpcGFydC9taXhlZCcgfSwgb3B0aW9ucy5oZWFkZXJzKSwgZmV0Y2hlck9wdHMgPT09IG51bGwgfHwgZmV0Y2hlck9wdHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZldGNoZXJPcHRzLmhlYWRlcnMpLFxuICAgICAgICB9KS50aGVuKHJlc3BvbnNlID0+IG1lcm9zKHJlc3BvbnNlLCB7XG4gICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgfSkpKTtcbiAgICAgICAgaWYgKCFpc0FzeW5jSXRlcmFibGUocmVzcG9uc2UpKSB7XG4gICAgICAgICAgICByZXR1cm4geWllbGQgX19hd2FpdCh5aWVsZCB5aWVsZCBfX2F3YWl0KHJlc3BvbnNlLmpzb24oKSkpO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciByZXNwb25zZV8xID0gX19hc3luY1ZhbHVlcyhyZXNwb25zZSksIHJlc3BvbnNlXzFfMTsgcmVzcG9uc2VfMV8xID0geWllbGQgX19hd2FpdChyZXNwb25zZV8xLm5leHQoKSksICFyZXNwb25zZV8xXzEuZG9uZTspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IHJlc3BvbnNlXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAoY2h1bmsuc29tZShwYXJ0ID0+ICFwYXJ0Lmpzb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBjaHVuay5tYXAocGFydCA9PiBgSGVhZGVyczo6XFxuJHtwYXJ0LmhlYWRlcnN9XFxuXFxuQm9keTo6XFxuJHtwYXJ0LmJvZHl9YCk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgbXVsdGlwYXJ0IGNodW5rcyB0byBiZSBvZiBqc29uIHR5cGUuIGdvdDpcXG4ke21lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHlpZWxkIHlpZWxkIF9fYXdhaXQoY2h1bmsubWFwKHBhcnQgPT4gcGFydC5ib2R5KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZV8xXzEgJiYgIXJlc3BvbnNlXzFfMS5kb25lICYmIChfYSA9IHJlc3BvbnNlXzEucmV0dXJuKSkgeWllbGQgX19hd2FpdChfYS5jYWxsKHJlc3BvbnNlXzEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgIH0pO1xufTtcbmV4cG9ydCBjb25zdCBnZXRXc0ZldGNoZXIgPSAob3B0aW9ucykgPT4ge1xuICAgIGlmIChvcHRpb25zLndzQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVXZWJzb2NrZXRzRmV0Y2hlckZyb21DbGllbnQob3B0aW9ucy53c0NsaWVudCk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxlZ2FjeUNsaWVudCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5V2Vic29ja2V0c0ZldGNoZXIob3B0aW9ucy5sZWdhY3lDbGllbnQpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zdWJzY3JpcHRpb25VcmwpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVdlYnNvY2tldHNGZXRjaGVyRnJvbVVybChvcHRpb25zLnN1YnNjcmlwdGlvblVybCwgb3B0aW9ucy53c0Nvbm5lY3Rpb25QYXJhbXMpO1xuICAgIH1cbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1saWIuanMubWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlCQTtBQUlBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVNBO0FBQ0E7QUFDQTs7O0FBU0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFIQTtBQVNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFJQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBT0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUVBO0FBQUE7QUFHQTtBQUNBO0FBakJBO0FBQ0E7OztBQW9CQTtBQUdBO0FBQ0E7QUFJQTtBQUNBOzs7QUFPQTs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSEE7QUFhQTtBQURBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFHQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7O0FBQ0E7QUFBQTtBQUNBOzs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/create-fetcher/lib.js\n");
2858
2859/***/ }),
2860
2861/***/ "../../graphiql-toolkit/esm/create-fetcher/types.js":
2862/*!*************************************************************************************************!*\
2863 !*** /home/runner/work/graphiql/graphiql/packages/graphiql-toolkit/esm/create-fetcher/types.js ***!
2864 \*************************************************************************************************/
2865/*! no static exports found */
2866/***/ (function(module, exports, __webpack_require__) {
2867
2868eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vY3JlYXRlLWZldGNoZXIvdHlwZXMuanMuanMiLCJzb3VyY2VzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/create-fetcher/types.js\n");
2869
2870/***/ }),
2871
2872/***/ "../../graphiql-toolkit/esm/index.js":
2873/*!**********************************************************************************!*\
2874 !*** /home/runner/work/graphiql/graphiql/packages/graphiql-toolkit/esm/index.js ***!
2875 \**********************************************************************************/
2876/*! no static exports found */
2877/***/ (function(module, exports, __webpack_require__) {
2878
2879eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./create-fetcher */ \"../../graphiql-toolkit/esm/create-fetcher/index.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _createFetcher) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n Object.keys(_createFetcher).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in _exports && _exports[key] === _createFetcher[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _createFetcher[key];\n }\n });\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhpcWwtdG9vbGtpdC9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uLi9zcmMvaW5kZXgudHM/NmYzNyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NyZWF0ZS1mZXRjaGVyJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphiql-toolkit/esm/index.js\n");
2880
2881/***/ }),
2882
2883/***/ "../../graphql-language-service-interface/esm/GraphQLLanguageService.js":
2884/*!*********************************************************************************************************************!*\
2885 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-interface/esm/GraphQLLanguageService.js ***!
2886 \*********************************************************************************************************************/
2887/*! no static exports found */
2888/***/ (function(module, exports, __webpack_require__) {
2889
2890eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! vscode-languageserver-types */ \"../../../node_modules/vscode-languageserver-types/lib/esm/main.js\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! ./getAutocompleteSuggestions */ \"../../graphql-language-service-interface/esm/getAutocompleteSuggestions.js\"), __webpack_require__(/*! ./getHoverInformation */ \"../../graphql-language-service-interface/esm/getHoverInformation.js\"), __webpack_require__(/*! ./getDiagnostics */ \"../../graphql-language-service-interface/esm/getDiagnostics.js\"), __webpack_require__(/*! ./getDefinition */ \"../../graphql-language-service-interface/esm/getDefinition.js\"), __webpack_require__(/*! ./getOutline */ \"../../graphql-language-service-interface/esm/getOutline.js\"), __webpack_require__(/*! graphql-language-service-utils */ \"../../graphql-language-service-utils/esm/index.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _vscodeLanguageserverTypes, _graphql, _getAutocompleteSuggestions, _getHoverInformation, _getDiagnostics, _getDefinition, _getOutline, _graphqlLanguageServiceUtils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.GraphQLLanguageService = void 0;\n\n var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\n\n const {\n FRAGMENT_DEFINITION,\n OBJECT_TYPE_DEFINITION,\n INTERFACE_TYPE_DEFINITION,\n ENUM_TYPE_DEFINITION,\n UNION_TYPE_DEFINITION,\n SCALAR_TYPE_DEFINITION,\n INPUT_OBJECT_TYPE_DEFINITION,\n SCALAR_TYPE_EXTENSION,\n OBJECT_TYPE_EXTENSION,\n INTERFACE_TYPE_EXTENSION,\n UNION_TYPE_EXTENSION,\n ENUM_TYPE_EXTENSION,\n INPUT_OBJECT_TYPE_EXTENSION,\n DIRECTIVE_DEFINITION,\n FRAGMENT_SPREAD,\n OPERATION_DEFINITION,\n NAMED_TYPE\n } = _graphql.Kind;\n const KIND_TO_SYMBOL_KIND = {\n [_graphql.Kind.FIELD]: _vscodeLanguageserverTypes.SymbolKind.Field,\n [_graphql.Kind.OPERATION_DEFINITION]: _vscodeLanguageserverTypes.SymbolKind.Class,\n [_graphql.Kind.FRAGMENT_DEFINITION]: _vscodeLanguageserverTypes.SymbolKind.Class,\n [_graphql.Kind.FRAGMENT_SPREAD]: _vscodeLanguageserverTypes.SymbolKind.Struct,\n [_graphql.Kind.OBJECT_TYPE_DEFINITION]: _vscodeLanguageserverTypes.SymbolKind.Class,\n [_graphql.Kind.ENUM_TYPE_DEFINITION]: _vscodeLanguageserverTypes.SymbolKind.Enum,\n [_graphql.Kind.ENUM_VALUE_DEFINITION]: _vscodeLanguageserverTypes.SymbolKind.EnumMember,\n [_graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION]: _vscodeLanguageserverTypes.SymbolKind.Class,\n [_graphql.Kind.INPUT_VALUE_DEFINITION]: _vscodeLanguageserverTypes.SymbolKind.Field,\n [_graphql.Kind.FIELD_DEFINITION]: _vscodeLanguageserverTypes.SymbolKind.Field,\n [_graphql.Kind.INTERFACE_TYPE_DEFINITION]: _vscodeLanguageserverTypes.SymbolKind.Interface,\n [_graphql.Kind.DOCUMENT]: _vscodeLanguageserverTypes.SymbolKind.File,\n FieldWithArguments: _vscodeLanguageserverTypes.SymbolKind.Method\n };\n\n function getKind(tree) {\n if (tree.kind === 'FieldDefinition' && tree.children && tree.children.length > 0) {\n return KIND_TO_SYMBOL_KIND.FieldWithArguments;\n }\n\n return KIND_TO_SYMBOL_KIND[tree.kind];\n }\n\n class GraphQLLanguageService {\n constructor(cache) {\n this._graphQLCache = cache;\n this._graphQLConfig = cache.getGraphQLConfig();\n }\n\n getConfigForURI(uri) {\n const config = this._graphQLCache.getProjectForFile(uri);\n\n if (config) {\n return config;\n }\n\n throw Error(`No config found for uri: ${uri}`);\n }\n\n getDiagnostics(query, uri, isRelayCompatMode) {\n return __awaiter(this, void 0, void 0, function* () {\n let queryHasExtensions = false;\n const projectConfig = this.getConfigForURI(uri);\n\n if (!projectConfig) {\n return [];\n }\n\n const {\n schema: schemaPath,\n name: projectName,\n extensions\n } = projectConfig;\n\n try {\n const queryAST = (0, _graphql.parse)(query);\n\n if (!schemaPath || uri !== schemaPath) {\n queryHasExtensions = queryAST.definitions.some(definition => {\n switch (definition.kind) {\n case OBJECT_TYPE_DEFINITION:\n case INTERFACE_TYPE_DEFINITION:\n case ENUM_TYPE_DEFINITION:\n case UNION_TYPE_DEFINITION:\n case SCALAR_TYPE_DEFINITION:\n case INPUT_OBJECT_TYPE_DEFINITION:\n case SCALAR_TYPE_EXTENSION:\n case OBJECT_TYPE_EXTENSION:\n case INTERFACE_TYPE_EXTENSION:\n case UNION_TYPE_EXTENSION:\n case ENUM_TYPE_EXTENSION:\n case INPUT_OBJECT_TYPE_EXTENSION:\n case DIRECTIVE_DEFINITION:\n return true;\n }\n\n return false;\n });\n }\n } catch (error) {\n const range = (0, _getDiagnostics.getRange)(error.locations[0], query);\n return [{\n severity: _getDiagnostics.DIAGNOSTIC_SEVERITY.Error,\n message: error.message,\n source: 'GraphQL: Syntax',\n range\n }];\n }\n\n let source = query;\n const fragmentDefinitions = yield this._graphQLCache.getFragmentDefinitions(projectConfig);\n const fragmentDependencies = yield this._graphQLCache.getFragmentDependencies(query, fragmentDefinitions);\n const dependenciesSource = fragmentDependencies.reduce((prev, cur) => `${prev} ${(0, _graphql.print)(cur.definition)}`, '');\n source = `${source} ${dependenciesSource}`;\n let validationAst = null;\n\n try {\n validationAst = (0, _graphql.parse)(source);\n } catch (error) {\n return [];\n }\n\n let customRules = null;\n\n if ((extensions === null || extensions === void 0 ? void 0 : extensions.customValidationRules) && typeof extensions.customValidationRules === 'function') {\n customRules = extensions.customValidationRules(this._graphQLConfig);\n }\n\n const schema = yield this._graphQLCache.getSchema(projectName, queryHasExtensions);\n\n if (!schema) {\n return [];\n }\n\n return (0, _getDiagnostics.validateQuery)(validationAst, schema, customRules, isRelayCompatMode);\n });\n }\n\n getAutocompleteSuggestions(query, position, filePath) {\n return __awaiter(this, void 0, void 0, function* () {\n const projectConfig = this.getConfigForURI(filePath);\n const schema = yield this._graphQLCache.getSchema(projectConfig.name);\n const fragmentDefinitions = yield this._graphQLCache.getFragmentDefinitions(projectConfig);\n const fragmentInfo = Array.from(fragmentDefinitions).map(([, info]) => info.definition);\n\n if (schema) {\n return (0, _getAutocompleteSuggestions.getAutocompleteSuggestions)(schema, query, position, undefined, fragmentInfo);\n }\n\n return [];\n });\n }\n\n getHoverInformation(query, position, filePath) {\n return __awaiter(this, void 0, void 0, function* () {\n const projectConfig = this.getConfigForURI(filePath);\n const schema = yield this._graphQLCache.getSchema(projectConfig.name);\n\n if (schema) {\n return (0, _getHoverInformation.getHoverInformation)(schema, query, position);\n }\n\n return '';\n });\n }\n\n getDefinition(query, position, filePath) {\n return __awaiter(this, void 0, void 0, function* () {\n const projectConfig = this.getConfigForURI(filePath);\n let ast;\n\n try {\n ast = (0, _graphql.parse)(query);\n } catch (error) {\n return null;\n }\n\n const node = (0, _graphqlLanguageServiceUtils.getASTNodeAtPosition)(query, ast, position);\n\n if (node) {\n switch (node.kind) {\n case FRAGMENT_SPREAD:\n return this._getDefinitionForFragmentSpread(query, ast, node, filePath, projectConfig);\n\n case FRAGMENT_DEFINITION:\n case OPERATION_DEFINITION:\n return (0, _getDefinition.getDefinitionQueryResultForDefinitionNode)(filePath, query, node);\n\n case NAMED_TYPE:\n return this._getDefinitionForNamedType(query, ast, node, filePath, projectConfig);\n }\n }\n\n return null;\n });\n }\n\n getDocumentSymbols(document, filePath) {\n return __awaiter(this, void 0, void 0, function* () {\n const outline = yield this.getOutline(document);\n\n if (!outline) {\n return [];\n }\n\n const output = [];\n const input = outline.outlineTrees.map(tree => [null, tree]);\n\n while (input.length > 0) {\n const res = input.pop();\n\n if (!res) {\n return [];\n }\n\n const [parent, tree] = res;\n\n if (!tree) {\n return [];\n }\n\n output.push({\n name: tree.representativeName,\n kind: getKind(tree),\n location: {\n uri: filePath,\n range: {\n start: tree.startPosition,\n end: tree.endPosition\n }\n },\n containerName: parent ? parent.representativeName : undefined\n });\n input.push(...tree.children.map(child => [tree, child]));\n }\n\n return output;\n });\n }\n\n _getDefinitionForNamedType(query, ast, node, filePath, projectConfig) {\n return __awaiter(this, void 0, void 0, function* () {\n const objectTypeDefinitions = yield this._graphQLCache.getObjectTypeDefinitions(projectConfig);\n const dependencies = yield this._graphQLCache.getObjectTypeDependenciesForAST(ast, objectTypeDefinitions);\n const localObjectTypeDefinitions = ast.definitions.filter(definition => definition.kind === OBJECT_TYPE_DEFINITION || definition.kind === INPUT_OBJECT_TYPE_DEFINITION || definition.kind === ENUM_TYPE_DEFINITION || definition.kind === SCALAR_TYPE_DEFINITION || definition.kind === INTERFACE_TYPE_DEFINITION);\n const typeCastedDefs = localObjectTypeDefinitions;\n const localOperationDefinationInfos = typeCastedDefs.map(definition => ({\n filePath,\n content: query,\n definition\n }));\n const result = yield (0, _getDefinition.getDefinitionQueryResultForNamedType)(query, node, dependencies.concat(localOperationDefinationInfos));\n return result;\n });\n }\n\n _getDefinitionForFragmentSpread(query, ast, node, filePath, projectConfig) {\n return __awaiter(this, void 0, void 0, function* () {\n const fragmentDefinitions = yield this._graphQLCache.getFragmentDefinitions(projectConfig);\n const dependencies = yield this._graphQLCache.getFragmentDependenciesForAST(ast, fragmentDefinitions);\n const localFragDefinitions = ast.definitions.filter(definition => definition.kind === FRAGMENT_DEFINITION);\n const typeCastedDefs = localFragDefinitions;\n const localFragInfos = typeCastedDefs.map(definition => ({\n filePath,\n content: query,\n definition\n }));\n const result = yield (0, _getDefinition.getDefinitionQueryResultForFragmentSpread)(query, node, dependencies.concat(localFragInfos));\n return result;\n });\n }\n\n getOutline(documentText) {\n return __awaiter(this, void 0, void 0, function* () {\n return (0, _getOutline.getOutline)(documentText);\n });\n }\n\n }\n\n _exports.GraphQLLanguageService = GraphQLLanguageService;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLWludGVyZmFjZS9lc20vR3JhcGhRTExhbmd1YWdlU2VydmljZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uL3NyYy9HcmFwaFFMTGFuZ3VhZ2VTZXJ2aWNlLnRzPzNjZjciXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyBTeW1ib2xLaW5kLCB9IGZyb20gJ3ZzY29kZS1sYW5ndWFnZXNlcnZlci10eXBlcyc7XG5pbXBvcnQgeyBLaW5kLCBwYXJzZSwgcHJpbnQgfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7IGdldEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb25zIH0gZnJvbSAnLi9nZXRBdXRvY29tcGxldGVTdWdnZXN0aW9ucyc7XG5pbXBvcnQgeyBnZXRIb3ZlckluZm9ybWF0aW9uIH0gZnJvbSAnLi9nZXRIb3ZlckluZm9ybWF0aW9uJztcbmltcG9ydCB7IHZhbGlkYXRlUXVlcnksIGdldFJhbmdlLCBESUFHTk9TVElDX1NFVkVSSVRZIH0gZnJvbSAnLi9nZXREaWFnbm9zdGljcyc7XG5pbXBvcnQgeyBnZXREZWZpbml0aW9uUXVlcnlSZXN1bHRGb3JGcmFnbWVudFNwcmVhZCwgZ2V0RGVmaW5pdGlvblF1ZXJ5UmVzdWx0Rm9yRGVmaW5pdGlvbk5vZGUsIGdldERlZmluaXRpb25RdWVyeVJlc3VsdEZvck5hbWVkVHlwZSwgfSBmcm9tICcuL2dldERlZmluaXRpb24nO1xuaW1wb3J0IHsgZ2V0T3V0bGluZSB9IGZyb20gJy4vZ2V0T3V0bGluZSc7XG5pbXBvcnQgeyBnZXRBU1ROb2RlQXRQb3NpdGlvbiB9IGZyb20gJ2dyYXBocWwtbGFuZ3VhZ2Utc2VydmljZS11dGlscyc7XG5jb25zdCB7IEZSQUdNRU5UX0RFRklOSVRJT04sIE9CSkVDVF9UWVBFX0RFRklOSVRJT04sIElOVEVSRkFDRV9UWVBFX0RFRklOSVRJT04sIEVOVU1fVFlQRV9ERUZJTklUSU9OLCBVTklPTl9UWVBFX0RFRklOSVRJT04sIFNDQUxBUl9UWVBFX0RFRklOSVRJT04sIElOUFVUX09CSkVDVF9UWVBFX0RFRklOSVRJT04sIFNDQUxBUl9UWVBFX0VYVEVOU0lPTiwgT0JKRUNUX1RZUEVfRVhURU5TSU9OLCBJTlRFUkZBQ0VfVFlQRV9FWFRFTlNJT04sIFVOSU9OX1RZUEVfRVhURU5TSU9OLCBFTlVNX1RZUEVfRVhURU5TSU9OLCBJTlBVVF9PQkpFQ1RfVFlQRV9FWFRFTlNJT04sIERJUkVDVElWRV9ERUZJTklUSU9OLCBGUkFHTUVOVF9TUFJFQUQsIE9QRVJBVElPTl9ERUZJTklUSU9OLCBOQU1FRF9UWVBFLCB9ID0gS2luZDtcbmNvbnN0IEtJTkRfVE9fU1lNQk9MX0tJTkQgPSB7XG4gICAgW0tpbmQuRklFTERdOiBTeW1ib2xLaW5kLkZpZWxkLFxuICAgIFtLaW5kLk9QRVJBVElPTl9ERUZJTklUSU9OXTogU3ltYm9sS2luZC5DbGFzcyxcbiAgICBbS2luZC5GUkFHTUVOVF9ERUZJTklUSU9OXTogU3ltYm9sS2luZC5DbGFzcyxcbiAgICBbS2luZC5GUkFHTUVOVF9TUFJFQURdOiBTeW1ib2xLaW5kLlN0cnVjdCxcbiAgICBbS2luZC5PQkpFQ1RfVFlQRV9ERUZJTklUSU9OXTogU3ltYm9sS2luZC5DbGFzcyxcbiAgICBbS2luZC5FTlVNX1RZUEVfREVGSU5JVElPTl06IFN5bWJvbEtpbmQuRW51bSxcbiAgICBbS2luZC5FTlVNX1ZBTFVFX0RFRklOSVRJT05dOiBTeW1ib2xLaW5kLkVudW1NZW1iZXIsXG4gICAgW0tpbmQuSU5QVVRfT0JKRUNUX1RZUEVfREVGSU5JVElPTl06IFN5bWJvbEtpbmQuQ2xhc3MsXG4gICAgW0tpbmQuSU5QVVRfVkFMVUVfREVGSU5JVElPTl06IFN5bWJvbEtpbmQuRmllbGQsXG4gICAgW0tpbmQuRklFTERfREVGSU5JVElPTl06IFN5bWJvbEtpbmQuRmllbGQsXG4gICAgW0tpbmQuSU5URVJGQUNFX1RZUEVfREVGSU5JVElPTl06IFN5bWJvbEtpbmQuSW50ZXJmYWNlLFxuICAgIFtLaW5kLkRPQ1VNRU5UXTogU3ltYm9sS2luZC5GaWxlLFxuICAgIEZpZWxkV2l0aEFyZ3VtZW50czogU3ltYm9sS2luZC5NZXRob2QsXG59O1xuZnVuY3Rpb24gZ2V0S2luZCh0cmVlKSB7XG4gICAgaWYgKHRyZWUua2luZCA9PT0gJ0ZpZWxkRGVmaW5pdGlvbicgJiZcbiAgICAgICAgdHJlZS5jaGlsZHJlbiAmJlxuICAgICAgICB0cmVlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIEtJTkRfVE9fU1lNQk9MX0tJTkQuRmllbGRXaXRoQXJndW1lbnRzO1xuICAgIH1cbiAgICByZXR1cm4gS0lORF9UT19TWU1CT0xfS0lORFt0cmVlLmtpbmRdO1xufVxuZXhwb3J0IGNsYXNzIEdyYXBoUUxMYW5ndWFnZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKGNhY2hlKSB7XG4gICAgICAgIHRoaXMuX2dyYXBoUUxDYWNoZSA9IGNhY2hlO1xuICAgICAgICB0aGlzLl9ncmFwaFFMQ29uZmlnID0gY2FjaGUuZ2V0R3JhcGhRTENvbmZpZygpO1xuICAgIH1cbiAgICBnZXRDb25maWdGb3JVUkkodXJpKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuX2dyYXBoUUxDYWNoZS5nZXRQcm9qZWN0Rm9yRmlsZSh1cmkpO1xuICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgICByZXR1cm4gY29uZmlnO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBObyBjb25maWcgZm91bmQgZm9yIHVyaTogJHt1cml9YCk7XG4gICAgfVxuICAgIGdldERpYWdub3N0aWNzKHF1ZXJ5LCB1cmksIGlzUmVsYXlDb21wYXRNb2RlKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBsZXQgcXVlcnlIYXNFeHRlbnNpb25zID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBwcm9qZWN0Q29uZmlnID0gdGhpcy5nZXRDb25maWdGb3JVUkkodXJpKTtcbiAgICAgICAgICAgIGlmICghcHJvamVjdENvbmZpZykge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHsgc2NoZW1hOiBzY2hlbWFQYXRoLCBuYW1lOiBwcm9qZWN0TmFtZSwgZXh0ZW5zaW9ucyB9ID0gcHJvamVjdENvbmZpZztcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcXVlcnlBU1QgPSBwYXJzZShxdWVyeSk7XG4gICAgICAgICAgICAgICAgaWYgKCFzY2hlbWFQYXRoIHx8IHVyaSAhPT0gc2NoZW1hUGF0aCkge1xuICAgICAgICAgICAgICAgICAgICBxdWVyeUhhc0V4dGVuc2lvbnMgPSBxdWVyeUFTVC5kZWZpbml0aW9ucy5zb21lKGRlZmluaXRpb24gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkZWZpbml0aW9uLmtpbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9CSkVDVF9UWVBFX0RFRklOSVRJT046XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBJTlRFUkZBQ0VfVFlQRV9ERUZJTklUSU9OOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRU5VTV9UWVBFX0RFRklOSVRJT046XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBVTklPTl9UWVBFX0RFRklOSVRJT046XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBTQ0FMQVJfVFlQRV9ERUZJTklUSU9OOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSU5QVVRfT0JKRUNUX1RZUEVfREVGSU5JVElPTjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFNDQUxBUl9UWVBFX0VYVEVOU0lPTjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9CSkVDVF9UWVBFX0VYVEVOU0lPTjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElOVEVSRkFDRV9UWVBFX0VYVEVOU0lPTjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFVOSU9OX1RZUEVfRVhURU5TSU9OOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRU5VTV9UWVBFX0VYVEVOU0lPTjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElOUFVUX09CSkVDVF9UWVBFX0VYVEVOU0lPTjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERJUkVDVElWRV9ERUZJTklUSU9OOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBnZXRSYW5nZShlcnJvci5sb2NhdGlvbnNbMF0sIHF1ZXJ5KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXZlcml0eTogRElBR05PU1RJQ19TRVZFUklUWS5FcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICdHcmFwaFFMOiBTeW50YXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBzb3VyY2UgPSBxdWVyeTtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50RGVmaW5pdGlvbnMgPSB5aWVsZCB0aGlzLl9ncmFwaFFMQ2FjaGUuZ2V0RnJhZ21lbnREZWZpbml0aW9ucyhwcm9qZWN0Q29uZmlnKTtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50RGVwZW5kZW5jaWVzID0geWllbGQgdGhpcy5fZ3JhcGhRTENhY2hlLmdldEZyYWdtZW50RGVwZW5kZW5jaWVzKHF1ZXJ5LCBmcmFnbWVudERlZmluaXRpb25zKTtcbiAgICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY2llc1NvdXJjZSA9IGZyYWdtZW50RGVwZW5kZW5jaWVzLnJlZHVjZSgocHJldiwgY3VyKSA9PiBgJHtwcmV2fSAke3ByaW50KGN1ci5kZWZpbml0aW9uKX1gLCAnJyk7XG4gICAgICAgICAgICBzb3VyY2UgPSBgJHtzb3VyY2V9ICR7ZGVwZW5kZW5jaWVzU291cmNlfWA7XG4gICAgICAgICAgICBsZXQgdmFsaWRhdGlvbkFzdCA9IG51bGw7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRpb25Bc3QgPSBwYXJzZShzb3VyY2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGN1c3RvbVJ1bGVzID0gbnVsbDtcbiAgICAgICAgICAgIGlmICgoZXh0ZW5zaW9ucyA9PT0gbnVsbCB8fCBleHRlbnNpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHRlbnNpb25zLmN1c3RvbVZhbGlkYXRpb25SdWxlcykgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgZXh0ZW5zaW9ucy5jdXN0b21WYWxpZGF0aW9uUnVsZXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjdXN0b21SdWxlcyA9IGV4dGVuc2lvbnMuY3VzdG9tVmFsaWRhdGlvblJ1bGVzKHRoaXMuX2dyYXBoUUxDb25maWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2NoZW1hID0geWllbGQgdGhpcy5fZ3JhcGhRTENhY2hlLmdldFNjaGVtYShwcm9qZWN0TmFtZSwgcXVlcnlIYXNFeHRlbnNpb25zKTtcbiAgICAgICAgICAgIGlmICghc2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUXVlcnkodmFsaWRhdGlvbkFzdCwgc2NoZW1hLCBjdXN0b21SdWxlcywgaXNSZWxheUNvbXBhdE1vZGUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0QXV0b2NvbXBsZXRlU3VnZ2VzdGlvbnMocXVlcnksIHBvc2l0aW9uLCBmaWxlUGF0aCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgcHJvamVjdENvbmZpZyA9IHRoaXMuZ2V0Q29uZmlnRm9yVVJJKGZpbGVQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYSA9IHlpZWxkIHRoaXMuX2dyYXBoUUxDYWNoZS5nZXRTY2hlbWEocHJvamVjdENvbmZpZy5uYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50RGVmaW5pdGlvbnMgPSB5aWVsZCB0aGlzLl9ncmFwaFFMQ2FjaGUuZ2V0RnJhZ21lbnREZWZpbml0aW9ucyhwcm9qZWN0Q29uZmlnKTtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50SW5mbyA9IEFycmF5LmZyb20oZnJhZ21lbnREZWZpbml0aW9ucykubWFwKChbLCBpbmZvXSkgPT4gaW5mby5kZWZpbml0aW9uKTtcbiAgICAgICAgICAgIGlmIChzY2hlbWEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0QXV0b2NvbXBsZXRlU3VnZ2VzdGlvbnMoc2NoZW1hLCBxdWVyeSwgcG9zaXRpb24sIHVuZGVmaW5lZCwgZnJhZ21lbnRJbmZvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldEhvdmVySW5mb3JtYXRpb24ocXVlcnksIHBvc2l0aW9uLCBmaWxlUGF0aCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgcHJvamVjdENvbmZpZyA9IHRoaXMuZ2V0Q29uZmlnRm9yVVJJKGZpbGVQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYSA9IHlpZWxkIHRoaXMuX2dyYXBoUUxDYWNoZS5nZXRTY2hlbWEocHJvamVjdENvbmZpZy5uYW1lKTtcbiAgICAgICAgICAgIGlmIChzY2hlbWEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SG92ZXJJbmZvcm1hdGlvbihzY2hlbWEsIHF1ZXJ5LCBwb3NpdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXREZWZpbml0aW9uKHF1ZXJ5LCBwb3NpdGlvbiwgZmlsZVBhdGgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb2plY3RDb25maWcgPSB0aGlzLmdldENvbmZpZ0ZvclVSSShmaWxlUGF0aCk7XG4gICAgICAgICAgICBsZXQgYXN0O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhc3QgPSBwYXJzZShxdWVyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBnZXRBU1ROb2RlQXRQb3NpdGlvbihxdWVyeSwgYXN0LCBwb3NpdGlvbik7XG4gICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS5raW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRlJBR01FTlRfU1BSRUFEOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldERlZmluaXRpb25Gb3JGcmFnbWVudFNwcmVhZChxdWVyeSwgYXN0LCBub2RlLCBmaWxlUGF0aCwgcHJvamVjdENvbmZpZyk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRlJBR01FTlRfREVGSU5JVElPTjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBPUEVSQVRJT05fREVGSU5JVElPTjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXREZWZpbml0aW9uUXVlcnlSZXN1bHRGb3JEZWZpbml0aW9uTm9kZShmaWxlUGF0aCwgcXVlcnksIG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIE5BTUVEX1RZUEU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0RGVmaW5pdGlvbkZvck5hbWVkVHlwZShxdWVyeSwgYXN0LCBub2RlLCBmaWxlUGF0aCwgcHJvamVjdENvbmZpZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXREb2N1bWVudFN5bWJvbHMoZG9jdW1lbnQsIGZpbGVQYXRoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBvdXRsaW5lID0geWllbGQgdGhpcy5nZXRPdXRsaW5lKGRvY3VtZW50KTtcbiAgICAgICAgICAgIGlmICghb3V0bGluZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG91dHB1dCA9IFtdO1xuICAgICAgICAgICAgY29uc3QgaW5wdXQgPSBvdXRsaW5lLm91dGxpbmVUcmVlcy5tYXAoKHRyZWUpID0+IFtudWxsLCB0cmVlXSk7XG4gICAgICAgICAgICB3aGlsZSAoaW5wdXQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGlucHV0LnBvcCgpO1xuICAgICAgICAgICAgICAgIGlmICghcmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgW3BhcmVudCwgdHJlZV0gPSByZXM7XG4gICAgICAgICAgICAgICAgaWYgKCF0cmVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3V0cHV0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiB0cmVlLnJlcHJlc2VudGF0aXZlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAga2luZDogZ2V0S2luZCh0cmVlKSxcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVyaTogZmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICByYW5nZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiB0cmVlLnN0YXJ0UG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiB0cmVlLmVuZFBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyTmFtZTogcGFyZW50ID8gcGFyZW50LnJlcHJlc2VudGF0aXZlTmFtZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnB1dC5wdXNoKC4uLnRyZWUuY2hpbGRyZW4ubWFwKGNoaWxkID0+IFt0cmVlLCBjaGlsZF0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfZ2V0RGVmaW5pdGlvbkZvck5hbWVkVHlwZShxdWVyeSwgYXN0LCBub2RlLCBmaWxlUGF0aCwgcHJvamVjdENvbmZpZykge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgb2JqZWN0VHlwZURlZmluaXRpb25zID0geWllbGQgdGhpcy5fZ3JhcGhRTENhY2hlLmdldE9iamVjdFR5cGVEZWZpbml0aW9ucyhwcm9qZWN0Q29uZmlnKTtcbiAgICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHlpZWxkIHRoaXMuX2dyYXBoUUxDYWNoZS5nZXRPYmplY3RUeXBlRGVwZW5kZW5jaWVzRm9yQVNUKGFzdCwgb2JqZWN0VHlwZURlZmluaXRpb25zKTtcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsT2JqZWN0VHlwZURlZmluaXRpb25zID0gYXN0LmRlZmluaXRpb25zLmZpbHRlcihkZWZpbml0aW9uID0+IGRlZmluaXRpb24ua2luZCA9PT0gT0JKRUNUX1RZUEVfREVGSU5JVElPTiB8fFxuICAgICAgICAgICAgICAgIGRlZmluaXRpb24ua2luZCA9PT0gSU5QVVRfT0JKRUNUX1RZUEVfREVGSU5JVElPTiB8fFxuICAgICAgICAgICAgICAgIGRlZmluaXRpb24ua2luZCA9PT0gRU5VTV9UWVBFX0RFRklOSVRJT04gfHxcbiAgICAgICAgICAgICAgICBkZWZpbml0aW9uLmtpbmQgPT09IFNDQUxBUl9UWVBFX0RFRklOSVRJT04gfHxcbiAgICAgICAgICAgICAgICBkZWZpbml0aW9uLmtpbmQgPT09IElOVEVSRkFDRV9UWVBFX0RFRklOSVRJT04pO1xuICAgICAgICAgICAgY29uc3QgdHlwZUNhc3RlZERlZnMgPSBsb2NhbE9iamVjdFR5cGVEZWZpbml0aW9ucztcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsT3BlcmF0aW9uRGVmaW5hdGlvbkluZm9zID0gdHlwZUNhc3RlZERlZnMubWFwKChkZWZpbml0aW9uKSA9PiAoe1xuICAgICAgICAgICAgICAgIGZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHF1ZXJ5LFxuICAgICAgICAgICAgICAgIGRlZmluaXRpb24sXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB5aWVsZCBnZXREZWZpbml0aW9uUXVlcnlSZXN1bHRGb3JOYW1lZFR5cGUocXVlcnksIG5vZGUsIGRlcGVuZGVuY2llcy5jb25jYXQobG9jYWxPcGVyYXRpb25EZWZpbmF0aW9uSW5mb3MpKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfZ2V0RGVmaW5pdGlvbkZvckZyYWdtZW50U3ByZWFkKHF1ZXJ5LCBhc3QsIG5vZGUsIGZpbGVQYXRoLCBwcm9qZWN0Q29uZmlnKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBmcmFnbWVudERlZmluaXRpb25zID0geWllbGQgdGhpcy5fZ3JhcGhRTENhY2hlLmdldEZyYWdtZW50RGVmaW5pdGlvbnMocHJvamVjdENvbmZpZyk7XG4gICAgICAgICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSB5aWVsZCB0aGlzLl9ncmFwaFFMQ2FjaGUuZ2V0RnJhZ21lbnREZXBlbmRlbmNpZXNGb3JBU1QoYXN0LCBmcmFnbWVudERlZmluaXRpb25zKTtcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsRnJhZ0RlZmluaXRpb25zID0gYXN0LmRlZmluaXRpb25zLmZpbHRlcihkZWZpbml0aW9uID0+IGRlZmluaXRpb24ua2luZCA9PT0gRlJBR01FTlRfREVGSU5JVElPTik7XG4gICAgICAgICAgICBjb25zdCB0eXBlQ2FzdGVkRGVmcyA9IGxvY2FsRnJhZ0RlZmluaXRpb25zO1xuICAgICAgICAgICAgY29uc3QgbG9jYWxGcmFnSW5mb3MgPSB0eXBlQ2FzdGVkRGVmcy5tYXAoKGRlZmluaXRpb24pID0+ICh7XG4gICAgICAgICAgICAgICAgZmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgY29udGVudDogcXVlcnksXG4gICAgICAgICAgICAgICAgZGVmaW5pdGlvbixcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHlpZWxkIGdldERlZmluaXRpb25RdWVyeVJlc3VsdEZvckZyYWdtZW50U3ByZWFkKHF1ZXJ5LCBub2RlLCBkZXBlbmRlbmNpZXMuY29uY2F0KGxvY2FsRnJhZ0luZm9zKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0T3V0bGluZShkb2N1bWVudFRleHQpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRPdXRsaW5lKGRvY3VtZW50VGV4dCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUdyYXBoUUxMYW5ndWFnZVNlcnZpY2UuanMubWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFqQkE7QUFvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQWRBO0FBQ0E7QUFnQkE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7O0FBT0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZEE7QUFDQTtBQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBT0E7QUFDQTtBQUVBO0FBQ0E7QUFJQTtBQUtBO0FBS0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBSUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUFBO0FBQ0E7QUFDQTs7QUFLQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBR0E7QUFDQTtBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBOztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7QUFLQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQW5CQTtBQTJCQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFIQTtBQUZBO0FBUUE7QUFaQTtBQWNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBU0E7O0FBT0E7QUFJQTtBQUtBO0FBU0E7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUhBO0FBT0E7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUNBOztBQU9BO0FBSUE7QUFLQTtBQUlBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7QUFIQTtBQU9BO0FBTUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTs7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQTdWQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphql-language-service-interface/esm/GraphQLLanguageService.js\n");
2891
2892/***/ }),
2893
2894/***/ "../../graphql-language-service-interface/esm/autocompleteUtils.js":
2895/*!****************************************************************************************************************!*\
2896 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-interface/esm/autocompleteUtils.js ***!
2897 \****************************************************************************************************************/
2898/*! no static exports found */
2899/***/ (function(module, exports, __webpack_require__) {
2900
2901eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! graphql/type/introspection */ \"../../../node_modules/graphql/type/introspection.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql, _introspection) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.getDefinitionState = getDefinitionState;\n _exports.getFieldDef = getFieldDef;\n _exports.forEachState = forEachState;\n _exports.objectValues = objectValues;\n _exports.hintList = hintList;\n\n function getDefinitionState(tokenState) {\n let definitionState;\n forEachState(tokenState, state => {\n switch (state.kind) {\n case 'Query':\n case 'ShortQuery':\n case 'Mutation':\n case 'Subscription':\n case 'FragmentDefinition':\n definitionState = state;\n break;\n }\n });\n return definitionState;\n }\n\n function getFieldDef(schema, type, fieldName) {\n if (fieldName === _introspection.SchemaMetaFieldDef.name && schema.getQueryType() === type) {\n return _introspection.SchemaMetaFieldDef;\n }\n\n if (fieldName === _introspection.TypeMetaFieldDef.name && schema.getQueryType() === type) {\n return _introspection.TypeMetaFieldDef;\n }\n\n if (fieldName === _introspection.TypeNameMetaFieldDef.name && (0, _graphql.isCompositeType)(type)) {\n return _introspection.TypeNameMetaFieldDef;\n }\n\n if ('getFields' in type) {\n return type.getFields()[fieldName];\n }\n\n return null;\n }\n\n function forEachState(stack, fn) {\n const reverseStateStack = [];\n let state = stack;\n\n while (state && state.kind) {\n reverseStateStack.push(state);\n state = state.prevState;\n }\n\n for (let i = reverseStateStack.length - 1; i >= 0; i--) {\n fn(reverseStateStack[i]);\n }\n }\n\n function objectValues(object) {\n const keys = Object.keys(object);\n const len = keys.length;\n const values = new Array(len);\n\n for (let i = 0; i < len; ++i) {\n values[i] = object[keys[i]];\n }\n\n return values;\n }\n\n function hintList(token, list) {\n return filterAndSortList(list, normalizeText(token.string));\n }\n\n function filterAndSortList(list, text) {\n if (!text) {\n return filterNonEmpty(list, entry => !entry.isDeprecated);\n }\n\n const byProximity = list.map(entry => ({\n proximity: getProximity(normalizeText(entry.label), text),\n entry\n }));\n return filterNonEmpty(filterNonEmpty(byProximity, pair => pair.proximity <= 2), pair => !pair.entry.isDeprecated).sort((a, b) => (a.entry.isDeprecated ? 1 : 0) - (b.entry.isDeprecated ? 1 : 0) || a.proximity - b.proximity || a.entry.label.length - b.entry.label.length).map(pair => pair.entry);\n }\n\n function filterNonEmpty(array, predicate) {\n const filtered = array.filter(predicate);\n return filtered.length === 0 ? array : filtered;\n }\n\n function normalizeText(text) {\n return text.toLowerCase().replace(/\\W/g, '');\n }\n\n function getProximity(suggestion, text) {\n let proximity = lexicalDistance(text, suggestion);\n\n if (suggestion.length > text.length) {\n proximity -= suggestion.length - text.length - 1;\n proximity += suggestion.indexOf(text) === 0 ? 0 : 0.5;\n }\n\n return proximity;\n }\n\n function lexicalDistance(a, b) {\n let i;\n let j;\n const d = [];\n const aLength = a.length;\n const bLength = b.length;\n\n for (i = 0; i <= aLength; i++) {\n d[i] = [i];\n }\n\n for (j = 1; j <= bLength; j++) {\n d[0][j] = j;\n }\n\n for (i = 1; i <= aLength; i++) {\n for (j = 1; j <= bLength; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n d[i][j] = Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost);\n\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost);\n }\n }\n }\n\n return d[aLength][bLength];\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLWludGVyZmFjZS9lc20vYXV0b2NvbXBsZXRlVXRpbHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uLi9zcmMvYXV0b2NvbXBsZXRlVXRpbHMudHM/ZTVlMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0NvbXBvc2l0ZVR5cGUgfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7IFNjaGVtYU1ldGFGaWVsZERlZiwgVHlwZU1ldGFGaWVsZERlZiwgVHlwZU5hbWVNZXRhRmllbGREZWYsIH0gZnJvbSAnZ3JhcGhxbC90eXBlL2ludHJvc3BlY3Rpb24nO1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmluaXRpb25TdGF0ZSh0b2tlblN0YXRlKSB7XG4gICAgbGV0IGRlZmluaXRpb25TdGF0ZTtcbiAgICBmb3JFYWNoU3RhdGUodG9rZW5TdGF0ZSwgKHN0YXRlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoc3RhdGUua2luZCkge1xuICAgICAgICAgICAgY2FzZSAnUXVlcnknOlxuICAgICAgICAgICAgY2FzZSAnU2hvcnRRdWVyeSc6XG4gICAgICAgICAgICBjYXNlICdNdXRhdGlvbic6XG4gICAgICAgICAgICBjYXNlICdTdWJzY3JpcHRpb24nOlxuICAgICAgICAgICAgY2FzZSAnRnJhZ21lbnREZWZpbml0aW9uJzpcbiAgICAgICAgICAgICAgICBkZWZpbml0aW9uU3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkZWZpbml0aW9uU3RhdGU7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RmllbGREZWYoc2NoZW1hLCB0eXBlLCBmaWVsZE5hbWUpIHtcbiAgICBpZiAoZmllbGROYW1lID09PSBTY2hlbWFNZXRhRmllbGREZWYubmFtZSAmJiBzY2hlbWEuZ2V0UXVlcnlUeXBlKCkgPT09IHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIFNjaGVtYU1ldGFGaWVsZERlZjtcbiAgICB9XG4gICAgaWYgKGZpZWxkTmFtZSA9PT0gVHlwZU1ldGFGaWVsZERlZi5uYW1lICYmIHNjaGVtYS5nZXRRdWVyeVR5cGUoKSA9PT0gdHlwZSkge1xuICAgICAgICByZXR1cm4gVHlwZU1ldGFGaWVsZERlZjtcbiAgICB9XG4gICAgaWYgKGZpZWxkTmFtZSA9PT0gVHlwZU5hbWVNZXRhRmllbGREZWYubmFtZSAmJiBpc0NvbXBvc2l0ZVR5cGUodHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIFR5cGVOYW1lTWV0YUZpZWxkRGVmO1xuICAgIH1cbiAgICBpZiAoJ2dldEZpZWxkcycgaW4gdHlwZSkge1xuICAgICAgICByZXR1cm4gdHlwZS5nZXRGaWVsZHMoKVtmaWVsZE5hbWVdO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmb3JFYWNoU3RhdGUoc3RhY2ssIGZuKSB7XG4gICAgY29uc3QgcmV2ZXJzZVN0YXRlU3RhY2sgPSBbXTtcbiAgICBsZXQgc3RhdGUgPSBzdGFjaztcbiAgICB3aGlsZSAoc3RhdGUgJiYgc3RhdGUua2luZCkge1xuICAgICAgICByZXZlcnNlU3RhdGVTdGFjay5wdXNoKHN0YXRlKTtcbiAgICAgICAgc3RhdGUgPSBzdGF0ZS5wcmV2U3RhdGU7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSByZXZlcnNlU3RhdGVTdGFjay5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBmbihyZXZlcnNlU3RhdGVTdGFja1tpXSk7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdFZhbHVlcyhvYmplY3QpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcbiAgICBjb25zdCBsZW4gPSBrZXlzLmxlbmd0aDtcbiAgICBjb25zdCB2YWx1ZXMgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgIHZhbHVlc1tpXSA9IG9iamVjdFtrZXlzW2ldXTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBoaW50TGlzdCh0b2tlbiwgbGlzdCkge1xuICAgIHJldHVybiBmaWx0ZXJBbmRTb3J0TGlzdChsaXN0LCBub3JtYWxpemVUZXh0KHRva2VuLnN0cmluZykpO1xufVxuZnVuY3Rpb24gZmlsdGVyQW5kU29ydExpc3QobGlzdCwgdGV4dCkge1xuICAgIGlmICghdGV4dCkge1xuICAgICAgICByZXR1cm4gZmlsdGVyTm9uRW1wdHkobGlzdCwgZW50cnkgPT4gIWVudHJ5LmlzRGVwcmVjYXRlZCk7XG4gICAgfVxuICAgIGNvbnN0IGJ5UHJveGltaXR5ID0gbGlzdC5tYXAoZW50cnkgPT4gKHtcbiAgICAgICAgcHJveGltaXR5OiBnZXRQcm94aW1pdHkobm9ybWFsaXplVGV4dChlbnRyeS5sYWJlbCksIHRleHQpLFxuICAgICAgICBlbnRyeSxcbiAgICB9KSk7XG4gICAgcmV0dXJuIGZpbHRlck5vbkVtcHR5KGZpbHRlck5vbkVtcHR5KGJ5UHJveGltaXR5LCBwYWlyID0+IHBhaXIucHJveGltaXR5IDw9IDIpLCBwYWlyID0+ICFwYWlyLmVudHJ5LmlzRGVwcmVjYXRlZClcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IChhLmVudHJ5LmlzRGVwcmVjYXRlZCA/IDEgOiAwKSAtIChiLmVudHJ5LmlzRGVwcmVjYXRlZCA/IDEgOiAwKSB8fFxuICAgICAgICBhLnByb3hpbWl0eSAtIGIucHJveGltaXR5IHx8XG4gICAgICAgIGEuZW50cnkubGFiZWwubGVuZ3RoIC0gYi5lbnRyeS5sYWJlbC5sZW5ndGgpXG4gICAgICAgIC5tYXAocGFpciA9PiBwYWlyLmVudHJ5KTtcbn1cbmZ1bmN0aW9uIGZpbHRlck5vbkVtcHR5KGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IGFycmF5LmZpbHRlcihwcmVkaWNhdGUpO1xuICAgIHJldHVybiBmaWx0ZXJlZC5sZW5ndGggPT09IDAgPyBhcnJheSA6IGZpbHRlcmVkO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplVGV4dCh0ZXh0KSB7XG4gICAgcmV0dXJuIHRleHQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXFcvZywgJycpO1xufVxuZnVuY3Rpb24gZ2V0UHJveGltaXR5KHN1Z2dlc3Rpb24sIHRleHQpIHtcbiAgICBsZXQgcHJveGltaXR5ID0gbGV4aWNhbERpc3RhbmNlKHRleHQsIHN1Z2dlc3Rpb24pO1xuICAgIGlmIChzdWdnZXN0aW9uLmxlbmd0aCA+IHRleHQubGVuZ3RoKSB7XG4gICAgICAgIHByb3hpbWl0eSAtPSBzdWdnZXN0aW9uLmxlbmd0aCAtIHRleHQubGVuZ3RoIC0gMTtcbiAgICAgICAgcHJveGltaXR5ICs9IHN1Z2dlc3Rpb24uaW5kZXhPZih0ZXh0KSA9PT0gMCA/IDAgOiAwLjU7XG4gICAgfVxuICAgIHJldHVybiBwcm94aW1pdHk7XG59XG5mdW5jdGlvbiBsZXhpY2FsRGlzdGFuY2UoYSwgYikge1xuICAgIGxldCBpO1xuICAgIGxldCBqO1xuICAgIGNvbnN0IGQgPSBbXTtcbiAgICBjb25zdCBhTGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgY29uc3QgYkxlbmd0aCA9IGIubGVuZ3RoO1xuICAgIGZvciAoaSA9IDA7IGkgPD0gYUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGRbaV0gPSBbaV07XG4gICAgfVxuICAgIGZvciAoaiA9IDE7IGogPD0gYkxlbmd0aDsgaisrKSB7XG4gICAgICAgIGRbMF1bal0gPSBqO1xuICAgIH1cbiAgICBmb3IgKGkgPSAxOyBpIDw9IGFMZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKGogPSAxOyBqIDw9IGJMZW5ndGg7IGorKykge1xuICAgICAgICAgICAgY29uc3QgY29zdCA9IGFbaSAtIDFdID09PSBiW2ogLSAxXSA/IDAgOiAxO1xuICAgICAgICAgICAgZFtpXVtqXSA9IE1hdGgubWluKGRbaSAtIDFdW2pdICsgMSwgZFtpXVtqIC0gMV0gKyAxLCBkW2kgLSAxXVtqIC0gMV0gKyBjb3N0KTtcbiAgICAgICAgICAgIGlmIChpID4gMSAmJiBqID4gMSAmJiBhW2kgLSAxXSA9PT0gYltqIC0gMl0gJiYgYVtpIC0gMl0gPT09IGJbaiAtIDFdKSB7XG4gICAgICAgICAgICAgICAgZFtpXVtqXSA9IE1hdGgubWluKGRbaV1bal0sIGRbaSAtIDJdW2ogLSAyXSArIGNvc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkW2FMZW5ndGhdW2JMZW5ndGhdO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXV0b2NvbXBsZXRlVXRpbHMuanMubWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUJBO0FBR0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTtBQVNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7QUFDQTtBQUdBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBV0E7QUFDQTtBQUdBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFlQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphql-language-service-interface/esm/autocompleteUtils.js\n");
2902
2903/***/ }),
2904
2905/***/ "../../graphql-language-service-interface/esm/getAutocompleteSuggestions.js":
2906/*!*************************************************************************************************************************!*\
2907 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-interface/esm/getAutocompleteSuggestions.js ***!
2908 \*************************************************************************************************************************/
2909/*! no static exports found */
2910/***/ (function(module, exports, __webpack_require__) {
2911
2912eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! vscode-languageserver-types */ \"../../../node_modules/vscode-languageserver-types/lib/esm/main.js\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! graphql-language-service-parser */ \"../../graphql-language-service-parser/esm/index.js\"), __webpack_require__(/*! ./autocompleteUtils */ \"../../graphql-language-service-interface/esm/autocompleteUtils.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _vscodeLanguageserverTypes, _graphql, _graphqlLanguageServiceParser, _autocompleteUtils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.getAutocompleteSuggestions = getAutocompleteSuggestions;\n _exports.getVariableCompletions = getVariableCompletions;\n _exports.getFragmentDefinitions = getFragmentDefinitions;\n _exports.getTokenAtPosition = getTokenAtPosition;\n _exports.runOnlineParser = runOnlineParser;\n _exports.canUseDirective = canUseDirective;\n _exports.getTypeInfo = getTypeInfo;\n\n const collectFragmentDefs = op => {\n const externalFragments = [];\n\n if (op) {\n (0, _graphql.visit)((0, _graphql.parse)(op, {\n experimentalFragmentVariables: true\n }), {\n FragmentDefinition(def) {\n externalFragments.push(def);\n }\n\n });\n }\n\n return externalFragments;\n };\n\n function getAutocompleteSuggestions(schema, queryText, cursor, contextToken, fragmentDefs) {\n var _a;\n\n const token = contextToken || getTokenAtPosition(queryText, cursor);\n const state = token.state.kind === 'Invalid' ? token.state.prevState : token.state;\n\n if (!state) {\n return [];\n }\n\n const kind = state.kind;\n const step = state.step;\n const typeInfo = getTypeInfo(schema, token.state);\n\n if (kind === _graphqlLanguageServiceParser.RuleKinds.DOCUMENT) {\n return (0, _autocompleteUtils.hintList)(token, [{\n label: 'query',\n kind: _vscodeLanguageserverTypes.CompletionItemKind.Function\n }, {\n label: 'mutation',\n kind: _vscodeLanguageserverTypes.CompletionItemKind.Function\n }, {\n label: 'subscription',\n kind: _vscodeLanguageserverTypes.CompletionItemKind.Function\n }, {\n label: 'fragment',\n kind: _vscodeLanguageserverTypes.CompletionItemKind.Function\n }, {\n label: '{',\n kind: _vscodeLanguageserverTypes.CompletionItemKind.Constructor\n }]);\n }\n\n if (kind === _graphqlLanguageServiceParser.RuleKinds.IMPLEMENTS || kind === _graphqlLanguageServiceParser.RuleKinds.NAMED_TYPE && ((_a = state.prevState) === null || _a === void 0 ? void 0 : _a.kind) === _graphqlLanguageServiceParser.RuleKinds.IMPLEMENTS) {\n return getSuggestionsForImplements(token, state, schema, queryText, typeInfo);\n }\n\n if (kind === _graphqlLanguageServiceParser.RuleKinds.SELECTION_SET || kind === _graphqlLanguageServiceParser.RuleKinds.FIELD || kind === _graphqlLanguageServiceParser.RuleKinds.ALIASED_FIELD) {\n return getSuggestionsForFieldNames(token, typeInfo, schema);\n }\n\n if (kind === _graphqlLanguageServiceParser.RuleKinds.ARGUMENTS || kind === _graphqlLanguageServiceParser.RuleKinds.ARGUMENT && step === 0) {\n const argDefs = typeInfo.argDefs;\n\n if (argDefs) {\n return (0, _autocompleteUtils.hintList)(token, argDefs.map(argDef => {\n var _a;\n\n return {\n label: argDef.name,\n detail: String(argDef.type),\n documentation: (_a = argDef.description) !== null && _a !== void 0 ? _a : undefined,\n kind: _vscodeLanguageserverTypes.CompletionItemKind.Variable,\n type: argDef.type\n };\n }));\n }\n }\n\n if (kind === _graphqlLanguageServiceParser.RuleKinds.OBJECT_VALUE || kind === _graphqlLanguageServiceParser.RuleKinds.OBJECT_FIELD && step === 0) {\n if (typeInfo.objectFieldDefs) {\n const objectFields = (0, _autocompleteUtils.objectValues)(typeInfo.objectFieldDefs);\n const completionKind = kind === _graphqlLanguageServiceParser.RuleKinds.OBJECT_VALUE ? _vscodeLanguageserverTypes.CompletionItemKind.Value : _vscodeLanguageserverTypes.CompletionItemKind.Field;\n return (0, _autocompleteUtils.hintList)(token, objectFields.map(field => {\n var _a;\n\n return {\n label: field.name,\n detail: String(field.type),\n documentation: (_a = field.description) !== null && _a !== void 0 ? _a : undefined,\n kind: completionKind,\n type: field.type\n };\n }));\n }\n }\n\n if (kind === _graphqlLanguageServiceParser.RuleKinds.ENUM_VALUE || kind === _graphqlLanguageServiceParser.RuleKinds.LIST_VALUE && step === 1 || kind === _graphqlLanguageServiceParser.RuleKinds.OBJECT_FIELD && step === 2 || kind === _graphqlLanguageServiceParser.RuleKinds.ARGUMENT && step === 2) {\n return getSuggestionsForInputValues(token, typeInfo, queryText, schema);\n }\n\n if (kind === _graphqlLanguageServiceParser.RuleKinds.VARIABLE && step === 1) {\n const namedInputType = (0, _graphql.getNamedType)(typeInfo.inputType);\n const variableDefinitions = getVariableCompletions(queryText, schema);\n return (0, _autocompleteUtils.hintList)(token, variableDefinitions.filter(v => v.detail === (namedInputType === null || namedInputType === void 0 ? void 0 : namedInputType.name)));\n }\n\n if (kind === _graphqlLanguageServiceParser.RuleKinds.TYPE_CONDITION && step === 1 || kind === _graphqlLanguageServiceParser.RuleKinds.NAMED_TYPE && state.prevState != null && state.prevState.kind === _graphqlLanguageServiceParser.RuleKinds.TYPE_CONDITION) {\n return getSuggestionsForFragmentTypeConditions(token, typeInfo, schema, kind);\n }\n\n if (kind === _graphqlLanguageServiceParser.RuleKinds.FRAGMENT_SPREAD && step === 1) {\n return getSuggestionsForFragmentSpread(token, typeInfo, schema, queryText, Array.isArray(fragmentDefs) ? fragmentDefs : collectFragmentDefs(fragmentDefs));\n }\n\n if (kind === _graphqlLanguageServiceParser.RuleKinds.VARIABLE_DEFINITION && step === 2 || kind === _graphqlLanguageServiceParser.RuleKinds.LIST_TYPE && step === 1 || kind === _graphqlLanguageServiceParser.RuleKinds.NAMED_TYPE && state.prevState && (state.prevState.kind === _graphqlLanguageServiceParser.RuleKinds.VARIABLE_DEFINITION || state.prevState.kind === _graphqlLanguageServiceParser.RuleKinds.LIST_TYPE || state.prevState.kind === _graphqlLanguageServiceParser.RuleKinds.NON_NULL_TYPE)) {\n return getSuggestionsForVariableDefinition(token, schema, kind);\n }\n\n if (kind === _graphqlLanguageServiceParser.RuleKinds.DIRECTIVE) {\n return getSuggestionsForDirective(token, state, schema, kind);\n }\n\n return [];\n }\n\n function getSuggestionsForFieldNames(token, typeInfo, schema) {\n if (typeInfo.parentType) {\n const parentType = typeInfo.parentType;\n let fields = [];\n\n if ('getFields' in parentType) {\n fields = (0, _autocompleteUtils.objectValues)(parentType.getFields());\n }\n\n if ((0, _graphql.isCompositeType)(parentType)) {\n fields.push(_graphql.TypeNameMetaFieldDef);\n }\n\n if (parentType === schema.getQueryType()) {\n fields.push(_graphql.SchemaMetaFieldDef, _graphql.TypeMetaFieldDef);\n }\n\n return (0, _autocompleteUtils.hintList)(token, fields.map((field, index) => {\n var _a;\n\n return {\n sortText: String(index) + field.name,\n label: field.name,\n detail: String(field.type),\n documentation: (_a = field.description) !== null && _a !== void 0 ? _a : undefined,\n deprecated: field.isDeprecated,\n isDeprecated: field.isDeprecated,\n deprecationReason: field.deprecationReason,\n kind: _vscodeLanguageserverTypes.CompletionItemKind.Field,\n type: field.type\n };\n }));\n }\n\n return [];\n }\n\n function getSuggestionsForInputValues(token, typeInfo, queryText, schema) {\n const namedInputType = (0, _graphql.getNamedType)(typeInfo.inputType);\n const queryVariables = getVariableCompletions(queryText, schema, true).filter(v => v.detail === namedInputType.name);\n\n if (namedInputType instanceof _graphql.GraphQLEnumType) {\n const values = namedInputType.getValues();\n return (0, _autocompleteUtils.hintList)(token, values.map(value => {\n var _a;\n\n return {\n label: value.name,\n detail: String(namedInputType),\n documentation: (_a = value.description) !== null && _a !== void 0 ? _a : undefined,\n deprecated: value.isDeprecated,\n isDeprecated: value.isDeprecated,\n deprecationReason: value.deprecationReason,\n kind: _vscodeLanguageserverTypes.CompletionItemKind.EnumMember,\n type: namedInputType\n };\n }).concat(queryVariables));\n } else if (namedInputType === _graphql.GraphQLBoolean) {\n return (0, _autocompleteUtils.hintList)(token, queryVariables.concat([{\n label: 'true',\n detail: String(_graphql.GraphQLBoolean),\n documentation: 'Not false.',\n kind: _vscodeLanguageserverTypes.CompletionItemKind.Variable,\n type: _graphql.GraphQLBoolean\n }, {\n label: 'false',\n detail: String(_graphql.GraphQLBoolean),\n documentation: 'Not true.',\n kind: _vscodeLanguageserverTypes.CompletionItemKind.Variable,\n type: _graphql.GraphQLBoolean\n }]));\n }\n\n return queryVariables;\n }\n\n function getSuggestionsForImplements(token, tokenState, schema, documentText, typeInfo) {\n if (tokenState.needsSeperator) {\n return [];\n }\n\n const typeMap = schema.getTypeMap();\n const schemaInterfaces = (0, _autocompleteUtils.objectValues)(typeMap).filter(_graphql.isInterfaceType);\n const schemaInterfaceNames = schemaInterfaces.map(({\n name\n }) => name);\n const inlineInterfaces = new Set();\n runOnlineParser(documentText, (_, state) => {\n var _a, _b, _c, _d, _e;\n\n if (state.name) {\n if (state.kind === _graphqlLanguageServiceParser.RuleKinds.INTERFACE_DEF && !schemaInterfaceNames.includes(state.name)) {\n inlineInterfaces.add(state.name);\n }\n\n if (state.kind === _graphqlLanguageServiceParser.RuleKinds.NAMED_TYPE && ((_a = state.prevState) === null || _a === void 0 ? void 0 : _a.kind) === _graphqlLanguageServiceParser.RuleKinds.IMPLEMENTS) {\n if (typeInfo.interfaceDef) {\n const existingType = (_b = typeInfo.interfaceDef) === null || _b === void 0 ? void 0 : _b.getInterfaces().find(({\n name\n }) => name === state.name);\n\n if (existingType) {\n return;\n }\n\n const type = schema.getType(state.name);\n const interfaceConfig = (_c = typeInfo.interfaceDef) === null || _c === void 0 ? void 0 : _c.toConfig();\n typeInfo.interfaceDef = new _graphql.GraphQLInterfaceType(Object.assign(Object.assign({}, interfaceConfig), {\n interfaces: [...interfaceConfig.interfaces, type || new _graphql.GraphQLInterfaceType({\n name: state.name,\n fields: {}\n })]\n }));\n } else if (typeInfo.objectTypeDef) {\n const existingType = (_d = typeInfo.objectTypeDef) === null || _d === void 0 ? void 0 : _d.getInterfaces().find(({\n name\n }) => name === state.name);\n\n if (existingType) {\n return;\n }\n\n const type = schema.getType(state.name);\n const objectTypeConfig = (_e = typeInfo.objectTypeDef) === null || _e === void 0 ? void 0 : _e.toConfig();\n typeInfo.objectTypeDef = new _graphql.GraphQLObjectType(Object.assign(Object.assign({}, objectTypeConfig), {\n interfaces: [...objectTypeConfig.interfaces, type || new _graphql.GraphQLInterfaceType({\n name: state.name,\n fields: {}\n })]\n }));\n }\n }\n }\n });\n const currentTypeToExtend = typeInfo.interfaceDef || typeInfo.objectTypeDef;\n const siblingInterfaces = (currentTypeToExtend === null || currentTypeToExtend === void 0 ? void 0 : currentTypeToExtend.getInterfaces()) || [];\n const siblingInterfaceNames = siblingInterfaces.map(({\n name\n }) => name);\n const possibleInterfaces = schemaInterfaces.concat([...inlineInterfaces].map(name => ({\n name\n }))).filter(({\n name\n }) => name !== (currentTypeToExtend === null || currentTypeToExtend === void 0 ? void 0 : currentTypeToExtend.name) && !siblingInterfaceNames.includes(name));\n return (0, _autocompleteUtils.hintList)(token, possibleInterfaces.map(type => {\n const result = {\n label: type.name,\n kind: _vscodeLanguageserverTypes.CompletionItemKind.Interface,\n type\n };\n\n if (type === null || type === void 0 ? void 0 : type.description) {\n result.documentation = type.description;\n }\n\n return result;\n }));\n }\n\n function getSuggestionsForFragmentTypeConditions(token, typeInfo, schema, _kind) {\n let possibleTypes;\n\n if (typeInfo.parentType) {\n if ((0, _graphql.isAbstractType)(typeInfo.parentType)) {\n const abstractType = (0, _graphql.assertAbstractType)(typeInfo.parentType);\n const possibleObjTypes = schema.getPossibleTypes(abstractType);\n const possibleIfaceMap = Object.create(null);\n possibleObjTypes.forEach(type => {\n type.getInterfaces().forEach(iface => {\n possibleIfaceMap[iface.name] = iface;\n });\n });\n possibleTypes = possibleObjTypes.concat((0, _autocompleteUtils.objectValues)(possibleIfaceMap));\n } else {\n possibleTypes = [typeInfo.parentType];\n }\n } else {\n const typeMap = schema.getTypeMap();\n possibleTypes = (0, _autocompleteUtils.objectValues)(typeMap).filter(_graphql.isCompositeType);\n }\n\n return (0, _autocompleteUtils.hintList)(token, possibleTypes.map(type => {\n const namedType = (0, _graphql.getNamedType)(type);\n return {\n label: String(type),\n documentation: namedType && namedType.description || '',\n kind: _vscodeLanguageserverTypes.CompletionItemKind.Field\n };\n }));\n }\n\n function getSuggestionsForFragmentSpread(token, typeInfo, schema, queryText, fragmentDefs) {\n if (!queryText) {\n return [];\n }\n\n const typeMap = schema.getTypeMap();\n const defState = (0, _autocompleteUtils.getDefinitionState)(token.state);\n const fragments = getFragmentDefinitions(queryText);\n\n if (fragmentDefs && fragmentDefs.length > 0) {\n fragments.push(...fragmentDefs);\n }\n\n const relevantFrags = fragments.filter(frag => typeMap[frag.typeCondition.name.value] && !(defState && defState.kind === _graphqlLanguageServiceParser.RuleKinds.FRAGMENT_DEFINITION && defState.name === frag.name.value) && (0, _graphql.isCompositeType)(typeInfo.parentType) && (0, _graphql.isCompositeType)(typeMap[frag.typeCondition.name.value]) && (0, _graphql.doTypesOverlap)(schema, typeInfo.parentType, typeMap[frag.typeCondition.name.value]));\n return (0, _autocompleteUtils.hintList)(token, relevantFrags.map(frag => ({\n label: frag.name.value,\n detail: String(typeMap[frag.typeCondition.name.value]),\n documentation: `fragment ${frag.name.value} on ${frag.typeCondition.name.value}`,\n kind: _vscodeLanguageserverTypes.CompletionItemKind.Field,\n type: typeMap[frag.typeCondition.name.value]\n })));\n }\n\n const getParentDefinition = (state, kind) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n\n if (((_a = state.prevState) === null || _a === void 0 ? void 0 : _a.kind) === kind) {\n return state.prevState;\n }\n\n if (((_c = (_b = state.prevState) === null || _b === void 0 ? void 0 : _b.prevState) === null || _c === void 0 ? void 0 : _c.kind) === kind) {\n return state.prevState.prevState;\n }\n\n if (((_f = (_e = (_d = state.prevState) === null || _d === void 0 ? void 0 : _d.prevState) === null || _e === void 0 ? void 0 : _e.prevState) === null || _f === void 0 ? void 0 : _f.kind) === kind) {\n return state.prevState.prevState.prevState;\n }\n\n if (((_k = (_j = (_h = (_g = state.prevState) === null || _g === void 0 ? void 0 : _g.prevState) === null || _h === void 0 ? void 0 : _h.prevState) === null || _j === void 0 ? void 0 : _j.prevState) === null || _k === void 0 ? void 0 : _k.kind) === kind) {\n return state.prevState.prevState.prevState.prevState;\n }\n };\n\n function getVariableCompletions(queryText, schema, forcePrefix = false) {\n let variableName;\n let variableType;\n const definitions = Object.create({});\n runOnlineParser(queryText, (_, state) => {\n if (state.kind === _graphqlLanguageServiceParser.RuleKinds.VARIABLE && state.name) {\n variableName = state.name;\n }\n\n if (state.kind === _graphqlLanguageServiceParser.RuleKinds.NAMED_TYPE && variableName) {\n const parentDefinition = getParentDefinition(state, _graphqlLanguageServiceParser.RuleKinds.TYPE);\n\n if (parentDefinition === null || parentDefinition === void 0 ? void 0 : parentDefinition.type) {\n variableType = schema.getType(parentDefinition === null || parentDefinition === void 0 ? void 0 : parentDefinition.type);\n }\n }\n\n if (variableName && variableType) {\n if (!definitions[variableName]) {\n definitions[variableName] = {\n detail: variableType.toString(),\n label: `$${variableName}`,\n type: variableType,\n kind: _vscodeLanguageserverTypes.CompletionItemKind.Variable\n };\n\n if (forcePrefix) {\n definitions[variableName].insertText = `$${variableName}`;\n }\n\n variableName = null;\n variableType = null;\n }\n }\n });\n return (0, _autocompleteUtils.objectValues)(definitions);\n }\n\n function getFragmentDefinitions(queryText) {\n const fragmentDefs = [];\n runOnlineParser(queryText, (_, state) => {\n if (state.kind === _graphqlLanguageServiceParser.RuleKinds.FRAGMENT_DEFINITION && state.name && state.type) {\n fragmentDefs.push({\n kind: _graphqlLanguageServiceParser.RuleKinds.FRAGMENT_DEFINITION,\n name: {\n kind: 'Name',\n value: state.name\n },\n selectionSet: {\n kind: _graphqlLanguageServiceParser.RuleKinds.SELECTION_SET,\n selections: []\n },\n typeCondition: {\n kind: _graphqlLanguageServiceParser.RuleKinds.NAMED_TYPE,\n name: {\n kind: 'Name',\n value: state.type\n }\n }\n });\n }\n });\n return fragmentDefs;\n }\n\n function getSuggestionsForVariableDefinition(token, schema, _kind) {\n const inputTypeMap = schema.getTypeMap();\n const inputTypes = (0, _autocompleteUtils.objectValues)(inputTypeMap).filter(_graphql.isInputType);\n return (0, _autocompleteUtils.hintList)(token, inputTypes.map(type => ({\n label: type.name,\n documentation: type.description,\n kind: _vscodeLanguageserverTypes.CompletionItemKind.Variable\n })));\n }\n\n function getSuggestionsForDirective(token, state, schema, _kind) {\n if (state.prevState && state.prevState.kind) {\n const directives = schema.getDirectives().filter(directive => canUseDirective(state.prevState, directive));\n return (0, _autocompleteUtils.hintList)(token, directives.map(directive => ({\n label: directive.name,\n documentation: directive.description || '',\n kind: _vscodeLanguageserverTypes.CompletionItemKind.Function\n })));\n }\n\n return [];\n }\n\n function getTokenAtPosition(queryText, cursor) {\n let styleAtCursor = null;\n let stateAtCursor = null;\n let stringAtCursor = null;\n const token = runOnlineParser(queryText, (stream, state, style, index) => {\n if (index === cursor.line) {\n if (stream.getCurrentPosition() >= cursor.character) {\n styleAtCursor = style;\n stateAtCursor = Object.assign({}, state);\n stringAtCursor = stream.current();\n return 'BREAK';\n }\n }\n });\n return {\n start: token.start,\n end: token.end,\n string: stringAtCursor || token.string,\n state: stateAtCursor || token.state,\n style: styleAtCursor || token.style\n };\n }\n\n function runOnlineParser(queryText, callback) {\n const lines = queryText.split('\\n');\n const parser = (0, _graphqlLanguageServiceParser.onlineParser)();\n let state = parser.startState();\n let style = '';\n let stream = new _graphqlLanguageServiceParser.CharacterStream('');\n\n for (let i = 0; i < lines.length; i++) {\n stream = new _graphqlLanguageServiceParser.CharacterStream(lines[i]);\n\n while (!stream.eol()) {\n style = parser.token(stream, state);\n const code = callback(stream, state, style, i);\n\n if (code === 'BREAK') {\n break;\n }\n }\n\n callback(stream, state, style, i);\n\n if (!state.kind) {\n state = parser.startState();\n }\n }\n\n return {\n start: stream.getStartOfToken(),\n end: stream.getCurrentPosition(),\n string: stream.current(),\n state,\n style\n };\n }\n\n function canUseDirective(state, directive) {\n if (!state || !state.kind) {\n return false;\n }\n\n const kind = state.kind;\n const locations = directive.locations;\n\n switch (kind) {\n case _graphqlLanguageServiceParser.RuleKinds.QUERY:\n return locations.indexOf('QUERY') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.MUTATION:\n return locations.indexOf('MUTATION') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.SUBSCRIPTION:\n return locations.indexOf('SUBSCRIPTION') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.FIELD:\n case _graphqlLanguageServiceParser.RuleKinds.ALIASED_FIELD:\n return locations.indexOf('FIELD') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.FRAGMENT_DEFINITION:\n return locations.indexOf('FRAGMENT_DEFINITION') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.FRAGMENT_SPREAD:\n return locations.indexOf('FRAGMENT_SPREAD') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.INLINE_FRAGMENT:\n return locations.indexOf('INLINE_FRAGMENT') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.SCHEMA_DEF:\n return locations.indexOf('SCHEMA') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.SCALAR_DEF:\n return locations.indexOf('SCALAR') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.OBJECT_TYPE_DEF:\n return locations.indexOf('OBJECT') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.FIELD_DEF:\n return locations.indexOf('FIELD_DEFINITION') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.INTERFACE_DEF:\n return locations.indexOf('INTERFACE') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.UNION_DEF:\n return locations.indexOf('UNION') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.ENUM_DEF:\n return locations.indexOf('ENUM') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.ENUM_VALUE:\n return locations.indexOf('ENUM_VALUE') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.INPUT_DEF:\n return locations.indexOf('INPUT_OBJECT') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.INPUT_VALUE_DEF:\n const prevStateKind = state.prevState && state.prevState.kind;\n\n switch (prevStateKind) {\n case _graphqlLanguageServiceParser.RuleKinds.ARGUMENTS_DEF:\n return locations.indexOf('ARGUMENT_DEFINITION') !== -1;\n\n case _graphqlLanguageServiceParser.RuleKinds.INPUT_DEF:\n return locations.indexOf('INPUT_FIELD_DEFINITION') !== -1;\n }\n\n }\n\n return false;\n }\n\n function getTypeInfo(schema, tokenState) {\n let argDef;\n let argDefs;\n let directiveDef;\n let enumValue;\n let fieldDef;\n let inputType;\n let objectTypeDef;\n let objectFieldDefs;\n let parentType;\n let type;\n let interfaceDef;\n (0, _autocompleteUtils.forEachState)(tokenState, state => {\n switch (state.kind) {\n case _graphqlLanguageServiceParser.RuleKinds.QUERY:\n case 'ShortQuery':\n type = schema.getQueryType();\n break;\n\n case _graphqlLanguageServiceParser.RuleKinds.MUTATION:\n type = schema.getMutationType();\n break;\n\n case _graphqlLanguageServiceParser.RuleKinds.SUBSCRIPTION:\n type = schema.getSubscriptionType();\n break;\n\n case _graphqlLanguageServiceParser.RuleKinds.INLINE_FRAGMENT:\n case _graphqlLanguageServiceParser.RuleKinds.FRAGMENT_DEFINITION:\n if (state.type) {\n type = schema.getType(state.type);\n }\n\n break;\n\n case _graphqlLanguageServiceParser.RuleKinds.FIELD:\n case _graphqlLanguageServiceParser.RuleKinds.ALIASED_FIELD:\n {\n if (!type || !state.name) {\n fieldDef = null;\n } else {\n fieldDef = parentType ? (0, _autocompleteUtils.getFieldDef)(schema, parentType, state.name) : null;\n type = fieldDef ? fieldDef.type : null;\n }\n\n break;\n }\n\n case _graphqlLanguageServiceParser.RuleKinds.SELECTION_SET:\n parentType = (0, _graphql.getNamedType)(type);\n break;\n\n case _graphqlLanguageServiceParser.RuleKinds.DIRECTIVE:\n directiveDef = state.name ? schema.getDirective(state.name) : null;\n break;\n\n case _graphqlLanguageServiceParser.RuleKinds.INTERFACE_DEF:\n if (state.name) {\n objectTypeDef = null;\n interfaceDef = new _graphql.GraphQLInterfaceType({\n name: state.name,\n interfaces: [],\n fields: {}\n });\n }\n\n break;\n\n case _graphqlLanguageServiceParser.RuleKinds.OBJECT_TYPE_DEF:\n if (state.name) {\n interfaceDef = null;\n objectTypeDef = new _graphql.GraphQLObjectType({\n name: state.name,\n interfaces: [],\n fields: {}\n });\n }\n\n break;\n\n case _graphqlLanguageServiceParser.RuleKinds.ARGUMENTS:\n {\n if (!state.prevState) {\n argDefs = null;\n } else {\n switch (state.prevState.kind) {\n case _graphqlLanguageServiceParser.RuleKinds.FIELD:\n argDefs = fieldDef && fieldDef.args;\n break;\n\n case _graphqlLanguageServiceParser.RuleKinds.DIRECTIVE:\n argDefs = directiveDef && directiveDef.args;\n break;\n\n case _graphqlLanguageServiceParser.RuleKinds.ALIASED_FIELD:\n {\n const name = state.prevState && state.prevState.name;\n\n if (!name) {\n argDefs = null;\n break;\n }\n\n const field = parentType ? (0, _autocompleteUtils.getFieldDef)(schema, parentType, name) : null;\n\n if (!field) {\n argDefs = null;\n break;\n }\n\n argDefs = field.args;\n break;\n }\n\n default:\n argDefs = null;\n break;\n }\n }\n\n break;\n }\n\n case _graphqlLanguageServiceParser.RuleKinds.ARGUMENT:\n if (argDefs) {\n for (let i = 0; i < argDefs.length; i++) {\n if (argDefs[i].name === state.name) {\n argDef = argDefs[i];\n break;\n }\n }\n }\n\n inputType = argDef && argDef.type;\n break;\n\n case _graphqlLanguageServiceParser.RuleKinds.ENUM_VALUE:\n const enumType = (0, _graphql.getNamedType)(inputType);\n enumValue = enumType instanceof _graphql.GraphQLEnumType ? find(enumType.getValues(), val => val.value === state.name) : null;\n break;\n\n case _graphqlLanguageServiceParser.RuleKinds.LIST_VALUE:\n const nullableType = (0, _graphql.getNullableType)(inputType);\n inputType = nullableType instanceof _graphql.GraphQLList ? nullableType.ofType : null;\n break;\n\n case _graphqlLanguageServiceParser.RuleKinds.OBJECT_VALUE:\n const objectType = (0, _graphql.getNamedType)(inputType);\n objectFieldDefs = objectType instanceof _graphql.GraphQLInputObjectType ? objectType.getFields() : null;\n break;\n\n case _graphqlLanguageServiceParser.RuleKinds.OBJECT_FIELD:\n const objectField = state.name && objectFieldDefs ? objectFieldDefs[state.name] : null;\n inputType = objectField && objectField.type;\n break;\n\n case _graphqlLanguageServiceParser.RuleKinds.NAMED_TYPE:\n if (state.name) {\n type = schema.getType(state.name);\n }\n\n break;\n }\n });\n return {\n argDef,\n argDefs,\n directiveDef,\n enumValue,\n fieldDef,\n inputType,\n objectFieldDefs,\n parentType,\n type,\n interfaceDef,\n objectTypeDef\n };\n }\n\n function find(array, predicate) {\n for (let i = 0; i < array.length; i++) {\n if (predicate(array[i])) {\n return array[i];\n }\n }\n\n return null;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLWludGVyZmFjZS9lc20vZ2V0QXV0b2NvbXBsZXRlU3VnZ2VzdGlvbnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uLi9zcmMvZ2V0QXV0b2NvbXBsZXRlU3VnZ2VzdGlvbnMudHM/MDkxMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wbGV0aW9uSXRlbUtpbmQgfSBmcm9tICd2c2NvZGUtbGFuZ3VhZ2VzZXJ2ZXItdHlwZXMnO1xuaW1wb3J0IHsgaXNJbnRlcmZhY2VUeXBlLCBHcmFwaFFMSW50ZXJmYWNlVHlwZSwgR3JhcGhRTE9iamVjdFR5cGUsIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBHcmFwaFFMQm9vbGVhbiwgR3JhcGhRTEVudW1UeXBlLCBHcmFwaFFMSW5wdXRPYmplY3RUeXBlLCBHcmFwaFFMTGlzdCwgU2NoZW1hTWV0YUZpZWxkRGVmLCBUeXBlTWV0YUZpZWxkRGVmLCBUeXBlTmFtZU1ldGFGaWVsZERlZiwgYXNzZXJ0QWJzdHJhY3RUeXBlLCBkb1R5cGVzT3ZlcmxhcCwgZ2V0TmFtZWRUeXBlLCBnZXROdWxsYWJsZVR5cGUsIGlzQWJzdHJhY3RUeXBlLCBpc0NvbXBvc2l0ZVR5cGUsIGlzSW5wdXRUeXBlLCB2aXNpdCwgcGFyc2UsIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBDaGFyYWN0ZXJTdHJlYW0sIG9ubGluZVBhcnNlciwgUnVsZUtpbmRzLCB9IGZyb20gJ2dyYXBocWwtbGFuZ3VhZ2Utc2VydmljZS1wYXJzZXInO1xuaW1wb3J0IHsgZm9yRWFjaFN0YXRlLCBnZXREZWZpbml0aW9uU3RhdGUsIGdldEZpZWxkRGVmLCBoaW50TGlzdCwgb2JqZWN0VmFsdWVzLCB9IGZyb20gJy4vYXV0b2NvbXBsZXRlVXRpbHMnO1xuY29uc3QgY29sbGVjdEZyYWdtZW50RGVmcyA9IChvcCkgPT4ge1xuICAgIGNvbnN0IGV4dGVybmFsRnJhZ21lbnRzID0gW107XG4gICAgaWYgKG9wKSB7XG4gICAgICAgIHZpc2l0KHBhcnNlKG9wLCB7XG4gICAgICAgICAgICBleHBlcmltZW50YWxGcmFnbWVudFZhcmlhYmxlczogdHJ1ZSxcbiAgICAgICAgfSksIHtcbiAgICAgICAgICAgIEZyYWdtZW50RGVmaW5pdGlvbihkZWYpIHtcbiAgICAgICAgICAgICAgICBleHRlcm5hbEZyYWdtZW50cy5wdXNoKGRlZik7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGV4dGVybmFsRnJhZ21lbnRzO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRBdXRvY29tcGxldGVTdWdnZXN0aW9ucyhzY2hlbWEsIHF1ZXJ5VGV4dCwgY3Vyc29yLCBjb250ZXh0VG9rZW4sIGZyYWdtZW50RGVmcykge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCB0b2tlbiA9IGNvbnRleHRUb2tlbiB8fCBnZXRUb2tlbkF0UG9zaXRpb24ocXVlcnlUZXh0LCBjdXJzb3IpO1xuICAgIGNvbnN0IHN0YXRlID0gdG9rZW4uc3RhdGUua2luZCA9PT0gJ0ludmFsaWQnID8gdG9rZW4uc3RhdGUucHJldlN0YXRlIDogdG9rZW4uc3RhdGU7XG4gICAgaWYgKCFzdGF0ZSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGtpbmQgPSBzdGF0ZS5raW5kO1xuICAgIGNvbnN0IHN0ZXAgPSBzdGF0ZS5zdGVwO1xuICAgIGNvbnN0IHR5cGVJbmZvID0gZ2V0VHlwZUluZm8oc2NoZW1hLCB0b2tlbi5zdGF0ZSk7XG4gICAgaWYgKGtpbmQgPT09IFJ1bGVLaW5kcy5ET0NVTUVOVCkge1xuICAgICAgICByZXR1cm4gaGludExpc3QodG9rZW4sIFtcbiAgICAgICAgICAgIHsgbGFiZWw6ICdxdWVyeScsIGtpbmQ6IENvbXBsZXRpb25JdGVtS2luZC5GdW5jdGlvbiB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ211dGF0aW9uJywga2luZDogQ29tcGxldGlvbkl0ZW1LaW5kLkZ1bmN0aW9uIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnc3Vic2NyaXB0aW9uJywga2luZDogQ29tcGxldGlvbkl0ZW1LaW5kLkZ1bmN0aW9uIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnZnJhZ21lbnQnLCBraW5kOiBDb21wbGV0aW9uSXRlbUtpbmQuRnVuY3Rpb24gfSxcbiAgICAgICAgICAgIHsgbGFiZWw6ICd7Jywga2luZDogQ29tcGxldGlvbkl0ZW1LaW5kLkNvbnN0cnVjdG9yIH0sXG4gICAgICAgIF0pO1xuICAgIH1cbiAgICBpZiAoa2luZCA9PT0gUnVsZUtpbmRzLklNUExFTUVOVFMgfHxcbiAgICAgICAgKGtpbmQgPT09IFJ1bGVLaW5kcy5OQU1FRF9UWVBFICYmXG4gICAgICAgICAgICAoKF9hID0gc3RhdGUucHJldlN0YXRlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eua2luZCkgPT09IFJ1bGVLaW5kcy5JTVBMRU1FTlRTKSkge1xuICAgICAgICByZXR1cm4gZ2V0U3VnZ2VzdGlvbnNGb3JJbXBsZW1lbnRzKHRva2VuLCBzdGF0ZSwgc2NoZW1hLCBxdWVyeVRleHQsIHR5cGVJbmZvKTtcbiAgICB9XG4gICAgaWYgKGtpbmQgPT09IFJ1bGVLaW5kcy5TRUxFQ1RJT05fU0VUIHx8XG4gICAgICAgIGtpbmQgPT09IFJ1bGVLaW5kcy5GSUVMRCB8fFxuICAgICAgICBraW5kID09PSBSdWxlS2luZHMuQUxJQVNFRF9GSUVMRCkge1xuICAgICAgICByZXR1cm4gZ2V0U3VnZ2VzdGlvbnNGb3JGaWVsZE5hbWVzKHRva2VuLCB0eXBlSW5mbywgc2NoZW1hKTtcbiAgICB9XG4gICAgaWYgKGtpbmQgPT09IFJ1bGVLaW5kcy5BUkdVTUVOVFMgfHxcbiAgICAgICAgKGtpbmQgPT09IFJ1bGVLaW5kcy5BUkdVTUVOVCAmJiBzdGVwID09PSAwKSkge1xuICAgICAgICBjb25zdCBhcmdEZWZzID0gdHlwZUluZm8uYXJnRGVmcztcbiAgICAgICAgaWYgKGFyZ0RlZnMpIHtcbiAgICAgICAgICAgIHJldHVybiBoaW50TGlzdCh0b2tlbiwgYXJnRGVmcy5tYXAoYXJnRGVmID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBhcmdEZWYubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiBTdHJpbmcoYXJnRGVmLnR5cGUpLFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uOiAoX2EgPSBhcmdEZWYuZGVzY3JpcHRpb24pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAga2luZDogQ29tcGxldGlvbkl0ZW1LaW5kLlZhcmlhYmxlLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBhcmdEZWYudHlwZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoa2luZCA9PT0gUnVsZUtpbmRzLk9CSkVDVF9WQUxVRSB8fFxuICAgICAgICAoa2luZCA9PT0gUnVsZUtpbmRzLk9CSkVDVF9GSUVMRCAmJiBzdGVwID09PSAwKSkge1xuICAgICAgICBpZiAodHlwZUluZm8ub2JqZWN0RmllbGREZWZzKSB7XG4gICAgICAgICAgICBjb25zdCBvYmplY3RGaWVsZHMgPSBvYmplY3RWYWx1ZXModHlwZUluZm8ub2JqZWN0RmllbGREZWZzKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRpb25LaW5kID0ga2luZCA9PT0gUnVsZUtpbmRzLk9CSkVDVF9WQUxVRVxuICAgICAgICAgICAgICAgID8gQ29tcGxldGlvbkl0ZW1LaW5kLlZhbHVlXG4gICAgICAgICAgICAgICAgOiBDb21wbGV0aW9uSXRlbUtpbmQuRmllbGQ7XG4gICAgICAgICAgICByZXR1cm4gaGludExpc3QodG9rZW4sIG9iamVjdEZpZWxkcy5tYXAoZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGZpZWxkLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGRldGFpbDogU3RyaW5nKGZpZWxkLnR5cGUpLFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uOiAoX2EgPSBmaWVsZC5kZXNjcmlwdGlvbikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBraW5kOiBjb21wbGV0aW9uS2luZCxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogZmllbGQudHlwZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoa2luZCA9PT0gUnVsZUtpbmRzLkVOVU1fVkFMVUUgfHxcbiAgICAgICAgKGtpbmQgPT09IFJ1bGVLaW5kcy5MSVNUX1ZBTFVFICYmIHN0ZXAgPT09IDEpIHx8XG4gICAgICAgIChraW5kID09PSBSdWxlS2luZHMuT0JKRUNUX0ZJRUxEICYmIHN0ZXAgPT09IDIpIHx8XG4gICAgICAgIChraW5kID09PSBSdWxlS2luZHMuQVJHVU1FTlQgJiYgc3RlcCA9PT0gMikpIHtcbiAgICAgICAgcmV0dXJuIGdldFN1Z2dlc3Rpb25zRm9ySW5wdXRWYWx1ZXModG9rZW4sIHR5cGVJbmZvLCBxdWVyeVRleHQsIHNjaGVtYSk7XG4gICAgfVxuICAgIGlmIChraW5kID09PSBSdWxlS2luZHMuVkFSSUFCTEUgJiYgc3RlcCA9PT0gMSkge1xuICAgICAgICBjb25zdCBuYW1lZElucHV0VHlwZSA9IGdldE5hbWVkVHlwZSh0eXBlSW5mby5pbnB1dFR5cGUpO1xuICAgICAgICBjb25zdCB2YXJpYWJsZURlZmluaXRpb25zID0gZ2V0VmFyaWFibGVDb21wbGV0aW9ucyhxdWVyeVRleHQsIHNjaGVtYSk7XG4gICAgICAgIHJldHVybiBoaW50TGlzdCh0b2tlbiwgdmFyaWFibGVEZWZpbml0aW9ucy5maWx0ZXIodiA9PiB2LmRldGFpbCA9PT0gKG5hbWVkSW5wdXRUeXBlID09PSBudWxsIHx8IG5hbWVkSW5wdXRUeXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBuYW1lZElucHV0VHlwZS5uYW1lKSkpO1xuICAgIH1cbiAgICBpZiAoKGtpbmQgPT09IFJ1bGVLaW5kcy5UWVBFX0NPTkRJVElPTiAmJiBzdGVwID09PSAxKSB8fFxuICAgICAgICAoa2luZCA9PT0gUnVsZUtpbmRzLk5BTUVEX1RZUEUgJiZcbiAgICAgICAgICAgIHN0YXRlLnByZXZTdGF0ZSAhPSBudWxsICYmXG4gICAgICAgICAgICBzdGF0ZS5wcmV2U3RhdGUua2luZCA9PT0gUnVsZUtpbmRzLlRZUEVfQ09ORElUSU9OKSkge1xuICAgICAgICByZXR1cm4gZ2V0U3VnZ2VzdGlvbnNGb3JGcmFnbWVudFR5cGVDb25kaXRpb25zKHRva2VuLCB0eXBlSW5mbywgc2NoZW1hLCBraW5kKTtcbiAgICB9XG4gICAgaWYgKGtpbmQgPT09IFJ1bGVLaW5kcy5GUkFHTUVOVF9TUFJFQUQgJiYgc3RlcCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gZ2V0U3VnZ2VzdGlvbnNGb3JGcmFnbWVudFNwcmVhZCh0b2tlbiwgdHlwZUluZm8sIHNjaGVtYSwgcXVlcnlUZXh0LCBBcnJheS5pc0FycmF5KGZyYWdtZW50RGVmcylcbiAgICAgICAgICAgID8gZnJhZ21lbnREZWZzXG4gICAgICAgICAgICA6IGNvbGxlY3RGcmFnbWVudERlZnMoZnJhZ21lbnREZWZzKSk7XG4gICAgfVxuICAgIGlmICgoa2luZCA9PT0gUnVsZUtpbmRzLlZBUklBQkxFX0RFRklOSVRJT04gJiYgc3RlcCA9PT0gMikgfHxcbiAgICAgICAgKGtpbmQgPT09IFJ1bGVLaW5kcy5MSVNUX1RZUEUgJiYgc3RlcCA9PT0gMSkgfHxcbiAgICAgICAgKGtpbmQgPT09IFJ1bGVLaW5kcy5OQU1FRF9UWVBFICYmXG4gICAgICAgICAgICBzdGF0ZS5wcmV2U3RhdGUgJiZcbiAgICAgICAgICAgIChzdGF0ZS5wcmV2U3RhdGUua2luZCA9PT0gUnVsZUtpbmRzLlZBUklBQkxFX0RFRklOSVRJT04gfHxcbiAgICAgICAgICAgICAgICBzdGF0ZS5wcmV2U3RhdGUua2luZCA9PT0gUnVsZUtpbmRzLkxJU1RfVFlQRSB8fFxuICAgICAgICAgICAgICAgIHN0YXRlLnByZXZTdGF0ZS5raW5kID09PSBSdWxlS2luZHMuTk9OX05VTExfVFlQRSkpKSB7XG4gICAgICAgIHJldHVybiBnZXRTdWdnZXN0aW9uc0ZvclZhcmlhYmxlRGVmaW5pdGlvbih0b2tlbiwgc2NoZW1hLCBraW5kKTtcbiAgICB9XG4gICAgaWYgKGtpbmQgPT09IFJ1bGVLaW5kcy5ESVJFQ1RJVkUpIHtcbiAgICAgICAgcmV0dXJuIGdldFN1Z2dlc3Rpb25zRm9yRGlyZWN0aXZlKHRva2VuLCBzdGF0ZSwgc2NoZW1hLCBraW5kKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xufVxuZnVuY3Rpb24gZ2V0U3VnZ2VzdGlvbnNGb3JGaWVsZE5hbWVzKHRva2VuLCB0eXBlSW5mbywgc2NoZW1hKSB7XG4gICAgaWYgKHR5cGVJbmZvLnBhcmVudFR5cGUpIHtcbiAgICAgICAgY29uc3QgcGFyZW50VHlwZSA9IHR5cGVJbmZvLnBhcmVudFR5cGU7XG4gICAgICAgIGxldCBmaWVsZHMgPSBbXTtcbiAgICAgICAgaWYgKCdnZXRGaWVsZHMnIGluIHBhcmVudFR5cGUpIHtcbiAgICAgICAgICAgIGZpZWxkcyA9IG9iamVjdFZhbHVlcyhwYXJlbnRUeXBlLmdldEZpZWxkcygpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDb21wb3NpdGVUeXBlKHBhcmVudFR5cGUpKSB7XG4gICAgICAgICAgICBmaWVsZHMucHVzaChUeXBlTmFtZU1ldGFGaWVsZERlZik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmVudFR5cGUgPT09IHNjaGVtYS5nZXRRdWVyeVR5cGUoKSkge1xuICAgICAgICAgICAgZmllbGRzLnB1c2goU2NoZW1hTWV0YUZpZWxkRGVmLCBUeXBlTWV0YUZpZWxkRGVmKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGludExpc3QodG9rZW4sIGZpZWxkcy5tYXAoKGZpZWxkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuICh7XG4gICAgICAgICAgICAgICAgc29ydFRleHQ6IFN0cmluZyhpbmRleCkgKyBmaWVsZC5uYW1lLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBmaWVsZC5uYW1lLFxuICAgICAgICAgICAgICAgIGRldGFpbDogU3RyaW5nKGZpZWxkLnR5cGUpLFxuICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb246IChfYSA9IGZpZWxkLmRlc2NyaXB0aW9uKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZGVwcmVjYXRlZDogZmllbGQuaXNEZXByZWNhdGVkLFxuICAgICAgICAgICAgICAgIGlzRGVwcmVjYXRlZDogZmllbGQuaXNEZXByZWNhdGVkLFxuICAgICAgICAgICAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiBmaWVsZC5kZXByZWNhdGlvblJlYXNvbixcbiAgICAgICAgICAgICAgICBraW5kOiBDb21wbGV0aW9uSXRlbUtpbmQuRmllbGQsXG4gICAgICAgICAgICAgICAgdHlwZTogZmllbGQudHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KSk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbn1cbmZ1bmN0aW9uIGdldFN1Z2dlc3Rpb25zRm9ySW5wdXRWYWx1ZXModG9rZW4sIHR5cGVJbmZvLCBxdWVyeVRleHQsIHNjaGVtYSkge1xuICAgIGNvbnN0IG5hbWVkSW5wdXRUeXBlID0gZ2V0TmFtZWRUeXBlKHR5cGVJbmZvLmlucHV0VHlwZSk7XG4gICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSBnZXRWYXJpYWJsZUNvbXBsZXRpb25zKHF1ZXJ5VGV4dCwgc2NoZW1hLCB0cnVlKS5maWx0ZXIodiA9PiB2LmRldGFpbCA9PT0gbmFtZWRJbnB1dFR5cGUubmFtZSk7XG4gICAgaWYgKG5hbWVkSW5wdXRUeXBlIGluc3RhbmNlb2YgR3JhcGhRTEVudW1UeXBlKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IG5hbWVkSW5wdXRUeXBlLmdldFZhbHVlcygpO1xuICAgICAgICByZXR1cm4gaGludExpc3QodG9rZW4sIHZhbHVlc1xuICAgICAgICAgICAgLm1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiAoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiB2YWx1ZS5uYW1lLFxuICAgICAgICAgICAgICAgIGRldGFpbDogU3RyaW5nKG5hbWVkSW5wdXRUeXBlKSxcbiAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uOiAoX2EgPSB2YWx1ZS5kZXNjcmlwdGlvbikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGRlcHJlY2F0ZWQ6IHZhbHVlLmlzRGVwcmVjYXRlZCxcbiAgICAgICAgICAgICAgICBpc0RlcHJlY2F0ZWQ6IHZhbHVlLmlzRGVwcmVjYXRlZCxcbiAgICAgICAgICAgICAgICBkZXByZWNhdGlvblJlYXNvbjogdmFsdWUuZGVwcmVjYXRpb25SZWFzb24sXG4gICAgICAgICAgICAgICAga2luZDogQ29tcGxldGlvbkl0ZW1LaW5kLkVudW1NZW1iZXIsXG4gICAgICAgICAgICAgICAgdHlwZTogbmFtZWRJbnB1dFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5jb25jYXQocXVlcnlWYXJpYWJsZXMpKTtcbiAgICB9XG4gICAgZWxzZSBpZiAobmFtZWRJbnB1dFR5cGUgPT09IEdyYXBoUUxCb29sZWFuKSB7XG4gICAgICAgIHJldHVybiBoaW50TGlzdCh0b2tlbiwgcXVlcnlWYXJpYWJsZXMuY29uY2F0KFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ3RydWUnLFxuICAgICAgICAgICAgICAgIGRldGFpbDogU3RyaW5nKEdyYXBoUUxCb29sZWFuKSxcbiAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uOiAnTm90IGZhbHNlLicsXG4gICAgICAgICAgICAgICAga2luZDogQ29tcGxldGlvbkl0ZW1LaW5kLlZhcmlhYmxlLFxuICAgICAgICAgICAgICAgIHR5cGU6IEdyYXBoUUxCb29sZWFuLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2ZhbHNlJyxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IFN0cmluZyhHcmFwaFFMQm9vbGVhbiksXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbjogJ05vdCB0cnVlLicsXG4gICAgICAgICAgICAgICAga2luZDogQ29tcGxldGlvbkl0ZW1LaW5kLlZhcmlhYmxlLFxuICAgICAgICAgICAgICAgIHR5cGU6IEdyYXBoUUxCb29sZWFuLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSkpO1xuICAgIH1cbiAgICByZXR1cm4gcXVlcnlWYXJpYWJsZXM7XG59XG5mdW5jdGlvbiBnZXRTdWdnZXN0aW9uc0ZvckltcGxlbWVudHModG9rZW4sIHRva2VuU3RhdGUsIHNjaGVtYSwgZG9jdW1lbnRUZXh0LCB0eXBlSW5mbykge1xuICAgIGlmICh0b2tlblN0YXRlLm5lZWRzU2VwZXJhdG9yKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgdHlwZU1hcCA9IHNjaGVtYS5nZXRUeXBlTWFwKCk7XG4gICAgY29uc3Qgc2NoZW1hSW50ZXJmYWNlcyA9IG9iamVjdFZhbHVlcyh0eXBlTWFwKS5maWx0ZXIoaXNJbnRlcmZhY2VUeXBlKTtcbiAgICBjb25zdCBzY2hlbWFJbnRlcmZhY2VOYW1lcyA9IHNjaGVtYUludGVyZmFjZXMubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSk7XG4gICAgY29uc3QgaW5saW5lSW50ZXJmYWNlcyA9IG5ldyBTZXQoKTtcbiAgICBydW5PbmxpbmVQYXJzZXIoZG9jdW1lbnRUZXh0LCAoXywgc3RhdGUpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgICAgaWYgKHN0YXRlLm5hbWUpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5raW5kID09PSBSdWxlS2luZHMuSU5URVJGQUNFX0RFRiAmJlxuICAgICAgICAgICAgICAgICFzY2hlbWFJbnRlcmZhY2VOYW1lcy5pbmNsdWRlcyhzdGF0ZS5uYW1lKSkge1xuICAgICAgICAgICAgICAgIGlubGluZUludGVyZmFjZXMuYWRkKHN0YXRlLm5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRlLmtpbmQgPT09IFJ1bGVLaW5kcy5OQU1FRF9UWVBFICYmXG4gICAgICAgICAgICAgICAgKChfYSA9IHN0YXRlLnByZXZTdGF0ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmtpbmQpID09PSBSdWxlS2luZHMuSU1QTEVNRU5UUykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlSW5mby5pbnRlcmZhY2VEZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdUeXBlID0gKF9iID0gdHlwZUluZm8uaW50ZXJmYWNlRGVmKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZ2V0SW50ZXJmYWNlcygpLmZpbmQoKHsgbmFtZSB9KSA9PiBuYW1lID09PSBzdGF0ZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nVHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBzY2hlbWEuZ2V0VHlwZShzdGF0ZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJmYWNlQ29uZmlnID0gKF9jID0gdHlwZUluZm8uaW50ZXJmYWNlRGVmKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MudG9Db25maWcoKTtcbiAgICAgICAgICAgICAgICAgICAgdHlwZUluZm8uaW50ZXJmYWNlRGVmID0gbmV3IEdyYXBoUUxJbnRlcmZhY2VUeXBlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaW50ZXJmYWNlQ29uZmlnKSwgeyBpbnRlcmZhY2VzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaW50ZXJmYWNlQ29uZmlnLmludGVyZmFjZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgR3JhcGhRTEludGVyZmFjZVR5cGUoeyBuYW1lOiBzdGF0ZS5uYW1lLCBmaWVsZHM6IHt9IH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVJbmZvLm9iamVjdFR5cGVEZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdUeXBlID0gKF9kID0gdHlwZUluZm8ub2JqZWN0VHlwZURlZikgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmdldEludGVyZmFjZXMoKS5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gc3RhdGUubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1R5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gc2NoZW1hLmdldFR5cGUoc3RhdGUubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9iamVjdFR5cGVDb25maWcgPSAoX2UgPSB0eXBlSW5mby5vYmplY3RUeXBlRGVmKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UudG9Db25maWcoKTtcbiAgICAgICAgICAgICAgICAgICAgdHlwZUluZm8ub2JqZWN0VHlwZURlZiA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9iamVjdFR5cGVDb25maWcpLCB7IGludGVyZmFjZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLmludGVyZmFjZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgR3JhcGhRTEludGVyZmFjZVR5cGUoeyBuYW1lOiBzdGF0ZS5uYW1lLCBmaWVsZHM6IHt9IH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY3VycmVudFR5cGVUb0V4dGVuZCA9IHR5cGVJbmZvLmludGVyZmFjZURlZiB8fCB0eXBlSW5mby5vYmplY3RUeXBlRGVmO1xuICAgIGNvbnN0IHNpYmxpbmdJbnRlcmZhY2VzID0gKGN1cnJlbnRUeXBlVG9FeHRlbmQgPT09IG51bGwgfHwgY3VycmVudFR5cGVUb0V4dGVuZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3VycmVudFR5cGVUb0V4dGVuZC5nZXRJbnRlcmZhY2VzKCkpIHx8IFtdO1xuICAgIGNvbnN0IHNpYmxpbmdJbnRlcmZhY2VOYW1lcyA9IHNpYmxpbmdJbnRlcmZhY2VzLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpO1xuICAgIGNvbnN0IHBvc3NpYmxlSW50ZXJmYWNlcyA9IHNjaGVtYUludGVyZmFjZXNcbiAgICAgICAgLmNvbmNhdChbLi4uaW5saW5lSW50ZXJmYWNlc10ubWFwKG5hbWUgPT4gKHsgbmFtZSB9KSkpXG4gICAgICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuYW1lICE9PSAoY3VycmVudFR5cGVUb0V4dGVuZCA9PT0gbnVsbCB8fCBjdXJyZW50VHlwZVRvRXh0ZW5kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXJyZW50VHlwZVRvRXh0ZW5kLm5hbWUpICYmXG4gICAgICAgICFzaWJsaW5nSW50ZXJmYWNlTmFtZXMuaW5jbHVkZXMobmFtZSkpO1xuICAgIHJldHVybiBoaW50TGlzdCh0b2tlbiwgcG9zc2libGVJbnRlcmZhY2VzLm1hcCh0eXBlID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICAgICAgbGFiZWw6IHR5cGUubmFtZSxcbiAgICAgICAgICAgIGtpbmQ6IENvbXBsZXRpb25JdGVtS2luZC5JbnRlcmZhY2UsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICB9O1xuICAgICAgICBpZiAodHlwZSA9PT0gbnVsbCB8fCB0eXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0eXBlLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICByZXN1bHQuZG9jdW1lbnRhdGlvbiA9IHR5cGUuZGVzY3JpcHRpb247XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSk7XG59XG5mdW5jdGlvbiBnZXRTdWdnZXN0aW9uc0ZvckZyYWdtZW50VHlwZUNvbmRpdGlvbnModG9rZW4sIHR5cGVJbmZvLCBzY2hlbWEsIF9raW5kKSB7XG4gICAgbGV0IHBvc3NpYmxlVHlwZXM7XG4gICAgaWYgKHR5cGVJbmZvLnBhcmVudFR5cGUpIHtcbiAgICAgICAgaWYgKGlzQWJzdHJhY3RUeXBlKHR5cGVJbmZvLnBhcmVudFR5cGUpKSB7XG4gICAgICAgICAgICBjb25zdCBhYnN0cmFjdFR5cGUgPSBhc3NlcnRBYnN0cmFjdFR5cGUodHlwZUluZm8ucGFyZW50VHlwZSk7XG4gICAgICAgICAgICBjb25zdCBwb3NzaWJsZU9ialR5cGVzID0gc2NoZW1hLmdldFBvc3NpYmxlVHlwZXMoYWJzdHJhY3RUeXBlKTtcbiAgICAgICAgICAgIGNvbnN0IHBvc3NpYmxlSWZhY2VNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgICAgcG9zc2libGVPYmpUeXBlcy5mb3JFYWNoKHR5cGUgPT4ge1xuICAgICAgICAgICAgICAgIHR5cGUuZ2V0SW50ZXJmYWNlcygpLmZvckVhY2goaWZhY2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZUlmYWNlTWFwW2lmYWNlLm5hbWVdID0gaWZhY2U7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHBvc3NpYmxlVHlwZXMgPSBwb3NzaWJsZU9ialR5cGVzLmNvbmNhdChvYmplY3RWYWx1ZXMocG9zc2libGVJZmFjZU1hcCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcG9zc2libGVUeXBlcyA9IFt0eXBlSW5mby5wYXJlbnRUeXBlXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgdHlwZU1hcCA9IHNjaGVtYS5nZXRUeXBlTWFwKCk7XG4gICAgICAgIHBvc3NpYmxlVHlwZXMgPSBvYmplY3RWYWx1ZXModHlwZU1hcCkuZmlsdGVyKGlzQ29tcG9zaXRlVHlwZSk7XG4gICAgfVxuICAgIHJldHVybiBoaW50TGlzdCh0b2tlbiwgcG9zc2libGVUeXBlcy5tYXAodHlwZSA9PiB7XG4gICAgICAgIGNvbnN0IG5hbWVkVHlwZSA9IGdldE5hbWVkVHlwZSh0eXBlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxhYmVsOiBTdHJpbmcodHlwZSksXG4gICAgICAgICAgICBkb2N1bWVudGF0aW9uOiAobmFtZWRUeXBlICYmIG5hbWVkVHlwZS5kZXNjcmlwdGlvbikgfHwgJycsXG4gICAgICAgICAgICBraW5kOiBDb21wbGV0aW9uSXRlbUtpbmQuRmllbGQsXG4gICAgICAgIH07XG4gICAgfSkpO1xufVxuZnVuY3Rpb24gZ2V0U3VnZ2VzdGlvbnNGb3JGcmFnbWVudFNwcmVhZCh0b2tlbiwgdHlwZUluZm8sIHNjaGVtYSwgcXVlcnlUZXh0LCBmcmFnbWVudERlZnMpIHtcbiAgICBpZiAoIXF1ZXJ5VGV4dCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IHR5cGVNYXAgPSBzY2hlbWEuZ2V0VHlwZU1hcCgpO1xuICAgIGNvbnN0IGRlZlN0YXRlID0gZ2V0RGVmaW5pdGlvblN0YXRlKHRva2VuLnN0YXRlKTtcbiAgICBjb25zdCBmcmFnbWVudHMgPSBnZXRGcmFnbWVudERlZmluaXRpb25zKHF1ZXJ5VGV4dCk7XG4gICAgaWYgKGZyYWdtZW50RGVmcyAmJiBmcmFnbWVudERlZnMubGVuZ3RoID4gMCkge1xuICAgICAgICBmcmFnbWVudHMucHVzaCguLi5mcmFnbWVudERlZnMpO1xuICAgIH1cbiAgICBjb25zdCByZWxldmFudEZyYWdzID0gZnJhZ21lbnRzLmZpbHRlcihmcmFnID0+IHR5cGVNYXBbZnJhZy50eXBlQ29uZGl0aW9uLm5hbWUudmFsdWVdICYmXG4gICAgICAgICEoZGVmU3RhdGUgJiZcbiAgICAgICAgICAgIGRlZlN0YXRlLmtpbmQgPT09IFJ1bGVLaW5kcy5GUkFHTUVOVF9ERUZJTklUSU9OICYmXG4gICAgICAgICAgICBkZWZTdGF0ZS5uYW1lID09PSBmcmFnLm5hbWUudmFsdWUpICYmXG4gICAgICAgIGlzQ29tcG9zaXRlVHlwZSh0eXBlSW5mby5wYXJlbnRUeXBlKSAmJlxuICAgICAgICBpc0NvbXBvc2l0ZVR5cGUodHlwZU1hcFtmcmFnLnR5cGVDb25kaXRpb24ubmFtZS52YWx1ZV0pICYmXG4gICAgICAgIGRvVHlwZXNPdmVybGFwKHNjaGVtYSwgdHlwZUluZm8ucGFyZW50VHlwZSwgdHlwZU1hcFtmcmFnLnR5cGVDb25kaXRpb24ubmFtZS52YWx1ZV0pKTtcbiAgICByZXR1cm4gaGludExpc3QodG9rZW4sIHJlbGV2YW50RnJhZ3MubWFwKGZyYWcgPT4gKHtcbiAgICAgICAgbGFiZWw6IGZyYWcubmFtZS52YWx1ZSxcbiAgICAgICAgZGV0YWlsOiBTdHJpbmcodHlwZU1hcFtmcmFnLnR5cGVDb25kaXRpb24ubmFtZS52YWx1ZV0pLFxuICAgICAgICBkb2N1bWVudGF0aW9uOiBgZnJhZ21lbnQgJHtmcmFnLm5hbWUudmFsdWV9IG9uICR7ZnJhZy50eXBlQ29uZGl0aW9uLm5hbWUudmFsdWV9YCxcbiAgICAgICAga2luZDogQ29tcGxldGlvbkl0ZW1LaW5kLkZpZWxkLFxuICAgICAgICB0eXBlOiB0eXBlTWFwW2ZyYWcudHlwZUNvbmRpdGlvbi5uYW1lLnZhbHVlXSxcbiAgICB9KSkpO1xufVxuY29uc3QgZ2V0UGFyZW50RGVmaW5pdGlvbiA9IChzdGF0ZSwga2luZCkgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaztcbiAgICBpZiAoKChfYSA9IHN0YXRlLnByZXZTdGF0ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmtpbmQpID09PSBraW5kKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5wcmV2U3RhdGU7XG4gICAgfVxuICAgIGlmICgoKF9jID0gKF9iID0gc3RhdGUucHJldlN0YXRlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucHJldlN0YXRlKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Mua2luZCkgPT09IGtpbmQpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLnByZXZTdGF0ZS5wcmV2U3RhdGU7XG4gICAgfVxuICAgIGlmICgoKF9mID0gKF9lID0gKF9kID0gc3RhdGUucHJldlN0YXRlKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QucHJldlN0YXRlKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UucHJldlN0YXRlKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Yua2luZCkgPT09IGtpbmQpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLnByZXZTdGF0ZS5wcmV2U3RhdGUucHJldlN0YXRlO1xuICAgIH1cbiAgICBpZiAoKChfayA9IChfaiA9IChfaCA9IChfZyA9IHN0YXRlLnByZXZTdGF0ZSkgPT09IG51bGwgfHwgX2cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nLnByZXZTdGF0ZSkgPT09IG51bGwgfHwgX2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9oLnByZXZTdGF0ZSkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLnByZXZTdGF0ZSkgPT09IG51bGwgfHwgX2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9rLmtpbmQpID09PSBraW5kKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5wcmV2U3RhdGUucHJldlN0YXRlLnByZXZTdGF0ZS5wcmV2U3RhdGU7XG4gICAgfVxufTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRWYXJpYWJsZUNvbXBsZXRpb25zKHF1ZXJ5VGV4dCwgc2NoZW1hLCBmb3JjZVByZWZpeCA9IGZhbHNlKSB7XG4gICAgbGV0IHZhcmlhYmxlTmFtZTtcbiAgICBsZXQgdmFyaWFibGVUeXBlO1xuICAgIGNvbnN0IGRlZmluaXRpb25zID0gT2JqZWN0LmNyZWF0ZSh7fSk7XG4gICAgcnVuT25saW5lUGFyc2VyKHF1ZXJ5VGV4dCwgKF8sIHN0YXRlKSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZS5raW5kID09PSBSdWxlS2luZHMuVkFSSUFCTEUgJiYgc3RhdGUubmFtZSkge1xuICAgICAgICAgICAgdmFyaWFibGVOYW1lID0gc3RhdGUubmFtZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUua2luZCA9PT0gUnVsZUtpbmRzLk5BTUVEX1RZUEUgJiYgdmFyaWFibGVOYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnREZWZpbml0aW9uID0gZ2V0UGFyZW50RGVmaW5pdGlvbihzdGF0ZSwgUnVsZUtpbmRzLlRZUEUpO1xuICAgICAgICAgICAgaWYgKHBhcmVudERlZmluaXRpb24gPT09IG51bGwgfHwgcGFyZW50RGVmaW5pdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFyZW50RGVmaW5pdGlvbi50eXBlKSB7XG4gICAgICAgICAgICAgICAgdmFyaWFibGVUeXBlID0gc2NoZW1hLmdldFR5cGUocGFyZW50RGVmaW5pdGlvbiA9PT0gbnVsbCB8fCBwYXJlbnREZWZpbml0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXJlbnREZWZpbml0aW9uLnR5cGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh2YXJpYWJsZU5hbWUgJiYgdmFyaWFibGVUeXBlKSB7XG4gICAgICAgICAgICBpZiAoIWRlZmluaXRpb25zW3ZhcmlhYmxlTmFtZV0pIHtcbiAgICAgICAgICAgICAgICBkZWZpbml0aW9uc1t2YXJpYWJsZU5hbWVdID0ge1xuICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHZhcmlhYmxlVHlwZS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogYCQke3ZhcmlhYmxlTmFtZX1gLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiB2YXJpYWJsZVR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6IENvbXBsZXRpb25JdGVtS2luZC5WYXJpYWJsZSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChmb3JjZVByZWZpeCkge1xuICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uc1t2YXJpYWJsZU5hbWVdLmluc2VydFRleHQgPSBgJCR7dmFyaWFibGVOYW1lfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhcmlhYmxlTmFtZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgdmFyaWFibGVUeXBlID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBvYmplY3RWYWx1ZXMoZGVmaW5pdGlvbnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEZyYWdtZW50RGVmaW5pdGlvbnMocXVlcnlUZXh0KSB7XG4gICAgY29uc3QgZnJhZ21lbnREZWZzID0gW107XG4gICAgcnVuT25saW5lUGFyc2VyKHF1ZXJ5VGV4dCwgKF8sIHN0YXRlKSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZS5raW5kID09PSBSdWxlS2luZHMuRlJBR01FTlRfREVGSU5JVElPTiAmJlxuICAgICAgICAgICAgc3RhdGUubmFtZSAmJlxuICAgICAgICAgICAgc3RhdGUudHlwZSkge1xuICAgICAgICAgICAgZnJhZ21lbnREZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgIGtpbmQ6IFJ1bGVLaW5kcy5GUkFHTUVOVF9ERUZJTklUSU9OLFxuICAgICAgICAgICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAga2luZDogJ05hbWUnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc3RhdGUubmFtZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvblNldDoge1xuICAgICAgICAgICAgICAgICAgICBraW5kOiBSdWxlS2luZHMuU0VMRUNUSU9OX1NFVCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uczogW10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0eXBlQ29uZGl0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6IFJ1bGVLaW5kcy5OQU1FRF9UWVBFLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBraW5kOiAnTmFtZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc3RhdGUudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZnJhZ21lbnREZWZzO1xufVxuZnVuY3Rpb24gZ2V0U3VnZ2VzdGlvbnNGb3JWYXJpYWJsZURlZmluaXRpb24odG9rZW4sIHNjaGVtYSwgX2tpbmQpIHtcbiAgICBjb25zdCBpbnB1dFR5cGVNYXAgPSBzY2hlbWEuZ2V0VHlwZU1hcCgpO1xuICAgIGNvbnN0IGlucHV0VHlwZXMgPSBvYmplY3RWYWx1ZXMoaW5wdXRUeXBlTWFwKS5maWx0ZXIoaXNJbnB1dFR5cGUpO1xuICAgIHJldHVybiBoaW50TGlzdCh0b2tlbiwgaW5wdXRUeXBlcy5tYXAoKHR5cGUpID0+ICh7XG4gICAgICAgIGxhYmVsOiB0eXBlLm5hbWUsXG4gICAgICAgIGRvY3VtZW50YXRpb246IHR5cGUuZGVzY3JpcHRpb24sXG4gICAgICAgIGtpbmQ6IENvbXBsZXRpb25JdGVtS2luZC5WYXJpYWJsZSxcbiAgICB9KSkpO1xufVxuZnVuY3Rpb24gZ2V0U3VnZ2VzdGlvbnNGb3JEaXJlY3RpdmUodG9rZW4sIHN0YXRlLCBzY2hlbWEsIF9raW5kKSB7XG4gICAgaWYgKHN0YXRlLnByZXZTdGF0ZSAmJiBzdGF0ZS5wcmV2U3RhdGUua2luZCkge1xuICAgICAgICBjb25zdCBkaXJlY3RpdmVzID0gc2NoZW1hXG4gICAgICAgICAgICAuZ2V0RGlyZWN0aXZlcygpXG4gICAgICAgICAgICAuZmlsdGVyKGRpcmVjdGl2ZSA9PiBjYW5Vc2VEaXJlY3RpdmUoc3RhdGUucHJldlN0YXRlLCBkaXJlY3RpdmUpKTtcbiAgICAgICAgcmV0dXJuIGhpbnRMaXN0KHRva2VuLCBkaXJlY3RpdmVzLm1hcChkaXJlY3RpdmUgPT4gKHtcbiAgICAgICAgICAgIGxhYmVsOiBkaXJlY3RpdmUubmFtZSxcbiAgICAgICAgICAgIGRvY3VtZW50YXRpb246IGRpcmVjdGl2ZS5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgICAgIGtpbmQ6IENvbXBsZXRpb25JdGVtS2luZC5GdW5jdGlvbixcbiAgICAgICAgfSkpKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFRva2VuQXRQb3NpdGlvbihxdWVyeVRleHQsIGN1cnNvcikge1xuICAgIGxldCBzdHlsZUF0Q3Vyc29yID0gbnVsbDtcbiAgICBsZXQgc3RhdGVBdEN1cnNvciA9IG51bGw7XG4gICAgbGV0IHN0cmluZ0F0Q3Vyc29yID0gbnVsbDtcbiAgICBjb25zdCB0b2tlbiA9IHJ1bk9ubGluZVBhcnNlcihxdWVyeVRleHQsIChzdHJlYW0sIHN0YXRlLCBzdHlsZSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGluZGV4ID09PSBjdXJzb3IubGluZSkge1xuICAgICAgICAgICAgaWYgKHN0cmVhbS5nZXRDdXJyZW50UG9zaXRpb24oKSA+PSBjdXJzb3IuY2hhcmFjdGVyKSB7XG4gICAgICAgICAgICAgICAgc3R5bGVBdEN1cnNvciA9IHN0eWxlO1xuICAgICAgICAgICAgICAgIHN0YXRlQXRDdXJzb3IgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSk7XG4gICAgICAgICAgICAgICAgc3RyaW5nQXRDdXJzb3IgPSBzdHJlYW0uY3VycmVudCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiAnQlJFQUsnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnQ6IHRva2VuLnN0YXJ0LFxuICAgICAgICBlbmQ6IHRva2VuLmVuZCxcbiAgICAgICAgc3RyaW5nOiBzdHJpbmdBdEN1cnNvciB8fCB0b2tlbi5zdHJpbmcsXG4gICAgICAgIHN0YXRlOiBzdGF0ZUF0Q3Vyc29yIHx8IHRva2VuLnN0YXRlLFxuICAgICAgICBzdHlsZTogc3R5bGVBdEN1cnNvciB8fCB0b2tlbi5zdHlsZSxcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJ1bk9ubGluZVBhcnNlcihxdWVyeVRleHQsIGNhbGxiYWNrKSB7XG4gICAgY29uc3QgbGluZXMgPSBxdWVyeVRleHQuc3BsaXQoJ1xcbicpO1xuICAgIGNvbnN0IHBhcnNlciA9IG9ubGluZVBhcnNlcigpO1xuICAgIGxldCBzdGF0ZSA9IHBhcnNlci5zdGFydFN0YXRlKCk7XG4gICAgbGV0IHN0eWxlID0gJyc7XG4gICAgbGV0IHN0cmVhbSA9IG5ldyBDaGFyYWN0ZXJTdHJlYW0oJycpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgc3RyZWFtID0gbmV3IENoYXJhY3RlclN0cmVhbShsaW5lc1tpXSk7XG4gICAgICAgIHdoaWxlICghc3RyZWFtLmVvbCgpKSB7XG4gICAgICAgICAgICBzdHlsZSA9IHBhcnNlci50b2tlbihzdHJlYW0sIHN0YXRlKTtcbiAgICAgICAgICAgIGNvbnN0IGNvZGUgPSBjYWxsYmFjayhzdHJlYW0sIHN0YXRlLCBzdHlsZSwgaSk7XG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gJ0JSRUFLJykge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhbGxiYWNrKHN0cmVhbSwgc3RhdGUsIHN0eWxlLCBpKTtcbiAgICAgICAgaWYgKCFzdGF0ZS5raW5kKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IHBhcnNlci5zdGFydFN0YXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnQ6IHN0cmVhbS5nZXRTdGFydE9mVG9rZW4oKSxcbiAgICAgICAgZW5kOiBzdHJlYW0uZ2V0Q3VycmVudFBvc2l0aW9uKCksXG4gICAgICAgIHN0cmluZzogc3RyZWFtLmN1cnJlbnQoKSxcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIHN0eWxlLFxuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gY2FuVXNlRGlyZWN0aXZlKHN0YXRlLCBkaXJlY3RpdmUpIHtcbiAgICBpZiAoIXN0YXRlIHx8ICFzdGF0ZS5raW5kKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3Qga2luZCA9IHN0YXRlLmtpbmQ7XG4gICAgY29uc3QgbG9jYXRpb25zID0gZGlyZWN0aXZlLmxvY2F0aW9ucztcbiAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgICAgY2FzZSBSdWxlS2luZHMuUVVFUlk6XG4gICAgICAgICAgICByZXR1cm4gbG9jYXRpb25zLmluZGV4T2YoJ1FVRVJZJykgIT09IC0xO1xuICAgICAgICBjYXNlIFJ1bGVLaW5kcy5NVVRBVElPTjpcbiAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbnMuaW5kZXhPZignTVVUQVRJT04nKSAhPT0gLTE7XG4gICAgICAgIGNhc2UgUnVsZUtpbmRzLlNVQlNDUklQVElPTjpcbiAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbnMuaW5kZXhPZignU1VCU0NSSVBUSU9OJykgIT09IC0xO1xuICAgICAgICBjYXNlIFJ1bGVLaW5kcy5GSUVMRDpcbiAgICAgICAgY2FzZSBSdWxlS2luZHMuQUxJQVNFRF9GSUVMRDpcbiAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbnMuaW5kZXhPZignRklFTEQnKSAhPT0gLTE7XG4gICAgICAgIGNhc2UgUnVsZUtpbmRzLkZSQUdNRU5UX0RFRklOSVRJT046XG4gICAgICAgICAgICByZXR1cm4gbG9jYXRpb25zLmluZGV4T2YoJ0ZSQUdNRU5UX0RFRklOSVRJT04nKSAhPT0gLTE7XG4gICAgICAgIGNhc2UgUnVsZUtpbmRzLkZSQUdNRU5UX1NQUkVBRDpcbiAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbnMuaW5kZXhPZignRlJBR01FTlRfU1BSRUFEJykgIT09IC0xO1xuICAgICAgICBjYXNlIFJ1bGVLaW5kcy5JTkxJTkVfRlJBR01FTlQ6XG4gICAgICAgICAgICByZXR1cm4gbG9jYXRpb25zLmluZGV4T2YoJ0lOTElORV9GUkFHTUVOVCcpICE9PSAtMTtcbiAgICAgICAgY2FzZSBSdWxlS2luZHMuU0NIRU1BX0RFRjpcbiAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbnMuaW5kZXhPZignU0NIRU1BJykgIT09IC0xO1xuICAgICAgICBjYXNlIFJ1bGVLaW5kcy5TQ0FMQVJfREVGOlxuICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9ucy5pbmRleE9mKCdTQ0FMQVInKSAhPT0gLTE7XG4gICAgICAgIGNhc2UgUnVsZUtpbmRzLk9CSkVDVF9UWVBFX0RFRjpcbiAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbnMuaW5kZXhPZignT0JKRUNUJykgIT09IC0xO1xuICAgICAgICBjYXNlIFJ1bGVLaW5kcy5GSUVMRF9ERUY6XG4gICAgICAgICAgICByZXR1cm4gbG9jYXRpb25zLmluZGV4T2YoJ0ZJRUxEX0RFRklOSVRJT04nKSAhPT0gLTE7XG4gICAgICAgIGNhc2UgUnVsZUtpbmRzLklOVEVSRkFDRV9ERUY6XG4gICAgICAgICAgICByZXR1cm4gbG9jYXRpb25zLmluZGV4T2YoJ0lOVEVSRkFDRScpICE9PSAtMTtcbiAgICAgICAgY2FzZSBSdWxlS2luZHMuVU5JT05fREVGOlxuICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9ucy5pbmRleE9mKCdVTklPTicpICE9PSAtMTtcbiAgICAgICAgY2FzZSBSdWxlS2luZHMuRU5VTV9ERUY6XG4gICAgICAgICAgICByZXR1cm4gbG9jYXRpb25zLmluZGV4T2YoJ0VOVU0nKSAhPT0gLTE7XG4gICAgICAgIGNhc2UgUnVsZUtpbmRzLkVOVU1fVkFMVUU6XG4gICAgICAgICAgICByZXR1cm4gbG9jYXRpb25zLmluZGV4T2YoJ0VOVU1fVkFMVUUnKSAhPT0gLTE7XG4gICAgICAgIGNhc2UgUnVsZUtpbmRzLklOUFVUX0RFRjpcbiAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbnMuaW5kZXhPZignSU5QVVRfT0JKRUNUJykgIT09IC0xO1xuICAgICAgICBjYXNlIFJ1bGVLaW5kcy5JTlBVVF9WQUxVRV9ERUY6XG4gICAgICAgICAgICBjb25zdCBwcmV2U3RhdGVLaW5kID0gc3RhdGUucHJldlN0YXRlICYmIHN0YXRlLnByZXZTdGF0ZS5raW5kO1xuICAgICAgICAgICAgc3dpdGNoIChwcmV2U3RhdGVLaW5kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBSdWxlS2luZHMuQVJHVU1FTlRTX0RFRjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9ucy5pbmRleE9mKCdBUkdVTUVOVF9ERUZJTklUSU9OJykgIT09IC0xO1xuICAgICAgICAgICAgICAgIGNhc2UgUnVsZUtpbmRzLklOUFVUX0RFRjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9ucy5pbmRleE9mKCdJTlBVVF9GSUVMRF9ERUZJTklUSU9OJykgIT09IC0xO1xuICAgICAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZUluZm8oc2NoZW1hLCB0b2tlblN0YXRlKSB7XG4gICAgbGV0IGFyZ0RlZjtcbiAgICBsZXQgYXJnRGVmcztcbiAgICBsZXQgZGlyZWN0aXZlRGVmO1xuICAgIGxldCBlbnVtVmFsdWU7XG4gICAgbGV0IGZpZWxkRGVmO1xuICAgIGxldCBpbnB1dFR5cGU7XG4gICAgbGV0IG9iamVjdFR5cGVEZWY7XG4gICAgbGV0IG9iamVjdEZpZWxkRGVmcztcbiAgICBsZXQgcGFyZW50VHlwZTtcbiAgICBsZXQgdHlwZTtcbiAgICBsZXQgaW50ZXJmYWNlRGVmO1xuICAgIGZvckVhY2hTdGF0ZSh0b2tlblN0YXRlLCBzdGF0ZSA9PiB7XG4gICAgICAgIHN3aXRjaCAoc3RhdGUua2luZCkge1xuICAgICAgICAgICAgY2FzZSBSdWxlS2luZHMuUVVFUlk6XG4gICAgICAgICAgICBjYXNlICdTaG9ydFF1ZXJ5JzpcbiAgICAgICAgICAgICAgICB0eXBlID0gc2NoZW1hLmdldFF1ZXJ5VHlwZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBSdWxlS2luZHMuTVVUQVRJT046XG4gICAgICAgICAgICAgICAgdHlwZSA9IHNjaGVtYS5nZXRNdXRhdGlvblR5cGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUnVsZUtpbmRzLlNVQlNDUklQVElPTjpcbiAgICAgICAgICAgICAgICB0eXBlID0gc2NoZW1hLmdldFN1YnNjcmlwdGlvblR5cGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUnVsZUtpbmRzLklOTElORV9GUkFHTUVOVDpcbiAgICAgICAgICAgIGNhc2UgUnVsZUtpbmRzLkZSQUdNRU5UX0RFRklOSVRJT046XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IHNjaGVtYS5nZXRUeXBlKHN0YXRlLnR5cGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUnVsZUtpbmRzLkZJRUxEOlxuICAgICAgICAgICAgY2FzZSBSdWxlS2luZHMuQUxJQVNFRF9GSUVMRDoge1xuICAgICAgICAgICAgICAgIGlmICghdHlwZSB8fCAhc3RhdGUubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZERlZiA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZERlZiA9IHBhcmVudFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0RmllbGREZWYoc2NoZW1hLCBwYXJlbnRUeXBlLCBzdGF0ZS5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0eXBlID0gZmllbGREZWYgPyBmaWVsZERlZi50eXBlIDogbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFJ1bGVLaW5kcy5TRUxFQ1RJT05fU0VUOlxuICAgICAgICAgICAgICAgIHBhcmVudFR5cGUgPSBnZXROYW1lZFR5cGUodHlwZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFJ1bGVLaW5kcy5ESVJFQ1RJVkU6XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlRGVmID0gc3RhdGUubmFtZSA/IHNjaGVtYS5nZXREaXJlY3RpdmUoc3RhdGUubmFtZSkgOiBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBSdWxlS2luZHMuSU5URVJGQUNFX0RFRjpcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3RUeXBlRGVmID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlRGVmID0gbmV3IEdyYXBoUUxJbnRlcmZhY2VUeXBlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHN0YXRlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkczoge30sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUnVsZUtpbmRzLk9CSkVDVF9UWVBFX0RFRjpcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VEZWYgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBvYmplY3RUeXBlRGVmID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHN0YXRlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkczoge30sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUnVsZUtpbmRzLkFSR1VNRU5UUzoge1xuICAgICAgICAgICAgICAgIGlmICghc3RhdGUucHJldlN0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyZ0RlZnMgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0ZS5wcmV2U3RhdGUua2luZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBSdWxlS2luZHMuRklFTEQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnRGVmcyA9IGZpZWxkRGVmICYmIGZpZWxkRGVmLmFyZ3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFJ1bGVLaW5kcy5ESVJFQ1RJVkU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnRGVmcyA9IGRpcmVjdGl2ZURlZiAmJiBkaXJlY3RpdmVEZWYuYXJncztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUnVsZUtpbmRzLkFMSUFTRURfRklFTEQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gc3RhdGUucHJldlN0YXRlICYmIHN0YXRlLnByZXZTdGF0ZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdEZWZzID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gcGFyZW50VHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGdldEZpZWxkRGVmKHNjaGVtYSwgcGFyZW50VHlwZSwgbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnRGVmcyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdEZWZzID0gZmllbGQuYXJncztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnRGVmcyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFJ1bGVLaW5kcy5BUkdVTUVOVDpcbiAgICAgICAgICAgICAgICBpZiAoYXJnRGVmcykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ0RlZnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmdEZWZzW2ldLm5hbWUgPT09IHN0YXRlLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdEZWYgPSBhcmdEZWZzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlucHV0VHlwZSA9IGFyZ0RlZiAmJiBhcmdEZWYudHlwZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUnVsZUtpbmRzLkVOVU1fVkFMVUU6XG4gICAgICAgICAgICAgICAgY29uc3QgZW51bVR5cGUgPSBnZXROYW1lZFR5cGUoaW5wdXRUeXBlKTtcbiAgICAgICAgICAgICAgICBlbnVtVmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICBlbnVtVHlwZSBpbnN0YW5jZW9mIEdyYXBoUUxFbnVtVHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmaW5kKGVudW1UeXBlLmdldFZhbHVlcygpLCAodmFsKSA9PiB2YWwudmFsdWUgPT09IHN0YXRlLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFJ1bGVLaW5kcy5MSVNUX1ZBTFVFOlxuICAgICAgICAgICAgICAgIGNvbnN0IG51bGxhYmxlVHlwZSA9IGdldE51bGxhYmxlVHlwZShpbnB1dFR5cGUpO1xuICAgICAgICAgICAgICAgIGlucHV0VHlwZSA9XG4gICAgICAgICAgICAgICAgICAgIG51bGxhYmxlVHlwZSBpbnN0YW5jZW9mIEdyYXBoUUxMaXN0ID8gbnVsbGFibGVUeXBlLm9mVHlwZSA6IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFJ1bGVLaW5kcy5PQkpFQ1RfVkFMVUU6XG4gICAgICAgICAgICAgICAgY29uc3Qgb2JqZWN0VHlwZSA9IGdldE5hbWVkVHlwZShpbnB1dFR5cGUpO1xuICAgICAgICAgICAgICAgIG9iamVjdEZpZWxkRGVmcyA9XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdFR5cGUgaW5zdGFuY2VvZiBHcmFwaFFMSW5wdXRPYmplY3RUeXBlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG9iamVjdFR5cGUuZ2V0RmllbGRzKClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUnVsZUtpbmRzLk9CSkVDVF9GSUVMRDpcbiAgICAgICAgICAgICAgICBjb25zdCBvYmplY3RGaWVsZCA9IHN0YXRlLm5hbWUgJiYgb2JqZWN0RmllbGREZWZzID8gb2JqZWN0RmllbGREZWZzW3N0YXRlLm5hbWVdIDogbnVsbDtcbiAgICAgICAgICAgICAgICBpbnB1dFR5cGUgPSBvYmplY3RGaWVsZCAmJiBvYmplY3RGaWVsZC50eXBlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBSdWxlS2luZHMuTkFNRURfVFlQRTpcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICB0eXBlID0gc2NoZW1hLmdldFR5cGUoc3RhdGUubmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYXJnRGVmLFxuICAgICAgICBhcmdEZWZzLFxuICAgICAgICBkaXJlY3RpdmVEZWYsXG4gICAgICAgIGVudW1WYWx1ZSxcbiAgICAgICAgZmllbGREZWYsXG4gICAgICAgIGlucHV0VHlwZSxcbiAgICAgICAgb2JqZWN0RmllbGREZWZzLFxuICAgICAgICBwYXJlbnRUeXBlLFxuICAgICAgICB0eXBlLFxuICAgICAgICBpbnRlcmZhY2VEZWYsXG4gICAgICAgIG9iamVjdFR5cGVEZWYsXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGZpbmQoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHByZWRpY2F0ZShhcnJheVtpXSkpIHtcbiAgICAgICAgICAgIHJldHVybiBhcnJheVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb25zLmpzLm1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQURBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFLQTs7O0FBT0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFLQTtBQU9BO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBTUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7QUFDQTtBQUlBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU1BO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQU1BO0FBTUE7QUFDQTtBQUVBO0FBQ0E7QUFTQTtBQUNBO0FBRUE7QUFTQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTs7O0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFWQTtBQVdBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVNBO0FBR0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7OztBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFBQTtBQUFBO0FBSkE7QUFPQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQUE7QUFBQTtBQUpBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFFQTtBQUFBO0FBR0E7QUFBQTtBQUtBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFTQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBb0JBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUVBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFGQTtBQVpBO0FBb0JBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUdBO0FBR0E7QUFDQTtBQUNBO0FBSEE7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFDQTtBQWVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUpBO0FBQ0E7QUF2Q0E7QUFDQTtBQTZDQTtBQUNBO0FBQ0E7QUFHQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUF6QkE7QUEyQkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQTNJQTtBQTZJQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVhBO0FBYUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphql-language-service-interface/esm/getAutocompleteSuggestions.js\n");
2913
2914/***/ }),
2915
2916/***/ "../../graphql-language-service-interface/esm/getDefinition.js":
2917/*!************************************************************************************************************!*\
2918 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-interface/esm/getDefinition.js ***!
2919 \************************************************************************************************************/
2920/*! no static exports found */
2921/***/ (function(module, exports, __webpack_require__) {
2922
2923eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql-language-service-utils */ \"../../graphql-language-service-utils/esm/index.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphqlLanguageServiceUtils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.getDefinitionQueryResultForNamedType = getDefinitionQueryResultForNamedType;\n _exports.getDefinitionQueryResultForFragmentSpread = getDefinitionQueryResultForFragmentSpread;\n _exports.getDefinitionQueryResultForDefinitionNode = getDefinitionQueryResultForDefinitionNode;\n _exports.LANGUAGE = void 0;\n\n var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\n\n const LANGUAGE = 'GraphQL';\n _exports.LANGUAGE = LANGUAGE;\n\n function assert(value, message) {\n if (!value) {\n throw new Error(message);\n }\n }\n\n function getRange(text, node) {\n const location = node.loc;\n assert(location, 'Expected ASTNode to have a location.');\n return (0, _graphqlLanguageServiceUtils.locToRange)(text, location);\n }\n\n function getPosition(text, node) {\n const location = node.loc;\n assert(location, 'Expected ASTNode to have a location.');\n return (0, _graphqlLanguageServiceUtils.offsetToPosition)(text, location.start);\n }\n\n function getDefinitionQueryResultForNamedType(text, node, dependencies) {\n return __awaiter(this, void 0, void 0, function* () {\n const name = node.name.value;\n const defNodes = dependencies.filter(({\n definition\n }) => definition.name && definition.name.value === name);\n\n if (defNodes.length === 0) {\n throw Error(`Definition not found for GraphQL type ${name}`);\n }\n\n const definitions = defNodes.map(({\n filePath,\n content,\n definition\n }) => getDefinitionForNodeDefinition(filePath || '', content, definition));\n return {\n definitions,\n queryRange: definitions.map(_ => getRange(text, node))\n };\n });\n }\n\n function getDefinitionQueryResultForFragmentSpread(text, fragment, dependencies) {\n return __awaiter(this, void 0, void 0, function* () {\n const name = fragment.name.value;\n const defNodes = dependencies.filter(({\n definition\n }) => definition.name.value === name);\n\n if (defNodes.length === 0) {\n throw Error(`Definition not found for GraphQL fragment ${name}`);\n }\n\n const definitions = defNodes.map(({\n filePath,\n content,\n definition\n }) => getDefinitionForFragmentDefinition(filePath || '', content, definition));\n return {\n definitions,\n queryRange: definitions.map(_ => getRange(text, fragment))\n };\n });\n }\n\n function getDefinitionQueryResultForDefinitionNode(path, text, definition) {\n return {\n definitions: [getDefinitionForFragmentDefinition(path, text, definition)],\n queryRange: definition.name ? [getRange(text, definition.name)] : []\n };\n }\n\n function getDefinitionForFragmentDefinition(path, text, definition) {\n const name = definition.name;\n\n if (!name) {\n throw Error('Expected ASTNode to have a Name.');\n }\n\n return {\n path,\n position: getPosition(text, definition),\n range: getRange(text, definition),\n name: name.value || '',\n language: LANGUAGE,\n projectRoot: path\n };\n }\n\n function getDefinitionForNodeDefinition(path, text, definition) {\n const name = definition.name;\n assert(name, 'Expected ASTNode to have a Name.');\n return {\n path,\n position: getPosition(text, definition),\n range: getRange(text, definition),\n name: name.value || '',\n language: LANGUAGE,\n projectRoot: path\n };\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLWludGVyZmFjZS9lc20vZ2V0RGVmaW5pdGlvbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uL3NyYy9nZXREZWZpbml0aW9uLnRzPzYxMjQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyBsb2NUb1JhbmdlLCBvZmZzZXRUb1Bvc2l0aW9uLCB9IGZyb20gJ2dyYXBocWwtbGFuZ3VhZ2Utc2VydmljZS11dGlscyc7XG5leHBvcnQgY29uc3QgTEFOR1VBR0UgPSAnR3JhcGhRTCc7XG5mdW5jdGlvbiBhc3NlcnQodmFsdWUsIG1lc3NhZ2UpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRSYW5nZSh0ZXh0LCBub2RlKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSBub2RlLmxvYztcbiAgICBhc3NlcnQobG9jYXRpb24sICdFeHBlY3RlZCBBU1ROb2RlIHRvIGhhdmUgYSBsb2NhdGlvbi4nKTtcbiAgICByZXR1cm4gbG9jVG9SYW5nZSh0ZXh0LCBsb2NhdGlvbik7XG59XG5mdW5jdGlvbiBnZXRQb3NpdGlvbih0ZXh0LCBub2RlKSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSBub2RlLmxvYztcbiAgICBhc3NlcnQobG9jYXRpb24sICdFeHBlY3RlZCBBU1ROb2RlIHRvIGhhdmUgYSBsb2NhdGlvbi4nKTtcbiAgICByZXR1cm4gb2Zmc2V0VG9Qb3NpdGlvbih0ZXh0LCBsb2NhdGlvbi5zdGFydCk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmaW5pdGlvblF1ZXJ5UmVzdWx0Rm9yTmFtZWRUeXBlKHRleHQsIG5vZGUsIGRlcGVuZGVuY2llcykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG4gICAgICAgIGNvbnN0IGRlZk5vZGVzID0gZGVwZW5kZW5jaWVzLmZpbHRlcigoeyBkZWZpbml0aW9uIH0pID0+IGRlZmluaXRpb24ubmFtZSAmJiBkZWZpbml0aW9uLm5hbWUudmFsdWUgPT09IG5hbWUpO1xuICAgICAgICBpZiAoZGVmTm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgRGVmaW5pdGlvbiBub3QgZm91bmQgZm9yIEdyYXBoUUwgdHlwZSAke25hbWV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVmaW5pdGlvbnMgPSBkZWZOb2Rlcy5tYXAoKHsgZmlsZVBhdGgsIGNvbnRlbnQsIGRlZmluaXRpb24gfSkgPT4gZ2V0RGVmaW5pdGlvbkZvck5vZGVEZWZpbml0aW9uKGZpbGVQYXRoIHx8ICcnLCBjb250ZW50LCBkZWZpbml0aW9uKSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkZWZpbml0aW9ucyxcbiAgICAgICAgICAgIHF1ZXJ5UmFuZ2U6IGRlZmluaXRpb25zLm1hcChfID0+IGdldFJhbmdlKHRleHQsIG5vZGUpKSxcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZpbml0aW9uUXVlcnlSZXN1bHRGb3JGcmFnbWVudFNwcmVhZCh0ZXh0LCBmcmFnbWVudCwgZGVwZW5kZW5jaWVzKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IGZyYWdtZW50Lm5hbWUudmFsdWU7XG4gICAgICAgIGNvbnN0IGRlZk5vZGVzID0gZGVwZW5kZW5jaWVzLmZpbHRlcigoeyBkZWZpbml0aW9uIH0pID0+IGRlZmluaXRpb24ubmFtZS52YWx1ZSA9PT0gbmFtZSk7XG4gICAgICAgIGlmIChkZWZOb2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBEZWZpbml0aW9uIG5vdCBmb3VuZCBmb3IgR3JhcGhRTCBmcmFnbWVudCAke25hbWV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVmaW5pdGlvbnMgPSBkZWZOb2Rlcy5tYXAoKHsgZmlsZVBhdGgsIGNvbnRlbnQsIGRlZmluaXRpb24gfSkgPT4gZ2V0RGVmaW5pdGlvbkZvckZyYWdtZW50RGVmaW5pdGlvbihmaWxlUGF0aCB8fCAnJywgY29udGVudCwgZGVmaW5pdGlvbikpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVmaW5pdGlvbnMsXG4gICAgICAgICAgICBxdWVyeVJhbmdlOiBkZWZpbml0aW9ucy5tYXAoXyA9PiBnZXRSYW5nZSh0ZXh0LCBmcmFnbWVudCkpLFxuICAgICAgICB9O1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmluaXRpb25RdWVyeVJlc3VsdEZvckRlZmluaXRpb25Ob2RlKHBhdGgsIHRleHQsIGRlZmluaXRpb24pIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBkZWZpbml0aW9uczogW2dldERlZmluaXRpb25Gb3JGcmFnbWVudERlZmluaXRpb24ocGF0aCwgdGV4dCwgZGVmaW5pdGlvbildLFxuICAgICAgICBxdWVyeVJhbmdlOiBkZWZpbml0aW9uLm5hbWUgPyBbZ2V0UmFuZ2UodGV4dCwgZGVmaW5pdGlvbi5uYW1lKV0gOiBbXSxcbiAgICB9O1xufVxuZnVuY3Rpb24gZ2V0RGVmaW5pdGlvbkZvckZyYWdtZW50RGVmaW5pdGlvbihwYXRoLCB0ZXh0LCBkZWZpbml0aW9uKSB7XG4gICAgY29uc3QgbmFtZSA9IGRlZmluaXRpb24ubmFtZTtcbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGVkIEFTVE5vZGUgdG8gaGF2ZSBhIE5hbWUuJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIHBvc2l0aW9uOiBnZXRQb3NpdGlvbih0ZXh0LCBkZWZpbml0aW9uKSxcbiAgICAgICAgcmFuZ2U6IGdldFJhbmdlKHRleHQsIGRlZmluaXRpb24pLFxuICAgICAgICBuYW1lOiBuYW1lLnZhbHVlIHx8ICcnLFxuICAgICAgICBsYW5ndWFnZTogTEFOR1VBR0UsXG4gICAgICAgIHByb2plY3RSb290OiBwYXRoLFxuICAgIH07XG59XG5mdW5jdGlvbiBnZXREZWZpbml0aW9uRm9yTm9kZURlZmluaXRpb24ocGF0aCwgdGV4dCwgZGVmaW5pdGlvbikge1xuICAgIGNvbnN0IG5hbWUgPSBkZWZpbml0aW9uLm5hbWU7XG4gICAgYXNzZXJ0KG5hbWUsICdFeHBlY3RlZCBBU1ROb2RlIHRvIGhhdmUgYSBOYW1lLicpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIHBvc2l0aW9uOiBnZXRQb3NpdGlvbih0ZXh0LCBkZWZpbml0aW9uKSxcbiAgICAgICAgcmFuZ2U6IGdldFJhbmdlKHRleHQsIGRlZmluaXRpb24pLFxuICAgICAgICBuYW1lOiBuYW1lLnZhbHVlIHx8ICcnLFxuICAgICAgICBsYW5ndWFnZTogTEFOR1VBR0UsXG4gICAgICAgIHByb2plY3RSb290OiBwYXRoLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXREZWZpbml0aW9uLmpzLm1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUtBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQUE7QUFDQTtBQUNBOztBQUtBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQUE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQVRBO0FBV0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBUEE7QUFTQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphql-language-service-interface/esm/getDefinition.js\n");
2924
2925/***/ }),
2926
2927/***/ "../../graphql-language-service-interface/esm/getDiagnostics.js":
2928/*!*************************************************************************************************************!*\
2929 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-interface/esm/getDiagnostics.js ***!
2930 \*************************************************************************************************************/
2931/*! no static exports found */
2932/***/ (function(module, exports, __webpack_require__) {
2933
2934eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! graphql-language-service-parser */ \"../../graphql-language-service-parser/esm/index.js\"), __webpack_require__(/*! graphql-language-service-utils */ \"../../graphql-language-service-utils/esm/index.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql, _graphqlLanguageServiceParser, _graphqlLanguageServiceUtils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.getDiagnostics = getDiagnostics;\n _exports.validateQuery = validateQuery;\n _exports.getRange = getRange;\n _exports.DIAGNOSTIC_SEVERITY = _exports.SEVERITY = void 0;\n const SEVERITY = {\n Error: 'Error',\n Warning: 'Warning',\n Information: 'Information',\n Hint: 'Hint'\n };\n _exports.SEVERITY = SEVERITY;\n const DIAGNOSTIC_SEVERITY = {\n [SEVERITY.Error]: 1,\n [SEVERITY.Warning]: 2,\n [SEVERITY.Information]: 3,\n [SEVERITY.Hint]: 4\n };\n _exports.DIAGNOSTIC_SEVERITY = DIAGNOSTIC_SEVERITY;\n\n const invariant = (condition, message) => {\n if (!condition) {\n throw new Error(message);\n }\n };\n\n function getDiagnostics(query, schema = null, customRules, isRelayCompatMode, externalFragments) {\n let ast = null;\n\n if (externalFragments) {\n if (typeof externalFragments === 'string') {\n query += '\\n\\n' + externalFragments;\n } else {\n query += '\\n\\n' + externalFragments.reduce((agg, node) => {\n agg += (0, _graphql.print)(node) + '\\n\\n';\n return agg;\n }, '');\n }\n }\n\n try {\n ast = (0, _graphql.parse)(query);\n } catch (error) {\n const range = getRange(error.locations[0], query);\n return [{\n severity: DIAGNOSTIC_SEVERITY.Error,\n message: error.message,\n source: 'GraphQL: Syntax',\n range\n }];\n }\n\n return validateQuery(ast, schema, customRules, isRelayCompatMode);\n }\n\n function validateQuery(ast, schema = null, customRules, isRelayCompatMode) {\n if (!schema) {\n return [];\n }\n\n const validationErrorAnnotations = mapCat((0, _graphqlLanguageServiceUtils.validateWithCustomRules)(schema, ast, customRules, isRelayCompatMode), error => annotations(error, DIAGNOSTIC_SEVERITY.Error, 'Validation'));\n const deprecationWarningAnnotations = mapCat((0, _graphql.findDeprecatedUsages)(schema, ast), error => annotations(error, DIAGNOSTIC_SEVERITY.Warning, 'Deprecation'));\n return validationErrorAnnotations.concat(deprecationWarningAnnotations);\n }\n\n function mapCat(array, mapper) {\n return Array.prototype.concat.apply([], array.map(mapper));\n }\n\n function annotations(error, severity, type) {\n if (!error.nodes) {\n return [];\n }\n\n const highlightedNodes = [];\n error.nodes.forEach(node => {\n const highlightNode = node.kind !== 'Variable' && 'name' in node && node.name !== undefined ? node.name : 'variable' in node && node.variable !== undefined ? node.variable : node;\n\n if (highlightNode) {\n invariant(error.locations, 'GraphQL validation error requires locations.');\n const loc = error.locations[0];\n const highlightLoc = getLocation(highlightNode);\n const end = loc.column + (highlightLoc.end - highlightLoc.start);\n highlightedNodes.push({\n source: `GraphQL: ${type}`,\n message: error.message,\n severity,\n range: new _graphqlLanguageServiceUtils.Range(new _graphqlLanguageServiceUtils.Position(loc.line - 1, loc.column - 1), new _graphqlLanguageServiceUtils.Position(loc.line - 1, end))\n });\n }\n });\n return highlightedNodes;\n }\n\n function getRange(location, queryText) {\n const parser = (0, _graphqlLanguageServiceParser.onlineParser)();\n const state = parser.startState();\n const lines = queryText.split('\\n');\n invariant(lines.length >= location.line, 'Query text must have more lines than where the error happened');\n let stream = null;\n\n for (let i = 0; i < location.line; i++) {\n stream = new _graphqlLanguageServiceParser.CharacterStream(lines[i]);\n\n while (!stream.eol()) {\n const style = parser.token(stream, state);\n\n if (style === 'invalidchar') {\n break;\n }\n }\n }\n\n invariant(stream, 'Expected Parser stream to be available.');\n const line = location.line - 1;\n const start = stream.getStartOfToken();\n const end = stream.getCurrentPosition();\n return new _graphqlLanguageServiceUtils.Range(new _graphqlLanguageServiceUtils.Position(line, start), new _graphqlLanguageServiceUtils.Position(line, end));\n }\n\n function getLocation(node) {\n const typeCastedNode = node;\n const location = typeCastedNode.loc;\n invariant(location, 'Expected ASTNode to have a location.');\n return location;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLWludGVyZmFjZS9lc20vZ2V0RGlhZ25vc3RpY3MuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uLi9zcmMvZ2V0RGlhZ25vc3RpY3MudHM/MDVjMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcmludCwgfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7IGZpbmREZXByZWNhdGVkVXNhZ2VzLCBwYXJzZSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgQ2hhcmFjdGVyU3RyZWFtLCBvbmxpbmVQYXJzZXIgfSBmcm9tICdncmFwaHFsLWxhbmd1YWdlLXNlcnZpY2UtcGFyc2VyJztcbmltcG9ydCB7IFJhbmdlLCB2YWxpZGF0ZVdpdGhDdXN0b21SdWxlcywgUG9zaXRpb24sIH0gZnJvbSAnZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLXV0aWxzJztcbmV4cG9ydCBjb25zdCBTRVZFUklUWSA9IHtcbiAgICBFcnJvcjogJ0Vycm9yJyxcbiAgICBXYXJuaW5nOiAnV2FybmluZycsXG4gICAgSW5mb3JtYXRpb246ICdJbmZvcm1hdGlvbicsXG4gICAgSGludDogJ0hpbnQnLFxufTtcbmV4cG9ydCBjb25zdCBESUFHTk9TVElDX1NFVkVSSVRZID0ge1xuICAgIFtTRVZFUklUWS5FcnJvcl06IDEsXG4gICAgW1NFVkVSSVRZLldhcm5pbmddOiAyLFxuICAgIFtTRVZFUklUWS5JbmZvcm1hdGlvbl06IDMsXG4gICAgW1NFVkVSSVRZLkhpbnRdOiA0LFxufTtcbmNvbnN0IGludmFyaWFudCA9IChjb25kaXRpb24sIG1lc3NhZ2UpID0+IHtcbiAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxufTtcbmV4cG9ydCBmdW5jdGlvbiBnZXREaWFnbm9zdGljcyhxdWVyeSwgc2NoZW1hID0gbnVsbCwgY3VzdG9tUnVsZXMsIGlzUmVsYXlDb21wYXRNb2RlLCBleHRlcm5hbEZyYWdtZW50cykge1xuICAgIGxldCBhc3QgPSBudWxsO1xuICAgIGlmIChleHRlcm5hbEZyYWdtZW50cykge1xuICAgICAgICBpZiAodHlwZW9mIGV4dGVybmFsRnJhZ21lbnRzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcXVlcnkgKz0gJ1xcblxcbicgKyBleHRlcm5hbEZyYWdtZW50cztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHF1ZXJ5ICs9XG4gICAgICAgICAgICAgICAgJ1xcblxcbicgK1xuICAgICAgICAgICAgICAgICAgICBleHRlcm5hbEZyYWdtZW50cy5yZWR1Y2UoKGFnZywgbm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWdnICs9IHByaW50KG5vZGUpICsgJ1xcblxcbic7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWdnO1xuICAgICAgICAgICAgICAgICAgICB9LCAnJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgYXN0ID0gcGFyc2UocXVlcnkpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBnZXRSYW5nZShlcnJvci5sb2NhdGlvbnNbMF0sIHF1ZXJ5KTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogRElBR05PU1RJQ19TRVZFUklUWS5FcnJvcixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogJ0dyYXBoUUw6IFN5bnRheCcsXG4gICAgICAgICAgICAgICAgcmFuZ2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdGVRdWVyeShhc3QsIHNjaGVtYSwgY3VzdG9tUnVsZXMsIGlzUmVsYXlDb21wYXRNb2RlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVF1ZXJ5KGFzdCwgc2NoZW1hID0gbnVsbCwgY3VzdG9tUnVsZXMsIGlzUmVsYXlDb21wYXRNb2RlKSB7XG4gICAgaWYgKCFzY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCB2YWxpZGF0aW9uRXJyb3JBbm5vdGF0aW9ucyA9IG1hcENhdCh2YWxpZGF0ZVdpdGhDdXN0b21SdWxlcyhzY2hlbWEsIGFzdCwgY3VzdG9tUnVsZXMsIGlzUmVsYXlDb21wYXRNb2RlKSwgZXJyb3IgPT4gYW5ub3RhdGlvbnMoZXJyb3IsIERJQUdOT1NUSUNfU0VWRVJJVFkuRXJyb3IsICdWYWxpZGF0aW9uJykpO1xuICAgIGNvbnN0IGRlcHJlY2F0aW9uV2FybmluZ0Fubm90YXRpb25zID0gbWFwQ2F0KGZpbmREZXByZWNhdGVkVXNhZ2VzKHNjaGVtYSwgYXN0KSwgZXJyb3IgPT4gYW5ub3RhdGlvbnMoZXJyb3IsIERJQUdOT1NUSUNfU0VWRVJJVFkuV2FybmluZywgJ0RlcHJlY2F0aW9uJykpO1xuICAgIHJldHVybiB2YWxpZGF0aW9uRXJyb3JBbm5vdGF0aW9ucy5jb25jYXQoZGVwcmVjYXRpb25XYXJuaW5nQW5ub3RhdGlvbnMpO1xufVxuZnVuY3Rpb24gbWFwQ2F0KGFycmF5LCBtYXBwZXIpIHtcbiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgYXJyYXkubWFwKG1hcHBlcikpO1xufVxuZnVuY3Rpb24gYW5ub3RhdGlvbnMoZXJyb3IsIHNldmVyaXR5LCB0eXBlKSB7XG4gICAgaWYgKCFlcnJvci5ub2Rlcykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGhpZ2hsaWdodGVkTm9kZXMgPSBbXTtcbiAgICBlcnJvci5ub2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICBjb25zdCBoaWdobGlnaHROb2RlID0gbm9kZS5raW5kICE9PSAnVmFyaWFibGUnICYmICduYW1lJyBpbiBub2RlICYmIG5vZGUubmFtZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IG5vZGUubmFtZVxuICAgICAgICAgICAgOiAndmFyaWFibGUnIGluIG5vZGUgJiYgbm9kZS52YXJpYWJsZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBub2RlLnZhcmlhYmxlXG4gICAgICAgICAgICAgICAgOiBub2RlO1xuICAgICAgICBpZiAoaGlnaGxpZ2h0Tm9kZSkge1xuICAgICAgICAgICAgaW52YXJpYW50KGVycm9yLmxvY2F0aW9ucywgJ0dyYXBoUUwgdmFsaWRhdGlvbiBlcnJvciByZXF1aXJlcyBsb2NhdGlvbnMuJyk7XG4gICAgICAgICAgICBjb25zdCBsb2MgPSBlcnJvci5sb2NhdGlvbnNbMF07XG4gICAgICAgICAgICBjb25zdCBoaWdobGlnaHRMb2MgPSBnZXRMb2NhdGlvbihoaWdobGlnaHROb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZCA9IGxvYy5jb2x1bW4gKyAoaGlnaGxpZ2h0TG9jLmVuZCAtIGhpZ2hsaWdodExvYy5zdGFydCk7XG4gICAgICAgICAgICBoaWdobGlnaHRlZE5vZGVzLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZTogYEdyYXBoUUw6ICR7dHlwZX1gLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgc2V2ZXJpdHksXG4gICAgICAgICAgICAgICAgcmFuZ2U6IG5ldyBSYW5nZShuZXcgUG9zaXRpb24obG9jLmxpbmUgLSAxLCBsb2MuY29sdW1uIC0gMSksIG5ldyBQb3NpdGlvbihsb2MubGluZSAtIDEsIGVuZCkpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaGlnaGxpZ2h0ZWROb2Rlcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYW5nZShsb2NhdGlvbiwgcXVlcnlUZXh0KSB7XG4gICAgY29uc3QgcGFyc2VyID0gb25saW5lUGFyc2VyKCk7XG4gICAgY29uc3Qgc3RhdGUgPSBwYXJzZXIuc3RhcnRTdGF0ZSgpO1xuICAgIGNvbnN0IGxpbmVzID0gcXVlcnlUZXh0LnNwbGl0KCdcXG4nKTtcbiAgICBpbnZhcmlhbnQobGluZXMubGVuZ3RoID49IGxvY2F0aW9uLmxpbmUsICdRdWVyeSB0ZXh0IG11c3QgaGF2ZSBtb3JlIGxpbmVzIHRoYW4gd2hlcmUgdGhlIGVycm9yIGhhcHBlbmVkJyk7XG4gICAgbGV0IHN0cmVhbSA9IG51bGw7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsb2NhdGlvbi5saW5lOyBpKyspIHtcbiAgICAgICAgc3RyZWFtID0gbmV3IENoYXJhY3RlclN0cmVhbShsaW5lc1tpXSk7XG4gICAgICAgIHdoaWxlICghc3RyZWFtLmVvbCgpKSB7XG4gICAgICAgICAgICBjb25zdCBzdHlsZSA9IHBhcnNlci50b2tlbihzdHJlYW0sIHN0YXRlKTtcbiAgICAgICAgICAgIGlmIChzdHlsZSA9PT0gJ2ludmFsaWRjaGFyJykge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGludmFyaWFudChzdHJlYW0sICdFeHBlY3RlZCBQYXJzZXIgc3RyZWFtIHRvIGJlIGF2YWlsYWJsZS4nKTtcbiAgICBjb25zdCBsaW5lID0gbG9jYXRpb24ubGluZSAtIDE7XG4gICAgY29uc3Qgc3RhcnQgPSBzdHJlYW0uZ2V0U3RhcnRPZlRva2VuKCk7XG4gICAgY29uc3QgZW5kID0gc3RyZWFtLmdldEN1cnJlbnRQb3NpdGlvbigpO1xuICAgIHJldHVybiBuZXcgUmFuZ2UobmV3IFBvc2l0aW9uKGxpbmUsIHN0YXJ0KSwgbmV3IFBvc2l0aW9uKGxpbmUsIGVuZCkpO1xufVxuZnVuY3Rpb24gZ2V0TG9jYXRpb24obm9kZSkge1xuICAgIGNvbnN0IHR5cGVDYXN0ZWROb2RlID0gbm9kZTtcbiAgICBjb25zdCBsb2NhdGlvbiA9IHR5cGVDYXN0ZWROb2RlLmxvYztcbiAgICBpbnZhcmlhbnQobG9jYXRpb24sICdFeHBlY3RlZCBBU1ROb2RlIHRvIGhhdmUgYSBsb2NhdGlvbi4nKTtcbiAgICByZXR1cm4gbG9jYXRpb247XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXREaWFnbm9zdGljcy5qcy5tYXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTs7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphql-language-service-interface/esm/getDiagnostics.js\n");
2935
2936/***/ }),
2937
2938/***/ "../../graphql-language-service-interface/esm/getHoverInformation.js":
2939/*!******************************************************************************************************************!*\
2940 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-interface/esm/getHoverInformation.js ***!
2941 \******************************************************************************************************************/
2942/*! no static exports found */
2943/***/ (function(module, exports, __webpack_require__) {
2944
2945eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! ./getAutocompleteSuggestions */ \"../../graphql-language-service-interface/esm/getAutocompleteSuggestions.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql, _getAutocompleteSuggestions) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.getHoverInformation = getHoverInformation;\n\n function getHoverInformation(schema, queryText, cursor, contextToken) {\n const token = contextToken || (0, _getAutocompleteSuggestions.getTokenAtPosition)(queryText, cursor);\n\n if (!schema || !token || !token.state) {\n return '';\n }\n\n const state = token.state;\n const kind = state.kind;\n const step = state.step;\n const typeInfo = (0, _getAutocompleteSuggestions.getTypeInfo)(schema, token.state);\n const options = {\n schema\n };\n\n if (kind === 'Field' && step === 0 && typeInfo.fieldDef || kind === 'AliasedField' && step === 2 && typeInfo.fieldDef) {\n const into = [];\n renderField(into, typeInfo, options);\n renderDescription(into, options, typeInfo.fieldDef);\n return into.join('').trim();\n } else if (kind === 'Directive' && step === 1 && typeInfo.directiveDef) {\n const into = [];\n renderDirective(into, typeInfo, options);\n renderDescription(into, options, typeInfo.directiveDef);\n return into.join('').trim();\n } else if (kind === 'Argument' && step === 0 && typeInfo.argDef) {\n const into = [];\n renderArg(into, typeInfo, options);\n renderDescription(into, options, typeInfo.argDef);\n return into.join('').trim();\n } else if (kind === 'EnumValue' && typeInfo.enumValue && 'description' in typeInfo.enumValue) {\n const into = [];\n renderEnumValue(into, typeInfo, options);\n renderDescription(into, options, typeInfo.enumValue);\n return into.join('').trim();\n } else if (kind === 'NamedType' && typeInfo.type && 'description' in typeInfo.type) {\n const into = [];\n renderType(into, typeInfo, options, typeInfo.type);\n renderDescription(into, options, typeInfo.type);\n return into.join('').trim();\n }\n\n return '';\n }\n\n function renderField(into, typeInfo, options) {\n renderQualifiedField(into, typeInfo, options);\n renderTypeAnnotation(into, typeInfo, options, typeInfo.type);\n }\n\n function renderQualifiedField(into, typeInfo, options) {\n if (!typeInfo.fieldDef) {\n return;\n }\n\n const fieldName = typeInfo.fieldDef.name;\n\n if (fieldName.slice(0, 2) !== '__') {\n renderType(into, typeInfo, options, typeInfo.parentType);\n text(into, '.');\n }\n\n text(into, fieldName);\n }\n\n function renderDirective(into, typeInfo, _options) {\n if (!typeInfo.directiveDef) {\n return;\n }\n\n const name = '@' + typeInfo.directiveDef.name;\n text(into, name);\n }\n\n function renderArg(into, typeInfo, options) {\n if (typeInfo.directiveDef) {\n renderDirective(into, typeInfo, options);\n } else if (typeInfo.fieldDef) {\n renderQualifiedField(into, typeInfo, options);\n }\n\n if (!typeInfo.argDef) {\n return;\n }\n\n const name = typeInfo.argDef.name;\n text(into, '(');\n text(into, name);\n renderTypeAnnotation(into, typeInfo, options, typeInfo.inputType);\n text(into, ')');\n }\n\n function renderTypeAnnotation(into, typeInfo, options, t) {\n text(into, ': ');\n renderType(into, typeInfo, options, t);\n }\n\n function renderEnumValue(into, typeInfo, options) {\n if (!typeInfo.enumValue) {\n return;\n }\n\n const name = typeInfo.enumValue.name;\n renderType(into, typeInfo, options, typeInfo.inputType);\n text(into, '.');\n text(into, name);\n }\n\n function renderType(into, typeInfo, options, t) {\n if (!t) {\n return;\n }\n\n if (t instanceof _graphql.GraphQLNonNull) {\n renderType(into, typeInfo, options, t.ofType);\n text(into, '!');\n } else if (t instanceof _graphql.GraphQLList) {\n text(into, '[');\n renderType(into, typeInfo, options, t.ofType);\n text(into, ']');\n } else {\n text(into, t.name);\n }\n }\n\n function renderDescription(into, options, def) {\n if (!def) {\n return;\n }\n\n const description = typeof def.description === 'string' ? def.description : null;\n\n if (description) {\n text(into, '\\n\\n');\n text(into, description);\n }\n\n renderDeprecation(into, options, def);\n }\n\n function renderDeprecation(into, _options, def) {\n if (!def) {\n return;\n }\n\n const reason = def.deprecationReason ? def.deprecationReason : null;\n\n if (!reason) {\n return;\n }\n\n text(into, '\\n\\n');\n text(into, 'Deprecated: ');\n text(into, reason);\n }\n\n function text(into, content) {\n into.push(content);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLWludGVyZmFjZS9lc20vZ2V0SG92ZXJJbmZvcm1hdGlvbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uL3NyYy9nZXRIb3ZlckluZm9ybWF0aW9uLnRzPzE1NDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTE5vbk51bGwsIEdyYXBoUUxMaXN0LCB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgZ2V0VG9rZW5BdFBvc2l0aW9uLCBnZXRUeXBlSW5mbyB9IGZyb20gJy4vZ2V0QXV0b2NvbXBsZXRlU3VnZ2VzdGlvbnMnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhvdmVySW5mb3JtYXRpb24oc2NoZW1hLCBxdWVyeVRleHQsIGN1cnNvciwgY29udGV4dFRva2VuKSB7XG4gICAgY29uc3QgdG9rZW4gPSBjb250ZXh0VG9rZW4gfHwgZ2V0VG9rZW5BdFBvc2l0aW9uKHF1ZXJ5VGV4dCwgY3Vyc29yKTtcbiAgICBpZiAoIXNjaGVtYSB8fCAhdG9rZW4gfHwgIXRva2VuLnN0YXRlKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3Qgc3RhdGUgPSB0b2tlbi5zdGF0ZTtcbiAgICBjb25zdCBraW5kID0gc3RhdGUua2luZDtcbiAgICBjb25zdCBzdGVwID0gc3RhdGUuc3RlcDtcbiAgICBjb25zdCB0eXBlSW5mbyA9IGdldFR5cGVJbmZvKHNjaGVtYSwgdG9rZW4uc3RhdGUpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHNjaGVtYSB9O1xuICAgIGlmICgoa2luZCA9PT0gJ0ZpZWxkJyAmJiBzdGVwID09PSAwICYmIHR5cGVJbmZvLmZpZWxkRGVmKSB8fFxuICAgICAgICAoa2luZCA9PT0gJ0FsaWFzZWRGaWVsZCcgJiYgc3RlcCA9PT0gMiAmJiB0eXBlSW5mby5maWVsZERlZikpIHtcbiAgICAgICAgY29uc3QgaW50byA9IFtdO1xuICAgICAgICByZW5kZXJGaWVsZChpbnRvLCB0eXBlSW5mbywgb3B0aW9ucyk7XG4gICAgICAgIHJlbmRlckRlc2NyaXB0aW9uKGludG8sIG9wdGlvbnMsIHR5cGVJbmZvLmZpZWxkRGVmKTtcbiAgICAgICAgcmV0dXJuIGludG8uam9pbignJykudHJpbSgpO1xuICAgIH1cbiAgICBlbHNlIGlmIChraW5kID09PSAnRGlyZWN0aXZlJyAmJiBzdGVwID09PSAxICYmIHR5cGVJbmZvLmRpcmVjdGl2ZURlZikge1xuICAgICAgICBjb25zdCBpbnRvID0gW107XG4gICAgICAgIHJlbmRlckRpcmVjdGl2ZShpbnRvLCB0eXBlSW5mbywgb3B0aW9ucyk7XG4gICAgICAgIHJlbmRlckRlc2NyaXB0aW9uKGludG8sIG9wdGlvbnMsIHR5cGVJbmZvLmRpcmVjdGl2ZURlZik7XG4gICAgICAgIHJldHVybiBpbnRvLmpvaW4oJycpLnRyaW0oKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoa2luZCA9PT0gJ0FyZ3VtZW50JyAmJiBzdGVwID09PSAwICYmIHR5cGVJbmZvLmFyZ0RlZikge1xuICAgICAgICBjb25zdCBpbnRvID0gW107XG4gICAgICAgIHJlbmRlckFyZyhpbnRvLCB0eXBlSW5mbywgb3B0aW9ucyk7XG4gICAgICAgIHJlbmRlckRlc2NyaXB0aW9uKGludG8sIG9wdGlvbnMsIHR5cGVJbmZvLmFyZ0RlZik7XG4gICAgICAgIHJldHVybiBpbnRvLmpvaW4oJycpLnRyaW0oKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoa2luZCA9PT0gJ0VudW1WYWx1ZScgJiZcbiAgICAgICAgdHlwZUluZm8uZW51bVZhbHVlICYmXG4gICAgICAgICdkZXNjcmlwdGlvbicgaW4gdHlwZUluZm8uZW51bVZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGludG8gPSBbXTtcbiAgICAgICAgcmVuZGVyRW51bVZhbHVlKGludG8sIHR5cGVJbmZvLCBvcHRpb25zKTtcbiAgICAgICAgcmVuZGVyRGVzY3JpcHRpb24oaW50bywgb3B0aW9ucywgdHlwZUluZm8uZW51bVZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGludG8uam9pbignJykudHJpbSgpO1xuICAgIH1cbiAgICBlbHNlIGlmIChraW5kID09PSAnTmFtZWRUeXBlJyAmJlxuICAgICAgICB0eXBlSW5mby50eXBlICYmXG4gICAgICAgICdkZXNjcmlwdGlvbicgaW4gdHlwZUluZm8udHlwZSkge1xuICAgICAgICBjb25zdCBpbnRvID0gW107XG4gICAgICAgIHJlbmRlclR5cGUoaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHR5cGVJbmZvLnR5cGUpO1xuICAgICAgICByZW5kZXJEZXNjcmlwdGlvbihpbnRvLCBvcHRpb25zLCB0eXBlSW5mby50eXBlKTtcbiAgICAgICAgcmV0dXJuIGludG8uam9pbignJykudHJpbSgpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG59XG5mdW5jdGlvbiByZW5kZXJGaWVsZChpbnRvLCB0eXBlSW5mbywgb3B0aW9ucykge1xuICAgIHJlbmRlclF1YWxpZmllZEZpZWxkKGludG8sIHR5cGVJbmZvLCBvcHRpb25zKTtcbiAgICByZW5kZXJUeXBlQW5ub3RhdGlvbihpbnRvLCB0eXBlSW5mbywgb3B0aW9ucywgdHlwZUluZm8udHlwZSk7XG59XG5mdW5jdGlvbiByZW5kZXJRdWFsaWZpZWRGaWVsZChpbnRvLCB0eXBlSW5mbywgb3B0aW9ucykge1xuICAgIGlmICghdHlwZUluZm8uZmllbGREZWYpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZE5hbWUgPSB0eXBlSW5mby5maWVsZERlZi5uYW1lO1xuICAgIGlmIChmaWVsZE5hbWUuc2xpY2UoMCwgMikgIT09ICdfXycpIHtcbiAgICAgICAgcmVuZGVyVHlwZShpbnRvLCB0eXBlSW5mbywgb3B0aW9ucywgdHlwZUluZm8ucGFyZW50VHlwZSk7XG4gICAgICAgIHRleHQoaW50bywgJy4nKTtcbiAgICB9XG4gICAgdGV4dChpbnRvLCBmaWVsZE5hbWUpO1xufVxuZnVuY3Rpb24gcmVuZGVyRGlyZWN0aXZlKGludG8sIHR5cGVJbmZvLCBfb3B0aW9ucykge1xuICAgIGlmICghdHlwZUluZm8uZGlyZWN0aXZlRGVmKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmFtZSA9ICdAJyArIHR5cGVJbmZvLmRpcmVjdGl2ZURlZi5uYW1lO1xuICAgIHRleHQoaW50bywgbmFtZSk7XG59XG5mdW5jdGlvbiByZW5kZXJBcmcoaW50bywgdHlwZUluZm8sIG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZUluZm8uZGlyZWN0aXZlRGVmKSB7XG4gICAgICAgIHJlbmRlckRpcmVjdGl2ZShpbnRvLCB0eXBlSW5mbywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVJbmZvLmZpZWxkRGVmKSB7XG4gICAgICAgIHJlbmRlclF1YWxpZmllZEZpZWxkKGludG8sIHR5cGVJbmZvLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKCF0eXBlSW5mby5hcmdEZWYpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuYW1lID0gdHlwZUluZm8uYXJnRGVmLm5hbWU7XG4gICAgdGV4dChpbnRvLCAnKCcpO1xuICAgIHRleHQoaW50bywgbmFtZSk7XG4gICAgcmVuZGVyVHlwZUFubm90YXRpb24oaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHR5cGVJbmZvLmlucHV0VHlwZSk7XG4gICAgdGV4dChpbnRvLCAnKScpO1xufVxuZnVuY3Rpb24gcmVuZGVyVHlwZUFubm90YXRpb24oaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHQpIHtcbiAgICB0ZXh0KGludG8sICc6ICcpO1xuICAgIHJlbmRlclR5cGUoaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHQpO1xufVxuZnVuY3Rpb24gcmVuZGVyRW51bVZhbHVlKGludG8sIHR5cGVJbmZvLCBvcHRpb25zKSB7XG4gICAgaWYgKCF0eXBlSW5mby5lbnVtVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuYW1lID0gdHlwZUluZm8uZW51bVZhbHVlLm5hbWU7XG4gICAgcmVuZGVyVHlwZShpbnRvLCB0eXBlSW5mbywgb3B0aW9ucywgdHlwZUluZm8uaW5wdXRUeXBlKTtcbiAgICB0ZXh0KGludG8sICcuJyk7XG4gICAgdGV4dChpbnRvLCBuYW1lKTtcbn1cbmZ1bmN0aW9uIHJlbmRlclR5cGUoaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHQpIHtcbiAgICBpZiAoIXQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodCBpbnN0YW5jZW9mIEdyYXBoUUxOb25OdWxsKSB7XG4gICAgICAgIHJlbmRlclR5cGUoaW50bywgdHlwZUluZm8sIG9wdGlvbnMsIHQub2ZUeXBlKTtcbiAgICAgICAgdGV4dChpbnRvLCAnIScpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0IGluc3RhbmNlb2YgR3JhcGhRTExpc3QpIHtcbiAgICAgICAgdGV4dChpbnRvLCAnWycpO1xuICAgICAgICByZW5kZXJUeXBlKGludG8sIHR5cGVJbmZvLCBvcHRpb25zLCB0Lm9mVHlwZSk7XG4gICAgICAgIHRleHQoaW50bywgJ10nKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRleHQoaW50bywgdC5uYW1lKTtcbiAgICB9XG59XG5mdW5jdGlvbiByZW5kZXJEZXNjcmlwdGlvbihpbnRvLCBvcHRpb25zLCBkZWYpIHtcbiAgICBpZiAoIWRlZikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdHlwZW9mIGRlZi5kZXNjcmlwdGlvbiA9PT0gJ3N0cmluZycgPyBkZWYuZGVzY3JpcHRpb24gOiBudWxsO1xuICAgIGlmIChkZXNjcmlwdGlvbikge1xuICAgICAgICB0ZXh0KGludG8sICdcXG5cXG4nKTtcbiAgICAgICAgdGV4dChpbnRvLCBkZXNjcmlwdGlvbik7XG4gICAgfVxuICAgIHJlbmRlckRlcHJlY2F0aW9uKGludG8sIG9wdGlvbnMsIGRlZik7XG59XG5mdW5jdGlvbiByZW5kZXJEZXByZWNhdGlvbihpbnRvLCBfb3B0aW9ucywgZGVmKSB7XG4gICAgaWYgKCFkZWYpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZWFzb24gPSBkZWYuZGVwcmVjYXRpb25SZWFzb24gPyBkZWYuZGVwcmVjYXRpb25SZWFzb24gOiBudWxsO1xuICAgIGlmICghcmVhc29uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGV4dChpbnRvLCAnXFxuXFxuJyk7XG4gICAgdGV4dChpbnRvLCAnRGVwcmVjYXRlZDogJyk7XG4gICAgdGV4dChpbnRvLCByZWFzb24pO1xufVxuZnVuY3Rpb24gdGV4dChpbnRvLCBjb250ZW50KSB7XG4gICAgaW50by5wdXNoKGNvbnRlbnQpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0SG92ZXJJbmZvcm1hdGlvbi5qcy5tYXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQTRCQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFJQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphql-language-service-interface/esm/getHoverInformation.js\n");
2946
2947/***/ }),
2948
2949/***/ "../../graphql-language-service-interface/esm/getOutline.js":
2950/*!*********************************************************************************************************!*\
2951 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-interface/esm/getOutline.js ***!
2952 \*********************************************************************************************************/
2953/*! no static exports found */
2954/***/ (function(module, exports, __webpack_require__) {
2955
2956eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! graphql-language-service-utils */ \"../../graphql-language-service-utils/esm/index.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql, _graphqlLanguageServiceUtils) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.getOutline = getOutline;\n const {\n INLINE_FRAGMENT\n } = _graphql.Kind;\n const OUTLINEABLE_KINDS = {\n Field: true,\n OperationDefinition: true,\n Document: true,\n SelectionSet: true,\n Name: true,\n FragmentDefinition: true,\n FragmentSpread: true,\n InlineFragment: true,\n ObjectTypeDefinition: true,\n InputObjectTypeDefinition: true,\n InterfaceTypeDefinition: true,\n EnumTypeDefinition: true,\n EnumValueDefinition: true,\n InputValueDefinition: true,\n FieldDefinition: true\n };\n\n function getOutline(documentText) {\n let ast;\n\n try {\n ast = (0, _graphql.parse)(documentText);\n } catch (error) {\n return null;\n }\n\n const visitorFns = outlineTreeConverter(documentText);\n const outlineTrees = (0, _graphql.visit)(ast, {\n leave(node) {\n if (visitorFns !== undefined && node.kind in visitorFns) {\n return visitorFns[node.kind](node);\n }\n\n return null;\n }\n\n });\n return {\n outlineTrees\n };\n }\n\n function outlineTreeConverter(docText) {\n const meta = node => {\n return {\n representativeName: node.name,\n startPosition: (0, _graphqlLanguageServiceUtils.offsetToPosition)(docText, node.loc.start),\n endPosition: (0, _graphqlLanguageServiceUtils.offsetToPosition)(docText, node.loc.end),\n kind: node.kind,\n children: node.selectionSet || node.fields || node.values || node.arguments || []\n };\n };\n\n return {\n Field: node => {\n const tokenizedText = node.alias ? [buildToken('plain', node.alias), buildToken('plain', ': ')] : [];\n tokenizedText.push(buildToken('plain', node.name));\n return Object.assign({\n tokenizedText\n }, meta(node));\n },\n OperationDefinition: node => Object.assign({\n tokenizedText: [buildToken('keyword', node.operation), buildToken('whitespace', ' '), buildToken('class-name', node.name)]\n }, meta(node)),\n Document: node => node.definitions,\n SelectionSet: node => concatMap(node.selections, child => {\n return child.kind === INLINE_FRAGMENT ? child.selectionSet : child;\n }),\n Name: node => node.value,\n FragmentDefinition: node => Object.assign({\n tokenizedText: [buildToken('keyword', 'fragment'), buildToken('whitespace', ' '), buildToken('class-name', node.name)]\n }, meta(node)),\n InterfaceTypeDefinition: node => Object.assign({\n tokenizedText: [buildToken('keyword', 'interface'), buildToken('whitespace', ' '), buildToken('class-name', node.name)]\n }, meta(node)),\n EnumTypeDefinition: node => Object.assign({\n tokenizedText: [buildToken('keyword', 'enum'), buildToken('whitespace', ' '), buildToken('class-name', node.name)]\n }, meta(node)),\n EnumValueDefinition: node => Object.assign({\n tokenizedText: [buildToken('plain', node.name)]\n }, meta(node)),\n ObjectTypeDefinition: node => Object.assign({\n tokenizedText: [buildToken('keyword', 'type'), buildToken('whitespace', ' '), buildToken('class-name', node.name)]\n }, meta(node)),\n InputObjectTypeDefinition: node => Object.assign({\n tokenizedText: [buildToken('keyword', 'input'), buildToken('whitespace', ' '), buildToken('class-name', node.name)]\n }, meta(node)),\n FragmentSpread: node => Object.assign({\n tokenizedText: [buildToken('plain', '...'), buildToken('class-name', node.name)]\n }, meta(node)),\n InputValueDefinition: node => {\n return Object.assign({\n tokenizedText: [buildToken('plain', node.name)]\n }, meta(node));\n },\n FieldDefinition: node => {\n return Object.assign({\n tokenizedText: [buildToken('plain', node.name)]\n }, meta(node));\n },\n InlineFragment: node => node.selectionSet\n };\n }\n\n function buildToken(kind, value) {\n return {\n kind,\n value\n };\n }\n\n function concatMap(arr, fn) {\n const res = [];\n\n for (let i = 0; i < arr.length; i++) {\n const x = fn(arr[i], i);\n\n if (Array.isArray(x)) {\n res.push(...x);\n } else {\n res.push(x);\n }\n }\n\n return res;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLWludGVyZmFjZS9lc20vZ2V0T3V0bGluZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uL3NyYy9nZXRPdXRsaW5lLnRzP2U2ZDUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2luZCwgcGFyc2UsIHZpc2l0LCB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgb2Zmc2V0VG9Qb3NpdGlvbiB9IGZyb20gJ2dyYXBocWwtbGFuZ3VhZ2Utc2VydmljZS11dGlscyc7XG5jb25zdCB7IElOTElORV9GUkFHTUVOVCB9ID0gS2luZDtcbmNvbnN0IE9VVExJTkVBQkxFX0tJTkRTID0ge1xuICAgIEZpZWxkOiB0cnVlLFxuICAgIE9wZXJhdGlvbkRlZmluaXRpb246IHRydWUsXG4gICAgRG9jdW1lbnQ6IHRydWUsXG4gICAgU2VsZWN0aW9uU2V0OiB0cnVlLFxuICAgIE5hbWU6IHRydWUsXG4gICAgRnJhZ21lbnREZWZpbml0aW9uOiB0cnVlLFxuICAgIEZyYWdtZW50U3ByZWFkOiB0cnVlLFxuICAgIElubGluZUZyYWdtZW50OiB0cnVlLFxuICAgIE9iamVjdFR5cGVEZWZpbml0aW9uOiB0cnVlLFxuICAgIElucHV0T2JqZWN0VHlwZURlZmluaXRpb246IHRydWUsXG4gICAgSW50ZXJmYWNlVHlwZURlZmluaXRpb246IHRydWUsXG4gICAgRW51bVR5cGVEZWZpbml0aW9uOiB0cnVlLFxuICAgIEVudW1WYWx1ZURlZmluaXRpb246IHRydWUsXG4gICAgSW5wdXRWYWx1ZURlZmluaXRpb246IHRydWUsXG4gICAgRmllbGREZWZpbml0aW9uOiB0cnVlLFxufTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRPdXRsaW5lKGRvY3VtZW50VGV4dCkge1xuICAgIGxldCBhc3Q7XG4gICAgdHJ5IHtcbiAgICAgICAgYXN0ID0gcGFyc2UoZG9jdW1lbnRUZXh0KTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB2aXNpdG9yRm5zID0gb3V0bGluZVRyZWVDb252ZXJ0ZXIoZG9jdW1lbnRUZXh0KTtcbiAgICBjb25zdCBvdXRsaW5lVHJlZXMgPSB2aXNpdChhc3QsIHtcbiAgICAgICAgbGVhdmUobm9kZSkge1xuICAgICAgICAgICAgaWYgKHZpc2l0b3JGbnMgIT09IHVuZGVmaW5lZCAmJiBub2RlLmtpbmQgaW4gdmlzaXRvckZucykge1xuICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yRm5zW25vZGUua2luZF0obm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4geyBvdXRsaW5lVHJlZXMgfTtcbn1cbmZ1bmN0aW9uIG91dGxpbmVUcmVlQ29udmVydGVyKGRvY1RleHQpIHtcbiAgICBjb25zdCBtZXRhID0gKG5vZGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlcHJlc2VudGF0aXZlTmFtZTogbm9kZS5uYW1lLFxuICAgICAgICAgICAgc3RhcnRQb3NpdGlvbjogb2Zmc2V0VG9Qb3NpdGlvbihkb2NUZXh0LCBub2RlLmxvYy5zdGFydCksXG4gICAgICAgICAgICBlbmRQb3NpdGlvbjogb2Zmc2V0VG9Qb3NpdGlvbihkb2NUZXh0LCBub2RlLmxvYy5lbmQpLFxuICAgICAgICAgICAga2luZDogbm9kZS5raW5kLFxuICAgICAgICAgICAgY2hpbGRyZW46IG5vZGUuc2VsZWN0aW9uU2V0IHx8IG5vZGUuZmllbGRzIHx8IG5vZGUudmFsdWVzIHx8IG5vZGUuYXJndW1lbnRzIHx8IFtdLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgICAgRmllbGQ6IChub2RlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0b2tlbml6ZWRUZXh0ID0gbm9kZS5hbGlhc1xuICAgICAgICAgICAgICAgID8gW2J1aWxkVG9rZW4oJ3BsYWluJywgbm9kZS5hbGlhcyksIGJ1aWxkVG9rZW4oJ3BsYWluJywgJzogJyldXG4gICAgICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICAgIHRva2VuaXplZFRleHQucHVzaChidWlsZFRva2VuKCdwbGFpbicsIG5vZGUubmFtZSkpO1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oeyB0b2tlbml6ZWRUZXh0IH0sIG1ldGEobm9kZSkpO1xuICAgICAgICB9LFxuICAgICAgICBPcGVyYXRpb25EZWZpbml0aW9uOiAobm9kZSkgPT4gKE9iamVjdC5hc3NpZ24oeyB0b2tlbml6ZWRUZXh0OiBbXG4gICAgICAgICAgICAgICAgYnVpbGRUb2tlbigna2V5d29yZCcsIG5vZGUub3BlcmF0aW9uKSxcbiAgICAgICAgICAgICAgICBidWlsZFRva2VuKCd3aGl0ZXNwYWNlJywgJyAnKSxcbiAgICAgICAgICAgICAgICBidWlsZFRva2VuKCdjbGFzcy1uYW1lJywgbm9kZS5uYW1lKSxcbiAgICAgICAgICAgIF0gfSwgbWV0YShub2RlKSkpLFxuICAgICAgICBEb2N1bWVudDogKG5vZGUpID0+IG5vZGUuZGVmaW5pdGlvbnMsXG4gICAgICAgIFNlbGVjdGlvblNldDogKG5vZGUpID0+IGNvbmNhdE1hcChub2RlLnNlbGVjdGlvbnMsIChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmtpbmQgPT09IElOTElORV9GUkFHTUVOVCA/IGNoaWxkLnNlbGVjdGlvblNldCA6IGNoaWxkO1xuICAgICAgICB9KSxcbiAgICAgICAgTmFtZTogKG5vZGUpID0+IG5vZGUudmFsdWUsXG4gICAgICAgIEZyYWdtZW50RGVmaW5pdGlvbjogKG5vZGUpID0+IChPYmplY3QuYXNzaWduKHsgdG9rZW5pemVkVGV4dDogW1xuICAgICAgICAgICAgICAgIGJ1aWxkVG9rZW4oJ2tleXdvcmQnLCAnZnJhZ21lbnQnKSxcbiAgICAgICAgICAgICAgICBidWlsZFRva2VuKCd3aGl0ZXNwYWNlJywgJyAnKSxcbiAgICAgICAgICAgICAgICBidWlsZFRva2VuKCdjbGFzcy1uYW1lJywgbm9kZS5uYW1lKSxcbiAgICAgICAgICAgIF0gfSwgbWV0YShub2RlKSkpLFxuICAgICAgICBJbnRlcmZhY2VUeXBlRGVmaW5pdGlvbjogKG5vZGUpID0+IChPYmplY3QuYXNzaWduKHsgdG9rZW5pemVkVGV4dDogW1xuICAgICAgICAgICAgICAgIGJ1aWxkVG9rZW4oJ2tleXdvcmQnLCAnaW50ZXJmYWNlJyksXG4gICAgICAgICAgICAgICAgYnVpbGRUb2tlbignd2hpdGVzcGFjZScsICcgJyksXG4gICAgICAgICAgICAgICAgYnVpbGRUb2tlbignY2xhc3MtbmFtZScsIG5vZGUubmFtZSksXG4gICAgICAgICAgICBdIH0sIG1ldGEobm9kZSkpKSxcbiAgICAgICAgRW51bVR5cGVEZWZpbml0aW9uOiAobm9kZSkgPT4gKE9iamVjdC5hc3NpZ24oeyB0b2tlbml6ZWRUZXh0OiBbXG4gICAgICAgICAgICAgICAgYnVpbGRUb2tlbigna2V5d29yZCcsICdlbnVtJyksXG4gICAgICAgICAgICAgICAgYnVpbGRUb2tlbignd2hpdGVzcGFjZScsICcgJyksXG4gICAgICAgICAgICAgICAgYnVpbGRUb2tlbignY2xhc3MtbmFtZScsIG5vZGUubmFtZSksXG4gICAgICAgICAgICBdIH0sIG1ldGEobm9kZSkpKSxcbiAgICAgICAgRW51bVZhbHVlRGVmaW5pdGlvbjogKG5vZGUpID0+IChPYmplY3QuYXNzaWduKHsgdG9rZW5pemVkVGV4dDogW2J1aWxkVG9rZW4oJ3BsYWluJywgbm9kZS5uYW1lKV0gfSwgbWV0YShub2RlKSkpLFxuICAgICAgICBPYmplY3RUeXBlRGVmaW5pdGlvbjogKG5vZGUpID0+IChPYmplY3QuYXNzaWduKHsgdG9rZW5pemVkVGV4dDogW1xuICAgICAgICAgICAgICAgIGJ1aWxkVG9rZW4oJ2tleXdvcmQnLCAndHlwZScpLFxuICAgICAgICAgICAgICAgIGJ1aWxkVG9rZW4oJ3doaXRlc3BhY2UnLCAnICcpLFxuICAgICAgICAgICAgICAgIGJ1aWxkVG9rZW4oJ2NsYXNzLW5hbWUnLCBub2RlLm5hbWUpLFxuICAgICAgICAgICAgXSB9LCBtZXRhKG5vZGUpKSksXG4gICAgICAgIElucHV0T2JqZWN0VHlwZURlZmluaXRpb246IChub2RlKSA9PiAoT2JqZWN0LmFzc2lnbih7IHRva2VuaXplZFRleHQ6IFtcbiAgICAgICAgICAgICAgICBidWlsZFRva2VuKCdrZXl3b3JkJywgJ2lucHV0JyksXG4gICAgICAgICAgICAgICAgYnVpbGRUb2tlbignd2hpdGVzcGFjZScsICcgJyksXG4gICAgICAgICAgICAgICAgYnVpbGRUb2tlbignY2xhc3MtbmFtZScsIG5vZGUubmFtZSksXG4gICAgICAgICAgICBdIH0sIG1ldGEobm9kZSkpKSxcbiAgICAgICAgRnJhZ21lbnRTcHJlYWQ6IChub2RlKSA9PiAoT2JqZWN0LmFzc2lnbih7IHRva2VuaXplZFRleHQ6IFtcbiAgICAgICAgICAgICAgICBidWlsZFRva2VuKCdwbGFpbicsICcuLi4nKSxcbiAgICAgICAgICAgICAgICBidWlsZFRva2VuKCdjbGFzcy1uYW1lJywgbm9kZS5uYW1lKSxcbiAgICAgICAgICAgIF0gfSwgbWV0YShub2RlKSkpLFxuICAgICAgICBJbnB1dFZhbHVlRGVmaW5pdGlvbjogKG5vZGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHsgdG9rZW5pemVkVGV4dDogW2J1aWxkVG9rZW4oJ3BsYWluJywgbm9kZS5uYW1lKV0gfSwgbWV0YShub2RlKSk7XG4gICAgICAgIH0sXG4gICAgICAgIEZpZWxkRGVmaW5pdGlvbjogKG5vZGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHsgdG9rZW5pemVkVGV4dDogW2J1aWxkVG9rZW4oJ3BsYWluJywgbm9kZS5uYW1lKV0gfSwgbWV0YShub2RlKSk7XG4gICAgICAgIH0sXG4gICAgICAgIElubGluZUZyYWdtZW50OiAobm9kZSkgPT4gbm9kZS5zZWxlY3Rpb25TZXQsXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGJ1aWxkVG9rZW4oa2luZCwgdmFsdWUpIHtcbiAgICByZXR1cm4geyBraW5kLCB2YWx1ZSB9O1xufVxuZnVuY3Rpb24gY29uY2F0TWFwKGFyciwgZm4pIHtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCB4ID0gZm4oYXJyW2ldLCBpKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoeCkpIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKC4uLngpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzLnB1c2goeCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldE91dGxpbmUuanMubWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQXVDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWZBO0FBQ0E7QUF5Q0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQVNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFRQTtBQUNBO0FBREE7QUFRQTtBQUNBO0FBREE7QUFRQTtBQUNBO0FBREE7QUFJQTtBQUNBO0FBREE7QUFRQTtBQUNBO0FBREE7QUFRQTtBQUNBO0FBREE7QUFPQTtBQUNBO0FBQ0E7QUFEQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFJQTtBQUVBO0FBdkZBO0FBeUZBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphql-language-service-interface/esm/getOutline.js\n");
2957
2958/***/ }),
2959
2960/***/ "../../graphql-language-service-interface/esm/index.js":
2961/*!****************************************************************************************************!*\
2962 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-interface/esm/index.js ***!
2963 \****************************************************************************************************/
2964/*! no static exports found */
2965/***/ (function(module, exports, __webpack_require__) {
2966
2967eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./autocompleteUtils */ \"../../graphql-language-service-interface/esm/autocompleteUtils.js\"), __webpack_require__(/*! ./getAutocompleteSuggestions */ \"../../graphql-language-service-interface/esm/getAutocompleteSuggestions.js\"), __webpack_require__(/*! ./getDefinition */ \"../../graphql-language-service-interface/esm/getDefinition.js\"), __webpack_require__(/*! ./getDiagnostics */ \"../../graphql-language-service-interface/esm/getDiagnostics.js\"), __webpack_require__(/*! ./getOutline */ \"../../graphql-language-service-interface/esm/getOutline.js\"), __webpack_require__(/*! ./getHoverInformation */ \"../../graphql-language-service-interface/esm/getHoverInformation.js\"), __webpack_require__(/*! ./GraphQLLanguageService */ \"../../graphql-language-service-interface/esm/GraphQLLanguageService.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _autocompleteUtils, _getAutocompleteSuggestions, _getDefinition, _getDiagnostics, _getOutline, _getHoverInformation, _GraphQLLanguageService) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n var _exportNames = {\n getOutline: true,\n getHoverInformation: true\n };\n Object.defineProperty(_exports, \"getOutline\", {\n enumerable: true,\n get: function () {\n return _getOutline.getOutline;\n }\n });\n Object.defineProperty(_exports, \"getHoverInformation\", {\n enumerable: true,\n get: function () {\n return _getHoverInformation.getHoverInformation;\n }\n });\n Object.keys(_autocompleteUtils).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in _exports && _exports[key] === _autocompleteUtils[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _autocompleteUtils[key];\n }\n });\n });\n Object.keys(_getAutocompleteSuggestions).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in _exports && _exports[key] === _getAutocompleteSuggestions[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _getAutocompleteSuggestions[key];\n }\n });\n });\n Object.keys(_getDefinition).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in _exports && _exports[key] === _getDefinition[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _getDefinition[key];\n }\n });\n });\n Object.keys(_getDiagnostics).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in _exports && _exports[key] === _getDiagnostics[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _getDiagnostics[key];\n }\n });\n });\n Object.keys(_GraphQLLanguageService).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in _exports && _exports[key] === _GraphQLLanguageService[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _GraphQLLanguageService[key];\n }\n });\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLWludGVyZmFjZS9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uLi9zcmMvaW5kZXgudHM/NmYzNyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dG9jb21wbGV0ZVV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0QXV0b2NvbXBsZXRlU3VnZ2VzdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9nZXREZWZpbml0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0RGlhZ25vc3RpY3MnO1xuZXhwb3J0IHsgZ2V0T3V0bGluZSB9IGZyb20gJy4vZ2V0T3V0bGluZSc7XG5leHBvcnQgeyBnZXRIb3ZlckluZm9ybWF0aW9uIH0gZnJvbSAnLi9nZXRIb3ZlckluZm9ybWF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vR3JhcGhRTExhbmd1YWdlU2VydmljZSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphql-language-service-interface/esm/index.js\n");
2968
2969/***/ }),
2970
2971/***/ "../../graphql-language-service-parser/esm/CharacterStream.js":
2972/*!***********************************************************************************************************!*\
2973 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-parser/esm/CharacterStream.js ***!
2974 \***********************************************************************************************************/
2975/*! no static exports found */
2976/***/ (function(module, exports, __webpack_require__) {
2977
2978eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n\n class CharacterStream {\n constructor(sourceText) {\n this.getStartOfToken = () => this._start;\n\n this.getCurrentPosition = () => this._pos;\n\n this.eol = () => this._sourceText.length === this._pos;\n\n this.sol = () => this._pos === 0;\n\n this.peek = () => {\n return this._sourceText.charAt(this._pos) ? this._sourceText.charAt(this._pos) : null;\n };\n\n this.next = () => {\n const char = this._sourceText.charAt(this._pos);\n\n this._pos++;\n return char;\n };\n\n this.eat = pattern => {\n const isMatched = this._testNextCharacter(pattern);\n\n if (isMatched) {\n this._start = this._pos;\n this._pos++;\n return this._sourceText.charAt(this._pos - 1);\n }\n\n return undefined;\n };\n\n this.eatWhile = match => {\n let isMatched = this._testNextCharacter(match);\n\n let didEat = false;\n\n if (isMatched) {\n didEat = isMatched;\n this._start = this._pos;\n }\n\n while (isMatched) {\n this._pos++;\n isMatched = this._testNextCharacter(match);\n didEat = true;\n }\n\n return didEat;\n };\n\n this.eatSpace = () => this.eatWhile(/[\\s\\u00a0]/);\n\n this.skipToEnd = () => {\n this._pos = this._sourceText.length;\n };\n\n this.skipTo = position => {\n this._pos = position;\n };\n\n this.match = (pattern, consume = true, caseFold = false) => {\n let token = null;\n let match = null;\n\n if (typeof pattern === 'string') {\n const regex = new RegExp(pattern, caseFold ? 'i' : 'g');\n match = regex.test(this._sourceText.substr(this._pos, pattern.length));\n token = pattern;\n } else if (pattern instanceof RegExp) {\n match = this._sourceText.slice(this._pos).match(pattern);\n token = match && match[0];\n }\n\n if (match != null) {\n if (typeof pattern === 'string' || match instanceof Array && this._sourceText.startsWith(match[0], this._pos)) {\n if (consume) {\n this._start = this._pos;\n\n if (token && token.length) {\n this._pos += token.length;\n }\n }\n\n return match;\n }\n }\n\n return false;\n };\n\n this.backUp = num => {\n this._pos -= num;\n };\n\n this.column = () => this._pos;\n\n this.indentation = () => {\n const match = this._sourceText.match(/\\s*/);\n\n let indent = 0;\n\n if (match && match.length !== 0) {\n const whitespaces = match[0];\n let pos = 0;\n\n while (whitespaces.length > pos) {\n if (whitespaces.charCodeAt(pos) === 9) {\n indent += 2;\n } else {\n indent++;\n }\n\n pos++;\n }\n }\n\n return indent;\n };\n\n this.current = () => this._sourceText.slice(this._start, this._pos);\n\n this._start = 0;\n this._pos = 0;\n this._sourceText = sourceText;\n }\n\n _testNextCharacter(pattern) {\n const character = this._sourceText.charAt(this._pos);\n\n let isMatched = false;\n\n if (typeof pattern === 'string') {\n isMatched = character === pattern;\n } else {\n isMatched = pattern instanceof RegExp ? pattern.test(character) : pattern(character);\n }\n\n return isMatched;\n }\n\n }\n\n _exports.default = CharacterStream;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLXBhcnNlci9lc20vQ2hhcmFjdGVyU3RyZWFtLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi4vc3JjL0NoYXJhY3RlclN0cmVhbS50cz9mNDRkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGNsYXNzIENoYXJhY3RlclN0cmVhbSB7XG4gICAgY29uc3RydWN0b3Ioc291cmNlVGV4dCkge1xuICAgICAgICB0aGlzLmdldFN0YXJ0T2ZUb2tlbiA9ICgpID0+IHRoaXMuX3N0YXJ0O1xuICAgICAgICB0aGlzLmdldEN1cnJlbnRQb3NpdGlvbiA9ICgpID0+IHRoaXMuX3BvcztcbiAgICAgICAgdGhpcy5lb2wgPSAoKSA9PiB0aGlzLl9zb3VyY2VUZXh0Lmxlbmd0aCA9PT0gdGhpcy5fcG9zO1xuICAgICAgICB0aGlzLnNvbCA9ICgpID0+IHRoaXMuX3BvcyA9PT0gMDtcbiAgICAgICAgdGhpcy5wZWVrID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZVRleHQuY2hhckF0KHRoaXMuX3BvcylcbiAgICAgICAgICAgICAgICA/IHRoaXMuX3NvdXJjZVRleHQuY2hhckF0KHRoaXMuX3BvcylcbiAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubmV4dCA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoYXIgPSB0aGlzLl9zb3VyY2VUZXh0LmNoYXJBdCh0aGlzLl9wb3MpO1xuICAgICAgICAgICAgdGhpcy5fcG9zKys7XG4gICAgICAgICAgICByZXR1cm4gY2hhcjtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5lYXQgPSAocGF0dGVybikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNNYXRjaGVkID0gdGhpcy5fdGVzdE5leHRDaGFyYWN0ZXIocGF0dGVybik7XG4gICAgICAgICAgICBpZiAoaXNNYXRjaGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhcnQgPSB0aGlzLl9wb3M7XG4gICAgICAgICAgICAgICAgdGhpcy5fcG9zKys7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZVRleHQuY2hhckF0KHRoaXMuX3BvcyAtIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5lYXRXaGlsZSA9IChtYXRjaCkgPT4ge1xuICAgICAgICAgICAgbGV0IGlzTWF0Y2hlZCA9IHRoaXMuX3Rlc3ROZXh0Q2hhcmFjdGVyKG1hdGNoKTtcbiAgICAgICAgICAgIGxldCBkaWRFYXQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChpc01hdGNoZWQpIHtcbiAgICAgICAgICAgICAgICBkaWRFYXQgPSBpc01hdGNoZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhcnQgPSB0aGlzLl9wb3M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoaXNNYXRjaGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcG9zKys7XG4gICAgICAgICAgICAgICAgaXNNYXRjaGVkID0gdGhpcy5fdGVzdE5leHRDaGFyYWN0ZXIobWF0Y2gpO1xuICAgICAgICAgICAgICAgIGRpZEVhdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGlkRWF0O1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmVhdFNwYWNlID0gKCkgPT4gdGhpcy5lYXRXaGlsZSgvW1xcc1xcdTAwYTBdLyk7XG4gICAgICAgIHRoaXMuc2tpcFRvRW5kID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcG9zID0gdGhpcy5fc291cmNlVGV4dC5sZW5ndGg7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2tpcFRvID0gKHBvc2l0aW9uKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9wb3MgPSBwb3NpdGlvbjtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5tYXRjaCA9IChwYXR0ZXJuLCBjb25zdW1lID0gdHJ1ZSwgY2FzZUZvbGQgPSBmYWxzZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHRva2VuID0gbnVsbDtcbiAgICAgICAgICAgIGxldCBtYXRjaCA9IG51bGw7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHBhdHRlcm4gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHBhdHRlcm4sIGNhc2VGb2xkID8gJ2knIDogJ2cnKTtcbiAgICAgICAgICAgICAgICBtYXRjaCA9IHJlZ2V4LnRlc3QodGhpcy5fc291cmNlVGV4dC5zdWJzdHIodGhpcy5fcG9zLCBwYXR0ZXJuLmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgIHRva2VuID0gcGF0dGVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgICAgICAgICBtYXRjaCA9IHRoaXMuX3NvdXJjZVRleHQuc2xpY2UodGhpcy5fcG9zKS5tYXRjaChwYXR0ZXJuKTtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IG1hdGNoICYmIG1hdGNoWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBhdHRlcm4gPT09ICdzdHJpbmcnIHx8XG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCBpbnN0YW5jZW9mIEFycmF5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zb3VyY2VUZXh0LnN0YXJ0c1dpdGgobWF0Y2hbMF0sIHRoaXMuX3BvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGFydCA9IHRoaXMuX3BvcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbiAmJiB0b2tlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wb3MgKz0gdG9rZW4ubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYmFja1VwID0gKG51bSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcG9zIC09IG51bTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb2x1bW4gPSAoKSA9PiB0aGlzLl9wb3M7XG4gICAgICAgIHRoaXMuaW5kZW50YXRpb24gPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMuX3NvdXJjZVRleHQubWF0Y2goL1xccyovKTtcbiAgICAgICAgICAgIGxldCBpbmRlbnQgPSAwO1xuICAgICAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdoaXRlc3BhY2VzID0gbWF0Y2hbMF07XG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IDA7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHdoaXRlc3BhY2VzLmxlbmd0aCA+IHBvcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAod2hpdGVzcGFjZXMuY2hhckNvZGVBdChwb3MpID09PSA5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQgKz0gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBvcysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpbmRlbnQ7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY3VycmVudCA9ICgpID0+IHRoaXMuX3NvdXJjZVRleHQuc2xpY2UodGhpcy5fc3RhcnQsIHRoaXMuX3Bvcyk7XG4gICAgICAgIHRoaXMuX3N0YXJ0ID0gMDtcbiAgICAgICAgdGhpcy5fcG9zID0gMDtcbiAgICAgICAgdGhpcy5fc291cmNlVGV4dCA9IHNvdXJjZVRleHQ7XG4gICAgfVxuICAgIF90ZXN0TmV4dENoYXJhY3RlcihwYXR0ZXJuKSB7XG4gICAgICAgIGNvbnN0IGNoYXJhY3RlciA9IHRoaXMuX3NvdXJjZVRleHQuY2hhckF0KHRoaXMuX3Bvcyk7XG4gICAgICAgIGxldCBpc01hdGNoZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXR0ZXJuID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaXNNYXRjaGVkID0gY2hhcmFjdGVyID09PSBwYXR0ZXJuO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaXNNYXRjaGVkID1cbiAgICAgICAgICAgICAgICBwYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwXG4gICAgICAgICAgICAgICAgICAgID8gcGF0dGVybi50ZXN0KGNoYXJhY3RlcilcbiAgICAgICAgICAgICAgICAgICAgOiBwYXR0ZXJuKGNoYXJhY3Rlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzTWF0Y2hlZDtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DaGFyYWN0ZXJTdHJlYW0uanMubWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFxQkE7QUFLQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaEpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBNUJBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphql-language-service-parser/esm/CharacterStream.js\n");
2979
2980/***/ }),
2981
2982/***/ "../../graphql-language-service-parser/esm/RuleHelpers.js":
2983/*!*******************************************************************************************************!*\
2984 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-parser/esm/RuleHelpers.js ***!
2985 \*******************************************************************************************************/
2986/*! no static exports found */
2987/***/ (function(module, exports, __webpack_require__) {
2988
2989eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.opt = opt;\n _exports.list = list;\n _exports.butNot = butNot;\n _exports.t = t;\n _exports.p = p;\n\n function opt(ofRule) {\n return {\n ofRule\n };\n }\n\n function list(ofRule, separator) {\n return {\n ofRule,\n isList: true,\n separator\n };\n }\n\n function butNot(rule, exclusions) {\n const ruleMatch = rule.match;\n\n rule.match = token => {\n let check = false;\n\n if (ruleMatch) {\n check = ruleMatch(token);\n }\n\n return check && exclusions.every(exclusion => exclusion.match && !exclusion.match(token));\n };\n\n return rule;\n }\n\n function t(kind, style) {\n return {\n style,\n match: token => token.kind === kind\n };\n }\n\n function p(value, style) {\n return {\n style: style || 'punctuation',\n match: token => token.kind === 'Punctuation' && token.value === value\n };\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLXBhcnNlci9lc20vUnVsZUhlbHBlcnMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uLi9zcmMvUnVsZUhlbHBlcnMudHM/NzE5ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gb3B0KG9mUnVsZSkge1xuICAgIHJldHVybiB7IG9mUnVsZSB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGxpc3Qob2ZSdWxlLCBzZXBhcmF0b3IpIHtcbiAgICByZXR1cm4geyBvZlJ1bGUsIGlzTGlzdDogdHJ1ZSwgc2VwYXJhdG9yIH07XG59XG5leHBvcnQgZnVuY3Rpb24gYnV0Tm90KHJ1bGUsIGV4Y2x1c2lvbnMpIHtcbiAgICBjb25zdCBydWxlTWF0Y2ggPSBydWxlLm1hdGNoO1xuICAgIHJ1bGUubWF0Y2ggPSB0b2tlbiA9PiB7XG4gICAgICAgIGxldCBjaGVjayA9IGZhbHNlO1xuICAgICAgICBpZiAocnVsZU1hdGNoKSB7XG4gICAgICAgICAgICBjaGVjayA9IHJ1bGVNYXRjaCh0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChjaGVjayAmJlxuICAgICAgICAgICAgZXhjbHVzaW9ucy5ldmVyeShleGNsdXNpb24gPT4gZXhjbHVzaW9uLm1hdGNoICYmICFleGNsdXNpb24ubWF0Y2godG9rZW4pKSk7XG4gICAgfTtcbiAgICByZXR1cm4gcnVsZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0KGtpbmQsIHN0eWxlKSB7XG4gICAgcmV0dXJuIHsgc3R5bGUsIG1hdGNoOiAodG9rZW4pID0+IHRva2VuLmtpbmQgPT09IGtpbmQgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwKHZhbHVlLCBzdHlsZSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHN0eWxlOiBzdHlsZSB8fCAncHVuY3R1YXRpb24nLFxuICAgICAgICBtYXRjaDogKHRva2VuKSA9PiB0b2tlbi5raW5kID09PSAnUHVuY3R1YXRpb24nICYmIHRva2VuLnZhbHVlID09PSB2YWx1ZSxcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UnVsZUhlbHBlcnMuanMubWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphql-language-service-parser/esm/RuleHelpers.js\n");
2990
2991/***/ }),
2992
2993/***/ "../../graphql-language-service-parser/esm/Rules.js":
2994/*!*************************************************************************************************!*\
2995 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-parser/esm/Rules.js ***!
2996 \*************************************************************************************************/
2997/*! no static exports found */
2998/***/ (function(module, exports, __webpack_require__) {
2999
3000eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./RuleHelpers */ \"../../graphql-language-service-parser/esm/RuleHelpers.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _RuleHelpers) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.ParseRules = _exports.LexRules = _exports.isIgnored = void 0;\n\n const isIgnored = ch => ch === ' ' || ch === '\\t' || ch === ',' || ch === '\\n' || ch === '\\r' || ch === '\\uFEFF' || ch === '\\u00A0';\n\n _exports.isIgnored = isIgnored;\n const LexRules = {\n Name: /^[_A-Za-z][_0-9A-Za-z]*/,\n Punctuation: /^(?:!|\\$|\\(|\\)|\\.\\.\\.|:|=|&|@|\\[|]|\\{|\\||\\})/,\n Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,\n String: /^(?:\"\"\"(?:\\\\\"\"\"|[^\"]|\"[^\"]|\"\"[^\"])*(?:\"\"\")?|\"(?:[^\"\\\\]|\\\\(?:\"|\\/|\\\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*\"?)/,\n Comment: /^#.*/\n };\n _exports.LexRules = LexRules;\n const ParseRules = {\n Document: [(0, _RuleHelpers.list)('Definition')],\n\n Definition(token) {\n switch (token.value) {\n case '{':\n return 'ShortQuery';\n\n case 'query':\n return 'Query';\n\n case 'mutation':\n return 'Mutation';\n\n case 'subscription':\n return 'Subscription';\n\n case 'fragment':\n return 'FragmentDefinition';\n\n case 'schema':\n return 'SchemaDef';\n\n case 'scalar':\n return 'ScalarDef';\n\n case 'type':\n return 'ObjectTypeDef';\n\n case 'interface':\n return 'InterfaceDef';\n\n case 'union':\n return 'UnionDef';\n\n case 'enum':\n return 'EnumDef';\n\n case 'input':\n return 'InputDef';\n\n case 'extend':\n return 'ExtendDef';\n\n case 'directive':\n return 'DirectiveDef';\n }\n },\n\n ShortQuery: ['SelectionSet'],\n Query: [word('query'), (0, _RuleHelpers.opt)(name('def')), (0, _RuleHelpers.opt)('VariableDefinitions'), (0, _RuleHelpers.list)('Directive'), 'SelectionSet'],\n Mutation: [word('mutation'), (0, _RuleHelpers.opt)(name('def')), (0, _RuleHelpers.opt)('VariableDefinitions'), (0, _RuleHelpers.list)('Directive'), 'SelectionSet'],\n Subscription: [word('subscription'), (0, _RuleHelpers.opt)(name('def')), (0, _RuleHelpers.opt)('VariableDefinitions'), (0, _RuleHelpers.list)('Directive'), 'SelectionSet'],\n VariableDefinitions: [(0, _RuleHelpers.p)('('), (0, _RuleHelpers.list)('VariableDefinition'), (0, _RuleHelpers.p)(')')],\n VariableDefinition: ['Variable', (0, _RuleHelpers.p)(':'), 'Type', (0, _RuleHelpers.opt)('DefaultValue')],\n Variable: [(0, _RuleHelpers.p)('$', 'variable'), name('variable')],\n DefaultValue: [(0, _RuleHelpers.p)('='), 'Value'],\n SelectionSet: [(0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('Selection'), (0, _RuleHelpers.p)('}')],\n\n Selection(token, stream) {\n return token.value === '...' ? stream.match(/[\\s\\u00a0,]*(on\\b|@|{)/, false) ? 'InlineFragment' : 'FragmentSpread' : stream.match(/[\\s\\u00a0,]*:/, false) ? 'AliasedField' : 'Field';\n },\n\n AliasedField: [name('property'), (0, _RuleHelpers.p)(':'), name('qualifier'), (0, _RuleHelpers.opt)('Arguments'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.opt)('SelectionSet')],\n Field: [name('property'), (0, _RuleHelpers.opt)('Arguments'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.opt)('SelectionSet')],\n Arguments: [(0, _RuleHelpers.p)('('), (0, _RuleHelpers.list)('Argument'), (0, _RuleHelpers.p)(')')],\n Argument: [name('attribute'), (0, _RuleHelpers.p)(':'), 'Value'],\n FragmentSpread: [(0, _RuleHelpers.p)('...'), name('def'), (0, _RuleHelpers.list)('Directive')],\n InlineFragment: [(0, _RuleHelpers.p)('...'), (0, _RuleHelpers.opt)('TypeCondition'), (0, _RuleHelpers.list)('Directive'), 'SelectionSet'],\n FragmentDefinition: [word('fragment'), (0, _RuleHelpers.opt)((0, _RuleHelpers.butNot)(name('def'), [word('on')])), 'TypeCondition', (0, _RuleHelpers.list)('Directive'), 'SelectionSet'],\n TypeCondition: [word('on'), 'NamedType'],\n\n Value(token) {\n switch (token.kind) {\n case 'Number':\n return 'NumberValue';\n\n case 'String':\n return 'StringValue';\n\n case 'Punctuation':\n switch (token.value) {\n case '[':\n return 'ListValue';\n\n case '{':\n return 'ObjectValue';\n\n case '$':\n return 'Variable';\n\n case '&':\n return 'NamedType';\n }\n\n return null;\n\n case 'Name':\n switch (token.value) {\n case 'true':\n case 'false':\n return 'BooleanValue';\n }\n\n if (token.value === 'null') {\n return 'NullValue';\n }\n\n return 'EnumValue';\n }\n },\n\n NumberValue: [(0, _RuleHelpers.t)('Number', 'number')],\n StringValue: [(0, _RuleHelpers.t)('String', 'string')],\n BooleanValue: [(0, _RuleHelpers.t)('Name', 'builtin')],\n NullValue: [(0, _RuleHelpers.t)('Name', 'keyword')],\n EnumValue: [name('string-2')],\n ListValue: [(0, _RuleHelpers.p)('['), (0, _RuleHelpers.list)('Value'), (0, _RuleHelpers.p)(']')],\n ObjectValue: [(0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('ObjectField'), (0, _RuleHelpers.p)('}')],\n ObjectField: [name('attribute'), (0, _RuleHelpers.p)(':'), 'Value'],\n\n Type(token) {\n return token.value === '[' ? 'ListType' : 'NonNullType';\n },\n\n ListType: [(0, _RuleHelpers.p)('['), 'Type', (0, _RuleHelpers.p)(']'), (0, _RuleHelpers.opt)((0, _RuleHelpers.p)('!'))],\n NonNullType: ['NamedType', (0, _RuleHelpers.opt)((0, _RuleHelpers.p)('!'))],\n NamedType: [type('atom')],\n Directive: [(0, _RuleHelpers.p)('@', 'meta'), name('meta'), (0, _RuleHelpers.opt)('Arguments')],\n DirectiveDef: [word('directive'), (0, _RuleHelpers.p)('@', 'meta'), name('meta'), (0, _RuleHelpers.opt)('ArgumentsDef'), word('on'), (0, _RuleHelpers.list)('DirectiveLocation', (0, _RuleHelpers.p)('|'))],\n InterfaceDef: [word('interface'), name('atom'), (0, _RuleHelpers.opt)('Implements'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('FieldDef'), (0, _RuleHelpers.p)('}')],\n Implements: [word('implements'), (0, _RuleHelpers.list)('NamedType', (0, _RuleHelpers.p)('&'))],\n DirectiveLocation: [name('string-2')],\n SchemaDef: [word('schema'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('OperationTypeDef'), (0, _RuleHelpers.p)('}')],\n OperationTypeDef: [name('keyword'), (0, _RuleHelpers.p)(':'), name('atom')],\n ScalarDef: [word('scalar'), name('atom'), (0, _RuleHelpers.list)('Directive')],\n ObjectTypeDef: [word('type'), name('atom'), (0, _RuleHelpers.opt)('Implements'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('FieldDef'), (0, _RuleHelpers.p)('}')],\n FieldDef: [name('property'), (0, _RuleHelpers.opt)('ArgumentsDef'), (0, _RuleHelpers.p)(':'), 'Type', (0, _RuleHelpers.list)('Directive')],\n ArgumentsDef: [(0, _RuleHelpers.p)('('), (0, _RuleHelpers.list)('InputValueDef'), (0, _RuleHelpers.p)(')')],\n InputValueDef: [name('attribute'), (0, _RuleHelpers.p)(':'), 'Type', (0, _RuleHelpers.opt)('DefaultValue'), (0, _RuleHelpers.list)('Directive')],\n UnionDef: [word('union'), name('atom'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('='), (0, _RuleHelpers.list)('UnionMember', (0, _RuleHelpers.p)('|'))],\n UnionMember: ['NamedType'],\n EnumDef: [word('enum'), name('atom'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('EnumValueDef'), (0, _RuleHelpers.p)('}')],\n EnumValueDef: [name('string-2'), (0, _RuleHelpers.list)('Directive')],\n InputDef: [word('input'), name('atom'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('InputValueDef'), (0, _RuleHelpers.p)('}')],\n ExtendDef: [word('extend'), 'ObjectTypeDef']\n };\n _exports.ParseRules = ParseRules;\n\n function word(value) {\n return {\n style: 'keyword',\n match: token => token.kind === 'Name' && token.value === value\n };\n }\n\n function name(style) {\n return {\n style,\n match: token => token.kind === 'Name',\n\n update(state, token) {\n state.name = token.value;\n }\n\n };\n }\n\n function type(style) {\n return {\n style,\n match: token => token.kind === 'Name',\n\n update(state, token) {\n if (state.prevState && state.prevState.prevState) {\n state.name = token.value;\n state.prevState.prevState.type = token.value;\n }\n }\n\n };\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLXBhcnNlci9lc20vUnVsZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uLi9zcmMvUnVsZXMudHM/ZmUyZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvcHQsIGxpc3QsIGJ1dE5vdCwgdCwgcCB9IGZyb20gJy4vUnVsZUhlbHBlcnMnO1xuZXhwb3J0IGNvbnN0IGlzSWdub3JlZCA9IChjaCkgPT4gY2ggPT09ICcgJyB8fFxuICAgIGNoID09PSAnXFx0JyB8fFxuICAgIGNoID09PSAnLCcgfHxcbiAgICBjaCA9PT0gJ1xcbicgfHxcbiAgICBjaCA9PT0gJ1xccicgfHxcbiAgICBjaCA9PT0gJ1xcdUZFRkYnIHx8XG4gICAgY2ggPT09ICdcXHUwMEEwJztcbmV4cG9ydCBjb25zdCBMZXhSdWxlcyA9IHtcbiAgICBOYW1lOiAvXltfQS1aYS16XVtfMC05QS1aYS16XSovLFxuICAgIFB1bmN0dWF0aW9uOiAvXig/OiF8XFwkfFxcKHxcXCl8XFwuXFwuXFwufDp8PXwmfEB8XFxbfF18XFx7fFxcfHxcXH0pLyxcbiAgICBOdW1iZXI6IC9eLT8oPzowfCg/OlsxLTldWzAtOV0qKSkoPzpcXC5bMC05XSopPyg/OltlRV1bKy1dP1swLTldKyk/LyxcbiAgICBTdHJpbmc6IC9eKD86XCJcIlwiKD86XFxcXFwiXCJcInxbXlwiXXxcIlteXCJdfFwiXCJbXlwiXSkqKD86XCJcIlwiKT98XCIoPzpbXlwiXFxcXF18XFxcXCg/OlwifFxcL3xcXFxcfGJ8ZnxufHJ8dHx1WzAtOWEtZkEtRl17NH0pKSpcIj8pLyxcbiAgICBDb21tZW50OiAvXiMuKi8sXG59O1xuZXhwb3J0IGNvbnN0IFBhcnNlUnVsZXMgPSB7XG4gICAgRG9jdW1lbnQ6IFtsaXN0KCdEZWZpbml0aW9uJyldLFxuICAgIERlZmluaXRpb24odG9rZW4pIHtcbiAgICAgICAgc3dpdGNoICh0b2tlbi52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSAneyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdTaG9ydFF1ZXJ5JztcbiAgICAgICAgICAgIGNhc2UgJ3F1ZXJ5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1F1ZXJ5JztcbiAgICAgICAgICAgIGNhc2UgJ211dGF0aW9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ011dGF0aW9uJztcbiAgICAgICAgICAgIGNhc2UgJ3N1YnNjcmlwdGlvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdTdWJzY3JpcHRpb24nO1xuICAgICAgICAgICAgY2FzZSAnZnJhZ21lbnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnRnJhZ21lbnREZWZpbml0aW9uJztcbiAgICAgICAgICAgIGNhc2UgJ3NjaGVtYSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdTY2hlbWFEZWYnO1xuICAgICAgICAgICAgY2FzZSAnc2NhbGFyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1NjYWxhckRlZic7XG4gICAgICAgICAgICBjYXNlICd0eXBlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ09iamVjdFR5cGVEZWYnO1xuICAgICAgICAgICAgY2FzZSAnaW50ZXJmYWNlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0ludGVyZmFjZURlZic7XG4gICAgICAgICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdVbmlvbkRlZic7XG4gICAgICAgICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0VudW1EZWYnO1xuICAgICAgICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnSW5wdXREZWYnO1xuICAgICAgICAgICAgY2FzZSAnZXh0ZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0V4dGVuZERlZic7XG4gICAgICAgICAgICBjYXNlICdkaXJlY3RpdmUnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnRGlyZWN0aXZlRGVmJztcbiAgICAgICAgfVxuICAgIH0sXG4gICAgU2hvcnRRdWVyeTogWydTZWxlY3Rpb25TZXQnXSxcbiAgICBRdWVyeTogW1xuICAgICAgICB3b3JkKCdxdWVyeScpLFxuICAgICAgICBvcHQobmFtZSgnZGVmJykpLFxuICAgICAgICBvcHQoJ1ZhcmlhYmxlRGVmaW5pdGlvbnMnKSxcbiAgICAgICAgbGlzdCgnRGlyZWN0aXZlJyksXG4gICAgICAgICdTZWxlY3Rpb25TZXQnLFxuICAgIF0sXG4gICAgTXV0YXRpb246IFtcbiAgICAgICAgd29yZCgnbXV0YXRpb24nKSxcbiAgICAgICAgb3B0KG5hbWUoJ2RlZicpKSxcbiAgICAgICAgb3B0KCdWYXJpYWJsZURlZmluaXRpb25zJyksXG4gICAgICAgIGxpc3QoJ0RpcmVjdGl2ZScpLFxuICAgICAgICAnU2VsZWN0aW9uU2V0JyxcbiAgICBdLFxuICAgIFN1YnNjcmlwdGlvbjogW1xuICAgICAgICB3b3JkKCdzdWJzY3JpcHRpb24nKSxcbiAgICAgICAgb3B0KG5hbWUoJ2RlZicpKSxcbiAgICAgICAgb3B0KCdWYXJpYWJsZURlZmluaXRpb25zJyksXG4gICAgICAgIGxpc3QoJ0RpcmVjdGl2ZScpLFxuICAgICAgICAnU2VsZWN0aW9uU2V0JyxcbiAgICBdLFxuICAgIFZhcmlhYmxlRGVmaW5pdGlvbnM6IFtwKCcoJyksIGxpc3QoJ1ZhcmlhYmxlRGVmaW5pdGlvbicpLCBwKCcpJyldLFxuICAgIFZhcmlhYmxlRGVmaW5pdGlvbjogWydWYXJpYWJsZScsIHAoJzonKSwgJ1R5cGUnLCBvcHQoJ0RlZmF1bHRWYWx1ZScpXSxcbiAgICBWYXJpYWJsZTogW3AoJyQnLCAndmFyaWFibGUnKSwgbmFtZSgndmFyaWFibGUnKV0sXG4gICAgRGVmYXVsdFZhbHVlOiBbcCgnPScpLCAnVmFsdWUnXSxcbiAgICBTZWxlY3Rpb25TZXQ6IFtwKCd7JyksIGxpc3QoJ1NlbGVjdGlvbicpLCBwKCd9JyldLFxuICAgIFNlbGVjdGlvbih0b2tlbiwgc3RyZWFtKSB7XG4gICAgICAgIHJldHVybiB0b2tlbi52YWx1ZSA9PT0gJy4uLidcbiAgICAgICAgICAgID8gc3RyZWFtLm1hdGNoKC9bXFxzXFx1MDBhMCxdKihvblxcYnxAfHspLywgZmFsc2UpXG4gICAgICAgICAgICAgICAgPyAnSW5saW5lRnJhZ21lbnQnXG4gICAgICAgICAgICAgICAgOiAnRnJhZ21lbnRTcHJlYWQnXG4gICAgICAgICAgICA6IHN0cmVhbS5tYXRjaCgvW1xcc1xcdTAwYTAsXSo6LywgZmFsc2UpXG4gICAgICAgICAgICAgICAgPyAnQWxpYXNlZEZpZWxkJ1xuICAgICAgICAgICAgICAgIDogJ0ZpZWxkJztcbiAgICB9LFxuICAgIEFsaWFzZWRGaWVsZDogW1xuICAgICAgICBuYW1lKCdwcm9wZXJ0eScpLFxuICAgICAgICBwKCc6JyksXG4gICAgICAgIG5hbWUoJ3F1YWxpZmllcicpLFxuICAgICAgICBvcHQoJ0FyZ3VtZW50cycpLFxuICAgICAgICBsaXN0KCdEaXJlY3RpdmUnKSxcbiAgICAgICAgb3B0KCdTZWxlY3Rpb25TZXQnKSxcbiAgICBdLFxuICAgIEZpZWxkOiBbXG4gICAgICAgIG5hbWUoJ3Byb3BlcnR5JyksXG4gICAgICAgIG9wdCgnQXJndW1lbnRzJyksXG4gICAgICAgIGxpc3QoJ0RpcmVjdGl2ZScpLFxuICAgICAgICBvcHQoJ1NlbGVjdGlvblNldCcpLFxuICAgIF0sXG4gICAgQXJndW1lbnRzOiBbcCgnKCcpLCBsaXN0KCdBcmd1bWVudCcpLCBwKCcpJyldLFxuICAgIEFyZ3VtZW50OiBbbmFtZSgnYXR0cmlidXRlJyksIHAoJzonKSwgJ1ZhbHVlJ10sXG4gICAgRnJhZ21lbnRTcHJlYWQ6IFtwKCcuLi4nKSwgbmFtZSgnZGVmJyksIGxpc3QoJ0RpcmVjdGl2ZScpXSxcbiAgICBJbmxpbmVGcmFnbWVudDogW1xuICAgICAgICBwKCcuLi4nKSxcbiAgICAgICAgb3B0KCdUeXBlQ29uZGl0aW9uJyksXG4gICAgICAgIGxpc3QoJ0RpcmVjdGl2ZScpLFxuICAgICAgICAnU2VsZWN0aW9uU2V0JyxcbiAgICBdLFxuICAgIEZyYWdtZW50RGVmaW5pdGlvbjogW1xuICAgICAgICB3b3JkKCdmcmFnbWVudCcpLFxuICAgICAgICBvcHQoYnV0Tm90KG5hbWUoJ2RlZicpLCBbd29yZCgnb24nKV0pKSxcbiAgICAgICAgJ1R5cGVDb25kaXRpb24nLFxuICAgICAgICBsaXN0KCdEaXJlY3RpdmUnKSxcbiAgICAgICAgJ1NlbGVjdGlvblNldCcsXG4gICAgXSxcbiAgICBUeXBlQ29uZGl0aW9uOiBbd29yZCgnb24nKSwgJ05hbWVkVHlwZSddLFxuICAgIFZhbHVlKHRva2VuKSB7XG4gICAgICAgIHN3aXRjaCAodG9rZW4ua2luZCkge1xuICAgICAgICAgICAgY2FzZSAnTnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ051bWJlclZhbHVlJztcbiAgICAgICAgICAgIGNhc2UgJ1N0cmluZyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdTdHJpbmdWYWx1ZSc7XG4gICAgICAgICAgICBjYXNlICdQdW5jdHVhdGlvbic6XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0b2tlbi52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdbJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnTGlzdFZhbHVlJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAneyc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ09iamVjdFZhbHVlJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnJCc6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ZhcmlhYmxlJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnJic6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ05hbWVkVHlwZSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY2FzZSAnTmFtZSc6XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0b2tlbi52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd0cnVlJzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmFsc2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdCb29sZWFuVmFsdWUnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodG9rZW4udmFsdWUgPT09ICdudWxsJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ051bGxWYWx1ZSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAnRW51bVZhbHVlJztcbiAgICAgICAgfVxuICAgIH0sXG4gICAgTnVtYmVyVmFsdWU6IFt0KCdOdW1iZXInLCAnbnVtYmVyJyldLFxuICAgIFN0cmluZ1ZhbHVlOiBbdCgnU3RyaW5nJywgJ3N0cmluZycpXSxcbiAgICBCb29sZWFuVmFsdWU6IFt0KCdOYW1lJywgJ2J1aWx0aW4nKV0sXG4gICAgTnVsbFZhbHVlOiBbdCgnTmFtZScsICdrZXl3b3JkJyldLFxuICAgIEVudW1WYWx1ZTogW25hbWUoJ3N0cmluZy0yJyldLFxuICAgIExpc3RWYWx1ZTogW3AoJ1snKSwgbGlzdCgnVmFsdWUnKSwgcCgnXScpXSxcbiAgICBPYmplY3RWYWx1ZTogW3AoJ3snKSwgbGlzdCgnT2JqZWN0RmllbGQnKSwgcCgnfScpXSxcbiAgICBPYmplY3RGaWVsZDogW25hbWUoJ2F0dHJpYnV0ZScpLCBwKCc6JyksICdWYWx1ZSddLFxuICAgIFR5cGUodG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIHRva2VuLnZhbHVlID09PSAnWycgPyAnTGlzdFR5cGUnIDogJ05vbk51bGxUeXBlJztcbiAgICB9LFxuICAgIExpc3RUeXBlOiBbcCgnWycpLCAnVHlwZScsIHAoJ10nKSwgb3B0KHAoJyEnKSldLFxuICAgIE5vbk51bGxUeXBlOiBbJ05hbWVkVHlwZScsIG9wdChwKCchJykpXSxcbiAgICBOYW1lZFR5cGU6IFt0eXBlKCdhdG9tJyldLFxuICAgIERpcmVjdGl2ZTogW3AoJ0AnLCAnbWV0YScpLCBuYW1lKCdtZXRhJyksIG9wdCgnQXJndW1lbnRzJyldLFxuICAgIERpcmVjdGl2ZURlZjogW1xuICAgICAgICB3b3JkKCdkaXJlY3RpdmUnKSxcbiAgICAgICAgcCgnQCcsICdtZXRhJyksXG4gICAgICAgIG5hbWUoJ21ldGEnKSxcbiAgICAgICAgb3B0KCdBcmd1bWVudHNEZWYnKSxcbiAgICAgICAgd29yZCgnb24nKSxcbiAgICAgICAgbGlzdCgnRGlyZWN0aXZlTG9jYXRpb24nLCBwKCd8JykpLFxuICAgIF0sXG4gICAgSW50ZXJmYWNlRGVmOiBbXG4gICAgICAgIHdvcmQoJ2ludGVyZmFjZScpLFxuICAgICAgICBuYW1lKCdhdG9tJyksXG4gICAgICAgIG9wdCgnSW1wbGVtZW50cycpLFxuICAgICAgICBsaXN0KCdEaXJlY3RpdmUnKSxcbiAgICAgICAgcCgneycpLFxuICAgICAgICBsaXN0KCdGaWVsZERlZicpLFxuICAgICAgICBwKCd9JyksXG4gICAgXSxcbiAgICBJbXBsZW1lbnRzOiBbd29yZCgnaW1wbGVtZW50cycpLCBsaXN0KCdOYW1lZFR5cGUnLCBwKCcmJykpXSxcbiAgICBEaXJlY3RpdmVMb2NhdGlvbjogW25hbWUoJ3N0cmluZy0yJyldLFxuICAgIFNjaGVtYURlZjogW1xuICAgICAgICB3b3JkKCdzY2hlbWEnKSxcbiAgICAgICAgbGlzdCgnRGlyZWN0aXZlJyksXG4gICAgICAgIHAoJ3snKSxcbiAgICAgICAgbGlzdCgnT3BlcmF0aW9uVHlwZURlZicpLFxuICAgICAgICBwKCd9JyksXG4gICAgXSxcbiAgICBPcGVyYXRpb25UeXBlRGVmOiBbbmFtZSgna2V5d29yZCcpLCBwKCc6JyksIG5hbWUoJ2F0b20nKV0sXG4gICAgU2NhbGFyRGVmOiBbd29yZCgnc2NhbGFyJyksIG5hbWUoJ2F0b20nKSwgbGlzdCgnRGlyZWN0aXZlJyldLFxuICAgIE9iamVjdFR5cGVEZWY6IFtcbiAgICAgICAgd29yZCgndHlwZScpLFxuICAgICAgICBuYW1lKCdhdG9tJyksXG4gICAgICAgIG9wdCgnSW1wbGVtZW50cycpLFxuICAgICAgICBsaXN0KCdEaXJlY3RpdmUnKSxcbiAgICAgICAgcCgneycpLFxuICAgICAgICBsaXN0KCdGaWVsZERlZicpLFxuICAgICAgICBwKCd9JyksXG4gICAgXSxcbiAgICBGaWVsZERlZjogW1xuICAgICAgICBuYW1lKCdwcm9wZXJ0eScpLFxuICAgICAgICBvcHQoJ0FyZ3VtZW50c0RlZicpLFxuICAgICAgICBwKCc6JyksXG4gICAgICAgICdUeXBlJyxcbiAgICAgICAgbGlzdCgnRGlyZWN0aXZlJyksXG4gICAgXSxcbiAgICBBcmd1bWVudHNEZWY6IFtwKCcoJyksIGxpc3QoJ0lucHV0VmFsdWVEZWYnKSwgcCgnKScpXSxcbiAgICBJbnB1dFZhbHVlRGVmOiBbXG4gICAgICAgIG5hbWUoJ2F0dHJpYnV0ZScpLFxuICAgICAgICBwKCc6JyksXG4gICAgICAgICdUeXBlJyxcbiAgICAgICAgb3B0KCdEZWZhdWx0VmFsdWUnKSxcbiAgICAgICAgbGlzdCgnRGlyZWN0aXZlJyksXG4gICAgXSxcbiAgICBVbmlvbkRlZjogW1xuICAgICAgICB3b3JkKCd1bmlvbicpLFxuICAgICAgICBuYW1lKCdhdG9tJyksXG4gICAgICAgIGxpc3QoJ0RpcmVjdGl2ZScpLFxuICAgICAgICBwKCc9JyksXG4gICAgICAgIGxpc3QoJ1VuaW9uTWVtYmVyJywgcCgnfCcpKSxcbiAgICBdLFxuICAgIFVuaW9uTWVtYmVyOiBbJ05hbWVkVHlwZSddLFxuICAgIEVudW1EZWY6IFtcbiAgICAgICAgd29yZCgnZW51bScpLFxuICAgICAgICBuYW1lKCdhdG9tJyksXG4gICAgICAgIGxpc3QoJ0RpcmVjdGl2ZScpLFxuICAgICAgICBwKCd7JyksXG4gICAgICAgIGxpc3QoJ0VudW1WYWx1ZURlZicpLFxuICAgICAgICBwKCd9JyksXG4gICAgXSxcbiAgICBFbnVtVmFsdWVEZWY6IFtuYW1lKCdzdHJpbmctMicpLCBsaXN0KCdEaXJlY3RpdmUnKV0sXG4gICAgSW5wdXREZWY6IFtcbiAgICAgICAgd29yZCgnaW5wdXQnKSxcbiAgICAgICAgbmFtZSgnYXRvbScpLFxuICAgICAgICBsaXN0KCdEaXJlY3RpdmUnKSxcbiAgICAgICAgcCgneycpLFxuICAgICAgICBsaXN0KCdJbnB1dFZhbHVlRGVmJyksXG4gICAgICAgIHAoJ30nKSxcbiAgICBdLFxuICAgIEV4dGVuZERlZjogW3dvcmQoJ2V4dGVuZCcpLCAnT2JqZWN0VHlwZURlZiddLFxufTtcbmZ1bmN0aW9uIHdvcmQodmFsdWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdHlsZTogJ2tleXdvcmQnLFxuICAgICAgICBtYXRjaDogKHRva2VuKSA9PiB0b2tlbi5raW5kID09PSAnTmFtZScgJiYgdG9rZW4udmFsdWUgPT09IHZhbHVlLFxuICAgIH07XG59XG5mdW5jdGlvbiBuYW1lKHN0eWxlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3R5bGUsXG4gICAgICAgIG1hdGNoOiAodG9rZW4pID0+IHRva2VuLmtpbmQgPT09ICdOYW1lJyxcbiAgICAgICAgdXBkYXRlKHN0YXRlLCB0b2tlbikge1xuICAgICAgICAgICAgc3RhdGUubmFtZSA9IHRva2VuLnZhbHVlO1xuICAgICAgICB9LFxuICAgIH07XG59XG5mdW5jdGlvbiB0eXBlKHN0eWxlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3R5bGUsXG4gICAgICAgIG1hdGNoOiAodG9rZW4pID0+IHRva2VuLmtpbmQgPT09ICdOYW1lJyxcbiAgICAgICAgdXBkYXRlKHN0YXRlLCB0b2tlbikge1xuICAgICAgICAgICAgaWYgKHN0YXRlLnByZXZTdGF0ZSAmJiBzdGF0ZS5wcmV2U3RhdGUucHJldlN0YXRlKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUubmFtZSA9IHRva2VuLnZhbHVlO1xuICAgICAgICAgICAgICAgIHN0YXRlLnByZXZTdGF0ZS5wcmV2U3RhdGUudHlwZSA9IHRva2VuLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SdWxlcy5qcy5tYXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUNBOztBQVdBO0FBRUE7QUFHQTtBQUdBO0FBR0E7QUFHQTtBQWRBOztBQXNCQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQTVCQTtBQThCQTtBQUNBO0FBQ0E7QUFDQTtBQVFBO0FBUUE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBU0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQVJBO0FBQ0E7QUFVQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBNUJBO0FBOEJBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFRQTtBQVNBO0FBQ0E7QUFFQTtBQVFBO0FBQ0E7QUFDQTtBQVVBO0FBUUE7QUFDQTtBQVFBO0FBUUE7QUFDQTtBQVNBO0FBQ0E7QUFRQTtBQW5QQTs7O0FBdVBBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFPQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVEE7QUFVQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphql-language-service-parser/esm/Rules.js\n");
3001
3002/***/ }),
3003
3004/***/ "../../graphql-language-service-parser/esm/index.js":
3005/*!*************************************************************************************************!*\
3006 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-parser/esm/index.js ***!
3007 \*************************************************************************************************/
3008/*! no static exports found */
3009/***/ (function(module, exports, __webpack_require__) {
3010
3011eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./CharacterStream */ \"../../graphql-language-service-parser/esm/CharacterStream.js\"), __webpack_require__(/*! ./Rules */ \"../../graphql-language-service-parser/esm/Rules.js\"), __webpack_require__(/*! ./RuleHelpers */ \"../../graphql-language-service-parser/esm/RuleHelpers.js\"), __webpack_require__(/*! ./onlineParser */ \"../../graphql-language-service-parser/esm/onlineParser.js\"), __webpack_require__(/*! ./types */ \"../../graphql-language-service-parser/esm/types.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _CharacterStream, _Rules, _RuleHelpers, _onlineParser, _types) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n var _exportNames = {\n CharacterStream: true,\n LexRules: true,\n ParseRules: true,\n isIgnored: true,\n butNot: true,\n list: true,\n opt: true,\n p: true,\n t: true,\n onlineParser: true\n };\n Object.defineProperty(_exports, \"CharacterStream\", {\n enumerable: true,\n get: function () {\n return _CharacterStream.default;\n }\n });\n Object.defineProperty(_exports, \"LexRules\", {\n enumerable: true,\n get: function () {\n return _Rules.LexRules;\n }\n });\n Object.defineProperty(_exports, \"ParseRules\", {\n enumerable: true,\n get: function () {\n return _Rules.ParseRules;\n }\n });\n Object.defineProperty(_exports, \"isIgnored\", {\n enumerable: true,\n get: function () {\n return _Rules.isIgnored;\n }\n });\n Object.defineProperty(_exports, \"butNot\", {\n enumerable: true,\n get: function () {\n return _RuleHelpers.butNot;\n }\n });\n Object.defineProperty(_exports, \"list\", {\n enumerable: true,\n get: function () {\n return _RuleHelpers.list;\n }\n });\n Object.defineProperty(_exports, \"opt\", {\n enumerable: true,\n get: function () {\n return _RuleHelpers.opt;\n }\n });\n Object.defineProperty(_exports, \"p\", {\n enumerable: true,\n get: function () {\n return _RuleHelpers.p;\n }\n });\n Object.defineProperty(_exports, \"t\", {\n enumerable: true,\n get: function () {\n return _RuleHelpers.t;\n }\n });\n Object.defineProperty(_exports, \"onlineParser\", {\n enumerable: true,\n get: function () {\n return _onlineParser.default;\n }\n });\n _CharacterStream = _interopRequireDefault(_CharacterStream);\n _onlineParser = _interopRequireDefault(_onlineParser);\n Object.keys(_types).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in _exports && _exports[key] === _types[key]) return;\n Object.defineProperty(_exports, key, {\n enumerable: true,\n get: function () {\n return _types[key];\n }\n });\n });\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLXBhcnNlci9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uLi9zcmMvaW5kZXgudHM/NmYzNyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IGFzIENoYXJhY3RlclN0cmVhbSB9IGZyb20gJy4vQ2hhcmFjdGVyU3RyZWFtJztcbmV4cG9ydCB7IExleFJ1bGVzLCBQYXJzZVJ1bGVzLCBpc0lnbm9yZWQgfSBmcm9tICcuL1J1bGVzJztcbmV4cG9ydCB7IGJ1dE5vdCwgbGlzdCwgb3B0LCBwLCB0IH0gZnJvbSAnLi9SdWxlSGVscGVycyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG9ubGluZVBhcnNlciB9IGZyb20gJy4vb25saW5lUGFyc2VyJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphql-language-service-parser/esm/index.js\n");
3012
3013/***/ }),
3014
3015/***/ "../../graphql-language-service-parser/esm/onlineParser.js":
3016/*!********************************************************************************************************!*\
3017 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-parser/esm/onlineParser.js ***!
3018 \********************************************************************************************************/
3019/*! no static exports found */
3020/***/ (function(module, exports, __webpack_require__) {
3021
3022eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./Rules */ \"../../graphql-language-service-parser/esm/Rules.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _Rules) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = onlineParser;\n\n function onlineParser(options = {\n eatWhitespace: stream => stream.eatWhile(_Rules.isIgnored),\n lexRules: _Rules.LexRules,\n parseRules: _Rules.ParseRules,\n editorConfig: {}\n }) {\n return {\n startState() {\n const initialState = {\n level: 0,\n step: 0,\n name: null,\n kind: null,\n type: null,\n rule: null,\n needsSeperator: false,\n prevState: null\n };\n pushRule(options.parseRules, initialState, 'Document');\n return initialState;\n },\n\n token(stream, state) {\n return getToken(stream, state, options);\n }\n\n };\n }\n\n function getToken(stream, state, options) {\n const {\n lexRules,\n parseRules,\n eatWhitespace,\n editorConfig\n } = options;\n\n if (state.rule && state.rule.length === 0) {\n popRule(state);\n } else if (state.needsAdvance) {\n state.needsAdvance = false;\n advanceRule(state, true);\n }\n\n if (stream.sol()) {\n const tabSize = editorConfig && editorConfig.tabSize || 2;\n state.indentLevel = Math.floor(stream.indentation() / tabSize);\n }\n\n if (eatWhitespace(stream)) {\n return 'ws';\n }\n\n const token = lex(lexRules, stream);\n\n if (!token) {\n const matchedSomething = stream.match(/\\S+/);\n\n if (!matchedSomething) {\n stream.match(/\\s/);\n }\n\n pushRule(SpecialParseRules, state, 'Invalid');\n return 'invalidchar';\n }\n\n if (token.kind === 'Comment') {\n pushRule(SpecialParseRules, state, 'Comment');\n return 'comment';\n }\n\n const backupState = assign({}, state);\n\n if (token.kind === 'Punctuation') {\n if (/^[{([]/.test(token.value)) {\n if (state.indentLevel !== undefined) {\n state.levels = (state.levels || []).concat(state.indentLevel + 1);\n }\n } else if (/^[})\\]]/.test(token.value)) {\n const levels = state.levels = (state.levels || []).slice(0, -1);\n\n if (state.indentLevel) {\n if (levels.length > 0 && levels[levels.length - 1] < state.indentLevel) {\n state.indentLevel = levels[levels.length - 1];\n }\n }\n }\n }\n\n while (state.rule) {\n let expected = typeof state.rule === 'function' ? state.step === 0 ? state.rule(token, stream) : null : state.rule[state.step];\n\n if (state.needsSeperator) {\n expected = expected && (expected === null || expected === void 0 ? void 0 : expected.separator);\n }\n\n if (expected) {\n if (expected.ofRule) {\n expected = expected.ofRule;\n }\n\n if (typeof expected === 'string') {\n pushRule(parseRules, state, expected);\n continue;\n }\n\n if (expected.match && expected.match(token)) {\n if (expected.update) {\n expected.update(state, token);\n }\n\n if (token.kind === 'Punctuation') {\n advanceRule(state, true);\n } else {\n state.needsAdvance = true;\n }\n\n return expected.style;\n }\n }\n\n unsuccessful(state);\n }\n\n assign(state, backupState);\n pushRule(SpecialParseRules, state, 'Invalid');\n return 'invalidchar';\n }\n\n function assign(to, from) {\n const keys = Object.keys(from);\n\n for (let i = 0; i < keys.length; i++) {\n to[keys[i]] = from[keys[i]];\n }\n\n return to;\n }\n\n const SpecialParseRules = {\n Invalid: [],\n Comment: []\n };\n\n function pushRule(rules, state, ruleKind) {\n if (!rules[ruleKind]) {\n throw new TypeError('Unknown rule: ' + ruleKind);\n }\n\n state.prevState = Object.assign({}, state);\n state.kind = ruleKind;\n state.name = null;\n state.type = null;\n state.rule = rules[ruleKind];\n state.step = 0;\n state.needsSeperator = false;\n }\n\n function popRule(state) {\n if (!state.prevState) {\n return;\n }\n\n state.kind = state.prevState.kind;\n state.name = state.prevState.name;\n state.type = state.prevState.type;\n state.rule = state.prevState.rule;\n state.step = state.prevState.step;\n state.needsSeperator = state.prevState.needsSeperator;\n state.prevState = state.prevState.prevState;\n }\n\n function advanceRule(state, successful) {\n if (isList(state) && state.rule) {\n const step = state.rule[state.step];\n\n if (step.separator) {\n const separator = step.separator;\n state.needsSeperator = !state.needsSeperator;\n\n if (!state.needsSeperator && separator.ofRule) {\n return;\n }\n }\n\n if (successful) {\n return;\n }\n }\n\n state.needsSeperator = false;\n state.step++;\n\n while (state.rule && !(Array.isArray(state.rule) && state.step < state.rule.length)) {\n popRule(state);\n\n if (state.rule) {\n if (isList(state)) {\n if (state.rule && state.rule[state.step].separator) {\n state.needsSeperator = !state.needsSeperator;\n }\n } else {\n state.needsSeperator = false;\n state.step++;\n }\n }\n }\n }\n\n function isList(state) {\n const step = Array.isArray(state.rule) && typeof state.rule[state.step] !== 'string' && state.rule[state.step];\n return step && step.isList;\n }\n\n function unsuccessful(state) {\n while (state.rule && !(Array.isArray(state.rule) && state.rule[state.step].ofRule)) {\n popRule(state);\n }\n\n if (state.rule) {\n advanceRule(state, false);\n }\n }\n\n function lex(lexRules, stream) {\n const kinds = Object.keys(lexRules);\n\n for (let i = 0; i < kinds.length; i++) {\n const match = stream.match(lexRules[kinds[i]]);\n\n if (match && match instanceof Array) {\n return {\n kind: kinds[i],\n value: match[0]\n };\n }\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLXBhcnNlci9lc20vb25saW5lUGFyc2VyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi4vc3JjL29ubGluZVBhcnNlci50cz84NTQ3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExleFJ1bGVzLCBQYXJzZVJ1bGVzLCBpc0lnbm9yZWQgfSBmcm9tICcuL1J1bGVzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9ubGluZVBhcnNlcihvcHRpb25zID0ge1xuICAgIGVhdFdoaXRlc3BhY2U6IHN0cmVhbSA9PiBzdHJlYW0uZWF0V2hpbGUoaXNJZ25vcmVkKSxcbiAgICBsZXhSdWxlczogTGV4UnVsZXMsXG4gICAgcGFyc2VSdWxlczogUGFyc2VSdWxlcyxcbiAgICBlZGl0b3JDb25maWc6IHt9LFxufSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0U3RhdGUoKSB7XG4gICAgICAgICAgICBjb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgbGV2ZWw6IDAsXG4gICAgICAgICAgICAgICAgc3RlcDogMCxcbiAgICAgICAgICAgICAgICBuYW1lOiBudWxsLFxuICAgICAgICAgICAgICAgIGtpbmQ6IG51bGwsXG4gICAgICAgICAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgICAgICAgICAgICBydWxlOiBudWxsLFxuICAgICAgICAgICAgICAgIG5lZWRzU2VwZXJhdG9yOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwcmV2U3RhdGU6IG51bGwsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcHVzaFJ1bGUob3B0aW9ucy5wYXJzZVJ1bGVzLCBpbml0aWFsU3RhdGUsICdEb2N1bWVudCcpO1xuICAgICAgICAgICAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW4oc3RyZWFtLCBzdGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGdldFRva2VuKHN0cmVhbSwgc3RhdGUsIG9wdGlvbnMpO1xuICAgICAgICB9LFxuICAgIH07XG59XG5mdW5jdGlvbiBnZXRUb2tlbihzdHJlYW0sIHN0YXRlLCBvcHRpb25zKSB7XG4gICAgY29uc3QgeyBsZXhSdWxlcywgcGFyc2VSdWxlcywgZWF0V2hpdGVzcGFjZSwgZWRpdG9yQ29uZmlnIH0gPSBvcHRpb25zO1xuICAgIGlmIChzdGF0ZS5ydWxlICYmIHN0YXRlLnJ1bGUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHBvcFJ1bGUoc3RhdGUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChzdGF0ZS5uZWVkc0FkdmFuY2UpIHtcbiAgICAgICAgc3RhdGUubmVlZHNBZHZhbmNlID0gZmFsc2U7XG4gICAgICAgIGFkdmFuY2VSdWxlKHN0YXRlLCB0cnVlKTtcbiAgICB9XG4gICAgaWYgKHN0cmVhbS5zb2woKSkge1xuICAgICAgICBjb25zdCB0YWJTaXplID0gKGVkaXRvckNvbmZpZyAmJiBlZGl0b3JDb25maWcudGFiU2l6ZSkgfHwgMjtcbiAgICAgICAgc3RhdGUuaW5kZW50TGV2ZWwgPSBNYXRoLmZsb29yKHN0cmVhbS5pbmRlbnRhdGlvbigpIC8gdGFiU2l6ZSk7XG4gICAgfVxuICAgIGlmIChlYXRXaGl0ZXNwYWNlKHN0cmVhbSkpIHtcbiAgICAgICAgcmV0dXJuICd3cyc7XG4gICAgfVxuICAgIGNvbnN0IHRva2VuID0gbGV4KGxleFJ1bGVzLCBzdHJlYW0pO1xuICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZFNvbWV0aGluZyA9IHN0cmVhbS5tYXRjaCgvXFxTKy8pO1xuICAgICAgICBpZiAoIW1hdGNoZWRTb21ldGhpbmcpIHtcbiAgICAgICAgICAgIHN0cmVhbS5tYXRjaCgvXFxzLyk7XG4gICAgICAgIH1cbiAgICAgICAgcHVzaFJ1bGUoU3BlY2lhbFBhcnNlUnVsZXMsIHN0YXRlLCAnSW52YWxpZCcpO1xuICAgICAgICByZXR1cm4gJ2ludmFsaWRjaGFyJztcbiAgICB9XG4gICAgaWYgKHRva2VuLmtpbmQgPT09ICdDb21tZW50Jykge1xuICAgICAgICBwdXNoUnVsZShTcGVjaWFsUGFyc2VSdWxlcywgc3RhdGUsICdDb21tZW50Jyk7XG4gICAgICAgIHJldHVybiAnY29tbWVudCc7XG4gICAgfVxuICAgIGNvbnN0IGJhY2t1cFN0YXRlID0gYXNzaWduKHt9LCBzdGF0ZSk7XG4gICAgaWYgKHRva2VuLmtpbmQgPT09ICdQdW5jdHVhdGlvbicpIHtcbiAgICAgICAgaWYgKC9eW3soW10vLnRlc3QodG9rZW4udmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuaW5kZW50TGV2ZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHN0YXRlLmxldmVscyA9IChzdGF0ZS5sZXZlbHMgfHwgW10pLmNvbmNhdChzdGF0ZS5pbmRlbnRMZXZlbCArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKC9eW30pXFxdXS8udGVzdCh0b2tlbi52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxldmVscyA9IChzdGF0ZS5sZXZlbHMgPSAoc3RhdGUubGV2ZWxzIHx8IFtdKS5zbGljZSgwLCAtMSkpO1xuICAgICAgICAgICAgaWYgKHN0YXRlLmluZGVudExldmVsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxldmVscy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgICAgIGxldmVsc1tsZXZlbHMubGVuZ3RoIC0gMV0gPCBzdGF0ZS5pbmRlbnRMZXZlbCkge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5pbmRlbnRMZXZlbCA9IGxldmVsc1tsZXZlbHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHdoaWxlIChzdGF0ZS5ydWxlKSB7XG4gICAgICAgIGxldCBleHBlY3RlZCA9IHR5cGVvZiBzdGF0ZS5ydWxlID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IHN0YXRlLnN0ZXAgPT09IDBcbiAgICAgICAgICAgICAgICA/IHN0YXRlLnJ1bGUodG9rZW4sIHN0cmVhbSlcbiAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIDogc3RhdGUucnVsZVtzdGF0ZS5zdGVwXTtcbiAgICAgICAgaWYgKHN0YXRlLm5lZWRzU2VwZXJhdG9yKSB7XG4gICAgICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkICYmIChleHBlY3RlZCA9PT0gbnVsbCB8fCBleHBlY3RlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwZWN0ZWQuc2VwYXJhdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXhwZWN0ZWQpIHtcbiAgICAgICAgICAgIGlmIChleHBlY3RlZC5vZlJ1bGUpIHtcbiAgICAgICAgICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkLm9mUnVsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcHVzaFJ1bGUocGFyc2VSdWxlcywgc3RhdGUsIGV4cGVjdGVkKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChleHBlY3RlZC5tYXRjaCAmJiBleHBlY3RlZC5tYXRjaCh0b2tlbikpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWQudXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLnVwZGF0ZShzdGF0ZSwgdG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodG9rZW4ua2luZCA9PT0gJ1B1bmN0dWF0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBhZHZhbmNlUnVsZShzdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5uZWVkc0FkdmFuY2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWQuc3R5bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdW5zdWNjZXNzZnVsKHN0YXRlKTtcbiAgICB9XG4gICAgYXNzaWduKHN0YXRlLCBiYWNrdXBTdGF0ZSk7XG4gICAgcHVzaFJ1bGUoU3BlY2lhbFBhcnNlUnVsZXMsIHN0YXRlLCAnSW52YWxpZCcpO1xuICAgIHJldHVybiAnaW52YWxpZGNoYXInO1xufVxuZnVuY3Rpb24gYXNzaWduKHRvLCBmcm9tKSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGZyb20pO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0b1trZXlzW2ldXSA9IGZyb21ba2V5c1tpXV07XG4gICAgfVxuICAgIHJldHVybiB0bztcbn1cbmNvbnN0IFNwZWNpYWxQYXJzZVJ1bGVzID0ge1xuICAgIEludmFsaWQ6IFtdLFxuICAgIENvbW1lbnQ6IFtdLFxufTtcbmZ1bmN0aW9uIHB1c2hSdWxlKHJ1bGVzLCBzdGF0ZSwgcnVsZUtpbmQpIHtcbiAgICBpZiAoIXJ1bGVzW3J1bGVLaW5kXSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIHJ1bGU6ICcgKyBydWxlS2luZCk7XG4gICAgfVxuICAgIHN0YXRlLnByZXZTdGF0ZSA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlKTtcbiAgICBzdGF0ZS5raW5kID0gcnVsZUtpbmQ7XG4gICAgc3RhdGUubmFtZSA9IG51bGw7XG4gICAgc3RhdGUudHlwZSA9IG51bGw7XG4gICAgc3RhdGUucnVsZSA9IHJ1bGVzW3J1bGVLaW5kXTtcbiAgICBzdGF0ZS5zdGVwID0gMDtcbiAgICBzdGF0ZS5uZWVkc1NlcGVyYXRvciA9IGZhbHNlO1xufVxuZnVuY3Rpb24gcG9wUnVsZShzdGF0ZSkge1xuICAgIGlmICghc3RhdGUucHJldlN0YXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3RhdGUua2luZCA9IHN0YXRlLnByZXZTdGF0ZS5raW5kO1xuICAgIHN0YXRlLm5hbWUgPSBzdGF0ZS5wcmV2U3RhdGUubmFtZTtcbiAgICBzdGF0ZS50eXBlID0gc3RhdGUucHJldlN0YXRlLnR5cGU7XG4gICAgc3RhdGUucnVsZSA9IHN0YXRlLnByZXZTdGF0ZS5ydWxlO1xuICAgIHN0YXRlLnN0ZXAgPSBzdGF0ZS5wcmV2U3RhdGUuc3RlcDtcbiAgICBzdGF0ZS5uZWVkc1NlcGVyYXRvciA9IHN0YXRlLnByZXZTdGF0ZS5uZWVkc1NlcGVyYXRvcjtcbiAgICBzdGF0ZS5wcmV2U3RhdGUgPSBzdGF0ZS5wcmV2U3RhdGUucHJldlN0YXRlO1xufVxuZnVuY3Rpb24gYWR2YW5jZVJ1bGUoc3RhdGUsIHN1Y2Nlc3NmdWwpIHtcbiAgICBpZiAoaXNMaXN0KHN0YXRlKSAmJiBzdGF0ZS5ydWxlKSB7XG4gICAgICAgIGNvbnN0IHN0ZXAgPSBzdGF0ZS5ydWxlW3N0YXRlLnN0ZXBdO1xuICAgICAgICBpZiAoc3RlcC5zZXBhcmF0b3IpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHN0ZXAuc2VwYXJhdG9yO1xuICAgICAgICAgICAgc3RhdGUubmVlZHNTZXBlcmF0b3IgPSAhc3RhdGUubmVlZHNTZXBlcmF0b3I7XG4gICAgICAgICAgICBpZiAoIXN0YXRlLm5lZWRzU2VwZXJhdG9yICYmIHNlcGFyYXRvci5vZlJ1bGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN1Y2Nlc3NmdWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGF0ZS5uZWVkc1NlcGVyYXRvciA9IGZhbHNlO1xuICAgIHN0YXRlLnN0ZXArKztcbiAgICB3aGlsZSAoc3RhdGUucnVsZSAmJlxuICAgICAgICAhKEFycmF5LmlzQXJyYXkoc3RhdGUucnVsZSkgJiYgc3RhdGUuc3RlcCA8IHN0YXRlLnJ1bGUubGVuZ3RoKSkge1xuICAgICAgICBwb3BSdWxlKHN0YXRlKTtcbiAgICAgICAgaWYgKHN0YXRlLnJ1bGUpIHtcbiAgICAgICAgICAgIGlmIChpc0xpc3Qoc3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlLnJ1bGUgJiYgc3RhdGUucnVsZVtzdGF0ZS5zdGVwXS5zZXBhcmF0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUubmVlZHNTZXBlcmF0b3IgPSAhc3RhdGUubmVlZHNTZXBlcmF0b3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RhdGUubmVlZHNTZXBlcmF0b3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzdGF0ZS5zdGVwKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBpc0xpc3Qoc3RhdGUpIHtcbiAgICBjb25zdCBzdGVwID0gQXJyYXkuaXNBcnJheShzdGF0ZS5ydWxlKSAmJlxuICAgICAgICB0eXBlb2Ygc3RhdGUucnVsZVtzdGF0ZS5zdGVwXSAhPT0gJ3N0cmluZycgJiZcbiAgICAgICAgc3RhdGUucnVsZVtzdGF0ZS5zdGVwXTtcbiAgICByZXR1cm4gc3RlcCAmJiBzdGVwLmlzTGlzdDtcbn1cbmZ1bmN0aW9uIHVuc3VjY2Vzc2Z1bChzdGF0ZSkge1xuICAgIHdoaWxlIChzdGF0ZS5ydWxlICYmXG4gICAgICAgICEoQXJyYXkuaXNBcnJheShzdGF0ZS5ydWxlKSAmJiBzdGF0ZS5ydWxlW3N0YXRlLnN0ZXBdLm9mUnVsZSkpIHtcbiAgICAgICAgcG9wUnVsZShzdGF0ZSk7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5ydWxlKSB7XG4gICAgICAgIGFkdmFuY2VSdWxlKHN0YXRlLCBmYWxzZSk7XG4gICAgfVxufVxuZnVuY3Rpb24gbGV4KGxleFJ1bGVzLCBzdHJlYW0pIHtcbiAgICBjb25zdCBraW5kcyA9IE9iamVjdC5rZXlzKGxleFJ1bGVzKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtpbmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gc3RyZWFtLm1hdGNoKGxleFJ1bGVzW2tpbmRzW2ldXSk7XG4gICAgICAgIGlmIChtYXRjaCAmJiBtYXRjaCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4geyBraW5kOiBraW5kc1tpXSwgdmFsdWU6IG1hdGNoWzBdIH07XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1vbmxpbmVQYXJzZXIuanMubWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUE2Q0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQW5CQTtBQW9CQTtBQUNBO0FBQ0E7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFLQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFNQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphql-language-service-parser/esm/onlineParser.js\n");
3023
3024/***/ }),
3025
3026/***/ "../../graphql-language-service-parser/esm/types.js":
3027/*!*************************************************************************************************!*\
3028 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-parser/esm/types.js ***!
3029 \*************************************************************************************************/
3030/*! no static exports found */
3031/***/ (function(module, exports, __webpack_require__) {
3032
3033eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.RuleKinds = _exports.AdditionalRuleKinds = void 0;\n const AdditionalRuleKinds = {\n ALIASED_FIELD: 'AliasedField',\n ARGUMENTS: 'Arguments',\n SHORT_QUERY: 'ShortQuery',\n QUERY: 'Query',\n MUTATION: 'Mutation',\n SUBSCRIPTION: 'Subscription',\n TYPE_CONDITION: 'TypeCondition',\n INVALID: 'Invalid',\n COMMENT: 'Comment',\n SCHEMA_DEF: 'SchemaDef',\n SCALAR_DEF: 'ScalarDef',\n OBJECT_TYPE_DEF: 'ObjectTypeDef',\n OBJECT_VALUE: 'ObjectValue',\n LIST_VALUE: 'ListValue',\n INTERFACE_DEF: 'InterfaceDef',\n UNION_DEF: 'UnionDef',\n ENUM_DEF: 'EnumDef',\n ENUM_VALUE: 'EnumValue',\n FIELD_DEF: 'FieldDef',\n INPUT_DEF: 'InputDef',\n INPUT_VALUE_DEF: 'InputValueDef',\n ARGUMENTS_DEF: 'ArgumentsDef',\n EXTEND_DEF: 'ExtendDef',\n DIRECTIVE_DEF: 'DirectiveDef',\n IMPLEMENTS: 'Implements',\n VARIABLE_DEFINITIONS: 'VariableDefinitions',\n TYPE: 'Type'\n };\n _exports.AdditionalRuleKinds = AdditionalRuleKinds;\n const RuleKinds = Object.assign(Object.assign({}, _graphql.Kind), AdditionalRuleKinds);\n _exports.RuleKinds = RuleKinds;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLXBhcnNlci9lc20vdHlwZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uLi9zcmMvdHlwZXMudHM/OGNlMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLaW5kIH0gZnJvbSAnZ3JhcGhxbCc7XG5leHBvcnQgY29uc3QgQWRkaXRpb25hbFJ1bGVLaW5kcyA9IHtcbiAgICBBTElBU0VEX0ZJRUxEOiAnQWxpYXNlZEZpZWxkJyxcbiAgICBBUkdVTUVOVFM6ICdBcmd1bWVudHMnLFxuICAgIFNIT1JUX1FVRVJZOiAnU2hvcnRRdWVyeScsXG4gICAgUVVFUlk6ICdRdWVyeScsXG4gICAgTVVUQVRJT046ICdNdXRhdGlvbicsXG4gICAgU1VCU0NSSVBUSU9OOiAnU3Vic2NyaXB0aW9uJyxcbiAgICBUWVBFX0NPTkRJVElPTjogJ1R5cGVDb25kaXRpb24nLFxuICAgIElOVkFMSUQ6ICdJbnZhbGlkJyxcbiAgICBDT01NRU5UOiAnQ29tbWVudCcsXG4gICAgU0NIRU1BX0RFRjogJ1NjaGVtYURlZicsXG4gICAgU0NBTEFSX0RFRjogJ1NjYWxhckRlZicsXG4gICAgT0JKRUNUX1RZUEVfREVGOiAnT2JqZWN0VHlwZURlZicsXG4gICAgT0JKRUNUX1ZBTFVFOiAnT2JqZWN0VmFsdWUnLFxuICAgIExJU1RfVkFMVUU6ICdMaXN0VmFsdWUnLFxuICAgIElOVEVSRkFDRV9ERUY6ICdJbnRlcmZhY2VEZWYnLFxuICAgIFVOSU9OX0RFRjogJ1VuaW9uRGVmJyxcbiAgICBFTlVNX0RFRjogJ0VudW1EZWYnLFxuICAgIEVOVU1fVkFMVUU6ICdFbnVtVmFsdWUnLFxuICAgIEZJRUxEX0RFRjogJ0ZpZWxkRGVmJyxcbiAgICBJTlBVVF9ERUY6ICdJbnB1dERlZicsXG4gICAgSU5QVVRfVkFMVUVfREVGOiAnSW5wdXRWYWx1ZURlZicsXG4gICAgQVJHVU1FTlRTX0RFRjogJ0FyZ3VtZW50c0RlZicsXG4gICAgRVhURU5EX0RFRjogJ0V4dGVuZERlZicsXG4gICAgRElSRUNUSVZFX0RFRjogJ0RpcmVjdGl2ZURlZicsXG4gICAgSU1QTEVNRU5UUzogJ0ltcGxlbWVudHMnLFxuICAgIFZBUklBQkxFX0RFRklOSVRJT05TOiAnVmFyaWFibGVEZWZpbml0aW9ucycsXG4gICAgVFlQRTogJ1R5cGUnLFxufTtcbmV4cG9ydCBjb25zdCBSdWxlS2luZHMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIEtpbmQpLCBBZGRpdGlvbmFsUnVsZUtpbmRzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXR5cGVzLmpzLm1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUF3REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEzQkE7O0FBNERBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphql-language-service-parser/esm/types.js\n");
3034
3035/***/ }),
3036
3037/***/ "../../graphql-language-service-utils/esm/Range.js":
3038/*!************************************************************************************************!*\
3039 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-utils/esm/Range.js ***!
3040 \************************************************************************************************/
3041/*! no static exports found */
3042/***/ (function(module, exports, __webpack_require__) {
3043
3044eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.offsetToPosition = offsetToPosition;\n _exports.locToRange = locToRange;\n _exports.Position = _exports.Range = void 0;\n\n class Range {\n constructor(start, end) {\n this.containsPosition = position => {\n if (this.start.line === position.line) {\n return this.start.character <= position.character;\n } else if (this.end.line === position.line) {\n return this.end.character >= position.character;\n } else {\n return this.start.line <= position.line && this.end.line >= position.line;\n }\n };\n\n this.start = start;\n this.end = end;\n }\n\n setStart(line, character) {\n this.start = new Position(line, character);\n }\n\n setEnd(line, character) {\n this.end = new Position(line, character);\n }\n\n }\n\n _exports.Range = Range;\n\n class Position {\n constructor(line, character) {\n this.lessThanOrEqualTo = position => this.line < position.line || this.line === position.line && this.character <= position.character;\n\n this.line = line;\n this.character = character;\n }\n\n setLine(line) {\n this.line = line;\n }\n\n setCharacter(character) {\n this.character = character;\n }\n\n }\n\n _exports.Position = Position;\n\n function offsetToPosition(text, loc) {\n const EOL = '\\n';\n const buf = text.slice(0, loc);\n const lines = buf.split(EOL).length - 1;\n const lastLineIndex = buf.lastIndexOf(EOL);\n return new Position(lines, loc - lastLineIndex - 1);\n }\n\n function locToRange(text, loc) {\n const start = offsetToPosition(text, loc.start);\n const end = offsetToPosition(text, loc.end);\n return new Range(start, end);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLXV0aWxzL2VzbS9SYW5nZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uL3NyYy9SYW5nZS50cz84ZTViIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBSYW5nZSB7XG4gICAgY29uc3RydWN0b3Ioc3RhcnQsIGVuZCkge1xuICAgICAgICB0aGlzLmNvbnRhaW5zUG9zaXRpb24gPSAocG9zaXRpb24pID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0LmxpbmUgPT09IHBvc2l0aW9uLmxpbmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGFydC5jaGFyYWN0ZXIgPD0gcG9zaXRpb24uY2hhcmFjdGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5lbmQubGluZSA9PT0gcG9zaXRpb24ubGluZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVuZC5jaGFyYWN0ZXIgPj0gcG9zaXRpb24uY2hhcmFjdGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnQubGluZSA8PSBwb3NpdGlvbi5saW5lICYmIHRoaXMuZW5kLmxpbmUgPj0gcG9zaXRpb24ubGluZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgICAgICB0aGlzLmVuZCA9IGVuZDtcbiAgICB9XG4gICAgc2V0U3RhcnQobGluZSwgY2hhcmFjdGVyKSB7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBuZXcgUG9zaXRpb24obGluZSwgY2hhcmFjdGVyKTtcbiAgICB9XG4gICAgc2V0RW5kKGxpbmUsIGNoYXJhY3Rlcikge1xuICAgICAgICB0aGlzLmVuZCA9IG5ldyBQb3NpdGlvbihsaW5lLCBjaGFyYWN0ZXIpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBQb3NpdGlvbiB7XG4gICAgY29uc3RydWN0b3IobGluZSwgY2hhcmFjdGVyKSB7XG4gICAgICAgIHRoaXMubGVzc1RoYW5PckVxdWFsVG8gPSAocG9zaXRpb24pID0+IHRoaXMubGluZSA8IHBvc2l0aW9uLmxpbmUgfHxcbiAgICAgICAgICAgICh0aGlzLmxpbmUgPT09IHBvc2l0aW9uLmxpbmUgJiYgdGhpcy5jaGFyYWN0ZXIgPD0gcG9zaXRpb24uY2hhcmFjdGVyKTtcbiAgICAgICAgdGhpcy5saW5lID0gbGluZTtcbiAgICAgICAgdGhpcy5jaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7XG4gICAgfVxuICAgIHNldExpbmUobGluZSkge1xuICAgICAgICB0aGlzLmxpbmUgPSBsaW5lO1xuICAgIH1cbiAgICBzZXRDaGFyYWN0ZXIoY2hhcmFjdGVyKSB7XG4gICAgICAgIHRoaXMuY2hhcmFjdGVyID0gY2hhcmFjdGVyO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBvZmZzZXRUb1Bvc2l0aW9uKHRleHQsIGxvYykge1xuICAgIGNvbnN0IEVPTCA9ICdcXG4nO1xuICAgIGNvbnN0IGJ1ZiA9IHRleHQuc2xpY2UoMCwgbG9jKTtcbiAgICBjb25zdCBsaW5lcyA9IGJ1Zi5zcGxpdChFT0wpLmxlbmd0aCAtIDE7XG4gICAgY29uc3QgbGFzdExpbmVJbmRleCA9IGJ1Zi5sYXN0SW5kZXhPZihFT0wpO1xuICAgIHJldHVybiBuZXcgUG9zaXRpb24obGluZXMsIGxvYyAtIGxhc3RMaW5lSW5kZXggLSAxKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsb2NUb1JhbmdlKHRleHQsIGxvYykge1xuICAgIGNvbnN0IHN0YXJ0ID0gb2Zmc2V0VG9Qb3NpdGlvbih0ZXh0LCBsb2Muc3RhcnQpO1xuICAgIGNvbnN0IGVuZCA9IG9mZnNldFRvUG9zaXRpb24odGV4dCwgbG9jLmVuZCk7XG4gICAgcmV0dXJuIG5ldyBSYW5nZShzdGFydCwgZW5kKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJhbmdlLmpzLm1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZQTtBQUdBO0FBYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZkE7QUFDQTs7O0FBMEJBO0FBR0E7QUFhQTtBQUNBO0FBYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZkE7QUFDQTs7O0FBb0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphql-language-service-utils/esm/Range.js\n");
3045
3046/***/ }),
3047
3048/***/ "../../graphql-language-service-utils/esm/fragmentDependencies.js":
3049/*!***************************************************************************************************************!*\
3050 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-utils/esm/fragmentDependencies.js ***!
3051 \***************************************************************************************************************/
3052/*! no static exports found */
3053/***/ (function(module, exports, __webpack_require__) {
3054
3055eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! nullthrows */ \"../../../node_modules/nullthrows/nullthrows.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql, _nullthrows) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.getFragmentDependenciesForAST = _exports.getFragmentDependencies = void 0;\n _nullthrows = _interopRequireDefault(_nullthrows);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n const getFragmentDependencies = (operationString, fragmentDefinitions) => {\n if (!fragmentDefinitions) {\n return [];\n }\n\n let parsedOperation;\n\n try {\n parsedOperation = (0, _graphql.parse)(operationString, {\n allowLegacySDLImplementsInterfaces: true,\n allowLegacySDLEmptyFields: true\n });\n } catch (error) {\n return [];\n }\n\n return getFragmentDependenciesForAST(parsedOperation, fragmentDefinitions);\n };\n\n _exports.getFragmentDependencies = getFragmentDependencies;\n\n const getFragmentDependenciesForAST = (parsedOperation, fragmentDefinitions) => {\n if (!fragmentDefinitions) {\n return [];\n }\n\n const existingFrags = new Map();\n const referencedFragNames = new Set();\n (0, _graphql.visit)(parsedOperation, {\n FragmentDefinition(node) {\n existingFrags.set(node.name.value, true);\n },\n\n FragmentSpread(node) {\n if (!referencedFragNames.has(node.name.value)) {\n referencedFragNames.add(node.name.value);\n }\n }\n\n });\n const asts = new Set();\n referencedFragNames.forEach(name => {\n if (!existingFrags.has(name) && fragmentDefinitions.has(name)) {\n asts.add((0, _nullthrows.default)(fragmentDefinitions.get(name)));\n }\n });\n const referencedFragments = [];\n asts.forEach(ast => {\n (0, _graphql.visit)(ast, {\n FragmentSpread(node) {\n if (!referencedFragNames.has(node.name.value) && fragmentDefinitions.get(node.name.value)) {\n asts.add((0, _nullthrows.default)(fragmentDefinitions.get(node.name.value)));\n referencedFragNames.add(node.name.value);\n }\n }\n\n });\n\n if (!existingFrags.has(ast.name.value)) {\n referencedFragments.push(ast);\n }\n });\n return referencedFragments;\n };\n\n _exports.getFragmentDependenciesForAST = getFragmentDependenciesForAST;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLXV0aWxzL2VzbS9mcmFnbWVudERlcGVuZGVuY2llcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uL3NyYy9mcmFnbWVudERlcGVuZGVuY2llcy50cz80NDE5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlLCB2aXNpdCB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IG51bGx0aHJvd3MgZnJvbSAnbnVsbHRocm93cyc7XG5leHBvcnQgY29uc3QgZ2V0RnJhZ21lbnREZXBlbmRlbmNpZXMgPSAob3BlcmF0aW9uU3RyaW5nLCBmcmFnbWVudERlZmluaXRpb25zKSA9PiB7XG4gICAgaWYgKCFmcmFnbWVudERlZmluaXRpb25zKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgbGV0IHBhcnNlZE9wZXJhdGlvbjtcbiAgICB0cnkge1xuICAgICAgICBwYXJzZWRPcGVyYXRpb24gPSBwYXJzZShvcGVyYXRpb25TdHJpbmcsIHtcbiAgICAgICAgICAgIGFsbG93TGVnYWN5U0RMSW1wbGVtZW50c0ludGVyZmFjZXM6IHRydWUsXG4gICAgICAgICAgICBhbGxvd0xlZ2FjeVNETEVtcHR5RmllbGRzOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIGdldEZyYWdtZW50RGVwZW5kZW5jaWVzRm9yQVNUKHBhcnNlZE9wZXJhdGlvbiwgZnJhZ21lbnREZWZpbml0aW9ucyk7XG59O1xuZXhwb3J0IGNvbnN0IGdldEZyYWdtZW50RGVwZW5kZW5jaWVzRm9yQVNUID0gKHBhcnNlZE9wZXJhdGlvbiwgZnJhZ21lbnREZWZpbml0aW9ucykgPT4ge1xuICAgIGlmICghZnJhZ21lbnREZWZpbml0aW9ucykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGV4aXN0aW5nRnJhZ3MgPSBuZXcgTWFwKCk7XG4gICAgY29uc3QgcmVmZXJlbmNlZEZyYWdOYW1lcyA9IG5ldyBTZXQoKTtcbiAgICB2aXNpdChwYXJzZWRPcGVyYXRpb24sIHtcbiAgICAgICAgRnJhZ21lbnREZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgICAgICAgIGV4aXN0aW5nRnJhZ3Muc2V0KG5vZGUubmFtZS52YWx1ZSwgdHJ1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIEZyYWdtZW50U3ByZWFkKG5vZGUpIHtcbiAgICAgICAgICAgIGlmICghcmVmZXJlbmNlZEZyYWdOYW1lcy5oYXMobm9kZS5uYW1lLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZWRGcmFnTmFtZXMuYWRkKG5vZGUubmFtZS52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgY29uc3QgYXN0cyA9IG5ldyBTZXQoKTtcbiAgICByZWZlcmVuY2VkRnJhZ05hbWVzLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgIGlmICghZXhpc3RpbmdGcmFncy5oYXMobmFtZSkgJiYgZnJhZ21lbnREZWZpbml0aW9ucy5oYXMobmFtZSkpIHtcbiAgICAgICAgICAgIGFzdHMuYWRkKG51bGx0aHJvd3MoZnJhZ21lbnREZWZpbml0aW9ucy5nZXQobmFtZSkpKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHJlZmVyZW5jZWRGcmFnbWVudHMgPSBbXTtcbiAgICBhc3RzLmZvckVhY2goYXN0ID0+IHtcbiAgICAgICAgdmlzaXQoYXN0LCB7XG4gICAgICAgICAgICBGcmFnbWVudFNwcmVhZChub2RlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZWZlcmVuY2VkRnJhZ05hbWVzLmhhcyhub2RlLm5hbWUudmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50RGVmaW5pdGlvbnMuZ2V0KG5vZGUubmFtZS52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXN0cy5hZGQobnVsbHRocm93cyhmcmFnbWVudERlZmluaXRpb25zLmdldChub2RlLm5hbWUudmFsdWUpKSk7XG4gICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZWRGcmFnTmFtZXMuYWRkKG5vZGUubmFtZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghZXhpc3RpbmdGcmFncy5oYXMoYXN0Lm5hbWUudmFsdWUpKSB7XG4gICAgICAgICAgICByZWZlcmVuY2VkRnJhZ21lbnRzLnB1c2goYXN0KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZWZlcmVuY2VkRnJhZ21lbnRzO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZyYWdtZW50RGVwZW5kZW5jaWVzLmpzLm1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7OztBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFWQTtBQUNBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../graphql-language-service-utils/esm/fragmentDependencies.js\n");
3056
3057/***/ }),
3058
3059/***/ "../../graphql-language-service-utils/esm/getASTNodeAtPosition.js":
3060/*!***************************************************************************************************************!*\
3061 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-utils/esm/getASTNodeAtPosition.js ***!
3062 \***************************************************************************************************************/
3063/*! no static exports found */
3064/***/ (function(module, exports, __webpack_require__) {
3065
3066eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.getASTNodeAtPosition = getASTNodeAtPosition;\n _exports.pointToOffset = pointToOffset;\n\n function getASTNodeAtPosition(query, ast, point) {\n const offset = pointToOffset(query, point);\n let nodeContainingPosition;\n (0, _graphql.visit)(ast, {\n enter(node) {\n if (node.kind !== 'Name' && node.loc && node.loc.start <= offset && offset <= node.loc.end) {\n nodeContainingPosition = node;\n } else {\n return false;\n }\n },\n\n leave(node) {\n if (node.loc && node.loc.start <= offset && offset <= node.loc.end) {\n return false;\n }\n }\n\n });\n return nodeContainingPosition;\n }\n\n function pointToOffset(text, point) {\n const linesUntilPosition = text.split('\\n').slice(0, point.line);\n return point.character + linesUntilPosition.map(line => line.length + 1).reduce((a, b) => a + b, 0);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLXV0aWxzL2VzbS9nZXRBU1ROb2RlQXRQb3NpdGlvbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uL3NyYy9nZXRBU1ROb2RlQXRQb3NpdGlvbi50cz80YTVhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHZpc2l0IH0gZnJvbSAnZ3JhcGhxbCc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QVNUTm9kZUF0UG9zaXRpb24ocXVlcnksIGFzdCwgcG9pbnQpIHtcbiAgICBjb25zdCBvZmZzZXQgPSBwb2ludFRvT2Zmc2V0KHF1ZXJ5LCBwb2ludCk7XG4gICAgbGV0IG5vZGVDb250YWluaW5nUG9zaXRpb247XG4gICAgdmlzaXQoYXN0LCB7XG4gICAgICAgIGVudGVyKG5vZGUpIHtcbiAgICAgICAgICAgIGlmIChub2RlLmtpbmQgIT09ICdOYW1lJyAmJlxuICAgICAgICAgICAgICAgIG5vZGUubG9jICYmXG4gICAgICAgICAgICAgICAgbm9kZS5sb2Muc3RhcnQgPD0gb2Zmc2V0ICYmXG4gICAgICAgICAgICAgICAgb2Zmc2V0IDw9IG5vZGUubG9jLmVuZCkge1xuICAgICAgICAgICAgICAgIG5vZGVDb250YWluaW5nUG9zaXRpb24gPSBub2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBsZWF2ZShub2RlKSB7XG4gICAgICAgICAgICBpZiAobm9kZS5sb2MgJiYgbm9kZS5sb2Muc3RhcnQgPD0gb2Zmc2V0ICYmIG9mZnNldCA8PSBub2RlLmxvYy5lbmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIG5vZGVDb250YWluaW5nUG9zaXRpb247XG59XG5leHBvcnQgZnVuY3Rpb24gcG9pbnRUb09mZnNldCh0ZXh0LCBwb2ludCkge1xuICAgIGNvbnN0IGxpbmVzVW50aWxQb3NpdGlvbiA9IHRleHQuc3BsaXQoJ1xcbicpLnNsaWNlKDAsIHBvaW50LmxpbmUpO1xuICAgIHJldHVybiAocG9pbnQuY2hhcmFjdGVyICtcbiAgICAgICAgbGluZXNVbnRpbFBvc2l0aW9uXG4gICAgICAgICAgICAubWFwKGxpbmUgPT4gbGluZS5sZW5ndGggKyAxKVxuICAgICAgICAgICAgLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldEFTVE5vZGVBdFBvc2l0aW9uLmpzLm1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQWNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWxCQTtBQW9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFRQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphql-language-service-utils/esm/getASTNodeAtPosition.js\n");
3067
3068/***/ }),
3069
3070/***/ "../../graphql-language-service-utils/esm/index.js":
3071/*!************************************************************************************************!*\
3072 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-utils/esm/index.js ***!
3073 \************************************************************************************************/
3074/*! no static exports found */
3075/***/ (function(module, exports, __webpack_require__) {
3076
3077eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! ./fragmentDependencies */ \"../../graphql-language-service-utils/esm/fragmentDependencies.js\"), __webpack_require__(/*! ./getASTNodeAtPosition */ \"../../graphql-language-service-utils/esm/getASTNodeAtPosition.js\"), __webpack_require__(/*! ./Range */ \"../../graphql-language-service-utils/esm/Range.js\"), __webpack_require__(/*! ./validateWithCustomRules */ \"../../graphql-language-service-utils/esm/validateWithCustomRules.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _fragmentDependencies, _getASTNodeAtPosition, _Range, _validateWithCustomRules) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n Object.defineProperty(_exports, \"getFragmentDependencies\", {\n enumerable: true,\n get: function () {\n return _fragmentDependencies.getFragmentDependencies;\n }\n });\n Object.defineProperty(_exports, \"getFragmentDependenciesForAST\", {\n enumerable: true,\n get: function () {\n return _fragmentDependencies.getFragmentDependenciesForAST;\n }\n });\n Object.defineProperty(_exports, \"getASTNodeAtPosition\", {\n enumerable: true,\n get: function () {\n return _getASTNodeAtPosition.getASTNodeAtPosition;\n }\n });\n Object.defineProperty(_exports, \"pointToOffset\", {\n enumerable: true,\n get: function () {\n return _getASTNodeAtPosition.pointToOffset;\n }\n });\n Object.defineProperty(_exports, \"Position\", {\n enumerable: true,\n get: function () {\n return _Range.Position;\n }\n });\n Object.defineProperty(_exports, \"Range\", {\n enumerable: true,\n get: function () {\n return _Range.Range;\n }\n });\n Object.defineProperty(_exports, \"locToRange\", {\n enumerable: true,\n get: function () {\n return _Range.locToRange;\n }\n });\n Object.defineProperty(_exports, \"offsetToPosition\", {\n enumerable: true,\n get: function () {\n return _Range.offsetToPosition;\n }\n });\n Object.defineProperty(_exports, \"validateWithCustomRules\", {\n enumerable: true,\n get: function () {\n return _validateWithCustomRules.validateWithCustomRules;\n }\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLXV0aWxzL2VzbS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../graphql-language-service-utils/esm/index.js\n");
3078
3079/***/ }),
3080
3081/***/ "../../graphql-language-service-utils/esm/validateWithCustomRules.js":
3082/*!******************************************************************************************************************!*\
3083 !*** /home/runner/work/graphiql/graphiql/packages/graphql-language-service-utils/esm/validateWithCustomRules.js ***!
3084 \******************************************************************************************************************/
3085/*! no static exports found */
3086/***/ (function(module, exports, __webpack_require__) {
3087
3088eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! graphql/validation/rules/ExecutableDefinitions */ \"../../../node_modules/graphql/validation/rules/ExecutableDefinitions.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql, _ExecutableDefinitions) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.validateWithCustomRules = validateWithCustomRules;\n\n function validateWithCustomRules(schema, ast, customRules, isRelayCompatMode) {\n const rules = _graphql.specifiedRules.filter(rule => {\n if (rule === _graphql.NoUnusedFragmentsRule || rule === _ExecutableDefinitions.ExecutableDefinitions) {\n return false;\n }\n\n if (isRelayCompatMode && rule === _graphql.KnownFragmentNamesRule) {\n return false;\n }\n\n return true;\n });\n\n if (customRules) {\n Array.prototype.push.apply(rules, customRules);\n }\n\n const errors = (0, _graphql.validate)(schema, ast, rules);\n return errors.filter(error => {\n if (error.message.indexOf('Unknown directive') !== -1 && error.nodes) {\n const node = error.nodes[0];\n\n if (node && node.kind === _graphql.Kind.DIRECTIVE) {\n const name = node.name.value;\n\n if (name === 'arguments' || name === 'argumentDefinitions') {\n return false;\n }\n }\n }\n\n return true;\n });\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ3JhcGhxbC1sYW5ndWFnZS1zZXJ2aWNlLXV0aWxzL2VzbS92YWxpZGF0ZVdpdGhDdXN0b21SdWxlcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4uL3NyYy92YWxpZGF0ZVdpdGhDdXN0b21SdWxlcy50cz9mYTJiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtpbmQsIHNwZWNpZmllZFJ1bGVzLCB2YWxpZGF0ZSwgTm9VbnVzZWRGcmFnbWVudHNSdWxlLCBLbm93bkZyYWdtZW50TmFtZXNSdWxlLCB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgRXhlY3V0YWJsZURlZmluaXRpb25zIH0gZnJvbSAnZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0V4ZWN1dGFibGVEZWZpbml0aW9ucyc7XG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVXaXRoQ3VzdG9tUnVsZXMoc2NoZW1hLCBhc3QsIGN1c3RvbVJ1bGVzLCBpc1JlbGF5Q29tcGF0TW9kZSkge1xuICAgIGNvbnN0IHJ1bGVzID0gc3BlY2lmaWVkUnVsZXMuZmlsdGVyKHJ1bGUgPT4ge1xuICAgICAgICBpZiAocnVsZSA9PT0gTm9VbnVzZWRGcmFnbWVudHNSdWxlIHx8IHJ1bGUgPT09IEV4ZWN1dGFibGVEZWZpbml0aW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1JlbGF5Q29tcGF0TW9kZSAmJiBydWxlID09PSBLbm93bkZyYWdtZW50TmFtZXNSdWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgaWYgKGN1c3RvbVJ1bGVzKSB7XG4gICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHJ1bGVzLCBjdXN0b21SdWxlcyk7XG4gICAgfVxuICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlKHNjaGVtYSwgYXN0LCBydWxlcyk7XG4gICAgcmV0dXJuIGVycm9ycy5maWx0ZXIoZXJyb3IgPT4ge1xuICAgICAgICBpZiAoZXJyb3IubWVzc2FnZS5pbmRleE9mKCdVbmtub3duIGRpcmVjdGl2ZScpICE9PSAtMSAmJiBlcnJvci5ub2Rlcykge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGVycm9yLm5vZGVzWzBdO1xuICAgICAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS5raW5kID09PSBLaW5kLkRJUkVDVElWRSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdhcmd1bWVudHMnIHx8IG5hbWUgPT09ICdhcmd1bWVudERlZmluaXRpb25zJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmFsaWRhdGVXaXRoQ3VzdG9tUnVsZXMuanMubWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUF5QkE7QUFNQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../graphql-language-service-utils/esm/validateWithCustomRules.js\n");
3089
3090/***/ }),
3091
3092/***/ "./cdn.ts":
3093/*!****************!*\
3094 !*** ./cdn.ts ***!
3095 \****************/
3096/*! no static exports found */
3097/***/ (function(module, exports, __webpack_require__) {
3098
3099eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! regenerator-runtime/runtime */ \"../../../node_modules/regenerator-runtime/runtime.js\"), __webpack_require__(/*! @graphiql/toolkit */ \"../../graphiql-toolkit/esm/index.js\"), __webpack_require__(/*! ./css/app.css */ \"./css/app.css\"), __webpack_require__(/*! ./css/codemirror.css */ \"./css/codemirror.css\"), __webpack_require__(/*! ./css/foldgutter.css */ \"./css/foldgutter.css\"), __webpack_require__(/*! ./css/info.css */ \"./css/info.css\"), __webpack_require__(/*! ./css/jump.css */ \"./css/jump.css\"), __webpack_require__(/*! ./css/lint.css */ \"./css/lint.css\"), __webpack_require__(/*! ./css/loading.css */ \"./css/loading.css\"), __webpack_require__(/*! ./css/show-hint.css */ \"./css/show-hint.css\"), __webpack_require__(/*! ./css/doc-explorer.css */ \"./css/doc-explorer.css\"), __webpack_require__(/*! ./css/history.css */ \"./css/history.css\"), __webpack_require__(/*! ./components/GraphiQL */ \"./components/GraphiQL.tsx\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _runtime, _toolkit, _app, _codemirror, _foldgutter, _info, _jump, _lint, _loading, _showHint, _docExplorer, _history, _GraphiQL) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n // add the static function here for CDN only. otherwise, doing this in the component could\n // add unwanted dependencies to the bundle.\n // @ts-ignore\n _GraphiQL.GraphiQL.createFetcher = _toolkit.createGraphiQLFetcher;\n var _default = _GraphiQL.GraphiQL;\n _exports.default = _default;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jZG4udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2Nkbi50cz9kM2U2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgJ3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZSc7XG5cbmltcG9ydCB7IGNyZWF0ZUdyYXBoaVFMRmV0Y2hlciB9IGZyb20gJ0BncmFwaGlxbC90b29sa2l0JztcblxuaW1wb3J0ICcuL2Nzcy9hcHAuY3NzJztcbmltcG9ydCAnLi9jc3MvY29kZW1pcnJvci5jc3MnO1xuaW1wb3J0ICcuL2Nzcy9mb2xkZ3V0dGVyLmNzcyc7XG5pbXBvcnQgJy4vY3NzL2luZm8uY3NzJztcbmltcG9ydCAnLi9jc3MvanVtcC5jc3MnO1xuaW1wb3J0ICcuL2Nzcy9saW50LmNzcyc7XG5pbXBvcnQgJy4vY3NzL2xvYWRpbmcuY3NzJztcbmltcG9ydCAnLi9jc3Mvc2hvdy1oaW50LmNzcyc7XG5cbmltcG9ydCAnLi9jc3MvZG9jLWV4cGxvcmVyLmNzcyc7XG5pbXBvcnQgJy4vY3NzL2hpc3RvcnkuY3NzJztcblxuaW1wb3J0IHsgR3JhcGhpUUwgfSBmcm9tICcuL2NvbXBvbmVudHMvR3JhcGhpUUwnO1xuLy8gYWRkIHRoZSBzdGF0aWMgZnVuY3Rpb24gaGVyZSBmb3IgQ0ROIG9ubHkuIG90aGVyd2lzZSwgZG9pbmcgdGhpcyBpbiB0aGUgY29tcG9uZW50IGNvdWxkXG4vLyBhZGQgdW53YW50ZWQgZGVwZW5kZW5jaWVzIHRvIHRoZSBidW5kbGUuXG4vLyBAdHMtaWdub3JlXG5HcmFwaGlRTC5jcmVhdGVGZXRjaGVyID0gY3JlYXRlR3JhcGhpUUxGZXRjaGVyO1xuXG5leHBvcnQgZGVmYXVsdCBHcmFwaGlRTDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBa0JBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./cdn.ts\n");
3100
3101/***/ }),
3102
3103/***/ "./components/DocExplorer.tsx":
3104/*!************************************!*\
3105 !*** ./components/DocExplorer.tsx ***!
3106 \************************************/
3107/*! no static exports found */
3108/***/ (function(module, exports, __webpack_require__) {
3109
3110eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! ./DocExplorer/FieldDoc */ \"./components/DocExplorer/FieldDoc.tsx\"), __webpack_require__(/*! ./DocExplorer/SchemaDoc */ \"./components/DocExplorer/SchemaDoc.tsx\"), __webpack_require__(/*! ./DocExplorer/SearchBox */ \"./components/DocExplorer/SearchBox.tsx\"), __webpack_require__(/*! ./DocExplorer/SearchResults */ \"./components/DocExplorer/SearchResults.tsx\"), __webpack_require__(/*! ./DocExplorer/TypeDoc */ \"./components/DocExplorer/TypeDoc.tsx\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _graphql, _FieldDoc, _SchemaDoc, _SearchBox, _SearchResults, _TypeDoc) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.DocExplorer = void 0;\n _react = _interopRequireDefault(_react);\n _FieldDoc = _interopRequireDefault(_FieldDoc);\n _SchemaDoc = _interopRequireDefault(_SchemaDoc);\n _SearchBox = _interopRequireDefault(_SearchBox);\n _SearchResults = _interopRequireDefault(_SearchResults);\n _TypeDoc = _interopRequireDefault(_TypeDoc);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n const initialNav = {\n name: 'Schema',\n title: 'Documentation Explorer'\n };\n\n /**\n * DocExplorer\n *\n * Shows documentations for GraphQL definitions from the schema.\n *\n * Props:\n *\n * - schema: A required GraphQLSchema instance that provides GraphQL document\n * definitions.\n *\n * Children:\n *\n * - Any provided children will be positioned in the right-hand-side of the\n * top bar. Typically this will be a \"close\" button for temporary explorer.\n *\n */\n class DocExplorer extends _react.default.Component {\n // handleClickTypeOrField: OnClickTypeFunction | OnClickFieldFunction\n constructor(props) {\n super(props);\n\n _defineProperty(this, \"handleNavBackClick\", () => {\n if (this.state.navStack.length > 1) {\n this.setState({\n navStack: this.state.navStack.slice(0, -1)\n });\n }\n });\n\n _defineProperty(this, \"handleClickType\", type => {\n this.showDoc(type);\n });\n\n _defineProperty(this, \"handleClickField\", field => {\n this.showDoc(field);\n });\n\n _defineProperty(this, \"handleSearch\", value => {\n this.showSearch(value);\n });\n\n this.state = {\n navStack: [initialNav]\n };\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n return this.props.schema !== nextProps.schema || this.state.navStack !== nextState.navStack;\n }\n\n render() {\n const {\n schema\n } = this.props;\n const navStack = this.state.navStack;\n const navItem = navStack[navStack.length - 1];\n let content;\n\n if (schema === undefined) {\n // Schema is undefined when it is being loaded via introspection.\n content = /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"spinner-container\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"spinner\"\n }));\n } else if (!schema) {\n // Schema is null when it explicitly does not exist, typically due to\n // an error during introspection.\n content = /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"error-container\"\n }, 'No Schema Available');\n } else if (navItem.search) {\n content = /*#__PURE__*/_react.default.createElement(_SearchResults.default, {\n searchValue: navItem.search,\n withinType: navItem.def,\n schema: schema,\n onClickType: this.handleClickType,\n onClickField: this.handleClickField\n });\n } else if (navStack.length === 1) {\n content = /*#__PURE__*/_react.default.createElement(_SchemaDoc.default, {\n schema: schema,\n onClickType: this.handleClickType\n });\n } else if ((0, _graphql.isType)(navItem.def)) {\n content = /*#__PURE__*/_react.default.createElement(_TypeDoc.default, {\n schema: schema,\n type: navItem.def,\n onClickType: this.handleClickType,\n onClickField: this.handleClickField\n });\n } else {\n content = /*#__PURE__*/_react.default.createElement(_FieldDoc.default, {\n field: navItem.def,\n onClickType: this.handleClickType\n });\n }\n\n const shouldSearchBoxAppear = navStack.length === 1 || (0, _graphql.isType)(navItem.def) && 'getFields' in navItem.def;\n let prevName;\n\n if (navStack.length > 1) {\n prevName = navStack[navStack.length - 2].name;\n }\n\n return /*#__PURE__*/_react.default.createElement(\"section\", {\n className: \"doc-explorer\",\n key: navItem.name,\n \"aria-label\": \"Documentation Explorer\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-explorer-title-bar\"\n }, prevName && /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"doc-explorer-back\",\n onClick: this.handleNavBackClick,\n \"aria-label\": `Go back to ${prevName}`\n }, prevName), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-explorer-title\"\n }, navItem.title || navItem.name), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-explorer-rhs\"\n }, this.props.children)), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-explorer-contents\"\n }, shouldSearchBoxAppear && /*#__PURE__*/_react.default.createElement(_SearchBox.default, {\n value: navItem.search,\n placeholder: `Search ${navItem.name}...`,\n onSearch: this.handleSearch\n }), content));\n } // Public API\n\n\n showDoc(typeOrField) {\n const navStack = this.state.navStack;\n const topNav = navStack[navStack.length - 1];\n\n if (topNav.def !== typeOrField) {\n this.setState({\n navStack: navStack.concat([{\n name: typeOrField.name,\n def: typeOrField\n }])\n });\n }\n } // Public API\n\n\n showDocForReference(reference) {\n if (reference && reference.kind === 'Type') {\n this.showDoc(reference.type);\n } else if (reference.kind === 'Field') {\n this.showDoc(reference.field);\n } else if (reference.kind === 'Argument' && reference.field) {\n this.showDoc(reference.field);\n } else if (reference.kind === 'EnumValue' && reference.type) {\n this.showDoc(reference.type);\n }\n } // Public API\n\n\n showSearch(search) {\n const navStack = this.state.navStack.slice();\n const topNav = navStack[navStack.length - 1];\n navStack[navStack.length - 1] = { ...topNav,\n search\n };\n this.setState({\n navStack\n });\n }\n\n reset() {\n this.setState({\n navStack: [initialNav]\n });\n }\n\n }\n\n _exports.DocExplorer = DocExplorer;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyLnRzeC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY29tcG9uZW50cy9Eb2NFeHBsb3Jlci50c3g/NmViZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgR3JhcGhRTFNjaGVtYSwgaXNUeXBlLCBHcmFwaFFMTmFtZWRUeXBlIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICcuL0RvY0V4cGxvcmVyL3R5cGVzJztcblxuaW1wb3J0IEZpZWxkRG9jIGZyb20gJy4vRG9jRXhwbG9yZXIvRmllbGREb2MnO1xuaW1wb3J0IFNjaGVtYURvYyBmcm9tICcuL0RvY0V4cGxvcmVyL1NjaGVtYURvYyc7XG5pbXBvcnQgU2VhcmNoQm94IGZyb20gJy4vRG9jRXhwbG9yZXIvU2VhcmNoQm94JztcbmltcG9ydCBTZWFyY2hSZXN1bHRzIGZyb20gJy4vRG9jRXhwbG9yZXIvU2VhcmNoUmVzdWx0cyc7XG5pbXBvcnQgVHlwZURvYyBmcm9tICcuL0RvY0V4cGxvcmVyL1R5cGVEb2MnO1xuXG50eXBlIE5hdlN0YWNrSXRlbSA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgc2VhcmNoPzogc3RyaW5nO1xuICBkZWY/OiBHcmFwaFFMTmFtZWRUeXBlIHwgRmllbGRUeXBlO1xufTtcblxuY29uc3QgaW5pdGlhbE5hdjogTmF2U3RhY2tJdGVtID0ge1xuICBuYW1lOiAnU2NoZW1hJyxcbiAgdGl0bGU6ICdEb2N1bWVudGF0aW9uIEV4cGxvcmVyJyxcbn07XG5cbnR5cGUgRG9jRXhwbG9yZXJQcm9wcyA9IHtcbiAgc2NoZW1hPzogR3JhcGhRTFNjaGVtYSB8IG51bGw7XG59O1xuXG50eXBlIERvY0V4cGxvcmVyU3RhdGUgPSB7XG4gIG5hdlN0YWNrOiBOYXZTdGFja0l0ZW1bXTtcbn07XG5cbi8qKlxuICogRG9jRXhwbG9yZXJcbiAqXG4gKiBTaG93cyBkb2N1bWVudGF0aW9ucyBmb3IgR3JhcGhRTCBkZWZpbml0aW9ucyBmcm9tIHRoZSBzY2hlbWEuXG4gKlxuICogUHJvcHM6XG4gKlxuICogICAtIHNjaGVtYTogQSByZXF1aXJlZCBHcmFwaFFMU2NoZW1hIGluc3RhbmNlIHRoYXQgcHJvdmlkZXMgR3JhcGhRTCBkb2N1bWVudFxuICogICAgIGRlZmluaXRpb25zLlxuICpcbiAqIENoaWxkcmVuOlxuICpcbiAqICAgLSBBbnkgcHJvdmlkZWQgY2hpbGRyZW4gd2lsbCBiZSBwb3NpdGlvbmVkIGluIHRoZSByaWdodC1oYW5kLXNpZGUgb2YgdGhlXG4gKiAgICAgdG9wIGJhci4gVHlwaWNhbGx5IHRoaXMgd2lsbCBiZSBhIFwiY2xvc2VcIiBidXR0b24gZm9yIHRlbXBvcmFyeSBleHBsb3Jlci5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBEb2NFeHBsb3JlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxcbiAgRG9jRXhwbG9yZXJQcm9wcyxcbiAgRG9jRXhwbG9yZXJTdGF0ZVxuPiB7XG4gIC8vIGhhbmRsZUNsaWNrVHlwZU9yRmllbGQ6IE9uQ2xpY2tUeXBlRnVuY3Rpb24gfCBPbkNsaWNrRmllbGRGdW5jdGlvblxuICBjb25zdHJ1Y3Rvcihwcm9wczogRG9jRXhwbG9yZXJQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7IG5hdlN0YWNrOiBbaW5pdGlhbE5hdl0gfTtcbiAgfVxuXG4gIHNob3VsZENvbXBvbmVudFVwZGF0ZShcbiAgICBuZXh0UHJvcHM6IERvY0V4cGxvcmVyUHJvcHMsXG4gICAgbmV4dFN0YXRlOiBEb2NFeHBsb3JlclN0YXRlLFxuICApIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5wcm9wcy5zY2hlbWEgIT09IG5leHRQcm9wcy5zY2hlbWEgfHxcbiAgICAgIHRoaXMuc3RhdGUubmF2U3RhY2sgIT09IG5leHRTdGF0ZS5uYXZTdGFja1xuICAgICk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBzY2hlbWEgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgbmF2U3RhY2sgPSB0aGlzLnN0YXRlLm5hdlN0YWNrO1xuICAgIGNvbnN0IG5hdkl0ZW0gPSBuYXZTdGFja1tuYXZTdGFjay5sZW5ndGggLSAxXTtcblxuICAgIGxldCBjb250ZW50O1xuICAgIGlmIChzY2hlbWEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gU2NoZW1hIGlzIHVuZGVmaW5lZCB3aGVuIGl0IGlzIGJlaW5nIGxvYWRlZCB2aWEgaW50cm9zcGVjdGlvbi5cbiAgICAgIGNvbnRlbnQgPSAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3Bpbm5lci1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwaW5uZXJcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICghc2NoZW1hKSB7XG4gICAgICAvLyBTY2hlbWEgaXMgbnVsbCB3aGVuIGl0IGV4cGxpY2l0bHkgZG9lcyBub3QgZXhpc3QsIHR5cGljYWxseSBkdWUgdG9cbiAgICAgIC8vIGFuIGVycm9yIGR1cmluZyBpbnRyb3NwZWN0aW9uLlxuICAgICAgY29udGVudCA9IDxkaXYgY2xhc3NOYW1lPVwiZXJyb3ItY29udGFpbmVyXCI+eydObyBTY2hlbWEgQXZhaWxhYmxlJ308L2Rpdj47XG4gICAgfSBlbHNlIGlmIChuYXZJdGVtLnNlYXJjaCkge1xuICAgICAgY29udGVudCA9IChcbiAgICAgICAgPFNlYXJjaFJlc3VsdHNcbiAgICAgICAgICBzZWFyY2hWYWx1ZT17bmF2SXRlbS5zZWFyY2h9XG4gICAgICAgICAgd2l0aGluVHlwZT17bmF2SXRlbS5kZWYgYXMgR3JhcGhRTE5hbWVkVHlwZX1cbiAgICAgICAgICBzY2hlbWE9e3NjaGVtYX1cbiAgICAgICAgICBvbkNsaWNrVHlwZT17dGhpcy5oYW5kbGVDbGlja1R5cGV9XG4gICAgICAgICAgb25DbGlja0ZpZWxkPXt0aGlzLmhhbmRsZUNsaWNrRmllbGR9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAobmF2U3RhY2subGVuZ3RoID09PSAxKSB7XG4gICAgICBjb250ZW50ID0gKFxuICAgICAgICA8U2NoZW1hRG9jIHNjaGVtYT17c2NoZW1hfSBvbkNsaWNrVHlwZT17dGhpcy5oYW5kbGVDbGlja1R5cGV9IC8+XG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoaXNUeXBlKG5hdkl0ZW0uZGVmKSkge1xuICAgICAgY29udGVudCA9IChcbiAgICAgICAgPFR5cGVEb2NcbiAgICAgICAgICBzY2hlbWE9e3NjaGVtYX1cbiAgICAgICAgICB0eXBlPXtuYXZJdGVtLmRlZn1cbiAgICAgICAgICBvbkNsaWNrVHlwZT17dGhpcy5oYW5kbGVDbGlja1R5cGV9XG4gICAgICAgICAgb25DbGlja0ZpZWxkPXt0aGlzLmhhbmRsZUNsaWNrRmllbGR9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZW50ID0gKFxuICAgICAgICA8RmllbGREb2NcbiAgICAgICAgICBmaWVsZD17bmF2SXRlbS5kZWYgYXMgRmllbGRUeXBlfVxuICAgICAgICAgIG9uQ2xpY2tUeXBlPXt0aGlzLmhhbmRsZUNsaWNrVHlwZX1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2hvdWxkU2VhcmNoQm94QXBwZWFyID1cbiAgICAgIG5hdlN0YWNrLmxlbmd0aCA9PT0gMSB8fFxuICAgICAgKGlzVHlwZShuYXZJdGVtLmRlZikgJiYgJ2dldEZpZWxkcycgaW4gbmF2SXRlbS5kZWYpO1xuXG4gICAgbGV0IHByZXZOYW1lO1xuICAgIGlmIChuYXZTdGFjay5sZW5ndGggPiAxKSB7XG4gICAgICBwcmV2TmFtZSA9IG5hdlN0YWNrW25hdlN0YWNrLmxlbmd0aCAtIDJdLm5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxzZWN0aW9uXG4gICAgICAgIGNsYXNzTmFtZT1cImRvYy1leHBsb3JlclwiXG4gICAgICAgIGtleT17bmF2SXRlbS5uYW1lfVxuICAgICAgICBhcmlhLWxhYmVsPVwiRG9jdW1lbnRhdGlvbiBFeHBsb3JlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1leHBsb3Jlci10aXRsZS1iYXJcIj5cbiAgICAgICAgICB7cHJldk5hbWUgJiYgKFxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJkb2MtZXhwbG9yZXItYmFja1wiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlTmF2QmFja0NsaWNrfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtgR28gYmFjayB0byAke3ByZXZOYW1lfWB9PlxuICAgICAgICAgICAgICB7cHJldk5hbWV9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZG9jLWV4cGxvcmVyLXRpdGxlXCI+XG4gICAgICAgICAgICB7bmF2SXRlbS50aXRsZSB8fCBuYXZJdGVtLm5hbWV9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtZXhwbG9yZXItcmhzXCI+e3RoaXMucHJvcHMuY2hpbGRyZW59PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1leHBsb3Jlci1jb250ZW50c1wiPlxuICAgICAgICAgIHtzaG91bGRTZWFyY2hCb3hBcHBlYXIgJiYgKFxuICAgICAgICAgICAgPFNlYXJjaEJveFxuICAgICAgICAgICAgICB2YWx1ZT17bmF2SXRlbS5zZWFyY2h9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtgU2VhcmNoICR7bmF2SXRlbS5uYW1lfS4uLmB9XG4gICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLmhhbmRsZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgKTtcbiAgfVxuXG4gIC8vIFB1YmxpYyBBUElcbiAgc2hvd0RvYyh0eXBlT3JGaWVsZDogR3JhcGhRTE5hbWVkVHlwZSB8IEZpZWxkVHlwZSkge1xuICAgIGNvbnN0IG5hdlN0YWNrID0gdGhpcy5zdGF0ZS5uYXZTdGFjaztcbiAgICBjb25zdCB0b3BOYXYgPSBuYXZTdGFja1tuYXZTdGFjay5sZW5ndGggLSAxXTtcbiAgICBpZiAodG9wTmF2LmRlZiAhPT0gdHlwZU9yRmllbGQpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBuYXZTdGFjazogbmF2U3RhY2suY29uY2F0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiB0eXBlT3JGaWVsZC5uYW1lLFxuICAgICAgICAgICAgZGVmOiB0eXBlT3JGaWVsZCxcbiAgICAgICAgICB9LFxuICAgICAgICBdKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFB1YmxpYyBBUElcbiAgc2hvd0RvY0ZvclJlZmVyZW5jZShyZWZlcmVuY2U6IGFueSkge1xuICAgIGlmIChyZWZlcmVuY2UgJiYgcmVmZXJlbmNlLmtpbmQgPT09ICdUeXBlJykge1xuICAgICAgdGhpcy5zaG93RG9jKHJlZmVyZW5jZS50eXBlKTtcbiAgICB9IGVsc2UgaWYgKHJlZmVyZW5jZS5raW5kID09PSAnRmllbGQnKSB7XG4gICAgICB0aGlzLnNob3dEb2MocmVmZXJlbmNlLmZpZWxkKTtcbiAgICB9IGVsc2UgaWYgKHJlZmVyZW5jZS5raW5kID09PSAnQXJndW1lbnQnICYmIHJlZmVyZW5jZS5maWVsZCkge1xuICAgICAgdGhpcy5zaG93RG9jKHJlZmVyZW5jZS5maWVsZCk7XG4gICAgfSBlbHNlIGlmIChyZWZlcmVuY2Uua2luZCA9PT0gJ0VudW1WYWx1ZScgJiYgcmVmZXJlbmNlLnR5cGUpIHtcbiAgICAgIHRoaXMuc2hvd0RvYyhyZWZlcmVuY2UudHlwZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gUHVibGljIEFQSVxuICBzaG93U2VhcmNoKHNlYXJjaDogc3RyaW5nKSB7XG4gICAgY29uc3QgbmF2U3RhY2sgPSB0aGlzLnN0YXRlLm5hdlN0YWNrLnNsaWNlKCk7XG4gICAgY29uc3QgdG9wTmF2ID0gbmF2U3RhY2tbbmF2U3RhY2subGVuZ3RoIC0gMV07XG4gICAgbmF2U3RhY2tbbmF2U3RhY2subGVuZ3RoIC0gMV0gPSB7IC4uLnRvcE5hdiwgc2VhcmNoIH07XG4gICAgdGhpcy5zZXRTdGF0ZSh7IG5hdlN0YWNrIH0pO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IG5hdlN0YWNrOiBbaW5pdGlhbE5hdl0gfSk7XG4gIH1cblxuICBoYW5kbGVOYXZCYWNrQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuc3RhdGUubmF2U3RhY2subGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IG5hdlN0YWNrOiB0aGlzLnN0YXRlLm5hdlN0YWNrLnNsaWNlKDAsIC0xKSB9KTtcbiAgICB9XG4gIH07XG5cbiAgaGFuZGxlQ2xpY2tUeXBlID0gKHR5cGU6IEdyYXBoUUxOYW1lZFR5cGUpID0+IHtcbiAgICB0aGlzLnNob3dEb2ModHlwZSk7XG4gIH07XG5cbiAgaGFuZGxlQ2xpY2tGaWVsZCA9IChmaWVsZDogRmllbGRUeXBlKSA9PiB7XG4gICAgdGhpcy5zaG93RG9jKGZpZWxkKTtcbiAgfTtcblxuICBoYW5kbGVTZWFyY2ggPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHRoaXMuc2hvd1NlYXJjaCh2YWx1ZSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkE7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBcUpBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBekpBO0FBMkpBO0FBQ0E7QUFDQTtBQTdKQTtBQStKQTtBQUNBO0FBQ0E7QUFqS0E7QUFtS0E7QUFDQTtBQUNBO0FBbEtBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFPQTtBQUNBO0FBRUE7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFIQTtBQUlBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFIQTtBQU9BO0FBQUE7QUFHQTtBQUFBO0FBRUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUhBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRkE7QUFGQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBckpBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/DocExplorer.tsx\n");
3111
3112/***/ }),
3113
3114/***/ "./components/DocExplorer/Argument.tsx":
3115/*!*********************************************!*\
3116 !*** ./components/DocExplorer/Argument.tsx ***!
3117 \*********************************************/
3118/*! no static exports found */
3119/***/ (function(module, exports, __webpack_require__) {
3120
3121eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! ./TypeLink */ \"./components/DocExplorer/TypeLink.tsx\"), __webpack_require__(/*! ./DefaultValue */ \"./components/DocExplorer/DefaultValue.tsx\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _TypeLink, _DefaultValue) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = Argument;\n _react = _interopRequireDefault(_react);\n _TypeLink = _interopRequireDefault(_TypeLink);\n _DefaultValue = _interopRequireDefault(_DefaultValue);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function Argument({\n arg,\n onClickType,\n showDefaultValue\n }) {\n return /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"arg\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"arg-name\"\n }, arg.name), ': ', /*#__PURE__*/_react.default.createElement(_TypeLink.default, {\n type: arg.type,\n onClick: onClickType\n }), showDefaultValue !== false && /*#__PURE__*/_react.default.createElement(_DefaultValue.default, {\n field: arg\n }));\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL0FyZ3VtZW50LnRzeC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY29tcG9uZW50cy9Eb2NFeHBsb3Jlci9Bcmd1bWVudC50c3g/ZTNiMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgR3JhcGhRTEFyZ3VtZW50IH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgVHlwZUxpbmsgZnJvbSAnLi9UeXBlTGluayc7XG5pbXBvcnQgRGVmYXVsdFZhbHVlIGZyb20gJy4vRGVmYXVsdFZhbHVlJztcbmltcG9ydCB7IE9uQ2xpY2tUeXBlRnVuY3Rpb24gfSBmcm9tICcuL3R5cGVzJztcblxudHlwZSBBcmd1bWVudFByb3BzID0ge1xuICBhcmc6IEdyYXBoUUxBcmd1bWVudDtcbiAgb25DbGlja1R5cGU6IE9uQ2xpY2tUeXBlRnVuY3Rpb247XG4gIHNob3dEZWZhdWx0VmFsdWU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQXJndW1lbnQoe1xuICBhcmcsXG4gIG9uQ2xpY2tUeXBlLFxuICBzaG93RGVmYXVsdFZhbHVlLFxufTogQXJndW1lbnRQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzcGFuIGNsYXNzTmFtZT1cImFyZ1wiPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYXJnLW5hbWVcIj57YXJnLm5hbWV9PC9zcGFuPlxuICAgICAgeyc6ICd9XG4gICAgICA8VHlwZUxpbmsgdHlwZT17YXJnLnR5cGV9IG9uQ2xpY2s9e29uQ2xpY2tUeXBlfSAvPlxuICAgICAge3Nob3dEZWZhdWx0VmFsdWUgIT09IGZhbHNlICYmIDxEZWZhdWx0VmFsdWUgZmllbGQ9e2FyZ30gLz59XG4gICAgPC9zcGFuPlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/DocExplorer/Argument.tsx\n");
3122
3123/***/ }),
3124
3125/***/ "./components/DocExplorer/DefaultValue.tsx":
3126/*!*************************************************!*\
3127 !*** ./components/DocExplorer/DefaultValue.tsx ***!
3128 \*************************************************/
3129/*! no static exports found */
3130/***/ (function(module, exports, __webpack_require__) {
3131
3132eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _graphql) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = DefaultValue;\n _react = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n const printDefault = ast => {\n if (!ast) {\n return '';\n }\n\n return (0, _graphql.print)(ast);\n };\n\n function DefaultValue({\n field\n }) {\n // field.defaultValue could be null or false, so be careful here!\n if ('defaultValue' in field && field.defaultValue !== undefined) {\n return /*#__PURE__*/_react.default.createElement(\"span\", null, ' = ', /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"arg-default-value\"\n }, printDefault((0, _graphql.astFromValue)(field.defaultValue, field.type))));\n }\n\n return null;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL0RlZmF1bHRWYWx1ZS50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvRG9jRXhwbG9yZXIvRGVmYXVsdFZhbHVlLnRzeD9mYTdlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBhc3RGcm9tVmFsdWUsIHByaW50LCBWYWx1ZU5vZGUgfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBwcmludERlZmF1bHQgPSAoYXN0PzogVmFsdWVOb2RlIHwgbnVsbCk6IHN0cmluZyA9PiB7XG4gIGlmICghYXN0KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBwcmludChhc3QpO1xufTtcblxudHlwZSBEZWZhdWx0VmFsdWVQcm9wcyA9IHtcbiAgZmllbGQ6IEZpZWxkVHlwZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERlZmF1bHRWYWx1ZSh7IGZpZWxkIH06IERlZmF1bHRWYWx1ZVByb3BzKSB7XG4gIC8vIGZpZWxkLmRlZmF1bHRWYWx1ZSBjb3VsZCBiZSBudWxsIG9yIGZhbHNlLCBzbyBiZSBjYXJlZnVsIGhlcmUhXG4gIGlmICgnZGVmYXVsdFZhbHVlJyBpbiBmaWVsZCAmJiBmaWVsZC5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8c3Bhbj5cbiAgICAgICAgeycgPSAnfVxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJhcmctZGVmYXVsdC12YWx1ZVwiPlxuICAgICAgICAgIHtwcmludERlZmF1bHQoYXN0RnJvbVZhbHVlKGZpZWxkLmRlZmF1bHRWYWx1ZSwgZmllbGQudHlwZSkpfVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBS0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/DocExplorer/DefaultValue.tsx\n");
3133
3134/***/ }),
3135
3136/***/ "./components/DocExplorer/Directive.tsx":
3137/*!**********************************************!*\
3138 !*** ./components/DocExplorer/Directive.tsx ***!
3139 \**********************************************/
3140/*! no static exports found */
3141/***/ (function(module, exports, __webpack_require__) {
3142
3143eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = Directive;\n _react = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function Directive({\n directive\n }) {\n return /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"doc-category-item\",\n id: directive.name.value\n }, '@', directive.name.value);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL0RpcmVjdGl2ZS50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvRG9jRXhwbG9yZXIvRGlyZWN0aXZlLnRzeD83OGM4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBEaXJlY3RpdmVOb2RlIH0gZnJvbSAnZ3JhcGhxbCc7XG5cbnR5cGUgRGlyZWN0aXZlUHJvcHMgPSB7XG4gIGRpcmVjdGl2ZTogRGlyZWN0aXZlTm9kZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERpcmVjdGl2ZSh7IGRpcmVjdGl2ZSB9OiBEaXJlY3RpdmVQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzcGFuIGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeS1pdGVtXCIgaWQ9e2RpcmVjdGl2ZS5uYW1lLnZhbHVlfT5cbiAgICAgIHsnQCd9XG4gICAgICB7ZGlyZWN0aXZlLm5hbWUudmFsdWV9XG4gICAgPC9zcGFuPlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFTQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUtBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/DocExplorer/Directive.tsx\n");
3144
3145/***/ }),
3146
3147/***/ "./components/DocExplorer/FieldDoc.tsx":
3148/*!*********************************************!*\
3149 !*** ./components/DocExplorer/FieldDoc.tsx ***!
3150 \*********************************************/
3151/*! no static exports found */
3152/***/ (function(module, exports, __webpack_require__) {
3153
3154eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! ./Argument */ \"./components/DocExplorer/Argument.tsx\"), __webpack_require__(/*! ./Directive */ \"./components/DocExplorer/Directive.tsx\"), __webpack_require__(/*! ./MarkdownContent */ \"./components/DocExplorer/MarkdownContent.tsx\"), __webpack_require__(/*! ./TypeLink */ \"./components/DocExplorer/TypeLink.tsx\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _Argument, _Directive, _MarkdownContent, _TypeLink) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = FieldDoc;\n _react = _interopRequireDefault(_react);\n _Argument = _interopRequireDefault(_Argument);\n _Directive = _interopRequireDefault(_Directive);\n _MarkdownContent = _interopRequireDefault(_MarkdownContent);\n _TypeLink = _interopRequireDefault(_TypeLink);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function FieldDoc({\n field,\n onClickType\n }) {\n let argsDef;\n\n if (field && 'args' in field && field.args.length > 0) {\n argsDef = /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, 'arguments'), field.args.map(arg => /*#__PURE__*/_react.default.createElement(\"div\", {\n key: arg.name,\n className: \"doc-category-item\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", null, /*#__PURE__*/_react.default.createElement(_Argument.default, {\n arg: arg,\n onClickType: onClickType\n })), /*#__PURE__*/_react.default.createElement(_MarkdownContent.default, {\n className: \"doc-value-description\",\n markdown: arg.description\n }))));\n }\n\n let directivesDef;\n\n if (field && field.astNode && field.astNode.directives && field.astNode.directives.length > 0) {\n directivesDef = /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, 'directives'), field.astNode.directives.map(directive => /*#__PURE__*/_react.default.createElement(\"div\", {\n key: directive.name.value,\n className: \"doc-category-item\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", null, /*#__PURE__*/_react.default.createElement(_Directive.default, {\n directive: directive\n })))));\n }\n\n return /*#__PURE__*/_react.default.createElement(\"div\", null, /*#__PURE__*/_react.default.createElement(_MarkdownContent.default, {\n className: \"doc-type-description\",\n markdown: (field === null || field === void 0 ? void 0 : field.description) || 'No Description'\n }), field && 'deprecationReason' in field && /*#__PURE__*/_react.default.createElement(_MarkdownContent.default, {\n className: \"doc-deprecation\",\n markdown: field === null || field === void 0 ? void 0 : field.deprecationReason\n }), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, 'type'), /*#__PURE__*/_react.default.createElement(_TypeLink.default, {\n type: field === null || field === void 0 ? void 0 : field.type,\n onClick: onClickType\n })), argsDef, directivesDef);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL0ZpZWxkRG9jLnRzeC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY29tcG9uZW50cy9Eb2NFeHBsb3Jlci9GaWVsZERvYy50c3g/Yzc4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEFyZ3VtZW50IGZyb20gJy4vQXJndW1lbnQnO1xuaW1wb3J0IERpcmVjdGl2ZSBmcm9tICcuL0RpcmVjdGl2ZSc7XG5pbXBvcnQgTWFya2Rvd25Db250ZW50IGZyb20gJy4vTWFya2Rvd25Db250ZW50JztcbmltcG9ydCBUeXBlTGluayBmcm9tICcuL1R5cGVMaW5rJztcbmltcG9ydCB7IEdyYXBoUUxBcmd1bWVudCwgRGlyZWN0aXZlTm9kZSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgT25DbGlja1R5cGVGdW5jdGlvbiwgRmllbGRUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbnR5cGUgRmllbGREb2NQcm9wcyA9IHtcbiAgZmllbGQ/OiBGaWVsZFR5cGU7XG4gIG9uQ2xpY2tUeXBlOiBPbkNsaWNrVHlwZUZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmllbGREb2MoeyBmaWVsZCwgb25DbGlja1R5cGUgfTogRmllbGREb2NQcm9wcykge1xuICBsZXQgYXJnc0RlZjtcbiAgaWYgKGZpZWxkICYmICdhcmdzJyBpbiBmaWVsZCAmJiBmaWVsZC5hcmdzLmxlbmd0aCA+IDApIHtcbiAgICBhcmdzRGVmID0gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnlcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktdGl0bGVcIj57J2FyZ3VtZW50cyd9PC9kaXY+XG4gICAgICAgIHtmaWVsZC5hcmdzLm1hcCgoYXJnOiBHcmFwaFFMQXJndW1lbnQpID0+IChcbiAgICAgICAgICA8ZGl2IGtleT17YXJnLm5hbWV9IGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeS1pdGVtXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8QXJndW1lbnQgYXJnPXthcmd9IG9uQ2xpY2tUeXBlPXtvbkNsaWNrVHlwZX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPE1hcmtkb3duQ29udGVudFxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJkb2MtdmFsdWUtZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICBtYXJrZG93bj17YXJnLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgbGV0IGRpcmVjdGl2ZXNEZWY7XG4gIGlmIChcbiAgICBmaWVsZCAmJlxuICAgIGZpZWxkLmFzdE5vZGUgJiZcbiAgICBmaWVsZC5hc3ROb2RlLmRpcmVjdGl2ZXMgJiZcbiAgICBmaWVsZC5hc3ROb2RlLmRpcmVjdGl2ZXMubGVuZ3RoID4gMFxuICApIHtcbiAgICBkaXJlY3RpdmVzRGVmID0gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnlcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktdGl0bGVcIj57J2RpcmVjdGl2ZXMnfTwvZGl2PlxuICAgICAgICB7ZmllbGQuYXN0Tm9kZS5kaXJlY3RpdmVzLm1hcCgoZGlyZWN0aXZlOiBEaXJlY3RpdmVOb2RlKSA9PiAoXG4gICAgICAgICAgPGRpdiBrZXk9e2RpcmVjdGl2ZS5uYW1lLnZhbHVlfSBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktaXRlbVwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPERpcmVjdGl2ZSBkaXJlY3RpdmU9e2RpcmVjdGl2ZX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICA8TWFya2Rvd25Db250ZW50XG4gICAgICAgIGNsYXNzTmFtZT1cImRvYy10eXBlLWRlc2NyaXB0aW9uXCJcbiAgICAgICAgbWFya2Rvd249e2ZpZWxkPy5kZXNjcmlwdGlvbiB8fCAnTm8gRGVzY3JpcHRpb24nfVxuICAgICAgLz5cbiAgICAgIHtmaWVsZCAmJiAnZGVwcmVjYXRpb25SZWFzb24nIGluIGZpZWxkICYmIChcbiAgICAgICAgPE1hcmtkb3duQ29udGVudFxuICAgICAgICAgIGNsYXNzTmFtZT1cImRvYy1kZXByZWNhdGlvblwiXG4gICAgICAgICAgbWFya2Rvd249e2ZpZWxkPy5kZXByZWNhdGlvblJlYXNvbn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeVwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeS10aXRsZVwiPnsndHlwZSd9PC9kaXY+XG4gICAgICAgIDxUeXBlTGluayB0eXBlPXtmaWVsZD8udHlwZX0gb25DbGljaz17b25DbGlja1R5cGV9IC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIHthcmdzRGVmfVxuICAgICAge2RpcmVjdGl2ZXNEZWZ9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFlQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBRkE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBTUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRkE7QUFNQTtBQUNBO0FBRkE7QUFLQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQU1BO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/DocExplorer/FieldDoc.tsx\n");
3155
3156/***/ }),
3157
3158/***/ "./components/DocExplorer/MarkdownContent.tsx":
3159/*!****************************************************!*\
3160 !*** ./components/DocExplorer/MarkdownContent.tsx ***!
3161 \****************************************************/
3162/*! no static exports found */
3163/***/ (function(module, exports, __webpack_require__) {
3164
3165eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! markdown-it */ \"../../../node_modules/markdown-it/index.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _markdownIt) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = MarkdownContent;\n _react = _interopRequireDefault(_react);\n _markdownIt = _interopRequireDefault(_markdownIt);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n const md = new _markdownIt.default();\n\n function MarkdownContent({\n markdown,\n className\n }) {\n if (!markdown) {\n return /*#__PURE__*/_react.default.createElement(\"div\", null);\n }\n\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: className,\n dangerouslySetInnerHTML: {\n __html: md.render(markdown)\n }\n });\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL01hcmtkb3duQ29udGVudC50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvRG9jRXhwbG9yZXIvTWFya2Rvd25Db250ZW50LnRzeD85YzIxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgTUQgZnJvbSAnbWFya2Rvd24taXQnO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmNvbnN0IG1kID0gbmV3IE1EKCk7XG5cbnR5cGUgTWFya2Rvd25Db250ZW50UHJvcHMgPSB7XG4gIG1hcmtkb3duPzogTWF5YmU8c3RyaW5nPjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWFya2Rvd25Db250ZW50KHtcbiAgbWFya2Rvd24sXG4gIGNsYXNzTmFtZSxcbn06IE1hcmtkb3duQ29udGVudFByb3BzKSB7XG4gIGlmICghbWFya2Rvd24pIHtcbiAgICByZXR1cm4gPGRpdiAvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IG1kLnJlbmRlcihtYXJrZG93bikgfX1cbiAgICAvPlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFLQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/DocExplorer/MarkdownContent.tsx\n");
3166
3167/***/ }),
3168
3169/***/ "./components/DocExplorer/SchemaDoc.tsx":
3170/*!**********************************************!*\
3171 !*** ./components/DocExplorer/SchemaDoc.tsx ***!
3172 \**********************************************/
3173/*! no static exports found */
3174/***/ (function(module, exports, __webpack_require__) {
3175
3176eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! ./TypeLink */ \"./components/DocExplorer/TypeLink.tsx\"), __webpack_require__(/*! ./MarkdownContent */ \"./components/DocExplorer/MarkdownContent.tsx\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _TypeLink, _MarkdownContent) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = SchemaDoc;\n _react = _interopRequireDefault(_react);\n _TypeLink = _interopRequireDefault(_TypeLink);\n _MarkdownContent = _interopRequireDefault(_MarkdownContent);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n // Render the top level Schema\n function SchemaDoc({\n schema,\n onClickType\n }) {\n const queryType = schema.getQueryType();\n const mutationType = schema.getMutationType && schema.getMutationType();\n const subscriptionType = schema.getSubscriptionType && schema.getSubscriptionType();\n return /*#__PURE__*/_react.default.createElement(\"div\", null, /*#__PURE__*/_react.default.createElement(_MarkdownContent.default, {\n className: \"doc-type-description\",\n markdown: schema.description || 'A GraphQL schema provides a root type for each kind of operation.'\n }), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, 'root types'), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-item\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"keyword\"\n }, 'query'), ': ', /*#__PURE__*/_react.default.createElement(_TypeLink.default, {\n type: queryType,\n onClick: onClickType\n })), mutationType && /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-item\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"keyword\"\n }, 'mutation'), ': ', /*#__PURE__*/_react.default.createElement(_TypeLink.default, {\n type: mutationType,\n onClick: onClickType\n })), subscriptionType && /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-item\"\n }, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"keyword\"\n }, 'subscription'), ': ', /*#__PURE__*/_react.default.createElement(_TypeLink.default, {\n type: subscriptionType,\n onClick: onClickType\n }))));\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL1NjaGVtYURvYy50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvRG9jRXhwbG9yZXIvU2NoZW1hRG9jLnRzeD9jODFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVHlwZUxpbmsgZnJvbSAnLi9UeXBlTGluayc7XG5pbXBvcnQgTWFya2Rvd25Db250ZW50IGZyb20gJy4vTWFya2Rvd25Db250ZW50JztcbmltcG9ydCB7IEdyYXBoUUxTY2hlbWEgfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7IE9uQ2xpY2tUeXBlRnVuY3Rpb24gfSBmcm9tICcuL3R5cGVzJztcblxudHlwZSBTY2hlbWFEb2NQcm9wcyA9IHtcbiAgc2NoZW1hOiBHcmFwaFFMU2NoZW1hO1xuICBvbkNsaWNrVHlwZTogT25DbGlja1R5cGVGdW5jdGlvbjtcbn07XG5cbi8vIFJlbmRlciB0aGUgdG9wIGxldmVsIFNjaGVtYVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2NoZW1hRG9jKHsgc2NoZW1hLCBvbkNsaWNrVHlwZSB9OiBTY2hlbWFEb2NQcm9wcykge1xuICBjb25zdCBxdWVyeVR5cGUgPSBzY2hlbWEuZ2V0UXVlcnlUeXBlKCk7XG4gIGNvbnN0IG11dGF0aW9uVHlwZSA9IHNjaGVtYS5nZXRNdXRhdGlvblR5cGUgJiYgc2NoZW1hLmdldE11dGF0aW9uVHlwZSgpO1xuICBjb25zdCBzdWJzY3JpcHRpb25UeXBlID1cbiAgICBzY2hlbWEuZ2V0U3Vic2NyaXB0aW9uVHlwZSAmJiBzY2hlbWEuZ2V0U3Vic2NyaXB0aW9uVHlwZSgpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIDxNYXJrZG93bkNvbnRlbnRcbiAgICAgICAgY2xhc3NOYW1lPVwiZG9jLXR5cGUtZGVzY3JpcHRpb25cIlxuICAgICAgICBtYXJrZG93bj17XG4gICAgICAgICAgc2NoZW1hLmRlc2NyaXB0aW9uIHx8XG4gICAgICAgICAgJ0EgR3JhcGhRTCBzY2hlbWEgcHJvdmlkZXMgYSByb290IHR5cGUgZm9yIGVhY2gga2luZCBvZiBvcGVyYXRpb24uJ1xuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnlcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktdGl0bGVcIj57J3Jvb3QgdHlwZXMnfTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeS1pdGVtXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwia2V5d29yZFwiPnsncXVlcnknfTwvc3Bhbj5cbiAgICAgICAgICB7JzogJ31cbiAgICAgICAgICA8VHlwZUxpbmsgdHlwZT17cXVlcnlUeXBlfSBvbkNsaWNrPXtvbkNsaWNrVHlwZX0gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHttdXRhdGlvblR5cGUgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5LWl0ZW1cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImtleXdvcmRcIj57J211dGF0aW9uJ308L3NwYW4+XG4gICAgICAgICAgICB7JzogJ31cbiAgICAgICAgICAgIDxUeXBlTGluayB0eXBlPXttdXRhdGlvblR5cGV9IG9uQ2xpY2s9e29uQ2xpY2tUeXBlfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgICB7c3Vic2NyaXB0aW9uVHlwZSAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktaXRlbVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwia2V5d29yZFwiPnsnc3Vic2NyaXB0aW9uJ308L3NwYW4+XG4gICAgICAgICAgICB7JzogJ31cbiAgICAgICAgICAgIDxUeXBlTGluayB0eXBlPXtzdWJzY3JpcHRpb25UeXBlfSBvbkNsaWNrPXtvbkNsaWNrVHlwZX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUdBO0FBQ0E7QUFGQTtBQU9BO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBTUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/DocExplorer/SchemaDoc.tsx\n");
3177
3178/***/ }),
3179
3180/***/ "./components/DocExplorer/SearchBox.tsx":
3181/*!**********************************************!*\
3182 !*** ./components/DocExplorer/SearchBox.tsx ***!
3183 \**********************************************/
3184/*! no static exports found */
3185/***/ (function(module, exports, __webpack_require__) {
3186
3187eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! ../../utility/debounce */ \"./utility/debounce.ts\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _debounce) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n _react = _interopRequireDefault(_react);\n _debounce = _interopRequireDefault(_debounce);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n class SearchBox extends _react.default.Component {\n constructor(props) {\n super(props);\n\n _defineProperty(this, \"debouncedOnSearch\", void 0);\n\n _defineProperty(this, \"handleChange\", event => {\n const value = event.currentTarget.value;\n this.setState({\n value\n });\n this.debouncedOnSearch(value);\n });\n\n _defineProperty(this, \"handleClear\", () => {\n this.setState({\n value: ''\n });\n this.props.onSearch('');\n });\n\n this.state = {\n value: props.value || ''\n };\n this.debouncedOnSearch = (0, _debounce.default)(200, this.props.onSearch);\n }\n\n render() {\n return /*#__PURE__*/_react.default.createElement(\"label\", {\n className: \"search-box\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"search-box-icon\",\n \"aria-hidden\": \"true\"\n }, '\\u26b2'), /*#__PURE__*/_react.default.createElement(\"input\", {\n value: this.state.value,\n onChange: this.handleChange,\n type: \"text\",\n placeholder: this.props.placeholder,\n \"aria-label\": this.props.placeholder\n }), this.state.value && /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"search-box-clear\",\n onClick: this.handleClear,\n \"aria-label\": \"Clear search input\"\n }, '\\u2715'));\n }\n\n }\n\n _exports.default = SearchBox;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL1NlYXJjaEJveC50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvRG9jRXhwbG9yZXIvU2VhcmNoQm94LnRzeD9lOThlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBSZWFjdCwgeyBDaGFuZ2VFdmVudEhhbmRsZXIgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBkZWJvdW5jZSBmcm9tICcuLi8uLi91dGlsaXR5L2RlYm91bmNlJztcblxudHlwZSBPblNlYXJjaEZuID0gKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG5cbnR5cGUgU2VhcmNoQm94UHJvcHMgPSB7XG4gIHZhbHVlPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBvblNlYXJjaDogT25TZWFyY2hGbjtcbn07XG5cbnR5cGUgU2VhcmNoQm94U3RhdGUgPSB7XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWFyY2hCb3ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8XG4gIFNlYXJjaEJveFByb3BzLFxuICBTZWFyY2hCb3hTdGF0ZVxuPiB7XG4gIGRlYm91bmNlZE9uU2VhcmNoOiBPblNlYXJjaEZuO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBTZWFyY2hCb3hQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0geyB2YWx1ZTogcHJvcHMudmFsdWUgfHwgJycgfTtcbiAgICB0aGlzLmRlYm91bmNlZE9uU2VhcmNoID0gZGVib3VuY2UoMjAwLCB0aGlzLnByb3BzLm9uU2VhcmNoKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cInNlYXJjaC1ib3hcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzZWFyY2gtYm94LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICB7J1xcdTI2YjInfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUudmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e3RoaXMuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn1cbiAgICAgICAgICBhcmlhLWxhYmVsPXt0aGlzLnByb3BzLnBsYWNlaG9sZGVyfVxuICAgICAgICAvPlxuICAgICAgICB7dGhpcy5zdGF0ZS52YWx1ZSAmJiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPVwic2VhcmNoLWJveC1jbGVhclwiXG4gICAgICAgICAgICBvbkNsaWNrPXt0aGlzLmhhbmRsZUNsZWFyfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaCBpbnB1dFwiPlxuICAgICAgICAgICAgeydcXHUyNzE1J31cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvbGFiZWw+XG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZUNoYW5nZTogQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gZXZlbnQgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZTtcbiAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWUgfSk7XG4gICAgdGhpcy5kZWJvdW5jZWRPblNlYXJjaCh2YWx1ZSk7XG4gIH07XG5cbiAgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiAnJyB9KTtcbiAgICB0aGlzLnByb3BzLm9uU2VhcmNoKCcnKTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBO0FBTUE7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQURBO0FBZ0NBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBcENBO0FBc0NBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXZDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVNBO0FBQ0E7QUFDQTtBQUhBO0FBU0E7QUFDQTtBQWpDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/DocExplorer/SearchBox.tsx\n");
3188
3189/***/ }),
3190
3191/***/ "./components/DocExplorer/SearchResults.tsx":
3192/*!**************************************************!*\
3193 !*** ./components/DocExplorer/SearchResults.tsx ***!
3194 \**************************************************/
3195/*! no static exports found */
3196/***/ (function(module, exports, __webpack_require__) {
3197
3198eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! ./Argument */ \"./components/DocExplorer/Argument.tsx\"), __webpack_require__(/*! ./TypeLink */ \"./components/DocExplorer/TypeLink.tsx\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _Argument, _TypeLink) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n _react = _interopRequireDefault(_react);\n _Argument = _interopRequireDefault(_Argument);\n _TypeLink = _interopRequireDefault(_TypeLink);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n class SearchResults extends _react.default.Component {\n shouldComponentUpdate(nextProps) {\n return this.props.schema !== nextProps.schema || this.props.searchValue !== nextProps.searchValue;\n }\n\n render() {\n const searchValue = this.props.searchValue;\n const withinType = this.props.withinType;\n const schema = this.props.schema;\n const onClickType = this.props.onClickType;\n const onClickField = this.props.onClickField;\n const matchedWithin = [];\n const matchedTypes = [];\n const matchedFields = [];\n const typeMap = schema.getTypeMap();\n let typeNames = Object.keys(typeMap); // Move the within type name to be the first searched.\n\n if (withinType) {\n typeNames = typeNames.filter(n => n !== withinType.name);\n typeNames.unshift(withinType.name);\n }\n\n for (const typeName of typeNames) {\n if (matchedWithin.length + matchedTypes.length + matchedFields.length >= 100) {\n break;\n }\n\n const type = typeMap[typeName];\n\n if (withinType !== type && isMatch(typeName, searchValue)) {\n matchedTypes.push( /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-item\",\n key: typeName\n }, /*#__PURE__*/_react.default.createElement(_TypeLink.default, {\n type: type,\n onClick: onClickType\n })));\n }\n\n if (type && 'getFields' in type) {\n const fields = type.getFields();\n Object.keys(fields).forEach(fieldName => {\n const field = fields[fieldName];\n let matchingArgs;\n\n if (!isMatch(fieldName, searchValue)) {\n if ('args' in field && field.args.length) {\n matchingArgs = field.args.filter(arg => isMatch(arg.name, searchValue));\n\n if (matchingArgs.length === 0) {\n return;\n }\n } else {\n return;\n }\n }\n\n const match = /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-item\",\n key: typeName + '.' + fieldName\n }, withinType !== type && [/*#__PURE__*/_react.default.createElement(_TypeLink.default, {\n key: \"type\",\n type: type,\n onClick: onClickType\n }), '.'], /*#__PURE__*/_react.default.createElement(\"a\", {\n className: \"field-name\",\n onClick: event => onClickField(field, type, event)\n }, field.name), matchingArgs && ['(', /*#__PURE__*/_react.default.createElement(\"span\", {\n key: \"args\"\n }, matchingArgs.map(arg => /*#__PURE__*/_react.default.createElement(_Argument.default, {\n key: arg.name,\n arg: arg,\n onClickType: onClickType,\n showDefaultValue: false\n }))), ')']);\n\n if (withinType === type) {\n matchedWithin.push(match);\n } else {\n matchedFields.push(match);\n }\n });\n }\n }\n\n if (matchedWithin.length + matchedTypes.length + matchedFields.length === 0) {\n return /*#__PURE__*/_react.default.createElement(\"span\", {\n className: \"doc-alert-text\"\n }, 'No results found.');\n }\n\n if (withinType && matchedTypes.length + matchedFields.length > 0) {\n return /*#__PURE__*/_react.default.createElement(\"div\", null, matchedWithin, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, 'other results'), matchedTypes, matchedFields));\n }\n\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-search-items\"\n }, matchedWithin, matchedTypes, matchedFields);\n }\n\n }\n\n _exports.default = SearchResults;\n\n function isMatch(sourceText, searchValue) {\n try {\n const escaped = searchValue.replace(/[^_0-9A-Za-z]/g, ch => '\\\\' + ch);\n return sourceText.search(new RegExp(escaped, 'i')) !== -1;\n } catch (e) {\n return sourceText.toLowerCase().indexOf(searchValue.toLowerCase()) !== -1;\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL1NlYXJjaFJlc3VsdHMudHN4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL1NlYXJjaFJlc3VsdHMudHN4PzU5MzYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxIEdyYXBoUUwgQ29udHJpYnV0b3JzLlxuICpcbiAqICBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqICBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEdyYXBoUUxTY2hlbWEsIEdyYXBoUUxOYW1lZFR5cGUgfSBmcm9tICdncmFwaHFsJztcblxuaW1wb3J0IEFyZ3VtZW50IGZyb20gJy4vQXJndW1lbnQnO1xuaW1wb3J0IFR5cGVMaW5rIGZyb20gJy4vVHlwZUxpbmsnO1xuaW1wb3J0IHsgT25DbGlja0ZpZWxkRnVuY3Rpb24sIE9uQ2xpY2tUeXBlRnVuY3Rpb24gfSBmcm9tICcuL3R5cGVzJztcblxudHlwZSBTZWFyY2hSZXN1bHRzUHJvcHMgPSB7XG4gIHNjaGVtYTogR3JhcGhRTFNjaGVtYTtcbiAgd2l0aGluVHlwZT86IEdyYXBoUUxOYW1lZFR5cGU7XG4gIHNlYXJjaFZhbHVlOiBzdHJpbmc7XG4gIG9uQ2xpY2tUeXBlOiBPbkNsaWNrVHlwZUZ1bmN0aW9uO1xuICBvbkNsaWNrRmllbGQ6IE9uQ2xpY2tGaWVsZEZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VhcmNoUmVzdWx0cyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxcbiAgU2VhcmNoUmVzdWx0c1Byb3BzLFxuICB7fVxuPiB7XG4gIHNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHM6IFNlYXJjaFJlc3VsdHNQcm9wcykge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnByb3BzLnNjaGVtYSAhPT0gbmV4dFByb3BzLnNjaGVtYSB8fFxuICAgICAgdGhpcy5wcm9wcy5zZWFyY2hWYWx1ZSAhPT0gbmV4dFByb3BzLnNlYXJjaFZhbHVlXG4gICAgKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IHRoaXMucHJvcHMuc2VhcmNoVmFsdWU7XG4gICAgY29uc3Qgd2l0aGluVHlwZSA9IHRoaXMucHJvcHMud2l0aGluVHlwZTtcbiAgICBjb25zdCBzY2hlbWEgPSB0aGlzLnByb3BzLnNjaGVtYTtcbiAgICBjb25zdCBvbkNsaWNrVHlwZSA9IHRoaXMucHJvcHMub25DbGlja1R5cGU7XG4gICAgY29uc3Qgb25DbGlja0ZpZWxkID0gdGhpcy5wcm9wcy5vbkNsaWNrRmllbGQ7XG5cbiAgICBjb25zdCBtYXRjaGVkV2l0aGluOiBSZWFjdE5vZGVbXSA9IFtdO1xuICAgIGNvbnN0IG1hdGNoZWRUeXBlczogUmVhY3ROb2RlW10gPSBbXTtcbiAgICBjb25zdCBtYXRjaGVkRmllbGRzOiBSZWFjdE5vZGVbXSA9IFtdO1xuXG4gICAgY29uc3QgdHlwZU1hcCA9IHNjaGVtYS5nZXRUeXBlTWFwKCk7XG4gICAgbGV0IHR5cGVOYW1lcyA9IE9iamVjdC5rZXlzKHR5cGVNYXApO1xuXG4gICAgLy8gTW92ZSB0aGUgd2l0aGluIHR5cGUgbmFtZSB0byBiZSB0aGUgZmlyc3Qgc2VhcmNoZWQuXG4gICAgaWYgKHdpdGhpblR5cGUpIHtcbiAgICAgIHR5cGVOYW1lcyA9IHR5cGVOYW1lcy5maWx0ZXIobiA9PiBuICE9PSB3aXRoaW5UeXBlLm5hbWUpO1xuICAgICAgdHlwZU5hbWVzLnVuc2hpZnQod2l0aGluVHlwZS5uYW1lKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHR5cGVOYW1lIG9mIHR5cGVOYW1lcykge1xuICAgICAgaWYgKFxuICAgICAgICBtYXRjaGVkV2l0aGluLmxlbmd0aCArIG1hdGNoZWRUeXBlcy5sZW5ndGggKyBtYXRjaGVkRmllbGRzLmxlbmd0aCA+PVxuICAgICAgICAxMDBcbiAgICAgICkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY29uc3QgdHlwZSA9IHR5cGVNYXBbdHlwZU5hbWVdO1xuICAgICAgaWYgKHdpdGhpblR5cGUgIT09IHR5cGUgJiYgaXNNYXRjaCh0eXBlTmFtZSwgc2VhcmNoVmFsdWUpKSB7XG4gICAgICAgIG1hdGNoZWRUeXBlcy5wdXNoKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5LWl0ZW1cIiBrZXk9e3R5cGVOYW1lfT5cbiAgICAgICAgICAgIDxUeXBlTGluayB0eXBlPXt0eXBlfSBvbkNsaWNrPXtvbkNsaWNrVHlwZX0gLz5cbiAgICAgICAgICA8L2Rpdj4sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlICYmICdnZXRGaWVsZHMnIGluIHR5cGUpIHtcbiAgICAgICAgY29uc3QgZmllbGRzID0gdHlwZS5nZXRGaWVsZHMoKTtcbiAgICAgICAgT2JqZWN0LmtleXMoZmllbGRzKS5mb3JFYWNoKGZpZWxkTmFtZSA9PiB7XG4gICAgICAgICAgY29uc3QgZmllbGQgPSBmaWVsZHNbZmllbGROYW1lXTtcbiAgICAgICAgICBsZXQgbWF0Y2hpbmdBcmdzO1xuXG4gICAgICAgICAgaWYgKCFpc01hdGNoKGZpZWxkTmFtZSwgc2VhcmNoVmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoJ2FyZ3MnIGluIGZpZWxkICYmIGZpZWxkLmFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIG1hdGNoaW5nQXJncyA9IGZpZWxkLmFyZ3MuZmlsdGVyKGFyZyA9PlxuICAgICAgICAgICAgICAgIGlzTWF0Y2goYXJnLm5hbWUsIHNlYXJjaFZhbHVlKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgaWYgKG1hdGNoaW5nQXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBtYXRjaCA9IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5LWl0ZW1cIiBrZXk9e3R5cGVOYW1lICsgJy4nICsgZmllbGROYW1lfT5cbiAgICAgICAgICAgICAge3dpdGhpblR5cGUgIT09IHR5cGUgJiYgW1xuICAgICAgICAgICAgICAgIDxUeXBlTGluayBrZXk9XCJ0eXBlXCIgdHlwZT17dHlwZX0gb25DbGljaz17b25DbGlja1R5cGV9IC8+LFxuICAgICAgICAgICAgICAgICcuJyxcbiAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmaWVsZC1uYW1lXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiBvbkNsaWNrRmllbGQoZmllbGQsIHR5cGUsIGV2ZW50KX0+XG4gICAgICAgICAgICAgICAge2ZpZWxkLm5hbWV9XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAge21hdGNoaW5nQXJncyAmJiBbXG4gICAgICAgICAgICAgICAgJygnLFxuICAgICAgICAgICAgICAgIDxzcGFuIGtleT1cImFyZ3NcIj5cbiAgICAgICAgICAgICAgICAgIHttYXRjaGluZ0FyZ3MubWFwKGFyZyA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxBcmd1bWVudFxuICAgICAgICAgICAgICAgICAgICAgIGtleT17YXJnLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgYXJnPXthcmd9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGlja1R5cGU9e29uQ2xpY2tUeXBlfVxuICAgICAgICAgICAgICAgICAgICAgIHNob3dEZWZhdWx0VmFsdWU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9zcGFuPixcbiAgICAgICAgICAgICAgICAnKScsXG4gICAgICAgICAgICAgIF19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKHdpdGhpblR5cGUgPT09IHR5cGUpIHtcbiAgICAgICAgICAgIG1hdGNoZWRXaXRoaW4ucHVzaChtYXRjaCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1hdGNoZWRGaWVsZHMucHVzaChtYXRjaCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBtYXRjaGVkV2l0aGluLmxlbmd0aCArIG1hdGNoZWRUeXBlcy5sZW5ndGggKyBtYXRjaGVkRmllbGRzLmxlbmd0aCA9PT1cbiAgICAgIDBcbiAgICApIHtcbiAgICAgIHJldHVybiA8c3BhbiBjbGFzc05hbWU9XCJkb2MtYWxlcnQtdGV4dFwiPnsnTm8gcmVzdWx0cyBmb3VuZC4nfTwvc3Bhbj47XG4gICAgfVxuXG4gICAgaWYgKHdpdGhpblR5cGUgJiYgbWF0Y2hlZFR5cGVzLmxlbmd0aCArIG1hdGNoZWRGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICB7bWF0Y2hlZFdpdGhpbn1cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktdGl0bGVcIj57J290aGVyIHJlc3VsdHMnfTwvZGl2PlxuICAgICAgICAgICAge21hdGNoZWRUeXBlc31cbiAgICAgICAgICAgIHttYXRjaGVkRmllbGRzfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZG9jLXNlYXJjaC1pdGVtc1wiPlxuICAgICAgICB7bWF0Y2hlZFdpdGhpbn1cbiAgICAgICAge21hdGNoZWRUeXBlc31cbiAgICAgICAge21hdGNoZWRGaWVsZHN9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzTWF0Y2goc291cmNlVGV4dDogc3RyaW5nLCBzZWFyY2hWYWx1ZTogc3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgZXNjYXBlZCA9IHNlYXJjaFZhbHVlLnJlcGxhY2UoL1teXzAtOUEtWmEtel0vZywgY2ggPT4gJ1xcXFwnICsgY2gpO1xuICAgIHJldHVybiBzb3VyY2VUZXh0LnNlYXJjaChuZXcgUmVnRXhwKGVzY2FwZWQsICdpJykpICE9PSAtMTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBzb3VyY2VUZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gLTE7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFpQkE7QUFJQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFGQTtBQU9BO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFBQTtBQUNBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBTUE7QUFDQTtBQWpJQTtBQUNBOzs7QUFrSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/DocExplorer/SearchResults.tsx\n");
3199
3200/***/ }),
3201
3202/***/ "./components/DocExplorer/TypeDoc.tsx":
3203/*!********************************************!*\
3204 !*** ./components/DocExplorer/TypeDoc.tsx ***!
3205 \********************************************/
3206/*! no static exports found */
3207/***/ (function(module, exports, __webpack_require__) {
3208
3209eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! ./Argument */ \"./components/DocExplorer/Argument.tsx\"), __webpack_require__(/*! ./MarkdownContent */ \"./components/DocExplorer/MarkdownContent.tsx\"), __webpack_require__(/*! ./TypeLink */ \"./components/DocExplorer/TypeLink.tsx\"), __webpack_require__(/*! ./DefaultValue */ \"./components/DocExplorer/DefaultValue.tsx\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _graphql, _Argument, _MarkdownContent, _TypeLink, _DefaultValue) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n _react = _interopRequireDefault(_react);\n _Argument = _interopRequireDefault(_Argument);\n _MarkdownContent = _interopRequireDefault(_MarkdownContent);\n _TypeLink = _interopRequireDefault(_TypeLink);\n _DefaultValue = _interopRequireDefault(_DefaultValue);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n class TypeDoc extends _react.default.Component {\n constructor(props) {\n super(props);\n\n _defineProperty(this, \"handleShowDeprecated\", () => this.setState({\n showDeprecated: true\n }));\n\n this.state = {\n showDeprecated: false\n };\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n return this.props.type !== nextProps.type || this.props.schema !== nextProps.schema || this.state.showDeprecated !== nextState.showDeprecated;\n }\n\n render() {\n const schema = this.props.schema;\n const type = this.props.type;\n const onClickType = this.props.onClickType;\n const onClickField = this.props.onClickField;\n let typesTitle = null;\n let types = [];\n\n if (type instanceof _graphql.GraphQLUnionType) {\n typesTitle = 'possible types';\n types = schema.getPossibleTypes(type);\n } else if (type instanceof _graphql.GraphQLInterfaceType) {\n typesTitle = 'implementations';\n types = schema.getPossibleTypes(type);\n } else if (type instanceof _graphql.GraphQLObjectType) {\n typesTitle = 'implements';\n types = type.getInterfaces();\n }\n\n let typesDef;\n\n if (types && types.length > 0) {\n typesDef = /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, typesTitle), types.map(subtype => /*#__PURE__*/_react.default.createElement(\"div\", {\n key: subtype.name,\n className: \"doc-category-item\"\n }, /*#__PURE__*/_react.default.createElement(_TypeLink.default, {\n type: subtype,\n onClick: onClickType\n }))));\n } // InputObject and Object\n\n\n let fieldsDef;\n let deprecatedFieldsDef;\n\n if (type && 'getFields' in type) {\n const fieldMap = type.getFields();\n const fields = Object.keys(fieldMap).map(name => fieldMap[name]);\n fieldsDef = /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, 'fields'), fields.filter(field => 'isDeprecated' in field ? !field.isDeprecated : true).map(field => /*#__PURE__*/_react.default.createElement(Field, {\n key: field.name,\n type: type,\n field: field,\n onClickType: onClickType,\n onClickField: onClickField\n })));\n const deprecatedFields = fields.filter(field => 'isDeprecated' in field && field.isDeprecated);\n\n if (deprecatedFields.length > 0) {\n deprecatedFieldsDef = /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, 'deprecated fields'), !this.state.showDeprecated ? /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"show-btn\",\n onClick: this.handleShowDeprecated\n }, 'Show deprecated fields...') : deprecatedFields.map(field => /*#__PURE__*/_react.default.createElement(Field, {\n key: field.name,\n type: type,\n field: field,\n onClickType: onClickType,\n onClickField: onClickField\n })));\n }\n }\n\n let valuesDef;\n let deprecatedValuesDef;\n\n if (type instanceof _graphql.GraphQLEnumType) {\n const values = type.getValues();\n valuesDef = /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, 'values'), values.filter(value => !value.isDeprecated).map(value => /*#__PURE__*/_react.default.createElement(EnumValue, {\n key: value.name,\n value: value\n })));\n const deprecatedValues = values.filter(value => value.isDeprecated);\n\n if (deprecatedValues.length > 0) {\n deprecatedValuesDef = /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-title\"\n }, 'deprecated values'), !this.state.showDeprecated ? /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"show-btn\",\n onClick: this.handleShowDeprecated\n }, 'Show deprecated values...') : deprecatedValues.map(value => /*#__PURE__*/_react.default.createElement(EnumValue, {\n key: value.name,\n value: value\n })));\n }\n }\n\n return /*#__PURE__*/_react.default.createElement(\"div\", null, /*#__PURE__*/_react.default.createElement(_MarkdownContent.default, {\n className: \"doc-type-description\",\n markdown: 'description' in type && type.description || 'No Description'\n }), type instanceof _graphql.GraphQLObjectType && typesDef, fieldsDef, deprecatedFieldsDef, valuesDef, deprecatedValuesDef, !(type instanceof _graphql.GraphQLObjectType) && typesDef);\n }\n\n }\n\n _exports.default = TypeDoc;\n\n function Field({\n type,\n field,\n onClickType,\n onClickField\n }) {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-item\"\n }, /*#__PURE__*/_react.default.createElement(\"a\", {\n className: \"field-name\",\n onClick: event => onClickField(field, type, event)\n }, field.name), 'args' in field && field.args && field.args.length > 0 && ['(', /*#__PURE__*/_react.default.createElement(\"span\", {\n key: \"args\"\n }, field.args.map(arg => /*#__PURE__*/_react.default.createElement(_Argument.default, {\n key: arg.name,\n arg: arg,\n onClickType: onClickType\n }))), ')'], ': ', /*#__PURE__*/_react.default.createElement(_TypeLink.default, {\n type: field.type,\n onClick: onClickType\n }), /*#__PURE__*/_react.default.createElement(_DefaultValue.default, {\n field: field\n }), field.description && /*#__PURE__*/_react.default.createElement(_MarkdownContent.default, {\n className: \"field-short-description\",\n markdown: field.description\n }), 'deprecationReason' in field && field.deprecationReason && /*#__PURE__*/_react.default.createElement(_MarkdownContent.default, {\n className: \"doc-deprecation\",\n markdown: field.deprecationReason\n }));\n }\n\n function EnumValue({\n value\n }) {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-category-item\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"enum-value\"\n }, value.name), /*#__PURE__*/_react.default.createElement(_MarkdownContent.default, {\n className: \"doc-value-description\",\n markdown: value.description\n }), value.deprecationReason && /*#__PURE__*/_react.default.createElement(_MarkdownContent.default, {\n className: \"doc-deprecation\",\n markdown: value.deprecationReason\n }));\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL1R5cGVEb2MudHN4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL1R5cGVEb2MudHN4PzZkYjIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxIEdyYXBoUUwgQ29udHJpYnV0b3JzLlxuICpcbiAqICBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqICBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7XG4gIEdyYXBoUUxTY2hlbWEsXG4gIEdyYXBoUUxPYmplY3RUeXBlLFxuICBHcmFwaFFMSW50ZXJmYWNlVHlwZSxcbiAgR3JhcGhRTFVuaW9uVHlwZSxcbiAgR3JhcGhRTEVudW1UeXBlLFxuICBHcmFwaFFMVHlwZSxcbiAgR3JhcGhRTEVudW1WYWx1ZSxcbn0gZnJvbSAnZ3JhcGhxbCc7XG5cbmltcG9ydCBBcmd1bWVudCBmcm9tICcuL0FyZ3VtZW50JztcbmltcG9ydCBNYXJrZG93bkNvbnRlbnQgZnJvbSAnLi9NYXJrZG93bkNvbnRlbnQnO1xuaW1wb3J0IFR5cGVMaW5rIGZyb20gJy4vVHlwZUxpbmsnO1xuaW1wb3J0IERlZmF1bHRWYWx1ZSBmcm9tICcuL0RlZmF1bHRWYWx1ZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUsIE9uQ2xpY2tUeXBlRnVuY3Rpb24sIE9uQ2xpY2tGaWVsZEZ1bmN0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbnR5cGUgVHlwZURvY1Byb3BzID0ge1xuICBzY2hlbWE6IEdyYXBoUUxTY2hlbWE7XG4gIHR5cGU6IEdyYXBoUUxUeXBlO1xuICBvbkNsaWNrVHlwZTogT25DbGlja1R5cGVGdW5jdGlvbjtcbiAgb25DbGlja0ZpZWxkOiBPbkNsaWNrRmllbGRGdW5jdGlvbjtcbn07XG5cbnR5cGUgVHlwZURvY1N0YXRlID0ge1xuICBzaG93RGVwcmVjYXRlZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFR5cGVEb2MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8XG4gIFR5cGVEb2NQcm9wcyxcbiAgVHlwZURvY1N0YXRlXG4+IHtcbiAgY29uc3RydWN0b3IocHJvcHM6IFR5cGVEb2NQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0geyBzaG93RGVwcmVjYXRlZDogZmFsc2UgfTtcbiAgfVxuXG4gIHNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHM6IFR5cGVEb2NQcm9wcywgbmV4dFN0YXRlOiBUeXBlRG9jU3RhdGUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5wcm9wcy50eXBlICE9PSBuZXh0UHJvcHMudHlwZSB8fFxuICAgICAgdGhpcy5wcm9wcy5zY2hlbWEgIT09IG5leHRQcm9wcy5zY2hlbWEgfHxcbiAgICAgIHRoaXMuc3RhdGUuc2hvd0RlcHJlY2F0ZWQgIT09IG5leHRTdGF0ZS5zaG93RGVwcmVjYXRlZFxuICAgICk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qgc2NoZW1hID0gdGhpcy5wcm9wcy5zY2hlbWE7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMucHJvcHMudHlwZTtcbiAgICBjb25zdCBvbkNsaWNrVHlwZSA9IHRoaXMucHJvcHMub25DbGlja1R5cGU7XG4gICAgY29uc3Qgb25DbGlja0ZpZWxkID0gdGhpcy5wcm9wcy5vbkNsaWNrRmllbGQ7XG5cbiAgICBsZXQgdHlwZXNUaXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHR5cGVzOiByZWFkb25seSAoR3JhcGhRTE9iamVjdFR5cGUgfCBHcmFwaFFMSW50ZXJmYWNlVHlwZSlbXSA9IFtdO1xuICAgIGlmICh0eXBlIGluc3RhbmNlb2YgR3JhcGhRTFVuaW9uVHlwZSkge1xuICAgICAgdHlwZXNUaXRsZSA9ICdwb3NzaWJsZSB0eXBlcyc7XG4gICAgICB0eXBlcyA9IHNjaGVtYS5nZXRQb3NzaWJsZVR5cGVzKHR5cGUpO1xuICAgIH0gZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIEdyYXBoUUxJbnRlcmZhY2VUeXBlKSB7XG4gICAgICB0eXBlc1RpdGxlID0gJ2ltcGxlbWVudGF0aW9ucyc7XG4gICAgICB0eXBlcyA9IHNjaGVtYS5nZXRQb3NzaWJsZVR5cGVzKHR5cGUpO1xuICAgIH0gZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIEdyYXBoUUxPYmplY3RUeXBlKSB7XG4gICAgICB0eXBlc1RpdGxlID0gJ2ltcGxlbWVudHMnO1xuICAgICAgdHlwZXMgPSB0eXBlLmdldEludGVyZmFjZXMoKTtcbiAgICB9XG5cbiAgICBsZXQgdHlwZXNEZWY7XG4gICAgaWYgKHR5cGVzICYmIHR5cGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHR5cGVzRGVmID0gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5LXRpdGxlXCI+e3R5cGVzVGl0bGV9PC9kaXY+XG4gICAgICAgICAge3R5cGVzLm1hcChzdWJ0eXBlID0+IChcbiAgICAgICAgICAgIDxkaXYga2V5PXtzdWJ0eXBlLm5hbWV9IGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeS1pdGVtXCI+XG4gICAgICAgICAgICAgIDxUeXBlTGluayB0eXBlPXtzdWJ0eXBlfSBvbkNsaWNrPXtvbkNsaWNrVHlwZX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gSW5wdXRPYmplY3QgYW5kIE9iamVjdFxuICAgIGxldCBmaWVsZHNEZWY7XG4gICAgbGV0IGRlcHJlY2F0ZWRGaWVsZHNEZWY7XG4gICAgaWYgKHR5cGUgJiYgJ2dldEZpZWxkcycgaW4gdHlwZSkge1xuICAgICAgY29uc3QgZmllbGRNYXAgPSB0eXBlLmdldEZpZWxkcygpO1xuICAgICAgY29uc3QgZmllbGRzID0gT2JqZWN0LmtleXMoZmllbGRNYXApLm1hcChuYW1lID0+IGZpZWxkTWFwW25hbWVdKTtcbiAgICAgIGZpZWxkc0RlZiA9IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeS10aXRsZVwiPnsnZmllbGRzJ308L2Rpdj5cbiAgICAgICAgICB7ZmllbGRzXG4gICAgICAgICAgICAuZmlsdGVyKGZpZWxkID0+XG4gICAgICAgICAgICAgICdpc0RlcHJlY2F0ZWQnIGluIGZpZWxkID8gIWZpZWxkLmlzRGVwcmVjYXRlZCA6IHRydWUsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKGZpZWxkID0+IChcbiAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAga2V5PXtmaWVsZC5uYW1lfVxuICAgICAgICAgICAgICAgIHR5cGU9e3R5cGV9XG4gICAgICAgICAgICAgICAgZmllbGQ9e2ZpZWxkfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2tUeXBlPXtvbkNsaWNrVHlwZX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrRmllbGQ9e29uQ2xpY2tGaWVsZH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGRlcHJlY2F0ZWRGaWVsZHMgPSBmaWVsZHMuZmlsdGVyKFxuICAgICAgICBmaWVsZCA9PiAnaXNEZXByZWNhdGVkJyBpbiBmaWVsZCAmJiBmaWVsZC5pc0RlcHJlY2F0ZWQsXG4gICAgICApO1xuICAgICAgaWYgKGRlcHJlY2F0ZWRGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICBkZXByZWNhdGVkRmllbGRzRGVmID0gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeS10aXRsZVwiPnsnZGVwcmVjYXRlZCBmaWVsZHMnfTwvZGl2PlxuICAgICAgICAgICAgeyF0aGlzLnN0YXRlLnNob3dEZXByZWNhdGVkID8gKFxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInNob3ctYnRuXCIgb25DbGljaz17dGhpcy5oYW5kbGVTaG93RGVwcmVjYXRlZH0+XG4gICAgICAgICAgICAgICAgeydTaG93IGRlcHJlY2F0ZWQgZmllbGRzLi4uJ31cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICBkZXByZWNhdGVkRmllbGRzLm1hcChmaWVsZCA9PiAoXG4gICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICBrZXk9e2ZpZWxkLm5hbWV9XG4gICAgICAgICAgICAgICAgICB0eXBlPXt0eXBlfVxuICAgICAgICAgICAgICAgICAgZmllbGQ9e2ZpZWxkfVxuICAgICAgICAgICAgICAgICAgb25DbGlja1R5cGU9e29uQ2xpY2tUeXBlfVxuICAgICAgICAgICAgICAgICAgb25DbGlja0ZpZWxkPXtvbkNsaWNrRmllbGR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlc0RlZjogUmVhY3ROb2RlO1xuICAgIGxldCBkZXByZWNhdGVkVmFsdWVzRGVmOiBSZWFjdE5vZGU7XG4gICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBHcmFwaFFMRW51bVR5cGUpIHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IHR5cGUuZ2V0VmFsdWVzKCk7XG4gICAgICB2YWx1ZXNEZWYgPSAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktdGl0bGVcIj57J3ZhbHVlcyd9PC9kaXY+XG4gICAgICAgICAge3ZhbHVlc1xuICAgICAgICAgICAgLmZpbHRlcih2YWx1ZSA9PiAhdmFsdWUuaXNEZXByZWNhdGVkKVxuICAgICAgICAgICAgLm1hcCh2YWx1ZSA9PiAoXG4gICAgICAgICAgICAgIDxFbnVtVmFsdWUga2V5PXt2YWx1ZS5uYW1lfSB2YWx1ZT17dmFsdWV9IC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuXG4gICAgICBjb25zdCBkZXByZWNhdGVkVmFsdWVzID0gdmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZS5pc0RlcHJlY2F0ZWQpO1xuICAgICAgaWYgKGRlcHJlY2F0ZWRWYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBkZXByZWNhdGVkVmFsdWVzRGVmID0gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZG9jLWNhdGVnb3J5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeS10aXRsZVwiPnsnZGVwcmVjYXRlZCB2YWx1ZXMnfTwvZGl2PlxuICAgICAgICAgICAgeyF0aGlzLnN0YXRlLnNob3dEZXByZWNhdGVkID8gKFxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInNob3ctYnRuXCIgb25DbGljaz17dGhpcy5oYW5kbGVTaG93RGVwcmVjYXRlZH0+XG4gICAgICAgICAgICAgICAgeydTaG93IGRlcHJlY2F0ZWQgdmFsdWVzLi4uJ31cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICBkZXByZWNhdGVkVmFsdWVzLm1hcCh2YWx1ZSA9PiAoXG4gICAgICAgICAgICAgICAgPEVudW1WYWx1ZSBrZXk9e3ZhbHVlLm5hbWV9IHZhbHVlPXt2YWx1ZX0gLz5cbiAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxNYXJrZG93bkNvbnRlbnRcbiAgICAgICAgICBjbGFzc05hbWU9XCJkb2MtdHlwZS1kZXNjcmlwdGlvblwiXG4gICAgICAgICAgbWFya2Rvd249e1xuICAgICAgICAgICAgKCdkZXNjcmlwdGlvbicgaW4gdHlwZSAmJiB0eXBlLmRlc2NyaXB0aW9uKSB8fCAnTm8gRGVzY3JpcHRpb24nXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICB7dHlwZSBpbnN0YW5jZW9mIEdyYXBoUUxPYmplY3RUeXBlICYmIHR5cGVzRGVmfVxuICAgICAgICB7ZmllbGRzRGVmfVxuICAgICAgICB7ZGVwcmVjYXRlZEZpZWxkc0RlZn1cbiAgICAgICAge3ZhbHVlc0RlZn1cbiAgICAgICAge2RlcHJlY2F0ZWRWYWx1ZXNEZWZ9XG4gICAgICAgIHshKHR5cGUgaW5zdGFuY2VvZiBHcmFwaFFMT2JqZWN0VHlwZSkgJiYgdHlwZXNEZWZ9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgaGFuZGxlU2hvd0RlcHJlY2F0ZWQgPSAoKSA9PiB0aGlzLnNldFN0YXRlKHsgc2hvd0RlcHJlY2F0ZWQ6IHRydWUgfSk7XG59XG5cbnR5cGUgRmllbGRQcm9wcyA9IHtcbiAgdHlwZTogR3JhcGhRTFR5cGU7XG4gIGZpZWxkOiBGaWVsZFR5cGU7XG4gIG9uQ2xpY2tUeXBlOiBPbkNsaWNrVHlwZUZ1bmN0aW9uO1xuICBvbkNsaWNrRmllbGQ6IE9uQ2xpY2tGaWVsZEZ1bmN0aW9uO1xufTtcblxuZnVuY3Rpb24gRmllbGQoeyB0eXBlLCBmaWVsZCwgb25DbGlja1R5cGUsIG9uQ2xpY2tGaWVsZCB9OiBGaWVsZFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJkb2MtY2F0ZWdvcnktaXRlbVwiPlxuICAgICAgPGFcbiAgICAgICAgY2xhc3NOYW1lPVwiZmllbGQtbmFtZVwiXG4gICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IG9uQ2xpY2tGaWVsZChmaWVsZCwgdHlwZSwgZXZlbnQpfT5cbiAgICAgICAge2ZpZWxkLm5hbWV9XG4gICAgICA8L2E+XG4gICAgICB7J2FyZ3MnIGluIGZpZWxkICYmXG4gICAgICAgIGZpZWxkLmFyZ3MgJiZcbiAgICAgICAgZmllbGQuYXJncy5sZW5ndGggPiAwICYmIFtcbiAgICAgICAgICAnKCcsXG4gICAgICAgICAgPHNwYW4ga2V5PVwiYXJnc1wiPlxuICAgICAgICAgICAge2ZpZWxkLmFyZ3MubWFwKGFyZyA9PiAoXG4gICAgICAgICAgICAgIDxBcmd1bWVudCBrZXk9e2FyZy5uYW1lfSBhcmc9e2FyZ30gb25DbGlja1R5cGU9e29uQ2xpY2tUeXBlfSAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9zcGFuPixcbiAgICAgICAgICAnKScsXG4gICAgICAgIF19XG4gICAgICB7JzogJ31cbiAgICAgIDxUeXBlTGluayB0eXBlPXtmaWVsZC50eXBlfSBvbkNsaWNrPXtvbkNsaWNrVHlwZX0gLz5cbiAgICAgIDxEZWZhdWx0VmFsdWUgZmllbGQ9e2ZpZWxkfSAvPlxuICAgICAge2ZpZWxkLmRlc2NyaXB0aW9uICYmIChcbiAgICAgICAgPE1hcmtkb3duQ29udGVudFxuICAgICAgICAgIGNsYXNzTmFtZT1cImZpZWxkLXNob3J0LWRlc2NyaXB0aW9uXCJcbiAgICAgICAgICBtYXJrZG93bj17ZmllbGQuZGVzY3JpcHRpb259XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgeydkZXByZWNhdGlvblJlYXNvbicgaW4gZmllbGQgJiYgZmllbGQuZGVwcmVjYXRpb25SZWFzb24gJiYgKFxuICAgICAgICA8TWFya2Rvd25Db250ZW50XG4gICAgICAgICAgY2xhc3NOYW1lPVwiZG9jLWRlcHJlY2F0aW9uXCJcbiAgICAgICAgICBtYXJrZG93bj17ZmllbGQuZGVwcmVjYXRpb25SZWFzb259XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG50eXBlIEVudW1WYWx1ZSA9IHtcbiAgdmFsdWU6IEdyYXBoUUxFbnVtVmFsdWU7XG59O1xuXG5mdW5jdGlvbiBFbnVtVmFsdWUoeyB2YWx1ZSB9OiBFbnVtVmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1jYXRlZ29yeS1pdGVtXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImVudW0tdmFsdWVcIj57dmFsdWUubmFtZX08L2Rpdj5cbiAgICAgIDxNYXJrZG93bkNvbnRlbnRcbiAgICAgICAgY2xhc3NOYW1lPVwiZG9jLXZhbHVlLWRlc2NyaXB0aW9uXCJcbiAgICAgICAgbWFya2Rvd249e3ZhbHVlLmRlc2NyaXB0aW9ufVxuICAgICAgLz5cbiAgICAgIHt2YWx1ZS5kZXByZWNhdGlvblJlYXNvbiAmJiAoXG4gICAgICAgIDxNYXJrZG93bkNvbnRlbnRcbiAgICAgICAgICBjbGFzc05hbWU9XCJkb2MtZGVwcmVjYXRpb25cIlxuICAgICAgICAgIG1hcmtkb3duPXt2YWx1ZS5kZXByZWNhdGlvblJlYXNvbn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1DQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBc0pBO0FBQUE7QUFDQTtBQXJKQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBV0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUtBO0FBQUE7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUZBO0FBY0E7QUFDQTtBQXRKQTtBQUNBOzs7QUFnS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUZBO0FBU0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFGQTtBQU9BO0FBQ0E7QUFGQTtBQU9BO0FBQ0E7QUFLQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUZBO0FBTUE7QUFDQTtBQUZBO0FBT0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/DocExplorer/TypeDoc.tsx\n");
3210
3211/***/ }),
3212
3213/***/ "./components/DocExplorer/TypeLink.tsx":
3214/*!*********************************************!*\
3215 !*** ./components/DocExplorer/TypeLink.tsx ***!
3216 \*********************************************/
3217/*! no static exports found */
3218/***/ (function(module, exports, __webpack_require__) {
3219
3220eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _graphql) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = TypeLink;\n _react = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function TypeLink(props) {\n const onClick = props.onClick ? props.onClick : () => null;\n return renderType(props.type, onClick);\n }\n\n function renderType(type, onClick) {\n if (type instanceof _graphql.GraphQLNonNull) {\n return /*#__PURE__*/_react.default.createElement(\"span\", null, renderType(type.ofType, onClick), '!');\n }\n\n if (type instanceof _graphql.GraphQLList) {\n return /*#__PURE__*/_react.default.createElement(\"span\", null, '[', renderType(type.ofType, onClick), ']');\n }\n\n return /*#__PURE__*/_react.default.createElement(\"a\", {\n className: \"type-name\",\n onClick: event => {\n event.preventDefault();\n onClick(type, event);\n },\n href: \"#\"\n }, type === null || type === void 0 ? void 0 : type.name);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0RvY0V4cGxvcmVyL1R5cGVMaW5rLnRzeC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY29tcG9uZW50cy9Eb2NFeHBsb3Jlci9UeXBlTGluay50c3g/ODg2ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgR3JhcGhRTExpc3QsXG4gIEdyYXBoUUxOb25OdWxsLFxuICBHcmFwaFFMVHlwZSxcbiAgR3JhcGhRTE5hbWVkVHlwZSxcbn0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBPbkNsaWNrVHlwZUZ1bmN0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG50eXBlIFR5cGVMaW5rUHJvcHMgPSB7XG4gIHR5cGU/OiBNYXliZTxHcmFwaFFMVHlwZT47XG4gIG9uQ2xpY2s/OiBPbkNsaWNrVHlwZUZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVHlwZUxpbmsocHJvcHM6IFR5cGVMaW5rUHJvcHMpIHtcbiAgY29uc3Qgb25DbGljayA9IHByb3BzLm9uQ2xpY2sgPyBwcm9wcy5vbkNsaWNrIDogKCkgPT4gbnVsbDtcbiAgcmV0dXJuIHJlbmRlclR5cGUocHJvcHMudHlwZSwgb25DbGljayk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlclR5cGUodHlwZTogTWF5YmU8R3JhcGhRTFR5cGU+LCBvbkNsaWNrOiBPbkNsaWNrVHlwZUZ1bmN0aW9uKSB7XG4gIGlmICh0eXBlIGluc3RhbmNlb2YgR3JhcGhRTE5vbk51bGwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPHNwYW4+XG4gICAgICAgIHtyZW5kZXJUeXBlKHR5cGUub2ZUeXBlLCBvbkNsaWNrKX1cbiAgICAgICAgeychJ31cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuICB9XG4gIGlmICh0eXBlIGluc3RhbmNlb2YgR3JhcGhRTExpc3QpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPHNwYW4+XG4gICAgICAgIHsnWyd9XG4gICAgICAgIHtyZW5kZXJUeXBlKHR5cGUub2ZUeXBlLCBvbkNsaWNrKX1cbiAgICAgICAgeyddJ31cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuICB9XG4gIHJldHVybiAoXG4gICAgPGFcbiAgICAgIGNsYXNzTmFtZT1cInR5cGUtbmFtZVwiXG4gICAgICBvbkNsaWNrPXtldmVudCA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uQ2xpY2sodHlwZSBhcyBHcmFwaFFMTmFtZWRUeXBlLCBldmVudCk7XG4gICAgICB9fVxuICAgICAgaHJlZj1cIiNcIj5cbiAgICAgIHt0eXBlPy5uYW1lfVxuICAgIDwvYT5cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBa0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQU9BO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBVUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/DocExplorer/TypeLink.tsx\n");
3221
3222/***/ }),
3223
3224/***/ "./components/ExecuteButton.tsx":
3225/*!**************************************!*\
3226 !*** ./components/ExecuteButton.tsx ***!
3227 \**************************************/
3228/*! no static exports found */
3229/***/ (function(module, exports, __webpack_require__) {
3230
3231eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.ExecuteButton = void 0;\n _react = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n class ExecuteButton extends _react.default.Component {\n constructor(props) {\n super(props);\n\n _defineProperty(this, \"_onClick\", () => {\n if (this.props.isRunning) {\n this.props.onStop();\n } else {\n this.props.onRun();\n }\n });\n\n _defineProperty(this, \"_onOptionSelected\", operation => {\n this.setState({\n optionsOpen: false\n });\n this.props.onRun(operation.name && operation.name.value);\n });\n\n _defineProperty(this, \"_onOptionsOpen\", downEvent => {\n let initialPress = true;\n const downTarget = downEvent.currentTarget;\n this.setState({\n highlight: null,\n optionsOpen: true\n });\n\n let onMouseUp = upEvent => {\n if (initialPress && upEvent.target === downTarget) {\n initialPress = false;\n } else {\n var _downTarget$parentNod;\n\n document.removeEventListener('mouseup', onMouseUp);\n onMouseUp = null;\n const isOptionsMenuClicked = upEvent.currentTarget && ((_downTarget$parentNod = downTarget.parentNode) === null || _downTarget$parentNod === void 0 ? void 0 : _downTarget$parentNod.compareDocumentPosition(upEvent.currentTarget)) && Node.DOCUMENT_POSITION_CONTAINED_BY;\n\n if (!isOptionsMenuClicked) {\n // menu calls setState if it was clicked\n this.setState({\n optionsOpen: false\n });\n }\n }\n };\n\n document.addEventListener('mouseup', onMouseUp);\n });\n\n this.state = {\n optionsOpen: false,\n highlight: null\n };\n }\n\n render() {\n const operations = this.props.operations || [];\n const optionsOpen = this.state.optionsOpen;\n const hasOptions = operations && operations.length > 1;\n let options = null;\n\n if (hasOptions && optionsOpen) {\n const highlight = this.state.highlight;\n options = /*#__PURE__*/_react.default.createElement(\"ul\", {\n className: \"execute-options\"\n }, operations.map((operation, i) => {\n const opName = operation.name ? operation.name.value : `<Unnamed ${operation.operation}>`;\n return /*#__PURE__*/_react.default.createElement(\"li\", {\n key: `${opName}-${i}`,\n className: operation === highlight ? 'selected' : undefined,\n onMouseOver: () => this.setState({\n highlight: operation\n }),\n onMouseOut: () => this.setState({\n highlight: null\n }),\n onMouseUp: () => this._onOptionSelected(operation)\n }, opName);\n }));\n } // Allow click event if there is a running query or if there are not options\n // for which operation to run.\n\n\n let onClick;\n\n if (this.props.isRunning || !hasOptions) {\n onClick = this._onClick;\n } // Allow mouse down if there is no running query, there are options for\n // which operation to run, and the dropdown is currently closed.\n\n\n let onMouseDown = () => {};\n\n if (!this.props.isRunning && hasOptions && !optionsOpen) {\n onMouseDown = this._onOptionsOpen;\n }\n\n const pathJSX = this.props.isRunning ? /*#__PURE__*/_react.default.createElement(\"path\", {\n d: \"M 10 10 L 23 10 L 23 23 L 10 23 z\"\n }) : /*#__PURE__*/_react.default.createElement(\"path\", {\n d: \"M 11 9 L 24 16 L 11 23 z\"\n });\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"execute-button-wrap\"\n }, /*#__PURE__*/_react.default.createElement(\"button\", {\n type: \"button\",\n className: \"execute-button\",\n onMouseDown: onMouseDown,\n onClick: onClick,\n title: \"Execute Query (Ctrl-Enter)\"\n }, /*#__PURE__*/_react.default.createElement(\"svg\", {\n width: \"34\",\n height: \"34\"\n }, pathJSX)), options);\n }\n\n }\n\n _exports.ExecuteButton = ExecuteButton;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0V4ZWN1dGVCdXR0b24udHN4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi9jb21wb25lbnRzL0V4ZWN1dGVCdXR0b24udHN4PzA0YjciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxIEdyYXBoUUwgQ29udHJpYnV0b3JzLlxuICpcbiAqICBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqICBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbmltcG9ydCBSZWFjdCwgeyBNb3VzZUV2ZW50SGFuZGxlciB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IE9wZXJhdGlvbkRlZmluaXRpb25Ob2RlIH0gZnJvbSAnZ3JhcGhxbCc7XG5cbi8qKlxuICogRXhlY3V0ZUJ1dHRvblxuICpcbiAqIFdoYXQgYSBuaWNlIHJvdW5kIHNoaW55IGJ1dHRvbi4gU2hvd3MgYSBkcm9wLWRvd24gd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGVcbiAqIHF1ZXJpZXMgdG8gcnVuLlxuICovXG5cbnR5cGUgRXhlY3V0ZUJ1dHRvblByb3BzID0ge1xuICBvcGVyYXRpb25zPzogT3BlcmF0aW9uRGVmaW5pdGlvbk5vZGVbXTtcbiAgaXNSdW5uaW5nOiBib29sZWFuO1xuICBvblN0b3A6ICgpID0+IHZvaWQ7XG4gIG9uUnVuOiAodmFsdWU/OiBzdHJpbmcpID0+IHZvaWQ7XG59O1xuXG50eXBlIEV4ZWN1dGVCdXR0b25TdGF0ZSA9IHtcbiAgb3B0aW9uc09wZW46IGJvb2xlYW47XG4gIGhpZ2hsaWdodDogT3BlcmF0aW9uRGVmaW5pdGlvbk5vZGUgfCBudWxsO1xufTtcblxuZXhwb3J0IGNsYXNzIEV4ZWN1dGVCdXR0b24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8XG4gIEV4ZWN1dGVCdXR0b25Qcm9wcyxcbiAgRXhlY3V0ZUJ1dHRvblN0YXRlXG4+IHtcbiAgY29uc3RydWN0b3IocHJvcHM6IEV4ZWN1dGVCdXR0b25Qcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBvcHRpb25zT3BlbjogZmFsc2UsXG4gICAgICBoaWdobGlnaHQ6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBvcGVyYXRpb25zID0gdGhpcy5wcm9wcy5vcGVyYXRpb25zIHx8IFtdO1xuICAgIGNvbnN0IG9wdGlvbnNPcGVuID0gdGhpcy5zdGF0ZS5vcHRpb25zT3BlbjtcbiAgICBjb25zdCBoYXNPcHRpb25zID0gb3BlcmF0aW9ucyAmJiBvcGVyYXRpb25zLmxlbmd0aCA+IDE7XG5cbiAgICBsZXQgb3B0aW9ucyA9IG51bGw7XG4gICAgaWYgKGhhc09wdGlvbnMgJiYgb3B0aW9uc09wZW4pIHtcbiAgICAgIGNvbnN0IGhpZ2hsaWdodCA9IHRoaXMuc3RhdGUuaGlnaGxpZ2h0O1xuICAgICAgb3B0aW9ucyA9IChcbiAgICAgICAgPHVsIGNsYXNzTmFtZT1cImV4ZWN1dGUtb3B0aW9uc1wiPlxuICAgICAgICAgIHtvcGVyYXRpb25zLm1hcCgob3BlcmF0aW9uLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcE5hbWUgPSBvcGVyYXRpb24ubmFtZVxuICAgICAgICAgICAgICA/IG9wZXJhdGlvbi5uYW1lLnZhbHVlXG4gICAgICAgICAgICAgIDogYDxVbm5hbWVkICR7b3BlcmF0aW9uLm9wZXJhdGlvbn0+YDtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgIGtleT17YCR7b3BOYW1lfS0ke2l9YH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e29wZXJhdGlvbiA9PT0gaGlnaGxpZ2h0ID8gJ3NlbGVjdGVkJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICBvbk1vdXNlT3Zlcj17KCkgPT4gdGhpcy5zZXRTdGF0ZSh7IGhpZ2hsaWdodDogb3BlcmF0aW9uIH0pfVxuICAgICAgICAgICAgICAgIG9uTW91c2VPdXQ9eygpID0+IHRoaXMuc2V0U3RhdGUoeyBoaWdobGlnaHQ6IG51bGwgfSl9XG4gICAgICAgICAgICAgICAgb25Nb3VzZVVwPXsoKSA9PiB0aGlzLl9vbk9wdGlvblNlbGVjdGVkKG9wZXJhdGlvbil9PlxuICAgICAgICAgICAgICAgIHtvcE5hbWV9XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8L3VsPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBBbGxvdyBjbGljayBldmVudCBpZiB0aGVyZSBpcyBhIHJ1bm5pbmcgcXVlcnkgb3IgaWYgdGhlcmUgYXJlIG5vdCBvcHRpb25zXG4gICAgLy8gZm9yIHdoaWNoIG9wZXJhdGlvbiB0byBydW4uXG4gICAgbGV0IG9uQ2xpY2s7XG4gICAgaWYgKHRoaXMucHJvcHMuaXNSdW5uaW5nIHx8ICFoYXNPcHRpb25zKSB7XG4gICAgICBvbkNsaWNrID0gdGhpcy5fb25DbGljaztcbiAgICB9XG5cbiAgICAvLyBBbGxvdyBtb3VzZSBkb3duIGlmIHRoZXJlIGlzIG5vIHJ1bm5pbmcgcXVlcnksIHRoZXJlIGFyZSBvcHRpb25zIGZvclxuICAgIC8vIHdoaWNoIG9wZXJhdGlvbiB0byBydW4sIGFuZCB0aGUgZHJvcGRvd24gaXMgY3VycmVudGx5IGNsb3NlZC5cbiAgICBsZXQgb25Nb3VzZURvd246IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxCdXR0b25FbGVtZW50PiA9ICgpID0+IHt9O1xuICAgIGlmICghdGhpcy5wcm9wcy5pc1J1bm5pbmcgJiYgaGFzT3B0aW9ucyAmJiAhb3B0aW9uc09wZW4pIHtcbiAgICAgIG9uTW91c2VEb3duID0gdGhpcy5fb25PcHRpb25zT3BlbjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXRoSlNYID0gdGhpcy5wcm9wcy5pc1J1bm5pbmcgPyAoXG4gICAgICA8cGF0aCBkPVwiTSAxMCAxMCBMIDIzIDEwIEwgMjMgMjMgTCAxMCAyMyB6XCIgLz5cbiAgICApIDogKFxuICAgICAgPHBhdGggZD1cIk0gMTEgOSBMIDI0IDE2IEwgMTEgMjMgelwiIC8+XG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImV4ZWN1dGUtYnV0dG9uLXdyYXBcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT1cImV4ZWN1dGUtYnV0dG9uXCJcbiAgICAgICAgICBvbk1vdXNlRG93bj17b25Nb3VzZURvd259XG4gICAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgICB0aXRsZT1cIkV4ZWN1dGUgUXVlcnkgKEN0cmwtRW50ZXIpXCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjM0XCIgaGVpZ2h0PVwiMzRcIj5cbiAgICAgICAgICAgIHtwYXRoSlNYfVxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAge29wdGlvbnN9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgX29uQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuaXNSdW5uaW5nKSB7XG4gICAgICB0aGlzLnByb3BzLm9uU3RvcCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb3BzLm9uUnVuKCk7XG4gICAgfVxuICB9O1xuXG4gIF9vbk9wdGlvblNlbGVjdGVkID0gKG9wZXJhdGlvbjogT3BlcmF0aW9uRGVmaW5pdGlvbk5vZGUpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgb3B0aW9uc09wZW46IGZhbHNlIH0pO1xuICAgIHRoaXMucHJvcHMub25SdW4ob3BlcmF0aW9uLm5hbWUgJiYgb3BlcmF0aW9uLm5hbWUudmFsdWUpO1xuICB9O1xuXG4gIF9vbk9wdGlvbnNPcGVuOiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MQnV0dG9uRWxlbWVudD4gPSBkb3duRXZlbnQgPT4ge1xuICAgIGxldCBpbml0aWFsUHJlc3MgPSB0cnVlO1xuICAgIGNvbnN0IGRvd25UYXJnZXQgPSBkb3duRXZlbnQuY3VycmVudFRhcmdldDtcbiAgICB0aGlzLnNldFN0YXRlKHsgaGlnaGxpZ2h0OiBudWxsLCBvcHRpb25zT3BlbjogdHJ1ZSB9KTtcblxuICAgIHR5cGUgTW91c2VVcEV2ZW50SGFuZGxlciA9ICh1cEV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICAgIGxldCBvbk1vdXNlVXA6IE1vdXNlVXBFdmVudEhhbmRsZXIgfCBudWxsID0gdXBFdmVudCA9PiB7XG4gICAgICBpZiAoaW5pdGlhbFByZXNzICYmIHVwRXZlbnQudGFyZ2V0ID09PSBkb3duVGFyZ2V0KSB7XG4gICAgICAgIGluaXRpYWxQcmVzcyA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCEpO1xuICAgICAgICBvbk1vdXNlVXAgPSBudWxsO1xuICAgICAgICBjb25zdCBpc09wdGlvbnNNZW51Q2xpY2tlZCA9XG4gICAgICAgICAgdXBFdmVudC5jdXJyZW50VGFyZ2V0ICYmXG4gICAgICAgICAgZG93blRhcmdldC5wYXJlbnROb2RlPy5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihcbiAgICAgICAgICAgIHVwRXZlbnQuY3VycmVudFRhcmdldCBhcyBOb2RlLFxuICAgICAgICAgICkgJiZcbiAgICAgICAgICBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWTtcbiAgICAgICAgaWYgKCFpc09wdGlvbnNNZW51Q2xpY2tlZCkge1xuICAgICAgICAgIC8vIG1lbnUgY2FsbHMgc2V0U3RhdGUgaWYgaXQgd2FzIGNsaWNrZWRcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgb3B0aW9uc09wZW46IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTRCQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBNEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbEZBO0FBb0ZBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXZGQTtBQXlGQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaEhBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBTEE7QUFTQTtBQUdBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFNQTtBQUFBO0FBQUE7QUFPQTtBQUNBO0FBM0VBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/ExecuteButton.tsx\n");
3232
3233/***/ }),
3234
3235/***/ "./components/GraphiQL.tsx":
3236/*!*********************************!*\
3237 !*** ./components/GraphiQL.tsx ***!
3238 \*********************************/
3239/*! no static exports found */
3240/***/ (function(module, exports, __webpack_require__) {
3241
3242eval("/* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! copy-to-clipboard */ \"../../../node_modules/copy-to-clipboard/index.js\"), __webpack_require__(/*! graphql-language-service-utils */ \"../../graphql-language-service-utils/esm/index.js\"), __webpack_require__(/*! ./ExecuteButton */ \"./components/ExecuteButton.tsx\"), __webpack_require__(/*! ./ImagePreview */ \"./components/ImagePreview.tsx\"), __webpack_require__(/*! ./ToolbarButton */ \"./components/ToolbarButton.tsx\"), __webpack_require__(/*! ./ToolbarGroup */ \"./components/ToolbarGroup.tsx\"), __webpack_require__(/*! ./ToolbarMenu */ \"./components/ToolbarMenu.tsx\"), __webpack_require__(/*! ./QueryEditor */ \"./components/QueryEditor.tsx\"), __webpack_require__(/*! ./VariableEditor */ \"./components/VariableEditor.tsx\"), __webpack_require__(/*! ./HeaderEditor */ \"./components/HeaderEditor.tsx\"), __webpack_require__(/*! ./ResultViewer */ \"./components/ResultViewer.tsx\"), __webpack_require__(/*! ./DocExplorer */ \"./components/DocExplorer.tsx\"), __webpack_require__(/*! ./QueryHistory */ \"./components/QueryHistory.tsx\"), __webpack_require__(/*! ../utility/CodeMirrorSizer */ \"./utility/CodeMirrorSizer.ts\"), __webpack_require__(/*! ../utility/StorageAPI */ \"./utility/StorageAPI.ts\"), __webpack_require__(/*! ../utility/getQueryFacts */ \"./utility/getQueryFacts.ts\"), __webpack_require__(/*! ../utility/getSelectedOperationName */ \"./utility/getSelectedOperationName.ts\"), __webpack_require__(/*! ../utility/debounce */ \"./utility/debounce.ts\"), __webpack_require__(/*! ../utility/find */ \"./utility/find.ts\"), __webpack_require__(/*! ../utility/fillLeafs */ \"./utility/fillLeafs.ts\"), __webpack_require__(/*! ../utility/elementPosition */ \"./utility/elementPosition.ts\"), __webpack_require__(/*! ../utility/mergeAst */ \"./utility/mergeAst.ts\"), __webpack_require__(/*! ../utility/introspectionQueries */ \"./utility/introspectionQueries.ts\"), __webpack_require__(/*! dset/merge */ \"../../../node_modules/dset/merge/index.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _graphql, _copyToClipboard, _graphqlLanguageServiceUtils, _ExecuteButton, _ImagePreview, _ToolbarButton, _ToolbarGroup, _ToolbarMenu, _QueryEditor, _VariableEditor, _HeaderEditor, _ResultViewer, _DocExplorer, _QueryHistory, _CodeMirrorSizer, _StorageAPI, _getQueryFacts, _getSelectedOperationName, _debounce, _find, _fillLeafs, _elementPosition, _mergeAst, _introspectionQueries, _merge) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.GraphiQL = void 0;\n _react = _interopRequireDefault(_react);\n _copyToClipboard = _interopRequireDefault(_copyToClipboard);\n _CodeMirrorSizer = _interopRequireDefault(_CodeMirrorSizer);\n _StorageAPI = _interopRequireDefault(_StorageAPI);\n _getQueryFacts = _interopRequireDefault(_getQueryFacts);\n _getSelectedOperationName = _interopRequireDefault(_getSelectedOperationName);\n _debounce = _interopRequireDefault(_debounce);\n _find = _interopRequireDefault(_find);\n _mergeAst = _interopRequireDefault(_mergeAst);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n const DEFAULT_DOC_EXPLORER_WIDTH = 350;\n const majorVersion = parseInt(_react.default.version.slice(0, 2), 10);\n\n if (majorVersion < 16) {\n throw Error(['GraphiQL 0.18.0 and after is not compatible with React 15 or below.', 'If you are using a CDN source (jsdelivr, unpkg, etc), follow this example:', 'https://github.com/graphql/graphiql/blob/master/examples/graphiql-cdn/index.html#L49'].join('\\n'));\n }\n\n /**\n * The top-level React component for GraphiQL, intended to encompass the entire\n * browser viewport.\n *\n * @see https://github.com/graphql/graphiql#usage\n */\n class GraphiQL extends _react.default.Component {\n /**\n * Static Methods\n */\n static formatResult(result) {\n return JSON.stringify(result, null, 2);\n }\n\n static formatError(rawError) {\n const result = Array.isArray(rawError) ? rawError.map(formatSingleError) : formatSingleError(rawError);\n return JSON.stringify(result, null, 2);\n } // Ensure only the last executed editor query is rendered.\n\n\n constructor(props) {\n var _props$headerEditorEn, _props$shouldPersistH;\n\n super(props); // Ensure props are correct\n\n _defineProperty(this, \"_editorQueryID\", 0);\n\n _defineProperty(this, \"_storage\", void 0);\n\n _defineProperty(this, \"codeMirrorSizer\", void 0);\n\n _defineProperty(this, \"componentIsMounted\", void 0);\n\n _defineProperty(this, \"docExplorerComponent\", void 0);\n\n _defineProperty(this, \"graphiqlContainer\", void 0);\n\n _defineProperty(this, \"resultComponent\", void 0);\n\n _defineProperty(this, \"variableEditorComponent\", void 0);\n\n _defineProperty(this, \"headerEditorComponent\", void 0);\n\n _defineProperty(this, \"_queryHistory\", void 0);\n\n _defineProperty(this, \"editorBarComponent\", void 0);\n\n _defineProperty(this, \"queryEditorComponent\", void 0);\n\n _defineProperty(this, \"resultViewerElement\", void 0);\n\n _defineProperty(this, \"safeSetState\", (nextState, callback) => {\n this.componentIsMounted && this.setState(nextState, callback);\n });\n\n _defineProperty(this, \"handleClickReference\", reference => {\n this.setState({\n docExplorerOpen: true\n }, () => {\n if (this.docExplorerComponent) {\n this.docExplorerComponent.showDocForReference(reference);\n }\n });\n\n this._storage.set('docExplorerOpen', JSON.stringify(this.state.docExplorerOpen));\n });\n\n _defineProperty(this, \"handleRunQuery\", async selectedOperationName => {\n this._editorQueryID++;\n const queryID = this._editorQueryID; // Use the edited query after autoCompleteLeafs() runs or,\n // in case autoCompletion fails (the function returns undefined),\n // the current query from the editor.\n\n const editedQuery = this.autoCompleteLeafs() || this.state.query;\n const variables = this.state.variables;\n const headers = this.state.headers;\n const shouldPersistHeaders = this.state.shouldPersistHeaders;\n let operationName = this.state.operationName; // If an operation was explicitly provided, different from the current\n // operation name, then report that it changed.\n\n if (selectedOperationName && selectedOperationName !== operationName) {\n operationName = selectedOperationName;\n this.handleEditOperationName(operationName);\n }\n\n try {\n this.setState({\n isWaitingForResponse: true,\n response: undefined,\n operationName\n });\n\n this._storage.set('operationName', operationName);\n\n if (this._queryHistory) {\n this._queryHistory.updateHistory(editedQuery, variables, headers, operationName);\n } // when dealing with defer or stream, we need to aggregate results\n\n\n let fullResponse = {\n data: {}\n }; // _fetchQuery may return a subscription.\n\n const subscription = await this._fetchQuery(editedQuery, variables, headers, operationName, shouldPersistHeaders, result => {\n if (queryID === this._editorQueryID) {\n let maybeMultipart = Array.isArray(result) ? result : false;\n\n if (!maybeMultipart && typeof result !== 'string' && result !== null && 'hasNext' in result) {\n maybeMultipart = [result];\n }\n\n if (maybeMultipart) {\n var _fullResponse;\n\n const payload = {\n data: fullResponse.data\n };\n const maybeErrors = [...(((_fullResponse = fullResponse) === null || _fullResponse === void 0 ? void 0 : _fullResponse.errors) || []), ...maybeMultipart.map(i => i.errors).flat().filter(Boolean)];\n\n if (maybeErrors.length) {\n payload.errors = maybeErrors;\n }\n\n for (const part of maybeMultipart) {\n // We pull out errors here, so we dont include it later\n const {\n path,\n data,\n errors: _errors,\n ...rest\n } = part;\n\n if (path) {\n if (!data) {\n throw new Error(`Expected part to contain a data property, but got ${part}`);\n }\n\n (0, _merge.dset)(payload.data, path, data);\n } else if (data) {\n // If there is no path, we don't know what to do with the payload,\n // so we just set it.\n payload.data = part.data;\n } // Ensures we also bring extensions and alike along for the ride\n\n\n fullResponse = { ...payload,\n ...rest\n };\n }\n\n this.setState({\n isWaitingForResponse: false,\n response: GraphiQL.formatResult(fullResponse)\n });\n } else {\n this.setState({\n isWaitingForResponse: false,\n response: GraphiQL.formatResult(result)\n });\n }\n }\n });\n this.setState({\n subscription\n });\n } catch (error) {\n this.setState({\n isWaitingForResponse: false,\n response: error.message\n });\n }\n });\n\n _defineProperty(this, \"handleStopQuery\", () => {\n const subscription = this.state.subscription;\n this.setState({\n isWaitingForResponse: false,\n subscription: null\n });\n\n if (subscription) {\n subscription.unsubscribe();\n }\n });\n\n _defineProperty(this, \"handlePrettifyQuery\", () => {\n var _editor$getValue, _variableEditor$getVa, _headerEditor$getValu;\n\n const editor = this.getQueryEditor();\n const editorContent = (_editor$getValue = editor === null || editor === void 0 ? void 0 : editor.getValue()) !== null && _editor$getValue !== void 0 ? _editor$getValue : '';\n const prettifiedEditorContent = (0, _graphql.print)((0, _graphql.parse)(editorContent, {\n experimentalFragmentVariables: true\n }));\n\n if (prettifiedEditorContent !== editorContent) {\n editor === null || editor === void 0 ? void 0 : editor.setValue(prettifiedEditorContent);\n }\n\n const variableEditor = this.getVariableEditor();\n const variableEditorContent = (_variableEditor$getVa = variableEditor === null || variableEditor === void 0 ? void 0 : variableEditor.getValue()) !== null && _variableEditor$getVa !== void 0 ? _variableEditor$getVa : '';\n\n try {\n const prettifiedVariableEditorContent = JSON.stringify(JSON.parse(variableEditorContent), null, 2);\n\n if (prettifiedVariableEditorContent !== variableEditorContent) {\n variableEditor === null || variableEditor === void 0 ? void 0 : variableEditor.setValue(prettifiedVariableEditorContent);\n }\n } catch {\n /* Parsing JSON failed, skip prettification */\n }\n\n const headerEditor = this.getHeaderEditor();\n const headerEditorContent = (_headerEditor$getValu = headerEditor === null || headerEditor === void 0 ? void 0 : headerEditor.getValue()) !== null && _headerEditor$getValu !== void 0 ? _headerEditor$getValu : '';\n\n try {\n const prettifiedHeaderEditorContent = JSON.stringify(JSON.parse(headerEditorContent), null, 2);\n\n if (prettifiedHeaderEditorContent !== headerEditorContent) {\n headerEditor === null || headerEditor === void 0 ? void 0 : headerEditor.setValue(prettifiedHeaderEditorContent);\n }\n } catch {\n /* Parsing JSON failed, skip prettification */\n }\n });\n\n _defineProperty(this, \"handleMergeQuery\", () => {\n const editor = this.getQueryEditor();\n const query = editor.getValue();\n\n if (!query) {\n return;\n }\n\n const ast = this.state.documentAST;\n editor.setValue((0, _graphql.print)((0, _mergeAst.default)(ast, this.state.schema)));\n });\n\n _defineProperty(this, \"handleEditQuery\", (0, _debounce.default)(100, value => {\n const queryFacts = this._updateQueryFacts(value, this.state.operationName, this.state.operations, this.state.schema);\n\n this.setState({\n query: value,\n ...queryFacts\n });\n\n this._storage.set('query', value);\n\n if (this.props.onEditQuery) {\n return this.props.onEditQuery(value, queryFacts === null || queryFacts === void 0 ? void 0 : queryFacts.documentAST);\n }\n }));\n\n _defineProperty(this, \"handleCopyQuery\", () => {\n const editor = this.getQueryEditor();\n const query = editor && editor.getValue();\n\n if (!query) {\n return;\n }\n\n (0, _copyToClipboard.default)(query);\n\n if (this.props.onCopyQuery) {\n return this.props.onCopyQuery(query);\n }\n });\n\n _defineProperty(this, \"_updateQueryFacts\", (query, operationName, prevOperations, schema) => {\n const queryFacts = (0, _getQueryFacts.default)(schema, query);\n\n if (queryFacts) {\n // Update operation name should any query names change.\n const updatedOperationName = (0, _getSelectedOperationName.default)(prevOperations, operationName, queryFacts.operations); // Report changing of operationName if it changed.\n\n const onEditOperationName = this.props.onEditOperationName;\n\n if (onEditOperationName && updatedOperationName && operationName !== updatedOperationName) {\n onEditOperationName(updatedOperationName);\n }\n\n return {\n operationName: updatedOperationName,\n ...queryFacts\n };\n }\n });\n\n _defineProperty(this, \"handleEditVariables\", value => {\n this.setState({\n variables: value\n });\n (0, _debounce.default)(500, () => this._storage.set('variables', value))();\n\n if (this.props.onEditVariables) {\n this.props.onEditVariables(value);\n }\n });\n\n _defineProperty(this, \"handleEditHeaders\", value => {\n this.setState({\n headers: value\n });\n this.props.shouldPersistHeaders && (0, _debounce.default)(500, () => this._storage.set('headers', value))();\n\n if (this.props.onEditHeaders) {\n this.props.onEditHeaders(value);\n }\n });\n\n _defineProperty(this, \"handleEditOperationName\", operationName => {\n const onEditOperationName = this.props.onEditOperationName;\n\n if (onEditOperationName) {\n onEditOperationName(operationName);\n }\n });\n\n _defineProperty(this, \"handleHintInformationRender\", elem => {\n elem.addEventListener('click', this._onClickHintInformation);\n let onRemoveFn;\n elem.addEventListener('DOMNodeRemoved', onRemoveFn = () => {\n elem.removeEventListener('DOMNodeRemoved', onRemoveFn);\n elem.removeEventListener('click', this._onClickHintInformation);\n });\n });\n\n _defineProperty(this, \"handleEditorRunQuery\", () => {\n this._runQueryAtCursor();\n });\n\n _defineProperty(this, \"_onClickHintInformation\", event => {\n if (event !== null && event !== void 0 && event.currentTarget && 'className' in event.currentTarget && event.currentTarget.className === 'typeName') {\n const typeName = event.currentTarget.innerHTML;\n const schema = this.state.schema;\n\n if (schema) {\n const type = schema.getType(typeName);\n\n if (type) {\n this.setState({\n docExplorerOpen: true\n }, () => {\n if (this.docExplorerComponent) {\n this.docExplorerComponent.showDoc(type);\n }\n });\n (0, _debounce.default)(500, () => this._storage.set('docExplorerOpen', JSON.stringify(this.state.docExplorerOpen)))();\n }\n }\n }\n });\n\n _defineProperty(this, \"handleToggleDocs\", () => {\n if (typeof this.props.onToggleDocs === 'function') {\n this.props.onToggleDocs(!this.state.docExplorerOpen);\n }\n\n this._storage.set('docExplorerOpen', JSON.stringify(!this.state.docExplorerOpen));\n\n this.setState({\n docExplorerOpen: !this.state.docExplorerOpen\n });\n });\n\n _defineProperty(this, \"handleToggleHistory\", () => {\n if (typeof this.props.onToggleHistory === 'function') {\n this.props.onToggleHistory(!this.state.historyPaneOpen);\n }\n\n this._storage.set('historyPaneOpen', JSON.stringify(!this.state.historyPaneOpen));\n\n this.setState({\n historyPaneOpen: !this.state.historyPaneOpen\n });\n });\n\n _defineProperty(this, \"handleSelectHistoryQuery\", (query, variables, headers, operationName) => {\n if (query) {\n this.handleEditQuery(query);\n }\n\n if (variables) {\n this.handleEditVariables(variables);\n }\n\n if (headers) {\n this.handleEditHeaders(headers);\n }\n\n if (operationName) {\n this.handleEditOperationName(operationName);\n }\n });\n\n _defineProperty(this, \"handleResizeStart\", downEvent => {\n if (!this._didClickDragBar(downEvent)) {\n return;\n }\n\n downEvent.preventDefault();\n const offset = downEvent.clientX - (0, _elementPosition.getLeft)(downEvent.target);\n\n let onMouseMove = moveEvent => {\n if (moveEvent.buttons === 0) {\n return onMouseUp();\n }\n\n const editorBar = this.editorBarComponent;\n const leftSize = moveEvent.clientX - (0, _elementPosition.getLeft)(editorBar) - offset;\n const rightSize = editorBar.clientWidth - leftSize;\n this.setState({\n editorFlex: leftSize / rightSize\n });\n (0, _debounce.default)(500, () => this._storage.set('editorFlex', JSON.stringify(this.state.editorFlex)))();\n };\n\n let onMouseUp = () => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n onMouseMove = null;\n onMouseUp = null;\n };\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n });\n\n _defineProperty(this, \"handleResetResize\", () => {\n this.setState({\n editorFlex: 1\n });\n\n this._storage.set('editorFlex', JSON.stringify(this.state.editorFlex));\n });\n\n _defineProperty(this, \"handleDocsResizeStart\", downEvent => {\n downEvent.preventDefault();\n const hadWidth = this.state.docExplorerWidth;\n const offset = downEvent.clientX - (0, _elementPosition.getLeft)(downEvent.target);\n\n let onMouseMove = moveEvent => {\n if (moveEvent.buttons === 0) {\n return onMouseUp();\n }\n\n const app = this.graphiqlContainer;\n const cursorPos = moveEvent.clientX - (0, _elementPosition.getLeft)(app) - offset;\n const docsSize = app.clientWidth - cursorPos;\n\n if (docsSize < 100) {\n if (typeof this.props.onToggleDocs === 'function') {\n this.props.onToggleDocs(!this.state.docExplorerOpen);\n }\n\n this._storage.set('docExplorerOpen', JSON.stringify(this.state.docExplorerOpen));\n\n this.setState({\n docExplorerOpen: false\n });\n } else {\n this.setState({\n docExplorerOpen: true,\n docExplorerWidth: Math.min(docsSize, 650)\n });\n (0, _debounce.default)(500, () => this._storage.set('docExplorerWidth', JSON.stringify(this.state.docExplorerWidth)))();\n }\n\n this._storage.set('docExplorerOpen', JSON.stringify(this.state.docExplorerOpen));\n };\n\n let onMouseUp = () => {\n if (!this.state.docExplorerOpen) {\n this.setState({\n docExplorerWidth: hadWidth\n });\n (0, _debounce.default)(500, () => this._storage.set('docExplorerWidth', JSON.stringify(this.state.docExplorerWidth)))();\n }\n\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n onMouseMove = null;\n onMouseUp = null;\n };\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n });\n\n _defineProperty(this, \"handleDocsResetResize\", () => {\n this.setState({\n docExplorerWidth: DEFAULT_DOC_EXPLORER_WIDTH\n });\n (0, _debounce.default)(500, () => this._storage.set('docExplorerWidth', JSON.stringify(this.state.docExplorerWidth)))();\n });\n\n _defineProperty(this, \"handleTabClickPropogation\", downEvent => {\n downEvent.preventDefault();\n downEvent.stopPropagation();\n });\n\n _defineProperty(this, \"handleOpenHeaderEditorTab\", _clickEvent => {\n this.setState({\n headerEditorActive: true,\n variableEditorActive: false,\n secondaryEditorOpen: true\n });\n });\n\n _defineProperty(this, \"handleOpenVariableEditorTab\", _clickEvent => {\n this.setState({\n headerEditorActive: false,\n variableEditorActive: true,\n secondaryEditorOpen: true\n });\n });\n\n _defineProperty(this, \"handleSecondaryEditorResizeStart\", downEvent => {\n downEvent.preventDefault();\n let didMove = false;\n const wasOpen = this.state.secondaryEditorOpen;\n const hadHeight = this.state.secondaryEditorHeight;\n const offset = downEvent.clientY - (0, _elementPosition.getTop)(downEvent.target);\n\n let onMouseMove = moveEvent => {\n if (moveEvent.buttons === 0) {\n return onMouseUp();\n }\n\n didMove = true;\n const editorBar = this.editorBarComponent;\n const topSize = moveEvent.clientY - (0, _elementPosition.getTop)(editorBar) - offset;\n const bottomSize = editorBar.clientHeight - topSize;\n\n if (bottomSize < 60) {\n this.setState({\n secondaryEditorOpen: false,\n secondaryEditorHeight: hadHeight\n });\n } else {\n this.setState({\n secondaryEditorOpen: true,\n secondaryEditorHeight: bottomSize\n });\n }\n\n (0, _debounce.default)(500, () => this._storage.set('secondaryEditorHeight', JSON.stringify(this.state.secondaryEditorHeight)))();\n };\n\n let onMouseUp = () => {\n if (!didMove) {\n this.setState({\n secondaryEditorOpen: !wasOpen\n });\n }\n\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n onMouseMove = null;\n onMouseUp = null;\n };\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n });\n\n if (typeof props.fetcher !== 'function') {\n throw new TypeError('GraphiQL requires a fetcher function.');\n } // Cache the storage instance\n\n\n this._storage = new _StorageAPI.default(props.storage); // Disable setState when the component is not mounted\n\n this.componentIsMounted = false; // Determine the initial query to display.\n\n const _query = props.query !== undefined ? props.query : this._storage.get('query') ? this._storage.get('query') : props.defaultQuery !== undefined ? props.defaultQuery : defaultQuery; // Get the initial query facts.\n\n\n const _queryFacts = (0, _getQueryFacts.default)(props.schema, _query); // Determine the initial variables to display.\n\n\n const _variables = props.variables !== undefined ? props.variables : this._storage.get('variables'); // Determine the initial headers to display.\n\n\n const _headers = props.headers !== undefined ? props.headers : this._storage.get('headers'); // Determine the initial operationName to use.\n\n\n const _operationName = props.operationName !== undefined ? props.operationName : (0, _getSelectedOperationName.default)(undefined, this._storage.get('operationName'), _queryFacts && _queryFacts.operations); // prop can be supplied to open docExplorer initially\n\n\n let docExplorerOpen = props.docExplorerOpen || false; // but then local storage state overrides it\n\n if (this._storage.get('docExplorerOpen')) {\n docExplorerOpen = this._storage.get('docExplorerOpen') === 'true';\n } // initial secondary editor pane open\n\n\n let secondaryEditorOpen;\n\n if (props.defaultVariableEditorOpen !== undefined) {\n secondaryEditorOpen = props.defaultVariableEditorOpen;\n } else if (props.defaultSecondaryEditorOpen !== undefined) {\n secondaryEditorOpen = props.defaultSecondaryEditorOpen;\n } else {\n secondaryEditorOpen = Boolean(_variables || _headers);\n }\n\n const headerEditorEnabled = (_props$headerEditorEn = props.headerEditorEnabled) !== null && _props$headerEditorEn !== void 0 ? _props$headerEditorEn : false;\n\n const _shouldPersistHeaders = (_props$shouldPersistH = props.shouldPersistHeaders) !== null && _props$shouldPersistH !== void 0 ? _props$shouldPersistH : false; // Initialize state\n\n\n this.state = {\n schema: props.schema,\n query: _query,\n variables: _variables,\n headers: _headers,\n operationName: _operationName,\n docExplorerOpen,\n response: props.response,\n editorFlex: Number(this._storage.get('editorFlex')) || 1,\n secondaryEditorOpen,\n secondaryEditorHeight: Number(this._storage.get('secondaryEditorHeight')) || 200,\n variableEditorActive: this._storage.get('variableEditorActive') === 'true' || props.headerEditorEnabled ? this._storage.get('headerEditorActive') !== 'true' : true,\n headerEditorActive: this._storage.get('headerEditorActive') === 'true',\n headerEditorEnabled,\n shouldPersistHeaders: _shouldPersistHeaders,\n historyPaneOpen: this._storage.get('historyPaneOpen') === 'true' || false,\n docExplorerWidth: Number(this._storage.get('docExplorerWidth')) || DEFAULT_DOC_EXPLORER_WIDTH,\n isWaitingForResponse: false,\n subscription: null,\n ..._queryFacts\n };\n }\n\n componentDidMount() {\n // Allow async state changes\n this.componentIsMounted = true; // Only fetch schema via introspection if a schema has not been\n // provided, including if `null` was provided.\n\n if (this.state.schema === undefined) {\n this.fetchSchema();\n } // Utility for keeping CodeMirror correctly sized.\n\n\n this.codeMirrorSizer = new _CodeMirrorSizer.default();\n global.g = this;\n }\n\n UNSAFE_componentWillMount() {\n this.componentIsMounted = false;\n } // TODO: these values should be updated in a reducer imo\n // eslint-disable-next-line camelcase\n\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n let nextSchema = this.state.schema;\n let nextQuery = this.state.query;\n let nextVariables = this.state.variables;\n let nextHeaders = this.state.headers;\n let nextOperationName = this.state.operationName;\n let nextResponse = this.state.response;\n\n if (nextProps.schema !== undefined) {\n nextSchema = nextProps.schema;\n }\n\n if (nextProps.query !== undefined && this.props.query !== nextProps.query) {\n nextQuery = nextProps.query;\n }\n\n if (nextProps.variables !== undefined && this.props.variables !== nextProps.variables) {\n nextVariables = nextProps.variables;\n }\n\n if (nextProps.headers !== undefined && this.props.headers !== nextProps.headers) {\n nextHeaders = nextProps.headers;\n }\n\n if (nextProps.operationName !== undefined) {\n nextOperationName = nextProps.operationName;\n }\n\n if (nextProps.response !== undefined) {\n nextResponse = nextProps.response;\n }\n\n if (nextQuery && nextSchema && (nextSchema !== this.state.schema || nextQuery !== this.state.query || nextOperationName !== this.state.operationName)) {\n const updatedQueryAttributes = this._updateQueryFacts(nextQuery, nextOperationName, this.state.operations, nextSchema);\n\n if (updatedQueryAttributes !== undefined) {\n nextOperationName = updatedQueryAttributes.operationName;\n this.setState(updatedQueryAttributes);\n }\n } // If schema is not supplied via props and the fetcher changed, then\n // remove the schema so fetchSchema() will be called with the new fetcher.\n\n\n if (nextProps.schema === undefined && nextProps.fetcher !== this.props.fetcher) {\n nextSchema = undefined;\n }\n\n this._storage.set('operationName', nextOperationName);\n\n this.setState({\n schema: nextSchema,\n query: nextQuery,\n variables: nextVariables,\n headers: nextHeaders,\n operationName: nextOperationName,\n response: nextResponse\n }, () => {\n if (this.state.schema === undefined) {\n if (this.docExplorerComponent) {\n this.docExplorerComponent.reset();\n }\n\n this.fetchSchema();\n }\n });\n }\n\n componentDidUpdate() {\n // If this update caused DOM nodes to have changed sizes, update the\n // corresponding CodeMirror instance sizes to match.\n this.codeMirrorSizer.updateSizes([this.queryEditorComponent, this.variableEditorComponent, this.headerEditorComponent, this.resultComponent]);\n } // Use it when the state change is async\n // TODO: Annotate correctly this function\n\n\n render() {\n var _this$props$toolbar;\n\n const children = _react.default.Children.toArray(this.props.children);\n\n const logo = (0, _find.default)(children, child => isChildComponentType(child, GraphiQL.Logo)) || /*#__PURE__*/_react.default.createElement(GraphiQL.Logo, null);\n\n const toolbar = (0, _find.default)(children, child => isChildComponentType(child, GraphiQL.Toolbar)) || /*#__PURE__*/_react.default.createElement(GraphiQL.Toolbar, null, /*#__PURE__*/_react.default.createElement(_ToolbarButton.ToolbarButton, {\n onClick: this.handlePrettifyQuery,\n title: \"Prettify Query (Shift-Ctrl-P)\",\n label: \"Prettify\"\n }), /*#__PURE__*/_react.default.createElement(_ToolbarButton.ToolbarButton, {\n onClick: this.handleMergeQuery,\n title: \"Merge Query (Shift-Ctrl-M)\",\n label: \"Merge\"\n }), /*#__PURE__*/_react.default.createElement(_ToolbarButton.ToolbarButton, {\n onClick: this.handleCopyQuery,\n title: \"Copy Query (Shift-Ctrl-C)\",\n label: \"Copy\"\n }), /*#__PURE__*/_react.default.createElement(_ToolbarButton.ToolbarButton, {\n onClick: this.handleToggleHistory,\n title: \"Show History\",\n label: \"History\"\n }), (_this$props$toolbar = this.props.toolbar) !== null && _this$props$toolbar !== void 0 && _this$props$toolbar.additionalContent ? this.props.toolbar.additionalContent : null);\n\n const footer = (0, _find.default)(children, child => isChildComponentType(child, GraphiQL.Footer));\n const queryWrapStyle = {\n WebkitFlex: this.state.editorFlex,\n flex: this.state.editorFlex\n };\n const docWrapStyle = {\n display: 'block',\n width: this.state.docExplorerWidth\n };\n const docExplorerWrapClasses = 'docExplorerWrap' + (this.state.docExplorerWidth < 200 ? ' doc-explorer-narrow' : '');\n const historyPaneStyle = {\n display: this.state.historyPaneOpen ? 'block' : 'none',\n width: '230px',\n zIndex: 7\n };\n const secondaryEditorOpen = this.state.secondaryEditorOpen;\n const secondaryEditorStyle = {\n height: secondaryEditorOpen ? this.state.secondaryEditorHeight : undefined\n };\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n ref: n => {\n this.graphiqlContainer = n;\n },\n className: \"graphiql-container\"\n }, this.state.historyPaneOpen && /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"historyPaneWrap\",\n style: historyPaneStyle\n }, /*#__PURE__*/_react.default.createElement(_QueryHistory.QueryHistory, {\n ref: node => {\n this._queryHistory = node;\n },\n operationName: this.state.operationName,\n query: this.state.query,\n variables: this.state.variables,\n onSelectQuery: this.handleSelectHistoryQuery,\n storage: this._storage,\n queryID: this._editorQueryID\n }, /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"docExplorerHide\",\n onClick: this.handleToggleHistory,\n \"aria-label\": \"Close History\"\n }, '\\u2715'))), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"editorWrap\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"topBarWrap\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"topBar\"\n }, logo, /*#__PURE__*/_react.default.createElement(_ExecuteButton.ExecuteButton, {\n isRunning: Boolean(this.state.subscription),\n onRun: this.handleRunQuery,\n onStop: this.handleStopQuery,\n operations: this.state.operations\n }), toolbar), !this.state.docExplorerOpen && /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"docExplorerShow\",\n onClick: this.handleToggleDocs,\n \"aria-label\": \"Open Documentation Explorer\"\n }, 'Docs')), /*#__PURE__*/_react.default.createElement(\"div\", {\n ref: n => {\n this.editorBarComponent = n;\n },\n className: \"editorBar\",\n onDoubleClick: this.handleResetResize,\n onMouseDown: this.handleResizeStart\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"queryWrap\",\n style: queryWrapStyle\n }, /*#__PURE__*/_react.default.createElement(_QueryEditor.QueryEditor, {\n ref: n => {\n this.queryEditorComponent = n;\n },\n schema: this.state.schema,\n validationRules: this.props.validationRules,\n value: this.state.query,\n onEdit: this.handleEditQuery,\n onHintInformationRender: this.handleHintInformationRender,\n onClickReference: this.handleClickReference,\n onCopyQuery: this.handleCopyQuery,\n onPrettifyQuery: this.handlePrettifyQuery,\n onMergeQuery: this.handleMergeQuery,\n onRunQuery: this.handleEditorRunQuery,\n editorTheme: this.props.editorTheme,\n readOnly: this.props.readOnly,\n externalFragments: this.props.externalFragments\n }), /*#__PURE__*/_react.default.createElement(\"section\", {\n className: \"variable-editor secondary-editor\",\n style: secondaryEditorStyle,\n \"aria-label\": this.state.variableEditorActive ? 'Query Variables' : 'Request Headers'\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"secondary-editor-title variable-editor-title\",\n id: \"secondary-editor-title\",\n style: {\n cursor: secondaryEditorOpen ? 'row-resize' : 'n-resize'\n },\n onMouseDown: this.handleSecondaryEditorResizeStart\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n style: {\n cursor: 'pointer',\n color: this.state.variableEditorActive ? '#000' : 'gray',\n display: 'inline-block'\n },\n onClick: this.handleOpenVariableEditorTab,\n onMouseDown: this.handleTabClickPropogation\n }, 'Query Variables'), this.state.headerEditorEnabled && /*#__PURE__*/_react.default.createElement(\"div\", {\n style: {\n cursor: 'pointer',\n color: this.state.headerEditorActive ? '#000' : 'gray',\n display: 'inline-block',\n marginLeft: '20px'\n },\n onClick: this.handleOpenHeaderEditorTab,\n onMouseDown: this.handleTabClickPropogation\n }, 'Request Headers')), /*#__PURE__*/_react.default.createElement(_VariableEditor.VariableEditor, {\n ref: n => {\n this.variableEditorComponent = n;\n },\n value: this.state.variables,\n variableToType: this.state.variableToType,\n onEdit: this.handleEditVariables,\n onHintInformationRender: this.handleHintInformationRender,\n onPrettifyQuery: this.handlePrettifyQuery,\n onMergeQuery: this.handleMergeQuery,\n onRunQuery: this.handleEditorRunQuery,\n editorTheme: this.props.editorTheme,\n readOnly: this.props.readOnly,\n active: this.state.variableEditorActive\n }), this.state.headerEditorEnabled && /*#__PURE__*/_react.default.createElement(_HeaderEditor.HeaderEditor, {\n ref: n => {\n this.headerEditorComponent = n;\n },\n value: this.state.headers,\n onEdit: this.handleEditHeaders,\n onHintInformationRender: this.handleHintInformationRender,\n onPrettifyQuery: this.handlePrettifyQuery,\n onMergeQuery: this.handleMergeQuery,\n onRunQuery: this.handleEditorRunQuery,\n editorTheme: this.props.editorTheme,\n readOnly: this.props.readOnly,\n active: this.state.headerEditorActive\n }))), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"resultWrap\"\n }, this.state.isWaitingForResponse && /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"spinner-container\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"spinner\"\n })), /*#__PURE__*/_react.default.createElement(_ResultViewer.ResultViewer, {\n registerRef: n => {\n this.resultViewerElement = n;\n },\n ref: c => {\n this.resultComponent = c;\n },\n value: this.state.response,\n editorTheme: this.props.editorTheme,\n ResultsTooltip: this.props.ResultsTooltip,\n ImagePreview: _ImagePreview.ImagePreview\n }), footer))), this.state.docExplorerOpen && /*#__PURE__*/_react.default.createElement(\"div\", {\n className: docExplorerWrapClasses,\n style: docWrapStyle\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"docExplorerResizer\",\n onDoubleClick: this.handleDocsResetResize,\n onMouseDown: this.handleDocsResizeStart\n }), /*#__PURE__*/_react.default.createElement(_DocExplorer.DocExplorer, {\n ref: c => {\n this.docExplorerComponent = c;\n },\n schema: this.state.schema\n }, /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"docExplorerHide\",\n onClick: this.handleToggleDocs,\n \"aria-label\": \"Close Documentation Explorer\"\n }, '\\u2715'))));\n } // Export main windows/panes to be used separately if desired.\n\n\n // Add a select-option input to the Toolbar.\n // static Select = ToolbarSelect;\n // static SelectOption = ToolbarSelectOption;\n\n /**\n * Get the query editor CodeMirror instance.\n *\n * @public\n */\n getQueryEditor() {\n if (this.queryEditorComponent) {\n return this.queryEditorComponent.getCodeMirror();\n } // return null\n\n }\n /**\n * Get the variable editor CodeMirror instance.\n *\n * @public\n */\n\n\n getVariableEditor() {\n if (this.variableEditorComponent) {\n return this.variableEditorComponent.getCodeMirror();\n }\n\n return null;\n }\n /**\n * Get the header editor CodeMirror instance.\n *\n * @public\n */\n\n\n getHeaderEditor() {\n if (this.headerEditorComponent) {\n return this.headerEditorComponent.getCodeMirror();\n }\n\n return null;\n }\n /**\n * Refresh all CodeMirror instances.\n *\n * @public\n */\n\n\n refresh() {\n if (this.queryEditorComponent) {\n this.queryEditorComponent.getCodeMirror().refresh();\n }\n\n if (this.variableEditorComponent) {\n this.variableEditorComponent.getCodeMirror().refresh();\n }\n\n if (this.headerEditorComponent) {\n this.headerEditorComponent.getCodeMirror().refresh();\n }\n\n if (this.resultComponent) {\n this.resultComponent.getCodeMirror().refresh();\n }\n }\n /**\n * Inspect the query, automatically filling in selection sets for non-leaf\n * fields which do not yet have them.\n *\n * @public\n */\n\n\n autoCompleteLeafs() {\n const {\n insertions,\n result\n } = (0, _fillLeafs.fillLeafs)(this.state.schema, this.state.query, this.props.getDefaultFieldNames);\n\n if (insertions && insertions.length > 0) {\n const editor = this.getQueryEditor();\n\n if (editor) {\n editor.operation(() => {\n const cursor = editor.getCursor();\n const cursorIndex = editor.indexFromPos(cursor);\n editor.setValue(result || '');\n let added = 0;\n const markers = insertions.map(({\n index,\n string\n }) => editor.markText(editor.posFromIndex(index + added), editor.posFromIndex(index + (added += string.length)), {\n className: 'autoInsertedLeaf',\n clearOnEnter: true,\n title: 'Automatically added leaf fields'\n }));\n setTimeout(() => markers.forEach(marker => marker.clear()), 7000);\n let newCursorIndex = cursorIndex;\n insertions.forEach(({\n index,\n string\n }) => {\n if (index < cursorIndex) {\n newCursorIndex += string.length;\n }\n });\n editor.setCursor(editor.posFromIndex(newCursorIndex));\n });\n }\n }\n\n return result;\n } // Private methods\n\n\n fetchSchema() {\n const fetcher = this.props.fetcher;\n const fetcherOpts = {\n shouldPersistHeaders: Boolean(this.props.shouldPersistHeaders),\n documentAST: this.state.documentAST\n };\n\n if (this.state.headers && this.state.headers.trim().length > 2) {\n fetcherOpts.headers = JSON.parse(this.state.headers); // if state is not present, but props are\n } else if (this.props.headers) {\n fetcherOpts.headers = JSON.parse(this.props.headers);\n }\n\n const fetch = fetcherReturnToPromise(fetcher({\n query: _introspectionQueries.introspectionQuery,\n operationName: _introspectionQueries.introspectionQueryName\n }, fetcherOpts));\n\n if (!isPromise(fetch)) {\n this.setState({\n response: 'Fetcher did not return a Promise for introspection.'\n });\n return;\n }\n\n fetch.then(result => {\n if (typeof result !== 'string' && 'data' in result) {\n return result;\n } // Try the stock introspection query first, falling back on the\n // sans-subscriptions query for services which do not yet support it.\n\n\n const fetch2 = fetcherReturnToPromise(fetcher({\n query: _introspectionQueries.introspectionQuerySansSubscriptions,\n operationName: _introspectionQueries.introspectionQueryName\n }, fetcherOpts));\n\n if (!isPromise(fetch)) {\n throw new Error('Fetcher did not return a Promise for introspection.');\n }\n\n return fetch2;\n }).then(result => {\n // If a schema was provided while this fetch was underway, then\n // satisfy the race condition by respecting the already\n // provided schema.\n if (this.state.schema !== undefined) {\n return;\n }\n\n if (typeof result !== 'string' && 'data' in result) {\n const schema = (0, _graphql.buildClientSchema)(result.data);\n const queryFacts = (0, _getQueryFacts.default)(schema, this.state.query);\n this.safeSetState({\n schema,\n ...queryFacts\n });\n } else {\n const responseString = typeof result === 'string' ? result : GraphiQL.formatResult(result);\n this.safeSetState({\n // Set schema to `null` to explicitly indicate that no schema exists.\n schema: undefined,\n response: responseString\n });\n }\n }).catch(error => {\n this.safeSetState({\n schema: undefined,\n response: error ? GraphiQL.formatError(error) : undefined\n });\n });\n }\n\n async _fetchQuery(query, variables, headers, operationName, shouldPersistHeaders, cb) {\n const fetcher = this.props.fetcher;\n let jsonVariables = null;\n let jsonHeaders = null;\n\n try {\n jsonVariables = variables && variables.trim() !== '' ? JSON.parse(variables) : null;\n } catch (error) {\n throw new Error(`Variables are invalid JSON: ${error.message}.`);\n }\n\n if (typeof jsonVariables !== 'object') {\n throw new Error('Variables are not a JSON object.');\n }\n\n try {\n jsonHeaders = headers && headers.trim() !== '' ? JSON.parse(headers) : null;\n } catch (error) {\n throw new Error(`Headers are invalid JSON: ${error.message}.`);\n }\n\n if (typeof jsonHeaders !== 'object') {\n throw new Error('Headers are not a JSON object.');\n } // TODO: memoize this\n\n\n if (this.props.externalFragments) {\n const externalFragments = new Map();\n\n if (Array.isArray(this.props.externalFragments)) {\n this.props.externalFragments.forEach(def => {\n externalFragments.set(def.name.value, def);\n });\n } else {\n (0, _graphql.visit)((0, _graphql.parse)(this.props.externalFragments, {\n experimentalFragmentVariables: true\n }), {\n FragmentDefinition(def) {\n externalFragments.set(def.name.value, def);\n }\n\n });\n }\n\n const fragmentDependencies = (0, _graphqlLanguageServiceUtils.getFragmentDependenciesForAST)(this.state.documentAST, externalFragments);\n\n if (fragmentDependencies.length > 0) {\n query += '\\n' + fragmentDependencies.map(node => (0, _graphql.print)(node)).join('\\n');\n }\n }\n\n const fetch = fetcher({\n query,\n variables: jsonVariables,\n operationName\n }, {\n headers: jsonHeaders,\n shouldPersistHeaders,\n documentAST: this.state.documentAST\n });\n return Promise.resolve(fetch).then(value => {\n if (isObservable(value)) {\n // If the fetcher returned an Observable, then subscribe to it, calling\n // the callback on each next value, and handling both errors and the\n // completion of the Observable. Returns a Subscription object.\n const subscription = value.subscribe({\n next: cb,\n error: error => {\n this.safeSetState({\n isWaitingForResponse: false,\n response: error ? GraphiQL.formatError(error) : undefined,\n subscription: null\n });\n },\n complete: () => {\n this.safeSetState({\n isWaitingForResponse: false,\n subscription: null\n });\n }\n });\n return subscription;\n } else if (isAsyncIterable(value)) {\n (async () => {\n try {\n for await (const result of value) {\n cb(result);\n }\n\n this.safeSetState({\n isWaitingForResponse: false,\n subscription: null\n });\n } catch (error) {\n this.safeSetState({\n isWaitingForResponse: false,\n response: error ? GraphiQL.formatError(error) : undefined,\n subscription: null\n });\n }\n })();\n\n return {\n unsubscribe: () => {\n var _value$Symbol$asyncIt, _value$Symbol$asyncIt2;\n\n return (_value$Symbol$asyncIt = (_value$Symbol$asyncIt2 = value[Symbol.asyncIterator]()).return) === null || _value$Symbol$asyncIt === void 0 ? void 0 : _value$Symbol$asyncIt.call(_value$Symbol$asyncIt2);\n }\n };\n } else {\n cb(value);\n return null;\n }\n }).catch(error => {\n this.safeSetState({\n isWaitingForResponse: false,\n response: error ? GraphiQL.formatError(error) : undefined\n });\n return null;\n });\n }\n\n _runQueryAtCursor() {\n if (this.state.subscription) {\n this.handleStopQuery();\n return;\n }\n\n let operationName;\n const operations = this.state.operations;\n\n if (operations) {\n const editor = this.getQueryEditor();\n\n if (editor && editor.hasFocus()) {\n const cursor = editor.getCursor();\n const cursorIndex = editor.indexFromPos(cursor); // Loop through all operations to see if one contains the cursor.\n\n for (let i = 0; i < operations.length; i++) {\n const operation = operations[i];\n\n if (operation.loc && operation.loc.start <= cursorIndex && operation.loc.end >= cursorIndex) {\n operationName = operation.name && operation.name.value;\n break;\n }\n }\n }\n }\n\n this.handleRunQuery(operationName);\n }\n\n _didClickDragBar(event) {\n // Only for primary unmodified clicks\n if (event.button !== 0 || event.ctrlKey) {\n return false;\n }\n\n let target = event.target; // We use codemirror's gutter as the drag bar.\n\n if (target.className.indexOf('CodeMirror-gutter') !== 0) {\n return false;\n } // Specifically the result window's drag bar.\n\n\n const resultWindow = this.resultViewerElement;\n\n while (target) {\n if (target === resultWindow) {\n return true;\n }\n\n target = target.parentNode;\n }\n\n return false;\n }\n\n } // // Configure the UI by providing this Component as a child of GraphiQL.\n\n\n _exports.GraphiQL = GraphiQL;\n\n _defineProperty(GraphiQL, \"Logo\", GraphiQLLogo);\n\n _defineProperty(GraphiQL, \"Toolbar\", GraphiQLToolbar);\n\n _defineProperty(GraphiQL, \"Footer\", GraphiQLFooter);\n\n _defineProperty(GraphiQL, \"QueryEditor\", _QueryEditor.QueryEditor);\n\n _defineProperty(GraphiQL, \"VariableEditor\", _VariableEditor.VariableEditor);\n\n _defineProperty(GraphiQL, \"HeaderEditor\", _HeaderEditor.HeaderEditor);\n\n _defineProperty(GraphiQL, \"ResultViewer\", _ResultViewer.ResultViewer);\n\n _defineProperty(GraphiQL, \"Button\", _ToolbarButton.ToolbarButton);\n\n _defineProperty(GraphiQL, \"ToolbarButton\", _ToolbarButton.ToolbarButton);\n\n _defineProperty(GraphiQL, \"Group\", _ToolbarGroup.ToolbarGroup);\n\n _defineProperty(GraphiQL, \"Menu\", _ToolbarMenu.ToolbarMenu);\n\n _defineProperty(GraphiQL, \"MenuItem\", _ToolbarMenu.ToolbarMenuItem);\n\n function GraphiQLLogo(props) {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"title\"\n }, props.children || /*#__PURE__*/_react.default.createElement(\"span\", null, 'Graph', /*#__PURE__*/_react.default.createElement(\"em\", null, 'i'), 'QL'));\n }\n\n GraphiQLLogo.displayName = 'GraphiQLLogo'; // Configure the UI by providing this Component as a child of GraphiQL.\n\n function GraphiQLToolbar(props) {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"toolbar\",\n role: \"toolbar\",\n \"aria-label\": \"Editor Commands\"\n }, props.children);\n }\n\n GraphiQLToolbar.displayName = 'GraphiQLToolbar'; // Configure the UI by providing this Component as a child of GraphiQL.\n\n function GraphiQLFooter(props) {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"footer\"\n }, props.children);\n }\n\n GraphiQLFooter.displayName = 'GraphiQLFooter';\n\n const formatSingleError = error => ({ ...error,\n // Raise these details even if they're non-enumerable\n message: error.message,\n stack: error.stack\n });\n\n const defaultQuery = `# Welcome to GraphiQL\n#\n# GraphiQL is an in-browser tool for writing, validating, and\n# testing GraphQL queries.\n#\n# Type queries into this side of the screen, and you will see intelligent\n# typeaheads aware of the current GraphQL type schema and live syntax and\n# validation errors highlighted within the text.\n#\n# GraphQL queries typically start with a \"{\" character. Lines that start\n# with a # are ignored.\n#\n# An example GraphQL query might look like:\n#\n# {\n# field(arg: \"value\") {\n# subField\n# }\n# }\n#\n# Keyboard shortcuts:\n#\n# Prettify Query: Shift-Ctrl-P (or press the prettify button above)\n#\n# Merge Query: Shift-Ctrl-M (or press the merge button above)\n#\n# Run Query: Ctrl-Enter (or press the play button above)\n#\n# Auto Complete: Ctrl-Space (or just start typing)\n#\n\n`; // Duck-type promise detection.\n\n function isPromise(value) {\n return typeof value === 'object' && typeof value.then === 'function';\n } // Duck-type Observable.take(1).toPromise()\n\n\n function observableToPromise(observable) {\n return new Promise((resolve, reject) => {\n const subscription = observable.subscribe({\n next: v => {\n resolve(v);\n subscription.unsubscribe();\n },\n error: reject,\n complete: () => {\n reject(new Error('no value resolved'));\n }\n });\n });\n } // Duck-type observable detection.\n\n\n function isObservable(value) {\n return typeof value === 'object' && 'subscribe' in value && typeof value.subscribe === 'function';\n }\n\n function isAsyncIterable(input) {\n return typeof input === 'object' && input !== null && ( // Some browsers still don't have Symbol.asyncIterator implemented (iOS Safari)\n // That means every custom AsyncIterable must be built using a AsyncGeneratorFunction (async function * () {})\n input[Symbol.toStringTag] === 'AsyncGenerator' || Symbol.asyncIterator in input);\n }\n\n function asyncIterableToPromise(input) {\n return new Promise((resolve, reject) => {\n var _return;\n\n // Also support AsyncGenerator on Safari iOS.\n // As mentioned in the isAsyncIterable function there is no Symbol.asyncIterator available\n // so every AsyncIterable must be implemented using AsyncGenerator.\n const iteratorReturn = (_return = ('return' in input ? input : input[Symbol.asyncIterator]()).return) === null || _return === void 0 ? void 0 : _return.bind(input);\n const iteratorNext = ('next' in input ? input : input[Symbol.asyncIterator]()).next.bind(input);\n iteratorNext().then(result => {\n resolve(result.value); // ensure cleanup\n\n iteratorReturn === null || iteratorReturn === void 0 ? void 0 : iteratorReturn();\n }).catch(err => {\n reject(err);\n });\n });\n }\n\n function fetcherReturnToPromise(fetcherResult) {\n return Promise.resolve(fetcherResult).then(fetcherResult => {\n if (isAsyncIterable(fetcherResult)) {\n return asyncIterableToPromise(fetcherResult);\n } else if (isObservable(fetcherResult)) {\n return observableToPromise(fetcherResult);\n }\n\n return fetcherResult;\n });\n } // Determines if the React child is of the same type of the provided React component\n\n\n function isChildComponentType(child, component) {\n var _child$type;\n\n if (child !== null && child !== void 0 && (_child$type = child.type) !== null && _child$type !== void 0 && _child$type.displayName && child.type.displayName === component.displayName) {\n return true;\n }\n\n return child.type === component;\n }\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ \"../../../node_modules/webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0dyYXBoaVFMLnRzeC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY29tcG9uZW50cy9HcmFwaGlRTC50c3g/OTdkNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjAgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgUmVhY3QsIHtcbiAgQ29tcG9uZW50VHlwZSxcbiAgUHJvcHNXaXRoQ2hpbGRyZW4sXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBDb21wb25lbnQsXG4gIEZ1bmN0aW9uQ29tcG9uZW50LFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBidWlsZENsaWVudFNjaGVtYSxcbiAgR3JhcGhRTFNjaGVtYSxcbiAgcGFyc2UsXG4gIHByaW50LFxuICB2aXNpdCxcbiAgT3BlcmF0aW9uRGVmaW5pdGlvbk5vZGUsXG4gIEdyYXBoUUxUeXBlLFxuICBWYWxpZGF0aW9uUnVsZSxcbiAgRnJhZ21lbnREZWZpbml0aW9uTm9kZSxcbiAgRG9jdW1lbnROb2RlLFxufSBmcm9tICdncmFwaHFsJztcbmltcG9ydCBjb3B5VG9DbGlwYm9hcmQgZnJvbSAnY29weS10by1jbGlwYm9hcmQnO1xuaW1wb3J0IHsgZ2V0RnJhZ21lbnREZXBlbmRlbmNpZXNGb3JBU1QgfSBmcm9tICdncmFwaHFsLWxhbmd1YWdlLXNlcnZpY2UtdXRpbHMnO1xuXG5pbXBvcnQgeyBFeGVjdXRlQnV0dG9uIH0gZnJvbSAnLi9FeGVjdXRlQnV0dG9uJztcbmltcG9ydCB7IEltYWdlUHJldmlldyB9IGZyb20gJy4vSW1hZ2VQcmV2aWV3JztcbmltcG9ydCB7IFRvb2xiYXJCdXR0b24gfSBmcm9tICcuL1Rvb2xiYXJCdXR0b24nO1xuaW1wb3J0IHsgVG9vbGJhckdyb3VwIH0gZnJvbSAnLi9Ub29sYmFyR3JvdXAnO1xuaW1wb3J0IHsgVG9vbGJhck1lbnUsIFRvb2xiYXJNZW51SXRlbSB9IGZyb20gJy4vVG9vbGJhck1lbnUnO1xuaW1wb3J0IHsgUXVlcnlFZGl0b3IgfSBmcm9tICcuL1F1ZXJ5RWRpdG9yJztcbmltcG9ydCB7IFZhcmlhYmxlRWRpdG9yIH0gZnJvbSAnLi9WYXJpYWJsZUVkaXRvcic7XG5pbXBvcnQgeyBIZWFkZXJFZGl0b3IgfSBmcm9tICcuL0hlYWRlckVkaXRvcic7XG5pbXBvcnQgeyBSZXN1bHRWaWV3ZXIgfSBmcm9tICcuL1Jlc3VsdFZpZXdlcic7XG5pbXBvcnQgeyBEb2NFeHBsb3JlciB9IGZyb20gJy4vRG9jRXhwbG9yZXInO1xuaW1wb3J0IHsgUXVlcnlIaXN0b3J5IH0gZnJvbSAnLi9RdWVyeUhpc3RvcnknO1xuaW1wb3J0IENvZGVNaXJyb3JTaXplciBmcm9tICcuLi91dGlsaXR5L0NvZGVNaXJyb3JTaXplcic7XG5pbXBvcnQgU3RvcmFnZUFQSSwgeyBTdG9yYWdlIH0gZnJvbSAnLi4vdXRpbGl0eS9TdG9yYWdlQVBJJztcbmltcG9ydCBnZXRPcGVyYXRpb25GYWN0cywgeyBWYXJpYWJsZVRvVHlwZSB9IGZyb20gJy4uL3V0aWxpdHkvZ2V0UXVlcnlGYWN0cyc7XG5pbXBvcnQgZ2V0U2VsZWN0ZWRPcGVyYXRpb25OYW1lIGZyb20gJy4uL3V0aWxpdHkvZ2V0U2VsZWN0ZWRPcGVyYXRpb25OYW1lJztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICcuLi91dGlsaXR5L2RlYm91bmNlJztcbmltcG9ydCBmaW5kIGZyb20gJy4uL3V0aWxpdHkvZmluZCc7XG5pbXBvcnQgeyBHZXREZWZhdWx0RmllbGROYW1lc0ZuLCBmaWxsTGVhZnMgfSBmcm9tICcuLi91dGlsaXR5L2ZpbGxMZWFmcyc7XG5pbXBvcnQgeyBnZXRMZWZ0LCBnZXRUb3AgfSBmcm9tICcuLi91dGlsaXR5L2VsZW1lbnRQb3NpdGlvbic7XG5pbXBvcnQgbWVyZ2VBU1QgZnJvbSAnLi4vdXRpbGl0eS9tZXJnZUFzdCc7XG5pbXBvcnQge1xuICBpbnRyb3NwZWN0aW9uUXVlcnksXG4gIGludHJvc3BlY3Rpb25RdWVyeU5hbWUsXG4gIGludHJvc3BlY3Rpb25RdWVyeVNhbnNTdWJzY3JpcHRpb25zLFxufSBmcm9tICcuLi91dGlsaXR5L2ludHJvc3BlY3Rpb25RdWVyaWVzJztcbmltcG9ydCB7IGRzZXQgfSBmcm9tICdkc2V0L21lcmdlJztcblxuaW1wb3J0IHR5cGUge1xuICBGZXRjaGVyLFxuICBGZXRjaGVyUmVzdWx0LFxuICBGZXRjaGVyUmV0dXJuVHlwZSxcbiAgRmV0Y2hlck9wdHMsXG4gIFN5bmNGZXRjaGVyUmVzdWx0LFxuICBPYnNlcnZhYmxlLFxuICBVbnN1YnNjcmliYWJsZSxcbiAgRmV0Y2hlclJlc3VsdFBheWxvYWQsXG59IGZyb20gJ0BncmFwaGlxbC90b29sa2l0JztcblxuY29uc3QgREVGQVVMVF9ET0NfRVhQTE9SRVJfV0lEVEggPSAzNTA7XG5cbmNvbnN0IG1ham9yVmVyc2lvbiA9IHBhcnNlSW50KFJlYWN0LnZlcnNpb24uc2xpY2UoMCwgMiksIDEwKTtcblxuaWYgKG1ham9yVmVyc2lvbiA8IDE2KSB7XG4gIHRocm93IEVycm9yKFxuICAgIFtcbiAgICAgICdHcmFwaGlRTCAwLjE4LjAgYW5kIGFmdGVyIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggUmVhY3QgMTUgb3IgYmVsb3cuJyxcbiAgICAgICdJZiB5b3UgYXJlIHVzaW5nIGEgQ0ROIHNvdXJjZSAoanNkZWxpdnIsIHVucGtnLCBldGMpLCBmb2xsb3cgdGhpcyBleGFtcGxlOicsXG4gICAgICAnaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhpcWwvYmxvYi9tYXN0ZXIvZXhhbXBsZXMvZ3JhcGhpcWwtY2RuL2luZGV4Lmh0bWwjTDQ5JyxcbiAgICBdLmpvaW4oJ1xcbicpLFxuICApO1xufVxuXG5kZWNsYXJlIG5hbWVzcGFjZSBnbG9iYWwge1xuICBleHBvcnQgbGV0IGc6IEdyYXBoaVFMO1xufVxuXG5leHBvcnQgdHlwZSBNYXliZTxUPiA9IFQgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG50eXBlIE9uTW91c2VNb3ZlRm4gPSBNYXliZTxcbiAgKG1vdmVFdmVudDogTW91c2VFdmVudCB8IFJlYWN0Lk1vdXNlRXZlbnQ8RWxlbWVudD4pID0+IHZvaWRcbj47XG50eXBlIE9uTW91c2VVcEZuID0gTWF5YmU8KCkgPT4gdm9pZD47XG5cbmV4cG9ydCB0eXBlIEdyYXBoaVFMVG9vbGJhckNvbmZpZyA9IHtcbiAgYWRkaXRpb25hbENvbnRlbnQ/OiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgdHlwZSBHcmFwaGlRTFByb3BzID0ge1xuICBmZXRjaGVyOiBGZXRjaGVyO1xuICBzY2hlbWE/OiBHcmFwaFFMU2NoZW1hO1xuICB2YWxpZGF0aW9uUnVsZXM/OiBWYWxpZGF0aW9uUnVsZVtdO1xuICBxdWVyeT86IHN0cmluZztcbiAgdmFyaWFibGVzPzogc3RyaW5nO1xuICBoZWFkZXJzPzogc3RyaW5nO1xuICBvcGVyYXRpb25OYW1lPzogc3RyaW5nO1xuICByZXNwb25zZT86IHN0cmluZztcbiAgc3RvcmFnZT86IFN0b3JhZ2U7XG4gIGRlZmF1bHRRdWVyeT86IHN0cmluZztcbiAgZGVmYXVsdFZhcmlhYmxlRWRpdG9yT3Blbj86IGJvb2xlYW47XG4gIGRlZmF1bHRTZWNvbmRhcnlFZGl0b3JPcGVuPzogYm9vbGVhbjtcbiAgaGVhZGVyRWRpdG9yRW5hYmxlZD86IGJvb2xlYW47XG4gIHNob3VsZFBlcnNpc3RIZWFkZXJzPzogYm9vbGVhbjtcbiAgZXh0ZXJuYWxGcmFnbWVudHM/OiBzdHJpbmcgfCBGcmFnbWVudERlZmluaXRpb25Ob2RlW107XG4gIG9uQ29weVF1ZXJ5PzogKHF1ZXJ5Pzogc3RyaW5nKSA9PiB2b2lkO1xuICBvbkVkaXRRdWVyeT86IChxdWVyeT86IHN0cmluZywgZG9jdW1lbnRBU1Q/OiBEb2N1bWVudE5vZGUpID0+IHZvaWQ7XG4gIG9uRWRpdFZhcmlhYmxlcz86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBvbkVkaXRIZWFkZXJzPzogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uRWRpdE9wZXJhdGlvbk5hbWU/OiAob3BlcmF0aW9uTmFtZTogc3RyaW5nKSA9PiB2b2lkO1xuICBvblRvZ2dsZURvY3M/OiAoZG9jRXhwbG9yZXJPcGVuOiBib29sZWFuKSA9PiB2b2lkO1xuICBnZXREZWZhdWx0RmllbGROYW1lcz86IEdldERlZmF1bHRGaWVsZE5hbWVzRm47XG4gIGVkaXRvclRoZW1lPzogc3RyaW5nO1xuICBvblRvZ2dsZUhpc3Rvcnk/OiAoaGlzdG9yeVBhbmVPcGVuOiBib29sZWFuKSA9PiB2b2lkO1xuICBSZXN1bHRzVG9vbHRpcD86IHR5cGVvZiBDb21wb25lbnQgfCBGdW5jdGlvbkNvbXBvbmVudDtcbiAgcmVhZE9ubHk/OiBib29sZWFuO1xuICBkb2NFeHBsb3Jlck9wZW4/OiBib29sZWFuO1xuICB0b29sYmFyPzogR3JhcGhpUUxUb29sYmFyQ29uZmlnO1xufTtcblxuZXhwb3J0IHR5cGUgR3JhcGhpUUxTdGF0ZSA9IHtcbiAgc2NoZW1hPzogR3JhcGhRTFNjaGVtYTtcbiAgcXVlcnk/OiBzdHJpbmc7XG4gIHZhcmlhYmxlcz86IHN0cmluZztcbiAgaGVhZGVycz86IHN0cmluZztcbiAgb3BlcmF0aW9uTmFtZT86IHN0cmluZztcbiAgZG9jRXhwbG9yZXJPcGVuOiBib29sZWFuO1xuICByZXNwb25zZT86IHN0cmluZztcbiAgZWRpdG9yRmxleDogbnVtYmVyO1xuICBzZWNvbmRhcnlFZGl0b3JPcGVuOiBib29sZWFuO1xuICBzZWNvbmRhcnlFZGl0b3JIZWlnaHQ6IG51bWJlcjtcbiAgdmFyaWFibGVFZGl0b3JBY3RpdmU6IGJvb2xlYW47XG4gIGhlYWRlckVkaXRvckFjdGl2ZTogYm9vbGVhbjtcbiAgaGVhZGVyRWRpdG9yRW5hYmxlZDogYm9vbGVhbjtcbiAgc2hvdWxkUGVyc2lzdEhlYWRlcnM6IGJvb2xlYW47XG4gIGhpc3RvcnlQYW5lT3BlbjogYm9vbGVhbjtcbiAgZG9jRXhwbG9yZXJXaWR0aDogbnVtYmVyO1xuICBpc1dhaXRpbmdGb3JSZXNwb25zZTogYm9vbGVhbjtcbiAgc3Vic2NyaXB0aW9uPzogVW5zdWJzY3JpYmFibGUgfCBudWxsO1xuICB2YXJpYWJsZVRvVHlwZT86IFZhcmlhYmxlVG9UeXBlO1xuICBvcGVyYXRpb25zPzogT3BlcmF0aW9uRGVmaW5pdGlvbk5vZGVbXTtcbiAgZG9jdW1lbnRBU1Q/OiBEb2N1bWVudE5vZGU7XG59O1xuXG4vKipcbiAqIFRoZSB0b3AtbGV2ZWwgUmVhY3QgY29tcG9uZW50IGZvciBHcmFwaGlRTCwgaW50ZW5kZWQgdG8gZW5jb21wYXNzIHRoZSBlbnRpcmVcbiAqIGJyb3dzZXIgdmlld3BvcnQuXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaGlxbCN1c2FnZVxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhpUUwgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8R3JhcGhpUUxQcm9wcywgR3JhcGhpUUxTdGF0ZT4ge1xuICAvKipcbiAgICogU3RhdGljIE1ldGhvZHNcbiAgICovXG4gIHN0YXRpYyBmb3JtYXRSZXN1bHQocmVzdWx0OiBhbnkpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JtYXRFcnJvcihyYXdFcnJvcjogRXJyb3IpIHtcbiAgICBjb25zdCByZXN1bHQgPSBBcnJheS5pc0FycmF5KHJhd0Vycm9yKVxuICAgICAgPyByYXdFcnJvci5tYXAoZm9ybWF0U2luZ2xlRXJyb3IpXG4gICAgICA6IGZvcm1hdFNpbmdsZUVycm9yKHJhd0Vycm9yKTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKTtcbiAgfVxuXG4gIC8vIEVuc3VyZSBvbmx5IHRoZSBsYXN0IGV4ZWN1dGVkIGVkaXRvciBxdWVyeSBpcyByZW5kZXJlZC5cbiAgX2VkaXRvclF1ZXJ5SUQgPSAwO1xuICBfc3RvcmFnZTogU3RvcmFnZUFQSTtcblxuICBjb2RlTWlycm9yU2l6ZXIhOiBDb2RlTWlycm9yU2l6ZXI7XG4gIC8vIEVuc3VyZSB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQgdG8gZXhlY3V0ZSBhc3luYyBzZXRTdGF0ZVxuICBjb21wb25lbnRJc01vdW50ZWQ6IGJvb2xlYW47XG5cbiAgLy8gcmVmc1xuICBkb2NFeHBsb3JlckNvbXBvbmVudDogTWF5YmU8RG9jRXhwbG9yZXI+O1xuICBncmFwaGlxbENvbnRhaW5lcjogTWF5YmU8SFRNTERpdkVsZW1lbnQ+O1xuICByZXN1bHRDb21wb25lbnQ6IE1heWJlPFJlc3VsdFZpZXdlcj47XG4gIHZhcmlhYmxlRWRpdG9yQ29tcG9uZW50OiBNYXliZTxWYXJpYWJsZUVkaXRvcj47XG4gIGhlYWRlckVkaXRvckNvbXBvbmVudDogTWF5YmU8SGVhZGVyRWRpdG9yPjtcbiAgX3F1ZXJ5SGlzdG9yeTogTWF5YmU8UXVlcnlIaXN0b3J5PjtcbiAgZWRpdG9yQmFyQ29tcG9uZW50OiBNYXliZTxIVE1MRGl2RWxlbWVudD47XG4gIHF1ZXJ5RWRpdG9yQ29tcG9uZW50OiBNYXliZTxRdWVyeUVkaXRvcj47XG4gIHJlc3VsdFZpZXdlckVsZW1lbnQ6IE1heWJlPEhUTUxFbGVtZW50PjtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogR3JhcGhpUUxQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIC8vIEVuc3VyZSBwcm9wcyBhcmUgY29ycmVjdFxuICAgIGlmICh0eXBlb2YgcHJvcHMuZmV0Y2hlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignR3JhcGhpUUwgcmVxdWlyZXMgYSBmZXRjaGVyIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIC8vIENhY2hlIHRoZSBzdG9yYWdlIGluc3RhbmNlXG4gICAgdGhpcy5fc3RvcmFnZSA9IG5ldyBTdG9yYWdlQVBJKHByb3BzLnN0b3JhZ2UpO1xuXG4gICAgLy8gRGlzYWJsZSBzZXRTdGF0ZSB3aGVuIHRoZSBjb21wb25lbnQgaXMgbm90IG1vdW50ZWRcbiAgICB0aGlzLmNvbXBvbmVudElzTW91bnRlZCA9IGZhbHNlO1xuXG4gICAgLy8gRGV0ZXJtaW5lIHRoZSBpbml0aWFsIHF1ZXJ5IHRvIGRpc3BsYXkuXG4gICAgY29uc3QgcXVlcnkgPVxuICAgICAgcHJvcHMucXVlcnkgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IHByb3BzLnF1ZXJ5XG4gICAgICAgIDogdGhpcy5fc3RvcmFnZS5nZXQoJ3F1ZXJ5JylcbiAgICAgICAgPyAodGhpcy5fc3RvcmFnZS5nZXQoJ3F1ZXJ5JykgYXMgc3RyaW5nKVxuICAgICAgICA6IHByb3BzLmRlZmF1bHRRdWVyeSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gcHJvcHMuZGVmYXVsdFF1ZXJ5XG4gICAgICAgIDogZGVmYXVsdFF1ZXJ5O1xuXG4gICAgLy8gR2V0IHRoZSBpbml0aWFsIHF1ZXJ5IGZhY3RzLlxuICAgIGNvbnN0IHF1ZXJ5RmFjdHMgPSBnZXRPcGVyYXRpb25GYWN0cyhwcm9wcy5zY2hlbWEsIHF1ZXJ5KTtcbiAgICAvLyBEZXRlcm1pbmUgdGhlIGluaXRpYWwgdmFyaWFibGVzIHRvIGRpc3BsYXkuXG4gICAgY29uc3QgdmFyaWFibGVzID1cbiAgICAgIHByb3BzLnZhcmlhYmxlcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gcHJvcHMudmFyaWFibGVzXG4gICAgICAgIDogdGhpcy5fc3RvcmFnZS5nZXQoJ3ZhcmlhYmxlcycpO1xuXG4gICAgLy8gRGV0ZXJtaW5lIHRoZSBpbml0aWFsIGhlYWRlcnMgdG8gZGlzcGxheS5cbiAgICBjb25zdCBoZWFkZXJzID1cbiAgICAgIHByb3BzLmhlYWRlcnMgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IHByb3BzLmhlYWRlcnNcbiAgICAgICAgOiB0aGlzLl9zdG9yYWdlLmdldCgnaGVhZGVycycpO1xuXG4gICAgLy8gRGV0ZXJtaW5lIHRoZSBpbml0aWFsIG9wZXJhdGlvbk5hbWUgdG8gdXNlLlxuICAgIGNvbnN0IG9wZXJhdGlvbk5hbWUgPVxuICAgICAgcHJvcHMub3BlcmF0aW9uTmFtZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gcHJvcHMub3BlcmF0aW9uTmFtZVxuICAgICAgICA6IGdldFNlbGVjdGVkT3BlcmF0aW9uTmFtZShcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRoaXMuX3N0b3JhZ2UuZ2V0KCdvcGVyYXRpb25OYW1lJykgYXMgc3RyaW5nLFxuICAgICAgICAgICAgcXVlcnlGYWN0cyAmJiBxdWVyeUZhY3RzLm9wZXJhdGlvbnMsXG4gICAgICAgICAgKTtcblxuICAgIC8vIHByb3AgY2FuIGJlIHN1cHBsaWVkIHRvIG9wZW4gZG9jRXhwbG9yZXIgaW5pdGlhbGx5XG4gICAgbGV0IGRvY0V4cGxvcmVyT3BlbiA9IHByb3BzLmRvY0V4cGxvcmVyT3BlbiB8fCBmYWxzZTtcblxuICAgIC8vIGJ1dCB0aGVuIGxvY2FsIHN0b3JhZ2Ugc3RhdGUgb3ZlcnJpZGVzIGl0XG4gICAgaWYgKHRoaXMuX3N0b3JhZ2UuZ2V0KCdkb2NFeHBsb3Jlck9wZW4nKSkge1xuICAgICAgZG9jRXhwbG9yZXJPcGVuID0gdGhpcy5fc3RvcmFnZS5nZXQoJ2RvY0V4cGxvcmVyT3BlbicpID09PSAndHJ1ZSc7XG4gICAgfVxuXG4gICAgLy8gaW5pdGlhbCBzZWNvbmRhcnkgZWRpdG9yIHBhbmUgb3BlblxuICAgIGxldCBzZWNvbmRhcnlFZGl0b3JPcGVuO1xuICAgIGlmIChwcm9wcy5kZWZhdWx0VmFyaWFibGVFZGl0b3JPcGVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNlY29uZGFyeUVkaXRvck9wZW4gPSBwcm9wcy5kZWZhdWx0VmFyaWFibGVFZGl0b3JPcGVuO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuZGVmYXVsdFNlY29uZGFyeUVkaXRvck9wZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2Vjb25kYXJ5RWRpdG9yT3BlbiA9IHByb3BzLmRlZmF1bHRTZWNvbmRhcnlFZGl0b3JPcGVuO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWNvbmRhcnlFZGl0b3JPcGVuID0gQm9vbGVhbih2YXJpYWJsZXMgfHwgaGVhZGVycyk7XG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGVyRWRpdG9yRW5hYmxlZCA9IHByb3BzLmhlYWRlckVkaXRvckVuYWJsZWQgPz8gZmFsc2U7XG4gICAgY29uc3Qgc2hvdWxkUGVyc2lzdEhlYWRlcnMgPSBwcm9wcy5zaG91bGRQZXJzaXN0SGVhZGVycyA/PyBmYWxzZTtcblxuICAgIC8vIEluaXRpYWxpemUgc3RhdGVcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgc2NoZW1hOiBwcm9wcy5zY2hlbWEsXG4gICAgICBxdWVyeSxcbiAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzIGFzIHN0cmluZyxcbiAgICAgIGhlYWRlcnM6IGhlYWRlcnMgYXMgc3RyaW5nLFxuICAgICAgb3BlcmF0aW9uTmFtZSxcbiAgICAgIGRvY0V4cGxvcmVyT3BlbixcbiAgICAgIHJlc3BvbnNlOiBwcm9wcy5yZXNwb25zZSxcbiAgICAgIGVkaXRvckZsZXg6IE51bWJlcih0aGlzLl9zdG9yYWdlLmdldCgnZWRpdG9yRmxleCcpKSB8fCAxLFxuICAgICAgc2Vjb25kYXJ5RWRpdG9yT3BlbixcbiAgICAgIHNlY29uZGFyeUVkaXRvckhlaWdodDpcbiAgICAgICAgTnVtYmVyKHRoaXMuX3N0b3JhZ2UuZ2V0KCdzZWNvbmRhcnlFZGl0b3JIZWlnaHQnKSkgfHwgMjAwLFxuICAgICAgdmFyaWFibGVFZGl0b3JBY3RpdmU6XG4gICAgICAgIHRoaXMuX3N0b3JhZ2UuZ2V0KCd2YXJpYWJsZUVkaXRvckFjdGl2ZScpID09PSAndHJ1ZScgfHxcbiAgICAgICAgcHJvcHMuaGVhZGVyRWRpdG9yRW5hYmxlZFxuICAgICAgICAgID8gdGhpcy5fc3RvcmFnZS5nZXQoJ2hlYWRlckVkaXRvckFjdGl2ZScpICE9PSAndHJ1ZSdcbiAgICAgICAgICA6IHRydWUsXG4gICAgICBoZWFkZXJFZGl0b3JBY3RpdmU6IHRoaXMuX3N0b3JhZ2UuZ2V0KCdoZWFkZXJFZGl0b3JBY3RpdmUnKSA9PT0gJ3RydWUnLFxuICAgICAgaGVhZGVyRWRpdG9yRW5hYmxlZCxcbiAgICAgIHNob3VsZFBlcnNpc3RIZWFkZXJzLFxuICAgICAgaGlzdG9yeVBhbmVPcGVuOiB0aGlzLl9zdG9yYWdlLmdldCgnaGlzdG9yeVBhbmVPcGVuJykgPT09ICd0cnVlJyB8fCBmYWxzZSxcbiAgICAgIGRvY0V4cGxvcmVyV2lkdGg6XG4gICAgICAgIE51bWJlcih0aGlzLl9zdG9yYWdlLmdldCgnZG9jRXhwbG9yZXJXaWR0aCcpKSB8fFxuICAgICAgICBERUZBVUxUX0RPQ19FWFBMT1JFUl9XSURUSCxcbiAgICAgIGlzV2FpdGluZ0ZvclJlc3BvbnNlOiBmYWxzZSxcbiAgICAgIHN1YnNjcmlwdGlvbjogbnVsbCxcbiAgICAgIC4uLnF1ZXJ5RmFjdHMsXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIC8vIEFsbG93IGFzeW5jIHN0YXRlIGNoYW5nZXNcbiAgICB0aGlzLmNvbXBvbmVudElzTW91bnRlZCA9IHRydWU7XG5cbiAgICAvLyBPbmx5IGZldGNoIHNjaGVtYSB2aWEgaW50cm9zcGVjdGlvbiBpZiBhIHNjaGVtYSBoYXMgbm90IGJlZW5cbiAgICAvLyBwcm92aWRlZCwgaW5jbHVkaW5nIGlmIGBudWxsYCB3YXMgcHJvdmlkZWQuXG4gICAgaWYgKHRoaXMuc3RhdGUuc2NoZW1hID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZmV0Y2hTY2hlbWEoKTtcbiAgICB9XG5cbiAgICAvLyBVdGlsaXR5IGZvciBrZWVwaW5nIENvZGVNaXJyb3IgY29ycmVjdGx5IHNpemVkLlxuICAgIHRoaXMuY29kZU1pcnJvclNpemVyID0gbmV3IENvZGVNaXJyb3JTaXplcigpO1xuXG4gICAgZ2xvYmFsLmcgPSB0aGlzO1xuICB9XG4gIFVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSB7XG4gICAgdGhpcy5jb21wb25lbnRJc01vdW50ZWQgPSBmYWxzZTtcbiAgfVxuICAvLyBUT0RPOiB0aGVzZSB2YWx1ZXMgc2hvdWxkIGJlIHVwZGF0ZWQgaW4gYSByZWR1Y2VyIGltb1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2FtZWxjYXNlXG4gIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wczogR3JhcGhpUUxQcm9wcykge1xuICAgIGxldCBuZXh0U2NoZW1hID0gdGhpcy5zdGF0ZS5zY2hlbWE7XG4gICAgbGV0IG5leHRRdWVyeSA9IHRoaXMuc3RhdGUucXVlcnk7XG4gICAgbGV0IG5leHRWYXJpYWJsZXMgPSB0aGlzLnN0YXRlLnZhcmlhYmxlcztcbiAgICBsZXQgbmV4dEhlYWRlcnMgPSB0aGlzLnN0YXRlLmhlYWRlcnM7XG4gICAgbGV0IG5leHRPcGVyYXRpb25OYW1lID0gdGhpcy5zdGF0ZS5vcGVyYXRpb25OYW1lO1xuICAgIGxldCBuZXh0UmVzcG9uc2UgPSB0aGlzLnN0YXRlLnJlc3BvbnNlO1xuXG4gICAgaWYgKG5leHRQcm9wcy5zY2hlbWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbmV4dFNjaGVtYSA9IG5leHRQcm9wcy5zY2hlbWE7XG4gICAgfVxuICAgIGlmIChuZXh0UHJvcHMucXVlcnkgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnByb3BzLnF1ZXJ5ICE9PSBuZXh0UHJvcHMucXVlcnkpIHtcbiAgICAgIG5leHRRdWVyeSA9IG5leHRQcm9wcy5xdWVyeTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbmV4dFByb3BzLnZhcmlhYmxlcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLnByb3BzLnZhcmlhYmxlcyAhPT0gbmV4dFByb3BzLnZhcmlhYmxlc1xuICAgICkge1xuICAgICAgbmV4dFZhcmlhYmxlcyA9IG5leHRQcm9wcy52YXJpYWJsZXM7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIG5leHRQcm9wcy5oZWFkZXJzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMucHJvcHMuaGVhZGVycyAhPT0gbmV4dFByb3BzLmhlYWRlcnNcbiAgICApIHtcbiAgICAgIG5leHRIZWFkZXJzID0gbmV4dFByb3BzLmhlYWRlcnM7XG4gICAgfVxuICAgIGlmIChuZXh0UHJvcHMub3BlcmF0aW9uTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXh0T3BlcmF0aW9uTmFtZSA9IG5leHRQcm9wcy5vcGVyYXRpb25OYW1lO1xuICAgIH1cbiAgICBpZiAobmV4dFByb3BzLnJlc3BvbnNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG5leHRSZXNwb25zZSA9IG5leHRQcm9wcy5yZXNwb25zZTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbmV4dFF1ZXJ5ICYmXG4gICAgICBuZXh0U2NoZW1hICYmXG4gICAgICAobmV4dFNjaGVtYSAhPT0gdGhpcy5zdGF0ZS5zY2hlbWEgfHxcbiAgICAgICAgbmV4dFF1ZXJ5ICE9PSB0aGlzLnN0YXRlLnF1ZXJ5IHx8XG4gICAgICAgIG5leHRPcGVyYXRpb25OYW1lICE9PSB0aGlzLnN0YXRlLm9wZXJhdGlvbk5hbWUpXG4gICAgKSB7XG4gICAgICBjb25zdCB1cGRhdGVkUXVlcnlBdHRyaWJ1dGVzID0gdGhpcy5fdXBkYXRlUXVlcnlGYWN0cyhcbiAgICAgICAgbmV4dFF1ZXJ5LFxuICAgICAgICBuZXh0T3BlcmF0aW9uTmFtZSxcbiAgICAgICAgdGhpcy5zdGF0ZS5vcGVyYXRpb25zLFxuICAgICAgICBuZXh0U2NoZW1hLFxuICAgICAgKTtcblxuICAgICAgaWYgKHVwZGF0ZWRRdWVyeUF0dHJpYnV0ZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXh0T3BlcmF0aW9uTmFtZSA9IHVwZGF0ZWRRdWVyeUF0dHJpYnV0ZXMub3BlcmF0aW9uTmFtZTtcblxuICAgICAgICB0aGlzLnNldFN0YXRlKHVwZGF0ZWRRdWVyeUF0dHJpYnV0ZXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHNjaGVtYSBpcyBub3Qgc3VwcGxpZWQgdmlhIHByb3BzIGFuZCB0aGUgZmV0Y2hlciBjaGFuZ2VkLCB0aGVuXG4gICAgLy8gcmVtb3ZlIHRoZSBzY2hlbWEgc28gZmV0Y2hTY2hlbWEoKSB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBuZXcgZmV0Y2hlci5cbiAgICBpZiAoXG4gICAgICBuZXh0UHJvcHMuc2NoZW1hID09PSB1bmRlZmluZWQgJiZcbiAgICAgIG5leHRQcm9wcy5mZXRjaGVyICE9PSB0aGlzLnByb3BzLmZldGNoZXJcbiAgICApIHtcbiAgICAgIG5leHRTY2hlbWEgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMuX3N0b3JhZ2Uuc2V0KCdvcGVyYXRpb25OYW1lJywgbmV4dE9wZXJhdGlvbk5hbWUgYXMgc3RyaW5nKTtcbiAgICB0aGlzLnNldFN0YXRlKFxuICAgICAge1xuICAgICAgICBzY2hlbWE6IG5leHRTY2hlbWEsXG4gICAgICAgIHF1ZXJ5OiBuZXh0UXVlcnksXG4gICAgICAgIHZhcmlhYmxlczogbmV4dFZhcmlhYmxlcyxcbiAgICAgICAgaGVhZGVyczogbmV4dEhlYWRlcnMsXG4gICAgICAgIG9wZXJhdGlvbk5hbWU6IG5leHRPcGVyYXRpb25OYW1lLFxuICAgICAgICByZXNwb25zZTogbmV4dFJlc3BvbnNlLFxuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuc2NoZW1hID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAodGhpcy5kb2NFeHBsb3JlckNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5kb2NFeHBsb3JlckNvbXBvbmVudC5yZXNldCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZmV0Y2hTY2hlbWEoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIC8vIElmIHRoaXMgdXBkYXRlIGNhdXNlZCBET00gbm9kZXMgdG8gaGF2ZSBjaGFuZ2VkIHNpemVzLCB1cGRhdGUgdGhlXG4gICAgLy8gY29ycmVzcG9uZGluZyBDb2RlTWlycm9yIGluc3RhbmNlIHNpemVzIHRvIG1hdGNoLlxuICAgIHRoaXMuY29kZU1pcnJvclNpemVyLnVwZGF0ZVNpemVzKFtcbiAgICAgIHRoaXMucXVlcnlFZGl0b3JDb21wb25lbnQsXG4gICAgICB0aGlzLnZhcmlhYmxlRWRpdG9yQ29tcG9uZW50LFxuICAgICAgdGhpcy5oZWFkZXJFZGl0b3JDb21wb25lbnQsXG4gICAgICB0aGlzLnJlc3VsdENvbXBvbmVudCxcbiAgICBdKTtcbiAgfVxuXG4gIC8vIFVzZSBpdCB3aGVuIHRoZSBzdGF0ZSBjaGFuZ2UgaXMgYXN5bmNcbiAgLy8gVE9ETzogQW5ub3RhdGUgY29ycmVjdGx5IHRoaXMgZnVuY3Rpb25cbiAgc2FmZVNldFN0YXRlID0gKG5leHRTdGF0ZTogYW55LCBjYWxsYmFjaz86IGFueSk6IHZvaWQgPT4ge1xuICAgIHRoaXMuY29tcG9uZW50SXNNb3VudGVkICYmIHRoaXMuc2V0U3RhdGUobmV4dFN0YXRlLCBjYWxsYmFjayk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gUmVhY3QuQ2hpbGRyZW4udG9BcnJheSh0aGlzLnByb3BzLmNoaWxkcmVuKTtcblxuICAgIGNvbnN0IGxvZ28gPSBmaW5kKGNoaWxkcmVuLCBjaGlsZCA9PlxuICAgICAgaXNDaGlsZENvbXBvbmVudFR5cGUoY2hpbGQsIEdyYXBoaVFMLkxvZ28pLFxuICAgICkgfHwgPEdyYXBoaVFMLkxvZ28gLz47XG5cbiAgICBjb25zdCB0b29sYmFyID0gZmluZChjaGlsZHJlbiwgY2hpbGQgPT5cbiAgICAgIGlzQ2hpbGRDb21wb25lbnRUeXBlKGNoaWxkLCBHcmFwaGlRTC5Ub29sYmFyKSxcbiAgICApIHx8IChcbiAgICAgIDxHcmFwaGlRTC5Ub29sYmFyPlxuICAgICAgICA8VG9vbGJhckJ1dHRvblxuICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlUHJldHRpZnlRdWVyeX1cbiAgICAgICAgICB0aXRsZT1cIlByZXR0aWZ5IFF1ZXJ5IChTaGlmdC1DdHJsLVApXCJcbiAgICAgICAgICBsYWJlbD1cIlByZXR0aWZ5XCJcbiAgICAgICAgLz5cbiAgICAgICAgPFRvb2xiYXJCdXR0b25cbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLmhhbmRsZU1lcmdlUXVlcnl9XG4gICAgICAgICAgdGl0bGU9XCJNZXJnZSBRdWVyeSAoU2hpZnQtQ3RybC1NKVwiXG4gICAgICAgICAgbGFiZWw9XCJNZXJnZVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxUb29sYmFyQnV0dG9uXG4gICAgICAgICAgb25DbGljaz17dGhpcy5oYW5kbGVDb3B5UXVlcnl9XG4gICAgICAgICAgdGl0bGU9XCJDb3B5IFF1ZXJ5IChTaGlmdC1DdHJsLUMpXCJcbiAgICAgICAgICBsYWJlbD1cIkNvcHlcIlxuICAgICAgICAvPlxuICAgICAgICA8VG9vbGJhckJ1dHRvblxuICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlVG9nZ2xlSGlzdG9yeX1cbiAgICAgICAgICB0aXRsZT1cIlNob3cgSGlzdG9yeVwiXG4gICAgICAgICAgbGFiZWw9XCJIaXN0b3J5XCJcbiAgICAgICAgLz5cbiAgICAgICAge3RoaXMucHJvcHMudG9vbGJhcj8uYWRkaXRpb25hbENvbnRlbnRcbiAgICAgICAgICA/IHRoaXMucHJvcHMudG9vbGJhci5hZGRpdGlvbmFsQ29udGVudFxuICAgICAgICAgIDogbnVsbH1cbiAgICAgIDwvR3JhcGhpUUwuVG9vbGJhcj5cbiAgICApO1xuXG4gICAgY29uc3QgZm9vdGVyID0gZmluZChjaGlsZHJlbiwgY2hpbGQgPT5cbiAgICAgIGlzQ2hpbGRDb21wb25lbnRUeXBlKGNoaWxkLCBHcmFwaGlRTC5Gb290ZXIpLFxuICAgICk7XG5cbiAgICBjb25zdCBxdWVyeVdyYXBTdHlsZSA9IHtcbiAgICAgIFdlYmtpdEZsZXg6IHRoaXMuc3RhdGUuZWRpdG9yRmxleCxcbiAgICAgIGZsZXg6IHRoaXMuc3RhdGUuZWRpdG9yRmxleCxcbiAgICB9O1xuXG4gICAgY29uc3QgZG9jV3JhcFN0eWxlID0ge1xuICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgIHdpZHRoOiB0aGlzLnN0YXRlLmRvY0V4cGxvcmVyV2lkdGgsXG4gICAgfTtcbiAgICBjb25zdCBkb2NFeHBsb3JlcldyYXBDbGFzc2VzID1cbiAgICAgICdkb2NFeHBsb3JlcldyYXAnICtcbiAgICAgICh0aGlzLnN0YXRlLmRvY0V4cGxvcmVyV2lkdGggPCAyMDAgPyAnIGRvYy1leHBsb3Jlci1uYXJyb3cnIDogJycpO1xuXG4gICAgY29uc3QgaGlzdG9yeVBhbmVTdHlsZSA9IHtcbiAgICAgIGRpc3BsYXk6IHRoaXMuc3RhdGUuaGlzdG9yeVBhbmVPcGVuID8gJ2Jsb2NrJyA6ICdub25lJyxcbiAgICAgIHdpZHRoOiAnMjMwcHgnLFxuICAgICAgekluZGV4OiA3LFxuICAgIH07XG5cbiAgICBjb25zdCBzZWNvbmRhcnlFZGl0b3JPcGVuID0gdGhpcy5zdGF0ZS5zZWNvbmRhcnlFZGl0b3JPcGVuO1xuICAgIGNvbnN0IHNlY29uZGFyeUVkaXRvclN0eWxlID0ge1xuICAgICAgaGVpZ2h0OiBzZWNvbmRhcnlFZGl0b3JPcGVuXG4gICAgICAgID8gdGhpcy5zdGF0ZS5zZWNvbmRhcnlFZGl0b3JIZWlnaHRcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17biA9PiB7XG4gICAgICAgICAgdGhpcy5ncmFwaGlxbENvbnRhaW5lciA9IG47XG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT1cImdyYXBoaXFsLWNvbnRhaW5lclwiPlxuICAgICAgICB7dGhpcy5zdGF0ZS5oaXN0b3J5UGFuZU9wZW4gJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlzdG9yeVBhbmVXcmFwXCIgc3R5bGU9e2hpc3RvcnlQYW5lU3R5bGV9PlxuICAgICAgICAgICAgPFF1ZXJ5SGlzdG9yeVxuICAgICAgICAgICAgICByZWY9e25vZGUgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXJ5SGlzdG9yeSA9IG5vZGU7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIG9wZXJhdGlvbk5hbWU9e3RoaXMuc3RhdGUub3BlcmF0aW9uTmFtZX1cbiAgICAgICAgICAgICAgcXVlcnk9e3RoaXMuc3RhdGUucXVlcnl9XG4gICAgICAgICAgICAgIHZhcmlhYmxlcz17dGhpcy5zdGF0ZS52YXJpYWJsZXN9XG4gICAgICAgICAgICAgIG9uU2VsZWN0UXVlcnk9e3RoaXMuaGFuZGxlU2VsZWN0SGlzdG9yeVF1ZXJ5fVxuICAgICAgICAgICAgICBzdG9yYWdlPXt0aGlzLl9zdG9yYWdlfVxuICAgICAgICAgICAgICBxdWVyeUlEPXt0aGlzLl9lZGl0b3JRdWVyeUlEfT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImRvY0V4cGxvcmVySGlkZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5oYW5kbGVUb2dnbGVIaXN0b3J5fVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBIaXN0b3J5XCI+XG4gICAgICAgICAgICAgICAgeydcXHUyNzE1J31cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L1F1ZXJ5SGlzdG9yeT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJlZGl0b3JXcmFwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0b3BCYXJXcmFwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRvcEJhclwiPlxuICAgICAgICAgICAgICB7bG9nb31cbiAgICAgICAgICAgICAgPEV4ZWN1dGVCdXR0b25cbiAgICAgICAgICAgICAgICBpc1J1bm5pbmc9e0Jvb2xlYW4odGhpcy5zdGF0ZS5zdWJzY3JpcHRpb24pfVxuICAgICAgICAgICAgICAgIG9uUnVuPXt0aGlzLmhhbmRsZVJ1blF1ZXJ5fVxuICAgICAgICAgICAgICAgIG9uU3RvcD17dGhpcy5oYW5kbGVTdG9wUXVlcnl9XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9ucz17dGhpcy5zdGF0ZS5vcGVyYXRpb25zfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB7dG9vbGJhcn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgeyF0aGlzLnN0YXRlLmRvY0V4cGxvcmVyT3BlbiAmJiAoXG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJkb2NFeHBsb3JlclNob3dcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlVG9nZ2xlRG9jc31cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiT3BlbiBEb2N1bWVudGF0aW9uIEV4cGxvcmVyXCI+XG4gICAgICAgICAgICAgICAgeydEb2NzJ31cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHJlZj17biA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZWRpdG9yQmFyQ29tcG9uZW50ID0gbjtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJlZGl0b3JCYXJcIlxuICAgICAgICAgICAgb25Eb3VibGVDbGljaz17dGhpcy5oYW5kbGVSZXNldFJlc2l6ZX1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXt0aGlzLmhhbmRsZVJlc2l6ZVN0YXJ0fT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicXVlcnlXcmFwXCIgc3R5bGU9e3F1ZXJ5V3JhcFN0eWxlfT5cbiAgICAgICAgICAgICAgPFF1ZXJ5RWRpdG9yXG4gICAgICAgICAgICAgICAgcmVmPXtuID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnlFZGl0b3JDb21wb25lbnQgPSBuO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgc2NoZW1hPXt0aGlzLnN0YXRlLnNjaGVtYX1cbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uUnVsZXM9e3RoaXMucHJvcHMudmFsaWRhdGlvblJ1bGVzfVxuICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnF1ZXJ5fVxuICAgICAgICAgICAgICAgIG9uRWRpdD17dGhpcy5oYW5kbGVFZGl0UXVlcnl9XG4gICAgICAgICAgICAgICAgb25IaW50SW5mb3JtYXRpb25SZW5kZXI9e3RoaXMuaGFuZGxlSGludEluZm9ybWF0aW9uUmVuZGVyfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2tSZWZlcmVuY2U9e3RoaXMuaGFuZGxlQ2xpY2tSZWZlcmVuY2V9XG4gICAgICAgICAgICAgICAgb25Db3B5UXVlcnk9e3RoaXMuaGFuZGxlQ29weVF1ZXJ5fVxuICAgICAgICAgICAgICAgIG9uUHJldHRpZnlRdWVyeT17dGhpcy5oYW5kbGVQcmV0dGlmeVF1ZXJ5fVxuICAgICAgICAgICAgICAgIG9uTWVyZ2VRdWVyeT17dGhpcy5oYW5kbGVNZXJnZVF1ZXJ5fVxuICAgICAgICAgICAgICAgIG9uUnVuUXVlcnk9e3RoaXMuaGFuZGxlRWRpdG9yUnVuUXVlcnl9XG4gICAgICAgICAgICAgICAgZWRpdG9yVGhlbWU9e3RoaXMucHJvcHMuZWRpdG9yVGhlbWV9XG4gICAgICAgICAgICAgICAgcmVhZE9ubHk9e3RoaXMucHJvcHMucmVhZE9ubHl9XG4gICAgICAgICAgICAgICAgZXh0ZXJuYWxGcmFnbWVudHM9e3RoaXMucHJvcHMuZXh0ZXJuYWxGcmFnbWVudHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzZWN0aW9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidmFyaWFibGUtZWRpdG9yIHNlY29uZGFyeS1lZGl0b3JcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtzZWNvbmRhcnlFZGl0b3JTdHlsZX1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUudmFyaWFibGVFZGl0b3JBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgPyAnUXVlcnkgVmFyaWFibGVzJ1xuICAgICAgICAgICAgICAgICAgICA6ICdSZXF1ZXN0IEhlYWRlcnMnXG4gICAgICAgICAgICAgICAgfT5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzZWNvbmRhcnktZWRpdG9yLXRpdGxlIHZhcmlhYmxlLWVkaXRvci10aXRsZVwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlY29uZGFyeS1lZGl0b3ItdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBzZWNvbmRhcnlFZGl0b3JPcGVuID8gJ3Jvdy1yZXNpemUnIDogJ24tcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17dGhpcy5oYW5kbGVTZWNvbmRhcnlFZGl0b3JSZXNpemVTdGFydH0+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHRoaXMuc3RhdGUudmFyaWFibGVFZGl0b3JBY3RpdmUgPyAnIzAwMCcgOiAnZ3JheScsXG4gICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlT3BlblZhcmlhYmxlRWRpdG9yVGFifVxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17dGhpcy5oYW5kbGVUYWJDbGlja1Byb3BvZ2F0aW9ufT5cbiAgICAgICAgICAgICAgICAgICAgeydRdWVyeSBWYXJpYWJsZXMnfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB7dGhpcy5zdGF0ZS5oZWFkZXJFZGl0b3JFbmFibGVkICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB0aGlzLnN0YXRlLmhlYWRlckVkaXRvckFjdGl2ZSA/ICcjMDAwJyA6ICdncmF5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogJzIwcHgnLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5oYW5kbGVPcGVuSGVhZGVyRWRpdG9yVGFifVxuICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXt0aGlzLmhhbmRsZVRhYkNsaWNrUHJvcG9nYXRpb259PlxuICAgICAgICAgICAgICAgICAgICAgIHsnUmVxdWVzdCBIZWFkZXJzJ31cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxWYXJpYWJsZUVkaXRvclxuICAgICAgICAgICAgICAgICAgcmVmPXtuID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YXJpYWJsZUVkaXRvckNvbXBvbmVudCA9IG47XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUudmFyaWFibGVzfVxuICAgICAgICAgICAgICAgICAgdmFyaWFibGVUb1R5cGU9e3RoaXMuc3RhdGUudmFyaWFibGVUb1R5cGV9XG4gICAgICAgICAgICAgICAgICBvbkVkaXQ9e3RoaXMuaGFuZGxlRWRpdFZhcmlhYmxlc31cbiAgICAgICAgICAgICAgICAgIG9uSGludEluZm9ybWF0aW9uUmVuZGVyPXt0aGlzLmhhbmRsZUhpbnRJbmZvcm1hdGlvblJlbmRlcn1cbiAgICAgICAgICAgICAgICAgIG9uUHJldHRpZnlRdWVyeT17dGhpcy5oYW5kbGVQcmV0dGlmeVF1ZXJ5fVxuICAgICAgICAgICAgICAgICAgb25NZXJnZVF1ZXJ5PXt0aGlzLmhhbmRsZU1lcmdlUXVlcnl9XG4gICAgICAgICAgICAgICAgICBvblJ1blF1ZXJ5PXt0aGlzLmhhbmRsZUVkaXRvclJ1blF1ZXJ5fVxuICAgICAgICAgICAgICAgICAgZWRpdG9yVGhlbWU9e3RoaXMucHJvcHMuZWRpdG9yVGhlbWV9XG4gICAgICAgICAgICAgICAgICByZWFkT25seT17dGhpcy5wcm9wcy5yZWFkT25seX1cbiAgICAgICAgICAgICAgICAgIGFjdGl2ZT17dGhpcy5zdGF0ZS52YXJpYWJsZUVkaXRvckFjdGl2ZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLmhlYWRlckVkaXRvckVuYWJsZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgPEhlYWRlckVkaXRvclxuICAgICAgICAgICAgICAgICAgICByZWY9e24gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyRWRpdG9yQ29tcG9uZW50ID0gbjtcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuaGVhZGVyc31cbiAgICAgICAgICAgICAgICAgICAgb25FZGl0PXt0aGlzLmhhbmRsZUVkaXRIZWFkZXJzfVxuICAgICAgICAgICAgICAgICAgICBvbkhpbnRJbmZvcm1hdGlvblJlbmRlcj17dGhpcy5oYW5kbGVIaW50SW5mb3JtYXRpb25SZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgIG9uUHJldHRpZnlRdWVyeT17dGhpcy5oYW5kbGVQcmV0dGlmeVF1ZXJ5fVxuICAgICAgICAgICAgICAgICAgICBvbk1lcmdlUXVlcnk9e3RoaXMuaGFuZGxlTWVyZ2VRdWVyeX1cbiAgICAgICAgICAgICAgICAgICAgb25SdW5RdWVyeT17dGhpcy5oYW5kbGVFZGl0b3JSdW5RdWVyeX1cbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yVGhlbWU9e3RoaXMucHJvcHMuZWRpdG9yVGhlbWV9XG4gICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5PXt0aGlzLnByb3BzLnJlYWRPbmx5fVxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU9e3RoaXMuc3RhdGUuaGVhZGVyRWRpdG9yQWN0aXZlfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVzdWx0V3JhcFwiPlxuICAgICAgICAgICAgICB7dGhpcy5zdGF0ZS5pc1dhaXRpbmdGb3JSZXNwb25zZSAmJiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGlubmVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGlubmVyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPFJlc3VsdFZpZXdlclxuICAgICAgICAgICAgICAgIHJlZ2lzdGVyUmVmPXtuID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0Vmlld2VyRWxlbWVudCA9IG47XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICByZWY9e2MgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRDb21wb25lbnQgPSBjO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUucmVzcG9uc2V9XG4gICAgICAgICAgICAgICAgZWRpdG9yVGhlbWU9e3RoaXMucHJvcHMuZWRpdG9yVGhlbWV9XG4gICAgICAgICAgICAgICAgUmVzdWx0c1Rvb2x0aXA9e3RoaXMucHJvcHMuUmVzdWx0c1Rvb2x0aXB9XG4gICAgICAgICAgICAgICAgSW1hZ2VQcmV2aWV3PXtJbWFnZVByZXZpZXd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIHtmb290ZXJ9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHt0aGlzLnN0YXRlLmRvY0V4cGxvcmVyT3BlbiAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2RvY0V4cGxvcmVyV3JhcENsYXNzZXN9IHN0eWxlPXtkb2NXcmFwU3R5bGV9PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJkb2NFeHBsb3JlclJlc2l6ZXJcIlxuICAgICAgICAgICAgICBvbkRvdWJsZUNsaWNrPXt0aGlzLmhhbmRsZURvY3NSZXNldFJlc2l6ZX1cbiAgICAgICAgICAgICAgb25Nb3VzZURvd249e3RoaXMuaGFuZGxlRG9jc1Jlc2l6ZVN0YXJ0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxEb2NFeHBsb3JlclxuICAgICAgICAgICAgICByZWY9e2MgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9jRXhwbG9yZXJDb21wb25lbnQgPSBjO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBzY2hlbWE9e3RoaXMuc3RhdGUuc2NoZW1hfT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImRvY0V4cGxvcmVySGlkZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5oYW5kbGVUb2dnbGVEb2NzfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBEb2N1bWVudGF0aW9uIEV4cGxvcmVyXCI+XG4gICAgICAgICAgICAgICAgeydcXHUyNzE1J31cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L0RvY0V4cGxvcmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIC8vIEV4cG9ydCBtYWluIHdpbmRvd3MvcGFuZXMgdG8gYmUgdXNlZCBzZXBhcmF0ZWx5IGlmIGRlc2lyZWQuXG4gIHN0YXRpYyBMb2dvID0gR3JhcGhpUUxMb2dvO1xuICBzdGF0aWMgVG9vbGJhciA9IEdyYXBoaVFMVG9vbGJhcjtcbiAgc3RhdGljIEZvb3RlciA9IEdyYXBoaVFMRm9vdGVyO1xuICBzdGF0aWMgUXVlcnlFZGl0b3IgPSBRdWVyeUVkaXRvcjtcbiAgc3RhdGljIFZhcmlhYmxlRWRpdG9yID0gVmFyaWFibGVFZGl0b3I7XG4gIHN0YXRpYyBIZWFkZXJFZGl0b3IgPSBIZWFkZXJFZGl0b3I7XG4gIHN0YXRpYyBSZXN1bHRWaWV3ZXIgPSBSZXN1bHRWaWV3ZXI7XG5cbiAgLy8gQWRkIGEgYnV0dG9uIHRvIHRoZSBUb29sYmFyLlxuICBzdGF0aWMgQnV0dG9uID0gVG9vbGJhckJ1dHRvbjtcbiAgc3RhdGljIFRvb2xiYXJCdXR0b24gPSBUb29sYmFyQnV0dG9uOyAvLyBEb24ndCBicmVhayBleGlzdGluZyBBUEkuXG5cbiAgLy8gQWRkIGEgZ3JvdXAgb2YgYnV0dG9ucyB0byB0aGUgVG9vbGJhclxuICBzdGF0aWMgR3JvdXAgPSBUb29sYmFyR3JvdXA7XG5cbiAgLy8gQWRkIGEgbWVudSBvZiBpdGVtcyB0byB0aGUgVG9vbGJhci5cbiAgc3RhdGljIE1lbnUgPSBUb29sYmFyTWVudTtcbiAgc3RhdGljIE1lbnVJdGVtID0gVG9vbGJhck1lbnVJdGVtO1xuXG4gIC8vIEFkZCBhIHNlbGVjdC1vcHRpb24gaW5wdXQgdG8gdGhlIFRvb2xiYXIuXG4gIC8vIHN0YXRpYyBTZWxlY3QgPSBUb29sYmFyU2VsZWN0O1xuICAvLyBzdGF0aWMgU2VsZWN0T3B0aW9uID0gVG9vbGJhclNlbGVjdE9wdGlvbjtcblxuICAvKipcbiAgICogR2V0IHRoZSBxdWVyeSBlZGl0b3IgQ29kZU1pcnJvciBpbnN0YW5jZS5cbiAgICpcbiAgICogQHB1YmxpY1xuICAgKi9cbiAgZ2V0UXVlcnlFZGl0b3IoKSB7XG4gICAgaWYgKHRoaXMucXVlcnlFZGl0b3JDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnF1ZXJ5RWRpdG9yQ29tcG9uZW50LmdldENvZGVNaXJyb3IoKTtcbiAgICB9XG4gICAgLy8gcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHZhcmlhYmxlIGVkaXRvciBDb2RlTWlycm9yIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcHVibGljXG4gICAqL1xuICBwdWJsaWMgZ2V0VmFyaWFibGVFZGl0b3IoKSB7XG4gICAgaWYgKHRoaXMudmFyaWFibGVFZGl0b3JDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhcmlhYmxlRWRpdG9yQ29tcG9uZW50LmdldENvZGVNaXJyb3IoKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBoZWFkZXIgZWRpdG9yIENvZGVNaXJyb3IgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwdWJsaWNcbiAgICovXG4gIHB1YmxpYyBnZXRIZWFkZXJFZGl0b3IoKSB7XG4gICAgaWYgKHRoaXMuaGVhZGVyRWRpdG9yQ29tcG9uZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5oZWFkZXJFZGl0b3JDb21wb25lbnQuZ2V0Q29kZU1pcnJvcigpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoIGFsbCBDb2RlTWlycm9yIGluc3RhbmNlcy5cbiAgICpcbiAgICogQHB1YmxpY1xuICAgKi9cbiAgcHVibGljIHJlZnJlc2goKSB7XG4gICAgaWYgKHRoaXMucXVlcnlFZGl0b3JDb21wb25lbnQpIHtcbiAgICAgIHRoaXMucXVlcnlFZGl0b3JDb21wb25lbnQuZ2V0Q29kZU1pcnJvcigpLnJlZnJlc2goKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudmFyaWFibGVFZGl0b3JDb21wb25lbnQpIHtcbiAgICAgIHRoaXMudmFyaWFibGVFZGl0b3JDb21wb25lbnQuZ2V0Q29kZU1pcnJvcigpLnJlZnJlc2goKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGVhZGVyRWRpdG9yQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLmhlYWRlckVkaXRvckNvbXBvbmVudC5nZXRDb2RlTWlycm9yKCkucmVmcmVzaCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXN1bHRDb21wb25lbnQpIHtcbiAgICAgIHRoaXMucmVzdWx0Q29tcG9uZW50LmdldENvZGVNaXJyb3IoKS5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluc3BlY3QgdGhlIHF1ZXJ5LCBhdXRvbWF0aWNhbGx5IGZpbGxpbmcgaW4gc2VsZWN0aW9uIHNldHMgZm9yIG5vbi1sZWFmXG4gICAqIGZpZWxkcyB3aGljaCBkbyBub3QgeWV0IGhhdmUgdGhlbS5cbiAgICpcbiAgICogQHB1YmxpY1xuICAgKi9cbiAgcHVibGljIGF1dG9Db21wbGV0ZUxlYWZzKCkge1xuICAgIGNvbnN0IHsgaW5zZXJ0aW9ucywgcmVzdWx0IH0gPSBmaWxsTGVhZnMoXG4gICAgICB0aGlzLnN0YXRlLnNjaGVtYSxcbiAgICAgIHRoaXMuc3RhdGUucXVlcnksXG4gICAgICB0aGlzLnByb3BzLmdldERlZmF1bHRGaWVsZE5hbWVzLFxuICAgICk7XG4gICAgaWYgKGluc2VydGlvbnMgJiYgaW5zZXJ0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmdldFF1ZXJ5RWRpdG9yKCk7XG4gICAgICBpZiAoZWRpdG9yKSB7XG4gICAgICAgIGVkaXRvci5vcGVyYXRpb24oKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnNvciA9IGVkaXRvci5nZXRDdXJzb3IoKTtcbiAgICAgICAgICBjb25zdCBjdXJzb3JJbmRleCA9IGVkaXRvci5pbmRleEZyb21Qb3MoY3Vyc29yKTtcbiAgICAgICAgICBlZGl0b3Iuc2V0VmFsdWUocmVzdWx0IHx8ICcnKTtcbiAgICAgICAgICBsZXQgYWRkZWQgPSAwO1xuICAgICAgICAgIGNvbnN0IG1hcmtlcnMgPSBpbnNlcnRpb25zLm1hcCgoeyBpbmRleCwgc3RyaW5nIH0pID0+XG4gICAgICAgICAgICBlZGl0b3IubWFya1RleHQoXG4gICAgICAgICAgICAgIGVkaXRvci5wb3NGcm9tSW5kZXgoaW5kZXggKyBhZGRlZCksXG4gICAgICAgICAgICAgIGVkaXRvci5wb3NGcm9tSW5kZXgoaW5kZXggKyAoYWRkZWQgKz0gc3RyaW5nLmxlbmd0aCkpLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYXV0b0luc2VydGVkTGVhZicsXG4gICAgICAgICAgICAgICAgY2xlYXJPbkVudGVyOiB0cnVlLFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnQXV0b21hdGljYWxseSBhZGRlZCBsZWFmIGZpZWxkcycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBtYXJrZXJzLmZvckVhY2gobWFya2VyID0+IG1hcmtlci5jbGVhcigpKSwgNzAwMCk7XG4gICAgICAgICAgbGV0IG5ld0N1cnNvckluZGV4ID0gY3Vyc29ySW5kZXg7XG4gICAgICAgICAgaW5zZXJ0aW9ucy5mb3JFYWNoKCh7IGluZGV4LCBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4IDwgY3Vyc29ySW5kZXgpIHtcbiAgICAgICAgICAgICAgbmV3Q3Vyc29ySW5kZXggKz0gc3RyaW5nLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBlZGl0b3Iuc2V0Q3Vyc29yKGVkaXRvci5wb3NGcm9tSW5kZXgobmV3Q3Vyc29ySW5kZXgpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIFByaXZhdGUgbWV0aG9kc1xuXG4gIHByaXZhdGUgZmV0Y2hTY2hlbWEoKSB7XG4gICAgY29uc3QgZmV0Y2hlciA9IHRoaXMucHJvcHMuZmV0Y2hlcjtcblxuICAgIGNvbnN0IGZldGNoZXJPcHRzOiBGZXRjaGVyT3B0cyA9IHtcbiAgICAgIHNob3VsZFBlcnNpc3RIZWFkZXJzOiBCb29sZWFuKHRoaXMucHJvcHMuc2hvdWxkUGVyc2lzdEhlYWRlcnMpLFxuICAgICAgZG9jdW1lbnRBU1Q6IHRoaXMuc3RhdGUuZG9jdW1lbnRBU1QsXG4gICAgfTtcbiAgICBpZiAodGhpcy5zdGF0ZS5oZWFkZXJzICYmIHRoaXMuc3RhdGUuaGVhZGVycy50cmltKCkubGVuZ3RoID4gMikge1xuICAgICAgZmV0Y2hlck9wdHMuaGVhZGVycyA9IEpTT04ucGFyc2UodGhpcy5zdGF0ZS5oZWFkZXJzKTtcbiAgICAgIC8vIGlmIHN0YXRlIGlzIG5vdCBwcmVzZW50LCBidXQgcHJvcHMgYXJlXG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLmhlYWRlcnMpIHtcbiAgICAgIGZldGNoZXJPcHRzLmhlYWRlcnMgPSBKU09OLnBhcnNlKHRoaXMucHJvcHMuaGVhZGVycyk7XG4gICAgfVxuXG4gICAgY29uc3QgZmV0Y2ggPSBmZXRjaGVyUmV0dXJuVG9Qcm9taXNlKFxuICAgICAgZmV0Y2hlcihcbiAgICAgICAge1xuICAgICAgICAgIHF1ZXJ5OiBpbnRyb3NwZWN0aW9uUXVlcnksXG4gICAgICAgICAgb3BlcmF0aW9uTmFtZTogaW50cm9zcGVjdGlvblF1ZXJ5TmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgZmV0Y2hlck9wdHMsXG4gICAgICApLFxuICAgICk7XG5cbiAgICBpZiAoIWlzUHJvbWlzZShmZXRjaCkpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICByZXNwb25zZTogJ0ZldGNoZXIgZGlkIG5vdCByZXR1cm4gYSBQcm9taXNlIGZvciBpbnRyb3NwZWN0aW9uLicsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmZXRjaFxuICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICdzdHJpbmcnICYmICdkYXRhJyBpbiByZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVHJ5IHRoZSBzdG9jayBpbnRyb3NwZWN0aW9uIHF1ZXJ5IGZpcnN0LCBmYWxsaW5nIGJhY2sgb24gdGhlXG4gICAgICAgIC8vIHNhbnMtc3Vic2NyaXB0aW9ucyBxdWVyeSBmb3Igc2VydmljZXMgd2hpY2ggZG8gbm90IHlldCBzdXBwb3J0IGl0LlxuICAgICAgICBjb25zdCBmZXRjaDIgPSBmZXRjaGVyUmV0dXJuVG9Qcm9taXNlKFxuICAgICAgICAgIGZldGNoZXIoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHF1ZXJ5OiBpbnRyb3NwZWN0aW9uUXVlcnlTYW5zU3Vic2NyaXB0aW9ucyxcbiAgICAgICAgICAgICAgb3BlcmF0aW9uTmFtZTogaW50cm9zcGVjdGlvblF1ZXJ5TmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmZXRjaGVyT3B0cyxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgICBpZiAoIWlzUHJvbWlzZShmZXRjaCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnRmV0Y2hlciBkaWQgbm90IHJldHVybiBhIFByb21pc2UgZm9yIGludHJvc3BlY3Rpb24uJyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmZXRjaDI7XG4gICAgICB9KVxuICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgLy8gSWYgYSBzY2hlbWEgd2FzIHByb3ZpZGVkIHdoaWxlIHRoaXMgZmV0Y2ggd2FzIHVuZGVyd2F5LCB0aGVuXG4gICAgICAgIC8vIHNhdGlzZnkgdGhlIHJhY2UgY29uZGl0aW9uIGJ5IHJlc3BlY3RpbmcgdGhlIGFscmVhZHlcbiAgICAgICAgLy8gcHJvdmlkZWQgc2NoZW1hLlxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5zY2hlbWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ICE9PSAnc3RyaW5nJyAmJiAnZGF0YScgaW4gcmVzdWx0KSB7XG4gICAgICAgICAgY29uc3Qgc2NoZW1hID0gYnVpbGRDbGllbnRTY2hlbWEocmVzdWx0LmRhdGEpO1xuICAgICAgICAgIGNvbnN0IHF1ZXJ5RmFjdHMgPSBnZXRPcGVyYXRpb25GYWN0cyhzY2hlbWEsIHRoaXMuc3RhdGUucXVlcnkpO1xuICAgICAgICAgIHRoaXMuc2FmZVNldFN0YXRlKHsgc2NoZW1hLCAuLi5xdWVyeUZhY3RzIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlU3RyaW5nID1cbiAgICAgICAgICAgIHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnID8gcmVzdWx0IDogR3JhcGhpUUwuZm9ybWF0UmVzdWx0KHJlc3VsdCk7XG4gICAgICAgICAgdGhpcy5zYWZlU2V0U3RhdGUoe1xuICAgICAgICAgICAgLy8gU2V0IHNjaGVtYSB0byBgbnVsbGAgdG8gZXhwbGljaXRseSBpbmRpY2F0ZSB0aGF0IG5vIHNjaGVtYSBleGlzdHMuXG4gICAgICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZVN0cmluZyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIHRoaXMuc2FmZVNldFN0YXRlKHtcbiAgICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgICByZXNwb25zZTogZXJyb3IgPyBHcmFwaGlRTC5mb3JtYXRFcnJvcihlcnJvcikgOiB1bmRlZmluZWQsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9mZXRjaFF1ZXJ5KFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgdmFyaWFibGVzOiBzdHJpbmcsXG4gICAgaGVhZGVyczogc3RyaW5nLFxuICAgIG9wZXJhdGlvbk5hbWU6IHN0cmluZyxcbiAgICBzaG91bGRQZXJzaXN0SGVhZGVyczogYm9vbGVhbixcbiAgICBjYjogKHZhbHVlOiBGZXRjaGVyUmVzdWx0KSA9PiBhbnksXG4gICk6IFByb21pc2U8bnVsbCB8IFVuc3Vic2NyaWJhYmxlPiB7XG4gICAgY29uc3QgZmV0Y2hlciA9IHRoaXMucHJvcHMuZmV0Y2hlcjtcbiAgICBsZXQganNvblZhcmlhYmxlcyA9IG51bGw7XG4gICAgbGV0IGpzb25IZWFkZXJzID0gbnVsbDtcblxuICAgIHRyeSB7XG4gICAgICBqc29uVmFyaWFibGVzID1cbiAgICAgICAgdmFyaWFibGVzICYmIHZhcmlhYmxlcy50cmltKCkgIT09ICcnID8gSlNPTi5wYXJzZSh2YXJpYWJsZXMpIDogbnVsbDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBWYXJpYWJsZXMgYXJlIGludmFsaWQgSlNPTjogJHtlcnJvci5tZXNzYWdlfS5gKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGpzb25WYXJpYWJsZXMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhcmlhYmxlcyBhcmUgbm90IGEgSlNPTiBvYmplY3QuJyk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGpzb25IZWFkZXJzID1cbiAgICAgICAgaGVhZGVycyAmJiBoZWFkZXJzLnRyaW0oKSAhPT0gJycgPyBKU09OLnBhcnNlKGhlYWRlcnMpIDogbnVsbDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBIZWFkZXJzIGFyZSBpbnZhbGlkIEpTT046ICR7ZXJyb3IubWVzc2FnZX0uYCk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBqc29uSGVhZGVycyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSGVhZGVycyBhcmUgbm90IGEgSlNPTiBvYmplY3QuJyk7XG4gICAgfVxuICAgIC8vIFRPRE86IG1lbW9pemUgdGhpc1xuICAgIGlmICh0aGlzLnByb3BzLmV4dGVybmFsRnJhZ21lbnRzKSB7XG4gICAgICBjb25zdCBleHRlcm5hbEZyYWdtZW50cyA9IG5ldyBNYXA8c3RyaW5nLCBGcmFnbWVudERlZmluaXRpb25Ob2RlPigpO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnByb3BzLmV4dGVybmFsRnJhZ21lbnRzKSkge1xuICAgICAgICB0aGlzLnByb3BzLmV4dGVybmFsRnJhZ21lbnRzLmZvckVhY2goZGVmID0+IHtcbiAgICAgICAgICBleHRlcm5hbEZyYWdtZW50cy5zZXQoZGVmLm5hbWUudmFsdWUsIGRlZik7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmlzaXQoXG4gICAgICAgICAgcGFyc2UodGhpcy5wcm9wcy5leHRlcm5hbEZyYWdtZW50cywge1xuICAgICAgICAgICAgZXhwZXJpbWVudGFsRnJhZ21lbnRWYXJpYWJsZXM6IHRydWUsXG4gICAgICAgICAgfSksXG4gICAgICAgICAge1xuICAgICAgICAgICAgRnJhZ21lbnREZWZpbml0aW9uKGRlZikge1xuICAgICAgICAgICAgICBleHRlcm5hbEZyYWdtZW50cy5zZXQoZGVmLm5hbWUudmFsdWUsIGRlZik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBmcmFnbWVudERlcGVuZGVuY2llcyA9IGdldEZyYWdtZW50RGVwZW5kZW5jaWVzRm9yQVNUKFxuICAgICAgICB0aGlzLnN0YXRlLmRvY3VtZW50QVNUISxcbiAgICAgICAgZXh0ZXJuYWxGcmFnbWVudHMsXG4gICAgICApO1xuICAgICAgaWYgKGZyYWdtZW50RGVwZW5kZW5jaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcXVlcnkgKz1cbiAgICAgICAgICAnXFxuJyArXG4gICAgICAgICAgZnJhZ21lbnREZXBlbmRlbmNpZXNcbiAgICAgICAgICAgIC5tYXAoKG5vZGU6IEZyYWdtZW50RGVmaW5pdGlvbk5vZGUpID0+IHByaW50KG5vZGUpKVxuICAgICAgICAgICAgLmpvaW4oJ1xcbicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZldGNoID0gZmV0Y2hlcihcbiAgICAgIHtcbiAgICAgICAgcXVlcnksXG4gICAgICAgIHZhcmlhYmxlczoganNvblZhcmlhYmxlcyxcbiAgICAgICAgb3BlcmF0aW9uTmFtZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGhlYWRlcnM6IGpzb25IZWFkZXJzLFxuICAgICAgICBzaG91bGRQZXJzaXN0SGVhZGVycyxcbiAgICAgICAgZG9jdW1lbnRBU1Q6IHRoaXMuc3RhdGUuZG9jdW1lbnRBU1QsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlPFN5bmNGZXRjaGVyUmVzdWx0PihmZXRjaClcbiAgICAgIC50aGVuKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZSh2YWx1ZSkpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZmV0Y2hlciByZXR1cm5lZCBhbiBPYnNlcnZhYmxlLCB0aGVuIHN1YnNjcmliZSB0byBpdCwgY2FsbGluZ1xuICAgICAgICAgIC8vIHRoZSBjYWxsYmFjayBvbiBlYWNoIG5leHQgdmFsdWUsIGFuZCBoYW5kbGluZyBib3RoIGVycm9ycyBhbmQgdGhlXG4gICAgICAgICAgLy8gY29tcGxldGlvbiBvZiB0aGUgT2JzZXJ2YWJsZS4gUmV0dXJucyBhIFN1YnNjcmlwdGlvbiBvYmplY3QuXG4gICAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdmFsdWUuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IGNiLFxuICAgICAgICAgICAgZXJyb3I6IChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zYWZlU2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIGlzV2FpdGluZ0ZvclJlc3BvbnNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXNwb25zZTogZXJyb3IgPyBHcmFwaGlRTC5mb3JtYXRFcnJvcihlcnJvcikgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uOiBudWxsLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgaXNXYWl0aW5nRm9yUmVzcG9uc2U6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIHN1YnNjcmlwdGlvbjtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzeW5jSXRlcmFibGUodmFsdWUpKSB7XG4gICAgICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGZvciBhd2FpdCAoY29uc3QgcmVzdWx0IG9mIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY2IocmVzdWx0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgaXNXYWl0aW5nRm9yUmVzcG9uc2U6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgaXNXYWl0aW5nRm9yUmVzcG9uc2U6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlOiBlcnJvciA/IEdyYXBoaVFMLmZvcm1hdEVycm9yKGVycm9yKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb246IG51bGwsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKCk7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdW5zdWJzY3JpYmU6ICgpID0+IHZhbHVlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpLnJldHVybj8uKCksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYih2YWx1ZSk7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICAgICAgaXNXYWl0aW5nRm9yUmVzcG9uc2U6IGZhbHNlLFxuICAgICAgICAgIHJlc3BvbnNlOiBlcnJvciA/IEdyYXBoaVFMLmZvcm1hdEVycm9yKGVycm9yKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSk7XG4gIH1cblxuICBoYW5kbGVDbGlja1JlZmVyZW5jZSA9IChyZWZlcmVuY2U6IEdyYXBoUUxUeXBlKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGRvY0V4cGxvcmVyT3BlbjogdHJ1ZSB9LCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kb2NFeHBsb3JlckNvbXBvbmVudCkge1xuICAgICAgICB0aGlzLmRvY0V4cGxvcmVyQ29tcG9uZW50LnNob3dEb2NGb3JSZWZlcmVuY2UocmVmZXJlbmNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLl9zdG9yYWdlLnNldChcbiAgICAgICdkb2NFeHBsb3Jlck9wZW4nLFxuICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0ZS5kb2NFeHBsb3Jlck9wZW4pLFxuICAgICk7XG4gIH07XG5cbiAgaGFuZGxlUnVuUXVlcnkgPSBhc3luYyAoc2VsZWN0ZWRPcGVyYXRpb25OYW1lPzogc3RyaW5nKSA9PiB7XG4gICAgdGhpcy5fZWRpdG9yUXVlcnlJRCsrO1xuICAgIGNvbnN0IHF1ZXJ5SUQgPSB0aGlzLl9lZGl0b3JRdWVyeUlEO1xuXG4gICAgLy8gVXNlIHRoZSBlZGl0ZWQgcXVlcnkgYWZ0ZXIgYXV0b0NvbXBsZXRlTGVhZnMoKSBydW5zIG9yLFxuICAgIC8vIGluIGNhc2UgYXV0b0NvbXBsZXRpb24gZmFpbHMgKHRoZSBmdW5jdGlvbiByZXR1cm5zIHVuZGVmaW5lZCksXG4gICAgLy8gdGhlIGN1cnJlbnQgcXVlcnkgZnJvbSB0aGUgZWRpdG9yLlxuICAgIGNvbnN0IGVkaXRlZFF1ZXJ5ID0gdGhpcy5hdXRvQ29tcGxldGVMZWFmcygpIHx8IHRoaXMuc3RhdGUucXVlcnk7XG4gICAgY29uc3QgdmFyaWFibGVzID0gdGhpcy5zdGF0ZS52YXJpYWJsZXM7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuc3RhdGUuaGVhZGVycztcbiAgICBjb25zdCBzaG91bGRQZXJzaXN0SGVhZGVycyA9IHRoaXMuc3RhdGUuc2hvdWxkUGVyc2lzdEhlYWRlcnM7XG4gICAgbGV0IG9wZXJhdGlvbk5hbWUgPSB0aGlzLnN0YXRlLm9wZXJhdGlvbk5hbWU7XG5cbiAgICAvLyBJZiBhbiBvcGVyYXRpb24gd2FzIGV4cGxpY2l0bHkgcHJvdmlkZWQsIGRpZmZlcmVudCBmcm9tIHRoZSBjdXJyZW50XG4gICAgLy8gb3BlcmF0aW9uIG5hbWUsIHRoZW4gcmVwb3J0IHRoYXQgaXQgY2hhbmdlZC5cbiAgICBpZiAoc2VsZWN0ZWRPcGVyYXRpb25OYW1lICYmIHNlbGVjdGVkT3BlcmF0aW9uTmFtZSAhPT0gb3BlcmF0aW9uTmFtZSkge1xuICAgICAgb3BlcmF0aW9uTmFtZSA9IHNlbGVjdGVkT3BlcmF0aW9uTmFtZTtcbiAgICAgIHRoaXMuaGFuZGxlRWRpdE9wZXJhdGlvbk5hbWUob3BlcmF0aW9uTmFtZSk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc1dhaXRpbmdGb3JSZXNwb25zZTogdHJ1ZSxcbiAgICAgICAgcmVzcG9uc2U6IHVuZGVmaW5lZCxcbiAgICAgICAgb3BlcmF0aW9uTmFtZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fc3RvcmFnZS5zZXQoJ29wZXJhdGlvbk5hbWUnLCBvcGVyYXRpb25OYW1lIGFzIHN0cmluZyk7XG5cbiAgICAgIGlmICh0aGlzLl9xdWVyeUhpc3RvcnkpIHtcbiAgICAgICAgdGhpcy5fcXVlcnlIaXN0b3J5LnVwZGF0ZUhpc3RvcnkoXG4gICAgICAgICAgZWRpdGVkUXVlcnksXG4gICAgICAgICAgdmFyaWFibGVzLFxuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgb3BlcmF0aW9uTmFtZSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gd2hlbiBkZWFsaW5nIHdpdGggZGVmZXIgb3Igc3RyZWFtLCB3ZSBuZWVkIHRvIGFnZ3JlZ2F0ZSByZXN1bHRzXG4gICAgICBsZXQgZnVsbFJlc3BvbnNlOiBGZXRjaGVyUmVzdWx0UGF5bG9hZCA9IHsgZGF0YToge30gfTtcblxuICAgICAgLy8gX2ZldGNoUXVlcnkgbWF5IHJldHVybiBhIHN1YnNjcmlwdGlvbi5cbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGF3YWl0IHRoaXMuX2ZldGNoUXVlcnkoXG4gICAgICAgIGVkaXRlZFF1ZXJ5IGFzIHN0cmluZyxcbiAgICAgICAgdmFyaWFibGVzIGFzIHN0cmluZyxcbiAgICAgICAgaGVhZGVycyBhcyBzdHJpbmcsXG4gICAgICAgIG9wZXJhdGlvbk5hbWUgYXMgc3RyaW5nLFxuICAgICAgICBzaG91bGRQZXJzaXN0SGVhZGVycyBhcyBib29sZWFuLFxuICAgICAgICAocmVzdWx0OiBGZXRjaGVyUmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHF1ZXJ5SUQgPT09IHRoaXMuX2VkaXRvclF1ZXJ5SUQpIHtcbiAgICAgICAgICAgIGxldCBtYXliZU11bHRpcGFydCA9IEFycmF5LmlzQXJyYXkocmVzdWx0KSA/IHJlc3VsdCA6IGZhbHNlO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAhbWF5YmVNdWx0aXBhcnQgJiZcbiAgICAgICAgICAgICAgdHlwZW9mIHJlc3VsdCAhPT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgcmVzdWx0ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICdoYXNOZXh0JyBpbiByZXN1bHRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBtYXliZU11bHRpcGFydCA9IFtyZXN1bHRdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobWF5YmVNdWx0aXBhcnQpIHtcbiAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZDogRmV0Y2hlclJlc3VsdFBheWxvYWQgPSB7IGRhdGE6IGZ1bGxSZXNwb25zZS5kYXRhIH07XG4gICAgICAgICAgICAgIGNvbnN0IG1heWJlRXJyb3JzID0gW1xuICAgICAgICAgICAgICAgIC4uLihmdWxsUmVzcG9uc2U/LmVycm9ycyB8fCBbXSksXG4gICAgICAgICAgICAgICAgLi4ubWF5YmVNdWx0aXBhcnRcbiAgICAgICAgICAgICAgICAgIC5tYXAoaSA9PiBpLmVycm9ycylcbiAgICAgICAgICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbiksXG4gICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHBheWxvYWQuZXJyb3JzID0gbWF5YmVFcnJvcnM7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgbWF5YmVNdWx0aXBhcnQpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBwdWxsIG91dCBlcnJvcnMgaGVyZSwgc28gd2UgZG9udCBpbmNsdWRlIGl0IGxhdGVyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBwYXRoLCBkYXRhLCBlcnJvcnM6IF9lcnJvcnMsIC4uLnJlc3QgfSA9IHBhcnQ7XG4gICAgICAgICAgICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgICAgICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgYEV4cGVjdGVkIHBhcnQgdG8gY29udGFpbiBhIGRhdGEgcHJvcGVydHksIGJ1dCBnb3QgJHtwYXJ0fWAsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGRzZXQocGF5bG9hZC5kYXRhLCBwYXRoLCBkYXRhKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHBhdGgsIHdlIGRvbid0IGtub3cgd2hhdCB0byBkbyB3aXRoIHRoZSBwYXlsb2FkLFxuICAgICAgICAgICAgICAgICAgLy8gc28gd2UganVzdCBzZXQgaXQuXG4gICAgICAgICAgICAgICAgICBwYXlsb2FkLmRhdGEgPSBwYXJ0LmRhdGE7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gRW5zdXJlcyB3ZSBhbHNvIGJyaW5nIGV4dGVuc2lvbnMgYW5kIGFsaWtlIGFsb25nIGZvciB0aGUgcmlkZVxuICAgICAgICAgICAgICAgIGZ1bGxSZXNwb25zZSA9IHtcbiAgICAgICAgICAgICAgICAgIC4uLnBheWxvYWQsXG4gICAgICAgICAgICAgICAgICAuLi5yZXN0LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICBpc1dhaXRpbmdGb3JSZXNwb25zZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2U6IEdyYXBoaVFMLmZvcm1hdFJlc3VsdChmdWxsUmVzcG9uc2UpLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIGlzV2FpdGluZ0ZvclJlc3BvbnNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXNwb25zZTogR3JhcGhpUUwuZm9ybWF0UmVzdWx0KHJlc3VsdCksXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBzdWJzY3JpcHRpb24gfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc1dhaXRpbmdGb3JSZXNwb25zZTogZmFsc2UsXG4gICAgICAgIHJlc3BvbnNlOiBlcnJvci5tZXNzYWdlLFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGhhbmRsZVN0b3BRdWVyeSA9ICgpID0+IHtcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLnN0YXRlLnN1YnNjcmlwdGlvbjtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGlzV2FpdGluZ0ZvclJlc3BvbnNlOiBmYWxzZSxcbiAgICAgIHN1YnNjcmlwdGlvbjogbnVsbCxcbiAgICB9KTtcbiAgICBpZiAoc3Vic2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfcnVuUXVlcnlBdEN1cnNvcigpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuaGFuZGxlU3RvcFF1ZXJ5KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IG9wZXJhdGlvbk5hbWU7XG4gICAgY29uc3Qgb3BlcmF0aW9ucyA9IHRoaXMuc3RhdGUub3BlcmF0aW9ucztcbiAgICBpZiAob3BlcmF0aW9ucykge1xuICAgICAgY29uc3QgZWRpdG9yID0gdGhpcy5nZXRRdWVyeUVkaXRvcigpO1xuICAgICAgaWYgKGVkaXRvciAmJiBlZGl0b3IuaGFzRm9jdXMoKSkge1xuICAgICAgICBjb25zdCBjdXJzb3IgPSBlZGl0b3IuZ2V0Q3Vyc29yKCk7XG4gICAgICAgIGNvbnN0IGN1cnNvckluZGV4ID0gZWRpdG9yLmluZGV4RnJvbVBvcyhjdXJzb3IpO1xuXG4gICAgICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgb3BlcmF0aW9ucyB0byBzZWUgaWYgb25lIGNvbnRhaW5zIHRoZSBjdXJzb3IuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3BlcmF0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IG9wZXJhdGlvbnNbaV07XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgb3BlcmF0aW9uLmxvYyAmJlxuICAgICAgICAgICAgb3BlcmF0aW9uLmxvYy5zdGFydCA8PSBjdXJzb3JJbmRleCAmJlxuICAgICAgICAgICAgb3BlcmF0aW9uLmxvYy5lbmQgPj0gY3Vyc29ySW5kZXhcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG9wZXJhdGlvbk5hbWUgPSBvcGVyYXRpb24ubmFtZSAmJiBvcGVyYXRpb24ubmFtZS52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaGFuZGxlUnVuUXVlcnkob3BlcmF0aW9uTmFtZSk7XG4gIH1cblxuICBoYW5kbGVQcmV0dGlmeVF1ZXJ5ID0gKCkgPT4ge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZ2V0UXVlcnlFZGl0b3IoKTtcbiAgICBjb25zdCBlZGl0b3JDb250ZW50ID0gZWRpdG9yPy5nZXRWYWx1ZSgpID8/ICcnO1xuICAgIGNvbnN0IHByZXR0aWZpZWRFZGl0b3JDb250ZW50ID0gcHJpbnQoXG4gICAgICBwYXJzZShlZGl0b3JDb250ZW50LCB7IGV4cGVyaW1lbnRhbEZyYWdtZW50VmFyaWFibGVzOiB0cnVlIH0pLFxuICAgICk7XG5cbiAgICBpZiAocHJldHRpZmllZEVkaXRvckNvbnRlbnQgIT09IGVkaXRvckNvbnRlbnQpIHtcbiAgICAgIGVkaXRvcj8uc2V0VmFsdWUocHJldHRpZmllZEVkaXRvckNvbnRlbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IHZhcmlhYmxlRWRpdG9yID0gdGhpcy5nZXRWYXJpYWJsZUVkaXRvcigpO1xuICAgIGNvbnN0IHZhcmlhYmxlRWRpdG9yQ29udGVudCA9IHZhcmlhYmxlRWRpdG9yPy5nZXRWYWx1ZSgpID8/ICcnO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZXR0aWZpZWRWYXJpYWJsZUVkaXRvckNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgSlNPTi5wYXJzZSh2YXJpYWJsZUVkaXRvckNvbnRlbnQpLFxuICAgICAgICBudWxsLFxuICAgICAgICAyLFxuICAgICAgKTtcbiAgICAgIGlmIChwcmV0dGlmaWVkVmFyaWFibGVFZGl0b3JDb250ZW50ICE9PSB2YXJpYWJsZUVkaXRvckNvbnRlbnQpIHtcbiAgICAgICAgdmFyaWFibGVFZGl0b3I/LnNldFZhbHVlKHByZXR0aWZpZWRWYXJpYWJsZUVkaXRvckNvbnRlbnQpO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLyogUGFyc2luZyBKU09OIGZhaWxlZCwgc2tpcCBwcmV0dGlmaWNhdGlvbiAqL1xuICAgIH1cblxuICAgIGNvbnN0IGhlYWRlckVkaXRvciA9IHRoaXMuZ2V0SGVhZGVyRWRpdG9yKCk7XG4gICAgY29uc3QgaGVhZGVyRWRpdG9yQ29udGVudCA9IGhlYWRlckVkaXRvcj8uZ2V0VmFsdWUoKSA/PyAnJztcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmV0dGlmaWVkSGVhZGVyRWRpdG9yQ29udGVudCA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICBKU09OLnBhcnNlKGhlYWRlckVkaXRvckNvbnRlbnQpLFxuICAgICAgICBudWxsLFxuICAgICAgICAyLFxuICAgICAgKTtcbiAgICAgIGlmIChwcmV0dGlmaWVkSGVhZGVyRWRpdG9yQ29udGVudCAhPT0gaGVhZGVyRWRpdG9yQ29udGVudCkge1xuICAgICAgICBoZWFkZXJFZGl0b3I/LnNldFZhbHVlKHByZXR0aWZpZWRIZWFkZXJFZGl0b3JDb250ZW50KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIC8qIFBhcnNpbmcgSlNPTiBmYWlsZWQsIHNraXAgcHJldHRpZmljYXRpb24gKi9cbiAgICB9XG4gIH07XG5cbiAgaGFuZGxlTWVyZ2VRdWVyeSA9ICgpID0+IHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmdldFF1ZXJ5RWRpdG9yKCkgYXMgQ29kZU1pcnJvci5FZGl0b3I7XG4gICAgY29uc3QgcXVlcnkgPSBlZGl0b3IuZ2V0VmFsdWUoKTtcblxuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhc3QgPSB0aGlzLnN0YXRlLmRvY3VtZW50QVNUITtcbiAgICBlZGl0b3Iuc2V0VmFsdWUocHJpbnQobWVyZ2VBU1QoYXN0LCB0aGlzLnN0YXRlLnNjaGVtYSkpKTtcbiAgfTtcblxuICBoYW5kbGVFZGl0UXVlcnkgPSBkZWJvdW5jZSgxMDAsICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcXVlcnlGYWN0cyA9IHRoaXMuX3VwZGF0ZVF1ZXJ5RmFjdHMoXG4gICAgICB2YWx1ZSxcbiAgICAgIHRoaXMuc3RhdGUub3BlcmF0aW9uTmFtZSxcbiAgICAgIHRoaXMuc3RhdGUub3BlcmF0aW9ucyxcbiAgICAgIHRoaXMuc3RhdGUuc2NoZW1hLFxuICAgICk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBxdWVyeTogdmFsdWUsXG4gICAgICAuLi5xdWVyeUZhY3RzLFxuICAgIH0pO1xuICAgIHRoaXMuX3N0b3JhZ2Uuc2V0KCdxdWVyeScsIHZhbHVlKTtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkVkaXRRdWVyeSkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMub25FZGl0UXVlcnkodmFsdWUsIHF1ZXJ5RmFjdHM/LmRvY3VtZW50QVNUKTtcbiAgICB9XG4gIH0pO1xuXG4gIGhhbmRsZUNvcHlRdWVyeSA9ICgpID0+IHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmdldFF1ZXJ5RWRpdG9yKCk7XG4gICAgY29uc3QgcXVlcnkgPSBlZGl0b3IgJiYgZWRpdG9yLmdldFZhbHVlKCk7XG5cbiAgICBpZiAoIXF1ZXJ5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29weVRvQ2xpcGJvYXJkKHF1ZXJ5KTtcblxuICAgIGlmICh0aGlzLnByb3BzLm9uQ29weVF1ZXJ5KSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5vbkNvcHlRdWVyeShxdWVyeSk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX3VwZGF0ZVF1ZXJ5RmFjdHMgPSAoXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICBvcGVyYXRpb25OYW1lPzogc3RyaW5nLFxuICAgIHByZXZPcGVyYXRpb25zPzogT3BlcmF0aW9uRGVmaW5pdGlvbk5vZGVbXSxcbiAgICBzY2hlbWE/OiBHcmFwaFFMU2NoZW1hLFxuICApID0+IHtcbiAgICBjb25zdCBxdWVyeUZhY3RzID0gZ2V0T3BlcmF0aW9uRmFjdHMoc2NoZW1hLCBxdWVyeSk7XG4gICAgaWYgKHF1ZXJ5RmFjdHMpIHtcbiAgICAgIC8vIFVwZGF0ZSBvcGVyYXRpb24gbmFtZSBzaG91bGQgYW55IHF1ZXJ5IG5hbWVzIGNoYW5nZS5cbiAgICAgIGNvbnN0IHVwZGF0ZWRPcGVyYXRpb25OYW1lID0gZ2V0U2VsZWN0ZWRPcGVyYXRpb25OYW1lKFxuICAgICAgICBwcmV2T3BlcmF0aW9ucyxcbiAgICAgICAgb3BlcmF0aW9uTmFtZSxcbiAgICAgICAgcXVlcnlGYWN0cy5vcGVyYXRpb25zLFxuICAgICAgKTtcblxuICAgICAgLy8gUmVwb3J0IGNoYW5naW5nIG9mIG9wZXJhdGlvbk5hbWUgaWYgaXQgY2hhbmdlZC5cbiAgICAgIGNvbnN0IG9uRWRpdE9wZXJhdGlvbk5hbWUgPSB0aGlzLnByb3BzLm9uRWRpdE9wZXJhdGlvbk5hbWU7XG4gICAgICBpZiAoXG4gICAgICAgIG9uRWRpdE9wZXJhdGlvbk5hbWUgJiZcbiAgICAgICAgdXBkYXRlZE9wZXJhdGlvbk5hbWUgJiZcbiAgICAgICAgb3BlcmF0aW9uTmFtZSAhPT0gdXBkYXRlZE9wZXJhdGlvbk5hbWVcbiAgICAgICkge1xuICAgICAgICBvbkVkaXRPcGVyYXRpb25OYW1lKHVwZGF0ZWRPcGVyYXRpb25OYW1lKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3BlcmF0aW9uTmFtZTogdXBkYXRlZE9wZXJhdGlvbk5hbWUsXG4gICAgICAgIC4uLnF1ZXJ5RmFjdHMsXG4gICAgICB9O1xuICAgIH1cbiAgfTtcblxuICBoYW5kbGVFZGl0VmFyaWFibGVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgdmFyaWFibGVzOiB2YWx1ZSB9KTtcbiAgICBkZWJvdW5jZSg1MDAsICgpID0+IHRoaXMuX3N0b3JhZ2Uuc2V0KCd2YXJpYWJsZXMnLCB2YWx1ZSkpKCk7XG4gICAgaWYgKHRoaXMucHJvcHMub25FZGl0VmFyaWFibGVzKSB7XG4gICAgICB0aGlzLnByb3BzLm9uRWRpdFZhcmlhYmxlcyh2YWx1ZSk7XG4gICAgfVxuICB9O1xuXG4gIGhhbmRsZUVkaXRIZWFkZXJzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgaGVhZGVyczogdmFsdWUgfSk7XG4gICAgdGhpcy5wcm9wcy5zaG91bGRQZXJzaXN0SGVhZGVycyAmJlxuICAgICAgZGVib3VuY2UoNTAwLCAoKSA9PiB0aGlzLl9zdG9yYWdlLnNldCgnaGVhZGVycycsIHZhbHVlKSkoKTtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkVkaXRIZWFkZXJzKSB7XG4gICAgICB0aGlzLnByb3BzLm9uRWRpdEhlYWRlcnModmFsdWUpO1xuICAgIH1cbiAgfTtcblxuICBoYW5kbGVFZGl0T3BlcmF0aW9uTmFtZSA9IChvcGVyYXRpb25OYW1lOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBvbkVkaXRPcGVyYXRpb25OYW1lID0gdGhpcy5wcm9wcy5vbkVkaXRPcGVyYXRpb25OYW1lO1xuICAgIGlmIChvbkVkaXRPcGVyYXRpb25OYW1lKSB7XG4gICAgICBvbkVkaXRPcGVyYXRpb25OYW1lKG9wZXJhdGlvbk5hbWUpO1xuICAgIH1cbiAgfTtcblxuICBoYW5kbGVIaW50SW5mb3JtYXRpb25SZW5kZXIgPSAoZWxlbTogSFRNTERpdkVsZW1lbnQpID0+IHtcbiAgICBlbGVtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fb25DbGlja0hpbnRJbmZvcm1hdGlvbik7XG5cbiAgICBsZXQgb25SZW1vdmVGbjogRXZlbnRMaXN0ZW5lcjtcbiAgICBlbGVtLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnRE9NTm9kZVJlbW92ZWQnLFxuICAgICAgKG9uUmVtb3ZlRm4gPSAoKSA9PiB7XG4gICAgICAgIGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lcignRE9NTm9kZVJlbW92ZWQnLCBvblJlbW92ZUZuKTtcbiAgICAgICAgZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX29uQ2xpY2tIaW50SW5mb3JtYXRpb24pO1xuICAgICAgfSksXG4gICAgKTtcbiAgfTtcblxuICBoYW5kbGVFZGl0b3JSdW5RdWVyeSA9ICgpID0+IHtcbiAgICB0aGlzLl9ydW5RdWVyeUF0Q3Vyc29yKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfb25DbGlja0hpbnRJbmZvcm1hdGlvbiA9IChcbiAgICBldmVudDogTW91c2VFdmVudCB8IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQ+LFxuICApID0+IHtcbiAgICBpZiAoXG4gICAgICBldmVudD8uY3VycmVudFRhcmdldCAmJlxuICAgICAgJ2NsYXNzTmFtZScgaW4gZXZlbnQuY3VycmVudFRhcmdldCAmJlxuICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5jbGFzc05hbWUgPT09ICd0eXBlTmFtZSdcbiAgICApIHtcbiAgICAgIGNvbnN0IHR5cGVOYW1lID0gZXZlbnQuY3VycmVudFRhcmdldC5pbm5lckhUTUw7XG4gICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLnN0YXRlLnNjaGVtYTtcbiAgICAgIGlmIChzY2hlbWEpIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IHNjaGVtYS5nZXRUeXBlKHR5cGVOYW1lKTtcbiAgICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZG9jRXhwbG9yZXJPcGVuOiB0cnVlIH0sICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRvY0V4cGxvcmVyQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgIHRoaXMuZG9jRXhwbG9yZXJDb21wb25lbnQuc2hvd0RvYyh0eXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkZWJvdW5jZSg1MDAsICgpID0+XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlLnNldChcbiAgICAgICAgICAgICAgJ2RvY0V4cGxvcmVyT3BlbicsXG4gICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RhdGUuZG9jRXhwbG9yZXJPcGVuKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGhhbmRsZVRvZ2dsZURvY3MgPSAoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uVG9nZ2xlRG9jcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5wcm9wcy5vblRvZ2dsZURvY3MoIXRoaXMuc3RhdGUuZG9jRXhwbG9yZXJPcGVuKTtcbiAgICB9XG4gICAgdGhpcy5fc3RvcmFnZS5zZXQoXG4gICAgICAnZG9jRXhwbG9yZXJPcGVuJyxcbiAgICAgIEpTT04uc3RyaW5naWZ5KCF0aGlzLnN0YXRlLmRvY0V4cGxvcmVyT3BlbiksXG4gICAgKTtcbiAgICB0aGlzLnNldFN0YXRlKHsgZG9jRXhwbG9yZXJPcGVuOiAhdGhpcy5zdGF0ZS5kb2NFeHBsb3Jlck9wZW4gfSk7XG4gIH07XG5cbiAgaGFuZGxlVG9nZ2xlSGlzdG9yeSA9ICgpID0+IHtcbiAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25Ub2dnbGVIaXN0b3J5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLnByb3BzLm9uVG9nZ2xlSGlzdG9yeSghdGhpcy5zdGF0ZS5oaXN0b3J5UGFuZU9wZW4pO1xuICAgIH1cbiAgICB0aGlzLl9zdG9yYWdlLnNldChcbiAgICAgICdoaXN0b3J5UGFuZU9wZW4nLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoIXRoaXMuc3RhdGUuaGlzdG9yeVBhbmVPcGVuKSxcbiAgICApO1xuICAgIHRoaXMuc2V0U3RhdGUoeyBoaXN0b3J5UGFuZU9wZW46ICF0aGlzLnN0YXRlLmhpc3RvcnlQYW5lT3BlbiB9KTtcbiAgfTtcblxuICBoYW5kbGVTZWxlY3RIaXN0b3J5UXVlcnkgPSAoXG4gICAgcXVlcnk/OiBzdHJpbmcsXG4gICAgdmFyaWFibGVzPzogc3RyaW5nLFxuICAgIGhlYWRlcnM/OiBzdHJpbmcsXG4gICAgb3BlcmF0aW9uTmFtZT86IHN0cmluZyxcbiAgKSA9PiB7XG4gICAgaWYgKHF1ZXJ5KSB7XG4gICAgICB0aGlzLmhhbmRsZUVkaXRRdWVyeShxdWVyeSk7XG4gICAgfVxuICAgIGlmICh2YXJpYWJsZXMpIHtcbiAgICAgIHRoaXMuaGFuZGxlRWRpdFZhcmlhYmxlcyh2YXJpYWJsZXMpO1xuICAgIH1cbiAgICBpZiAoaGVhZGVycykge1xuICAgICAgdGhpcy5oYW5kbGVFZGl0SGVhZGVycyhoZWFkZXJzKTtcbiAgICB9XG4gICAgaWYgKG9wZXJhdGlvbk5hbWUpIHtcbiAgICAgIHRoaXMuaGFuZGxlRWRpdE9wZXJhdGlvbk5hbWUob3BlcmF0aW9uTmFtZSk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlUmVzaXplU3RhcnQgPSAoZG93bkV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCF0aGlzLl9kaWRDbGlja0RyYWdCYXIoZG93bkV2ZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGRvd25FdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY29uc3Qgb2Zmc2V0ID0gZG93bkV2ZW50LmNsaWVudFggLSBnZXRMZWZ0KGRvd25FdmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuXG4gICAgbGV0IG9uTW91c2VNb3ZlOiBPbk1vdXNlTW92ZUZuID0gbW92ZUV2ZW50ID0+IHtcbiAgICAgIGlmIChtb3ZlRXZlbnQuYnV0dG9ucyA9PT0gMCkge1xuICAgICAgICByZXR1cm4gb25Nb3VzZVVwISgpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlZGl0b3JCYXIgPSB0aGlzLmVkaXRvckJhckNvbXBvbmVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IGxlZnRTaXplID0gbW92ZUV2ZW50LmNsaWVudFggLSBnZXRMZWZ0KGVkaXRvckJhcikgLSBvZmZzZXQ7XG4gICAgICBjb25zdCByaWdodFNpemUgPSBlZGl0b3JCYXIuY2xpZW50V2lkdGggLSBsZWZ0U2l6ZTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBlZGl0b3JGbGV4OiBsZWZ0U2l6ZSAvIHJpZ2h0U2l6ZSB9KTtcbiAgICAgIGRlYm91bmNlKDUwMCwgKCkgPT5cbiAgICAgICAgdGhpcy5fc3RvcmFnZS5zZXQoJ2VkaXRvckZsZXgnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnN0YXRlLmVkaXRvckZsZXgpKSxcbiAgICAgICkoKTtcbiAgICB9O1xuXG4gICAgbGV0IG9uTW91c2VVcDogT25Nb3VzZVVwRm4gPSAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSEpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCEpO1xuICAgICAgb25Nb3VzZU1vdmUgPSBudWxsO1xuICAgICAgb25Nb3VzZVVwID0gbnVsbDtcbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xuICB9O1xuXG4gIGhhbmRsZVJlc2V0UmVzaXplID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoeyBlZGl0b3JGbGV4OiAxIH0pO1xuICAgIHRoaXMuX3N0b3JhZ2Uuc2V0KCdlZGl0b3JGbGV4JywgSlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0ZS5lZGl0b3JGbGV4KSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfZGlkQ2xpY2tEcmFnQmFyKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSB7XG4gICAgLy8gT25seSBmb3IgcHJpbWFyeSB1bm1vZGlmaWVkIGNsaWNrc1xuICAgIGlmIChldmVudC5idXR0b24gIT09IDAgfHwgZXZlbnQuY3RybEtleSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQ7XG4gICAgLy8gV2UgdXNlIGNvZGVtaXJyb3IncyBndXR0ZXIgYXMgdGhlIGRyYWcgYmFyLlxuICAgIGlmICh0YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoJ0NvZGVNaXJyb3ItZ3V0dGVyJykgIT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gU3BlY2lmaWNhbGx5IHRoZSByZXN1bHQgd2luZG93J3MgZHJhZyBiYXIuXG4gICAgY29uc3QgcmVzdWx0V2luZG93ID0gdGhpcy5yZXN1bHRWaWV3ZXJFbGVtZW50O1xuICAgIHdoaWxlICh0YXJnZXQpIHtcbiAgICAgIGlmICh0YXJnZXQgPT09IHJlc3VsdFdpbmRvdykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnROb2RlIGFzIEVsZW1lbnQ7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRG9jc1Jlc2l6ZVN0YXJ0OiBNb3VzZUV2ZW50SGFuZGxlcjxcbiAgICBIVE1MRGl2RWxlbWVudFxuICA+ID0gZG93bkV2ZW50ID0+IHtcbiAgICBkb3duRXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IGhhZFdpZHRoID0gdGhpcy5zdGF0ZS5kb2NFeHBsb3JlcldpZHRoO1xuICAgIGNvbnN0IG9mZnNldCA9IGRvd25FdmVudC5jbGllbnRYIC0gZ2V0TGVmdChkb3duRXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcblxuICAgIGxldCBvbk1vdXNlTW92ZTogT25Nb3VzZU1vdmVGbiA9IG1vdmVFdmVudCA9PiB7XG4gICAgICBpZiAobW92ZUV2ZW50LmJ1dHRvbnMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG9uTW91c2VVcCEoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXBwID0gdGhpcy5ncmFwaGlxbENvbnRhaW5lciBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IGN1cnNvclBvcyA9IG1vdmVFdmVudC5jbGllbnRYIC0gZ2V0TGVmdChhcHApIC0gb2Zmc2V0O1xuICAgICAgY29uc3QgZG9jc1NpemUgPSBhcHAuY2xpZW50V2lkdGggLSBjdXJzb3JQb3M7XG5cbiAgICAgIGlmIChkb2NzU2l6ZSA8IDEwMCkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25Ub2dnbGVEb2NzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhpcy5wcm9wcy5vblRvZ2dsZURvY3MoIXRoaXMuc3RhdGUuZG9jRXhwbG9yZXJPcGVuKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zdG9yYWdlLnNldChcbiAgICAgICAgICAnZG9jRXhwbG9yZXJPcGVuJyxcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnN0YXRlLmRvY0V4cGxvcmVyT3BlbiksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBkb2NFeHBsb3Jlck9wZW46IGZhbHNlIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgZG9jRXhwbG9yZXJPcGVuOiB0cnVlLFxuICAgICAgICAgIGRvY0V4cGxvcmVyV2lkdGg6IE1hdGgubWluKGRvY3NTaXplLCA2NTApLFxuICAgICAgICB9KTtcbiAgICAgICAgZGVib3VuY2UoNTAwLCAoKSA9PlxuICAgICAgICAgIHRoaXMuX3N0b3JhZ2Uuc2V0KFxuICAgICAgICAgICAgJ2RvY0V4cGxvcmVyV2lkdGgnLFxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0ZS5kb2NFeHBsb3JlcldpZHRoKSxcbiAgICAgICAgICApLFxuICAgICAgICApKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9zdG9yYWdlLnNldChcbiAgICAgICAgJ2RvY0V4cGxvcmVyT3BlbicsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RhdGUuZG9jRXhwbG9yZXJPcGVuKSxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGxldCBvbk1vdXNlVXA6IE9uTW91c2VVcEZuID0gKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnN0YXRlLmRvY0V4cGxvcmVyT3Blbikge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZG9jRXhwbG9yZXJXaWR0aDogaGFkV2lkdGggfSk7XG4gICAgICAgIGRlYm91bmNlKDUwMCwgKCkgPT5cbiAgICAgICAgICB0aGlzLl9zdG9yYWdlLnNldChcbiAgICAgICAgICAgICdkb2NFeHBsb3JlcldpZHRoJyxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RhdGUuZG9jRXhwbG9yZXJXaWR0aCksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSgpO1xuICAgICAgfVxuXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSEpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCEpO1xuICAgICAgb25Nb3VzZU1vdmUgPSBudWxsO1xuICAgICAgb25Nb3VzZVVwID0gbnVsbDtcbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUhKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcbiAgfTtcblxuICBwcml2YXRlIGhhbmRsZURvY3NSZXNldFJlc2l6ZSA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGRvY0V4cGxvcmVyV2lkdGg6IERFRkFVTFRfRE9DX0VYUExPUkVSX1dJRFRILFxuICAgIH0pO1xuICAgIGRlYm91bmNlKDUwMCwgKCkgPT5cbiAgICAgIHRoaXMuX3N0b3JhZ2Uuc2V0KFxuICAgICAgICAnZG9jRXhwbG9yZXJXaWR0aCcsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RhdGUuZG9jRXhwbG9yZXJXaWR0aCksXG4gICAgICApLFxuICAgICkoKTtcbiAgfTtcblxuICAvLyBQcmV2ZW50IGNsaWNraW5nIG9uIHRoZSB0YWIgYnV0dG9uIGZyb20gcHJvcGFnYXRpbmcgdG8gdGhlIHJlc2l6ZXIuXG4gIHByaXZhdGUgaGFuZGxlVGFiQ2xpY2tQcm9wb2dhdGlvbjogTW91c2VFdmVudEhhbmRsZXI8XG4gICAgSFRNTERpdkVsZW1lbnRcbiAgPiA9IGRvd25FdmVudCA9PiB7XG4gICAgZG93bkV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZG93bkV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlT3BlbkhlYWRlckVkaXRvclRhYjogTW91c2VFdmVudEhhbmRsZXI8XG4gICAgSFRNTERpdkVsZW1lbnRcbiAgPiA9IF9jbGlja0V2ZW50ID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGhlYWRlckVkaXRvckFjdGl2ZTogdHJ1ZSxcbiAgICAgIHZhcmlhYmxlRWRpdG9yQWN0aXZlOiBmYWxzZSxcbiAgICAgIHNlY29uZGFyeUVkaXRvck9wZW46IHRydWUsXG4gICAgfSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVPcGVuVmFyaWFibGVFZGl0b3JUYWI6IE1vdXNlRXZlbnRIYW5kbGVyPFxuICAgIEhUTUxEaXZFbGVtZW50XG4gID4gPSBfY2xpY2tFdmVudCA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBoZWFkZXJFZGl0b3JBY3RpdmU6IGZhbHNlLFxuICAgICAgdmFyaWFibGVFZGl0b3JBY3RpdmU6IHRydWUsXG4gICAgICBzZWNvbmRhcnlFZGl0b3JPcGVuOiB0cnVlLFxuICAgIH0pO1xuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlU2Vjb25kYXJ5RWRpdG9yUmVzaXplU3RhcnQ6IE1vdXNlRXZlbnRIYW5kbGVyPFxuICAgIEhUTUxEaXZFbGVtZW50XG4gID4gPSBkb3duRXZlbnQgPT4ge1xuICAgIGRvd25FdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgbGV0IGRpZE1vdmUgPSBmYWxzZTtcbiAgICBjb25zdCB3YXNPcGVuID0gdGhpcy5zdGF0ZS5zZWNvbmRhcnlFZGl0b3JPcGVuO1xuICAgIGNvbnN0IGhhZEhlaWdodCA9IHRoaXMuc3RhdGUuc2Vjb25kYXJ5RWRpdG9ySGVpZ2h0O1xuICAgIGNvbnN0IG9mZnNldCA9IGRvd25FdmVudC5jbGllbnRZIC0gZ2V0VG9wKGRvd25FdmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuXG4gICAgbGV0IG9uTW91c2VNb3ZlOiBPbk1vdXNlTW92ZUZuID0gbW92ZUV2ZW50ID0+IHtcbiAgICAgIGlmIChtb3ZlRXZlbnQuYnV0dG9ucyA9PT0gMCkge1xuICAgICAgICByZXR1cm4gb25Nb3VzZVVwISgpO1xuICAgICAgfVxuXG4gICAgICBkaWRNb3ZlID0gdHJ1ZTtcblxuICAgICAgY29uc3QgZWRpdG9yQmFyID0gdGhpcy5lZGl0b3JCYXJDb21wb25lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBjb25zdCB0b3BTaXplID0gbW92ZUV2ZW50LmNsaWVudFkgLSBnZXRUb3AoZWRpdG9yQmFyKSAtIG9mZnNldDtcbiAgICAgIGNvbnN0IGJvdHRvbVNpemUgPSBlZGl0b3JCYXIuY2xpZW50SGVpZ2h0IC0gdG9wU2l6ZTtcbiAgICAgIGlmIChib3R0b21TaXplIDwgNjApIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgc2Vjb25kYXJ5RWRpdG9yT3BlbjogZmFsc2UsXG4gICAgICAgICAgc2Vjb25kYXJ5RWRpdG9ySGVpZ2h0OiBoYWRIZWlnaHQsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgc2Vjb25kYXJ5RWRpdG9yT3BlbjogdHJ1ZSxcbiAgICAgICAgICBzZWNvbmRhcnlFZGl0b3JIZWlnaHQ6IGJvdHRvbVNpemUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZGVib3VuY2UoNTAwLCAoKSA9PlxuICAgICAgICB0aGlzLl9zdG9yYWdlLnNldChcbiAgICAgICAgICAnc2Vjb25kYXJ5RWRpdG9ySGVpZ2h0JyxcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnN0YXRlLnNlY29uZGFyeUVkaXRvckhlaWdodCksXG4gICAgICAgICksXG4gICAgICApKCk7XG4gICAgfTtcblxuICAgIGxldCBvbk1vdXNlVXA6IE9uTW91c2VVcEZuID0gKCkgPT4ge1xuICAgICAgaWYgKCFkaWRNb3ZlKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzZWNvbmRhcnlFZGl0b3JPcGVuOiAhd2FzT3BlbiB9KTtcbiAgICAgIH1cblxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUhKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXAhKTtcbiAgICAgIG9uTW91c2VNb3ZlID0gbnVsbDtcbiAgICAgIG9uTW91c2VVcCA9IG51bGw7XG4gICAgfTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcbiAgfTtcbn1cblxuLy8gLy8gQ29uZmlndXJlIHRoZSBVSSBieSBwcm92aWRpbmcgdGhpcyBDb21wb25lbnQgYXMgYSBjaGlsZCBvZiBHcmFwaGlRTC5cbmZ1bmN0aW9uIEdyYXBoaVFMTG9nbzxUUHJvcHM+KHByb3BzOiBQcm9wc1dpdGhDaGlsZHJlbjxUUHJvcHM+KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJ0aXRsZVwiPlxuICAgICAge3Byb3BzLmNoaWxkcmVuIHx8IChcbiAgICAgICAgPHNwYW4+XG4gICAgICAgICAgeydHcmFwaCd9XG4gICAgICAgICAgPGVtPnsnaSd9PC9lbT5cbiAgICAgICAgICB7J1FMJ31cbiAgICAgICAgPC9zcGFuPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbkdyYXBoaVFMTG9nby5kaXNwbGF5TmFtZSA9ICdHcmFwaGlRTExvZ28nO1xuXG4vLyBDb25maWd1cmUgdGhlIFVJIGJ5IHByb3ZpZGluZyB0aGlzIENvbXBvbmVudCBhcyBhIGNoaWxkIG9mIEdyYXBoaVFMLlxuZnVuY3Rpb24gR3JhcGhpUUxUb29sYmFyPFRQcm9wcz4ocHJvcHM6IFByb3BzV2l0aENoaWxkcmVuPFRQcm9wcz4pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInRvb2xiYXJcIiByb2xlPVwidG9vbGJhclwiIGFyaWEtbGFiZWw9XCJFZGl0b3IgQ29tbWFuZHNcIj5cbiAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbkdyYXBoaVFMVG9vbGJhci5kaXNwbGF5TmFtZSA9ICdHcmFwaGlRTFRvb2xiYXInO1xuXG4vLyBDb25maWd1cmUgdGhlIFVJIGJ5IHByb3ZpZGluZyB0aGlzIENvbXBvbmVudCBhcyBhIGNoaWxkIG9mIEdyYXBoaVFMLlxuZnVuY3Rpb24gR3JhcGhpUUxGb290ZXI8VFByb3BzPihwcm9wczogUHJvcHNXaXRoQ2hpbGRyZW48VFByb3BzPikge1xuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJmb290ZXJcIj57cHJvcHMuY2hpbGRyZW59PC9kaXY+O1xufVxuR3JhcGhpUUxGb290ZXIuZGlzcGxheU5hbWUgPSAnR3JhcGhpUUxGb290ZXInO1xuXG5jb25zdCBmb3JtYXRTaW5nbGVFcnJvciA9IChlcnJvcjogRXJyb3IpID0+ICh7XG4gIC4uLmVycm9yLFxuICAvLyBSYWlzZSB0aGVzZSBkZXRhaWxzIGV2ZW4gaWYgdGhleSdyZSBub24tZW51bWVyYWJsZVxuICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLFxuICBzdGFjazogZXJyb3Iuc3RhY2ssXG59KTtcblxuY29uc3QgZGVmYXVsdFF1ZXJ5ID0gYCMgV2VsY29tZSB0byBHcmFwaGlRTFxuI1xuIyBHcmFwaGlRTCBpcyBhbiBpbi1icm93c2VyIHRvb2wgZm9yIHdyaXRpbmcsIHZhbGlkYXRpbmcsIGFuZFxuIyB0ZXN0aW5nIEdyYXBoUUwgcXVlcmllcy5cbiNcbiMgVHlwZSBxdWVyaWVzIGludG8gdGhpcyBzaWRlIG9mIHRoZSBzY3JlZW4sIGFuZCB5b3Ugd2lsbCBzZWUgaW50ZWxsaWdlbnRcbiMgdHlwZWFoZWFkcyBhd2FyZSBvZiB0aGUgY3VycmVudCBHcmFwaFFMIHR5cGUgc2NoZW1hIGFuZCBsaXZlIHN5bnRheCBhbmRcbiMgdmFsaWRhdGlvbiBlcnJvcnMgaGlnaGxpZ2h0ZWQgd2l0aGluIHRoZSB0ZXh0LlxuI1xuIyBHcmFwaFFMIHF1ZXJpZXMgdHlwaWNhbGx5IHN0YXJ0IHdpdGggYSBcIntcIiBjaGFyYWN0ZXIuIExpbmVzIHRoYXQgc3RhcnRcbiMgd2l0aCBhICMgYXJlIGlnbm9yZWQuXG4jXG4jIEFuIGV4YW1wbGUgR3JhcGhRTCBxdWVyeSBtaWdodCBsb29rIGxpa2U6XG4jXG4jICAgICB7XG4jICAgICAgIGZpZWxkKGFyZzogXCJ2YWx1ZVwiKSB7XG4jICAgICAgICAgc3ViRmllbGRcbiMgICAgICAgfVxuIyAgICAgfVxuI1xuIyBLZXlib2FyZCBzaG9ydGN1dHM6XG4jXG4jICBQcmV0dGlmeSBRdWVyeTogIFNoaWZ0LUN0cmwtUCAob3IgcHJlc3MgdGhlIHByZXR0aWZ5IGJ1dHRvbiBhYm92ZSlcbiNcbiMgICAgIE1lcmdlIFF1ZXJ5OiAgU2hpZnQtQ3RybC1NIChvciBwcmVzcyB0aGUgbWVyZ2UgYnV0dG9uIGFib3ZlKVxuI1xuIyAgICAgICBSdW4gUXVlcnk6ICBDdHJsLUVudGVyIChvciBwcmVzcyB0aGUgcGxheSBidXR0b24gYWJvdmUpXG4jXG4jICAgQXV0byBDb21wbGV0ZTogIEN0cmwtU3BhY2UgKG9yIGp1c3Qgc3RhcnQgdHlwaW5nKVxuI1xuXG5gO1xuXG4vLyBEdWNrLXR5cGUgcHJvbWlzZSBkZXRlY3Rpb24uXG5mdW5jdGlvbiBpc1Byb21pc2U8VD4odmFsdWU6IFByb21pc2U8VD4gfCBhbnkpOiB2YWx1ZSBpcyBQcm9taXNlPFQ+IHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbic7XG59XG5cbi8vIER1Y2stdHlwZSBPYnNlcnZhYmxlLnRha2UoMSkudG9Qcm9taXNlKClcbmZ1bmN0aW9uIG9ic2VydmFibGVUb1Byb21pc2U8VD4ob2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxUPik6IFByb21pc2U8VD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG9ic2VydmFibGUuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHYgPT4ge1xuICAgICAgICByZXNvbHZlKHYpO1xuICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogcmVqZWN0LFxuICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignbm8gdmFsdWUgcmVzb2x2ZWQnKSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9KTtcbn1cblxuLy8gRHVjay10eXBlIG9ic2VydmFibGUgZGV0ZWN0aW9uLlxuZnVuY3Rpb24gaXNPYnNlcnZhYmxlPFQ+KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBPYnNlcnZhYmxlPFQ+IHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgJ3N1YnNjcmliZScgaW4gdmFsdWUgJiZcbiAgICB0eXBlb2YgdmFsdWUuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzQXN5bmNJdGVyYWJsZShpbnB1dDogdW5rbm93bik6IGlucHV0IGlzIEFzeW5jSXRlcmFibGU8dW5rbm93bj4ge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcgJiZcbiAgICBpbnB1dCAhPT0gbnVsbCAmJlxuICAgIC8vIFNvbWUgYnJvd3NlcnMgc3RpbGwgZG9uJ3QgaGF2ZSBTeW1ib2wuYXN5bmNJdGVyYXRvciBpbXBsZW1lbnRlZCAoaU9TIFNhZmFyaSlcbiAgICAvLyBUaGF0IG1lYW5zIGV2ZXJ5IGN1c3RvbSBBc3luY0l0ZXJhYmxlIG11c3QgYmUgYnVpbHQgdXNpbmcgYSBBc3luY0dlbmVyYXRvckZ1bmN0aW9uIChhc3luYyBmdW5jdGlvbiAqICgpIHt9KVxuICAgICgoaW5wdXQgYXMgYW55KVtTeW1ib2wudG9TdHJpbmdUYWddID09PSAnQXN5bmNHZW5lcmF0b3InIHx8XG4gICAgICBTeW1ib2wuYXN5bmNJdGVyYXRvciBpbiBpbnB1dClcbiAgKTtcbn1cblxuZnVuY3Rpb24gYXN5bmNJdGVyYWJsZVRvUHJvbWlzZTxUPihcbiAgaW5wdXQ6IEFzeW5jSXRlcmFibGU8VD4gfCBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8VD4sXG4pOiBQcm9taXNlPFQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAvLyBBbHNvIHN1cHBvcnQgQXN5bmNHZW5lcmF0b3Igb24gU2FmYXJpIGlPUy5cbiAgICAvLyBBcyBtZW50aW9uZWQgaW4gdGhlIGlzQXN5bmNJdGVyYWJsZSBmdW5jdGlvbiB0aGVyZSBpcyBubyBTeW1ib2wuYXN5bmNJdGVyYXRvciBhdmFpbGFibGVcbiAgICAvLyBzbyBldmVyeSBBc3luY0l0ZXJhYmxlIG11c3QgYmUgaW1wbGVtZW50ZWQgdXNpbmcgQXN5bmNHZW5lcmF0b3IuXG4gICAgY29uc3QgaXRlcmF0b3JSZXR1cm4gPSAoJ3JldHVybicgaW4gaW5wdXRcbiAgICAgID8gaW5wdXRcbiAgICAgIDogaW5wdXRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKClcbiAgICApLnJldHVybj8uYmluZChpbnB1dCk7XG4gICAgY29uc3QgaXRlcmF0b3JOZXh0ID0gKCduZXh0JyBpbiBpbnB1dFxuICAgICAgPyBpbnB1dFxuICAgICAgOiBpbnB1dFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKVxuICAgICkubmV4dC5iaW5kKGlucHV0KTtcblxuICAgIGl0ZXJhdG9yTmV4dCgpXG4gICAgICAudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICByZXNvbHZlKHJlc3VsdC52YWx1ZSk7XG4gICAgICAgIC8vIGVuc3VyZSBjbGVhbnVwXG4gICAgICAgIGl0ZXJhdG9yUmV0dXJuPy4oKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGZldGNoZXJSZXR1cm5Ub1Byb21pc2UoXG4gIGZldGNoZXJSZXN1bHQ6IEZldGNoZXJSZXR1cm5UeXBlLFxuKTogUHJvbWlzZTxGZXRjaGVyUmVzdWx0PiB7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmV0Y2hlclJlc3VsdCkudGhlbihmZXRjaGVyUmVzdWx0ID0+IHtcbiAgICBpZiAoaXNBc3luY0l0ZXJhYmxlKGZldGNoZXJSZXN1bHQpKSB7XG4gICAgICByZXR1cm4gYXN5bmNJdGVyYWJsZVRvUHJvbWlzZShmZXRjaGVyUmVzdWx0KTtcbiAgICB9IGVsc2UgaWYgKGlzT2JzZXJ2YWJsZShmZXRjaGVyUmVzdWx0KSkge1xuICAgICAgcmV0dXJuIG9ic2VydmFibGVUb1Byb21pc2UoZmV0Y2hlclJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiBmZXRjaGVyUmVzdWx0O1xuICB9KTtcbn1cblxuLy8gRGV0ZXJtaW5lcyBpZiB0aGUgUmVhY3QgY2hpbGQgaXMgb2YgdGhlIHNhbWUgdHlwZSBvZiB0aGUgcHJvdmlkZWQgUmVhY3QgY29tcG9uZW50XG5mdW5jdGlvbiBpc0NoaWxkQ29tcG9uZW50VHlwZTxUIGV4dGVuZHMgQ29tcG9uZW50VHlwZT4oXG4gIGNoaWxkOiBhbnksXG4gIGNvbXBvbmVudDogVCxcbik6IGNoaWxkIGlzIFQge1xuICBpZiAoXG4gICAgY2hpbGQ/LnR5cGU/LmRpc3BsYXlOYW1lICYmXG4gICAgY2hpbGQudHlwZS5kaXNwbGF5TmFtZSA9PT0gY29tcG9uZW50LmRpc3BsYXlOYW1lXG4gICkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGNoaWxkLnR5cGUgPT09IGNvbXBvbmVudDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1FQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQXVFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBbUJBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFGQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUF5TkE7QUFDQTtBQUNBO0FBM05BO0FBaTBCQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFJQTtBQUNBO0FBMzBCQTtBQTYwQkE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBT0E7QUFDQTtBQUNBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBbjhCQTtBQXE4QkE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTk4QkE7QUErK0JBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFoQ0E7QUE0aENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF0aUNBO0FBd2lDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdmpDQTtBQXlqQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXRrQ0E7QUE2a0NBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBdG1DQTtBQXdtQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE5bUNBO0FBZ25DQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXZuQ0E7QUF5bkNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBOW5DQTtBQWdvQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQTNvQ0E7QUE2b0NBO0FBQ0E7QUFDQTtBQS9vQ0E7QUFtcENBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTVxQ0E7QUE4cUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUF2ckNBO0FBeXJDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBbHNDQTtBQXlzQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXR0Q0E7QUF3dENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF4dkNBO0FBMHZDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQTd2Q0E7QUFzeENBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFNQTtBQUNBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbjFDQTtBQXExQ0E7QUFDQTtBQURBO0FBR0E7QUFNQTtBQUNBO0FBLzFDQTtBQW8yQ0E7QUFDQTtBQUNBO0FBQ0E7QUF2MkNBO0FBMjJDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQWozQ0E7QUFxM0NBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBMzNDQTtBQSszQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBNzZDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFRQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUExQkE7QUE0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFPQTtBQUNBO0FBTUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBS0E7QUFDQTtBQUNBO0FBSEE7QUFNQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQVVBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQURBO0FBTUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVEE7QUFXQTtBQUNBO0FBQ0E7QUFIQTtBQVNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFVQTtBQUNBO0FBQ0E7QUFIQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBT0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFoQkE7QUFtQkE7QUFDQTtBQUNBO0FBSEE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFOQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBUEE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBUkE7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWJBO0FBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVpBO0FBaUJBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVkE7QUFpQkE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBSEE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBSEE7QUFXQTtBQUNBO0FBQ0E7QUFvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFIQTtBQU9BO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFGQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUZBO0FBQ0E7QUFNQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFEQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFDQTtBQUNBO0FBSEE7QUFPQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBZEE7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQWdKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFnUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQXB6Q0E7QUFDQTtBQUNBOzs7QUFGQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQ0E7QUFxOUNBO0FBQ0E7QUFDQTtBQUFBO0FBVUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBR0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/GraphiQL.tsx\n");
3243
3244/***/ }),
3245
3246/***/ "./components/HeaderEditor.tsx":
3247/*!*************************************!*\
3248 !*** ./components/HeaderEditor.tsx ***!
3249 \*************************************/
3250/*! no static exports found */
3251/***/ (function(module, exports, __webpack_require__) {
3252
3253eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! ../utility/onHasCompletion */ \"./utility/onHasCompletion.ts\"), __webpack_require__(/*! ../utility/commonKeys */ \"./utility/commonKeys.ts\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _onHasCompletion, _commonKeys) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.HeaderEditor = void 0;\n _react = _interopRequireDefault(_react);\n _onHasCompletion = _interopRequireDefault(_onHasCompletion);\n _commonKeys = _interopRequireDefault(_commonKeys);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n /**\n * HeaderEditor\n *\n * An instance of CodeMirror for editing headers to be passed with the GraphQL request.\n *\n * Props:\n *\n * - value: The text of the editor.\n * - onEdit: A function called when the editor changes, given the edited text.\n * - readOnly: Turns the editor to read-only mode.\n *\n */\n class HeaderEditor extends _react.default.Component {\n constructor(props) {\n super(props); // Keep a cached version of the value, this cache will be updated when the\n // editor is updated, which can later be used to protect the editor from\n // unnecessary updates during the update lifecycle.\n\n _defineProperty(this, \"CodeMirror\", void 0);\n\n _defineProperty(this, \"editor\", null);\n\n _defineProperty(this, \"cachedValue\", void 0);\n\n _defineProperty(this, \"_node\", null);\n\n _defineProperty(this, \"ignoreChangeEvent\", false);\n\n _defineProperty(this, \"_onKeyUp\", (_cm, event) => {\n const code = event.keyCode;\n\n if (!this.editor) {\n return;\n }\n\n if (code >= 65 && code <= 90 || // letters\n !event.shiftKey && code >= 48 && code <= 57 || // numbers\n event.shiftKey && code === 189 || // underscore\n event.shiftKey && code === 222 // \"\n ) {\n this.editor.execCommand('autocomplete');\n }\n });\n\n _defineProperty(this, \"_onEdit\", () => {\n if (!this.editor) {\n return;\n }\n\n if (!this.ignoreChangeEvent) {\n this.cachedValue = this.editor.getValue();\n\n if (this.props.onEdit) {\n this.props.onEdit(this.cachedValue);\n }\n }\n });\n\n _defineProperty(this, \"_onHasCompletion\", (instance, changeObj) => {\n (0, _onHasCompletion.default)(instance, changeObj, this.props.onHintInformationRender);\n });\n\n this.cachedValue = props.value || '';\n }\n\n componentDidMount() {\n // Lazily require to ensure requiring GraphiQL outside of a Browser context\n // does not produce an error.\n this.CodeMirror = __webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\");\n\n __webpack_require__(/*! codemirror/addon/hint/show-hint */ \"../../../node_modules/codemirror/addon/hint/show-hint.js\");\n\n __webpack_require__(/*! codemirror/addon/edit/matchbrackets */ \"../../../node_modules/codemirror/addon/edit/matchbrackets.js\");\n\n __webpack_require__(/*! codemirror/addon/edit/closebrackets */ \"../../../node_modules/codemirror/addon/edit/closebrackets.js\");\n\n __webpack_require__(/*! codemirror/addon/fold/brace-fold */ \"../../../node_modules/codemirror/addon/fold/brace-fold.js\");\n\n __webpack_require__(/*! codemirror/addon/fold/foldgutter */ \"../../../node_modules/codemirror/addon/fold/foldgutter.js\");\n\n __webpack_require__(/*! codemirror/addon/lint/lint */ \"../../../node_modules/codemirror/addon/lint/lint.js\");\n\n __webpack_require__(/*! codemirror/addon/search/searchcursor */ \"../../../node_modules/codemirror/addon/search/searchcursor.js\");\n\n __webpack_require__(/*! codemirror/addon/search/jump-to-line */ \"../../../node_modules/codemirror/addon/search/jump-to-line.js\");\n\n __webpack_require__(/*! codemirror/addon/dialog/dialog */ \"../../../node_modules/codemirror/addon/dialog/dialog.js\");\n\n __webpack_require__(/*! codemirror/mode/javascript/javascript */ \"../../../node_modules/codemirror/mode/javascript/javascript.js\");\n\n __webpack_require__(/*! codemirror/keymap/sublime */ \"../../../node_modules/codemirror/keymap/sublime.js\");\n\n const editor = this.editor = this.CodeMirror(this._node, {\n value: this.props.value || '',\n lineNumbers: true,\n tabSize: 2,\n mode: {\n name: 'javascript',\n json: true\n },\n theme: this.props.editorTheme || 'graphiql',\n keyMap: 'sublime',\n autoCloseBrackets: true,\n matchBrackets: true,\n showCursorWhenSelecting: true,\n readOnly: this.props.readOnly ? 'nocursor' : false,\n foldGutter: {\n minFoldSize: 4\n },\n gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter'],\n extraKeys: {\n 'Cmd-Space': () => this.editor.showHint({\n completeSingle: false,\n container: this._node\n }),\n 'Ctrl-Space': () => this.editor.showHint({\n completeSingle: false,\n container: this._node\n }),\n 'Alt-Space': () => this.editor.showHint({\n completeSingle: false,\n container: this._node\n }),\n 'Shift-Space': () => this.editor.showHint({\n completeSingle: false,\n container: this._node\n }),\n 'Cmd-Enter': () => {\n if (this.props.onRunQuery) {\n this.props.onRunQuery();\n }\n },\n 'Ctrl-Enter': () => {\n if (this.props.onRunQuery) {\n this.props.onRunQuery();\n }\n },\n 'Shift-Ctrl-P': () => {\n if (this.props.onPrettifyQuery) {\n this.props.onPrettifyQuery();\n }\n },\n 'Shift-Ctrl-M': () => {\n if (this.props.onMergeQuery) {\n this.props.onMergeQuery();\n }\n },\n ..._commonKeys.default\n }\n });\n editor.on('change', this._onEdit);\n editor.on('keyup', this._onKeyUp);\n editor.on('hasCompletion', this._onHasCompletion);\n }\n\n componentDidUpdate(prevProps) {\n this.CodeMirror = __webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\");\n\n if (!this.editor) {\n return;\n } // Ensure the changes caused by this update are not interpretted as\n // user-input changes which could otherwise result in an infinite\n // event loop.\n\n\n this.ignoreChangeEvent = true;\n\n if (this.props.value !== prevProps.value && this.props.value !== this.cachedValue) {\n const thisValue = this.props.value || '';\n this.cachedValue = thisValue;\n this.editor.setValue(thisValue);\n }\n\n this.ignoreChangeEvent = false;\n }\n\n componentWillUnmount() {\n if (!this.editor) {\n return;\n }\n\n this.editor.off('change', this._onEdit);\n this.editor.off('keyup', this._onKeyUp);\n this.editor.off('hasCompletion', this._onHasCompletion);\n this.editor = null;\n }\n\n render() {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"codemirrorWrap\" // This horrible hack is necessary because a simple display none toggle\n // causes one of the editors' gutters to break otherwise.\n ,\n style: {\n position: this.props.active ? 'relative' : 'absolute',\n visibility: this.props.active ? 'visible' : 'hidden'\n },\n ref: node => {\n this._node = node;\n }\n });\n }\n /**\n * Public API for retrieving the CodeMirror instance from this\n * React component.\n */\n\n\n getCodeMirror() {\n return this.editor;\n }\n /**\n * Public API for retrieving the DOM client height for this component.\n */\n\n\n getClientHeight() {\n return this._node && this._node.clientHeight;\n }\n\n }\n\n _exports.HeaderEditor = HeaderEditor;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0hlYWRlckVkaXRvci50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvSGVhZGVyRWRpdG9yLnRzeD9iYmU1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgdHlwZSAqIGFzIENNIGZyb20gJ2NvZGVtaXJyb3InO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IG9uSGFzQ29tcGxldGlvbiBmcm9tICcuLi91dGlsaXR5L29uSGFzQ29tcGxldGlvbic7XG5pbXBvcnQgY29tbW9uS2V5cyBmcm9tICcuLi91dGlsaXR5L2NvbW1vbktleXMnO1xuXG5kZWNsYXJlIG1vZHVsZSBDb2RlTWlycm9yIHtcbiAgZXhwb3J0IGludGVyZmFjZSBFZGl0b3IgZXh0ZW5kcyBDTS5FZGl0b3Ige31cbiAgZXhwb3J0IGludGVyZmFjZSBTaG93SGludE9wdGlvbnMge1xuICAgIGNvbXBsZXRlU2luZ2xlOiBib29sZWFuO1xuICAgIGhpbnQ6IGFueTtcbiAgICBjb250YWluZXI6IEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgfVxufVxuXG50eXBlIEhlYWRlckVkaXRvclByb3BzID0ge1xuICB2YWx1ZT86IHN0cmluZztcbiAgb25FZGl0OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgcmVhZE9ubHk/OiBib29sZWFuO1xuICBvbkhpbnRJbmZvcm1hdGlvblJlbmRlcjogKHZhbHVlOiBIVE1MRGl2RWxlbWVudCkgPT4gdm9pZDtcbiAgb25QcmV0dGlmeVF1ZXJ5OiAodmFsdWU/OiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uTWVyZ2VRdWVyeTogKHZhbHVlPzogc3RyaW5nKSA9PiB2b2lkO1xuICBvblJ1blF1ZXJ5OiAodmFsdWU/OiBzdHJpbmcpID0+IHZvaWQ7XG4gIGVkaXRvclRoZW1lPzogc3RyaW5nO1xuICBhY3RpdmU/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBIZWFkZXJFZGl0b3JcbiAqXG4gKiBBbiBpbnN0YW5jZSBvZiBDb2RlTWlycm9yIGZvciBlZGl0aW5nIGhlYWRlcnMgdG8gYmUgcGFzc2VkIHdpdGggdGhlIEdyYXBoUUwgcmVxdWVzdC5cbiAqXG4gKiBQcm9wczpcbiAqXG4gKiAgIC0gdmFsdWU6IFRoZSB0ZXh0IG9mIHRoZSBlZGl0b3IuXG4gKiAgIC0gb25FZGl0OiBBIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIHRoZSBlZGl0b3IgY2hhbmdlcywgZ2l2ZW4gdGhlIGVkaXRlZCB0ZXh0LlxuICogICAtIHJlYWRPbmx5OiBUdXJucyB0aGUgZWRpdG9yIHRvIHJlYWQtb25seSBtb2RlLlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIEhlYWRlckVkaXRvciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxIZWFkZXJFZGl0b3JQcm9wcz4ge1xuICBDb2RlTWlycm9yOiBhbnk7XG4gIGVkaXRvcjogKENNLkVkaXRvciAmIHsgb3B0aW9uczogYW55OyBzaG93SGludDogYW55IH0pIHwgbnVsbCA9IG51bGw7XG4gIGNhY2hlZFZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgX25vZGU6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIGlnbm9yZUNoYW5nZUV2ZW50OiBib29sZWFuID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBIZWFkZXJFZGl0b3JQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIC8vIEtlZXAgYSBjYWNoZWQgdmVyc2lvbiBvZiB0aGUgdmFsdWUsIHRoaXMgY2FjaGUgd2lsbCBiZSB1cGRhdGVkIHdoZW4gdGhlXG4gICAgLy8gZWRpdG9yIGlzIHVwZGF0ZWQsIHdoaWNoIGNhbiBsYXRlciBiZSB1c2VkIHRvIHByb3RlY3QgdGhlIGVkaXRvciBmcm9tXG4gICAgLy8gdW5uZWNlc3NhcnkgdXBkYXRlcyBkdXJpbmcgdGhlIHVwZGF0ZSBsaWZlY3ljbGUuXG4gICAgdGhpcy5jYWNoZWRWYWx1ZSA9IHByb3BzLnZhbHVlIHx8ICcnO1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgLy8gTGF6aWx5IHJlcXVpcmUgdG8gZW5zdXJlIHJlcXVpcmluZyBHcmFwaGlRTCBvdXRzaWRlIG9mIGEgQnJvd3NlciBjb250ZXh0XG4gICAgLy8gZG9lcyBub3QgcHJvZHVjZSBhbiBlcnJvci5cbiAgICB0aGlzLkNvZGVNaXJyb3IgPSByZXF1aXJlKCdjb2RlbWlycm9yJyk7XG4gICAgcmVxdWlyZSgnY29kZW1pcnJvci9hZGRvbi9oaW50L3Nob3ctaGludCcpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3IvYWRkb24vZWRpdC9tYXRjaGJyYWNrZXRzJyk7XG4gICAgcmVxdWlyZSgnY29kZW1pcnJvci9hZGRvbi9lZGl0L2Nsb3NlYnJhY2tldHMnKTtcbiAgICByZXF1aXJlKCdjb2RlbWlycm9yL2FkZG9uL2ZvbGQvYnJhY2UtZm9sZCcpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3IvYWRkb24vZm9sZC9mb2xkZ3V0dGVyJyk7XG4gICAgcmVxdWlyZSgnY29kZW1pcnJvci9hZGRvbi9saW50L2xpbnQnKTtcbiAgICByZXF1aXJlKCdjb2RlbWlycm9yL2FkZG9uL3NlYXJjaC9zZWFyY2hjdXJzb3InKTtcbiAgICByZXF1aXJlKCdjb2RlbWlycm9yL2FkZG9uL3NlYXJjaC9qdW1wLXRvLWxpbmUnKTtcbiAgICByZXF1aXJlKCdjb2RlbWlycm9yL2FkZG9uL2RpYWxvZy9kaWFsb2cnKTtcbiAgICByZXF1aXJlKCdjb2RlbWlycm9yL21vZGUvamF2YXNjcmlwdC9qYXZhc2NyaXB0Jyk7XG4gICAgcmVxdWlyZSgnY29kZW1pcnJvci9rZXltYXAvc3VibGltZScpO1xuXG4gICAgY29uc3QgZWRpdG9yID0gKHRoaXMuZWRpdG9yID0gdGhpcy5Db2RlTWlycm9yKHRoaXMuX25vZGUsIHtcbiAgICAgIHZhbHVlOiB0aGlzLnByb3BzLnZhbHVlIHx8ICcnLFxuICAgICAgbGluZU51bWJlcnM6IHRydWUsXG4gICAgICB0YWJTaXplOiAyLFxuICAgICAgbW9kZTogeyBuYW1lOiAnamF2YXNjcmlwdCcsIGpzb246IHRydWUgfSxcbiAgICAgIHRoZW1lOiB0aGlzLnByb3BzLmVkaXRvclRoZW1lIHx8ICdncmFwaGlxbCcsXG4gICAgICBrZXlNYXA6ICdzdWJsaW1lJyxcbiAgICAgIGF1dG9DbG9zZUJyYWNrZXRzOiB0cnVlLFxuICAgICAgbWF0Y2hCcmFja2V0czogdHJ1ZSxcbiAgICAgIHNob3dDdXJzb3JXaGVuU2VsZWN0aW5nOiB0cnVlLFxuICAgICAgcmVhZE9ubHk6IHRoaXMucHJvcHMucmVhZE9ubHkgPyAnbm9jdXJzb3InIDogZmFsc2UsXG4gICAgICBmb2xkR3V0dGVyOiB7XG4gICAgICAgIG1pbkZvbGRTaXplOiA0LFxuICAgICAgfSxcbiAgICAgIGd1dHRlcnM6IFsnQ29kZU1pcnJvci1saW5lbnVtYmVycycsICdDb2RlTWlycm9yLWZvbGRndXR0ZXInXSxcbiAgICAgIGV4dHJhS2V5czoge1xuICAgICAgICAnQ21kLVNwYWNlJzogKCkgPT5cbiAgICAgICAgICB0aGlzLmVkaXRvciEuc2hvd0hpbnQoe1xuICAgICAgICAgICAgY29tcGxldGVTaW5nbGU6IGZhbHNlLFxuICAgICAgICAgICAgY29udGFpbmVyOiB0aGlzLl9ub2RlLFxuICAgICAgICAgIH0gYXMgQ29kZU1pcnJvci5TaG93SGludE9wdGlvbnMpLFxuICAgICAgICAnQ3RybC1TcGFjZSc6ICgpID0+XG4gICAgICAgICAgdGhpcy5lZGl0b3IhLnNob3dIaW50KHtcbiAgICAgICAgICAgIGNvbXBsZXRlU2luZ2xlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5fbm9kZSxcbiAgICAgICAgICB9IGFzIENvZGVNaXJyb3IuU2hvd0hpbnRPcHRpb25zKSxcbiAgICAgICAgJ0FsdC1TcGFjZSc6ICgpID0+XG4gICAgICAgICAgdGhpcy5lZGl0b3IhLnNob3dIaW50KHtcbiAgICAgICAgICAgIGNvbXBsZXRlU2luZ2xlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5fbm9kZSxcbiAgICAgICAgICB9IGFzIENvZGVNaXJyb3IuU2hvd0hpbnRPcHRpb25zKSxcbiAgICAgICAgJ1NoaWZ0LVNwYWNlJzogKCkgPT5cbiAgICAgICAgICB0aGlzLmVkaXRvciEuc2hvd0hpbnQoe1xuICAgICAgICAgICAgY29tcGxldGVTaW5nbGU6IGZhbHNlLFxuICAgICAgICAgICAgY29udGFpbmVyOiB0aGlzLl9ub2RlLFxuICAgICAgICAgIH0gYXMgQ29kZU1pcnJvci5TaG93SGludE9wdGlvbnMpLFxuICAgICAgICAnQ21kLUVudGVyJzogKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUnVuUXVlcnkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25SdW5RdWVyeSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ0N0cmwtRW50ZXInOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SdW5RdWVyeSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJ1blF1ZXJ5KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnU2hpZnQtQ3RybC1QJzogKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUHJldHRpZnlRdWVyeSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vblByZXR0aWZ5UXVlcnkoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgJ1NoaWZ0LUN0cmwtTSc6ICgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbk1lcmdlUXVlcnkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25NZXJnZVF1ZXJ5KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIC4uLmNvbW1vbktleXMsXG4gICAgICB9LFxuICAgIH0pKTtcblxuICAgIGVkaXRvci5vbignY2hhbmdlJywgdGhpcy5fb25FZGl0KTtcbiAgICBlZGl0b3Iub24oJ2tleXVwJywgdGhpcy5fb25LZXlVcCk7XG4gICAgZWRpdG9yLm9uKCdoYXNDb21wbGV0aW9uJywgdGhpcy5fb25IYXNDb21wbGV0aW9uKTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHM6IEhlYWRlckVkaXRvclByb3BzKSB7XG4gICAgdGhpcy5Db2RlTWlycm9yID0gcmVxdWlyZSgnY29kZW1pcnJvcicpO1xuICAgIGlmICghdGhpcy5lZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgdGhlIGNoYW5nZXMgY2F1c2VkIGJ5IHRoaXMgdXBkYXRlIGFyZSBub3QgaW50ZXJwcmV0dGVkIGFzXG4gICAgLy8gdXNlci1pbnB1dCBjaGFuZ2VzIHdoaWNoIGNvdWxkIG90aGVyd2lzZSByZXN1bHQgaW4gYW4gaW5maW5pdGVcbiAgICAvLyBldmVudCBsb29wLlxuICAgIHRoaXMuaWdub3JlQ2hhbmdlRXZlbnQgPSB0cnVlO1xuICAgIGlmIChcbiAgICAgIHRoaXMucHJvcHMudmFsdWUgIT09IHByZXZQcm9wcy52YWx1ZSAmJlxuICAgICAgdGhpcy5wcm9wcy52YWx1ZSAhPT0gdGhpcy5jYWNoZWRWYWx1ZVxuICAgICkge1xuICAgICAgY29uc3QgdGhpc1ZhbHVlID0gdGhpcy5wcm9wcy52YWx1ZSB8fCAnJztcbiAgICAgIHRoaXMuY2FjaGVkVmFsdWUgPSB0aGlzVmFsdWU7XG4gICAgICB0aGlzLmVkaXRvci5zZXRWYWx1ZSh0aGlzVmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLmlnbm9yZUNoYW5nZUV2ZW50ID0gZmFsc2U7XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICBpZiAoIXRoaXMuZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZWRpdG9yLm9mZignY2hhbmdlJywgdGhpcy5fb25FZGl0KTtcbiAgICB0aGlzLmVkaXRvci5vZmYoJ2tleXVwJywgdGhpcy5fb25LZXlVcCk7XG4gICAgdGhpcy5lZGl0b3Iub2ZmKCdoYXNDb21wbGV0aW9uJywgdGhpcy5fb25IYXNDb21wbGV0aW9uKTtcbiAgICB0aGlzLmVkaXRvciA9IG51bGw7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwiY29kZW1pcnJvcldyYXBcIlxuICAgICAgICAvLyBUaGlzIGhvcnJpYmxlIGhhY2sgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgYSBzaW1wbGUgZGlzcGxheSBub25lIHRvZ2dsZVxuICAgICAgICAvLyBjYXVzZXMgb25lIG9mIHRoZSBlZGl0b3JzJyBndXR0ZXJzIHRvIGJyZWFrIG90aGVyd2lzZS5cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBwb3NpdGlvbjogdGhpcy5wcm9wcy5hY3RpdmUgPyAncmVsYXRpdmUnIDogJ2Fic29sdXRlJyxcbiAgICAgICAgICB2aXNpYmlsaXR5OiB0aGlzLnByb3BzLmFjdGl2ZSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nLFxuICAgICAgICB9fVxuICAgICAgICByZWY9e25vZGUgPT4ge1xuICAgICAgICAgIHRoaXMuX25vZGUgPSBub2RlIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgICB9fVxuICAgICAgLz5cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBBUEkgZm9yIHJldHJpZXZpbmcgdGhlIENvZGVNaXJyb3IgaW5zdGFuY2UgZnJvbSB0aGlzXG4gICAqIFJlYWN0IGNvbXBvbmVudC5cbiAgICovXG4gIGdldENvZGVNaXJyb3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yIGFzIENNLkVkaXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaWMgQVBJIGZvciByZXRyaWV2aW5nIHRoZSBET00gY2xpZW50IGhlaWdodCBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAqL1xuICBnZXRDbGllbnRIZWlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGUgJiYgdGhpcy5fbm9kZS5jbGllbnRIZWlnaHQ7XG4gIH1cblxuICBwcml2YXRlIF9vbktleVVwID0gKF9jbTogQ29kZU1pcnJvci5FZGl0b3IsIGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgY29uc3QgY29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgaWYgKCF0aGlzLmVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAoY29kZSA+PSA2NSAmJiBjb2RlIDw9IDkwKSB8fCAvLyBsZXR0ZXJzXG4gICAgICAoIWV2ZW50LnNoaWZ0S2V5ICYmIGNvZGUgPj0gNDggJiYgY29kZSA8PSA1NykgfHwgLy8gbnVtYmVyc1xuICAgICAgKGV2ZW50LnNoaWZ0S2V5ICYmIGNvZGUgPT09IDE4OSkgfHwgLy8gdW5kZXJzY29yZVxuICAgICAgKGV2ZW50LnNoaWZ0S2V5ICYmIGNvZGUgPT09IDIyMikgLy8gXCJcbiAgICApIHtcbiAgICAgIHRoaXMuZWRpdG9yLmV4ZWNDb21tYW5kKCdhdXRvY29tcGxldGUnKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfb25FZGl0ID0gKCkgPT4ge1xuICAgIGlmICghdGhpcy5lZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlnbm9yZUNoYW5nZUV2ZW50KSB7XG4gICAgICB0aGlzLmNhY2hlZFZhbHVlID0gdGhpcy5lZGl0b3IuZ2V0VmFsdWUoKTtcbiAgICAgIGlmICh0aGlzLnByb3BzLm9uRWRpdCkge1xuICAgICAgICB0aGlzLnByb3BzLm9uRWRpdCh0aGlzLmNhY2hlZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfb25IYXNDb21wbGV0aW9uID0gKFxuICAgIGluc3RhbmNlOiBDTS5FZGl0b3IsXG4gICAgY2hhbmdlT2JqPzogQ00uRWRpdG9yQ2hhbmdlTGlua2VkTGlzdCxcbiAgKSA9PiB7XG4gICAgb25IYXNDb21wbGV0aW9uKGluc3RhbmNlLCBjaGFuZ2VPYmosIHRoaXMucHJvcHMub25IaW50SW5mb3JtYXRpb25SZW5kZXIpO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQU5BO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUE0SkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBektBO0FBMktBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBckxBO0FBMExBO0FBQ0E7QUFDQTtBQXRMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUZBO0FBSUE7QUFFQTtBQUNBO0FBRkE7QUFJQTtBQUVBO0FBQ0E7QUFGQTtBQUlBO0FBRUE7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBM0NBO0FBZkE7QUE4REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUhBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFWQTtBQWFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBaEtBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/HeaderEditor.tsx\n");
3254
3255/***/ }),
3256
3257/***/ "./components/HistoryQuery.tsx":
3258/*!*************************************!*\
3259 !*** ./components/HistoryQuery.tsx ***!
3260 \*************************************/
3261/*! no static exports found */
3262/***/ (function(module, exports, __webpack_require__) {
3263
3264eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n _react = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n class HistoryQuery extends _react.default.Component {\n constructor(props) {\n super(props);\n\n _defineProperty(this, \"editField\", void 0);\n\n this.state = {\n editable: false\n };\n this.editField = null;\n }\n\n render() {\n var _this$props$query;\n\n const displayName = this.props.label || this.props.operationName || ((_this$props$query = this.props.query) === null || _this$props$query === void 0 ? void 0 : _this$props$query.split('\\n').filter(line => line.indexOf('#') !== 0).join(''));\n const starIcon = this.props.favorite ? '\\u2605' : '\\u2606';\n return /*#__PURE__*/_react.default.createElement(\"li\", {\n className: this.state.editable ? 'editable' : undefined\n }, this.state.editable ? /*#__PURE__*/_react.default.createElement(\"input\", {\n type: \"text\",\n defaultValue: this.props.label,\n ref: c => {\n this.editField = c;\n },\n onBlur: this.handleFieldBlur.bind(this),\n onKeyDown: this.handleFieldKeyDown.bind(this),\n placeholder: \"Type a label\"\n }) : /*#__PURE__*/_react.default.createElement(\"button\", {\n className: \"history-label\",\n onClick: this.handleClick.bind(this)\n }, displayName), /*#__PURE__*/_react.default.createElement(\"button\", {\n onClick: this.handleEditClick.bind(this),\n \"aria-label\": \"Edit label\"\n }, '\\u270e'), /*#__PURE__*/_react.default.createElement(\"button\", {\n className: this.props.favorite ? 'favorited' : undefined,\n onClick: this.handleStarClick.bind(this),\n \"aria-label\": this.props.favorite ? 'Remove favorite' : 'Add favorite'\n }, starIcon));\n }\n\n handleClick() {\n this.props.onSelect(this.props.query, this.props.variables, this.props.headers, this.props.operationName, this.props.label);\n }\n\n handleStarClick(e) {\n e.stopPropagation();\n this.props.handleToggleFavorite(this.props.query, this.props.variables, this.props.headers, this.props.operationName, this.props.label, this.props.favorite);\n }\n\n handleFieldBlur(e) {\n e.stopPropagation();\n this.setState({\n editable: false\n });\n this.props.handleEditLabel(this.props.query, this.props.variables, this.props.headers, this.props.operationName, e.target.value, this.props.favorite);\n }\n\n handleFieldKeyDown(e) {\n if (e.keyCode === 13) {\n e.stopPropagation();\n this.setState({\n editable: false\n });\n this.props.handleEditLabel(this.props.query, this.props.variables, this.props.headers, this.props.operationName, e.currentTarget.value, this.props.favorite);\n }\n }\n\n handleEditClick(e) {\n e.stopPropagation();\n this.setState({\n editable: true\n }, () => {\n if (this.editField) {\n this.editField.focus();\n }\n });\n }\n\n }\n\n _exports.default = HistoryQuery;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0hpc3RvcnlRdWVyeS50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvSGlzdG9yeVF1ZXJ5LnRzeD8xYjI0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBRdWVyeVN0b3JlSXRlbSB9IGZyb20gJy4uL3V0aWxpdHkvUXVlcnlTdG9yZSc7XG5cbmV4cG9ydCB0eXBlIEhhbmRsZUVkaXRMYWJlbEZuID0gKFxuICBxdWVyeT86IHN0cmluZyxcbiAgdmFyaWFibGVzPzogc3RyaW5nLFxuICBoZWFkZXJzPzogc3RyaW5nLFxuICBvcGVyYXRpb25OYW1lPzogc3RyaW5nLFxuICBsYWJlbD86IHN0cmluZyxcbiAgZmF2b3JpdGU/OiBib29sZWFuLFxuKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBIYW5kbGVUb2dnbGVGYXZvcml0ZUZuID0gKFxuICBxdWVyeT86IHN0cmluZyxcbiAgdmFyaWFibGVzPzogc3RyaW5nLFxuICBoZWFkZXJzPzogc3RyaW5nLFxuICBvcGVyYXRpb25OYW1lPzogc3RyaW5nLFxuICBsYWJlbD86IHN0cmluZyxcbiAgZmF2b3JpdGU/OiBib29sZWFuLFxuKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBIYW5kbGVTZWxlY3RRdWVyeUZuID0gKFxuICBxdWVyeT86IHN0cmluZyxcbiAgdmFyaWFibGVzPzogc3RyaW5nLFxuICBoZWFkZXJzPzogc3RyaW5nLFxuICBvcGVyYXRpb25OYW1lPzogc3RyaW5nLFxuICBsYWJlbD86IHN0cmluZyxcbikgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgSGlzdG9yeVF1ZXJ5UHJvcHMgPSB7XG4gIGZhdm9yaXRlPzogYm9vbGVhbjtcbiAgZmF2b3JpdGVTaXplPzogbnVtYmVyO1xuICBoYW5kbGVFZGl0TGFiZWw6IEhhbmRsZUVkaXRMYWJlbEZuO1xuICBoYW5kbGVUb2dnbGVGYXZvcml0ZTogSGFuZGxlVG9nZ2xlRmF2b3JpdGVGbjtcbiAgb3BlcmF0aW9uTmFtZT86IHN0cmluZztcbiAgb25TZWxlY3Q6IEhhbmRsZVNlbGVjdFF1ZXJ5Rm47XG59ICYgUXVlcnlTdG9yZUl0ZW07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhpc3RvcnlRdWVyeSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxcbiAgSGlzdG9yeVF1ZXJ5UHJvcHMsXG4gIHsgZWRpdGFibGU6IGJvb2xlYW4gfVxuPiB7XG4gIGVkaXRGaWVsZDogSFRNTElucHV0RWxlbWVudCB8IG51bGw7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBIaXN0b3J5UXVlcnlQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgIH07XG4gICAgdGhpcy5lZGl0RmllbGQgPSBudWxsO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IGRpc3BsYXlOYW1lID1cbiAgICAgIHRoaXMucHJvcHMubGFiZWwgfHxcbiAgICAgIHRoaXMucHJvcHMub3BlcmF0aW9uTmFtZSB8fFxuICAgICAgdGhpcy5wcm9wcy5xdWVyeVxuICAgICAgICA/LnNwbGl0KCdcXG4nKVxuICAgICAgICAuZmlsdGVyKGxpbmUgPT4gbGluZS5pbmRleE9mKCcjJykgIT09IDApXG4gICAgICAgIC5qb2luKCcnKTtcbiAgICBjb25zdCBzdGFySWNvbiA9IHRoaXMucHJvcHMuZmF2b3JpdGUgPyAnXFx1MjYwNScgOiAnXFx1MjYwNic7XG4gICAgcmV0dXJuIChcbiAgICAgIDxsaSBjbGFzc05hbWU9e3RoaXMuc3RhdGUuZWRpdGFibGUgPyAnZWRpdGFibGUnIDogdW5kZWZpbmVkfT5cbiAgICAgICAge3RoaXMuc3RhdGUuZWRpdGFibGUgPyAoXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU9e3RoaXMucHJvcHMubGFiZWx9XG4gICAgICAgICAgICByZWY9e2MgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmVkaXRGaWVsZCA9IGM7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25CbHVyPXt0aGlzLmhhbmRsZUZpZWxkQmx1ci5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgb25LZXlEb3duPXt0aGlzLmhhbmRsZUZpZWxkS2V5RG93bi5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlIGEgbGFiZWxcIlxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiaGlzdG9yeS1sYWJlbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXt0aGlzLmhhbmRsZUNsaWNrLmJpbmQodGhpcyl9PlxuICAgICAgICAgICAge2Rpc3BsYXlOYW1lfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApfVxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgb25DbGljaz17dGhpcy5oYW5kbGVFZGl0Q2xpY2suYmluZCh0aGlzKX1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiRWRpdCBsYWJlbFwiPlxuICAgICAgICAgIHsnXFx1MjcwZSd9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmZhdm9yaXRlID8gJ2Zhdm9yaXRlZCcgOiB1bmRlZmluZWR9XG4gICAgICAgICAgb25DbGljaz17dGhpcy5oYW5kbGVTdGFyQ2xpY2suYmluZCh0aGlzKX1cbiAgICAgICAgICBhcmlhLWxhYmVsPXt0aGlzLnByb3BzLmZhdm9yaXRlID8gJ1JlbW92ZSBmYXZvcml0ZScgOiAnQWRkIGZhdm9yaXRlJ30+XG4gICAgICAgICAge3N0YXJJY29ufVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKCkge1xuICAgIHRoaXMucHJvcHMub25TZWxlY3QoXG4gICAgICB0aGlzLnByb3BzLnF1ZXJ5LFxuICAgICAgdGhpcy5wcm9wcy52YXJpYWJsZXMsXG4gICAgICB0aGlzLnByb3BzLmhlYWRlcnMsXG4gICAgICB0aGlzLnByb3BzLm9wZXJhdGlvbk5hbWUsXG4gICAgICB0aGlzLnByb3BzLmxhYmVsLFxuICAgICk7XG4gIH1cblxuICBoYW5kbGVTdGFyQ2xpY2soZTogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMucHJvcHMuaGFuZGxlVG9nZ2xlRmF2b3JpdGUoXG4gICAgICB0aGlzLnByb3BzLnF1ZXJ5LFxuICAgICAgdGhpcy5wcm9wcy52YXJpYWJsZXMsXG4gICAgICB0aGlzLnByb3BzLmhlYWRlcnMsXG4gICAgICB0aGlzLnByb3BzLm9wZXJhdGlvbk5hbWUsXG4gICAgICB0aGlzLnByb3BzLmxhYmVsLFxuICAgICAgdGhpcy5wcm9wcy5mYXZvcml0ZSxcbiAgICApO1xuICB9XG5cbiAgaGFuZGxlRmllbGRCbHVyKGU6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuc2V0U3RhdGUoeyBlZGl0YWJsZTogZmFsc2UgfSk7XG4gICAgdGhpcy5wcm9wcy5oYW5kbGVFZGl0TGFiZWwoXG4gICAgICB0aGlzLnByb3BzLnF1ZXJ5LFxuICAgICAgdGhpcy5wcm9wcy52YXJpYWJsZXMsXG4gICAgICB0aGlzLnByb3BzLmhlYWRlcnMsXG4gICAgICB0aGlzLnByb3BzLm9wZXJhdGlvbk5hbWUsXG4gICAgICBlLnRhcmdldC52YWx1ZSxcbiAgICAgIHRoaXMucHJvcHMuZmF2b3JpdGUsXG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZUZpZWxkS2V5RG93bihlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSB7XG4gICAgaWYgKGUua2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZWRpdGFibGU6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5wcm9wcy5oYW5kbGVFZGl0TGFiZWwoXG4gICAgICAgIHRoaXMucHJvcHMucXVlcnksXG4gICAgICAgIHRoaXMucHJvcHMudmFyaWFibGVzLFxuICAgICAgICB0aGlzLnByb3BzLmhlYWRlcnMsXG4gICAgICAgIHRoaXMucHJvcHMub3BlcmF0aW9uTmFtZSxcbiAgICAgICAgZS5jdXJyZW50VGFyZ2V0LnZhbHVlLFxuICAgICAgICB0aGlzLnByb3BzLmZhdm9yaXRlLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVFZGl0Q2xpY2soZTogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuc2V0U3RhdGUoeyBlZGl0YWJsZTogdHJ1ZSB9LCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5lZGl0RmllbGQpIHtcbiAgICAgICAgdGhpcy5lZGl0RmllbGQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTZDQTtBQUtBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQU9BO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBWUE7QUFDQTtBQUZBO0FBT0E7QUFDQTtBQUZBO0FBTUE7QUFDQTtBQUNBO0FBSEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWhIQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/HistoryQuery.tsx\n");
3265
3266/***/ }),
3267
3268/***/ "./components/ImagePreview.tsx":
3269/*!*************************************!*\
3270 !*** ./components/ImagePreview.tsx ***!
3271 \*************************************/
3272/*! no static exports found */
3273/***/ (function(module, exports, __webpack_require__) {
3274
3275eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.ImagePreview = void 0;\n _react = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n function tokenToURL(token) {\n if (token.type !== 'string') {\n return;\n }\n\n const value = token.string.slice(1).slice(0, -1).trim();\n\n try {\n const location = window.location;\n return new URL(value, location.protocol + '//' + location.host);\n } catch (err) {\n return;\n }\n }\n\n function isImageURL(url) {\n return /(bmp|gif|jpeg|jpg|png|svg)$/.test(url.pathname);\n }\n\n class ImagePreview extends _react.default.Component {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"_node\", null);\n\n _defineProperty(this, \"state\", {\n width: null,\n height: null,\n src: null,\n mime: null\n });\n }\n\n static shouldRender(token) {\n const url = tokenToURL(token);\n return url ? isImageURL(url) : false;\n }\n\n componentDidMount() {\n this._updateMetadata();\n }\n\n componentDidUpdate() {\n this._updateMetadata();\n }\n\n render() {\n var _tokenToURL;\n\n let dims = null;\n\n if (this.state.width !== null && this.state.height !== null) {\n let dimensions = this.state.width + 'x' + this.state.height;\n\n if (this.state.mime !== null) {\n dimensions += ' ' + this.state.mime;\n }\n\n dims = /*#__PURE__*/_react.default.createElement(\"div\", null, dimensions);\n }\n\n return /*#__PURE__*/_react.default.createElement(\"div\", null, /*#__PURE__*/_react.default.createElement(\"img\", {\n onLoad: () => this._updateMetadata(),\n ref: node => {\n this._node = node;\n },\n src: (_tokenToURL = tokenToURL(this.props.token)) === null || _tokenToURL === void 0 ? void 0 : _tokenToURL.href\n }), dims);\n }\n\n _updateMetadata() {\n if (!this._node) {\n return;\n }\n\n const width = this._node.naturalWidth;\n const height = this._node.naturalHeight;\n const src = this._node.src;\n\n if (src !== this.state.src) {\n this.setState({\n src\n });\n fetch(src, {\n method: 'HEAD'\n }).then(response => {\n this.setState({\n mime: response.headers.get('Content-Type')\n });\n });\n }\n\n if (width !== this.state.width || height !== this.state.height) {\n this.setState({\n height,\n width\n });\n }\n }\n\n }\n\n _exports.ImagePreview = ImagePreview;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0ltYWdlUHJldmlldy50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvSW1hZ2VQcmV2aWV3LnRzeD9iYmI5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmZ1bmN0aW9uIHRva2VuVG9VUkwodG9rZW46IGFueSkge1xuICBpZiAodG9rZW4udHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB2YWx1ZSA9IHRva2VuLnN0cmluZy5zbGljZSgxKS5zbGljZSgwLCAtMSkudHJpbSgpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG4gICAgcmV0dXJuIG5ldyBVUkwodmFsdWUsIGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIGxvY2F0aW9uLmhvc3QpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm47XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNJbWFnZVVSTCh1cmw6IFVSTCkge1xuICByZXR1cm4gLyhibXB8Z2lmfGpwZWd8anBnfHBuZ3xzdmcpJC8udGVzdCh1cmwucGF0aG5hbWUpO1xufVxuXG50eXBlIEltYWdlUHJldmlld1Byb3BzID0ge1xuICB0b2tlbjogYW55O1xufTtcblxudHlwZSBJbWFnZVByZXZpZXdTdGF0ZSA9IHtcbiAgd2lkdGg6IG51bWJlciB8IG51bGw7XG4gIGhlaWdodDogbnVtYmVyIHwgbnVsbDtcbiAgc3JjOiBzdHJpbmcgfCBudWxsO1xuICBtaW1lOiBzdHJpbmcgfCBudWxsO1xufTtcblxuZXhwb3J0IGNsYXNzIEltYWdlUHJldmlldyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxcbiAgSW1hZ2VQcmV2aWV3UHJvcHMsXG4gIEltYWdlUHJldmlld1N0YXRlXG4+IHtcbiAgX25vZGU6IEhUTUxJbWFnZUVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBzdGF0aWMgc2hvdWxkUmVuZGVyKHRva2VuOiBhbnkpIHtcbiAgICBjb25zdCB1cmwgPSB0b2tlblRvVVJMKHRva2VuKTtcbiAgICByZXR1cm4gdXJsID8gaXNJbWFnZVVSTCh1cmwpIDogZmFsc2U7XG4gIH1cblxuICBzdGF0ZSA9IHtcbiAgICB3aWR0aDogbnVsbCxcbiAgICBoZWlnaHQ6IG51bGwsXG4gICAgc3JjOiBudWxsLFxuICAgIG1pbWU6IG51bGwsXG4gIH07XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5fdXBkYXRlTWV0YWRhdGEoKTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICB0aGlzLl91cGRhdGVNZXRhZGF0YSgpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGxldCBkaW1zID0gbnVsbDtcbiAgICBpZiAodGhpcy5zdGF0ZS53aWR0aCAhPT0gbnVsbCAmJiB0aGlzLnN0YXRlLmhlaWdodCAhPT0gbnVsbCkge1xuICAgICAgbGV0IGRpbWVuc2lvbnMgPSB0aGlzLnN0YXRlLndpZHRoICsgJ3gnICsgdGhpcy5zdGF0ZS5oZWlnaHQ7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5taW1lICE9PSBudWxsKSB7XG4gICAgICAgIGRpbWVuc2lvbnMgKz0gJyAnICsgdGhpcy5zdGF0ZS5taW1lO1xuICAgICAgfVxuXG4gICAgICBkaW1zID0gPGRpdj57ZGltZW5zaW9uc308L2Rpdj47XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICBvbkxvYWQ9eygpID0+IHRoaXMuX3VwZGF0ZU1ldGFkYXRhKCl9XG4gICAgICAgICAgcmVmPXtub2RlID0+IHtcbiAgICAgICAgICAgIHRoaXMuX25vZGUgPSBub2RlO1xuICAgICAgICAgIH19XG4gICAgICAgICAgc3JjPXt0b2tlblRvVVJMKHRoaXMucHJvcHMudG9rZW4pPy5ocmVmfVxuICAgICAgICAvPlxuICAgICAgICB7ZGltc31cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBfdXBkYXRlTWV0YWRhdGEoKSB7XG4gICAgaWYgKCF0aGlzLl9ub2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLl9ub2RlLm5hdHVyYWxXaWR0aDtcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLl9ub2RlLm5hdHVyYWxIZWlnaHQ7XG4gICAgY29uc3Qgc3JjID0gdGhpcy5fbm9kZS5zcmM7XG5cbiAgICBpZiAoc3JjICE9PSB0aGlzLnN0YXRlLnNyYykge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNyYyB9KTtcbiAgICAgIGZldGNoKHNyYywgeyBtZXRob2Q6ICdIRUFEJyB9KS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgbWltZTogcmVzcG9uc2UuaGVhZGVycy5nZXQoJ0NvbnRlbnQtVHlwZScpLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh3aWR0aCAhPT0gdGhpcy5zdGF0ZS53aWR0aCB8fCBoZWlnaHQgIT09IHRoaXMuc3RhdGUuaGVpZ2h0KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgaGVpZ2h0LCB3aWR0aCB9KTtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVlBO0FBR0E7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQVJBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXRFQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/ImagePreview.tsx\n");
3276
3277/***/ }),
3278
3279/***/ "./components/QueryEditor.tsx":
3280/*!************************************!*\
3281 !*** ./components/QueryEditor.tsx ***!
3282 \************************************/
3283/*! no static exports found */
3284/***/ (function(module, exports, __webpack_require__) {
3285
3286eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! markdown-it */ \"../../../node_modules/markdown-it/index.js\"), __webpack_require__(/*! ../utility/normalizeWhitespace */ \"./utility/normalizeWhitespace.ts\"), __webpack_require__(/*! ../utility/onHasCompletion */ \"./utility/onHasCompletion.ts\"), __webpack_require__(/*! ../utility/commonKeys */ \"./utility/commonKeys.ts\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _markdownIt, _normalizeWhitespace, _onHasCompletion, _commonKeys) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.QueryEditor = void 0;\n _react = _interopRequireDefault(_react);\n _markdownIt = _interopRequireDefault(_markdownIt);\n _onHasCompletion = _interopRequireDefault(_onHasCompletion);\n _commonKeys = _interopRequireDefault(_commonKeys);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n const md = new _markdownIt.default();\n const AUTO_COMPLETE_AFTER_KEY = /^[a-zA-Z0-9_@(]$/;\n\n /**\n * QueryEditor\n *\n * Maintains an instance of CodeMirror responsible for editing a GraphQL query.\n *\n * Props:\n *\n * - schema: A GraphQLSchema instance enabling editor linting and hinting.\n * - value: The text of the editor.\n * - onEdit: A function called when the editor changes, given the edited text.\n * - readOnly: Turns the editor to read-only mode.\n *\n */\n class QueryEditor extends _react.default.Component {\n constructor(props) {\n super(props); // Keep a cached version of the value, this cache will be updated when the\n // editor is updated, which can later be used to protect the editor from\n // unnecessary updates during the update lifecycle.\n\n _defineProperty(this, \"cachedValue\", void 0);\n\n _defineProperty(this, \"editor\", null);\n\n _defineProperty(this, \"ignoreChangeEvent\", false);\n\n _defineProperty(this, \"_node\", null);\n\n _defineProperty(this, \"_onKeyUp\", (_cm, event) => {\n if (AUTO_COMPLETE_AFTER_KEY.test(event.key) && this.editor) {\n this.editor.execCommand('autocomplete');\n }\n });\n\n _defineProperty(this, \"_onEdit\", () => {\n if (!this.ignoreChangeEvent && this.editor) {\n this.cachedValue = this.editor.getValue();\n\n if (this.props.onEdit) {\n this.props.onEdit(this.cachedValue);\n }\n }\n });\n\n _defineProperty(this, \"_onHasCompletion\", (cm, data) => {\n (0, _onHasCompletion.default)(cm, data, this.props.onHintInformationRender);\n });\n\n this.cachedValue = props.value || '';\n }\n\n componentDidMount() {\n var _this$props$validatio, _this$props, _this$props2;\n\n // Lazily require to ensure requiring GraphiQL outside of a Browser context\n // does not produce an error.\n const CodeMirror = __webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\");\n\n __webpack_require__(/*! codemirror/addon/hint/show-hint */ \"../../../node_modules/codemirror/addon/hint/show-hint.js\");\n\n __webpack_require__(/*! codemirror/addon/comment/comment */ \"../../../node_modules/codemirror/addon/comment/comment.js\");\n\n __webpack_require__(/*! codemirror/addon/edit/matchbrackets */ \"../../../node_modules/codemirror/addon/edit/matchbrackets.js\");\n\n __webpack_require__(/*! codemirror/addon/edit/closebrackets */ \"../../../node_modules/codemirror/addon/edit/closebrackets.js\");\n\n __webpack_require__(/*! codemirror/addon/fold/foldgutter */ \"../../../node_modules/codemirror/addon/fold/foldgutter.js\");\n\n __webpack_require__(/*! codemirror/addon/fold/brace-fold */ \"../../../node_modules/codemirror/addon/fold/brace-fold.js\");\n\n __webpack_require__(/*! codemirror/addon/search/search */ \"../../../node_modules/codemirror/addon/search/search.js\");\n\n __webpack_require__(/*! codemirror/addon/search/searchcursor */ \"../../../node_modules/codemirror/addon/search/searchcursor.js\");\n\n __webpack_require__(/*! codemirror/addon/search/jump-to-line */ \"../../../node_modules/codemirror/addon/search/jump-to-line.js\");\n\n __webpack_require__(/*! codemirror/addon/dialog/dialog */ \"../../../node_modules/codemirror/addon/dialog/dialog.js\");\n\n __webpack_require__(/*! codemirror/addon/lint/lint */ \"../../../node_modules/codemirror/addon/lint/lint.js\");\n\n __webpack_require__(/*! codemirror/keymap/sublime */ \"../../../node_modules/codemirror/keymap/sublime.js\");\n\n __webpack_require__(/*! codemirror-graphql/hint */ \"../../codemirror-graphql/hint.js\");\n\n __webpack_require__(/*! codemirror-graphql/lint */ \"../../codemirror-graphql/lint.js\");\n\n __webpack_require__(/*! codemirror-graphql/info */ \"../../codemirror-graphql/info.js\");\n\n __webpack_require__(/*! codemirror-graphql/jump */ \"../../codemirror-graphql/jump.js\");\n\n __webpack_require__(/*! codemirror-graphql/mode */ \"../../codemirror-graphql/mode.js\");\n\n const editor = this.editor = CodeMirror(this._node, {\n value: this.props.value || '',\n lineNumbers: true,\n tabSize: 2,\n mode: 'graphql',\n theme: this.props.editorTheme || 'graphiql',\n keyMap: 'sublime',\n autoCloseBrackets: true,\n matchBrackets: true,\n showCursorWhenSelecting: true,\n readOnly: this.props.readOnly ? 'nocursor' : false,\n foldGutter: {\n minFoldSize: 4\n },\n lint: {\n schema: this.props.schema,\n validationRules: (_this$props$validatio = this.props.validationRules) !== null && _this$props$validatio !== void 0 ? _this$props$validatio : null,\n // linting accepts string or FragmentDefinitionNode[]\n externalFragments: (_this$props = this.props) === null || _this$props === void 0 ? void 0 : _this$props.externalFragments\n },\n hintOptions: {\n schema: this.props.schema,\n closeOnUnfocus: false,\n completeSingle: false,\n container: this._node,\n externalFragments: (_this$props2 = this.props) === null || _this$props2 === void 0 ? void 0 : _this$props2.externalFragments\n },\n info: {\n schema: this.props.schema,\n renderDescription: text => md.render(text),\n onClick: reference => this.props.onClickReference && this.props.onClickReference(reference)\n },\n jump: {\n schema: this.props.schema,\n onClick: reference => // TODO: it looks like this arg is not actually a GraphQL type but something from GraphiQL codemirror\n this.props.onClickReference && this.props.onClickReference(reference)\n },\n gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter'],\n extraKeys: {\n 'Cmd-Space': () => // @ts-ignore showHint method needs improvement on definatelytyped\n editor.showHint({\n completeSingle: true,\n container: this._node\n }),\n 'Ctrl-Space': () => // @ts-ignore showHint method needs improvement on definatelytyped\n editor.showHint({\n completeSingle: true,\n container: this._node\n }),\n 'Alt-Space': () => // @ts-ignore showHint method needs improvement on definatelytyped\n editor.showHint({\n completeSingle: true,\n container: this._node\n }),\n 'Shift-Space': () => // @ts-ignore showHint method needs improvement on definatelytyped\n editor.showHint({\n completeSingle: true,\n container: this._node\n }),\n 'Shift-Alt-Space': () => // @ts-ignore showHint method needs improvement on definatelytyped\n editor.showHint({\n completeSingle: true,\n container: this._node\n }),\n 'Cmd-Enter': () => {\n if (this.props.onRunQuery) {\n this.props.onRunQuery();\n }\n },\n 'Ctrl-Enter': () => {\n if (this.props.onRunQuery) {\n this.props.onRunQuery();\n }\n },\n 'Shift-Ctrl-C': () => {\n if (this.props.onCopyQuery) {\n this.props.onCopyQuery();\n }\n },\n 'Shift-Ctrl-P': () => {\n if (this.props.onPrettifyQuery) {\n this.props.onPrettifyQuery();\n }\n },\n\n /* Shift-Ctrl-P is hard coded in Firefox for private browsing so adding an alternative to Pretiffy */\n 'Shift-Ctrl-F': () => {\n if (this.props.onPrettifyQuery) {\n this.props.onPrettifyQuery();\n }\n },\n 'Shift-Ctrl-M': () => {\n if (this.props.onMergeQuery) {\n this.props.onMergeQuery();\n }\n },\n ..._commonKeys.default,\n 'Cmd-S': () => {\n if (this.props.onRunQuery) {// empty\n }\n },\n 'Ctrl-S': () => {\n if (this.props.onRunQuery) {// empty\n }\n }\n }\n });\n\n if (editor) {\n editor.on('change', this._onEdit);\n editor.on('keyup', this._onKeyUp); // @ts-ignore @TODO additional args for hasCompletion event\n\n editor.on('hasCompletion', this._onHasCompletion);\n editor.on('beforeChange', this._onBeforeChange);\n }\n }\n\n componentDidUpdate(prevProps) {\n const CodeMirror = __webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"); // Ensure the changes caused by this update are not interpretted as\n // user-input changes which could otherwise result in an infinite\n // event loop.\n\n\n this.ignoreChangeEvent = true;\n\n if (this.props.schema !== prevProps.schema && this.editor) {\n this.editor.options.lint.schema = this.props.schema;\n this.editor.options.hintOptions.schema = this.props.schema;\n this.editor.options.info.schema = this.props.schema;\n this.editor.options.jump.schema = this.props.schema;\n CodeMirror.signal(this.editor, 'change', this.editor);\n }\n\n if (this.props.value !== prevProps.value && this.props.value !== this.cachedValue && this.editor) {\n this.cachedValue = this.props.value;\n this.editor.setValue(this.props.value);\n }\n\n this.ignoreChangeEvent = false;\n }\n\n componentWillUnmount() {\n if (this.editor) {\n this.editor.off('change', this._onEdit);\n this.editor.off('keyup', this._onKeyUp); // @ts-ignore @TODO additional args for hasCompletion event\n\n this.editor.off('hasCompletion', this._onHasCompletion);\n this.editor = null;\n }\n }\n\n render() {\n return /*#__PURE__*/_react.default.createElement(\"section\", {\n className: \"query-editor\",\n \"aria-label\": \"Query Editor\",\n ref: node => {\n this._node = node;\n }\n });\n }\n /**\n * Public API for retrieving the CodeMirror instance from this\n * React component.\n */\n\n\n getCodeMirror() {\n return this.editor;\n }\n /**\n * Public API for retrieving the DOM client height for this component.\n */\n\n\n getClientHeight() {\n return this._node && this._node.clientHeight;\n }\n\n _onBeforeChange(_instance, change) {\n // The update function is only present on non-redo, non-undo events.\n if (change.origin === 'paste') {\n const text = change.text.map(_normalizeWhitespace.normalizeWhitespace);\n change.update(change.from, change.to, text);\n }\n }\n\n }\n\n _exports.QueryEditor = QueryEditor;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1F1ZXJ5RWRpdG9yLnRzeC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY29tcG9uZW50cy9RdWVyeUVkaXRvci50c3g/MGEwMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgKiBhcyBDTSBmcm9tICdjb2RlbWlycm9yJztcbmltcG9ydCB7XG4gIEZyYWdtZW50RGVmaW5pdGlvbk5vZGUsXG4gIEdyYXBoUUxTY2hlbWEsXG4gIEdyYXBoUUxUeXBlLFxuICBWYWxpZGF0aW9uUnVsZSxcbn0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgTUQgZnJvbSAnbWFya2Rvd24taXQnO1xuaW1wb3J0IHsgbm9ybWFsaXplV2hpdGVzcGFjZSB9IGZyb20gJy4uL3V0aWxpdHkvbm9ybWFsaXplV2hpdGVzcGFjZSc7XG5pbXBvcnQgb25IYXNDb21wbGV0aW9uIGZyb20gJy4uL3V0aWxpdHkvb25IYXNDb21wbGV0aW9uJztcbmltcG9ydCBjb21tb25LZXlzIGZyb20gJy4uL3V0aWxpdHkvY29tbW9uS2V5cyc7XG5pbXBvcnQgeyBTaXplckNvbXBvbmVudCB9IGZyb20gJy4uL3V0aWxpdHkvQ29kZU1pcnJvclNpemVyJztcblxuY29uc3QgbWQgPSBuZXcgTUQoKTtcbmNvbnN0IEFVVE9fQ09NUExFVEVfQUZURVJfS0VZID0gL15bYS16QS1aMC05X0AoXSQvO1xuXG50eXBlIFF1ZXJ5RWRpdG9yUHJvcHMgPSB7XG4gIHNjaGVtYT86IEdyYXBoUUxTY2hlbWE7XG4gIHZhbGlkYXRpb25SdWxlcz86IFZhbGlkYXRpb25SdWxlW107XG4gIHZhbHVlPzogc3RyaW5nO1xuICBvbkVkaXQ/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgcmVhZE9ubHk/OiBib29sZWFuO1xuICBvbkhpbnRJbmZvcm1hdGlvblJlbmRlcjogKGVsZW06IEhUTUxEaXZFbGVtZW50KSA9PiB2b2lkO1xuICBvbkNsaWNrUmVmZXJlbmNlPzogKHJlZmVyZW5jZTogR3JhcGhRTFR5cGUpID0+IHZvaWQ7XG4gIG9uQ29weVF1ZXJ5PzogKCkgPT4gdm9pZDtcbiAgb25QcmV0dGlmeVF1ZXJ5PzogKCkgPT4gdm9pZDtcbiAgb25NZXJnZVF1ZXJ5PzogKCkgPT4gdm9pZDtcbiAgb25SdW5RdWVyeT86ICgpID0+IHZvaWQ7XG4gIGVkaXRvclRoZW1lPzogc3RyaW5nO1xuICBleHRlcm5hbEZyYWdtZW50cz86IHN0cmluZyB8IEZyYWdtZW50RGVmaW5pdGlvbk5vZGVbXTtcbn07XG5cbi8qKlxuICogUXVlcnlFZGl0b3JcbiAqXG4gKiBNYWludGFpbnMgYW4gaW5zdGFuY2Ugb2YgQ29kZU1pcnJvciByZXNwb25zaWJsZSBmb3IgZWRpdGluZyBhIEdyYXBoUUwgcXVlcnkuXG4gKlxuICogUHJvcHM6XG4gKlxuICogICAtIHNjaGVtYTogQSBHcmFwaFFMU2NoZW1hIGluc3RhbmNlIGVuYWJsaW5nIGVkaXRvciBsaW50aW5nIGFuZCBoaW50aW5nLlxuICogICAtIHZhbHVlOiBUaGUgdGV4dCBvZiB0aGUgZWRpdG9yLlxuICogICAtIG9uRWRpdDogQSBmdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgZWRpdG9yIGNoYW5nZXMsIGdpdmVuIHRoZSBlZGl0ZWQgdGV4dC5cbiAqICAgLSByZWFkT25seTogVHVybnMgdGhlIGVkaXRvciB0byByZWFkLW9ubHkgbW9kZS5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBRdWVyeUVkaXRvciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxRdWVyeUVkaXRvclByb3BzLCB7fT5cbiAgaW1wbGVtZW50cyBTaXplckNvbXBvbmVudCB7XG4gIGNhY2hlZFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGVkaXRvcjogKENNLkVkaXRvciAmIHsgb3B0aW9uczogYW55OyBzaG93SGludDogYW55IH0pIHwgbnVsbCA9IG51bGw7XG4gIGlnbm9yZUNoYW5nZUV2ZW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgX25vZGU6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IFF1ZXJ5RWRpdG9yUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAvLyBLZWVwIGEgY2FjaGVkIHZlcnNpb24gb2YgdGhlIHZhbHVlLCB0aGlzIGNhY2hlIHdpbGwgYmUgdXBkYXRlZCB3aGVuIHRoZVxuICAgIC8vIGVkaXRvciBpcyB1cGRhdGVkLCB3aGljaCBjYW4gbGF0ZXIgYmUgdXNlZCB0byBwcm90ZWN0IHRoZSBlZGl0b3IgZnJvbVxuICAgIC8vIHVubmVjZXNzYXJ5IHVwZGF0ZXMgZHVyaW5nIHRoZSB1cGRhdGUgbGlmZWN5Y2xlLlxuICAgIHRoaXMuY2FjaGVkVmFsdWUgPSBwcm9wcy52YWx1ZSB8fCAnJztcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIC8vIExhemlseSByZXF1aXJlIHRvIGVuc3VyZSByZXF1aXJpbmcgR3JhcGhpUUwgb3V0c2lkZSBvZiBhIEJyb3dzZXIgY29udGV4dFxuICAgIC8vIGRvZXMgbm90IHByb2R1Y2UgYW4gZXJyb3IuXG4gICAgY29uc3QgQ29kZU1pcnJvciA9IHJlcXVpcmUoJ2NvZGVtaXJyb3InKTtcbiAgICByZXF1aXJlKCdjb2RlbWlycm9yL2FkZG9uL2hpbnQvc2hvdy1oaW50Jyk7XG4gICAgcmVxdWlyZSgnY29kZW1pcnJvci9hZGRvbi9jb21tZW50L2NvbW1lbnQnKTtcbiAgICByZXF1aXJlKCdjb2RlbWlycm9yL2FkZG9uL2VkaXQvbWF0Y2hicmFja2V0cycpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3IvYWRkb24vZWRpdC9jbG9zZWJyYWNrZXRzJyk7XG4gICAgcmVxdWlyZSgnY29kZW1pcnJvci9hZGRvbi9mb2xkL2ZvbGRndXR0ZXInKTtcbiAgICByZXF1aXJlKCdjb2RlbWlycm9yL2FkZG9uL2ZvbGQvYnJhY2UtZm9sZCcpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3IvYWRkb24vc2VhcmNoL3NlYXJjaCcpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3IvYWRkb24vc2VhcmNoL3NlYXJjaGN1cnNvcicpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3IvYWRkb24vc2VhcmNoL2p1bXAtdG8tbGluZScpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3IvYWRkb24vZGlhbG9nL2RpYWxvZycpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3IvYWRkb24vbGludC9saW50Jyk7XG4gICAgcmVxdWlyZSgnY29kZW1pcnJvci9rZXltYXAvc3VibGltZScpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3ItZ3JhcGhxbC9oaW50Jyk7XG4gICAgcmVxdWlyZSgnY29kZW1pcnJvci1ncmFwaHFsL2xpbnQnKTtcbiAgICByZXF1aXJlKCdjb2RlbWlycm9yLWdyYXBocWwvaW5mbycpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3ItZ3JhcGhxbC9qdW1wJyk7XG4gICAgcmVxdWlyZSgnY29kZW1pcnJvci1ncmFwaHFsL21vZGUnKTtcblxuICAgIGNvbnN0IGVkaXRvcjogQ00uRWRpdG9yID0gKHRoaXMuZWRpdG9yID0gQ29kZU1pcnJvcih0aGlzLl9ub2RlLCB7XG4gICAgICB2YWx1ZTogdGhpcy5wcm9wcy52YWx1ZSB8fCAnJyxcbiAgICAgIGxpbmVOdW1iZXJzOiB0cnVlLFxuICAgICAgdGFiU2l6ZTogMixcbiAgICAgIG1vZGU6ICdncmFwaHFsJyxcbiAgICAgIHRoZW1lOiB0aGlzLnByb3BzLmVkaXRvclRoZW1lIHx8ICdncmFwaGlxbCcsXG4gICAgICBrZXlNYXA6ICdzdWJsaW1lJyxcbiAgICAgIGF1dG9DbG9zZUJyYWNrZXRzOiB0cnVlLFxuICAgICAgbWF0Y2hCcmFja2V0czogdHJ1ZSxcbiAgICAgIHNob3dDdXJzb3JXaGVuU2VsZWN0aW5nOiB0cnVlLFxuICAgICAgcmVhZE9ubHk6IHRoaXMucHJvcHMucmVhZE9ubHkgPyAnbm9jdXJzb3InIDogZmFsc2UsXG4gICAgICBmb2xkR3V0dGVyOiB7XG4gICAgICAgIG1pbkZvbGRTaXplOiA0LFxuICAgICAgfSxcbiAgICAgIGxpbnQ6IHtcbiAgICAgICAgc2NoZW1hOiB0aGlzLnByb3BzLnNjaGVtYSxcbiAgICAgICAgdmFsaWRhdGlvblJ1bGVzOiB0aGlzLnByb3BzLnZhbGlkYXRpb25SdWxlcyA/PyBudWxsLFxuICAgICAgICAvLyBsaW50aW5nIGFjY2VwdHMgc3RyaW5nIG9yIEZyYWdtZW50RGVmaW5pdGlvbk5vZGVbXVxuICAgICAgICBleHRlcm5hbEZyYWdtZW50czogdGhpcy5wcm9wcz8uZXh0ZXJuYWxGcmFnbWVudHMsXG4gICAgICB9LFxuICAgICAgaGludE9wdGlvbnM6IHtcbiAgICAgICAgc2NoZW1hOiB0aGlzLnByb3BzLnNjaGVtYSxcbiAgICAgICAgY2xvc2VPblVuZm9jdXM6IGZhbHNlLFxuICAgICAgICBjb21wbGV0ZVNpbmdsZTogZmFsc2UsXG4gICAgICAgIGNvbnRhaW5lcjogdGhpcy5fbm9kZSxcbiAgICAgICAgZXh0ZXJuYWxGcmFnbWVudHM6IHRoaXMucHJvcHM/LmV4dGVybmFsRnJhZ21lbnRzLFxuICAgICAgfSxcbiAgICAgIGluZm86IHtcbiAgICAgICAgc2NoZW1hOiB0aGlzLnByb3BzLnNjaGVtYSxcbiAgICAgICAgcmVuZGVyRGVzY3JpcHRpb246ICh0ZXh0OiBzdHJpbmcpID0+IG1kLnJlbmRlcih0ZXh0KSxcbiAgICAgICAgb25DbGljazogKHJlZmVyZW5jZTogR3JhcGhRTFR5cGUpID0+XG4gICAgICAgICAgdGhpcy5wcm9wcy5vbkNsaWNrUmVmZXJlbmNlICYmIHRoaXMucHJvcHMub25DbGlja1JlZmVyZW5jZShyZWZlcmVuY2UpLFxuICAgICAgfSxcbiAgICAgIGp1bXA6IHtcbiAgICAgICAgc2NoZW1hOiB0aGlzLnByb3BzLnNjaGVtYSxcbiAgICAgICAgb25DbGljazogKFxuICAgICAgICAgIHJlZmVyZW5jZTogR3JhcGhRTFR5cGUsIC8vIFRPRE86IGl0IGxvb2tzIGxpa2UgdGhpcyBhcmcgaXMgbm90IGFjdHVhbGx5IGEgR3JhcGhRTCB0eXBlIGJ1dCBzb21ldGhpbmcgZnJvbSBHcmFwaGlRTCBjb2RlbWlycm9yXG4gICAgICAgICkgPT5cbiAgICAgICAgICB0aGlzLnByb3BzLm9uQ2xpY2tSZWZlcmVuY2UgJiYgdGhpcy5wcm9wcy5vbkNsaWNrUmVmZXJlbmNlKHJlZmVyZW5jZSksXG4gICAgICB9LFxuICAgICAgZ3V0dGVyczogWydDb2RlTWlycm9yLWxpbmVudW1iZXJzJywgJ0NvZGVNaXJyb3ItZm9sZGd1dHRlciddLFxuICAgICAgZXh0cmFLZXlzOiB7XG4gICAgICAgICdDbWQtU3BhY2UnOiAoKSA9PlxuICAgICAgICAgIC8vIEB0cy1pZ25vcmUgc2hvd0hpbnQgbWV0aG9kIG5lZWRzIGltcHJvdmVtZW50IG9uIGRlZmluYXRlbHl0eXBlZFxuICAgICAgICAgIGVkaXRvci5zaG93SGludCh7IGNvbXBsZXRlU2luZ2xlOiB0cnVlLCBjb250YWluZXI6IHRoaXMuX25vZGUgfSksXG4gICAgICAgICdDdHJsLVNwYWNlJzogKCkgPT5cbiAgICAgICAgICAvLyBAdHMtaWdub3JlIHNob3dIaW50IG1ldGhvZCBuZWVkcyBpbXByb3ZlbWVudCBvbiBkZWZpbmF0ZWx5dHlwZWRcblxuICAgICAgICAgIGVkaXRvci5zaG93SGludCh7IGNvbXBsZXRlU2luZ2xlOiB0cnVlLCBjb250YWluZXI6IHRoaXMuX25vZGUgfSksXG4gICAgICAgICdBbHQtU3BhY2UnOiAoKSA9PlxuICAgICAgICAgIC8vIEB0cy1pZ25vcmUgc2hvd0hpbnQgbWV0aG9kIG5lZWRzIGltcHJvdmVtZW50IG9uIGRlZmluYXRlbHl0eXBlZFxuICAgICAgICAgIGVkaXRvci5zaG93SGludCh7IGNvbXBsZXRlU2luZ2xlOiB0cnVlLCBjb250YWluZXI6IHRoaXMuX25vZGUgfSksXG4gICAgICAgICdTaGlmdC1TcGFjZSc6ICgpID0+XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZSBzaG93SGludCBtZXRob2QgbmVlZHMgaW1wcm92ZW1lbnQgb24gZGVmaW5hdGVseXR5cGVkXG4gICAgICAgICAgZWRpdG9yLnNob3dIaW50KHsgY29tcGxldGVTaW5nbGU6IHRydWUsIGNvbnRhaW5lcjogdGhpcy5fbm9kZSB9KSxcbiAgICAgICAgJ1NoaWZ0LUFsdC1TcGFjZSc6ICgpID0+XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZSBzaG93SGludCBtZXRob2QgbmVlZHMgaW1wcm92ZW1lbnQgb24gZGVmaW5hdGVseXR5cGVkXG4gICAgICAgICAgZWRpdG9yLnNob3dIaW50KHsgY29tcGxldGVTaW5nbGU6IHRydWUsIGNvbnRhaW5lcjogdGhpcy5fbm9kZSB9KSxcblxuICAgICAgICAnQ21kLUVudGVyJzogKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUnVuUXVlcnkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25SdW5RdWVyeSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ0N0cmwtRW50ZXInOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SdW5RdWVyeSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJ1blF1ZXJ5KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgICdTaGlmdC1DdHJsLUMnOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMub25Db3B5UXVlcnkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25Db3B5UXVlcnkoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgJ1NoaWZ0LUN0cmwtUCc6ICgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblByZXR0aWZ5UXVlcnkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25QcmV0dGlmeVF1ZXJ5KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIC8qIFNoaWZ0LUN0cmwtUCBpcyBoYXJkIGNvZGVkIGluIEZpcmVmb3ggZm9yIHByaXZhdGUgYnJvd3Npbmcgc28gYWRkaW5nIGFuIGFsdGVybmF0aXZlIHRvIFByZXRpZmZ5ICovXG5cbiAgICAgICAgJ1NoaWZ0LUN0cmwtRic6ICgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblByZXR0aWZ5UXVlcnkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25QcmV0dGlmeVF1ZXJ5KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgICdTaGlmdC1DdHJsLU0nOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMub25NZXJnZVF1ZXJ5KSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uTWVyZ2VRdWVyeSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLi4uY29tbW9uS2V5cyxcbiAgICAgICAgJ0NtZC1TJzogKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUnVuUXVlcnkpIHtcbiAgICAgICAgICAgIC8vIGVtcHR5XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgICdDdHJsLVMnOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SdW5RdWVyeSkge1xuICAgICAgICAgICAgLy8gZW1wdHlcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pKTtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICBlZGl0b3Iub24oJ2NoYW5nZScsIHRoaXMuX29uRWRpdCk7XG4gICAgICBlZGl0b3Iub24oJ2tleXVwJywgdGhpcy5fb25LZXlVcCk7XG4gICAgICAvLyBAdHMtaWdub3JlIEBUT0RPIGFkZGl0aW9uYWwgYXJncyBmb3IgaGFzQ29tcGxldGlvbiBldmVudFxuICAgICAgZWRpdG9yLm9uKCdoYXNDb21wbGV0aW9uJywgdGhpcy5fb25IYXNDb21wbGV0aW9uKTtcbiAgICAgIGVkaXRvci5vbignYmVmb3JlQ2hhbmdlJywgdGhpcy5fb25CZWZvcmVDaGFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHM6IFF1ZXJ5RWRpdG9yUHJvcHMpIHtcbiAgICBjb25zdCBDb2RlTWlycm9yID0gcmVxdWlyZSgnY29kZW1pcnJvcicpO1xuXG4gICAgLy8gRW5zdXJlIHRoZSBjaGFuZ2VzIGNhdXNlZCBieSB0aGlzIHVwZGF0ZSBhcmUgbm90IGludGVycHJldHRlZCBhc1xuICAgIC8vIHVzZXItaW5wdXQgY2hhbmdlcyB3aGljaCBjb3VsZCBvdGhlcndpc2UgcmVzdWx0IGluIGFuIGluZmluaXRlXG4gICAgLy8gZXZlbnQgbG9vcC5cbiAgICB0aGlzLmlnbm9yZUNoYW5nZUV2ZW50ID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5wcm9wcy5zY2hlbWEgIT09IHByZXZQcm9wcy5zY2hlbWEgJiYgdGhpcy5lZGl0b3IpIHtcbiAgICAgIHRoaXMuZWRpdG9yLm9wdGlvbnMubGludC5zY2hlbWEgPSB0aGlzLnByb3BzLnNjaGVtYTtcbiAgICAgIHRoaXMuZWRpdG9yLm9wdGlvbnMuaGludE9wdGlvbnMuc2NoZW1hID0gdGhpcy5wcm9wcy5zY2hlbWE7XG4gICAgICB0aGlzLmVkaXRvci5vcHRpb25zLmluZm8uc2NoZW1hID0gdGhpcy5wcm9wcy5zY2hlbWE7XG4gICAgICB0aGlzLmVkaXRvci5vcHRpb25zLmp1bXAuc2NoZW1hID0gdGhpcy5wcm9wcy5zY2hlbWE7XG4gICAgICBDb2RlTWlycm9yLnNpZ25hbCh0aGlzLmVkaXRvciwgJ2NoYW5nZScsIHRoaXMuZWRpdG9yKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdGhpcy5wcm9wcy52YWx1ZSAhPT0gcHJldlByb3BzLnZhbHVlICYmXG4gICAgICB0aGlzLnByb3BzLnZhbHVlICE9PSB0aGlzLmNhY2hlZFZhbHVlICYmXG4gICAgICB0aGlzLmVkaXRvclxuICAgICkge1xuICAgICAgdGhpcy5jYWNoZWRWYWx1ZSA9IHRoaXMucHJvcHMudmFsdWU7XG4gICAgICB0aGlzLmVkaXRvci5zZXRWYWx1ZSh0aGlzLnByb3BzLnZhbHVlIGFzIHN0cmluZyk7XG4gICAgfVxuICAgIHRoaXMuaWdub3JlQ2hhbmdlRXZlbnQgPSBmYWxzZTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIGlmICh0aGlzLmVkaXRvcikge1xuICAgICAgdGhpcy5lZGl0b3Iub2ZmKCdjaGFuZ2UnLCB0aGlzLl9vbkVkaXQpO1xuICAgICAgdGhpcy5lZGl0b3Iub2ZmKCdrZXl1cCcsIHRoaXMuX29uS2V5VXApO1xuICAgICAgLy8gQHRzLWlnbm9yZSBAVE9ETyBhZGRpdGlvbmFsIGFyZ3MgZm9yIGhhc0NvbXBsZXRpb24gZXZlbnRcbiAgICAgIHRoaXMuZWRpdG9yLm9mZignaGFzQ29tcGxldGlvbicsIHRoaXMuX29uSGFzQ29tcGxldGlvbik7XG4gICAgICB0aGlzLmVkaXRvciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8c2VjdGlvblxuICAgICAgICBjbGFzc05hbWU9XCJxdWVyeS1lZGl0b3JcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiUXVlcnkgRWRpdG9yXCJcbiAgICAgICAgcmVmPXtub2RlID0+IHtcbiAgICAgICAgICB0aGlzLl9ub2RlID0gbm9kZTtcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaWMgQVBJIGZvciByZXRyaWV2aW5nIHRoZSBDb2RlTWlycm9yIGluc3RhbmNlIGZyb20gdGhpc1xuICAgKiBSZWFjdCBjb21wb25lbnQuXG4gICAqL1xuICBnZXRDb2RlTWlycm9yKCkge1xuICAgIHJldHVybiB0aGlzLmVkaXRvciBhcyBDTS5FZGl0b3I7XG4gIH1cblxuICAvKipcbiAgICogUHVibGljIEFQSSBmb3IgcmV0cmlldmluZyB0aGUgRE9NIGNsaWVudCBoZWlnaHQgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgKi9cbiAgZ2V0Q2xpZW50SGVpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLl9ub2RlICYmIHRoaXMuX25vZGUuY2xpZW50SGVpZ2h0O1xuICB9XG5cbiAgcHJpdmF0ZSBfb25LZXlVcCA9IChfY206IENNLkVkaXRvciwgZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoQVVUT19DT01QTEVURV9BRlRFUl9LRVkudGVzdChldmVudC5rZXkpICYmIHRoaXMuZWRpdG9yKSB7XG4gICAgICB0aGlzLmVkaXRvci5leGVjQ29tbWFuZCgnYXV0b2NvbXBsZXRlJyk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX29uRWRpdCA9ICgpID0+IHtcbiAgICBpZiAoIXRoaXMuaWdub3JlQ2hhbmdlRXZlbnQgJiYgdGhpcy5lZGl0b3IpIHtcbiAgICAgIHRoaXMuY2FjaGVkVmFsdWUgPSB0aGlzLmVkaXRvci5nZXRWYWx1ZSgpO1xuICAgICAgaWYgKHRoaXMucHJvcHMub25FZGl0KSB7XG4gICAgICAgIHRoaXMucHJvcHMub25FZGl0KHRoaXMuY2FjaGVkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogUmVuZGVyIGEgY3VzdG9tIFVJIGZvciBDb2RlTWlycm9yJ3MgaGludCB3aGljaCBpbmNsdWRlcyBhZGRpdGlvbmFsIGluZm9cbiAgICogYWJvdXQgdGhlIHR5cGUgYW5kIGRlc2NyaXB0aW9uIGZvciB0aGUgc2VsZWN0ZWQgY29udGV4dC5cbiAgICovXG4gIHByaXZhdGUgX29uSGFzQ29tcGxldGlvbiA9IChjbTogQ00uRWRpdG9yLCBkYXRhOiBhbnkpID0+IHtcbiAgICBvbkhhc0NvbXBsZXRpb24oY20sIGRhdGEsIHRoaXMucHJvcHMub25IaW50SW5mb3JtYXRpb25SZW5kZXIpO1xuICB9O1xuXG4gIHByaXZhdGUgX29uQmVmb3JlQ2hhbmdlKF9pbnN0YW5jZTogQ00uRWRpdG9yLCBjaGFuZ2U6IGFueSkge1xuICAgIC8vIFRoZSB1cGRhdGUgZnVuY3Rpb24gaXMgb25seSBwcmVzZW50IG9uIG5vbi1yZWRvLCBub24tdW5kbyBldmVudHMuXG4gICAgaWYgKGNoYW5nZS5vcmlnaW4gPT09ICdwYXN0ZScpIHtcbiAgICAgIGNvbnN0IHRleHQgPSBjaGFuZ2UudGV4dC5tYXAobm9ybWFsaXplV2hpdGVzcGFjZSk7XG4gICAgICBjaGFuZ2UudXBkYXRlKGNoYW5nZS5mcm9tLCBjaGFuZ2UudG8sIHRleHQpO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQTtBQUNBO0FBQ0E7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFOQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFvTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXhOQTtBQTBOQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFqT0E7QUF1T0E7QUFDQTtBQUNBO0FBbk9BO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFDQTtBQUNBO0FBR0E7QUFMQTtBQU9BO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFqRUE7QUF6Q0E7QUFDQTtBQTRHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQXdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBeFBBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/QueryEditor.tsx\n");
3287
3288/***/ }),
3289
3290/***/ "./components/QueryHistory.tsx":
3291/*!*************************************!*\
3292 !*** ./components/QueryHistory.tsx ***!
3293 \*************************************/
3294/*! no static exports found */
3295/***/ (function(module, exports, __webpack_require__) {
3296
3297eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! ../utility/QueryStore */ \"./utility/QueryStore.ts\"), __webpack_require__(/*! ./HistoryQuery */ \"./components/HistoryQuery.tsx\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql, _react, _QueryStore, _HistoryQuery) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.QueryHistory = void 0;\n _react = _interopRequireDefault(_react);\n _QueryStore = _interopRequireDefault(_QueryStore);\n _HistoryQuery = _interopRequireDefault(_HistoryQuery);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n const MAX_QUERY_SIZE = 100000;\n const MAX_HISTORY_LENGTH = 20;\n\n const shouldSaveQuery = (query, variables, headers, lastQuerySaved) => {\n if (!query) {\n return false;\n }\n\n try {\n (0, _graphql.parse)(query);\n } catch (e) {\n return false;\n } // Don't try to save giant queries\n\n\n if (query.length > MAX_QUERY_SIZE) {\n return false;\n }\n\n if (!lastQuerySaved) {\n return true;\n }\n\n if (JSON.stringify(query) === JSON.stringify(lastQuerySaved.query)) {\n if (JSON.stringify(variables) === JSON.stringify(lastQuerySaved.variables)) {\n if (JSON.stringify(headers) === JSON.stringify(lastQuerySaved.headers)) {\n return false;\n }\n\n if (headers && !lastQuerySaved.headers) {\n return false;\n }\n }\n\n if (variables && !lastQuerySaved.variables) {\n return false;\n }\n }\n\n return true;\n };\n\n class QueryHistory extends _react.default.Component {\n constructor(props) {\n super(props);\n\n _defineProperty(this, \"historyStore\", void 0);\n\n _defineProperty(this, \"favoriteStore\", void 0);\n\n _defineProperty(this, \"updateHistory\", (query, variables, headers, operationName) => {\n if (shouldSaveQuery(query, variables, headers, this.historyStore.fetchRecent())) {\n this.historyStore.push({\n query,\n variables,\n headers,\n operationName\n });\n const historyQueries = this.historyStore.items;\n const favoriteQueries = this.favoriteStore.items;\n const queries = historyQueries.concat(favoriteQueries);\n this.setState({\n queries\n });\n }\n });\n\n _defineProperty(this, \"toggleFavorite\", (query, variables, headers, operationName, label, favorite) => {\n const item = {\n query,\n variables,\n headers,\n operationName,\n label\n };\n\n if (!this.favoriteStore.contains(item)) {\n item.favorite = true;\n this.favoriteStore.push(item);\n } else if (favorite) {\n item.favorite = false;\n this.favoriteStore.delete(item);\n }\n\n this.setState({\n queries: [...this.historyStore.items, ...this.favoriteStore.items]\n });\n });\n\n _defineProperty(this, \"editLabel\", (query, variables, headers, operationName, label, favorite) => {\n const item = {\n query,\n variables,\n headers,\n operationName,\n label\n };\n\n if (favorite) {\n this.favoriteStore.edit({ ...item,\n favorite\n });\n } else {\n this.historyStore.edit(item);\n }\n\n this.setState({\n queries: [...this.historyStore.items, ...this.favoriteStore.items]\n });\n });\n\n this.historyStore = new _QueryStore.default('queries', props.storage, MAX_HISTORY_LENGTH); // favorites are not automatically deleted, so there's no need for a max length\n\n this.favoriteStore = new _QueryStore.default('favorites', props.storage, null);\n\n const _historyQueries = this.historyStore.fetchAll();\n\n const _favoriteQueries = this.favoriteStore.fetchAll();\n\n const _queries = _historyQueries.concat(_favoriteQueries);\n\n this.state = {\n queries: _queries\n };\n }\n\n render() {\n const queries = this.state.queries.slice().reverse();\n const queryNodes = queries.map((query, i) => {\n return /*#__PURE__*/_react.default.createElement(_HistoryQuery.default, _extends({\n handleEditLabel: this.editLabel,\n handleToggleFavorite: this.toggleFavorite,\n key: `${i}:${query.label || query.query}`,\n onSelect: this.props.onSelectQuery\n }, query));\n });\n return /*#__PURE__*/_react.default.createElement(\"section\", {\n \"aria-label\": \"History\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"history-title-bar\"\n }, /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"history-title\"\n }, 'History'), /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"doc-explorer-rhs\"\n }, this.props.children)), /*#__PURE__*/_react.default.createElement(\"ul\", {\n className: \"history-contents\"\n }, queryNodes));\n } // Public API\n\n\n }\n\n _exports.QueryHistory = QueryHistory;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1F1ZXJ5SGlzdG9yeS50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvUXVlcnlIaXN0b3J5LnRzeD8yOGY4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCB7IHBhcnNlIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFF1ZXJ5U3RvcmUsIHsgUXVlcnlTdG9yZUl0ZW0gfSBmcm9tICcuLi91dGlsaXR5L1F1ZXJ5U3RvcmUnO1xuaW1wb3J0IEhpc3RvcnlRdWVyeSwge1xuICBIYW5kbGVFZGl0TGFiZWxGbixcbiAgSGFuZGxlVG9nZ2xlRmF2b3JpdGVGbixcbiAgSGFuZGxlU2VsZWN0UXVlcnlGbixcbn0gZnJvbSAnLi9IaXN0b3J5UXVlcnknO1xuaW1wb3J0IFN0b3JhZ2VBUEkgZnJvbSAnLi4vdXRpbGl0eS9TdG9yYWdlQVBJJztcblxuY29uc3QgTUFYX1FVRVJZX1NJWkUgPSAxMDAwMDA7XG5jb25zdCBNQVhfSElTVE9SWV9MRU5HVEggPSAyMDtcblxuY29uc3Qgc2hvdWxkU2F2ZVF1ZXJ5ID0gKFxuICBxdWVyeT86IHN0cmluZyxcbiAgdmFyaWFibGVzPzogc3RyaW5nLFxuICBoZWFkZXJzPzogc3RyaW5nLFxuICBsYXN0UXVlcnlTYXZlZD86IFF1ZXJ5U3RvcmVJdGVtLFxuKSA9PiB7XG4gIGlmICghcXVlcnkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0cnkge1xuICAgIHBhcnNlKHF1ZXJ5KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIERvbid0IHRyeSB0byBzYXZlIGdpYW50IHF1ZXJpZXNcbiAgaWYgKHF1ZXJ5Lmxlbmd0aCA+IE1BWF9RVUVSWV9TSVpFKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICghbGFzdFF1ZXJ5U2F2ZWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoSlNPTi5zdHJpbmdpZnkocXVlcnkpID09PSBKU09OLnN0cmluZ2lmeShsYXN0UXVlcnlTYXZlZC5xdWVyeSkpIHtcbiAgICBpZiAoXG4gICAgICBKU09OLnN0cmluZ2lmeSh2YXJpYWJsZXMpID09PSBKU09OLnN0cmluZ2lmeShsYXN0UXVlcnlTYXZlZC52YXJpYWJsZXMpXG4gICAgKSB7XG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoaGVhZGVycykgPT09IEpTT04uc3RyaW5naWZ5KGxhc3RRdWVyeVNhdmVkLmhlYWRlcnMpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChoZWFkZXJzICYmICFsYXN0UXVlcnlTYXZlZC5oZWFkZXJzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHZhcmlhYmxlcyAmJiAhbGFzdFF1ZXJ5U2F2ZWQudmFyaWFibGVzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxudHlwZSBRdWVyeUhpc3RvcnlQcm9wcyA9IHtcbiAgcXVlcnk/OiBzdHJpbmc7XG4gIHZhcmlhYmxlcz86IHN0cmluZztcbiAgaGVhZGVycz86IHN0cmluZztcbiAgb3BlcmF0aW9uTmFtZT86IHN0cmluZztcbiAgcXVlcnlJRD86IG51bWJlcjtcbiAgb25TZWxlY3RRdWVyeTogSGFuZGxlU2VsZWN0UXVlcnlGbjtcbiAgc3RvcmFnZTogU3RvcmFnZUFQSTtcbn07XG5cbnR5cGUgUXVlcnlIaXN0b3J5U3RhdGUgPSB7XG4gIHF1ZXJpZXM6IEFycmF5PFF1ZXJ5U3RvcmVJdGVtPjtcbn07XG5cbmV4cG9ydCBjbGFzcyBRdWVyeUhpc3RvcnkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8XG4gIFF1ZXJ5SGlzdG9yeVByb3BzLFxuICBRdWVyeUhpc3RvcnlTdGF0ZVxuPiB7XG4gIGhpc3RvcnlTdG9yZTogUXVlcnlTdG9yZTtcbiAgZmF2b3JpdGVTdG9yZTogUXVlcnlTdG9yZTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogUXVlcnlIaXN0b3J5UHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5oaXN0b3J5U3RvcmUgPSBuZXcgUXVlcnlTdG9yZShcbiAgICAgICdxdWVyaWVzJyxcbiAgICAgIHByb3BzLnN0b3JhZ2UsXG4gICAgICBNQVhfSElTVE9SWV9MRU5HVEgsXG4gICAgKTtcbiAgICAvLyBmYXZvcml0ZXMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGRlbGV0ZWQsIHNvIHRoZXJlJ3Mgbm8gbmVlZCBmb3IgYSBtYXggbGVuZ3RoXG4gICAgdGhpcy5mYXZvcml0ZVN0b3JlID0gbmV3IFF1ZXJ5U3RvcmUoJ2Zhdm9yaXRlcycsIHByb3BzLnN0b3JhZ2UsIG51bGwpO1xuICAgIGNvbnN0IGhpc3RvcnlRdWVyaWVzID0gdGhpcy5oaXN0b3J5U3RvcmUuZmV0Y2hBbGwoKTtcbiAgICBjb25zdCBmYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLmZhdm9yaXRlU3RvcmUuZmV0Y2hBbGwoKTtcbiAgICBjb25zdCBxdWVyaWVzID0gaGlzdG9yeVF1ZXJpZXMuY29uY2F0KGZhdm9yaXRlUXVlcmllcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHsgcXVlcmllcyB9O1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHF1ZXJpZXMgPSB0aGlzLnN0YXRlLnF1ZXJpZXMuc2xpY2UoKS5yZXZlcnNlKCk7XG4gICAgY29uc3QgcXVlcnlOb2RlcyA9IHF1ZXJpZXMubWFwKChxdWVyeSwgaSkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEhpc3RvcnlRdWVyeVxuICAgICAgICAgIGhhbmRsZUVkaXRMYWJlbD17dGhpcy5lZGl0TGFiZWx9XG4gICAgICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGU9e3RoaXMudG9nZ2xlRmF2b3JpdGV9XG4gICAgICAgICAga2V5PXtgJHtpfToke3F1ZXJ5LmxhYmVsIHx8IHF1ZXJ5LnF1ZXJ5fWB9XG4gICAgICAgICAgb25TZWxlY3Q9e3RoaXMucHJvcHMub25TZWxlY3RRdWVyeX1cbiAgICAgICAgICB7Li4ucXVlcnl9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH0pO1xuICAgIHJldHVybiAoXG4gICAgICA8c2VjdGlvbiBhcmlhLWxhYmVsPVwiSGlzdG9yeVwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhpc3RvcnktdGl0bGUtYmFyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoaXN0b3J5LXRpdGxlXCI+eydIaXN0b3J5J308L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvYy1leHBsb3Jlci1yaHNcIj57dGhpcy5wcm9wcy5jaGlsZHJlbn08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx1bCBjbGFzc05hbWU9XCJoaXN0b3J5LWNvbnRlbnRzXCI+e3F1ZXJ5Tm9kZXN9PC91bD5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICApO1xuICB9XG5cbiAgLy8gUHVibGljIEFQSVxuICB1cGRhdGVIaXN0b3J5ID0gKFxuICAgIHF1ZXJ5Pzogc3RyaW5nLFxuICAgIHZhcmlhYmxlcz86IHN0cmluZyxcbiAgICBoZWFkZXJzPzogc3RyaW5nLFxuICAgIG9wZXJhdGlvbk5hbWU/OiBzdHJpbmcsXG4gICkgPT4ge1xuICAgIGlmIChcbiAgICAgIHNob3VsZFNhdmVRdWVyeShcbiAgICAgICAgcXVlcnksXG4gICAgICAgIHZhcmlhYmxlcyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgICAgdGhpcy5oaXN0b3J5U3RvcmUuZmV0Y2hSZWNlbnQoKSxcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMuaGlzdG9yeVN0b3JlLnB1c2goe1xuICAgICAgICBxdWVyeSxcbiAgICAgICAgdmFyaWFibGVzLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgICBvcGVyYXRpb25OYW1lLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBoaXN0b3J5UXVlcmllcyA9IHRoaXMuaGlzdG9yeVN0b3JlLml0ZW1zO1xuICAgICAgY29uc3QgZmF2b3JpdGVRdWVyaWVzID0gdGhpcy5mYXZvcml0ZVN0b3JlLml0ZW1zO1xuICAgICAgY29uc3QgcXVlcmllcyA9IGhpc3RvcnlRdWVyaWVzLmNvbmNhdChmYXZvcml0ZVF1ZXJpZXMpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHF1ZXJpZXMsXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgLy8gUHVibGljIEFQSVxuICB0b2dnbGVGYXZvcml0ZTogSGFuZGxlVG9nZ2xlRmF2b3JpdGVGbiA9IChcbiAgICBxdWVyeSxcbiAgICB2YXJpYWJsZXMsXG4gICAgaGVhZGVycyxcbiAgICBvcGVyYXRpb25OYW1lLFxuICAgIGxhYmVsLFxuICAgIGZhdm9yaXRlLFxuICApID0+IHtcbiAgICBjb25zdCBpdGVtOiBRdWVyeVN0b3JlSXRlbSA9IHtcbiAgICAgIHF1ZXJ5LFxuICAgICAgdmFyaWFibGVzLFxuICAgICAgaGVhZGVycyxcbiAgICAgIG9wZXJhdGlvbk5hbWUsXG4gICAgICBsYWJlbCxcbiAgICB9O1xuICAgIGlmICghdGhpcy5mYXZvcml0ZVN0b3JlLmNvbnRhaW5zKGl0ZW0pKSB7XG4gICAgICBpdGVtLmZhdm9yaXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuZmF2b3JpdGVTdG9yZS5wdXNoKGl0ZW0pO1xuICAgIH0gZWxzZSBpZiAoZmF2b3JpdGUpIHtcbiAgICAgIGl0ZW0uZmF2b3JpdGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmF2b3JpdGVTdG9yZS5kZWxldGUoaXRlbSk7XG4gICAgfVxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgcXVlcmllczogWy4uLnRoaXMuaGlzdG9yeVN0b3JlLml0ZW1zLCAuLi50aGlzLmZhdm9yaXRlU3RvcmUuaXRlbXNdLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIFB1YmxpYyBBUElcbiAgZWRpdExhYmVsOiBIYW5kbGVFZGl0TGFiZWxGbiA9IChcbiAgICBxdWVyeSxcbiAgICB2YXJpYWJsZXMsXG4gICAgaGVhZGVycyxcbiAgICBvcGVyYXRpb25OYW1lLFxuICAgIGxhYmVsLFxuICAgIGZhdm9yaXRlLFxuICApID0+IHtcbiAgICBjb25zdCBpdGVtID0ge1xuICAgICAgcXVlcnksXG4gICAgICB2YXJpYWJsZXMsXG4gICAgICBoZWFkZXJzLFxuICAgICAgb3BlcmF0aW9uTmFtZSxcbiAgICAgIGxhYmVsLFxuICAgIH07XG4gICAgaWYgKGZhdm9yaXRlKSB7XG4gICAgICB0aGlzLmZhdm9yaXRlU3RvcmUuZWRpdCh7IC4uLml0ZW0sIGZhdm9yaXRlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpc3RvcnlTdG9yZS5lZGl0KGl0ZW0pO1xuICAgIH1cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHF1ZXJpZXM6IFsuLi50aGlzLmhpc3RvcnlTdG9yZS5pdGVtcywgLi4udGhpcy5mYXZvcml0ZVN0b3JlLml0ZW1zXSxcbiAgICB9KTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQWVBO0FBT0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQThDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQXBFQTtBQThFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFoR0E7QUEwR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFDQTtBQU1BO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBeEhBO0FBQ0E7QUFLQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQVFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQTNDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/QueryHistory.tsx\n");
3298
3299/***/ }),
3300
3301/***/ "./components/ResultViewer.tsx":
3302/*!*************************************!*\
3303 !*** ./components/ResultViewer.tsx ***!
3304 \*************************************/
3305/*! no static exports found */
3306/***/ (function(module, exports, __webpack_require__) {
3307
3308eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! react-dom */ \"react-dom\"), __webpack_require__(/*! ../utility/commonKeys */ \"./utility/commonKeys.ts\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _reactDom, _commonKeys) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.ResultViewer = void 0;\n _react = _interopRequireDefault(_react);\n _reactDom = _interopRequireDefault(_reactDom);\n _commonKeys = _interopRequireDefault(_commonKeys);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n /**\n * ResultViewer\n *\n * Maintains an instance of CodeMirror for viewing a GraphQL response.\n *\n * Props:\n *\n * - value: The text of the editor.\n *\n */\n class ResultViewer extends _react.default.Component {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"viewer\", null);\n\n _defineProperty(this, \"_node\", null);\n }\n\n componentDidMount() {\n // Lazily require to ensure requiring GraphiQL outside of a Browser context\n // does not produce an error.\n const CodeMirror = __webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\");\n\n __webpack_require__(/*! codemirror/addon/fold/foldgutter */ \"../../../node_modules/codemirror/addon/fold/foldgutter.js\");\n\n __webpack_require__(/*! codemirror/addon/fold/brace-fold */ \"../../../node_modules/codemirror/addon/fold/brace-fold.js\");\n\n __webpack_require__(/*! codemirror/addon/dialog/dialog */ \"../../../node_modules/codemirror/addon/dialog/dialog.js\");\n\n __webpack_require__(/*! codemirror/addon/search/search */ \"../../../node_modules/codemirror/addon/search/search.js\");\n\n __webpack_require__(/*! codemirror/addon/search/searchcursor */ \"../../../node_modules/codemirror/addon/search/searchcursor.js\");\n\n __webpack_require__(/*! codemirror/addon/search/jump-to-line */ \"../../../node_modules/codemirror/addon/search/jump-to-line.js\");\n\n __webpack_require__(/*! codemirror/keymap/sublime */ \"../../../node_modules/codemirror/keymap/sublime.js\");\n\n __webpack_require__(/*! codemirror-graphql/results/mode */ \"../../codemirror-graphql/results/mode.js\");\n\n const Tooltip = this.props.ResultsTooltip;\n const ImagePreview = this.props.ImagePreview;\n\n if (Tooltip || ImagePreview) {\n __webpack_require__(/*! codemirror-graphql/utils/info-addon */ \"../../codemirror-graphql/utils/info-addon.js\");\n\n const tooltipDiv = document.createElement('div');\n CodeMirror.registerHelper('info', 'graphql-results', (token, _options, _cm, pos) => {\n const infoElements = [];\n\n if (Tooltip) {\n infoElements.push( /*#__PURE__*/_react.default.createElement(Tooltip, {\n pos: pos\n }));\n }\n\n if (ImagePreview && typeof ImagePreview.shouldRender === 'function' && ImagePreview.shouldRender(token)) {\n infoElements.push( /*#__PURE__*/_react.default.createElement(ImagePreview, {\n token: token\n }));\n }\n\n if (!infoElements.length) {\n _reactDom.default.unmountComponentAtNode(tooltipDiv);\n\n return null;\n }\n\n _reactDom.default.render( /*#__PURE__*/_react.default.createElement(\"div\", null, infoElements), tooltipDiv);\n\n return tooltipDiv;\n });\n }\n\n this.viewer = CodeMirror(this._node, {\n lineWrapping: true,\n value: this.props.value || '',\n readOnly: true,\n theme: this.props.editorTheme || 'graphiql',\n mode: 'graphql-results',\n keyMap: 'sublime',\n foldGutter: {\n minFoldSize: 4\n },\n gutters: ['CodeMirror-foldgutter'],\n info: Boolean(this.props.ResultsTooltip || this.props.ImagePreview),\n extraKeys: _commonKeys.default\n });\n }\n\n shouldComponentUpdate(nextProps) {\n return this.props.value !== nextProps.value;\n }\n\n componentDidUpdate() {\n if (this.viewer) {\n this.viewer.setValue(this.props.value || '');\n }\n }\n\n componentWillUnmount() {\n this.viewer = null;\n }\n\n render() {\n return /*#__PURE__*/_react.default.createElement(\"section\", {\n className: \"result-window\",\n \"aria-label\": \"Result Window\",\n \"aria-live\": \"polite\",\n \"aria-atomic\": \"true\",\n ref: node => {\n if (node) {\n this.props.registerRef(node);\n this._node = node;\n }\n }\n });\n }\n /**\n * Public API for retrieving the CodeMirror instance from this\n * React component.\n */\n\n\n getCodeMirror() {\n return this.viewer;\n }\n /**\n * Public API for retrieving the DOM client height for this component.\n */\n\n\n getClientHeight() {\n return this._node && this._node.clientHeight;\n }\n\n }\n\n _exports.ResultViewer = ResultViewer;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1Jlc3VsdFZpZXdlci50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvUmVzdWx0Vmlld2VyLnRzeD83ZGVhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQsIEZ1bmN0aW9uQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgKiBhcyBDTSBmcm9tICdjb2RlbWlycm9yJztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IGNvbW1vbktleXMgZnJvbSAnLi4vdXRpbGl0eS9jb21tb25LZXlzJztcbmltcG9ydCB7IFNpemVyQ29tcG9uZW50IH0gZnJvbSAnLi4vdXRpbGl0eS9Db2RlTWlycm9yU2l6ZXInO1xuaW1wb3J0IHsgSW1hZ2VQcmV2aWV3IGFzIEltYWdlUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4vSW1hZ2VQcmV2aWV3JztcblxudHlwZSBSZXN1bHRWaWV3ZXJQcm9wcyA9IHtcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIGVkaXRvclRoZW1lPzogc3RyaW5nO1xuICBSZXN1bHRzVG9vbHRpcD86IHR5cGVvZiBDb21wb25lbnQgfCBGdW5jdGlvbkNvbXBvbmVudDtcbiAgSW1hZ2VQcmV2aWV3OiB0eXBlb2YgSW1hZ2VQcmV2aWV3Q29tcG9uZW50O1xuICByZWdpc3RlclJlZjogKG5vZGU6IEhUTUxFbGVtZW50KSA9PiB2b2lkO1xufTtcblxuLyoqXG4gKiBSZXN1bHRWaWV3ZXJcbiAqXG4gKiBNYWludGFpbnMgYW4gaW5zdGFuY2Ugb2YgQ29kZU1pcnJvciBmb3Igdmlld2luZyBhIEdyYXBoUUwgcmVzcG9uc2UuXG4gKlxuICogUHJvcHM6XG4gKlxuICogICAtIHZhbHVlOiBUaGUgdGV4dCBvZiB0aGUgZWRpdG9yLlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIFJlc3VsdFZpZXdlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxSZXN1bHRWaWV3ZXJQcm9wcywge30+XG4gIGltcGxlbWVudHMgU2l6ZXJDb21wb25lbnQge1xuICB2aWV3ZXI6IChDTS5FZGl0b3IgJiB7IG9wdGlvbnM6IGFueSB9KSB8IG51bGwgPSBudWxsO1xuICBfbm9kZTogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAvLyBMYXppbHkgcmVxdWlyZSB0byBlbnN1cmUgcmVxdWlyaW5nIEdyYXBoaVFMIG91dHNpZGUgb2YgYSBCcm93c2VyIGNvbnRleHRcbiAgICAvLyBkb2VzIG5vdCBwcm9kdWNlIGFuIGVycm9yLlxuICAgIGNvbnN0IENvZGVNaXJyb3IgPSByZXF1aXJlKCdjb2RlbWlycm9yJyk7XG4gICAgcmVxdWlyZSgnY29kZW1pcnJvci9hZGRvbi9mb2xkL2ZvbGRndXR0ZXInKTtcbiAgICByZXF1aXJlKCdjb2RlbWlycm9yL2FkZG9uL2ZvbGQvYnJhY2UtZm9sZCcpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3IvYWRkb24vZGlhbG9nL2RpYWxvZycpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3IvYWRkb24vc2VhcmNoL3NlYXJjaCcpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3IvYWRkb24vc2VhcmNoL3NlYXJjaGN1cnNvcicpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3IvYWRkb24vc2VhcmNoL2p1bXAtdG8tbGluZScpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3Iva2V5bWFwL3N1YmxpbWUnKTtcbiAgICByZXF1aXJlKCdjb2RlbWlycm9yLWdyYXBocWwvcmVzdWx0cy9tb2RlJyk7XG4gICAgY29uc3QgVG9vbHRpcCA9IHRoaXMucHJvcHMuUmVzdWx0c1Rvb2x0aXA7XG4gICAgY29uc3QgSW1hZ2VQcmV2aWV3ID0gdGhpcy5wcm9wcy5JbWFnZVByZXZpZXc7XG5cbiAgICBpZiAoVG9vbHRpcCB8fCBJbWFnZVByZXZpZXcpIHtcbiAgICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3ItZ3JhcGhxbC91dGlscy9pbmZvLWFkZG9uJyk7XG4gICAgICBjb25zdCB0b29sdGlwRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBDb2RlTWlycm9yLnJlZ2lzdGVySGVscGVyKFxuICAgICAgICAnaW5mbycsXG4gICAgICAgICdncmFwaHFsLXJlc3VsdHMnLFxuICAgICAgICAodG9rZW46IGFueSwgX29wdGlvbnM6IGFueSwgX2NtOiBDb2RlTWlycm9yLkVkaXRvciwgcG9zOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBpbmZvRWxlbWVudHM6IEpTWC5FbGVtZW50W10gPSBbXTtcbiAgICAgICAgICBpZiAoVG9vbHRpcCkge1xuICAgICAgICAgICAgaW5mb0VsZW1lbnRzLnB1c2goPFRvb2x0aXAgcG9zPXtwb3N9IC8+KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBJbWFnZVByZXZpZXcgJiZcbiAgICAgICAgICAgIHR5cGVvZiBJbWFnZVByZXZpZXcuc2hvdWxkUmVuZGVyID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgICAgICBJbWFnZVByZXZpZXcuc2hvdWxkUmVuZGVyKHRva2VuKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaW5mb0VsZW1lbnRzLnB1c2goPEltYWdlUHJldmlldyB0b2tlbj17dG9rZW59IC8+KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWluZm9FbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIFJlYWN0RE9NLnVubW91bnRDb21wb25lbnRBdE5vZGUodG9vbHRpcERpdik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgUmVhY3RET00ucmVuZGVyKDxkaXY+e2luZm9FbGVtZW50c308L2Rpdj4sIHRvb2x0aXBEaXYpO1xuICAgICAgICAgIHJldHVybiB0b29sdGlwRGl2O1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnZpZXdlciA9IENvZGVNaXJyb3IodGhpcy5fbm9kZSwge1xuICAgICAgbGluZVdyYXBwaW5nOiB0cnVlLFxuICAgICAgdmFsdWU6IHRoaXMucHJvcHMudmFsdWUgfHwgJycsXG4gICAgICByZWFkT25seTogdHJ1ZSxcbiAgICAgIHRoZW1lOiB0aGlzLnByb3BzLmVkaXRvclRoZW1lIHx8ICdncmFwaGlxbCcsXG4gICAgICBtb2RlOiAnZ3JhcGhxbC1yZXN1bHRzJyxcbiAgICAgIGtleU1hcDogJ3N1YmxpbWUnLFxuICAgICAgZm9sZEd1dHRlcjoge1xuICAgICAgICBtaW5Gb2xkU2l6ZTogNCxcbiAgICAgIH0sXG4gICAgICBndXR0ZXJzOiBbJ0NvZGVNaXJyb3ItZm9sZGd1dHRlciddLFxuICAgICAgaW5mbzogQm9vbGVhbih0aGlzLnByb3BzLlJlc3VsdHNUb29sdGlwIHx8IHRoaXMucHJvcHMuSW1hZ2VQcmV2aWV3KSxcbiAgICAgIGV4dHJhS2V5czogY29tbW9uS2V5cyxcbiAgICB9KTtcbiAgfVxuXG4gIHNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHM6IFJlc3VsdFZpZXdlclByb3BzKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMudmFsdWUgIT09IG5leHRQcm9wcy52YWx1ZTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICBpZiAodGhpcy52aWV3ZXIpIHtcbiAgICAgIHRoaXMudmlld2VyLnNldFZhbHVlKHRoaXMucHJvcHMudmFsdWUgfHwgJycpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMudmlld2VyID0gbnVsbDtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPHNlY3Rpb25cbiAgICAgICAgY2xhc3NOYW1lPVwicmVzdWx0LXdpbmRvd1wiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJSZXN1bHQgV2luZG93XCJcbiAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgYXJpYS1hdG9taWM9XCJ0cnVlXCJcbiAgICAgICAgcmVmPXtub2RlID0+IHtcbiAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5yZWdpc3RlclJlZihub2RlKTtcbiAgICAgICAgICAgIHRoaXMuX25vZGUgPSBub2RlO1xuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaWMgQVBJIGZvciByZXRyaWV2aW5nIHRoZSBDb2RlTWlycm9yIGluc3RhbmNlIGZyb20gdGhpc1xuICAgKiBSZWFjdCBjb21wb25lbnQuXG4gICAqL1xuICBnZXRDb2RlTWlycm9yKCkge1xuICAgIHJldHVybiB0aGlzLnZpZXdlciBhcyBDTS5FZGl0b3I7XG4gIH1cblxuICAvKipcbiAgICogUHVibGljIEFQSSBmb3IgcmV0cmlldmluZyB0aGUgRE9NIGNsaWVudCBoZWlnaHQgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgKi9cbiAgZ2V0Q2xpZW50SGVpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLl9ub2RlICYmIHRoaXMuX25vZGUuY2xpZW50SGVpZ2h0O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBWkE7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVZBO0FBYUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUE5R0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/ResultViewer.tsx\n");
3309
3310/***/ }),
3311
3312/***/ "./components/ToolbarButton.tsx":
3313/*!**************************************!*\
3314 !*** ./components/ToolbarButton.tsx ***!
3315 \**************************************/
3316/*! no static exports found */
3317/***/ (function(module, exports, __webpack_require__) {
3318
3319eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.ToolbarButton = void 0;\n _react = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n /**\n * ToolbarButton\n *\n * A button to use within the Toolbar.\n */\n class ToolbarButton extends _react.default.Component {\n constructor(props) {\n super(props);\n\n _defineProperty(this, \"handleClick\", () => {\n try {\n this.props.onClick();\n this.setState({\n error: null\n });\n } catch (error) {\n this.setState({\n error\n });\n }\n });\n\n this.state = {\n error: null\n };\n }\n\n render() {\n const {\n error\n } = this.state;\n return /*#__PURE__*/_react.default.createElement(\"button\", {\n className: 'toolbar-button' + (error ? ' error' : ''),\n onClick: this.handleClick,\n title: error ? error.message : this.props.title,\n \"aria-invalid\": error ? 'true' : 'false'\n }, this.props.label);\n }\n\n }\n\n _exports.ToolbarButton = ToolbarButton;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1Rvb2xiYXJCdXR0b24udHN4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi9jb21wb25lbnRzL1Rvb2xiYXJCdXR0b24udHN4PzFlZmEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxIEdyYXBoUUwgQ29udHJpYnV0b3JzLlxuICpcbiAqICBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqICBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxudHlwZSBUb29sYmFyQnV0dG9uUHJvcHMgPSB7XG4gIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59O1xuXG50eXBlIFRvb2xiYXJCdXR0b25TdGF0ZSA9IHtcbiAgZXJyb3I6IEVycm9yIHwgbnVsbDtcbn07XG5cbi8qKlxuICogVG9vbGJhckJ1dHRvblxuICpcbiAqIEEgYnV0dG9uIHRvIHVzZSB3aXRoaW4gdGhlIFRvb2xiYXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBUb29sYmFyQnV0dG9uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFxuICBUb29sYmFyQnV0dG9uUHJvcHMsXG4gIFRvb2xiYXJCdXR0b25TdGF0ZVxuPiB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBUb29sYmFyQnV0dG9uUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHsgZXJyb3I6IG51bGwgfTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGVycm9yIH0gPSB0aGlzLnN0YXRlO1xuICAgIHJldHVybiAoXG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17J3Rvb2xiYXItYnV0dG9uJyArIChlcnJvciA/ICcgZXJyb3InIDogJycpfVxuICAgICAgICBvbkNsaWNrPXt0aGlzLmhhbmRsZUNsaWNrfVxuICAgICAgICB0aXRsZT17ZXJyb3IgPyBlcnJvci5tZXNzYWdlIDogdGhpcy5wcm9wcy50aXRsZX1cbiAgICAgICAgYXJpYS1pbnZhbGlkPXtlcnJvciA/ICd0cnVlJyA6ICdmYWxzZSd9PlxuICAgICAgICB7dGhpcy5wcm9wcy5sYWJlbH1cbiAgICAgIDwvYnV0dG9uPlxuICAgICk7XG4gIH1cblxuICBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5wcm9wcy5vbkNsaWNrKCk7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZXJyb3I6IG51bGwgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJvciB9KTtcbiAgICB9XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBbUJBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXhCQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFRQTtBQUNBO0FBbEJBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/ToolbarButton.tsx\n");
3320
3321/***/ }),
3322
3323/***/ "./components/ToolbarGroup.tsx":
3324/*!*************************************!*\
3325 !*** ./components/ToolbarGroup.tsx ***!
3326 \*************************************/
3327/*! no static exports found */
3328/***/ (function(module, exports, __webpack_require__) {
3329
3330eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.ToolbarGroup = ToolbarGroup;\n _react = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n /**\n * ToolbarGroup\n *\n * A group of associated controls.\n */\n function ToolbarGroup({\n children\n }) {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"toolbar-button-group\"\n }, children);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1Rvb2xiYXJHcm91cC50c3guanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2NvbXBvbmVudHMvVG9vbGJhckdyb3VwLnRzeD8xYjkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5cbnR5cGUgVG9vbGJhckdyb3VwUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFRvb2xiYXJHcm91cFxuICpcbiAqIEEgZ3JvdXAgb2YgYXNzb2NpYXRlZCBjb250cm9scy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRvb2xiYXJHcm91cCh7IGNoaWxkcmVuIH06IFRvb2xiYXJHcm91cFByb3BzKSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInRvb2xiYXItYnV0dG9uLWdyb3VwXCI+e2NoaWxkcmVufTwvZGl2Pjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/ToolbarGroup.tsx\n");
3331
3332/***/ }),
3333
3334/***/ "./components/ToolbarMenu.tsx":
3335/*!************************************!*\
3336 !*** ./components/ToolbarMenu.tsx ***!
3337 \************************************/
3338/*! no static exports found */
3339/***/ (function(module, exports, __webpack_require__) {
3340
3341eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.ToolbarMenuItem = _exports.ToolbarMenu = void 0;\n _react = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n /**\n * ToolbarMenu\n *\n * A menu style button to use within the Toolbar.\n */\n class ToolbarMenu extends _react.default.Component {\n constructor(props) {\n super(props);\n\n _defineProperty(this, \"_node\", null);\n\n _defineProperty(this, \"_listener\", null);\n\n _defineProperty(this, \"handleOpen\", e => {\n preventDefault(e);\n this.setState({\n visible: true\n });\n\n this._subscribe();\n });\n\n this.state = {\n visible: false\n };\n }\n\n componentWillUnmount() {\n this._release();\n }\n\n render() {\n const visible = this.state.visible;\n return /*#__PURE__*/_react.default.createElement(\"a\", {\n className: \"toolbar-menu toolbar-button\",\n onClick: this.handleOpen.bind(this),\n onMouseDown: preventDefault,\n ref: node => {\n if (node) {\n this._node = node;\n }\n },\n title: this.props.title\n }, this.props.label, /*#__PURE__*/_react.default.createElement(\"svg\", {\n width: \"14\",\n height: \"8\"\n }, /*#__PURE__*/_react.default.createElement(\"path\", {\n fill: \"#666\",\n d: \"M 5 1.5 L 14 1.5 L 9.5 7 z\"\n })), /*#__PURE__*/_react.default.createElement(\"ul\", {\n className: 'toolbar-menu-items' + (visible ? ' open' : '')\n }, this.props.children));\n }\n\n _subscribe() {\n if (!this._listener) {\n this._listener = this.handleClick.bind(this);\n document.addEventListener('click', this._listener);\n }\n }\n\n _release() {\n if (this._listener) {\n document.removeEventListener('click', this._listener);\n this._listener = null;\n }\n }\n\n handleClick(e) {\n if (this._node !== e.target) {\n e.preventDefault();\n this.setState({\n visible: false\n });\n\n this._release();\n }\n }\n\n }\n\n _exports.ToolbarMenu = ToolbarMenu;\n\n const ToolbarMenuItem = ({\n onSelect,\n title,\n label\n }) => {\n return /*#__PURE__*/_react.default.createElement(\"li\", {\n onMouseOver: e => {\n e.currentTarget.className = 'hover';\n },\n onMouseOut: e => {\n e.currentTarget.className = '';\n },\n onMouseDown: preventDefault,\n onMouseUp: onSelect,\n title: title\n }, label);\n };\n\n _exports.ToolbarMenuItem = ToolbarMenuItem;\n\n function preventDefault(e) {\n e.preventDefault();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1Rvb2xiYXJNZW51LnRzeC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY29tcG9uZW50cy9Ub29sYmFyTWVudS50c3g/MzE1NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgRkMsIE1vdXNlRXZlbnRIYW5kbGVyIH0gZnJvbSAncmVhY3QnO1xuXG50eXBlIFRvb2xiYXJNZW51UHJvcHMgPSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59O1xuXG50eXBlIFRvb2xiYXJNZW51U3RhdGUgPSB7XG4gIHZpc2libGU6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIFRvb2xiYXJNZW51XG4gKlxuICogQSBtZW51IHN0eWxlIGJ1dHRvbiB0byB1c2Ugd2l0aGluIHRoZSBUb29sYmFyLlxuICovXG5leHBvcnQgY2xhc3MgVG9vbGJhck1lbnUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8XG4gIFRvb2xiYXJNZW51UHJvcHMsXG4gIFRvb2xiYXJNZW51U3RhdGVcbj4ge1xuICBwcml2YXRlIF9ub2RlOiBIVE1MQW5jaG9yRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9saXN0ZW5lcjogdGhpc1snaGFuZGxlQ2xpY2snXSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBUb29sYmFyTWVudVByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7IHZpc2libGU6IGZhbHNlIH07XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLl9yZWxlYXNlKCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgdmlzaWJsZSA9IHRoaXMuc3RhdGUudmlzaWJsZTtcbiAgICByZXR1cm4gKFxuICAgICAgPGFcbiAgICAgICAgY2xhc3NOYW1lPVwidG9vbGJhci1tZW51IHRvb2xiYXItYnV0dG9uXCJcbiAgICAgICAgb25DbGljaz17dGhpcy5oYW5kbGVPcGVuLmJpbmQodGhpcyl9XG4gICAgICAgIG9uTW91c2VEb3duPXtwcmV2ZW50RGVmYXVsdH1cbiAgICAgICAgcmVmPXtub2RlID0+IHtcbiAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgdGhpcy5fbm9kZSA9IG5vZGU7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICB0aXRsZT17dGhpcy5wcm9wcy50aXRsZX0+XG4gICAgICAgIHt0aGlzLnByb3BzLmxhYmVsfVxuICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCI4XCI+XG4gICAgICAgICAgPHBhdGggZmlsbD1cIiM2NjZcIiBkPVwiTSA1IDEuNSBMIDE0IDEuNSBMIDkuNSA3IHpcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPHVsIGNsYXNzTmFtZT17J3Rvb2xiYXItbWVudS1pdGVtcycgKyAodmlzaWJsZSA/ICcgb3BlbicgOiAnJyl9PlxuICAgICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAgICA8L3VsPlxuICAgICAgPC9hPlxuICAgICk7XG4gIH1cblxuICBfc3Vic2NyaWJlKCkge1xuICAgIGlmICghdGhpcy5fbGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuX2xpc3RlbmVyID0gdGhpcy5oYW5kbGVDbGljay5iaW5kKHRoaXMpO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9saXN0ZW5lcik7XG4gICAgfVxuICB9XG5cbiAgX3JlbGVhc2UoKSB7XG4gICAgaWYgKHRoaXMuX2xpc3RlbmVyKSB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX2xpc3RlbmVyKTtcbiAgICAgIHRoaXMuX2xpc3RlbmVyID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDbGljayhlOiBNb3VzZUV2ZW50IHwgUmVhY3QuTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pIHtcbiAgICBpZiAodGhpcy5fbm9kZSAhPT0gZS50YXJnZXQpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyB2aXNpYmxlOiBmYWxzZSB9KTtcbiAgICAgIHRoaXMuX3JlbGVhc2UoKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVPcGVuOiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MQW5jaG9yRWxlbWVudD4gPSBlID0+IHtcbiAgICBwcmV2ZW50RGVmYXVsdChlKTtcbiAgICB0aGlzLnNldFN0YXRlKHsgdmlzaWJsZTogdHJ1ZSB9KTtcbiAgICB0aGlzLl9zdWJzY3JpYmUoKTtcbiAgfTtcbn1cblxudHlwZSBUb29sYmFyTWVudUl0ZW1Qcm9wcyA9IHtcbiAgb25TZWxlY3Q6ICgpID0+IHZvaWQ7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY29uc3QgVG9vbGJhck1lbnVJdGVtOiBGQzxUb29sYmFyTWVudUl0ZW1Qcm9wcz4gPSAoe1xuICBvblNlbGVjdCxcbiAgdGl0bGUsXG4gIGxhYmVsLFxufSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxsaVxuICAgICAgb25Nb3VzZU92ZXI9e2UgPT4ge1xuICAgICAgICBlLmN1cnJlbnRUYXJnZXQuY2xhc3NOYW1lID0gJ2hvdmVyJztcbiAgICAgIH19XG4gICAgICBvbk1vdXNlT3V0PXtlID0+IHtcbiAgICAgICAgZS5jdXJyZW50VGFyZ2V0LmNsYXNzTmFtZSA9ICcnO1xuICAgICAgfX1cbiAgICAgIG9uTW91c2VEb3duPXtwcmV2ZW50RGVmYXVsdH1cbiAgICAgIG9uTW91c2VVcD17b25TZWxlY3R9XG4gICAgICB0aXRsZT17dGl0bGV9PlxuICAgICAge2xhYmVsfVxuICAgIDwvbGk+XG4gICk7XG59O1xuXG5mdW5jdGlvbiBwcmV2ZW50RGVmYXVsdChlOiBNb3VzZUV2ZW50IHwgUmVhY3QuTW91c2VFdmVudCkge1xuICBlLnByZXZlbnREZWZhdWx0KCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUF3REE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQTFEQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQVdBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUExREE7QUFDQTs7O0FBdUVBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBYUE7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/ToolbarMenu.tsx\n");
3342
3343/***/ }),
3344
3345/***/ "./components/VariableEditor.tsx":
3346/*!***************************************!*\
3347 !*** ./components/VariableEditor.tsx ***!
3348 \***************************************/
3349/*! no static exports found */
3350/***/ (function(module, exports, __webpack_require__) {
3351
3352eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! react */ \"react\"), __webpack_require__(/*! ../utility/onHasCompletion */ \"./utility/onHasCompletion.ts\"), __webpack_require__(/*! ../utility/commonKeys */ \"./utility/commonKeys.ts\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _react, _onHasCompletion, _commonKeys) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.VariableEditor = void 0;\n _react = _interopRequireDefault(_react);\n _onHasCompletion = _interopRequireDefault(_onHasCompletion);\n _commonKeys = _interopRequireDefault(_commonKeys);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n /**\n * VariableEditor\n *\n * An instance of CodeMirror for editing variables defined in QueryEditor.\n *\n * Props:\n *\n * - variableToType: A mapping of variable name to GraphQLType.\n * - value: The text of the editor.\n * - onEdit: A function called when the editor changes, given the edited text.\n * - readOnly: Turns the editor to read-only mode.\n *\n */\n class VariableEditor extends _react.default.Component {\n constructor(props) {\n super(props); // Keep a cached version of the value, this cache will be updated when the\n // editor is updated, which can later be used to protect the editor from\n // unnecessary updates during the update lifecycle.\n\n _defineProperty(this, \"CodeMirror\", void 0);\n\n _defineProperty(this, \"editor\", null);\n\n _defineProperty(this, \"cachedValue\", void 0);\n\n _defineProperty(this, \"_node\", null);\n\n _defineProperty(this, \"ignoreChangeEvent\", false);\n\n _defineProperty(this, \"_onKeyUp\", (_cm, event) => {\n const code = event.keyCode;\n\n if (!this.editor) {\n return;\n }\n\n if (code >= 65 && code <= 90 || // letters\n !event.shiftKey && code >= 48 && code <= 57 || // numbers\n event.shiftKey && code === 189 || // underscore\n event.shiftKey && code === 222 // \"\n ) {\n this.editor.execCommand('autocomplete');\n }\n });\n\n _defineProperty(this, \"_onEdit\", () => {\n if (!this.editor) {\n return;\n }\n\n if (!this.ignoreChangeEvent) {\n this.cachedValue = this.editor.getValue();\n\n if (this.props.onEdit) {\n this.props.onEdit(this.cachedValue);\n }\n }\n });\n\n _defineProperty(this, \"_onHasCompletion\", (instance, changeObj) => {\n (0, _onHasCompletion.default)(instance, changeObj, this.props.onHintInformationRender);\n });\n\n this.cachedValue = props.value || '';\n }\n\n componentDidMount() {\n // Lazily require to ensure requiring GraphiQL outside of a Browser context\n // does not produce an error.\n this.CodeMirror = __webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\");\n\n __webpack_require__(/*! codemirror/addon/hint/show-hint */ \"../../../node_modules/codemirror/addon/hint/show-hint.js\");\n\n __webpack_require__(/*! codemirror/addon/edit/matchbrackets */ \"../../../node_modules/codemirror/addon/edit/matchbrackets.js\");\n\n __webpack_require__(/*! codemirror/addon/edit/closebrackets */ \"../../../node_modules/codemirror/addon/edit/closebrackets.js\");\n\n __webpack_require__(/*! codemirror/addon/fold/brace-fold */ \"../../../node_modules/codemirror/addon/fold/brace-fold.js\");\n\n __webpack_require__(/*! codemirror/addon/fold/foldgutter */ \"../../../node_modules/codemirror/addon/fold/foldgutter.js\");\n\n __webpack_require__(/*! codemirror/addon/lint/lint */ \"../../../node_modules/codemirror/addon/lint/lint.js\");\n\n __webpack_require__(/*! codemirror/addon/search/searchcursor */ \"../../../node_modules/codemirror/addon/search/searchcursor.js\");\n\n __webpack_require__(/*! codemirror/addon/search/jump-to-line */ \"../../../node_modules/codemirror/addon/search/jump-to-line.js\");\n\n __webpack_require__(/*! codemirror/addon/dialog/dialog */ \"../../../node_modules/codemirror/addon/dialog/dialog.js\");\n\n __webpack_require__(/*! codemirror/keymap/sublime */ \"../../../node_modules/codemirror/keymap/sublime.js\");\n\n __webpack_require__(/*! codemirror-graphql/variables/hint */ \"../../codemirror-graphql/variables/hint.js\");\n\n __webpack_require__(/*! codemirror-graphql/variables/lint */ \"../../codemirror-graphql/variables/lint.js\");\n\n __webpack_require__(/*! codemirror-graphql/variables/mode */ \"../../codemirror-graphql/variables/mode.js\");\n\n const editor = this.editor = this.CodeMirror(this._node, {\n value: this.props.value || '',\n lineNumbers: true,\n tabSize: 2,\n mode: 'graphql-variables',\n theme: this.props.editorTheme || 'graphiql',\n keyMap: 'sublime',\n autoCloseBrackets: true,\n matchBrackets: true,\n showCursorWhenSelecting: true,\n readOnly: this.props.readOnly ? 'nocursor' : false,\n foldGutter: {\n minFoldSize: 4\n },\n lint: {\n variableToType: this.props.variableToType\n },\n hintOptions: {\n variableToType: this.props.variableToType,\n closeOnUnfocus: false,\n completeSingle: false,\n container: this._node\n },\n gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter'],\n extraKeys: {\n 'Cmd-Space': () => this.editor.showHint({\n completeSingle: false,\n container: this._node\n }),\n 'Ctrl-Space': () => this.editor.showHint({\n completeSingle: false,\n container: this._node\n }),\n 'Alt-Space': () => this.editor.showHint({\n completeSingle: false,\n container: this._node\n }),\n 'Shift-Space': () => this.editor.showHint({\n completeSingle: false,\n container: this._node\n }),\n 'Cmd-Enter': () => {\n if (this.props.onRunQuery) {\n this.props.onRunQuery();\n }\n },\n 'Ctrl-Enter': () => {\n if (this.props.onRunQuery) {\n this.props.onRunQuery();\n }\n },\n 'Shift-Ctrl-P': () => {\n if (this.props.onPrettifyQuery) {\n this.props.onPrettifyQuery();\n }\n },\n 'Shift-Ctrl-M': () => {\n if (this.props.onMergeQuery) {\n this.props.onMergeQuery();\n }\n },\n ..._commonKeys.default\n }\n });\n editor.on('change', this._onEdit);\n editor.on('keyup', this._onKeyUp);\n editor.on('hasCompletion', this._onHasCompletion);\n }\n\n componentDidUpdate(prevProps) {\n this.CodeMirror = __webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\");\n\n if (!this.editor) {\n return;\n } // Ensure the changes caused by this update are not interpretted as\n // user-input changes which could otherwise result in an infinite\n // event loop.\n\n\n this.ignoreChangeEvent = true;\n\n if (this.props.variableToType !== prevProps.variableToType) {\n this.editor.options.lint.variableToType = this.props.variableToType;\n this.editor.options.hintOptions.variableToType = this.props.variableToType;\n this.CodeMirror.signal(this.editor, 'change', this.editor);\n }\n\n if (this.props.value !== prevProps.value && this.props.value !== this.cachedValue) {\n const thisValue = this.props.value || '';\n this.cachedValue = thisValue;\n this.editor.setValue(thisValue);\n }\n\n this.ignoreChangeEvent = false;\n }\n\n componentWillUnmount() {\n if (!this.editor) {\n return;\n }\n\n this.editor.off('change', this._onEdit);\n this.editor.off('keyup', this._onKeyUp);\n this.editor.off('hasCompletion', this._onHasCompletion);\n this.editor = null;\n }\n\n render() {\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: \"codemirrorWrap\" // This horrible hack is necessary because a simple display none toggle\n // causes one of the editors' gutters to break otherwise.\n ,\n style: {\n position: this.props.active ? 'relative' : 'absolute',\n visibility: this.props.active ? 'visible' : 'hidden'\n },\n ref: node => {\n this._node = node;\n }\n });\n }\n /**\n * Public API for retrieving the CodeMirror instance from this\n * React component.\n */\n\n\n getCodeMirror() {\n return this.editor;\n }\n /**\n * Public API for retrieving the DOM client height for this component.\n */\n\n\n getClientHeight() {\n return this._node && this._node.clientHeight;\n }\n\n }\n\n _exports.VariableEditor = VariableEditor;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1ZhcmlhYmxlRWRpdG9yLnRzeC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY29tcG9uZW50cy9WYXJpYWJsZUVkaXRvci50c3g/ZGRmYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuLy8gLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi9ub2RlX21vZHVsZXMvQHR5cGVzL2NvZGVtaXJyb3IvYWRkb24vaGludC9zaG93LWhpbnQuZC50c1wiIC8+XG5cbmltcG9ydCB7IEdyYXBoUUxUeXBlIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgdHlwZSAqIGFzIENNIGZyb20gJ2NvZGVtaXJyb3InO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IG9uSGFzQ29tcGxldGlvbiBmcm9tICcuLi91dGlsaXR5L29uSGFzQ29tcGxldGlvbic7XG5pbXBvcnQgY29tbW9uS2V5cyBmcm9tICcuLi91dGlsaXR5L2NvbW1vbktleXMnO1xuXG5kZWNsYXJlIG1vZHVsZSBDb2RlTWlycm9yIHtcbiAgZXhwb3J0IGludGVyZmFjZSBFZGl0b3IgZXh0ZW5kcyBDTS5FZGl0b3Ige31cbiAgZXhwb3J0IGludGVyZmFjZSBTaG93SGludE9wdGlvbnMge1xuICAgIGNvbXBsZXRlU2luZ2xlOiBib29sZWFuO1xuICAgIGhpbnQ6IGFueTtcbiAgICBjb250YWluZXI6IEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgfVxufVxuXG50eXBlIFZhcmlhYmxlRWRpdG9yUHJvcHMgPSB7XG4gIHZhcmlhYmxlVG9UeXBlPzogeyBbdmFyaWFibGU6IHN0cmluZ106IEdyYXBoUUxUeXBlIH07XG4gIHZhbHVlPzogc3RyaW5nO1xuICBvbkVkaXQ6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIG9uSGludEluZm9ybWF0aW9uUmVuZGVyOiAodmFsdWU6IEhUTUxEaXZFbGVtZW50KSA9PiB2b2lkO1xuICBvblByZXR0aWZ5UXVlcnk6ICh2YWx1ZT86IHN0cmluZykgPT4gdm9pZDtcbiAgb25NZXJnZVF1ZXJ5OiAodmFsdWU/OiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uUnVuUXVlcnk6ICh2YWx1ZT86IHN0cmluZykgPT4gdm9pZDtcbiAgZWRpdG9yVGhlbWU/OiBzdHJpbmc7XG4gIGFjdGl2ZT86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIFZhcmlhYmxlRWRpdG9yXG4gKlxuICogQW4gaW5zdGFuY2Ugb2YgQ29kZU1pcnJvciBmb3IgZWRpdGluZyB2YXJpYWJsZXMgZGVmaW5lZCBpbiBRdWVyeUVkaXRvci5cbiAqXG4gKiBQcm9wczpcbiAqXG4gKiAgIC0gdmFyaWFibGVUb1R5cGU6IEEgbWFwcGluZyBvZiB2YXJpYWJsZSBuYW1lIHRvIEdyYXBoUUxUeXBlLlxuICogICAtIHZhbHVlOiBUaGUgdGV4dCBvZiB0aGUgZWRpdG9yLlxuICogICAtIG9uRWRpdDogQSBmdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgZWRpdG9yIGNoYW5nZXMsIGdpdmVuIHRoZSBlZGl0ZWQgdGV4dC5cbiAqICAgLSByZWFkT25seTogVHVybnMgdGhlIGVkaXRvciB0byByZWFkLW9ubHkgbW9kZS5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBWYXJpYWJsZUVkaXRvciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxWYXJpYWJsZUVkaXRvclByb3BzPiB7XG4gIENvZGVNaXJyb3I6IGFueTtcbiAgZWRpdG9yOiAoQ00uRWRpdG9yICYgeyBvcHRpb25zOiBhbnk7IHNob3dIaW50OiBhbnkgfSkgfCBudWxsID0gbnVsbDtcbiAgY2FjaGVkVmFsdWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfbm9kZTogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgaWdub3JlQ2hhbmdlRXZlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29uc3RydWN0b3IocHJvcHM6IFZhcmlhYmxlRWRpdG9yUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAvLyBLZWVwIGEgY2FjaGVkIHZlcnNpb24gb2YgdGhlIHZhbHVlLCB0aGlzIGNhY2hlIHdpbGwgYmUgdXBkYXRlZCB3aGVuIHRoZVxuICAgIC8vIGVkaXRvciBpcyB1cGRhdGVkLCB3aGljaCBjYW4gbGF0ZXIgYmUgdXNlZCB0byBwcm90ZWN0IHRoZSBlZGl0b3IgZnJvbVxuICAgIC8vIHVubmVjZXNzYXJ5IHVwZGF0ZXMgZHVyaW5nIHRoZSB1cGRhdGUgbGlmZWN5Y2xlLlxuICAgIHRoaXMuY2FjaGVkVmFsdWUgPSBwcm9wcy52YWx1ZSB8fCAnJztcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIC8vIExhemlseSByZXF1aXJlIHRvIGVuc3VyZSByZXF1aXJpbmcgR3JhcGhpUUwgb3V0c2lkZSBvZiBhIEJyb3dzZXIgY29udGV4dFxuICAgIC8vIGRvZXMgbm90IHByb2R1Y2UgYW4gZXJyb3IuXG4gICAgdGhpcy5Db2RlTWlycm9yID0gcmVxdWlyZSgnY29kZW1pcnJvcicpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3IvYWRkb24vaGludC9zaG93LWhpbnQnKTtcbiAgICByZXF1aXJlKCdjb2RlbWlycm9yL2FkZG9uL2VkaXQvbWF0Y2hicmFja2V0cycpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3IvYWRkb24vZWRpdC9jbG9zZWJyYWNrZXRzJyk7XG4gICAgcmVxdWlyZSgnY29kZW1pcnJvci9hZGRvbi9mb2xkL2JyYWNlLWZvbGQnKTtcbiAgICByZXF1aXJlKCdjb2RlbWlycm9yL2FkZG9uL2ZvbGQvZm9sZGd1dHRlcicpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3IvYWRkb24vbGludC9saW50Jyk7XG4gICAgcmVxdWlyZSgnY29kZW1pcnJvci9hZGRvbi9zZWFyY2gvc2VhcmNoY3Vyc29yJyk7XG4gICAgcmVxdWlyZSgnY29kZW1pcnJvci9hZGRvbi9zZWFyY2gvanVtcC10by1saW5lJyk7XG4gICAgcmVxdWlyZSgnY29kZW1pcnJvci9hZGRvbi9kaWFsb2cvZGlhbG9nJyk7XG4gICAgcmVxdWlyZSgnY29kZW1pcnJvci9rZXltYXAvc3VibGltZScpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3ItZ3JhcGhxbC92YXJpYWJsZXMvaGludCcpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3ItZ3JhcGhxbC92YXJpYWJsZXMvbGludCcpO1xuICAgIHJlcXVpcmUoJ2NvZGVtaXJyb3ItZ3JhcGhxbC92YXJpYWJsZXMvbW9kZScpO1xuXG4gICAgY29uc3QgZWRpdG9yID0gKHRoaXMuZWRpdG9yID0gdGhpcy5Db2RlTWlycm9yKHRoaXMuX25vZGUsIHtcbiAgICAgIHZhbHVlOiB0aGlzLnByb3BzLnZhbHVlIHx8ICcnLFxuICAgICAgbGluZU51bWJlcnM6IHRydWUsXG4gICAgICB0YWJTaXplOiAyLFxuICAgICAgbW9kZTogJ2dyYXBocWwtdmFyaWFibGVzJyxcbiAgICAgIHRoZW1lOiB0aGlzLnByb3BzLmVkaXRvclRoZW1lIHx8ICdncmFwaGlxbCcsXG4gICAgICBrZXlNYXA6ICdzdWJsaW1lJyxcbiAgICAgIGF1dG9DbG9zZUJyYWNrZXRzOiB0cnVlLFxuICAgICAgbWF0Y2hCcmFja2V0czogdHJ1ZSxcbiAgICAgIHNob3dDdXJzb3JXaGVuU2VsZWN0aW5nOiB0cnVlLFxuICAgICAgcmVhZE9ubHk6IHRoaXMucHJvcHMucmVhZE9ubHkgPyAnbm9jdXJzb3InIDogZmFsc2UsXG4gICAgICBmb2xkR3V0dGVyOiB7XG4gICAgICAgIG1pbkZvbGRTaXplOiA0LFxuICAgICAgfSxcbiAgICAgIGxpbnQ6IHtcbiAgICAgICAgdmFyaWFibGVUb1R5cGU6IHRoaXMucHJvcHMudmFyaWFibGVUb1R5cGUsXG4gICAgICB9LFxuICAgICAgaGludE9wdGlvbnM6IHtcbiAgICAgICAgdmFyaWFibGVUb1R5cGU6IHRoaXMucHJvcHMudmFyaWFibGVUb1R5cGUsXG4gICAgICAgIGNsb3NlT25VbmZvY3VzOiBmYWxzZSxcbiAgICAgICAgY29tcGxldGVTaW5nbGU6IGZhbHNlLFxuICAgICAgICBjb250YWluZXI6IHRoaXMuX25vZGUsXG4gICAgICB9LFxuICAgICAgZ3V0dGVyczogWydDb2RlTWlycm9yLWxpbmVudW1iZXJzJywgJ0NvZGVNaXJyb3ItZm9sZGd1dHRlciddLFxuICAgICAgZXh0cmFLZXlzOiB7XG4gICAgICAgICdDbWQtU3BhY2UnOiAoKSA9PlxuICAgICAgICAgIHRoaXMuZWRpdG9yIS5zaG93SGludCh7XG4gICAgICAgICAgICBjb21wbGV0ZVNpbmdsZTogZmFsc2UsXG4gICAgICAgICAgICBjb250YWluZXI6IHRoaXMuX25vZGUsXG4gICAgICAgICAgfSBhcyBDb2RlTWlycm9yLlNob3dIaW50T3B0aW9ucyksXG4gICAgICAgICdDdHJsLVNwYWNlJzogKCkgPT5cbiAgICAgICAgICB0aGlzLmVkaXRvciEuc2hvd0hpbnQoe1xuICAgICAgICAgICAgY29tcGxldGVTaW5nbGU6IGZhbHNlLFxuICAgICAgICAgICAgY29udGFpbmVyOiB0aGlzLl9ub2RlLFxuICAgICAgICAgIH0gYXMgQ29kZU1pcnJvci5TaG93SGludE9wdGlvbnMpLFxuICAgICAgICAnQWx0LVNwYWNlJzogKCkgPT5cbiAgICAgICAgICB0aGlzLmVkaXRvciEuc2hvd0hpbnQoe1xuICAgICAgICAgICAgY29tcGxldGVTaW5nbGU6IGZhbHNlLFxuICAgICAgICAgICAgY29udGFpbmVyOiB0aGlzLl9ub2RlLFxuICAgICAgICAgIH0gYXMgQ29kZU1pcnJvci5TaG93SGludE9wdGlvbnMpLFxuICAgICAgICAnU2hpZnQtU3BhY2UnOiAoKSA9PlxuICAgICAgICAgIHRoaXMuZWRpdG9yIS5zaG93SGludCh7XG4gICAgICAgICAgICBjb21wbGV0ZVNpbmdsZTogZmFsc2UsXG4gICAgICAgICAgICBjb250YWluZXI6IHRoaXMuX25vZGUsXG4gICAgICAgICAgfSBhcyBDb2RlTWlycm9yLlNob3dIaW50T3B0aW9ucyksXG4gICAgICAgICdDbWQtRW50ZXInOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SdW5RdWVyeSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJ1blF1ZXJ5KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnQ3RybC1FbnRlcic6ICgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJ1blF1ZXJ5KSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uUnVuUXVlcnkoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdTaGlmdC1DdHJsLVAnOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMub25QcmV0dGlmeVF1ZXJ5KSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uUHJldHRpZnlRdWVyeSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICAnU2hpZnQtQ3RybC1NJzogKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uTWVyZ2VRdWVyeSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbk1lcmdlUXVlcnkoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgLi4uY29tbW9uS2V5cyxcbiAgICAgIH0sXG4gICAgfSkpO1xuXG4gICAgZWRpdG9yLm9uKCdjaGFuZ2UnLCB0aGlzLl9vbkVkaXQpO1xuICAgIGVkaXRvci5vbigna2V5dXAnLCB0aGlzLl9vbktleVVwKTtcbiAgICBlZGl0b3Iub24oJ2hhc0NvbXBsZXRpb24nLCB0aGlzLl9vbkhhc0NvbXBsZXRpb24pO1xuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wczogVmFyaWFibGVFZGl0b3JQcm9wcykge1xuICAgIHRoaXMuQ29kZU1pcnJvciA9IHJlcXVpcmUoJ2NvZGVtaXJyb3InKTtcbiAgICBpZiAoIXRoaXMuZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIHRoZSBjaGFuZ2VzIGNhdXNlZCBieSB0aGlzIHVwZGF0ZSBhcmUgbm90IGludGVycHJldHRlZCBhc1xuICAgIC8vIHVzZXItaW5wdXQgY2hhbmdlcyB3aGljaCBjb3VsZCBvdGhlcndpc2UgcmVzdWx0IGluIGFuIGluZmluaXRlXG4gICAgLy8gZXZlbnQgbG9vcC5cbiAgICB0aGlzLmlnbm9yZUNoYW5nZUV2ZW50ID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5wcm9wcy52YXJpYWJsZVRvVHlwZSAhPT0gcHJldlByb3BzLnZhcmlhYmxlVG9UeXBlKSB7XG4gICAgICB0aGlzLmVkaXRvci5vcHRpb25zLmxpbnQudmFyaWFibGVUb1R5cGUgPSB0aGlzLnByb3BzLnZhcmlhYmxlVG9UeXBlO1xuICAgICAgdGhpcy5lZGl0b3Iub3B0aW9ucy5oaW50T3B0aW9ucy52YXJpYWJsZVRvVHlwZSA9IHRoaXMucHJvcHMudmFyaWFibGVUb1R5cGU7XG4gICAgICB0aGlzLkNvZGVNaXJyb3Iuc2lnbmFsKHRoaXMuZWRpdG9yLCAnY2hhbmdlJywgdGhpcy5lZGl0b3IpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLnByb3BzLnZhbHVlICE9PSBwcmV2UHJvcHMudmFsdWUgJiZcbiAgICAgIHRoaXMucHJvcHMudmFsdWUgIT09IHRoaXMuY2FjaGVkVmFsdWVcbiAgICApIHtcbiAgICAgIGNvbnN0IHRoaXNWYWx1ZSA9IHRoaXMucHJvcHMudmFsdWUgfHwgJyc7XG4gICAgICB0aGlzLmNhY2hlZFZhbHVlID0gdGhpc1ZhbHVlO1xuICAgICAgdGhpcy5lZGl0b3Iuc2V0VmFsdWUodGhpc1ZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5pZ25vcmVDaGFuZ2VFdmVudCA9IGZhbHNlO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgaWYgKCF0aGlzLmVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmVkaXRvci5vZmYoJ2NoYW5nZScsIHRoaXMuX29uRWRpdCk7XG4gICAgdGhpcy5lZGl0b3Iub2ZmKCdrZXl1cCcsIHRoaXMuX29uS2V5VXApO1xuICAgIHRoaXMuZWRpdG9yLm9mZignaGFzQ29tcGxldGlvbicsIHRoaXMuX29uSGFzQ29tcGxldGlvbik7XG4gICAgdGhpcy5lZGl0b3IgPSBudWxsO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cImNvZGVtaXJyb3JXcmFwXCJcbiAgICAgICAgLy8gVGhpcyBob3JyaWJsZSBoYWNrIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGEgc2ltcGxlIGRpc3BsYXkgbm9uZSB0b2dnbGVcbiAgICAgICAgLy8gY2F1c2VzIG9uZSBvZiB0aGUgZWRpdG9ycycgZ3V0dGVycyB0byBicmVhayBvdGhlcndpc2UuXG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgcG9zaXRpb246IHRoaXMucHJvcHMuYWN0aXZlID8gJ3JlbGF0aXZlJyA6ICdhYnNvbHV0ZScsXG4gICAgICAgICAgdmlzaWJpbGl0eTogdGhpcy5wcm9wcy5hY3RpdmUgPyAndmlzaWJsZScgOiAnaGlkZGVuJyxcbiAgICAgICAgfX1cbiAgICAgICAgcmVmPXtub2RlID0+IHtcbiAgICAgICAgICB0aGlzLl9ub2RlID0gbm9kZSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaWMgQVBJIGZvciByZXRyaWV2aW5nIHRoZSBDb2RlTWlycm9yIGluc3RhbmNlIGZyb20gdGhpc1xuICAgKiBSZWFjdCBjb21wb25lbnQuXG4gICAqL1xuICBnZXRDb2RlTWlycm9yKCkge1xuICAgIHJldHVybiB0aGlzLmVkaXRvciBhcyBDTS5FZGl0b3I7XG4gIH1cblxuICAvKipcbiAgICogUHVibGljIEFQSSBmb3IgcmV0cmlldmluZyB0aGUgRE9NIGNsaWVudCBoZWlnaHQgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgKi9cbiAgZ2V0Q2xpZW50SGVpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLl9ub2RlICYmIHRoaXMuX25vZGUuY2xpZW50SGVpZ2h0O1xuICB9XG5cbiAgcHJpdmF0ZSBfb25LZXlVcCA9IChfY206IENvZGVNaXJyb3IuRWRpdG9yLCBldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGNvbnN0IGNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgIGlmICghdGhpcy5lZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgKGNvZGUgPj0gNjUgJiYgY29kZSA8PSA5MCkgfHwgLy8gbGV0dGVyc1xuICAgICAgKCFldmVudC5zaGlmdEtleSAmJiBjb2RlID49IDQ4ICYmIGNvZGUgPD0gNTcpIHx8IC8vIG51bWJlcnNcbiAgICAgIChldmVudC5zaGlmdEtleSAmJiBjb2RlID09PSAxODkpIHx8IC8vIHVuZGVyc2NvcmVcbiAgICAgIChldmVudC5zaGlmdEtleSAmJiBjb2RlID09PSAyMjIpIC8vIFwiXG4gICAgKSB7XG4gICAgICB0aGlzLmVkaXRvci5leGVjQ29tbWFuZCgnYXV0b2NvbXBsZXRlJyk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX29uRWRpdCA9ICgpID0+IHtcbiAgICBpZiAoIXRoaXMuZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5pZ25vcmVDaGFuZ2VFdmVudCkge1xuICAgICAgdGhpcy5jYWNoZWRWYWx1ZSA9IHRoaXMuZWRpdG9yLmdldFZhbHVlKCk7XG4gICAgICBpZiAodGhpcy5wcm9wcy5vbkVkaXQpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkVkaXQodGhpcy5jYWNoZWRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX29uSGFzQ29tcGxldGlvbiA9IChcbiAgICBpbnN0YW5jZTogQ00uRWRpdG9yLFxuICAgIGNoYW5nZU9iaj86IENNLkVkaXRvckNoYW5nZUxpbmtlZExpc3QsXG4gICkgPT4ge1xuICAgIG9uSGFzQ29tcGxldGlvbihpbnN0YW5jZSwgY2hhbmdlT2JqLCB0aGlzLnByb3BzLm9uSGludEluZm9ybWF0aW9uUmVuZGVyKTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQU5BO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUE0S0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBekxBO0FBMkxBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBck1BO0FBME1BO0FBQ0E7QUFDQTtBQXRNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRkE7QUFJQTtBQUVBO0FBQ0E7QUFGQTtBQUlBO0FBRUE7QUFDQTtBQUZBO0FBSUE7QUFFQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUEzQ0E7QUF4QkE7QUF1RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUhBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFWQTtBQWFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBaExBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/VariableEditor.tsx\n");
3353
3354/***/ }),
3355
3356/***/ "./css/app.css":
3357/*!*********************!*\
3358 !*** ./css/app.css ***!
3359 \*********************/
3360/*! no static exports found */
3361/***/ (function(module, exports, __webpack_require__) {
3362
3363eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvYXBwLmNzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY3NzL2FwcC5jc3M/ZjQ2NCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4iXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./css/app.css\n");
3364
3365/***/ }),
3366
3367/***/ "./css/codemirror.css":
3368/*!****************************!*\
3369 !*** ./css/codemirror.css ***!
3370 \****************************/
3371/*! no static exports found */
3372/***/ (function(module, exports, __webpack_require__) {
3373
3374eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvY29kZW1pcnJvci5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2Nzcy9jb2RlbWlycm9yLmNzcz84ODg3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./css/codemirror.css\n");
3375
3376/***/ }),
3377
3378/***/ "./css/doc-explorer.css":
3379/*!******************************!*\
3380 !*** ./css/doc-explorer.css ***!
3381 \******************************/
3382/*! no static exports found */
3383/***/ (function(module, exports, __webpack_require__) {
3384
3385eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvZG9jLWV4cGxvcmVyLmNzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY3NzL2RvYy1leHBsb3Jlci5jc3M/MmMyNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4iXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./css/doc-explorer.css\n");
3386
3387/***/ }),
3388
3389/***/ "./css/foldgutter.css":
3390/*!****************************!*\
3391 !*** ./css/foldgutter.css ***!
3392 \****************************/
3393/*! no static exports found */
3394/***/ (function(module, exports, __webpack_require__) {
3395
3396eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvZm9sZGd1dHRlci5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2Nzcy9mb2xkZ3V0dGVyLmNzcz9mZDA4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./css/foldgutter.css\n");
3397
3398/***/ }),
3399
3400/***/ "./css/history.css":
3401/*!*************************!*\
3402 !*** ./css/history.css ***!
3403 \*************************/
3404/*! no static exports found */
3405/***/ (function(module, exports, __webpack_require__) {
3406
3407eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvaGlzdG9yeS5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2Nzcy9oaXN0b3J5LmNzcz9kN2Q5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./css/history.css\n");
3408
3409/***/ }),
3410
3411/***/ "./css/info.css":
3412/*!**********************!*\
3413 !*** ./css/info.css ***!
3414 \**********************/
3415/*! no static exports found */
3416/***/ (function(module, exports, __webpack_require__) {
3417
3418eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvaW5mby5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2Nzcy9pbmZvLmNzcz9kNDU1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./css/info.css\n");
3419
3420/***/ }),
3421
3422/***/ "./css/jump.css":
3423/*!**********************!*\
3424 !*** ./css/jump.css ***!
3425 \**********************/
3426/*! no static exports found */
3427/***/ (function(module, exports, __webpack_require__) {
3428
3429eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvanVtcC5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2Nzcy9qdW1wLmNzcz85MTI1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./css/jump.css\n");
3430
3431/***/ }),
3432
3433/***/ "./css/lint.css":
3434/*!**********************!*\
3435 !*** ./css/lint.css ***!
3436 \**********************/
3437/*! no static exports found */
3438/***/ (function(module, exports, __webpack_require__) {
3439
3440eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvbGludC5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2Nzcy9saW50LmNzcz9jY2NmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./css/lint.css\n");
3441
3442/***/ }),
3443
3444/***/ "./css/loading.css":
3445/*!*************************!*\
3446 !*** ./css/loading.css ***!
3447 \*************************/
3448/*! no static exports found */
3449/***/ (function(module, exports, __webpack_require__) {
3450
3451eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3MvbG9hZGluZy5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL2Nzcy9sb2FkaW5nLmNzcz8zYjUxIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./css/loading.css\n");
3452
3453/***/ }),
3454
3455/***/ "./css/show-hint.css":
3456/*!***************************!*\
3457 !*** ./css/show-hint.css ***!
3458 \***************************/
3459/*! no static exports found */
3460/***/ (function(module, exports, __webpack_require__) {
3461
3462eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jc3Mvc2hvdy1oaW50LmNzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vY3NzL3Nob3ctaGludC5jc3M/ZmM2MCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4iXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./css/show-hint.css\n");
3463
3464/***/ }),
3465
3466/***/ "./utility/CodeMirrorSizer.ts":
3467/*!************************************!*\
3468 !*** ./utility/CodeMirrorSizer.ts ***!
3469 \************************************/
3470/*! no static exports found */
3471/***/ (function(module, exports, __webpack_require__) {
3472
3473eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n /**\n * When a containing DOM node's height has been altered, trigger a resize of\n * the related CodeMirror instance so that it is always correctly sized.\n */\n class CodeMirrorSizer {\n constructor() {\n _defineProperty(this, \"sizes\", []);\n }\n\n updateSizes(components) {\n components.forEach((component, i) => {\n if (component) {\n const size = component.getClientHeight();\n\n if (i <= this.sizes.length && size !== this.sizes[i]) {\n const editor = component.getCodeMirror();\n\n if (editor) {\n editor.setSize(null, null); // TODO: added the args here. double check no effects. might be version issue\n }\n }\n\n this.sizes[i] = size;\n }\n });\n }\n\n }\n\n _exports.default = CodeMirrorSizer;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlsaXR5L0NvZGVNaXJyb3JTaXplci50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vdXRpbGl0eS9Db2RlTWlycm9yU2l6ZXIudHM/ZTM3YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29kZU1pcnJvciBmcm9tICdjb2RlbWlycm9yJztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpemVyQ29tcG9uZW50IHtcbiAgZ2V0Q2xpZW50SGVpZ2h0OiAoKSA9PiBudW1iZXIgfCBudWxsO1xuICBnZXRDb2RlTWlycm9yOiAoKSA9PiBDb2RlTWlycm9yLkVkaXRvcjtcbn1cblxuLyoqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxIEdyYXBoUUwgQ29udHJpYnV0b3JzLlxuICpcbiAqICBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqICBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuLyoqXG4gKiBXaGVuIGEgY29udGFpbmluZyBET00gbm9kZSdzIGhlaWdodCBoYXMgYmVlbiBhbHRlcmVkLCB0cmlnZ2VyIGEgcmVzaXplIG9mXG4gKiB0aGUgcmVsYXRlZCBDb2RlTWlycm9yIGluc3RhbmNlIHNvIHRoYXQgaXQgaXMgYWx3YXlzIGNvcnJlY3RseSBzaXplZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29kZU1pcnJvclNpemVyIHtcbiAgcHVibGljIHNpemVzOiBBcnJheTxudW1iZXIgfCBudWxsPiA9IFtdO1xuXG4gIHB1YmxpYyB1cGRhdGVTaXplcyhjb21wb25lbnRzOiBBcnJheTxNYXliZTxTaXplckNvbXBvbmVudD4+KSB7XG4gICAgY29tcG9uZW50cy5mb3JFYWNoKChjb21wb25lbnQsIGkpID0+IHtcbiAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGNvbXBvbmVudC5nZXRDbGllbnRIZWlnaHQoKTtcbiAgICAgICAgaWYgKGkgPD0gdGhpcy5zaXplcy5sZW5ndGggJiYgc2l6ZSAhPT0gdGhpcy5zaXplc1tpXSkge1xuICAgICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbXBvbmVudC5nZXRDb2RlTWlycm9yKCk7XG4gICAgICAgICAgaWYgKGVkaXRvcikge1xuICAgICAgICAgICAgZWRpdG9yLnNldFNpemUobnVsbCwgbnVsbCk7IC8vIFRPRE86IGFkZGVkIHRoZSBhcmdzIGhlcmUuIGRvdWJsZSBjaGVjayBubyBlZmZlY3RzLiBtaWdodCBiZSB2ZXJzaW9uIGlzc3VlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2l6ZXNbaV0gPSBzaXplO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFqQkE7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./utility/CodeMirrorSizer.ts\n");
3474
3475/***/ }),
3476
3477/***/ "./utility/QueryStore.ts":
3478/*!*******************************!*\
3479 !*** ./utility/QueryStore.ts ***!
3480 \*******************************/
3481/*! no static exports found */
3482/***/ (function(module, exports, __webpack_require__) {
3483
3484eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n class QueryStore {\n constructor(key, storage, maxSize = null) {\n this.key = key;\n this.storage = storage;\n this.maxSize = maxSize;\n\n _defineProperty(this, \"items\", void 0);\n\n this.items = this.fetchAll();\n }\n\n get length() {\n return this.items.length;\n }\n\n contains(item) {\n return this.items.some(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName);\n }\n\n edit(item) {\n const itemIndex = this.items.findIndex(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName);\n\n if (itemIndex !== -1) {\n this.items.splice(itemIndex, 1, item);\n this.save();\n }\n }\n\n delete(item) {\n const itemIndex = this.items.findIndex(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName);\n\n if (itemIndex !== -1) {\n this.items.splice(itemIndex, 1);\n this.save();\n }\n }\n\n fetchRecent() {\n return this.items[this.items.length - 1];\n }\n\n fetchAll() {\n const raw = this.storage.get(this.key);\n\n if (raw) {\n return JSON.parse(raw)[this.key];\n }\n\n return [];\n }\n\n push(item) {\n const items = [...this.items, item];\n\n if (this.maxSize && items.length > this.maxSize) {\n items.shift();\n }\n\n for (let attempts = 0; attempts < 5; attempts++) {\n const response = this.storage.set(this.key, JSON.stringify({\n [this.key]: items\n }));\n\n if (!response || !response.error) {\n this.items = items;\n } else if (response.isQuotaError && this.maxSize) {\n // Only try to delete last items on LRU stores\n items.shift();\n } else {\n return; // We don't know what happened in this case, so just bailing out\n }\n }\n }\n\n save() {\n this.storage.set(this.key, JSON.stringify({\n [this.key]: this.items\n }));\n }\n\n }\n\n _exports.default = QueryStore;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlsaXR5L1F1ZXJ5U3RvcmUudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL3V0aWxpdHkvUXVlcnlTdG9yZS50cz83ZjFiIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgU3RvcmFnZUFQSSBmcm9tICcuL1N0b3JhZ2VBUEknO1xuXG5leHBvcnQgdHlwZSBRdWVyeVN0b3JlSXRlbSA9IHtcbiAgcXVlcnk/OiBzdHJpbmc7XG4gIHZhcmlhYmxlcz86IHN0cmluZztcbiAgaGVhZGVycz86IHN0cmluZztcbiAgb3BlcmF0aW9uTmFtZT86IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGZhdm9yaXRlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFF1ZXJ5U3RvcmUge1xuICBpdGVtczogQXJyYXk8UXVlcnlTdG9yZUl0ZW0+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUga2V5OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlQVBJLFxuICAgIHByaXZhdGUgbWF4U2l6ZTogbnVtYmVyIHwgbnVsbCA9IG51bGwsXG4gICkge1xuICAgIHRoaXMuaXRlbXMgPSB0aGlzLmZldGNoQWxsKCk7XG4gIH1cblxuICBnZXQgbGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmxlbmd0aDtcbiAgfVxuXG4gIGNvbnRhaW5zKGl0ZW06IFF1ZXJ5U3RvcmVJdGVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuc29tZShcbiAgICAgIHggPT5cbiAgICAgICAgeC5xdWVyeSA9PT0gaXRlbS5xdWVyeSAmJlxuICAgICAgICB4LnZhcmlhYmxlcyA9PT0gaXRlbS52YXJpYWJsZXMgJiZcbiAgICAgICAgeC5oZWFkZXJzID09PSBpdGVtLmhlYWRlcnMgJiZcbiAgICAgICAgeC5vcGVyYXRpb25OYW1lID09PSBpdGVtLm9wZXJhdGlvbk5hbWUsXG4gICAgKTtcbiAgfVxuXG4gIGVkaXQoaXRlbTogUXVlcnlTdG9yZUl0ZW0pIHtcbiAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLml0ZW1zLmZpbmRJbmRleChcbiAgICAgIHggPT5cbiAgICAgICAgeC5xdWVyeSA9PT0gaXRlbS5xdWVyeSAmJlxuICAgICAgICB4LnZhcmlhYmxlcyA9PT0gaXRlbS52YXJpYWJsZXMgJiZcbiAgICAgICAgeC5oZWFkZXJzID09PSBpdGVtLmhlYWRlcnMgJiZcbiAgICAgICAgeC5vcGVyYXRpb25OYW1lID09PSBpdGVtLm9wZXJhdGlvbk5hbWUsXG4gICAgKTtcbiAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaXRlbUluZGV4LCAxLCBpdGVtKTtcbiAgICAgIHRoaXMuc2F2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZShpdGVtOiBRdWVyeVN0b3JlSXRlbSkge1xuICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuaXRlbXMuZmluZEluZGV4KFxuICAgICAgeCA9PlxuICAgICAgICB4LnF1ZXJ5ID09PSBpdGVtLnF1ZXJ5ICYmXG4gICAgICAgIHgudmFyaWFibGVzID09PSBpdGVtLnZhcmlhYmxlcyAmJlxuICAgICAgICB4LmhlYWRlcnMgPT09IGl0ZW0uaGVhZGVycyAmJlxuICAgICAgICB4Lm9wZXJhdGlvbk5hbWUgPT09IGl0ZW0ub3BlcmF0aW9uTmFtZSxcbiAgICApO1xuICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgICAgdGhpcy5zYXZlKCk7XG4gICAgfVxuICB9XG5cbiAgZmV0Y2hSZWNlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXNbdGhpcy5pdGVtcy5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIGZldGNoQWxsKCkge1xuICAgIGNvbnN0IHJhdyA9IHRoaXMuc3RvcmFnZS5nZXQodGhpcy5rZXkpO1xuICAgIGlmIChyYXcpIHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHJhdylbdGhpcy5rZXldIGFzIEFycmF5PFF1ZXJ5U3RvcmVJdGVtPjtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcHVzaChpdGVtOiBRdWVyeVN0b3JlSXRlbSkge1xuICAgIGNvbnN0IGl0ZW1zID0gWy4uLnRoaXMuaXRlbXMsIGl0ZW1dO1xuXG4gICAgaWYgKHRoaXMubWF4U2l6ZSAmJiBpdGVtcy5sZW5ndGggPiB0aGlzLm1heFNpemUpIHtcbiAgICAgIGl0ZW1zLnNoaWZ0KCk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgYXR0ZW1wdHMgPSAwOyBhdHRlbXB0cyA8IDU7IGF0dGVtcHRzKyspIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5zdG9yYWdlLnNldChcbiAgICAgICAgdGhpcy5rZXksXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHsgW3RoaXMua2V5XTogaXRlbXMgfSksXG4gICAgICApO1xuICAgICAgaWYgKCFyZXNwb25zZSB8fCAhcmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgdGhpcy5pdGVtcyA9IGl0ZW1zO1xuICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5pc1F1b3RhRXJyb3IgJiYgdGhpcy5tYXhTaXplKSB7XG4gICAgICAgIC8vIE9ubHkgdHJ5IHRvIGRlbGV0ZSBsYXN0IGl0ZW1zIG9uIExSVSBzdG9yZXNcbiAgICAgICAgaXRlbXMuc2hpZnQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybjsgLy8gV2UgZG9uJ3Qga25vdyB3aGF0IGhhcHBlbmVkIGluIHRoaXMgY2FzZSwgc28ganVzdCBiYWlsaW5nIG91dFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5zdG9yYWdlLnNldCh0aGlzLmtleSwgSlNPTi5zdHJpbmdpZnkoeyBbdGhpcy5rZXldOiB0aGlzLml0ZW1zIH0pKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVlBO0FBR0E7QUFJQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUEzRkE7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./utility/QueryStore.ts\n");
3485
3486/***/ }),
3487
3488/***/ "./utility/StorageAPI.ts":
3489/*!*******************************!*\
3490 !*** ./utility/StorageAPI.ts ***!
3491 \*******************************/
3492/*! no static exports found */
3493/***/ (function(module, exports, __webpack_require__) {
3494
3495eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function isQuotaError(storage, e) {\n return e instanceof DOMException && ( // everything except Firefox\n e.code === 22 || // Firefox\n e.code === 1014 || // test name field too, because code might not be present\n // everything except Firefox\n e.name === 'QuotaExceededError' || // Firefox\n e.name === 'NS_ERROR_DOM_QUOTA_REACHED') && // acknowledge QuotaExceededError only if there's something already stored\n storage.length !== 0;\n }\n\n class StorageAPI {\n constructor(storage) {\n _defineProperty(this, \"storage\", void 0);\n\n this.storage = storage || (typeof window !== 'undefined' ? window.localStorage : null);\n }\n\n get(name) {\n if (this.storage) {\n const value = this.storage.getItem('graphiql:' + name); // Clean up any inadvertently saved null/undefined values.\n\n if (value === 'null' || value === 'undefined') {\n this.storage.removeItem('graphiql:' + name);\n return null;\n }\n\n if (value) {\n return value;\n }\n }\n\n return null;\n }\n\n set(name, value) {\n let quotaError = false;\n let error = null;\n\n if (this.storage) {\n const key = `graphiql:${name}`;\n\n if (value) {\n try {\n this.storage.setItem(key, value);\n } catch (e) {\n error = e;\n quotaError = isQuotaError(this.storage, e);\n }\n } else {\n // Clean up by removing the item if there's no value to set\n this.storage.removeItem(key);\n }\n }\n\n return {\n isQuotaError: quotaError,\n error\n };\n }\n\n }\n\n _exports.default = StorageAPI;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlsaXR5L1N0b3JhZ2VBUEkudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL3V0aWxpdHkvU3RvcmFnZUFQSS50cz80YjJmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZSB7XG4gIGdldEl0ZW06IChrZXk6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbDtcbiAgcmVtb3ZlSXRlbTogKGtleTogc3RyaW5nKSA9PiB2b2lkO1xuICBzZXRJdGVtOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGxlbmd0aDogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiBpc1F1b3RhRXJyb3Ioc3RvcmFnZTogU3RvcmFnZSwgZTogRXJyb3IpIHtcbiAgcmV0dXJuIChcbiAgICBlIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uICYmXG4gICAgLy8gZXZlcnl0aGluZyBleGNlcHQgRmlyZWZveFxuICAgIChlLmNvZGUgPT09IDIyIHx8XG4gICAgICAvLyBGaXJlZm94XG4gICAgICBlLmNvZGUgPT09IDEwMTQgfHxcbiAgICAgIC8vIHRlc3QgbmFtZSBmaWVsZCB0b28sIGJlY2F1c2UgY29kZSBtaWdodCBub3QgYmUgcHJlc2VudFxuICAgICAgLy8gZXZlcnl0aGluZyBleGNlcHQgRmlyZWZveFxuICAgICAgZS5uYW1lID09PSAnUXVvdGFFeGNlZWRlZEVycm9yJyB8fFxuICAgICAgLy8gRmlyZWZveFxuICAgICAgZS5uYW1lID09PSAnTlNfRVJST1JfRE9NX1FVT1RBX1JFQUNIRUQnKSAmJlxuICAgIC8vIGFja25vd2xlZGdlIFF1b3RhRXhjZWVkZWRFcnJvciBvbmx5IGlmIHRoZXJlJ3Mgc29tZXRoaW5nIGFscmVhZHkgc3RvcmVkXG4gICAgc3RvcmFnZS5sZW5ndGggIT09IDBcbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RvcmFnZUFQSSB7XG4gIHN0b3JhZ2U6IFN0b3JhZ2UgfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHN0b3JhZ2U/OiBTdG9yYWdlKSB7XG4gICAgdGhpcy5zdG9yYWdlID1cbiAgICAgIHN0b3JhZ2UgfHwgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmxvY2FsU3RvcmFnZSA6IG51bGwpO1xuICB9XG5cbiAgZ2V0KG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLnN0b3JhZ2UpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2dyYXBoaXFsOicgKyBuYW1lKTtcbiAgICAgIC8vIENsZWFuIHVwIGFueSBpbmFkdmVydGVudGx5IHNhdmVkIG51bGwvdW5kZWZpbmVkIHZhbHVlcy5cbiAgICAgIGlmICh2YWx1ZSA9PT0gJ251bGwnIHx8IHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbSgnZ3JhcGhpcWw6JyArIG5hbWUpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzZXQobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgbGV0IHF1b3RhRXJyb3IgPSBmYWxzZTtcbiAgICBsZXQgZXJyb3IgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuc3RvcmFnZSkge1xuICAgICAgY29uc3Qga2V5ID0gYGdyYXBoaXFsOiR7bmFtZX1gO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBlcnJvciA9IGU7XG4gICAgICAgICAgcXVvdGFFcnJvciA9IGlzUXVvdGFFcnJvcih0aGlzLnN0b3JhZ2UsIGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBDbGVhbiB1cCBieSByZW1vdmluZyB0aGUgaXRlbSBpZiB0aGVyZSdzIG5vIHZhbHVlIHRvIHNldFxuICAgICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpc1F1b3RhRXJyb3I6IHF1b3RhRXJyb3IsXG4gICAgICBlcnJvcixcbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBU0E7QUFDQTtBQUdBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBaERBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./utility/StorageAPI.ts\n");
3496
3497/***/ }),
3498
3499/***/ "./utility/commonKeys.ts":
3500/*!*******************************!*\
3501 !*** ./utility/commonKeys.ts ***!
3502 \*******************************/
3503/*! no static exports found */
3504/***/ (function(module, exports, __webpack_require__) {
3505
3506eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = void 0;\n let isMacOs = false;\n\n if (typeof window === 'object') {\n isMacOs = window.navigator.platform === 'MacIntel';\n }\n\n const commonKeys = {\n // Persistent search box in Query Editor\n [isMacOs ? 'Cmd-F' : 'Ctrl-F']: 'findPersistent',\n 'Cmd-G': 'findPersistent',\n 'Ctrl-G': 'findPersistent',\n // Editor improvements\n 'Ctrl-Left': 'goSubwordLeft',\n 'Ctrl-Right': 'goSubwordRight',\n 'Alt-Left': 'goGroupLeft',\n 'Alt-Right': 'goGroupRight'\n };\n var _default = commonKeys;\n _exports.default = _default;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlsaXR5L2NvbW1vbktleXMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL3V0aWxpdHkvY29tbW9uS2V5cy50cz80ODhhIl0sInNvdXJjZXNDb250ZW50IjpbImxldCBpc01hY09zID0gZmFsc2U7XG5cbmlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0Jykge1xuICBpc01hY09zID0gd2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybSA9PT0gJ01hY0ludGVsJztcbn1cblxuY29uc3QgY29tbW9uS2V5cyA9IHtcbiAgLy8gUGVyc2lzdGVudCBzZWFyY2ggYm94IGluIFF1ZXJ5IEVkaXRvclxuICBbaXNNYWNPcyA/ICdDbWQtRicgOiAnQ3RybC1GJ106ICdmaW5kUGVyc2lzdGVudCcsXG4gICdDbWQtRyc6ICdmaW5kUGVyc2lzdGVudCcsXG4gICdDdHJsLUcnOiAnZmluZFBlcnNpc3RlbnQnLFxuXG4gIC8vIEVkaXRvciBpbXByb3ZlbWVudHNcbiAgJ0N0cmwtTGVmdCc6ICdnb1N1YndvcmRMZWZ0JyxcbiAgJ0N0cmwtUmlnaHQnOiAnZ29TdWJ3b3JkUmlnaHQnLFxuICAnQWx0LUxlZnQnOiAnZ29Hcm91cExlZnQnLFxuICAnQWx0LVJpZ2h0JzogJ2dvR3JvdXBSaWdodCcsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tb25LZXlzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVkE7QUFhQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./utility/commonKeys.ts\n");
3507
3508/***/ }),
3509
3510/***/ "./utility/debounce.ts":
3511/*!*****************************!*\
3512 !*** ./utility/debounce.ts ***!
3513 \*****************************/
3514/*! no static exports found */
3515/***/ (function(module, exports, __webpack_require__) {
3516
3517eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = debounce;\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n /**\n * Provided a duration and a function, returns a new function which is called\n * `duration` milliseconds after the last call.\n */\n function debounce(duration, fn) {\n let timeout;\n return function (...args) {\n if (timeout) {\n window.clearTimeout(timeout);\n }\n\n timeout = window.setTimeout(() => {\n timeout = null;\n fn.apply(this, args);\n }, duration);\n };\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlsaXR5L2RlYm91bmNlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi91dGlsaXR5L2RlYm91bmNlLnRzP2IyY2MiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxIEdyYXBoUUwgQ29udHJpYnV0b3JzLlxuICpcbiAqICBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqICBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuLyoqXG4gKiBQcm92aWRlZCBhIGR1cmF0aW9uIGFuZCBhIGZ1bmN0aW9uLCByZXR1cm5zIGEgbmV3IGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZFxuICogYGR1cmF0aW9uYCBtaWxsaXNlY29uZHMgYWZ0ZXIgdGhlIGxhc3QgY2FsbC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2U8RiBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PihcbiAgZHVyYXRpb246IG51bWJlcixcbiAgZm46IEYsXG4pIHtcbiAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGw7XG4gIHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5hcmdzOiBQYXJhbWV0ZXJzPEY+KSB7XG4gICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgfVxuICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0sIGR1cmF0aW9uKTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./utility/debounce.ts\n");
3518
3519/***/ }),
3520
3521/***/ "./utility/elementPosition.ts":
3522/*!************************************!*\
3523 !*** ./utility/elementPosition.ts ***!
3524 \************************************/
3525/*! no static exports found */
3526/***/ (function(module, exports, __webpack_require__) {
3527
3528eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.getLeft = getLeft;\n _exports.getTop = getTop;\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n /**\n * Utility functions to get a pixel distance from left/top of the window.\n */\n function getLeft(initialElem) {\n let pt = 0;\n let elem = initialElem;\n\n while (elem.offsetParent) {\n pt += elem.offsetLeft;\n elem = elem.offsetParent;\n }\n\n return pt;\n }\n\n function getTop(initialElem) {\n let pt = 0;\n let elem = initialElem;\n\n while (elem.offsetParent) {\n pt += elem.offsetTop;\n elem = elem.offsetParent;\n }\n\n return pt;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlsaXR5L2VsZW1lbnRQb3NpdGlvbi50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vdXRpbGl0eS9lbGVtZW50UG9zaXRpb24udHM/NjU0NCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb25zIHRvIGdldCBhIHBpeGVsIGRpc3RhbmNlIGZyb20gbGVmdC90b3Agb2YgdGhlIHdpbmRvdy5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGVmdChpbml0aWFsRWxlbTogSFRNTEVsZW1lbnQpIHtcbiAgbGV0IHB0ID0gMDtcbiAgbGV0IGVsZW0gPSBpbml0aWFsRWxlbTtcbiAgd2hpbGUgKGVsZW0ub2Zmc2V0UGFyZW50KSB7XG4gICAgcHQgKz0gZWxlbS5vZmZzZXRMZWZ0O1xuICAgIGVsZW0gPSBlbGVtLm9mZnNldFBhcmVudCBhcyBIVE1MRWxlbWVudDtcbiAgfVxuICByZXR1cm4gcHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb3AoaW5pdGlhbEVsZW06IEhUTUxFbGVtZW50KSB7XG4gIGxldCBwdCA9IDA7XG4gIGxldCBlbGVtID0gaW5pdGlhbEVsZW07XG4gIHdoaWxlIChlbGVtLm9mZnNldFBhcmVudCkge1xuICAgIHB0ICs9IGVsZW0ub2Zmc2V0VG9wO1xuICAgIGVsZW0gPSBlbGVtLm9mZnNldFBhcmVudCBhcyBIVE1MRWxlbWVudDtcbiAgfVxuICByZXR1cm4gcHQ7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./utility/elementPosition.ts\n");
3529
3530/***/ }),
3531
3532/***/ "./utility/fillLeafs.ts":
3533/*!******************************!*\
3534 !*** ./utility/fillLeafs.ts ***!
3535 \******************************/
3536/*! no static exports found */
3537/***/ (function(module, exports, __webpack_require__) {
3538
3539eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.fillLeafs = fillLeafs;\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n /**\n * Given a document string which may not be valid due to terminal fields not\n * representing leaf values (Spec Section: \"Leaf Field Selections\"), and a\n * function which provides reasonable default field names for a given type,\n * this function will attempt to produce a schema which is valid after filling\n * in selection sets for the invalid fields.\n *\n * Note that there is no guarantee that the result will be a valid query, this\n * utility represents a \"best effort\" which may be useful within IDE tools.\n */\n function fillLeafs(schema, docString, getDefaultFieldNames) {\n const insertions = [];\n\n if (!schema || !docString) {\n return {\n insertions,\n result: docString\n };\n }\n\n let ast;\n\n try {\n ast = (0, _graphql.parse)(docString);\n } catch (error) {\n return {\n insertions,\n result: docString\n };\n }\n\n const fieldNameFn = getDefaultFieldNames || defaultGetDefaultFieldNames;\n const typeInfo = new _graphql.TypeInfo(schema);\n (0, _graphql.visit)(ast, {\n leave(node) {\n typeInfo.leave(node);\n },\n\n enter(node) {\n typeInfo.enter(node);\n\n if (node.kind === 'Field' && !node.selectionSet) {\n const fieldType = typeInfo.getType();\n const selectionSet = buildSelectionSet(isFieldType(fieldType), fieldNameFn);\n\n if (selectionSet && node.loc) {\n const indent = getIndentation(docString, node.loc.start);\n insertions.push({\n index: node.loc.end,\n string: ' ' + (0, _graphql.print)(selectionSet).replace(/\\n/g, '\\n' + indent)\n });\n }\n }\n }\n\n }); // Apply the insertions, but also return the insertions metadata.\n\n return {\n insertions,\n result: withInsertions(docString, insertions)\n };\n } // The default function to use for producing the default fields from a type.\n // This function first looks for some common patterns, and falls back to\n // including all leaf-type fields.\n\n\n function defaultGetDefaultFieldNames(type) {\n // If this type cannot access fields, then return an empty set.\n // if (!type.getFields) {\n if (!('getFields' in type)) {\n return [];\n }\n\n const fields = type.getFields(); // Is there an `id` field?\n\n if (fields.id) {\n return ['id'];\n } // Is there an `edges` field?\n\n\n if (fields.edges) {\n return ['edges'];\n } // Is there an `node` field?\n\n\n if (fields.node) {\n return ['node'];\n } // Include all leaf-type fields.\n\n\n const leafFieldNames = [];\n Object.keys(fields).forEach(fieldName => {\n if ((0, _graphql.isLeafType)(fields[fieldName].type)) {\n leafFieldNames.push(fieldName);\n }\n });\n return leafFieldNames;\n } // Given a GraphQL type, and a function which produces field names, recursively\n // generate a SelectionSet which includes default fields.\n\n\n function buildSelectionSet(type, getDefaultFieldNames) {\n // Unwrap any non-null or list types.\n const namedType = (0, _graphql.getNamedType)(type); // Unknown types and leaf types do not have selection sets.\n\n if (!type || (0, _graphql.isLeafType)(type)) {\n return;\n } // Get an array of field names to use.\n\n\n const fieldNames = getDefaultFieldNames(namedType); // If there are no field names to use, return no selection set.\n\n if (!Array.isArray(fieldNames) || fieldNames.length === 0 || !('getFields' in namedType)) {\n return;\n } // Build a selection set of each field, calling buildSelectionSet recursively.\n\n\n return {\n kind: 'SelectionSet',\n selections: fieldNames.map(fieldName => {\n const fieldDef = namedType.getFields()[fieldName];\n const fieldType = fieldDef ? fieldDef.type : null;\n return {\n kind: 'Field',\n name: {\n kind: 'Name',\n value: fieldName\n },\n // we can use as here, because we already know that fieldType\n // comes from an origin parameter\n selectionSet: buildSelectionSet(fieldType, getDefaultFieldNames)\n };\n })\n };\n } // Given an initial string, and a list of \"insertion\" { index, string } objects,\n // return a new string with these insertions applied.\n\n\n function withInsertions(initial, insertions) {\n if (insertions.length === 0) {\n return initial;\n }\n\n let edited = '';\n let prevIndex = 0;\n insertions.forEach(({\n index,\n string\n }) => {\n edited += initial.slice(prevIndex, index) + string;\n prevIndex = index;\n });\n edited += initial.slice(prevIndex);\n return edited;\n } // Given a string and an index, look backwards to find the string of whitespace\n // following the next previous line break.\n\n\n function getIndentation(str, index) {\n let indentStart = index;\n let indentEnd = index;\n\n while (indentStart) {\n const c = str.charCodeAt(indentStart - 1); // line break\n\n if (c === 10 || c === 13 || c === 0x2028 || c === 0x2029) {\n break;\n }\n\n indentStart--; // not white space\n\n if (c !== 9 && c !== 11 && c !== 12 && c !== 32 && c !== 160) {\n indentEnd = indentStart;\n }\n }\n\n return str.substring(indentStart, indentEnd);\n }\n\n function isFieldType(fieldType) {\n if (fieldType) {\n return fieldType;\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlsaXR5L2ZpbGxMZWFmcy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vdXRpbGl0eS9maWxsTGVhZnMudHM/MTNmYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQge1xuICBnZXROYW1lZFR5cGUsXG4gIGlzTGVhZlR5cGUsXG4gIHBhcnNlLFxuICBwcmludCxcbiAgVHlwZUluZm8sXG4gIHZpc2l0LFxuICBHcmFwaFFMU2NoZW1hLFxuICBEb2N1bWVudE5vZGUsXG4gIEdyYXBoUUxPdXRwdXRUeXBlLFxuICBHcmFwaFFMVHlwZSxcbiAgU2VsZWN0aW9uU2V0Tm9kZSxcbn0gZnJvbSAnZ3JhcGhxbCc7XG5cbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9HcmFwaGlRTCc7XG5cbnR5cGUgSW5zZXJ0aW9uID0ge1xuICBpbmRleDogbnVtYmVyO1xuICBzdHJpbmc6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdldERlZmF1bHRGaWVsZE5hbWVzRm4gPSAodHlwZTogR3JhcGhRTFR5cGUpID0+IHN0cmluZ1tdO1xuXG4vKipcbiAqIEdpdmVuIGEgZG9jdW1lbnQgc3RyaW5nIHdoaWNoIG1heSBub3QgYmUgdmFsaWQgZHVlIHRvIHRlcm1pbmFsIGZpZWxkcyBub3RcbiAqIHJlcHJlc2VudGluZyBsZWFmIHZhbHVlcyAoU3BlYyBTZWN0aW9uOiBcIkxlYWYgRmllbGQgU2VsZWN0aW9uc1wiKSwgYW5kIGFcbiAqIGZ1bmN0aW9uIHdoaWNoIHByb3ZpZGVzIHJlYXNvbmFibGUgZGVmYXVsdCBmaWVsZCBuYW1lcyBmb3IgYSBnaXZlbiB0eXBlLFxuICogdGhpcyBmdW5jdGlvbiB3aWxsIGF0dGVtcHQgdG8gcHJvZHVjZSBhIHNjaGVtYSB3aGljaCBpcyB2YWxpZCBhZnRlciBmaWxsaW5nXG4gKiBpbiBzZWxlY3Rpb24gc2V0cyBmb3IgdGhlIGludmFsaWQgZmllbGRzLlxuICpcbiAqIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgcmVzdWx0IHdpbGwgYmUgYSB2YWxpZCBxdWVyeSwgdGhpc1xuICogdXRpbGl0eSByZXByZXNlbnRzIGEgXCJiZXN0IGVmZm9ydFwiIHdoaWNoIG1heSBiZSB1c2VmdWwgd2l0aGluIElERSB0b29scy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGxMZWFmcyhcbiAgc2NoZW1hPzogR3JhcGhRTFNjaGVtYSxcbiAgZG9jU3RyaW5nPzogc3RyaW5nLFxuICBnZXREZWZhdWx0RmllbGROYW1lcz86IEdldERlZmF1bHRGaWVsZE5hbWVzRm4sXG4pIHtcbiAgY29uc3QgaW5zZXJ0aW9uczogSW5zZXJ0aW9uW10gPSBbXTtcblxuICBpZiAoIXNjaGVtYSB8fCAhZG9jU3RyaW5nKSB7XG4gICAgcmV0dXJuIHsgaW5zZXJ0aW9ucywgcmVzdWx0OiBkb2NTdHJpbmcgfTtcbiAgfVxuXG4gIGxldCBhc3Q6IERvY3VtZW50Tm9kZTtcbiAgdHJ5IHtcbiAgICBhc3QgPSBwYXJzZShkb2NTdHJpbmcpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB7IGluc2VydGlvbnMsIHJlc3VsdDogZG9jU3RyaW5nIH07XG4gIH1cblxuICBjb25zdCBmaWVsZE5hbWVGbiA9IGdldERlZmF1bHRGaWVsZE5hbWVzIHx8IGRlZmF1bHRHZXREZWZhdWx0RmllbGROYW1lcztcbiAgY29uc3QgdHlwZUluZm8gPSBuZXcgVHlwZUluZm8oc2NoZW1hKTtcbiAgdmlzaXQoYXN0LCB7XG4gICAgbGVhdmUobm9kZSkge1xuICAgICAgdHlwZUluZm8ubGVhdmUobm9kZSk7XG4gICAgfSxcbiAgICBlbnRlcihub2RlKSB7XG4gICAgICB0eXBlSW5mby5lbnRlcihub2RlKTtcbiAgICAgIGlmIChub2RlLmtpbmQgPT09ICdGaWVsZCcgJiYgIW5vZGUuc2VsZWN0aW9uU2V0KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkVHlwZSA9IHR5cGVJbmZvLmdldFR5cGUoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uU2V0ID0gYnVpbGRTZWxlY3Rpb25TZXQoXG4gICAgICAgICAgaXNGaWVsZFR5cGUoZmllbGRUeXBlKSBhcyBHcmFwaFFMT3V0cHV0VHlwZSxcbiAgICAgICAgICBmaWVsZE5hbWVGbixcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHNlbGVjdGlvblNldCAmJiBub2RlLmxvYykge1xuICAgICAgICAgIGNvbnN0IGluZGVudCA9IGdldEluZGVudGF0aW9uKGRvY1N0cmluZywgbm9kZS5sb2Muc3RhcnQpO1xuICAgICAgICAgIGluc2VydGlvbnMucHVzaCh7XG4gICAgICAgICAgICBpbmRleDogbm9kZS5sb2MuZW5kLFxuICAgICAgICAgICAgc3RyaW5nOiAnICcgKyBwcmludChzZWxlY3Rpb25TZXQpLnJlcGxhY2UoL1xcbi9nLCAnXFxuJyArIGluZGVudCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9KTtcblxuICAvLyBBcHBseSB0aGUgaW5zZXJ0aW9ucywgYnV0IGFsc28gcmV0dXJuIHRoZSBpbnNlcnRpb25zIG1ldGFkYXRhLlxuICByZXR1cm4ge1xuICAgIGluc2VydGlvbnMsXG4gICAgcmVzdWx0OiB3aXRoSW5zZXJ0aW9ucyhkb2NTdHJpbmcsIGluc2VydGlvbnMpLFxuICB9O1xufVxuXG4vLyBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byB1c2UgZm9yIHByb2R1Y2luZyB0aGUgZGVmYXVsdCBmaWVsZHMgZnJvbSBhIHR5cGUuXG4vLyBUaGlzIGZ1bmN0aW9uIGZpcnN0IGxvb2tzIGZvciBzb21lIGNvbW1vbiBwYXR0ZXJucywgYW5kIGZhbGxzIGJhY2sgdG9cbi8vIGluY2x1ZGluZyBhbGwgbGVhZi10eXBlIGZpZWxkcy5cbmZ1bmN0aW9uIGRlZmF1bHRHZXREZWZhdWx0RmllbGROYW1lcyh0eXBlOiBHcmFwaFFMVHlwZSkge1xuICAvLyBJZiB0aGlzIHR5cGUgY2Fubm90IGFjY2VzcyBmaWVsZHMsIHRoZW4gcmV0dXJuIGFuIGVtcHR5IHNldC5cbiAgLy8gaWYgKCF0eXBlLmdldEZpZWxkcykge1xuICBpZiAoISgnZ2V0RmllbGRzJyBpbiB0eXBlKSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGZpZWxkcyA9IHR5cGUuZ2V0RmllbGRzKCk7XG5cbiAgLy8gSXMgdGhlcmUgYW4gYGlkYCBmaWVsZD9cbiAgaWYgKGZpZWxkcy5pZCkge1xuICAgIHJldHVybiBbJ2lkJ107XG4gIH1cblxuICAvLyBJcyB0aGVyZSBhbiBgZWRnZXNgIGZpZWxkP1xuICBpZiAoZmllbGRzLmVkZ2VzKSB7XG4gICAgcmV0dXJuIFsnZWRnZXMnXTtcbiAgfVxuXG4gIC8vIElzIHRoZXJlIGFuIGBub2RlYCBmaWVsZD9cbiAgaWYgKGZpZWxkcy5ub2RlKSB7XG4gICAgcmV0dXJuIFsnbm9kZSddO1xuICB9XG5cbiAgLy8gSW5jbHVkZSBhbGwgbGVhZi10eXBlIGZpZWxkcy5cbiAgY29uc3QgbGVhZkZpZWxkTmFtZXM6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgT2JqZWN0LmtleXMoZmllbGRzKS5mb3JFYWNoKGZpZWxkTmFtZSA9PiB7XG4gICAgaWYgKGlzTGVhZlR5cGUoZmllbGRzW2ZpZWxkTmFtZV0udHlwZSkpIHtcbiAgICAgIGxlYWZGaWVsZE5hbWVzLnB1c2goZmllbGROYW1lKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbGVhZkZpZWxkTmFtZXM7XG59XG5cbi8vIEdpdmVuIGEgR3JhcGhRTCB0eXBlLCBhbmQgYSBmdW5jdGlvbiB3aGljaCBwcm9kdWNlcyBmaWVsZCBuYW1lcywgcmVjdXJzaXZlbHlcbi8vIGdlbmVyYXRlIGEgU2VsZWN0aW9uU2V0IHdoaWNoIGluY2x1ZGVzIGRlZmF1bHQgZmllbGRzLlxuZnVuY3Rpb24gYnVpbGRTZWxlY3Rpb25TZXQoXG4gIHR5cGU6IEdyYXBoUUxPdXRwdXRUeXBlLFxuICBnZXREZWZhdWx0RmllbGROYW1lczogR2V0RGVmYXVsdEZpZWxkTmFtZXNGbixcbik6IFNlbGVjdGlvblNldE5vZGUgfCB1bmRlZmluZWQge1xuICAvLyBVbndyYXAgYW55IG5vbi1udWxsIG9yIGxpc3QgdHlwZXMuXG4gIGNvbnN0IG5hbWVkVHlwZSA9IGdldE5hbWVkVHlwZSh0eXBlKTtcblxuICAvLyBVbmtub3duIHR5cGVzIGFuZCBsZWFmIHR5cGVzIGRvIG5vdCBoYXZlIHNlbGVjdGlvbiBzZXRzLlxuICBpZiAoIXR5cGUgfHwgaXNMZWFmVHlwZSh0eXBlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEdldCBhbiBhcnJheSBvZiBmaWVsZCBuYW1lcyB0byB1c2UuXG4gIGNvbnN0IGZpZWxkTmFtZXMgPSBnZXREZWZhdWx0RmllbGROYW1lcyhuYW1lZFR5cGUpO1xuXG4gIC8vIElmIHRoZXJlIGFyZSBubyBmaWVsZCBuYW1lcyB0byB1c2UsIHJldHVybiBubyBzZWxlY3Rpb24gc2V0LlxuICBpZiAoXG4gICAgIUFycmF5LmlzQXJyYXkoZmllbGROYW1lcykgfHxcbiAgICBmaWVsZE5hbWVzLmxlbmd0aCA9PT0gMCB8fFxuICAgICEoJ2dldEZpZWxkcycgaW4gbmFtZWRUeXBlKVxuICApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBCdWlsZCBhIHNlbGVjdGlvbiBzZXQgb2YgZWFjaCBmaWVsZCwgY2FsbGluZyBidWlsZFNlbGVjdGlvblNldCByZWN1cnNpdmVseS5cbiAgcmV0dXJuIHtcbiAgICBraW5kOiAnU2VsZWN0aW9uU2V0JyxcbiAgICBzZWxlY3Rpb25zOiBmaWVsZE5hbWVzLm1hcChmaWVsZE5hbWUgPT4ge1xuICAgICAgY29uc3QgZmllbGREZWYgPSBuYW1lZFR5cGUuZ2V0RmllbGRzKClbZmllbGROYW1lXTtcbiAgICAgIGNvbnN0IGZpZWxkVHlwZSA9IGZpZWxkRGVmID8gZmllbGREZWYudHlwZSA6IG51bGw7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBraW5kOiAnRmllbGQnLFxuICAgICAgICBuYW1lOiB7XG4gICAgICAgICAga2luZDogJ05hbWUnLFxuICAgICAgICAgIHZhbHVlOiBmaWVsZE5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIHdlIGNhbiB1c2UgYXMgaGVyZSwgYmVjYXVzZSB3ZSBhbHJlYWR5IGtub3cgdGhhdCBmaWVsZFR5cGVcbiAgICAgICAgLy8gY29tZXMgZnJvbSBhbiBvcmlnaW4gcGFyYW1ldGVyXG4gICAgICAgIHNlbGVjdGlvblNldDogYnVpbGRTZWxlY3Rpb25TZXQoXG4gICAgICAgICAgZmllbGRUeXBlIGFzIEdyYXBoUUxPdXRwdXRUeXBlLFxuICAgICAgICAgIGdldERlZmF1bHRGaWVsZE5hbWVzLFxuICAgICAgICApLFxuICAgICAgfTtcbiAgICB9KSxcbiAgfTtcbn1cblxuLy8gR2l2ZW4gYW4gaW5pdGlhbCBzdHJpbmcsIGFuZCBhIGxpc3Qgb2YgXCJpbnNlcnRpb25cIiB7IGluZGV4LCBzdHJpbmcgfSBvYmplY3RzLFxuLy8gcmV0dXJuIGEgbmV3IHN0cmluZyB3aXRoIHRoZXNlIGluc2VydGlvbnMgYXBwbGllZC5cbmZ1bmN0aW9uIHdpdGhJbnNlcnRpb25zKGluaXRpYWw6IHN0cmluZywgaW5zZXJ0aW9uczogSW5zZXJ0aW9uW10pIHtcbiAgaWYgKGluc2VydGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGluaXRpYWw7XG4gIH1cbiAgbGV0IGVkaXRlZCA9ICcnO1xuICBsZXQgcHJldkluZGV4ID0gMDtcbiAgaW5zZXJ0aW9ucy5mb3JFYWNoKCh7IGluZGV4LCBzdHJpbmcgfSkgPT4ge1xuICAgIGVkaXRlZCArPSBpbml0aWFsLnNsaWNlKHByZXZJbmRleCwgaW5kZXgpICsgc3RyaW5nO1xuICAgIHByZXZJbmRleCA9IGluZGV4O1xuICB9KTtcbiAgZWRpdGVkICs9IGluaXRpYWwuc2xpY2UocHJldkluZGV4KTtcbiAgcmV0dXJuIGVkaXRlZDtcbn1cblxuLy8gR2l2ZW4gYSBzdHJpbmcgYW5kIGFuIGluZGV4LCBsb29rIGJhY2t3YXJkcyB0byBmaW5kIHRoZSBzdHJpbmcgb2Ygd2hpdGVzcGFjZVxuLy8gZm9sbG93aW5nIHRoZSBuZXh0IHByZXZpb3VzIGxpbmUgYnJlYWsuXG5mdW5jdGlvbiBnZXRJbmRlbnRhdGlvbihzdHI6IHN0cmluZywgaW5kZXg6IG51bWJlcikge1xuICBsZXQgaW5kZW50U3RhcnQgPSBpbmRleDtcbiAgbGV0IGluZGVudEVuZCA9IGluZGV4O1xuICB3aGlsZSAoaW5kZW50U3RhcnQpIHtcbiAgICBjb25zdCBjID0gc3RyLmNoYXJDb2RlQXQoaW5kZW50U3RhcnQgLSAxKTtcbiAgICAvLyBsaW5lIGJyZWFrXG4gICAgaWYgKGMgPT09IDEwIHx8IGMgPT09IDEzIHx8IGMgPT09IDB4MjAyOCB8fCBjID09PSAweDIwMjkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpbmRlbnRTdGFydC0tO1xuICAgIC8vIG5vdCB3aGl0ZSBzcGFjZVxuICAgIGlmIChjICE9PSA5ICYmIGMgIT09IDExICYmIGMgIT09IDEyICYmIGMgIT09IDMyICYmIGMgIT09IDE2MCkge1xuICAgICAgaW5kZW50RW5kID0gaW5kZW50U3RhcnQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHIuc3Vic3RyaW5nKGluZGVudFN0YXJ0LCBpbmRlbnRFbmQpO1xufVxuXG5mdW5jdGlvbiBpc0ZpZWxkVHlwZShcbiAgZmllbGRUeXBlOiBNYXliZTxHcmFwaFFMT3V0cHV0VHlwZT4sXG4pOiBHcmFwaFFMT3V0cHV0VHlwZSB8IHZvaWQge1xuICBpZiAoZmllbGRUeXBlKSB7XG4gICAgcmV0dXJuIGZpZWxkVHlwZTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQXJCQTtBQUNBO0FBdUJBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFSQTtBQWFBO0FBbEJBO0FBb0JBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./utility/fillLeafs.ts\n");
3540
3541/***/ }),
3542
3543/***/ "./utility/find.ts":
3544/*!*************************!*\
3545 !*** ./utility/find.ts ***!
3546 \*************************/
3547/*! no static exports found */
3548/***/ (function(module, exports, __webpack_require__) {
3549
3550eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = find;\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function find(list, predicate) {\n for (let i = 0; i < list.length; i++) {\n if (predicate(list[i])) {\n return list[i];\n }\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlsaXR5L2ZpbmQudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL3V0aWxpdHkvZmluZC50cz82Njg5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZpbmQ8VD4oXG4gIGxpc3Q6IEFycmF5PFQ+LFxuICBwcmVkaWNhdGU6IChpdGVtOiBUKSA9PiBib29sZWFuLFxuKTogVCB8IHZvaWQge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAocHJlZGljYXRlKGxpc3RbaV0pKSB7XG4gICAgICByZXR1cm4gbGlzdFtpXTtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./utility/find.ts\n");
3551
3552/***/ }),
3553
3554/***/ "./utility/getQueryFacts.ts":
3555/*!**********************************!*\
3556 !*** ./utility/getQueryFacts.ts ***!
3557 \**********************************/
3558/*! no static exports found */
3559/***/ (function(module, exports, __webpack_require__) {
3560
3561eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = getOperationFacts;\n _exports.collectVariables = collectVariables;\n _exports.getQueryFacts = void 0;\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n /**\n * Provided previous \"operationFacts\", a GraphQL schema, and a query document\n * string, return a set of facts about that query useful for GraphiQL features.\n *\n * If the query cannot be parsed, returns undefined.\n */\n function getOperationFacts(schema, documentStr) {\n if (!documentStr) {\n return;\n }\n\n let documentAST;\n\n try {\n documentAST = (0, _graphql.parse)(documentStr, {\n experimentalFragmentVariables: true\n });\n } catch {\n return;\n }\n\n const variableToType = schema ? collectVariables(schema, documentAST) : undefined; // Collect operations by their names.\n\n const operations = [];\n (0, _graphql.visit)(documentAST, {\n OperationDefinition(node) {\n operations.push(node);\n }\n\n });\n return {\n variableToType,\n operations,\n documentAST\n };\n }\n /**\n * as a nod to folks who were clever enough to import this utility on their\n */\n\n\n const getQueryFacts = getOperationFacts;\n /**\n * Provided a schema and a document, produces a `variableToType` Object.\n */\n\n _exports.getQueryFacts = getQueryFacts;\n\n function collectVariables(schema, documentAST) {\n const variableToType = Object.create(null);\n documentAST.definitions.forEach(definition => {\n if (definition.kind === 'OperationDefinition') {\n const variableDefinitions = definition.variableDefinitions;\n\n if (variableDefinitions) {\n variableDefinitions.forEach(({\n variable,\n type\n }) => {\n const inputType = (0, _graphql.typeFromAST)(schema, type);\n\n if (inputType) {\n variableToType[variable.name.value] = inputType;\n }\n });\n }\n }\n });\n return variableToType;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlsaXR5L2dldFF1ZXJ5RmFjdHMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL3V0aWxpdHkvZ2V0UXVlcnlGYWN0cy50cz8wY2MzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCB7XG4gIHBhcnNlLFxuICB0eXBlRnJvbUFTVCxcbiAgR3JhcGhRTFNjaGVtYSxcbiAgRG9jdW1lbnROb2RlLFxuICBPcGVyYXRpb25EZWZpbml0aW9uTm9kZSxcbiAgTmFtZWRUeXBlTm9kZSxcbiAgR3JhcGhRTE5hbWVkVHlwZSxcbiAgdmlzaXQsXG59IGZyb20gJ2dyYXBocWwnO1xuXG5leHBvcnQgdHlwZSBWYXJpYWJsZVRvVHlwZSA9IHtcbiAgW3ZhcmlhYmxlOiBzdHJpbmddOiBHcmFwaFFMTmFtZWRUeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgUXVlcnlGYWN0cyA9IHtcbiAgdmFyaWFibGVUb1R5cGU/OiBWYXJpYWJsZVRvVHlwZTtcbiAgb3BlcmF0aW9ucz86IE9wZXJhdGlvbkRlZmluaXRpb25Ob2RlW107XG4gIGRvY3VtZW50QVNUPzogRG9jdW1lbnROb2RlO1xufTtcblxuLyoqXG4gKiBQcm92aWRlZCBwcmV2aW91cyBcIm9wZXJhdGlvbkZhY3RzXCIsIGEgR3JhcGhRTCBzY2hlbWEsIGFuZCBhIHF1ZXJ5IGRvY3VtZW50XG4gKiBzdHJpbmcsIHJldHVybiBhIHNldCBvZiBmYWN0cyBhYm91dCB0aGF0IHF1ZXJ5IHVzZWZ1bCBmb3IgR3JhcGhpUUwgZmVhdHVyZXMuXG4gKlxuICogSWYgdGhlIHF1ZXJ5IGNhbm5vdCBiZSBwYXJzZWQsIHJldHVybnMgdW5kZWZpbmVkLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcGVyYXRpb25GYWN0cyhcbiAgc2NoZW1hPzogR3JhcGhRTFNjaGVtYSxcbiAgZG9jdW1lbnRTdHI/OiBzdHJpbmcgfCBudWxsLFxuKTogUXVlcnlGYWN0cyB8IHVuZGVmaW5lZCB7XG4gIGlmICghZG9jdW1lbnRTdHIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgZG9jdW1lbnRBU1Q6IERvY3VtZW50Tm9kZTtcbiAgdHJ5IHtcbiAgICBkb2N1bWVudEFTVCA9IHBhcnNlKGRvY3VtZW50U3RyLCB7XG4gICAgICBleHBlcmltZW50YWxGcmFnbWVudFZhcmlhYmxlczogdHJ1ZSxcbiAgICB9KTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgdmFyaWFibGVUb1R5cGUgPSBzY2hlbWFcbiAgICA/IGNvbGxlY3RWYXJpYWJsZXMoc2NoZW1hLCBkb2N1bWVudEFTVClcbiAgICA6IHVuZGVmaW5lZDtcblxuICAvLyBDb2xsZWN0IG9wZXJhdGlvbnMgYnkgdGhlaXIgbmFtZXMuXG4gIGNvbnN0IG9wZXJhdGlvbnM6IE9wZXJhdGlvbkRlZmluaXRpb25Ob2RlW10gPSBbXTtcblxuICB2aXNpdChkb2N1bWVudEFTVCwge1xuICAgIE9wZXJhdGlvbkRlZmluaXRpb24obm9kZSkge1xuICAgICAgb3BlcmF0aW9ucy5wdXNoKG5vZGUpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiB7IHZhcmlhYmxlVG9UeXBlLCBvcGVyYXRpb25zLCBkb2N1bWVudEFTVCB9O1xufVxuXG4vKipcbiAqIGFzIGEgbm9kIHRvIGZvbGtzIHdobyB3ZXJlIGNsZXZlciBlbm91Z2ggdG8gaW1wb3J0IHRoaXMgdXRpbGl0eSBvbiB0aGVpclxuICovXG5leHBvcnQgY29uc3QgZ2V0UXVlcnlGYWN0cyA9IGdldE9wZXJhdGlvbkZhY3RzO1xuXG4vKipcbiAqIFByb3ZpZGVkIGEgc2NoZW1hIGFuZCBhIGRvY3VtZW50LCBwcm9kdWNlcyBhIGB2YXJpYWJsZVRvVHlwZWAgT2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sbGVjdFZhcmlhYmxlcyhcbiAgc2NoZW1hOiBHcmFwaFFMU2NoZW1hLFxuICBkb2N1bWVudEFTVDogRG9jdW1lbnROb2RlLFxuKTogVmFyaWFibGVUb1R5cGUge1xuICBjb25zdCB2YXJpYWJsZVRvVHlwZToge1xuICAgIFt2YXJpYWJsZTogc3RyaW5nXTogR3JhcGhRTE5hbWVkVHlwZTtcbiAgfSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGRvY3VtZW50QVNULmRlZmluaXRpb25zLmZvckVhY2goZGVmaW5pdGlvbiA9PiB7XG4gICAgaWYgKGRlZmluaXRpb24ua2luZCA9PT0gJ09wZXJhdGlvbkRlZmluaXRpb24nKSB7XG4gICAgICBjb25zdCB2YXJpYWJsZURlZmluaXRpb25zID0gZGVmaW5pdGlvbi52YXJpYWJsZURlZmluaXRpb25zO1xuICAgICAgaWYgKHZhcmlhYmxlRGVmaW5pdGlvbnMpIHtcbiAgICAgICAgdmFyaWFibGVEZWZpbml0aW9ucy5mb3JFYWNoKCh7IHZhcmlhYmxlLCB0eXBlIH0pID0+IHtcbiAgICAgICAgICBjb25zdCBpbnB1dFR5cGUgPSB0eXBlRnJvbUFTVChzY2hlbWEsIHR5cGUgYXMgTmFtZWRUeXBlTm9kZSk7XG4gICAgICAgICAgaWYgKGlucHV0VHlwZSkge1xuICAgICAgICAgICAgdmFyaWFibGVUb1R5cGVbdmFyaWFibGUubmFtZS52YWx1ZV0gPSBpbnB1dFR5cGU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4gdmFyaWFibGVUb1R5cGU7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBSUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./utility/getQueryFacts.ts\n");
3562
3563/***/ }),
3564
3565/***/ "./utility/getSelectedOperationName.ts":
3566/*!*********************************************!*\
3567 !*** ./utility/getSelectedOperationName.ts ***!
3568 \*********************************************/
3569/*! no static exports found */
3570/***/ (function(module, exports, __webpack_require__) {
3571
3572eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = getSelectedOperationName;\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n /**\n * Provided optional previous operations and selected name, and a next list of\n * operations, determine what the next selected operation should be.\n */\n function getSelectedOperationName(prevOperations, prevSelectedOperationName, operations) {\n // If there are not enough operations to bother with, return nothing.\n if (!operations || operations.length < 1) {\n return;\n } // If a previous selection still exists, continue to use it.\n\n\n const names = operations.map(op => op.name && op.name.value);\n\n if (prevSelectedOperationName && names.indexOf(prevSelectedOperationName) !== -1) {\n return prevSelectedOperationName;\n } // If a previous selection was the Nth operation, use the same Nth.\n\n\n if (prevSelectedOperationName && prevOperations) {\n const prevNames = prevOperations.map(op => op.name && op.name.value);\n const prevIndex = prevNames.indexOf(prevSelectedOperationName);\n\n if (prevIndex !== -1 && prevIndex < names.length) {\n return names[prevIndex];\n }\n } // Use the first operation.\n\n\n return names[0];\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlsaXR5L2dldFNlbGVjdGVkT3BlcmF0aW9uTmFtZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vdXRpbGl0eS9nZXRTZWxlY3RlZE9wZXJhdGlvbk5hbWUudHM/NTA1MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGVyYXRpb25EZWZpbml0aW9uTm9kZSB9IGZyb20gJ2dyYXBocWwnO1xuXG4vKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4vKipcbiAqIFByb3ZpZGVkIG9wdGlvbmFsIHByZXZpb3VzIG9wZXJhdGlvbnMgYW5kIHNlbGVjdGVkIG5hbWUsIGFuZCBhIG5leHQgbGlzdCBvZlxuICogb3BlcmF0aW9ucywgZGV0ZXJtaW5lIHdoYXQgdGhlIG5leHQgc2VsZWN0ZWQgb3BlcmF0aW9uIHNob3VsZCBiZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0U2VsZWN0ZWRPcGVyYXRpb25OYW1lKFxuICBwcmV2T3BlcmF0aW9ucz86IE9wZXJhdGlvbkRlZmluaXRpb25Ob2RlW10gfCB1bmRlZmluZWQsXG4gIHByZXZTZWxlY3RlZE9wZXJhdGlvbk5hbWU/OiBzdHJpbmcsXG4gIG9wZXJhdGlvbnM/OiBPcGVyYXRpb25EZWZpbml0aW9uTm9kZVtdLFxuKSB7XG4gIC8vIElmIHRoZXJlIGFyZSBub3QgZW5vdWdoIG9wZXJhdGlvbnMgdG8gYm90aGVyIHdpdGgsIHJldHVybiBub3RoaW5nLlxuICBpZiAoIW9wZXJhdGlvbnMgfHwgb3BlcmF0aW9ucy5sZW5ndGggPCAxKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gSWYgYSBwcmV2aW91cyBzZWxlY3Rpb24gc3RpbGwgZXhpc3RzLCBjb250aW51ZSB0byB1c2UgaXQuXG4gIGNvbnN0IG5hbWVzID0gb3BlcmF0aW9ucy5tYXAob3AgPT4gb3AubmFtZSAmJiBvcC5uYW1lLnZhbHVlKTtcbiAgaWYgKFxuICAgIHByZXZTZWxlY3RlZE9wZXJhdGlvbk5hbWUgJiZcbiAgICBuYW1lcy5pbmRleE9mKHByZXZTZWxlY3RlZE9wZXJhdGlvbk5hbWUpICE9PSAtMVxuICApIHtcbiAgICByZXR1cm4gcHJldlNlbGVjdGVkT3BlcmF0aW9uTmFtZTtcbiAgfVxuXG4gIC8vIElmIGEgcHJldmlvdXMgc2VsZWN0aW9uIHdhcyB0aGUgTnRoIG9wZXJhdGlvbiwgdXNlIHRoZSBzYW1lIE50aC5cbiAgaWYgKHByZXZTZWxlY3RlZE9wZXJhdGlvbk5hbWUgJiYgcHJldk9wZXJhdGlvbnMpIHtcbiAgICBjb25zdCBwcmV2TmFtZXMgPSBwcmV2T3BlcmF0aW9ucy5tYXAob3AgPT4gb3AubmFtZSAmJiBvcC5uYW1lLnZhbHVlKTtcbiAgICBjb25zdCBwcmV2SW5kZXggPSBwcmV2TmFtZXMuaW5kZXhPZihwcmV2U2VsZWN0ZWRPcGVyYXRpb25OYW1lKTtcbiAgICBpZiAocHJldkluZGV4ICE9PSAtMSAmJiBwcmV2SW5kZXggPCBuYW1lcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBuYW1lc1twcmV2SW5kZXhdO1xuICAgIH1cbiAgfVxuXG4gIC8vIFVzZSB0aGUgZmlyc3Qgb3BlcmF0aW9uLlxuICByZXR1cm4gbmFtZXNbMF07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./utility/getSelectedOperationName.ts\n");
3573
3574/***/ }),
3575
3576/***/ "./utility/introspectionQueries.ts":
3577/*!*****************************************!*\
3578 !*** ./utility/introspectionQueries.ts ***!
3579 \*****************************************/
3580/*! no static exports found */
3581/***/ (function(module, exports, __webpack_require__) {
3582
3583eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.introspectionQuerySansSubscriptions = _exports.introspectionQueryName = _exports.staticName = _exports.introspectionQuery = void 0;\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n const introspectionQuery = (0, _graphql.getIntrospectionQuery)();\n _exports.introspectionQuery = introspectionQuery;\n const staticName = 'IntrospectionQuery';\n _exports.staticName = staticName;\n const introspectionQueryName = staticName; // Some GraphQL services do not support subscriptions and fail an introspection\n // query which includes the `subscriptionType` field as the stock introspection\n // query does. This backup query removes that field.\n\n _exports.introspectionQueryName = introspectionQueryName;\n const introspectionQuerySansSubscriptions = introspectionQuery.replace('subscriptionType { name }', '');\n _exports.introspectionQuerySansSubscriptions = introspectionQuerySansSubscriptions;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlsaXR5L2ludHJvc3BlY3Rpb25RdWVyaWVzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi91dGlsaXR5L2ludHJvc3BlY3Rpb25RdWVyaWVzLnRzP2I2YWIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxIEdyYXBoUUwgQ29udHJpYnV0b3JzLlxuICpcbiAqICBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqICBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaW1wb3J0IHsgZ2V0SW50cm9zcGVjdGlvblF1ZXJ5IH0gZnJvbSAnZ3JhcGhxbCc7XG5cbmV4cG9ydCBjb25zdCBpbnRyb3NwZWN0aW9uUXVlcnkgPSBnZXRJbnRyb3NwZWN0aW9uUXVlcnkoKTtcblxuZXhwb3J0IGNvbnN0IHN0YXRpY05hbWUgPSAnSW50cm9zcGVjdGlvblF1ZXJ5JztcblxuZXhwb3J0IGNvbnN0IGludHJvc3BlY3Rpb25RdWVyeU5hbWUgPSBzdGF0aWNOYW1lO1xuXG4vLyBTb21lIEdyYXBoUUwgc2VydmljZXMgZG8gbm90IHN1cHBvcnQgc3Vic2NyaXB0aW9ucyBhbmQgZmFpbCBhbiBpbnRyb3NwZWN0aW9uXG4vLyBxdWVyeSB3aGljaCBpbmNsdWRlcyB0aGUgYHN1YnNjcmlwdGlvblR5cGVgIGZpZWxkIGFzIHRoZSBzdG9jayBpbnRyb3NwZWN0aW9uXG4vLyBxdWVyeSBkb2VzLiBUaGlzIGJhY2t1cCBxdWVyeSByZW1vdmVzIHRoYXQgZmllbGQuXG5leHBvcnQgY29uc3QgaW50cm9zcGVjdGlvblF1ZXJ5U2Fuc1N1YnNjcmlwdGlvbnMgPSBpbnRyb3NwZWN0aW9uUXVlcnkucmVwbGFjZShcbiAgJ3N1YnNjcmlwdGlvblR5cGUgeyBuYW1lIH0nLFxuICAnJyxcbik7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBOztBQUVBOztBQUVBO0FBR0E7QUFDQTtBQUNBOztBQUFBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./utility/introspectionQueries.ts\n");
3584
3585/***/ }),
3586
3587/***/ "./utility/mergeAst.ts":
3588/*!*****************************!*\
3589 !*** ./utility/mergeAst.ts ***!
3590 \*****************************/
3591/*! no static exports found */
3592/***/ (function(module, exports, __webpack_require__) {
3593
3594eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.uniqueBy = uniqueBy;\n _exports.inlineRelevantFragmentSpreads = inlineRelevantFragmentSpreads;\n _exports.default = mergeAST;\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n function uniqueBy(array, iteratee) {\n const FilteredMap = new Map();\n const result = [];\n\n for (const item of array) {\n if (item.kind === 'Field') {\n const uniqueValue = iteratee(item);\n const existing = FilteredMap.get(uniqueValue);\n\n if (item.directives && item.directives.length) {\n // Cannot inline fields with directives (yet)\n const itemClone = { ...item\n };\n result.push(itemClone);\n } else if (existing && existing.selectionSet && item.selectionSet) {\n // Merge the selection sets\n existing.selectionSet.selections = [...existing.selectionSet.selections, ...item.selectionSet.selections];\n } else if (!existing) {\n const itemClone = { ...item\n };\n FilteredMap.set(uniqueValue, itemClone);\n result.push(itemClone);\n }\n } else {\n result.push(item);\n }\n }\n\n return result;\n }\n\n function inlineRelevantFragmentSpreads(fragmentDefinitions, selections, selectionSetType) {\n const selectionSetTypeName = selectionSetType ? (0, _graphql.getNamedType)(selectionSetType).name : null;\n const outputSelections = [];\n const seenSpreads = [];\n\n for (let selection of selections) {\n var _selection$directives;\n\n if (selection.kind === 'FragmentSpread') {\n const fragmentName = selection.name.value;\n\n if (!selection.directives || selection.directives.length === 0) {\n if (seenSpreads.indexOf(fragmentName) >= 0) {\n /* It's a duplicate - skip it! */\n continue;\n } else {\n seenSpreads.push(fragmentName);\n }\n }\n\n const fragmentDefinition = fragmentDefinitions[selection.name.value];\n\n if (fragmentDefinition) {\n const {\n typeCondition,\n directives,\n selectionSet\n } = fragmentDefinition;\n selection = {\n kind: 'InlineFragment',\n typeCondition,\n directives,\n selectionSet\n };\n }\n }\n\n if (selection.kind === 'InlineFragment' && ( // Cannot inline if there are directives\n !selection.directives || ((_selection$directives = selection.directives) === null || _selection$directives === void 0 ? void 0 : _selection$directives.length) === 0)) {\n const fragmentTypeName = selection.typeCondition ? selection.typeCondition.name.value : null;\n\n if (!fragmentTypeName || fragmentTypeName === selectionSetTypeName) {\n outputSelections.push(...inlineRelevantFragmentSpreads(fragmentDefinitions, selection.selectionSet.selections, selectionSetType));\n continue;\n }\n }\n\n outputSelections.push(selection);\n }\n\n return outputSelections;\n }\n /**\n * Given a document AST, inline all named fragment definitions.\n */\n\n\n function mergeAST(documentAST, schema) {\n // If we're given the schema, we can simplify even further by resolving object\n // types vs unions/interfaces\n const typeInfo = schema ? new _graphql.TypeInfo(schema) : null;\n const fragmentDefinitions = Object.create(null);\n\n for (const definition of documentAST.definitions) {\n if (definition.kind === 'FragmentDefinition') {\n fragmentDefinitions[definition.name.value] = definition;\n }\n }\n\n const visitors = {\n SelectionSet(node) {\n const selectionSetType = typeInfo ? typeInfo.getParentType() : null;\n let {\n selections\n } = node;\n selections = inlineRelevantFragmentSpreads(fragmentDefinitions, selections, selectionSetType);\n selections = uniqueBy(selections, selection => selection.alias ? selection.alias.value : selection.name.value);\n return { ...node,\n selections\n };\n },\n\n FragmentDefinition() {\n return null;\n }\n\n };\n return (0, _graphql.visit)(documentAST, typeInfo ? (0, _graphql.visitWithTypeInfo)(typeInfo, visitors) : visitors);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlsaXR5L21lcmdlQXN0LnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvLi91dGlsaXR5L21lcmdlQXN0LnRzPzAyZTAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxIEdyYXBoUUwgQ29udHJpYnV0b3JzLlxuICpcbiAqICBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqICBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaW1wb3J0IHtcbiAgRG9jdW1lbnROb2RlLFxuICBGaWVsZE5vZGUsXG4gIEZyYWdtZW50RGVmaW5pdGlvbk5vZGUsXG4gIEdyYXBoUUxPdXRwdXRUeXBlLFxuICBHcmFwaFFMU2NoZW1hLFxuICBTZWxlY3Rpb25Ob2RlLFxuICBUeXBlSW5mbyxcbiAgZ2V0TmFtZWRUeXBlLFxuICB2aXNpdCxcbiAgdmlzaXRXaXRoVHlwZUluZm8sXG4gIEFTVEtpbmRUb05vZGUsXG4gIFZpc2l0b3IsXG4gIEFTVE5vZGUsXG59IGZyb20gJ2dyYXBocWwnO1xuXG50eXBlIE1heWJlPFQ+ID0gbnVsbCB8IFQ7XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlxdWVCeTxUPihcbiAgYXJyYXk6IHJlYWRvbmx5IFNlbGVjdGlvbk5vZGVbXSxcbiAgaXRlcmF0ZWU6IChpdGVtOiBGaWVsZE5vZGUpID0+IFQsXG4pIHtcbiAgY29uc3QgRmlsdGVyZWRNYXAgPSBuZXcgTWFwPFQsIEZpZWxkTm9kZT4oKTtcbiAgY29uc3QgcmVzdWx0OiBTZWxlY3Rpb25Ob2RlW10gPSBbXTtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGFycmF5KSB7XG4gICAgaWYgKGl0ZW0ua2luZCA9PT0gJ0ZpZWxkJykge1xuICAgICAgY29uc3QgdW5pcXVlVmFsdWUgPSBpdGVyYXRlZShpdGVtKTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gRmlsdGVyZWRNYXAuZ2V0KHVuaXF1ZVZhbHVlKTtcbiAgICAgIGlmIChpdGVtLmRpcmVjdGl2ZXMgJiYgaXRlbS5kaXJlY3RpdmVzLmxlbmd0aCkge1xuICAgICAgICAvLyBDYW5ub3QgaW5saW5lIGZpZWxkcyB3aXRoIGRpcmVjdGl2ZXMgKHlldClcbiAgICAgICAgY29uc3QgaXRlbUNsb25lID0geyAuLi5pdGVtIH07XG4gICAgICAgIHJlc3VsdC5wdXNoKGl0ZW1DbG9uZSk7XG4gICAgICB9IGVsc2UgaWYgKGV4aXN0aW5nICYmIGV4aXN0aW5nLnNlbGVjdGlvblNldCAmJiBpdGVtLnNlbGVjdGlvblNldCkge1xuICAgICAgICAvLyBNZXJnZSB0aGUgc2VsZWN0aW9uIHNldHNcbiAgICAgICAgZXhpc3Rpbmcuc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMgPSBbXG4gICAgICAgICAgLi4uZXhpc3Rpbmcuc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMsXG4gICAgICAgICAgLi4uaXRlbS5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucyxcbiAgICAgICAgXTtcbiAgICAgIH0gZWxzZSBpZiAoIWV4aXN0aW5nKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1DbG9uZSA9IHsgLi4uaXRlbSB9O1xuICAgICAgICBGaWx0ZXJlZE1hcC5zZXQodW5pcXVlVmFsdWUsIGl0ZW1DbG9uZSk7XG4gICAgICAgIHJlc3VsdC5wdXNoKGl0ZW1DbG9uZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5saW5lUmVsZXZhbnRGcmFnbWVudFNwcmVhZHMoXG4gIGZyYWdtZW50RGVmaW5pdGlvbnM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBGcmFnbWVudERlZmluaXRpb25Ob2RlIHwgdW5kZWZpbmVkO1xuICB9LFxuICBzZWxlY3Rpb25zOiByZWFkb25seSBTZWxlY3Rpb25Ob2RlW10sXG4gIHNlbGVjdGlvblNldFR5cGU/OiBNYXliZTxHcmFwaFFMT3V0cHV0VHlwZT4sXG4pOiByZWFkb25seSBTZWxlY3Rpb25Ob2RlW10ge1xuICBjb25zdCBzZWxlY3Rpb25TZXRUeXBlTmFtZSA9IHNlbGVjdGlvblNldFR5cGVcbiAgICA/IGdldE5hbWVkVHlwZShzZWxlY3Rpb25TZXRUeXBlKS5uYW1lXG4gICAgOiBudWxsO1xuICBjb25zdCBvdXRwdXRTZWxlY3Rpb25zID0gW107XG4gIGNvbnN0IHNlZW5TcHJlYWRzID0gW107XG4gIGZvciAobGV0IHNlbGVjdGlvbiBvZiBzZWxlY3Rpb25zKSB7XG4gICAgaWYgKHNlbGVjdGlvbi5raW5kID09PSAnRnJhZ21lbnRTcHJlYWQnKSB7XG4gICAgICBjb25zdCBmcmFnbWVudE5hbWUgPSBzZWxlY3Rpb24ubmFtZS52YWx1ZTtcbiAgICAgIGlmICghc2VsZWN0aW9uLmRpcmVjdGl2ZXMgfHwgc2VsZWN0aW9uLmRpcmVjdGl2ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGlmIChzZWVuU3ByZWFkcy5pbmRleE9mKGZyYWdtZW50TmFtZSkgPj0gMCkge1xuICAgICAgICAgIC8qIEl0J3MgYSBkdXBsaWNhdGUgLSBza2lwIGl0ISAqL1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlZW5TcHJlYWRzLnB1c2goZnJhZ21lbnROYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgZnJhZ21lbnREZWZpbml0aW9uID0gZnJhZ21lbnREZWZpbml0aW9uc1tzZWxlY3Rpb24ubmFtZS52YWx1ZV07XG4gICAgICBpZiAoZnJhZ21lbnREZWZpbml0aW9uKSB7XG4gICAgICAgIGNvbnN0IHsgdHlwZUNvbmRpdGlvbiwgZGlyZWN0aXZlcywgc2VsZWN0aW9uU2V0IH0gPSBmcmFnbWVudERlZmluaXRpb247XG4gICAgICAgIHNlbGVjdGlvbiA9IHtcbiAgICAgICAgICBraW5kOiAnSW5saW5lRnJhZ21lbnQnLFxuICAgICAgICAgIHR5cGVDb25kaXRpb24sXG4gICAgICAgICAgZGlyZWN0aXZlcyxcbiAgICAgICAgICBzZWxlY3Rpb25TZXQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbi5raW5kID09PSAnSW5saW5lRnJhZ21lbnQnICYmXG4gICAgICAvLyBDYW5ub3QgaW5saW5lIGlmIHRoZXJlIGFyZSBkaXJlY3RpdmVzXG4gICAgICAoIXNlbGVjdGlvbi5kaXJlY3RpdmVzIHx8IHNlbGVjdGlvbi5kaXJlY3RpdmVzPy5sZW5ndGggPT09IDApXG4gICAgKSB7XG4gICAgICBjb25zdCBmcmFnbWVudFR5cGVOYW1lID0gc2VsZWN0aW9uLnR5cGVDb25kaXRpb25cbiAgICAgICAgPyBzZWxlY3Rpb24udHlwZUNvbmRpdGlvbi5uYW1lLnZhbHVlXG4gICAgICAgIDogbnVsbDtcbiAgICAgIGlmICghZnJhZ21lbnRUeXBlTmFtZSB8fCBmcmFnbWVudFR5cGVOYW1lID09PSBzZWxlY3Rpb25TZXRUeXBlTmFtZSkge1xuICAgICAgICBvdXRwdXRTZWxlY3Rpb25zLnB1c2goXG4gICAgICAgICAgLi4uaW5saW5lUmVsZXZhbnRGcmFnbWVudFNwcmVhZHMoXG4gICAgICAgICAgICBmcmFnbWVudERlZmluaXRpb25zLFxuICAgICAgICAgICAgc2VsZWN0aW9uLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zLFxuICAgICAgICAgICAgc2VsZWN0aW9uU2V0VHlwZSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgb3V0cHV0U2VsZWN0aW9ucy5wdXNoKHNlbGVjdGlvbik7XG4gIH1cbiAgcmV0dXJuIG91dHB1dFNlbGVjdGlvbnM7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBkb2N1bWVudCBBU1QsIGlubGluZSBhbGwgbmFtZWQgZnJhZ21lbnQgZGVmaW5pdGlvbnMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlQVNUKFxuICBkb2N1bWVudEFTVDogRG9jdW1lbnROb2RlLFxuICBzY2hlbWE/OiBHcmFwaFFMU2NoZW1hLFxuKTogRG9jdW1lbnROb2RlIHtcbiAgLy8gSWYgd2UncmUgZ2l2ZW4gdGhlIHNjaGVtYSwgd2UgY2FuIHNpbXBsaWZ5IGV2ZW4gZnVydGhlciBieSByZXNvbHZpbmcgb2JqZWN0XG4gIC8vIHR5cGVzIHZzIHVuaW9ucy9pbnRlcmZhY2VzXG4gIGNvbnN0IHR5cGVJbmZvID0gc2NoZW1hID8gbmV3IFR5cGVJbmZvKHNjaGVtYSkgOiBudWxsO1xuXG4gIGNvbnN0IGZyYWdtZW50RGVmaW5pdGlvbnM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBGcmFnbWVudERlZmluaXRpb25Ob2RlIHwgdW5kZWZpbmVkO1xuICB9ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKGNvbnN0IGRlZmluaXRpb24gb2YgZG9jdW1lbnRBU1QuZGVmaW5pdGlvbnMpIHtcbiAgICBpZiAoZGVmaW5pdGlvbi5raW5kID09PSAnRnJhZ21lbnREZWZpbml0aW9uJykge1xuICAgICAgZnJhZ21lbnREZWZpbml0aW9uc1tkZWZpbml0aW9uLm5hbWUudmFsdWVdID0gZGVmaW5pdGlvbjtcbiAgICB9XG4gIH1cblxuICBjb25zdCB2aXNpdG9yczogVmlzaXRvcjxBU1RLaW5kVG9Ob2RlLCBBU1ROb2RlPiA9IHtcbiAgICBTZWxlY3Rpb25TZXQobm9kZSkge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uU2V0VHlwZSA9IHR5cGVJbmZvID8gdHlwZUluZm8uZ2V0UGFyZW50VHlwZSgpIDogbnVsbDtcbiAgICAgIGxldCB7IHNlbGVjdGlvbnMgfSA9IG5vZGU7XG5cbiAgICAgIHNlbGVjdGlvbnMgPSBpbmxpbmVSZWxldmFudEZyYWdtZW50U3ByZWFkcyhcbiAgICAgICAgZnJhZ21lbnREZWZpbml0aW9ucyxcbiAgICAgICAgc2VsZWN0aW9ucyxcbiAgICAgICAgc2VsZWN0aW9uU2V0VHlwZSxcbiAgICAgICk7XG5cbiAgICAgIHNlbGVjdGlvbnMgPSB1bmlxdWVCeShzZWxlY3Rpb25zLCBzZWxlY3Rpb24gPT5cbiAgICAgICAgc2VsZWN0aW9uLmFsaWFzID8gc2VsZWN0aW9uLmFsaWFzLnZhbHVlIDogc2VsZWN0aW9uLm5hbWUudmFsdWUsXG4gICAgICApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ub2RlLFxuICAgICAgICBzZWxlY3Rpb25zLFxuICAgICAgfTtcbiAgICB9LFxuICAgIEZyYWdtZW50RGVmaW5pdGlvbigpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIHZpc2l0KFxuICAgIGRvY3VtZW50QVNULFxuICAgIHR5cGVJbmZvID8gdmlzaXRXaXRoVHlwZUluZm8odHlwZUluZm8sIHZpc2l0b3JzKSA6IHZpc2l0b3JzLFxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQW9CQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBT0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBTUE7QUFJQTtBQUVBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUF2QkE7QUF5QkE7QUFJQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./utility/mergeAst.ts\n");
3595
3596/***/ }),
3597
3598/***/ "./utility/normalizeWhitespace.ts":
3599/*!****************************************!*\
3600 !*** ./utility/normalizeWhitespace.ts ***!
3601 \****************************************/
3602/*! no static exports found */
3603/***/ (function(module, exports, __webpack_require__) {
3604
3605eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.normalizeWhitespace = normalizeWhitespace;\n _exports.invalidCharacters = void 0;\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n // Unicode whitespace characters that break the interface.\n const invalidCharacters = Array.from({\n length: 11\n }, (_, i) => {\n // \\u2000 -> \\u200a\n return String.fromCharCode(0x2000 + i);\n }).concat(['\\u2028', '\\u2029', '\\u202f', '\\u00a0']);\n _exports.invalidCharacters = invalidCharacters;\n const sanitizeRegex = new RegExp('[' + invalidCharacters.join('') + ']', 'g');\n\n function normalizeWhitespace(line) {\n return line.replace(sanitizeRegex, ' ');\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlsaXR5L25vcm1hbGl6ZVdoaXRlc3BhY2UudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC8uL3V0aWxpdHkvbm9ybWFsaXplV2hpdGVzcGFjZS50cz84MGFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAoYykgMjAyMSBHcmFwaFFMIENvbnRyaWJ1dG9ycy5cbiAqXG4gKiAgVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiAgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbi8vIFVuaWNvZGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHRoYXQgYnJlYWsgdGhlIGludGVyZmFjZS5cbmV4cG9ydCBjb25zdCBpbnZhbGlkQ2hhcmFjdGVycyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDExIH0sIChfLCBpKSA9PiB7XG4gIC8vIFxcdTIwMDAgLT4gXFx1MjAwYVxuICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSgweDIwMDAgKyBpKTtcbn0pLmNvbmNhdChbJ1xcdTIwMjgnLCAnXFx1MjAyOScsICdcXHUyMDJmJywgJ1xcdTAwYTAnXSk7XG5cbmNvbnN0IHNhbml0aXplUmVnZXggPSBuZXcgUmVnRXhwKCdbJyArIGludmFsaWRDaGFyYWN0ZXJzLmpvaW4oJycpICsgJ10nLCAnZycpO1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplV2hpdGVzcGFjZShsaW5lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGxpbmUucmVwbGFjZShzYW5pdGl6ZVJlZ2V4LCAnICcpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./utility/normalizeWhitespace.ts\n");
3606
3607/***/ }),
3608
3609/***/ "./utility/onHasCompletion.ts":
3610/*!************************************!*\
3611 !*** ./utility/onHasCompletion.ts ***!
3612 \************************************/
3613/*! no static exports found */
3614/***/ (function(module, exports, __webpack_require__) {
3615
3616eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(/*! graphql */ \"../../../node_modules/graphql/index.mjs\"), __webpack_require__(/*! markdown-it */ \"../../../node_modules/markdown-it/index.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else { var mod; }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _graphql, _markdownIt) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = onHasCompletion;\n _markdownIt = _interopRequireDefault(_markdownIt);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n /**\n * Copyright (c) 2021 GraphQL Contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n const md = new _markdownIt.default();\n /**\n * Render a custom UI for CodeMirror's hint which includes additional info\n * about the type and description for the selected context.\n */\n\n function onHasCompletion(_cm, data, onHintInformationRender) {\n const CodeMirror = __webpack_require__(/*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\");\n\n let information;\n let deprecation; // When a hint result is selected, we augment the UI with information.\n\n CodeMirror.on(data, 'select', (ctx, el) => {\n // Only the first time (usually when the hint UI is first displayed)\n // do we create the information nodes.\n if (!information) {\n const hintsUl = el.parentNode; // This \"information\" node will contain the additional info about the\n // highlighted typeahead option.\n\n information = document.createElement('div');\n information.className = 'CodeMirror-hint-information';\n hintsUl.appendChild(information); // This \"deprecation\" node will contain info about deprecated usage.\n\n deprecation = document.createElement('div');\n deprecation.className = 'CodeMirror-hint-deprecation';\n hintsUl.appendChild(deprecation); // When CodeMirror attempts to remove the hint UI, we detect that it was\n // removed and in turn remove the information nodes.\n\n let onRemoveFn;\n hintsUl.addEventListener('DOMNodeRemoved', onRemoveFn = event => {\n if (event.target === hintsUl) {\n hintsUl.removeEventListener('DOMNodeRemoved', onRemoveFn);\n information = null;\n deprecation = null;\n onRemoveFn = null;\n }\n });\n } // Now that the UI has been set up, add info to information.\n\n\n const description = ctx.description ? md.render(ctx.description) : 'Self descriptive.';\n const type = ctx.type ? '<span class=\"infoType\">' + renderType(ctx.type) + '</span>' : '';\n information.innerHTML = '<div class=\"content\">' + (description.slice(0, 3) === '<p>' ? '<p>' + type + description.slice(3) : type + description) + '</div>';\n\n if (ctx && deprecation && ctx.isDeprecated) {\n const reason = ctx.deprecationReason ? md.render(ctx.deprecationReason) : '';\n deprecation.innerHTML = '<span class=\"deprecation-label\">Deprecated</span>' + reason;\n deprecation.style.display = 'block';\n } else if (deprecation) {\n deprecation.style.display = 'none';\n } // Additional rendering?\n\n\n if (onHintInformationRender) {\n onHintInformationRender(information);\n }\n });\n }\n\n function renderType(type) {\n if (type instanceof _graphql.GraphQLNonNull) {\n return `${renderType(type.ofType)}!`;\n }\n\n if (type instanceof _graphql.GraphQLList) {\n return `[${renderType(type.ofType)}]`;\n }\n\n return `<a class=\"typeName\">${type.name}</a>`;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi91dGlsaXR5L29uSGFzQ29tcGxldGlvbi50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0dyYXBoaVFMLy4vdXRpbGl0eS9vbkhhc0NvbXBsZXRpb24udHM/MmQ4NCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEgR3JhcGhRTCBDb250cmlidXRvcnMuXG4gKlxuICogIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHR5cGUgKiBhcyBDTSBmcm9tICdjb2RlbWlycm9yJztcblxuaW1wb3J0IHtcbiAgR3JhcGhRTE5vbk51bGwsXG4gIEdyYXBoUUxMaXN0LFxuICBHcmFwaFFMVHlwZSxcbiAgR3JhcGhRTEZpZWxkLFxufSBmcm9tICdncmFwaHFsJztcbmltcG9ydCBNRCBmcm9tICdtYXJrZG93bi1pdCc7XG5cbmNvbnN0IG1kID0gbmV3IE1EKCk7XG5cbi8qKlxuICogUmVuZGVyIGEgY3VzdG9tIFVJIGZvciBDb2RlTWlycm9yJ3MgaGludCB3aGljaCBpbmNsdWRlcyBhZGRpdGlvbmFsIGluZm9cbiAqIGFib3V0IHRoZSB0eXBlIGFuZCBkZXNjcmlwdGlvbiBmb3IgdGhlIHNlbGVjdGVkIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9uSGFzQ29tcGxldGlvbihcbiAgX2NtOiBDTS5FZGl0b3IsXG4gIGRhdGE6IENNLkVkaXRvckNoYW5nZUxpbmtlZExpc3QgfCB1bmRlZmluZWQsXG4gIG9uSGludEluZm9ybWF0aW9uUmVuZGVyOiAoZWw6IEhUTUxEaXZFbGVtZW50KSA9PiB2b2lkLFxuKSB7XG4gIGNvbnN0IENvZGVNaXJyb3IgPSByZXF1aXJlKCdjb2RlbWlycm9yJyk7XG5cbiAgbGV0IGluZm9ybWF0aW9uOiBIVE1MRGl2RWxlbWVudCB8IG51bGw7XG4gIGxldCBkZXByZWNhdGlvbjogSFRNTERpdkVsZW1lbnQgfCBudWxsO1xuXG4gIC8vIFdoZW4gYSBoaW50IHJlc3VsdCBpcyBzZWxlY3RlZCwgd2UgYXVnbWVudCB0aGUgVUkgd2l0aCBpbmZvcm1hdGlvbi5cbiAgQ29kZU1pcnJvci5vbihcbiAgICBkYXRhLFxuICAgICdzZWxlY3QnLFxuICAgIChjdHg6IEdyYXBoUUxGaWVsZDx7fSwge30sIHt9PiwgZWw6IEhUTUxEaXZFbGVtZW50KSA9PiB7XG4gICAgICAvLyBPbmx5IHRoZSBmaXJzdCB0aW1lICh1c3VhbGx5IHdoZW4gdGhlIGhpbnQgVUkgaXMgZmlyc3QgZGlzcGxheWVkKVxuICAgICAgLy8gZG8gd2UgY3JlYXRlIHRoZSBpbmZvcm1hdGlvbiBub2Rlcy5cbiAgICAgIGlmICghaW5mb3JtYXRpb24pIHtcbiAgICAgICAgY29uc3QgaGludHNVbCA9IGVsLnBhcmVudE5vZGUgYXMgTm9kZSAmIFBhcmVudE5vZGU7XG5cbiAgICAgICAgLy8gVGhpcyBcImluZm9ybWF0aW9uXCIgbm9kZSB3aWxsIGNvbnRhaW4gdGhlIGFkZGl0aW9uYWwgaW5mbyBhYm91dCB0aGVcbiAgICAgICAgLy8gaGlnaGxpZ2h0ZWQgdHlwZWFoZWFkIG9wdGlvbi5cbiAgICAgICAgaW5mb3JtYXRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgaW5mb3JtYXRpb24uY2xhc3NOYW1lID0gJ0NvZGVNaXJyb3ItaGludC1pbmZvcm1hdGlvbic7XG4gICAgICAgIGhpbnRzVWwuYXBwZW5kQ2hpbGQoaW5mb3JtYXRpb24pO1xuXG4gICAgICAgIC8vIFRoaXMgXCJkZXByZWNhdGlvblwiIG5vZGUgd2lsbCBjb250YWluIGluZm8gYWJvdXQgZGVwcmVjYXRlZCB1c2FnZS5cbiAgICAgICAgZGVwcmVjYXRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgZGVwcmVjYXRpb24uY2xhc3NOYW1lID0gJ0NvZGVNaXJyb3ItaGludC1kZXByZWNhdGlvbic7XG4gICAgICAgIGhpbnRzVWwuYXBwZW5kQ2hpbGQoZGVwcmVjYXRpb24pO1xuXG4gICAgICAgIC8vIFdoZW4gQ29kZU1pcnJvciBhdHRlbXB0cyB0byByZW1vdmUgdGhlIGhpbnQgVUksIHdlIGRldGVjdCB0aGF0IGl0IHdhc1xuICAgICAgICAvLyByZW1vdmVkIGFuZCBpbiB0dXJuIHJlbW92ZSB0aGUgaW5mb3JtYXRpb24gbm9kZXMuXG4gICAgICAgIGxldCBvblJlbW92ZUZuOiBFdmVudExpc3RlbmVyIHwgbnVsbDtcbiAgICAgICAgaGludHNVbC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdET01Ob2RlUmVtb3ZlZCcsXG4gICAgICAgICAgKG9uUmVtb3ZlRm4gPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBoaW50c1VsKSB7XG4gICAgICAgICAgICAgIGhpbnRzVWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignRE9NTm9kZVJlbW92ZWQnLCBvblJlbW92ZUZuKTtcbiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gPSBudWxsO1xuICAgICAgICAgICAgICBkZXByZWNhdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgIG9uUmVtb3ZlRm4gPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBOb3cgdGhhdCB0aGUgVUkgaGFzIGJlZW4gc2V0IHVwLCBhZGQgaW5mbyB0byBpbmZvcm1hdGlvbi5cbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gY3R4LmRlc2NyaXB0aW9uXG4gICAgICAgID8gbWQucmVuZGVyKGN0eC5kZXNjcmlwdGlvbilcbiAgICAgICAgOiAnU2VsZiBkZXNjcmlwdGl2ZS4nO1xuICAgICAgY29uc3QgdHlwZSA9IGN0eC50eXBlXG4gICAgICAgID8gJzxzcGFuIGNsYXNzPVwiaW5mb1R5cGVcIj4nICsgcmVuZGVyVHlwZShjdHgudHlwZSkgKyAnPC9zcGFuPidcbiAgICAgICAgOiAnJztcblxuICAgICAgaW5mb3JtYXRpb24uaW5uZXJIVE1MID1cbiAgICAgICAgJzxkaXYgY2xhc3M9XCJjb250ZW50XCI+JyArXG4gICAgICAgIChkZXNjcmlwdGlvbi5zbGljZSgwLCAzKSA9PT0gJzxwPidcbiAgICAgICAgICA/ICc8cD4nICsgdHlwZSArIGRlc2NyaXB0aW9uLnNsaWNlKDMpXG4gICAgICAgICAgOiB0eXBlICsgZGVzY3JpcHRpb24pICtcbiAgICAgICAgJzwvZGl2Pic7XG5cbiAgICAgIGlmIChjdHggJiYgZGVwcmVjYXRpb24gJiYgY3R4LmlzRGVwcmVjYXRlZCkge1xuICAgICAgICBjb25zdCByZWFzb24gPSBjdHguZGVwcmVjYXRpb25SZWFzb25cbiAgICAgICAgICA/IG1kLnJlbmRlcihjdHguZGVwcmVjYXRpb25SZWFzb24pXG4gICAgICAgICAgOiAnJztcbiAgICAgICAgZGVwcmVjYXRpb24uaW5uZXJIVE1MID1cbiAgICAgICAgICAnPHNwYW4gY2xhc3M9XCJkZXByZWNhdGlvbi1sYWJlbFwiPkRlcHJlY2F0ZWQ8L3NwYW4+JyArIHJlYXNvbjtcbiAgICAgICAgZGVwcmVjYXRpb24uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICB9IGVsc2UgaWYgKGRlcHJlY2F0aW9uKSB7XG4gICAgICAgIGRlcHJlY2F0aW9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZGl0aW9uYWwgcmVuZGVyaW5nP1xuICAgICAgaWYgKG9uSGludEluZm9ybWF0aW9uUmVuZGVyKSB7XG4gICAgICAgIG9uSGludEluZm9ybWF0aW9uUmVuZGVyKGluZm9ybWF0aW9uKTtcbiAgICAgIH1cbiAgICB9LFxuICApO1xufVxuXG5mdW5jdGlvbiByZW5kZXJUeXBlKHR5cGU6IEdyYXBoUUxUeXBlKTogc3RyaW5nIHtcbiAgaWYgKHR5cGUgaW5zdGFuY2VvZiBHcmFwaFFMTm9uTnVsbCkge1xuICAgIHJldHVybiBgJHtyZW5kZXJUeXBlKHR5cGUub2ZUeXBlKX0hYDtcbiAgfVxuICBpZiAodHlwZSBpbnN0YW5jZW9mIEdyYXBoUUxMaXN0KSB7XG4gICAgcmV0dXJuIGBbJHtyZW5kZXJUeXBlKHR5cGUub2ZUeXBlKX1dYDtcbiAgfVxuICByZXR1cm4gYDxhIGNsYXNzPVwidHlwZU5hbWVcIj4ke3R5cGUubmFtZX08L2E+YDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBV0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBSUE7QUFDQTtBQU1BO0FBQ0E7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./utility/onHasCompletion.ts\n");
3617
3618/***/ }),
3619
3620/***/ "react":
3621/*!************************!*\
3622 !*** external "React" ***!
3623 \************************/
3624/*! no static exports found */
3625/***/ (function(module, exports) {
3626
3627eval("(function() { module.exports = window[\"React\"]; }());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmFwaGlRTC9leHRlcm5hbCBcIlJlYWN0XCI/YzQ4MSJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKSB7IG1vZHVsZS5leHBvcnRzID0gd2luZG93W1wiUmVhY3RcIl07IH0oKSk7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///react\n");
3628
3629/***/ }),
3630
3631/***/ "react-dom":
3632/*!***************************!*\
3633 !*** external "ReactDOM" ***!
3634 \***************************/
3635/*! no static exports found */
3636/***/ (function(module, exports) {
3637
3638eval("(function() { module.exports = window[\"ReactDOM\"]; }());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QtZG9tLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vR3JhcGhpUUwvZXh0ZXJuYWwgXCJSZWFjdERPTVwiPzRiMmQiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCkgeyBtb2R1bGUuZXhwb3J0cyA9IHdpbmRvd1tcIlJlYWN0RE9NXCJdOyB9KCkpOyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///react-dom\n");
3639
3640/***/ })
3641
3642/******/ })["default"];
\No newline at end of file