Files
pedwfrontend/.next/static/chunks/amp.js
T
2021-06-28 16:36:49 +01:00

114 lines
204 KiB
JavaScript

/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([["amp"],{
/***/ "./node_modules/next/dist/client/dev/amp-dev.js":
/*!******************************************************!*\
!*** ./node_modules/next/dist/client/dev/amp-dev.js ***!
\******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval("/* module decorator */ module = __webpack_require__.nmd(module);\n\n\nvar _regeneratorRuntime = __webpack_require__(/*! ./node_modules/@babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n\nvar _asyncToGenerator = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nvar _eventSourcePolyfill = _interopRequireDefault(__webpack_require__(/*! ./event-source-polyfill */ \"./node_modules/next/dist/client/dev/event-source-polyfill.js\"));\n\nvar _eventsource = __webpack_require__(/*! ./error-overlay/eventsource */ \"./node_modules/next/dist/client/dev/error-overlay/eventsource.js\");\n\nvar _onDemandEntriesUtils = __webpack_require__(/*! ./on-demand-entries-utils */ \"./node_modules/next/dist/client/dev/on-demand-entries-utils.js\");\n\nvar _fouc = __webpack_require__(/*! ./fouc */ \"./node_modules/next/dist/client/dev/fouc.js\");\n/* globals __webpack_hash__ */\n\n\nif (!window.EventSource) {\n window.EventSource = _eventSourcePolyfill[\"default\"];\n}\n\nvar data = JSON.parse(document.getElementById('__NEXT_DATA__').textContent);\nvar assetPrefix = data.assetPrefix,\n page = data.page;\nassetPrefix = assetPrefix || '';\nvar mostRecentHash = null;\n/* eslint-disable-next-line */\n\nvar curHash = __webpack_require__.h();\nvar hotUpdatePath = assetPrefix + (assetPrefix.endsWith('/') ? '' : '/') + '_next/static/webpack/'; // Is there a newer version of this code available?\n\nfunction isUpdateAvailable() {\n // __webpack_hash__ is the hash of the current compilation.\n // It's a global variable injected by Webpack.\n\n /* eslint-disable-next-line */\n return mostRecentHash !== __webpack_require__.h();\n} // Webpack disallows updates in other states.\n\n\nfunction canApplyUpdates() {\n return module.hot.status() === 'idle';\n} // This function reads code updates on the fly and hard\n// reloads the page when it has changed.\n\n\nfunction tryApplyUpdates() {\n return _tryApplyUpdates.apply(this, arguments);\n}\n\nfunction _tryApplyUpdates() {\n _tryApplyUpdates = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var res, jsonData, curPage, pageUpdated;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(!isUpdateAvailable() || !canApplyUpdates())) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 2:\n _context.prev = 2;\n _context.next = 5;\n return fetch(typeof __webpack_require__.j !== 'undefined' ? // eslint-disable-next-line no-undef\n \"\".concat(hotUpdatePath).concat(curHash, \".\").concat(__webpack_require__.j, \".hot-update.json\") : \"\".concat(hotUpdatePath).concat(curHash, \".hot-update.json\"));\n\n case 5:\n res = _context.sent;\n _context.next = 8;\n return res.json();\n\n case 8:\n jsonData = _context.sent;\n curPage = page === '/' ? 'index' : page; // webpack 5 uses an array instead\n\n pageUpdated = (Array.isArray(jsonData.c) ? jsonData.c : Object.keys(jsonData.c)).some(function (mod) {\n return mod.indexOf(\"pages\".concat(curPage.substr(0, 1) === '/' ? curPage : \"/\".concat(curPage))) !== -1 || mod.indexOf(\"pages\".concat(curPage.substr(0, 1) === '/' ? curPage : \"/\".concat(curPage)).replace(/\\//g, '\\\\')) !== -1;\n });\n\n if (pageUpdated) {\n document.location.reload(true);\n } else {\n curHash = mostRecentHash;\n }\n\n _context.next = 18;\n break;\n\n case 14:\n _context.prev = 14;\n _context.t0 = _context[\"catch\"](2);\n console.error('Error occurred checking for update', _context.t0);\n document.location.reload(true);\n\n case 18:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[2, 14]]);\n }));\n return _tryApplyUpdates.apply(this, arguments);\n}\n\n(0, _eventsource.addMessageListener)(function (event) {\n if (event.data === \"\\uD83D\\uDC93\") {\n return;\n }\n\n try {\n var message = JSON.parse(event.data);\n\n if (message.action === 'sync' || message.action === 'built') {\n if (!message.hash) {\n return;\n }\n\n mostRecentHash = message.hash;\n tryApplyUpdates();\n } else if (message.action === 'reloadPage') {\n document.location.reload(true);\n }\n } catch (ex) {\n console.warn('Invalid HMR message: ' + event.data + '\\n' + ex);\n }\n});\n(0, _onDemandEntriesUtils.setupPing)(assetPrefix, function () {\n return page;\n});\n(0, _fouc.displayContent)();\n\n;\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n var currentExports = module.__proto__.exports;\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2FtcC1kZXYuanM/ZGE0NiJdLCJuYW1lcyI6WyJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ldmVudFNvdXJjZVBvbHlmaWxsIiwiX2V2ZW50c291cmNlIiwiX29uRGVtYW5kRW50cmllc1V0aWxzIiwiX2ZvdWMiLCJ3aW5kb3ciLCJFdmVudFNvdXJjZSIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwidGV4dENvbnRlbnQiLCJhc3NldFByZWZpeCIsInBhZ2UiLCJtb3N0UmVjZW50SGFzaCIsImN1ckhhc2giLCJfX3dlYnBhY2tfaGFzaF9fIiwiaG90VXBkYXRlUGF0aCIsImVuZHNXaXRoIiwiaXNVcGRhdGVBdmFpbGFibGUiLCJjYW5BcHBseVVwZGF0ZXMiLCJtb2R1bGUiLCJzdGF0dXMiLCJ0cnlBcHBseVVwZGF0ZXMiLCJmZXRjaCIsIl9fd2VicGFja19ydW50aW1lX2lkX18iLCJyZXMiLCJqc29uIiwianNvbkRhdGEiLCJjdXJQYWdlIiwicGFnZVVwZGF0ZWQiLCJBcnJheSIsImlzQXJyYXkiLCJjIiwiT2JqZWN0Iiwia2V5cyIsInNvbWUiLCJtb2QiLCJpbmRleE9mIiwic3Vic3RyIiwicmVwbGFjZSIsImxvY2F0aW9uIiwicmVsb2FkIiwiY29uc29sZSIsImVycm9yIiwiYWRkTWVzc2FnZUxpc3RlbmVyIiwiZXZlbnQiLCJtZXNzYWdlIiwiYWN0aW9uIiwiaGFzaCIsImV4Iiwid2FybiIsInNldHVwUGluZyIsImRpc3BsYXlDb250ZW50Il0sIm1hcHBpbmdzIjoiO0FBQWE7Ozs7OztBQUFBLElBQUlBLHNCQUFzQixHQUFDQyxtQkFBTyxDQUFDLG9IQUFELENBQWxDOztBQUFtRixJQUFJQyxvQkFBb0IsR0FBQ0Ysc0JBQXNCLENBQUNDLG1CQUFPLENBQUMsNkZBQUQsQ0FBUixDQUEvQzs7QUFB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bGUiOiIuL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9hbXAtZGV2LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7dmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQ9cmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO3ZhciBfZXZlbnRTb3VyY2VQb2x5ZmlsbD1faW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2V2ZW50LXNvdXJjZS1wb2x5ZmlsbFwiKSk7dmFyIF9ldmVudHNvdXJjZT1yZXF1aXJlKFwiLi9lcnJvci1vdmVybGF5L2V2ZW50c291cmNlXCIpO3ZhciBfb25EZW1hbmRFbnRyaWVzVXRpbHM9cmVxdWlyZShcIi4vb24tZGVtYW5kLWVudHJpZXMtdXRpbHNcIik7dmFyIF9mb3VjPXJlcXVpcmUoXCIuL2ZvdWNcIik7LyogZ2xvYmFscyBfX3dlYnBhY2tfaGFzaF9fICovaWYoIXdpbmRvdy5FdmVudFNvdXJjZSl7d2luZG93LkV2ZW50U291cmNlPV9ldmVudFNvdXJjZVBvbHlmaWxsLmRlZmF1bHQ7fWNvbnN0IGRhdGE9SlNPTi5wYXJzZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX19ORVhUX0RBVEFfXycpLnRleHRDb250ZW50KTtsZXR7YXNzZXRQcmVmaXgscGFnZX09ZGF0YTthc3NldFByZWZpeD1hc3NldFByZWZpeHx8Jyc7bGV0IG1vc3RSZWNlbnRIYXNoPW51bGw7LyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICovbGV0IGN1ckhhc2g9X193ZWJwYWNrX2hhc2hfXztjb25zdCBob3RVcGRhdGVQYXRoPWFzc2V0UHJlZml4Kyhhc3NldFByZWZpeC5lbmRzV2l0aCgnLycpPycnOicvJykrJ19uZXh0L3N0YXRpYy93ZWJwYWNrLyc7Ly8gSXMgdGhlcmUgYSBuZXdlciB2ZXJzaW9uIG9mIHRoaXMgY29kZSBhdmFpbGFibGU/XG5mdW5jdGlvbiBpc1VwZGF0ZUF2YWlsYWJsZSgpey8vIF9fd2VicGFja19oYXNoX18gaXMgdGhlIGhhc2ggb2YgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24uXG4vLyBJdCdzIGEgZ2xvYmFsIHZhcmlhYmxlIGluamVjdGVkIGJ5IFdlYnBhY2suXG4vKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgKi9yZXR1cm4gbW9zdFJlY2VudEhhc2ghPT1fX3dlYnBhY2tfaGFzaF9fO30vLyBXZWJwYWNrIGRpc2FsbG93cyB1cGRhdGVzIGluIG90aGVyIHN0YXRlcy5cbmZ1bmN0aW9uIGNhbkFwcGx5VXBkYXRlcygpe3JldHVybiBtb2R1bGUuaG90LnN0YXR1cygpPT09J2lkbGUnO30vLyBUaGlzIGZ1bmN0aW9uIHJlYWRzIGNvZGUgdXBkYXRlcyBvbiB0aGUgZmx5IGFuZCBoYXJkXG4vLyByZWxvYWRzIHRoZSBwYWdlIHdoZW4gaXQgaGFzIGNoYW5nZWQuXG5hc3luYyBmdW5jdGlvbiB0cnlBcHBseVVwZGF0ZXMoKXtpZighaXNVcGRhdGVBdmFpbGFibGUoKXx8IWNhbkFwcGx5VXBkYXRlcygpKXtyZXR1cm47fXRyeXtjb25zdCByZXM9YXdhaXQgZmV0Y2godHlwZW9mIF9fd2VicGFja19ydW50aW1lX2lkX18hPT0ndW5kZWZpbmVkJz8vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbmAke2hvdFVwZGF0ZVBhdGh9JHtjdXJIYXNofS4ke19fd2VicGFja19ydW50aW1lX2lkX199LmhvdC11cGRhdGUuanNvbmA6YCR7aG90VXBkYXRlUGF0aH0ke2N1ckhhc2h9LmhvdC11cGRhdGUuanNvbmApO2NvbnN0IGpzb25EYXRhPWF3YWl0IHJlcy5qc29uKCk7Y29uc3QgY3VyUGFnZT1wYWdlPT09Jy8nPydpbmRleCc6cGFnZTsvLyB3ZWJwYWNrIDUgdXNlcyBhbiBhcnJheSBpbnN0ZWFkXG5jb25zdCBwYWdlVXBkYXRlZD0oQXJyYXkuaXNBcnJheShqc29uRGF0YS5jKT9qc29uRGF0YS5jOk9iamVjdC5rZXlzKGpzb25EYXRhLmMpKS5zb21lKG1vZD0+e3JldHVybiBtb2QuaW5kZXhPZihgcGFnZXMke2N1clBhZ2Uuc3Vic3RyKDAsMSk9PT0nLyc/Y3VyUGFnZTpgLyR7Y3VyUGFnZX1gfWApIT09LTF8fG1vZC5pbmRleE9mKGBwYWdlcyR7Y3VyUGFnZS5zdWJzdHIoMCwxKT09PScvJz9jdXJQYWdlOmAvJHtjdXJQYWdlfWB9YC5yZXBsYWNlKC9cXC8vZywnXFxcXCcpKSE9PS0xO30pO2lmKHBhZ2VVcGRhdGVkKXtkb2N1bWVudC5sb2NhdGlvbi5yZWxvYWQodHJ1ZSk7fWVsc2V7Y3VySGFzaD1tb3N0UmVjZW50SGFzaDt9fWNhdGNoKGVycil7Y29uc29sZS5lcnJvcignRXJyb3Igb2NjdXJyZWQgY2hlY2tpbmcgZm9yIHVwZGF0ZScsZXJyKTtkb2N1bWVudC5sb2NhdGlvbi5yZWxvYWQodHJ1ZSk7fX0oMCxfZXZlbnRzb3VyY2UuYWRkTWVzc2FnZUxpc3RlbmVyKShldmVudD0+e2lmKGV2ZW50LmRhdGE9PT0nXFx1RDgzRFxcdURDOTMnKXtyZXR1cm47fXRyeXtjb25zdCBtZXNzYWdlPUpTT04ucGFyc2UoZXZlbnQuZGF0YSk7aWYobWVzc2FnZS5hY3Rpb249PT0nc3luYyd8fG1lc3NhZ2UuYWN0aW9uPT09J2J1aWx0Jyl7aWYoIW1lc3NhZ2UuaGFzaCl7cmV0dXJuO31tb3N0UmVjZW50SGFzaD1tZXNzYWdlLmhhc2g7dHJ5QXBwbHlVcGRhdGVzKCk7fWVsc2UgaWYobWVzc2FnZS5hY3Rpb249PT0ncmVsb2FkUGFnZScpe2RvY3VtZW50LmxvY2F0aW9uLnJlbG9hZCh0cnVlKTt9fWNhdGNoKGV4KXtjb25zb2xlLndhcm4oJ0ludmFsaWQgSE1SIG1lc3NhZ2U6ICcrZXZlbnQuZGF0YSsnXFxuJytleCk7fX0pOygwLF9vbkRlbWFuZEVudHJpZXNVdGlscy5zZXR1cFBpbmcpKGFzc2V0UHJlZml4LCgpPT5wYWdlKTsoMCxfZm91Yy5kaXNwbGF5Q29udGVudCkoKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFtcC1kZXYuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/amp-dev.js\n");
/***/ }),
/***/ "./node_modules/next/dist/client/dev/error-overlay/eventsource.js":
/*!************************************************************************!*\
!*** ./node_modules/next/dist/client/dev/error-overlay/eventsource.js ***!
\************************************************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/* module decorator */ module = __webpack_require__.nmd(module);\n\n\nexports.__esModule = true;\nexports.addMessageListener = addMessageListener;\nexports.getEventSourceWrapper = getEventSourceWrapper;\nvar eventCallbacks = [];\n\nfunction EventSourceWrapper(options) {\n var source;\n var lastActivity = new Date();\n var listeners = [];\n\n if (!options.timeout) {\n options.timeout = 20 * 1000;\n }\n\n init();\n var timer = setInterval(function () {\n if (new Date() - lastActivity > options.timeout) {\n handleDisconnect();\n }\n }, options.timeout / 2);\n\n function init() {\n source = new window.EventSource(options.path);\n source.onopen = handleOnline;\n source.onerror = handleDisconnect;\n source.onmessage = handleMessage;\n }\n\n function handleOnline() {\n if (options.log) console.log('[HMR] connected');\n lastActivity = new Date();\n }\n\n function handleMessage(event) {\n lastActivity = new Date();\n\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](event);\n }\n\n eventCallbacks.forEach(function (cb) {\n if (!cb.unfiltered && event.data.indexOf('action') === -1) return;\n cb(event);\n });\n }\n\n function handleDisconnect() {\n clearInterval(timer);\n source.close();\n setTimeout(init, options.timeout);\n }\n\n return {\n close: function close() {\n clearInterval(timer);\n source.close();\n },\n addMessageListener: function addMessageListener(fn) {\n listeners.push(fn);\n }\n };\n}\n\n_c = EventSourceWrapper;\n\nfunction addMessageListener(cb) {\n eventCallbacks.push(cb);\n}\n\nfunction getEventSourceWrapper(options) {\n return EventSourceWrapper(options);\n}\n\nvar _c;\n\n$RefreshReg$(_c, \"EventSourceWrapper\");\n\n;\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n var currentExports = module.__proto__.exports;\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2Vycm9yLW92ZXJsYXkvZXZlbnRzb3VyY2UuanM/YTM0MyJdLCJuYW1lcyI6WyJleHBvcnRzIiwiYWRkTWVzc2FnZUxpc3RlbmVyIiwiZ2V0RXZlbnRTb3VyY2VXcmFwcGVyIiwiZXZlbnRDYWxsYmFja3MiLCJFdmVudFNvdXJjZVdyYXBwZXIiLCJvcHRpb25zIiwic291cmNlIiwibGFzdEFjdGl2aXR5IiwiRGF0ZSIsImxpc3RlbmVycyIsInRpbWVvdXQiLCJpbml0IiwidGltZXIiLCJzZXRJbnRlcnZhbCIsImhhbmRsZURpc2Nvbm5lY3QiLCJ3aW5kb3ciLCJFdmVudFNvdXJjZSIsInBhdGgiLCJvbm9wZW4iLCJoYW5kbGVPbmxpbmUiLCJvbmVycm9yIiwib25tZXNzYWdlIiwiaGFuZGxlTWVzc2FnZSIsImxvZyIsImNvbnNvbGUiLCJldmVudCIsImkiLCJsZW5ndGgiLCJmb3JFYWNoIiwiY2IiLCJ1bmZpbHRlcmVkIiwiZGF0YSIsImluZGV4T2YiLCJjbGVhckludGVydmFsIiwiY2xvc2UiLCJzZXRUaW1lb3V0IiwiZm4iLCJwdXNoIl0sIm1hcHBpbmdzIjoiO0FBQWE7O0FBQUFBLGtCQUFBLEdBQW1CLElBQW5CO0FBQXdCQSwwQkFBQSxHQUEyQkMsa0JBQTNCO0FBQThDRCw2QkFBQSxHQUE4QkUscUJBQTlCO0FBQW9ELElBQU1DLGNBQWMsR0FBQyxFQUFyQjs7QUFBd0IsU0FBU0Msa0JBQVQsQ0FBNEJDLE9BQTVCLEVBQW9DO0FBQUMsTUFBSUMsTUFBSjtBQUFXLE1BQUlDLFlBQVksR0FBQyxJQUFJQyxJQUFKLEVBQWpCO0FBQTRCLE1BQUlDLFNBQVMsR0FBQyxFQUFkOztBQUFpQixNQUFHLENBQUNKLE9BQU8sQ0FBQ0ssT0FBWixFQUFvQjtBQUFDTCxXQUFPLENBQUNLLE9BQVIsR0FBZ0IsS0FBRyxJQUFuQjtBQUF5Qjs7QUFBQUMsTUFBSTtBQUFHLE1BQUlDLEtBQUssR0FBQ0MsV0FBVyxDQUFDLFlBQVU7QUFBQyxRQUFHLElBQUlMLElBQUosS0FBV0QsWUFBWCxHQUF3QkYsT0FBTyxDQUFDSyxPQUFuQyxFQUEyQztBQUFDSSxzQkFBZ0I7QUFBSTtBQUFDLEdBQTdFLEVBQThFVCxPQUFPLENBQUNLLE9BQVIsR0FBZ0IsQ0FBOUYsQ0FBckI7O0FBQXNILFdBQVNDLElBQVQsR0FBZTtBQUFDTCxVQUFNLEdBQUMsSUFBSVMsTUFBTSxDQUFDQyxXQUFYLENBQXVCWCxPQUFPLENBQUNZLElBQS9CLENBQVA7QUFBNENYLFVBQU0sQ0FBQ1ksTUFBUCxHQUFjQyxZQUFkO0FBQTJCYixVQUFNLENBQUNjLE9BQVAsR0FBZU4sZ0JBQWY7QUFBZ0NSLFVBQU0sQ0FBQ2UsU0FBUCxHQUFpQkMsYUFBakI7QUFBZ0M7O0FBQUEsV0FBU0gsWUFBVCxHQUF1QjtBQUFDLFFBQUdkLE9BQU8sQ0FBQ2tCLEdBQVgsRUFBZUMsT0FBTyxDQUFDRCxHQUFSLENBQVksaUJBQVo7QUFBK0JoQixnQkFBWSxHQUFDLElBQUlDLElBQUosRUFBYjtBQUF5Qjs7QUFBQSxXQUFTYyxhQUFULENBQXVCRyxLQUF2QixFQUE2QjtBQUFDbEIsZ0JBQVksR0FBQyxJQUFJQyxJQUFKLEVBQWI7O0FBQXdCLFNBQUksSUFBSWtCLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQ2pCLFNBQVMsQ0FBQ2tCLE1BQXhCLEVBQStCRCxDQUFDLEVBQWhDLEVBQW1DO0FBQUNqQixlQUFTLENBQUNpQixDQUFELENBQVQsQ0FBYUQsS0FBYjtBQUFxQjs7QUFBQXRCLGtCQUFjLENBQUN5QixPQUFmLENBQXVCLFVBQUFDLEVBQUUsRUFBRTtBQUFDLFVBQUcsQ0FBQ0EsRUFBRSxDQUFDQyxVQUFKLElBQWdCTCxLQUFLLENBQUNNLElBQU4sQ0FBV0MsT0FBWCxDQUFtQixRQUFuQixNQUErQixDQUFDLENBQW5ELEVBQXFEO0FBQU9ILFFBQUUsQ0FBQ0osS0FBRCxDQUFGO0FBQVcsS0FBbkc7QUFBc0c7O0FBQUEsV0FBU1gsZ0JBQVQsR0FBMkI7QUFBQ21CLGlCQUFhLENBQUNyQixLQUFELENBQWI7QUFBcUJOLFVBQU0sQ0FBQzRCLEtBQVA7QUFBZUMsY0FBVSxDQUFDeEIsSUFBRCxFQUFNTixPQUFPLENBQUNLLE9BQWQsQ0FBVjtBQUFrQzs7QUFBQSxTQUFNO0FBQUN3QixTQUFLLEVBQUMsaUJBQUk7QUFBQ0QsbUJBQWEsQ0FBQ3JCLEtBQUQsQ0FBYjtBQUFxQk4sWUFBTSxDQUFDNEIsS0FBUDtBQUFnQixLQUFqRDtBQUFrRGpDLHNCQUFrQixFQUFDLDRCQUFTbUMsRUFBVCxFQUFZO0FBQUMzQixlQUFTLENBQUM0QixJQUFWLENBQWVELEVBQWY7QUFBb0I7QUFBdEcsR0FBTjtBQUErRzs7S0FBMzVCaEMsa0I7O0FBQTI1QixTQUFTSCxrQkFBVCxDQUE0QjRCLEVBQTVCLEVBQStCO0FBQUMxQixnQkFBYyxDQUFDa0MsSUFBZixDQUFvQlIsRUFBcEI7QUFBeUI7O0FBQUEsU0FBUzNCLHFCQUFULENBQStCRyxPQUEvQixFQUF1QztBQUFDLFNBQU9ELGtCQUFrQixDQUFDQyxPQUFELENBQXpCO0FBQW9DIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2Vycm9yLW92ZXJsYXkvZXZlbnRzb3VyY2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtleHBvcnRzLl9fZXNNb2R1bGU9dHJ1ZTtleHBvcnRzLmFkZE1lc3NhZ2VMaXN0ZW5lcj1hZGRNZXNzYWdlTGlzdGVuZXI7ZXhwb3J0cy5nZXRFdmVudFNvdXJjZVdyYXBwZXI9Z2V0RXZlbnRTb3VyY2VXcmFwcGVyO2NvbnN0IGV2ZW50Q2FsbGJhY2tzPVtdO2Z1bmN0aW9uIEV2ZW50U291cmNlV3JhcHBlcihvcHRpb25zKXt2YXIgc291cmNlO3ZhciBsYXN0QWN0aXZpdHk9bmV3IERhdGUoKTt2YXIgbGlzdGVuZXJzPVtdO2lmKCFvcHRpb25zLnRpbWVvdXQpe29wdGlvbnMudGltZW91dD0yMCoxMDAwO31pbml0KCk7dmFyIHRpbWVyPXNldEludGVydmFsKGZ1bmN0aW9uKCl7aWYobmV3IERhdGUoKS1sYXN0QWN0aXZpdHk+b3B0aW9ucy50aW1lb3V0KXtoYW5kbGVEaXNjb25uZWN0KCk7fX0sb3B0aW9ucy50aW1lb3V0LzIpO2Z1bmN0aW9uIGluaXQoKXtzb3VyY2U9bmV3IHdpbmRvdy5FdmVudFNvdXJjZShvcHRpb25zLnBhdGgpO3NvdXJjZS5vbm9wZW49aGFuZGxlT25saW5lO3NvdXJjZS5vbmVycm9yPWhhbmRsZURpc2Nvbm5lY3Q7c291cmNlLm9ubWVzc2FnZT1oYW5kbGVNZXNzYWdlO31mdW5jdGlvbiBoYW5kbGVPbmxpbmUoKXtpZihvcHRpb25zLmxvZyljb25zb2xlLmxvZygnW0hNUl0gY29ubmVjdGVkJyk7bGFzdEFjdGl2aXR5PW5ldyBEYXRlKCk7fWZ1bmN0aW9uIGhhbmRsZU1lc3NhZ2UoZXZlbnQpe2xhc3RBY3Rpdml0eT1uZXcgRGF0ZSgpO2Zvcih2YXIgaT0wO2k8bGlzdGVuZXJzLmxlbmd0aDtpKyspe2xpc3RlbmVyc1tpXShldmVudCk7fWV2ZW50Q2FsbGJhY2tzLmZvckVhY2goY2I9PntpZighY2IudW5maWx0ZXJlZCYmZXZlbnQuZGF0YS5pbmRleE9mKCdhY3Rpb24nKT09PS0xKXJldHVybjtjYihldmVudCk7fSk7fWZ1bmN0aW9uIGhhbmRsZURpc2Nvbm5lY3QoKXtjbGVhckludGVydmFsKHRpbWVyKTtzb3VyY2UuY2xvc2UoKTtzZXRUaW1lb3V0KGluaXQsb3B0aW9ucy50aW1lb3V0KTt9cmV0dXJue2Nsb3NlOigpPT57Y2xlYXJJbnRlcnZhbCh0aW1lcik7c291cmNlLmNsb3NlKCk7fSxhZGRNZXNzYWdlTGlzdGVuZXI6ZnVuY3Rpb24oZm4pe2xpc3RlbmVycy5wdXNoKGZuKTt9fTt9ZnVuY3Rpb24gYWRkTWVzc2FnZUxpc3RlbmVyKGNiKXtldmVudENhbGxiYWNrcy5wdXNoKGNiKTt9ZnVuY3Rpb24gZ2V0RXZlbnRTb3VyY2VXcmFwcGVyKG9wdGlvbnMpe3JldHVybiBFdmVudFNvdXJjZVdyYXBwZXIob3B0aW9ucyk7fVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXZlbnRzb3VyY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/error-overlay/eventsource.js\n");
/***/ }),
/***/ "./node_modules/next/dist/client/dev/event-source-polyfill.js":
/*!********************************************************************!*\
!*** ./node_modules/next/dist/client/dev/event-source-polyfill.js ***!
\********************************************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/* module decorator */ module = __webpack_require__.nmd(module);\n\n\nexports.__esModule = true;\nexports.default = void 0;\n/* eslint-disable */\n// Improved version of https://github.com/Yaffle/EventSource/\n// Available under MIT License (MIT)\n// Only tries to support IE11 and nothing below\n\nvar document = window.document;\nvar Response = window.Response;\nvar TextDecoder = window.TextDecoder;\nvar TextEncoder = window.TextEncoder;\nvar AbortController = window.AbortController;\n\nif (AbortController == undefined) {\n AbortController = function AbortController() {\n this.signal = null;\n\n this.abort = function () {};\n };\n}\n\nfunction TextDecoderPolyfill() {\n this.bitsNeeded = 0;\n this.codePoint = 0;\n}\n\n_c = TextDecoderPolyfill;\n\nTextDecoderPolyfill.prototype.decode = function (octets) {\n function valid(codePoint, shift, octetsCount) {\n if (octetsCount === 1) {\n return codePoint >= 0x0080 >> shift && codePoint << shift <= 0x07ff;\n }\n\n if (octetsCount === 2) {\n return codePoint >= 0x0800 >> shift && codePoint << shift <= 0xd7ff || codePoint >= 0xe000 >> shift && codePoint << shift <= 0xffff;\n }\n\n if (octetsCount === 3) {\n return codePoint >= 0x010000 >> shift && codePoint << shift <= 0x10ffff;\n }\n\n throw new Error();\n }\n\n function octetsCount(bitsNeeded, codePoint) {\n if (bitsNeeded === 6 * 1) {\n return codePoint >> 6 > 15 ? 3 : codePoint > 31 ? 2 : 1;\n }\n\n if (bitsNeeded === 6 * 2) {\n return codePoint > 15 ? 3 : 2;\n }\n\n if (bitsNeeded === 6 * 3) {\n return 3;\n }\n\n throw new Error();\n }\n\n var REPLACER = 0xfffd;\n var string = '';\n var bitsNeeded = this.bitsNeeded;\n var codePoint = this.codePoint;\n\n for (var i = 0; i < octets.length; i += 1) {\n var octet = octets[i];\n\n if (bitsNeeded !== 0) {\n if (octet < 128 || octet > 191 || !valid(codePoint << 6 | octet & 63, bitsNeeded - 6, octetsCount(bitsNeeded, codePoint))) {\n bitsNeeded = 0;\n codePoint = REPLACER;\n string += String.fromCharCode(codePoint);\n }\n }\n\n if (bitsNeeded === 0) {\n if (octet >= 0 && octet <= 127) {\n bitsNeeded = 0;\n codePoint = octet;\n } else if (octet >= 192 && octet <= 223) {\n bitsNeeded = 6 * 1;\n codePoint = octet & 31;\n } else if (octet >= 224 && octet <= 239) {\n bitsNeeded = 6 * 2;\n codePoint = octet & 15;\n } else if (octet >= 240 && octet <= 247) {\n bitsNeeded = 6 * 3;\n codePoint = octet & 7;\n } else {\n bitsNeeded = 0;\n codePoint = REPLACER;\n }\n\n if (bitsNeeded !== 0 && !valid(codePoint, bitsNeeded, octetsCount(bitsNeeded, codePoint))) {\n bitsNeeded = 0;\n codePoint = REPLACER;\n }\n } else {\n bitsNeeded -= 6;\n codePoint = codePoint << 6 | octet & 63;\n }\n\n if (bitsNeeded === 0) {\n if (codePoint <= 0xffff) {\n string += String.fromCharCode(codePoint);\n } else {\n string += String.fromCharCode(0xd800 + (codePoint - 0xffff - 1 >> 10));\n string += String.fromCharCode(0xdc00 + (codePoint - 0xffff - 1 & 0x3ff));\n }\n }\n }\n\n this.bitsNeeded = bitsNeeded;\n this.codePoint = codePoint;\n return string;\n}; // Firefox < 38 throws an error with stream option\n\n\nvar supportsStreamOption = function supportsStreamOption() {\n try {\n return new TextDecoder().decode(new TextEncoder().encode('test'), {\n stream: true\n }) === 'test';\n } catch (error) {\n console.log(error);\n }\n\n return false;\n}; // IE, Edge\n\n\nif (TextDecoder == undefined || TextEncoder == undefined || !supportsStreamOption()) {\n TextDecoder = TextDecoderPolyfill;\n}\n\nvar k = function k() {};\n\nfunction XHRWrapper(xhr) {\n this.withCredentials = false;\n this.responseType = '';\n this.readyState = 0;\n this.status = 0;\n this.statusText = '';\n this.responseText = '';\n this.onprogress = k;\n this.onreadystatechange = k;\n this._contentType = '';\n this._xhr = xhr;\n this._sendTimeout = 0;\n this._abort = k;\n}\n\n_c2 = XHRWrapper;\n\nXHRWrapper.prototype.open = function (method, url) {\n this._abort(true);\n\n var that = this;\n var xhr = this._xhr;\n var state = 1;\n var timeout = 0;\n\n this._abort = function (silent) {\n if (that._sendTimeout !== 0) {\n clearTimeout(that._sendTimeout);\n that._sendTimeout = 0;\n }\n\n if (state === 1 || state === 2 || state === 3) {\n state = 4;\n xhr.onload = k;\n xhr.onerror = k;\n xhr.onabort = k;\n xhr.onprogress = k;\n xhr.onreadystatechange = k; // IE 8 - 9: XDomainRequest#abort() does not fire any event\n // Opera < 10: XMLHttpRequest#abort() does not fire any event\n\n xhr.abort();\n\n if (timeout !== 0) {\n clearTimeout(timeout);\n timeout = 0;\n }\n\n if (!silent) {\n that.readyState = 4;\n that.onreadystatechange();\n }\n }\n\n state = 0;\n };\n\n var onStart = function onStart() {\n if (state === 1) {\n // state = 2;\n var status = 0;\n var statusText = '';\n var contentType = undefined;\n\n if (!('contentType' in xhr)) {\n try {\n status = xhr.status;\n statusText = xhr.statusText;\n contentType = xhr.getResponseHeader('Content-Type');\n } catch (error) {\n // IE < 10 throws exception for `xhr.status` when xhr.readyState === 2 || xhr.readyState === 3\n // Opera < 11 throws exception for `xhr.status` when xhr.readyState === 2\n // https://bugs.webkit.org/show_bug.cgi?id=29121\n status = 0;\n statusText = '';\n contentType = undefined; // Firefox < 14, Chrome ?, Safari ?\n // https://bugs.webkit.org/show_bug.cgi?id=29658\n // https://bugs.webkit.org/show_bug.cgi?id=77854\n }\n } else {\n status = 200;\n statusText = 'OK';\n contentType = xhr.contentType;\n }\n\n if (status !== 0) {\n state = 2;\n that.readyState = 2;\n that.status = status;\n that.statusText = statusText;\n that._contentType = contentType;\n that.onreadystatechange();\n }\n }\n };\n\n var onProgress = function onProgress() {\n onStart();\n\n if (state === 2 || state === 3) {\n state = 3;\n var responseText = '';\n\n try {\n responseText = xhr.responseText;\n } catch (error) {// IE 8 - 9 with XMLHttpRequest\n }\n\n that.readyState = 3;\n that.responseText = responseText;\n that.onprogress();\n }\n };\n\n var onFinish = function onFinish() {\n // Firefox 52 fires \"readystatechange\" (xhr.readyState === 4) without final \"readystatechange\" (xhr.readyState === 3)\n // IE 8 fires \"onload\" without \"onprogress\"\n onProgress();\n\n if (state === 1 || state === 2 || state === 3) {\n state = 4;\n\n if (timeout !== 0) {\n clearTimeout(timeout);\n timeout = 0;\n }\n\n that.readyState = 4;\n that.onreadystatechange();\n }\n };\n\n var onReadyStateChange = function onReadyStateChange() {\n if (xhr != undefined) {\n // Opera 12\n if (xhr.readyState === 4) {\n onFinish();\n } else if (xhr.readyState === 3) {\n onProgress();\n } else if (xhr.readyState === 2) {\n onStart();\n }\n }\n };\n\n var onTimeout = function onTimeout() {\n timeout = setTimeout(function () {\n onTimeout();\n }, 500);\n\n if (xhr.readyState === 3) {\n onProgress();\n }\n }; // XDomainRequest#abort removes onprogress, onerror, onload\n\n\n xhr.onload = onFinish;\n xhr.onerror = onFinish; // improper fix to match Firefox behavior, but it is better than just ignore abort\n // see https://bugzilla.mozilla.org/show_bug.cgi?id=768596\n // https://bugzilla.mozilla.org/show_bug.cgi?id=880200\n // https://code.google.com/p/chromium/issues/detail?id=153570\n // IE 8 fires \"onload\" without \"onprogress\n\n xhr.onabort = onFinish; // https://bugzilla.mozilla.org/show_bug.cgi?id=736723\n\n if (!('sendAsBinary' in XMLHttpRequest.prototype) && !('mozAnon' in XMLHttpRequest.prototype)) {\n xhr.onprogress = onProgress;\n } // IE 8 - 9 (XMLHTTPRequest)\n // Opera < 12\n // Firefox < 3.5\n // Firefox 3.5 - 3.6 - ? < 9.0\n // onprogress is not fired sometimes or delayed\n // see also #64\n\n\n xhr.onreadystatechange = onReadyStateChange;\n\n if ('contentType' in xhr) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + 'padding=true';\n }\n\n xhr.open(method, url, true);\n\n if ('readyState' in xhr) {\n // workaround for Opera 12 issue with \"progress\" events\n // #91\n timeout = setTimeout(function () {\n onTimeout();\n }, 0);\n }\n};\n\nXHRWrapper.prototype.abort = function () {\n this._abort(false);\n};\n\nXHRWrapper.prototype.getResponseHeader = function (name) {\n return this._contentType;\n};\n\nXHRWrapper.prototype.setRequestHeader = function (name, value) {\n var xhr = this._xhr;\n\n if ('setRequestHeader' in xhr) {\n xhr.setRequestHeader(name, value);\n }\n};\n\nXHRWrapper.prototype.getAllResponseHeaders = function () {\n return this._xhr.getAllResponseHeaders != undefined ? this._xhr.getAllResponseHeaders() : '';\n};\n\nXHRWrapper.prototype.send = function () {\n // loading indicator in Safari < ? (6), Chrome < 14, Firefox\n if (!('ontimeout' in XMLHttpRequest.prototype) && document != undefined && document.readyState != undefined && document.readyState !== 'complete') {\n var that = this;\n that._sendTimeout = setTimeout(function () {\n that._sendTimeout = 0;\n that.send();\n }, 4);\n return;\n }\n\n var xhr = this._xhr; // withCredentials should be set after \"open\" for Safari and Chrome (< 19 ?)\n\n xhr.withCredentials = this.withCredentials;\n xhr.responseType = this.responseType;\n\n try {\n // xhr.send(); throws \"Not enough arguments\" in Firefox 3.0\n xhr.send(undefined);\n } catch (error1) {\n // Safari 5.1.7, Opera 12\n throw error1;\n }\n};\n\nfunction toLowerCase(name) {\n return name.replace(/[A-Z]/g, function (c) {\n return String.fromCharCode(c.charCodeAt(0) + 0x20);\n });\n}\n\nfunction HeadersPolyfill(all) {\n // Get headers: implemented according to mozilla's example code: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders#Example\n var map = Object.create(null);\n var array = all.split('\\r\\n');\n\n for (var i = 0; i < array.length; i += 1) {\n var line = array[i];\n var parts = line.split(': ');\n var name = parts.shift();\n var value = parts.join(': ');\n map[toLowerCase(name)] = value;\n }\n\n this._map = map;\n}\n\n_c3 = HeadersPolyfill;\n\nHeadersPolyfill.prototype.get = function (name) {\n return this._map[toLowerCase(name)];\n};\n\nfunction XHRTransport() {}\n\n_c4 = XHRTransport;\n\nXHRTransport.prototype.open = function (xhr, onStartCallback, onProgressCallback, onFinishCallback, url, withCredentials, headers) {\n xhr.open('GET', url);\n var offset = 0;\n\n xhr.onprogress = function () {\n var responseText = xhr.responseText;\n var chunk = responseText.slice(offset);\n offset += chunk.length;\n onProgressCallback(chunk);\n };\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 2) {\n var status = xhr.status;\n var statusText = xhr.statusText;\n var contentType = xhr.getResponseHeader('Content-Type');\n var headers = xhr.getAllResponseHeaders();\n onStartCallback(status, statusText, contentType, new HeadersPolyfill(headers), function () {\n xhr.abort();\n });\n } else if (xhr.readyState === 4) {\n onFinishCallback();\n }\n };\n\n xhr.withCredentials = withCredentials;\n xhr.responseType = 'text';\n\n for (var name in headers) {\n if (Object.prototype.hasOwnProperty.call(headers, name)) {\n xhr.setRequestHeader(name, headers[name]);\n }\n }\n\n xhr.send();\n};\n\nfunction HeadersWrapper(headers) {\n this._headers = headers;\n}\n\n_c5 = HeadersWrapper;\n\nHeadersWrapper.prototype.get = function (name) {\n return this._headers.get(name);\n};\n\nfunction FetchTransport() {}\n\n_c6 = FetchTransport;\n\nFetchTransport.prototype.open = function (xhr, onStartCallback, onProgressCallback, onFinishCallback, url, withCredentials, headers) {\n var controller = new AbortController();\n var signal = controller.signal; // see #120\n\n var textDecoder = new TextDecoder();\n fetch(url, {\n headers: headers,\n credentials: withCredentials ? 'include' : 'same-origin',\n signal: signal,\n cache: 'no-store'\n }).then(function (response) {\n var reader = response.body.getReader();\n onStartCallback(response.status, response.statusText, response.headers.get('Content-Type'), new HeadersWrapper(response.headers), function () {\n controller.abort();\n reader.cancel();\n });\n return new Promise(function (resolve, reject) {\n var readNextChunk = function readNextChunk() {\n reader.read().then(function (result) {\n if (result.done) {\n // Note: bytes in textDecoder are ignored\n resolve(undefined);\n } else {\n var chunk = textDecoder.decode(result.value, {\n stream: true\n });\n onProgressCallback(chunk);\n readNextChunk();\n }\n })['catch'](function (error) {\n reject(error);\n });\n };\n\n readNextChunk();\n });\n }).then(function (result) {\n onFinishCallback();\n return result;\n }, function (error) {\n onFinishCallback();\n return Promise.reject(error);\n });\n};\n\nfunction EventTarget() {\n this._listeners = Object.create(null);\n}\n\n_c7 = EventTarget;\n\nfunction throwError(e) {\n setTimeout(function () {\n throw e;\n }, 0);\n}\n\nEventTarget.prototype.dispatchEvent = function (event) {\n event.target = this;\n var typeListeners = this._listeners[event.type];\n\n if (typeListeners != undefined) {\n var length = typeListeners.length;\n\n for (var i = 0; i < length; i += 1) {\n var listener = typeListeners[i];\n\n try {\n if (typeof listener.handleEvent === 'function') {\n listener.handleEvent(event);\n } else {\n listener.call(this, event);\n }\n } catch (e) {\n throwError(e);\n }\n }\n }\n};\n\nEventTarget.prototype.addEventListener = function (type, listener) {\n type = String(type);\n var listeners = this._listeners;\n var typeListeners = listeners[type];\n\n if (typeListeners == undefined) {\n typeListeners = [];\n listeners[type] = typeListeners;\n }\n\n var found = false;\n\n for (var i = 0; i < typeListeners.length; i += 1) {\n if (typeListeners[i] === listener) {\n found = true;\n }\n }\n\n if (!found) {\n typeListeners.push(listener);\n }\n};\n\nEventTarget.prototype.removeEventListener = function (type, listener) {\n type = String(type);\n var listeners = this._listeners;\n var typeListeners = listeners[type];\n\n if (typeListeners != undefined) {\n var filtered = [];\n\n for (var i = 0; i < typeListeners.length; i += 1) {\n if (typeListeners[i] !== listener) {\n filtered.push(typeListeners[i]);\n }\n }\n\n if (filtered.length === 0) {\n delete listeners[type];\n } else {\n listeners[type] = filtered;\n }\n }\n};\n\nfunction Event(type) {\n this.type = type;\n this.target = undefined;\n}\n\n_c8 = Event;\n\nfunction MessageEvent(type, options) {\n Event.call(this, type);\n this.data = options.data;\n this.lastEventId = options.lastEventId;\n}\n\n_c9 = MessageEvent;\nMessageEvent.prototype = Object.create(Event.prototype);\n\nfunction ConnectionEvent(type, options) {\n Event.call(this, type);\n this.status = options.status;\n this.statusText = options.statusText;\n this.headers = options.headers;\n}\n\n_c10 = ConnectionEvent;\nConnectionEvent.prototype = Object.create(Event.prototype);\nvar WAITING = -1;\nvar CONNECTING = 0;\nvar OPEN = 1;\nvar CLOSED = 2;\nvar AFTER_CR = -1;\nvar FIELD_START = 0;\nvar FIELD = 1;\nvar VALUE_START = 2;\nvar VALUE = 3;\nvar contentTypeRegExp = /^text\\/event\\-stream;?(\\s*charset\\=utf\\-8)?$/i;\nvar MINIMUM_DURATION = 1000;\nvar MAXIMUM_DURATION = 18000000;\n\nvar parseDuration = function parseDuration(value, def) {\n var n = parseInt(value, 10);\n\n if (n !== n) {\n n = def;\n }\n\n return clampDuration(n);\n};\n\nvar clampDuration = function clampDuration(n) {\n return Math.min(Math.max(n, MINIMUM_DURATION), MAXIMUM_DURATION);\n};\n\nvar fire = function fire(that, f, event) {\n try {\n if (typeof f === 'function') {\n f.call(that, event);\n }\n } catch (e) {\n throwError(e);\n }\n};\n\nfunction EventSourcePolyfill(url, options) {\n EventTarget.call(this);\n this.onopen = undefined;\n this.onmessage = undefined;\n this.onerror = undefined;\n this.url = undefined;\n this.readyState = undefined;\n this.withCredentials = undefined;\n this._close = undefined;\n start(this, url, options);\n}\n\n_c11 = EventSourcePolyfill;\nvar isFetchSupported = fetch != undefined && Response != undefined && 'body' in Response.prototype;\n\nfunction start(es, url, options) {\n url = String(url);\n var withCredentials = options != undefined && Boolean(options.withCredentials);\n var initialRetry = clampDuration(1000);\n var heartbeatTimeout = options != undefined && options.heartbeatTimeout != undefined ? parseDuration(options.heartbeatTimeout, 45000) : clampDuration(45000);\n var lastEventId = '';\n var retry = initialRetry;\n var wasActivity = false;\n var headers = options != undefined && options.headers != undefined ? JSON.parse(JSON.stringify(options.headers)) : undefined;\n var CurrentTransport = options != undefined && options.Transport != undefined ? options.Transport : XMLHttpRequest;\n var xhr = isFetchSupported && !(options != undefined && options.Transport != undefined) ? undefined : new XHRWrapper(new CurrentTransport());\n var transport = xhr == undefined ? new FetchTransport() : new XHRTransport();\n var cancelFunction = undefined;\n var timeout = 0;\n var currentState = WAITING;\n var dataBuffer = '';\n var lastEventIdBuffer = '';\n var eventTypeBuffer = '';\n var textBuffer = '';\n var state = FIELD_START;\n var fieldStart = 0;\n var valueStart = 0;\n\n var onStart = function onStart(status, statusText, contentType, headers, cancel) {\n if (currentState === CONNECTING) {\n cancelFunction = cancel;\n\n if (status === 200 && contentType != undefined && contentTypeRegExp.test(contentType)) {\n currentState = OPEN;\n wasActivity = true;\n retry = initialRetry;\n es.readyState = OPEN;\n var event = new ConnectionEvent('open', {\n status: status,\n statusText: statusText,\n headers: headers\n });\n es.dispatchEvent(event);\n fire(es, es.onopen, event);\n } else {\n var message = '';\n\n if (status !== 200) {\n if (statusText) {\n statusText = statusText.replace(/\\s+/g, ' ');\n }\n\n message = \"EventSource's response has a status \" + status + ' ' + statusText + ' that is not 200. Aborting the connection.';\n } else {\n message = \"EventSource's response has a Content-Type specifying an unsupported type: \" + (contentType == undefined ? '-' : contentType.replace(/\\s+/g, ' ')) + '. Aborting the connection.';\n }\n\n throwError(new Error(message));\n close();\n var event = new ConnectionEvent('error', {\n status: status,\n statusText: statusText,\n headers: headers\n });\n es.dispatchEvent(event);\n fire(es, es.onerror, event);\n }\n }\n };\n\n var onProgress = function onProgress(textChunk) {\n if (currentState === OPEN) {\n var n = -1;\n\n for (var i = 0; i < textChunk.length; i += 1) {\n var c = textChunk.charCodeAt(i);\n\n if (c === '\\n'.charCodeAt(0) || c === '\\r'.charCodeAt(0)) {\n n = i;\n }\n }\n\n var chunk = (n !== -1 ? textBuffer : '') + textChunk.slice(0, n + 1);\n textBuffer = (n === -1 ? textBuffer : '') + textChunk.slice(n + 1);\n\n if (chunk !== '') {\n wasActivity = true;\n }\n\n for (var position = 0; position < chunk.length; position += 1) {\n var c = chunk.charCodeAt(position);\n\n if (state === AFTER_CR && c === '\\n'.charCodeAt(0)) {\n state = FIELD_START;\n } else {\n if (state === AFTER_CR) {\n state = FIELD_START;\n }\n\n if (c === '\\r'.charCodeAt(0) || c === '\\n'.charCodeAt(0)) {\n if (state !== FIELD_START) {\n if (state === FIELD) {\n valueStart = position + 1;\n }\n\n var field = chunk.slice(fieldStart, valueStart - 1);\n var value = chunk.slice(valueStart + (valueStart < position && chunk.charCodeAt(valueStart) === ' '.charCodeAt(0) ? 1 : 0), position);\n\n if (field === 'data') {\n dataBuffer += '\\n';\n dataBuffer += value;\n } else if (field === 'id') {\n lastEventIdBuffer = value;\n } else if (field === 'event') {\n eventTypeBuffer = value;\n } else if (field === 'retry') {\n initialRetry = parseDuration(value, initialRetry);\n retry = initialRetry;\n } else if (field === 'heartbeatTimeout') {\n heartbeatTimeout = parseDuration(value, heartbeatTimeout);\n\n if (timeout !== 0) {\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n onTimeout();\n }, heartbeatTimeout);\n }\n }\n }\n\n if (state === FIELD_START) {\n if (dataBuffer !== '') {\n lastEventId = lastEventIdBuffer;\n\n if (eventTypeBuffer === '') {\n eventTypeBuffer = 'message';\n }\n\n var event = new MessageEvent(eventTypeBuffer, {\n data: dataBuffer.slice(1),\n lastEventId: lastEventIdBuffer\n });\n es.dispatchEvent(event);\n\n if (eventTypeBuffer === 'message') {\n fire(es, es.onmessage, event);\n }\n\n if (currentState === CLOSED) {\n return;\n }\n }\n\n dataBuffer = '';\n eventTypeBuffer = '';\n }\n\n state = c === '\\r'.charCodeAt(0) ? AFTER_CR : FIELD_START;\n } else {\n if (state === FIELD_START) {\n fieldStart = position;\n state = FIELD;\n }\n\n if (state === FIELD) {\n if (c === ':'.charCodeAt(0)) {\n valueStart = position + 1;\n state = VALUE_START;\n }\n } else if (state === VALUE_START) {\n state = VALUE;\n }\n }\n }\n }\n }\n };\n\n var onFinish = function onFinish() {\n if (currentState === OPEN || currentState === CONNECTING) {\n currentState = WAITING;\n\n if (timeout !== 0) {\n clearTimeout(timeout);\n timeout = 0;\n }\n\n timeout = setTimeout(function () {\n onTimeout();\n }, retry);\n retry = clampDuration(Math.min(initialRetry * 16, retry * 2));\n es.readyState = CONNECTING;\n var event = new Event('error');\n es.dispatchEvent(event);\n fire(es, es.onerror, event);\n }\n };\n\n var close = function close() {\n currentState = CLOSED;\n\n if (cancelFunction != undefined) {\n cancelFunction();\n cancelFunction = undefined;\n }\n\n if (timeout !== 0) {\n clearTimeout(timeout);\n timeout = 0;\n }\n\n es.readyState = CLOSED;\n };\n\n var onTimeout = function onTimeout() {\n timeout = 0;\n\n if (currentState !== WAITING) {\n if (!wasActivity && cancelFunction != undefined) {\n throwError(new Error('No activity within ' + heartbeatTimeout + ' milliseconds. Reconnecting.'));\n cancelFunction();\n cancelFunction = undefined;\n } else {\n wasActivity = false;\n timeout = setTimeout(function () {\n onTimeout();\n }, heartbeatTimeout);\n }\n\n return;\n }\n\n wasActivity = false;\n timeout = setTimeout(function () {\n onTimeout();\n }, heartbeatTimeout);\n currentState = CONNECTING;\n dataBuffer = '';\n eventTypeBuffer = '';\n lastEventIdBuffer = lastEventId;\n textBuffer = '';\n fieldStart = 0;\n valueStart = 0;\n state = FIELD_START; // https://bugzilla.mozilla.org/show_bug.cgi?id=428916\n // Request header field Last-Event-ID is not allowed by Access-Control-Allow-Headers.\n\n var requestURL = url;\n\n if (url.slice(0, 5) !== 'data:' && url.slice(0, 5) !== 'blob:') {\n if (lastEventId !== '') {\n requestURL += (url.indexOf('?') === -1 ? '?' : '&') + 'lastEventId=' + encodeURIComponent(lastEventId);\n }\n }\n\n var requestHeaders = {};\n requestHeaders['Accept'] = 'text/event-stream';\n\n if (headers != undefined) {\n for (var name in headers) {\n if (Object.prototype.hasOwnProperty.call(headers, name)) {\n requestHeaders[name] = headers[name];\n }\n }\n }\n\n try {\n transport.open(xhr, onStart, onProgress, onFinish, requestURL, withCredentials, requestHeaders);\n } catch (error) {\n close();\n throw error;\n }\n };\n\n es.url = url;\n es.readyState = CONNECTING;\n es.withCredentials = withCredentials;\n es._close = close;\n onTimeout();\n}\n\nEventSourcePolyfill.prototype = Object.create(EventTarget.prototype);\nEventSourcePolyfill.prototype.CONNECTING = CONNECTING;\nEventSourcePolyfill.prototype.OPEN = OPEN;\nEventSourcePolyfill.prototype.CLOSED = CLOSED;\n\nEventSourcePolyfill.prototype.close = function () {\n this._close();\n};\n\nEventSourcePolyfill.CONNECTING = CONNECTING;\nEventSourcePolyfill.OPEN = OPEN;\nEventSourcePolyfill.CLOSED = CLOSED;\nEventSourcePolyfill.prototype.withCredentials = undefined;\nvar _default = EventSourcePolyfill;\nexports.default = _default;\n\nvar _c, _c2, _c3, _c4, _c5, _c6, _c7, _c8, _c9, _c10, _c11;\n\n$RefreshReg$(_c, \"TextDecoderPolyfill\");\n$RefreshReg$(_c2, \"XHRWrapper\");\n$RefreshReg$(_c3, \"HeadersPolyfill\");\n$RefreshReg$(_c4, \"XHRTransport\");\n$RefreshReg$(_c5, \"HeadersWrapper\");\n$RefreshReg$(_c6, \"FetchTransport\");\n$RefreshReg$(_c7, \"EventTarget\");\n$RefreshReg$(_c8, \"Event\");\n$RefreshReg$(_c9, \"MessageEvent\");\n$RefreshReg$(_c10, \"ConnectionEvent\");\n$RefreshReg$(_c11, \"EventSourcePolyfill\");\n\n;\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n var currentExports = module.__proto__.exports;\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2V2ZW50LXNvdXJjZS1wb2x5ZmlsbC5qcz9mZjUwIl0sIm5hbWVzIjpbImV4cG9ydHMiLCJkb2N1bWVudCIsIndpbmRvdyIsIlJlc3BvbnNlIiwiVGV4dERlY29kZXIiLCJUZXh0RW5jb2RlciIsIkFib3J0Q29udHJvbGxlciIsInVuZGVmaW5lZCIsInNpZ25hbCIsImFib3J0IiwiVGV4dERlY29kZXJQb2x5ZmlsbCIsImJpdHNOZWVkZWQiLCJjb2RlUG9pbnQiLCJwcm90b3R5cGUiLCJkZWNvZGUiLCJvY3RldHMiLCJ2YWxpZCIsInNoaWZ0Iiwib2N0ZXRzQ291bnQiLCJFcnJvciIsIlJFUExBQ0VSIiwic3RyaW5nIiwiaSIsImxlbmd0aCIsIm9jdGV0IiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwic3VwcG9ydHNTdHJlYW1PcHRpb24iLCJlbmNvZGUiLCJzdHJlYW0iLCJlcnJvciIsImNvbnNvbGUiLCJsb2ciLCJrIiwiWEhSV3JhcHBlciIsInhociIsIndpdGhDcmVkZW50aWFscyIsInJlc3BvbnNlVHlwZSIsInJlYWR5U3RhdGUiLCJzdGF0dXMiLCJzdGF0dXNUZXh0IiwicmVzcG9uc2VUZXh0Iiwib25wcm9ncmVzcyIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIl9jb250ZW50VHlwZSIsIl94aHIiLCJfc2VuZFRpbWVvdXQiLCJfYWJvcnQiLCJvcGVuIiwibWV0aG9kIiwidXJsIiwidGhhdCIsInN0YXRlIiwidGltZW91dCIsInNpbGVudCIsImNsZWFyVGltZW91dCIsIm9ubG9hZCIsIm9uZXJyb3IiLCJvbmFib3J0Iiwib25TdGFydCIsImNvbnRlbnRUeXBlIiwiZ2V0UmVzcG9uc2VIZWFkZXIiLCJvblByb2dyZXNzIiwib25GaW5pc2giLCJvblJlYWR5U3RhdGVDaGFuZ2UiLCJvblRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiWE1MSHR0cFJlcXVlc3QiLCJpbmRleE9mIiwibmFtZSIsInNldFJlcXVlc3RIZWFkZXIiLCJ2YWx1ZSIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInNlbmQiLCJlcnJvcjEiLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJjIiwiY2hhckNvZGVBdCIsIkhlYWRlcnNQb2x5ZmlsbCIsImFsbCIsIm1hcCIsIk9iamVjdCIsImNyZWF0ZSIsImFycmF5Iiwic3BsaXQiLCJsaW5lIiwicGFydHMiLCJqb2luIiwiX21hcCIsImdldCIsIlhIUlRyYW5zcG9ydCIsIm9uU3RhcnRDYWxsYmFjayIsIm9uUHJvZ3Jlc3NDYWxsYmFjayIsIm9uRmluaXNoQ2FsbGJhY2siLCJoZWFkZXJzIiwib2Zmc2V0IiwiY2h1bmsiLCJzbGljZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIkhlYWRlcnNXcmFwcGVyIiwiX2hlYWRlcnMiLCJGZXRjaFRyYW5zcG9ydCIsImNvbnRyb2xsZXIiLCJ0ZXh0RGVjb2RlciIsImZldGNoIiwiY3JlZGVudGlhbHMiLCJjYWNoZSIsInRoZW4iLCJyZXNwb25zZSIsInJlYWRlciIsImJvZHkiLCJnZXRSZWFkZXIiLCJjYW5jZWwiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlYWROZXh0Q2h1bmsiLCJyZWFkIiwicmVzdWx0IiwiZG9uZSIsIkV2ZW50VGFyZ2V0IiwiX2xpc3RlbmVycyIsInRocm93RXJyb3IiLCJlIiwiZGlzcGF0Y2hFdmVudCIsImV2ZW50IiwidGFyZ2V0IiwidHlwZUxpc3RlbmVycyIsInR5cGUiLCJsaXN0ZW5lciIsImhhbmRsZUV2ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImxpc3RlbmVycyIsImZvdW5kIiwicHVzaCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJmaWx0ZXJlZCIsIkV2ZW50IiwiTWVzc2FnZUV2ZW50Iiwib3B0aW9ucyIsImRhdGEiLCJsYXN0RXZlbnRJZCIsIkNvbm5lY3Rpb25FdmVudCIsIldBSVRJTkciLCJDT05ORUNUSU5HIiwiT1BFTiIsIkNMT1NFRCIsIkFGVEVSX0NSIiwiRklFTERfU1RBUlQiLCJGSUVMRCIsIlZBTFVFX1NUQVJUIiwiVkFMVUUiLCJjb250ZW50VHlwZVJlZ0V4cCIsIk1JTklNVU1fRFVSQVRJT04iLCJNQVhJTVVNX0RVUkFUSU9OIiwicGFyc2VEdXJhdGlvbiIsImRlZiIsIm4iLCJwYXJzZUludCIsImNsYW1wRHVyYXRpb24iLCJNYXRoIiwibWluIiwibWF4IiwiZmlyZSIsImYiLCJFdmVudFNvdXJjZVBvbHlmaWxsIiwib25vcGVuIiwib25tZXNzYWdlIiwiX2Nsb3NlIiwic3RhcnQiLCJpc0ZldGNoU3VwcG9ydGVkIiwiZXMiLCJCb29sZWFuIiwiaW5pdGlhbFJldHJ5IiwiaGVhcnRiZWF0VGltZW91dCIsInJldHJ5Iiwid2FzQWN0aXZpdHkiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJDdXJyZW50VHJhbnNwb3J0IiwiVHJhbnNwb3J0IiwidHJhbnNwb3J0IiwiY2FuY2VsRnVuY3Rpb24iLCJjdXJyZW50U3RhdGUiLCJkYXRhQnVmZmVyIiwibGFzdEV2ZW50SWRCdWZmZXIiLCJldmVudFR5cGVCdWZmZXIiLCJ0ZXh0QnVmZmVyIiwiZmllbGRTdGFydCIsInZhbHVlU3RhcnQiLCJ0ZXN0IiwibWVzc2FnZSIsImNsb3NlIiwidGV4dENodW5rIiwicG9zaXRpb24iLCJmaWVsZCIsInJlcXVlc3RVUkwiLCJlbmNvZGVVUklDb21wb25lbnQiLCJyZXF1ZXN0SGVhZGVycyIsIl9kZWZhdWx0Il0sIm1hcHBpbmdzIjoiO0FBQWE7O0FBQUFBLGtCQUFBLEdBQW1CLElBQW5CO0FBQXdCQSxlQUFBLEdBQWdCLEtBQUssQ0FBckI7QUFBdUI7QUFBcUI7QUFDakY7QUFDQTs7QUFDQSxJQUFJQyxRQUFRLEdBQUNDLE1BQU0sQ0FBQ0QsUUFBcEI7QUFBNkIsSUFBSUUsUUFBUSxHQUFDRCxNQUFNLENBQUNDLFFBQXBCO0FBQTZCLElBQUlDLFdBQVcsR0FBQ0YsTUFBTSxDQUFDRSxXQUF2QjtBQUFtQyxJQUFJQyxXQUFXLEdBQUNILE1BQU0sQ0FBQ0csV0FB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QUFLO0FBQUcsWUFBTXJLLEtBQU47QUFBYTtBQUFDLEdBRnNzTjs7QUFFcnNOK0ksSUFBRSxDQUFDM0gsR0FBSCxHQUFPQSxHQUFQO0FBQVcySCxJQUFFLENBQUN2SSxVQUFILEdBQWM0RyxVQUFkO0FBQXlCMkIsSUFBRSxDQUFDekksZUFBSCxHQUFtQkEsZUFBbkI7QUFBbUN5SSxJQUFFLENBQUNILE1BQUgsR0FBVXlCLEtBQVY7QUFBZ0JsSSxXQUFTO0FBQUk7O0FBQUFzRyxtQkFBbUIsQ0FBQzFKLFNBQXBCLEdBQThCcUUsTUFBTSxDQUFDQyxNQUFQLENBQWN1QyxXQUFXLENBQUM3RyxTQUExQixDQUE5QjtBQUFtRTBKLG1CQUFtQixDQUFDMUosU0FBcEIsQ0FBOEJxSSxVQUE5QixHQUF5Q0EsVUFBekM7QUFBb0RxQixtQkFBbUIsQ0FBQzFKLFNBQXBCLENBQThCc0ksSUFBOUIsR0FBbUNBLElBQW5DO0FBQXdDb0IsbUJBQW1CLENBQUMxSixTQUFwQixDQUE4QnVJLE1BQTlCLEdBQXFDQSxNQUFyQzs7QUFBNENtQixtQkFBbUIsQ0FBQzFKLFNBQXBCLENBQThCc0wsS0FBOUIsR0FBb0MsWUFBVTtBQUFDLE9BQUt6QixNQUFMO0FBQWUsQ0FBOUQ7O0FBQStESCxtQkFBbUIsQ0FBQ3JCLFVBQXBCLEdBQStCQSxVQUEvQjtBQUEwQ3FCLG1CQUFtQixDQUFDcEIsSUFBcEIsR0FBeUJBLElBQXpCO0FBQThCb0IsbUJBQW1CLENBQUNuQixNQUFwQixHQUEyQkEsTUFBM0I7QUFBa0NtQixtQkFBbUIsQ0FBQzFKLFNBQXBCLENBQThCdUIsZUFBOUIsR0FBOEM3QixTQUE5QztBQUF3RCxJQUFJbU0sUUFBUSxHQUFDbkMsbUJBQWI7QUFBaUN2SyxlQUFBLEdBQWdCME0sUUFBaEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZXZlbnQtc291cmNlLXBvbHlmaWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7ZXhwb3J0cy5fX2VzTW9kdWxlPXRydWU7ZXhwb3J0cy5kZWZhdWx0PXZvaWQgMDsvKiBlc2xpbnQtZGlzYWJsZSAqLyAvLyBJbXByb3ZlZCB2ZXJzaW9uIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9ZYWZmbGUvRXZlbnRTb3VyY2UvXG4vLyBBdmFpbGFibGUgdW5kZXIgTUlUIExpY2Vuc2UgKE1JVClcbi8vIE9ubHkgdHJpZXMgdG8gc3VwcG9ydCBJRTExIGFuZCBub3RoaW5nIGJlbG93XG52YXIgZG9jdW1lbnQ9d2luZG93LmRvY3VtZW50O3ZhciBSZXNwb25zZT13aW5kb3cuUmVzcG9uc2U7dmFyIFRleHREZWNvZGVyPXdpbmRvdy5UZXh0RGVjb2Rlcjt2YXIgVGV4dEVuY29kZXI9d2luZG93LlRleHRFbmNvZGVyO3ZhciBBYm9ydENvbnRyb2xsZXI9d2luZG93LkFib3J0Q29udHJvbGxlcjtpZihBYm9ydENvbnRyb2xsZXI9PXVuZGVmaW5lZCl7QWJvcnRDb250cm9sbGVyPWZ1bmN0aW9uKCl7dGhpcy5zaWduYWw9bnVsbDt0aGlzLmFib3J0PWZ1bmN0aW9uKCl7fTt9O31mdW5jdGlvbiBUZXh0RGVjb2RlclBvbHlmaWxsKCl7dGhpcy5iaXRzTmVlZGVkPTA7dGhpcy5jb2RlUG9pbnQ9MDt9VGV4dERlY29kZXJQb2x5ZmlsbC5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKG9jdGV0cyl7ZnVuY3Rpb24gdmFsaWQoY29kZVBvaW50LHNoaWZ0LG9jdGV0c0NvdW50KXtpZihvY3RldHNDb3VudD09PTEpe3JldHVybiBjb2RlUG9pbnQ+PTB4MDA4MD4+c2hpZnQmJmNvZGVQb2ludDw8c2hpZnQ8PTB4MDdmZjt9aWYob2N0ZXRzQ291bnQ9PT0yKXtyZXR1cm4gY29kZVBvaW50Pj0weDA4MDA+PnNoaWZ0JiZjb2RlUG9pbnQ8PHNoaWZ0PD0weGQ3ZmZ8fGNvZGVQb2ludD49MHhlMDAwPj5zaGlmdCYmY29kZVBvaW50PDxzaGlmdDw9MHhmZmZmO31pZihvY3RldHNDb3VudD09PTMpe3JldHVybiBjb2RlUG9pbnQ+PTB4MDEwMDAwPj5zaGlmdCYmY29kZVBvaW50PDxzaGlmdDw9MHgxMGZmZmY7fXRocm93IG5ldyBFcnJvcigpO31mdW5jdGlvbiBvY3RldHNDb3VudChiaXRzTmVlZGVkLGNvZGVQb2ludCl7aWYoYml0c05lZWRlZD09PTYqMSl7cmV0dXJuIGNvZGVQb2ludD4+Nj4xNT8zOmNvZGVQb2ludD4zMT8yOjE7fWlmKGJpdHNOZWVkZWQ9PT02KjIpe3JldHVybiBjb2RlUG9pbnQ+MTU/MzoyO31pZihiaXRzTmVlZGVkPT09NiozKXtyZXR1cm4gMzt9dGhyb3cgbmV3IEVycm9yKCk7fXZhciBSRVBMQUNFUj0weGZmZmQ7dmFyIHN0cmluZz0nJzt2YXIgYml0c05lZWRlZD10aGlzLmJpdHNOZWVkZWQ7dmFyIGNvZGVQb2ludD10aGlzLmNvZGVQb2ludDtmb3IodmFyIGk9MDtpPG9jdGV0cy5sZW5ndGg7aSs9MSl7dmFyIG9jdGV0PW9jdGV0c1tpXTtpZihiaXRzTmVlZGVkIT09MCl7aWYob2N0ZXQ8MTI4fHxvY3RldD4xOTF8fCF2YWxpZChjb2RlUG9pbnQ8PDZ8b2N0ZXQmNjMsYml0c05lZWRlZC02LG9jdGV0c0NvdW50KGJpdHNOZWVkZWQsY29kZVBvaW50KSkpe2JpdHNOZWVkZWQ9MDtjb2RlUG9pbnQ9UkVQTEFDRVI7c3RyaW5nKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGVQb2ludCk7fX1pZihiaXRzTmVlZGVkPT09MCl7aWYob2N0ZXQ+PTAmJm9jdGV0PD0xMjcpe2JpdHNOZWVkZWQ9MDtjb2RlUG9pbnQ9b2N0ZXQ7fWVsc2UgaWYob2N0ZXQ+PTE5MiYmb2N0ZXQ8PTIyMyl7Yml0c05lZWRlZD02KjE7Y29kZVBvaW50PW9jdGV0JjMxO31lbHNlIGlmKG9jdGV0Pj0yMjQmJm9jdGV0PD0yMzkpe2JpdHNOZWVkZWQ9NioyO2NvZGVQb2ludD1vY3RldCYxNTt9ZWxzZSBpZihvY3RldD49MjQwJiZvY3RldDw9MjQ3KXtiaXRzTmVlZGVkPTYqMztjb2RlUG9pbnQ9b2N0ZXQmNzt9ZWxzZXtiaXRzTmVlZGVkPTA7Y29kZVBvaW50PVJFUExBQ0VSO31pZihiaXRzTmVlZGVkIT09MCYmIXZhbGlkKGNvZGVQb2ludCxiaXRzTmVlZGVkLG9jdGV0c0NvdW50KGJpdHNOZWVkZWQsY29kZVBvaW50KSkpe2JpdHNOZWVkZWQ9MDtjb2RlUG9pbnQ9UkVQTEFDRVI7fX1lbHNle2JpdHNOZWVkZWQtPTY7Y29kZVBvaW50PWNvZGVQb2ludDw8NnxvY3RldCY2Mzt9aWYoYml0c05lZWRlZD09PTApe2lmKGNvZGVQb2ludDw9MHhmZmZmKXtzdHJpbmcrPVN0cmluZy5mcm9tQ2hhckNvZGUoY29kZVBvaW50KTt9ZWxzZXtzdHJpbmcrPVN0cmluZy5mcm9tQ2hhckNvZGUoMHhkODAwKyhjb2RlUG9pbnQtMHhmZmZmLTE+PjEwKSk7c3RyaW5nKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZGMwMCsoY29kZVBvaW50LTB4ZmZmZi0xJjB4M2ZmKSk7fX19dGhpcy5iaXRzTmVlZGVkPWJpdHNOZWVkZWQ7dGhpcy5jb2RlUG9pbnQ9Y29kZVBvaW50O3JldHVybiBzdHJpbmc7fTsvLyBGaXJlZm94IDwgMzggdGhyb3dzIGFuIGVycm9yIHdpdGggc3RyZWFtIG9wdGlvblxudmFyIHN1cHBvcnRzU3RyZWFtT3B0aW9uPWZ1bmN0aW9uIHN1cHBvcnRzU3RyZWFtT3B0aW9uKCl7dHJ5e3JldHVybiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUobmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKCd0ZXN0Jykse3N0cmVhbTp0cnVlfSk9PT0ndGVzdCc7fWNhdGNoKGVycm9yKXtjb25zb2xlLmxvZyhlcnJvcik7fXJldHVybiBmYWxzZTt9Oy8vIElFLCBFZGdlXG5pZihUZXh0RGVjb2Rlcj09dW5kZWZpbmVkfHxUZXh0RW5jb2Rlcj09dW5kZWZpbmVkfHwhc3VwcG9ydHNTdHJlYW1PcHRpb24oKSl7VGV4dERlY29kZXI9VGV4dERlY29kZXJQb2x5ZmlsbDt9dmFyIGs9ZnVuY3Rpb24gaygpe307ZnVuY3Rpb24gWEhSV3JhcHBlcih4aHIpe3RoaXMud2l0aENyZWRlbnRpYWxzPWZhbHNlO3RoaXMucmVzcG9uc2VUeXBlPScnO3RoaXMucmVhZHlTdGF0ZT0wO3RoaXMuc3RhdHVzPTA7dGhpcy5zdGF0dXNUZXh0PScnO3RoaXMucmVzcG9uc2VUZXh0PScnO3RoaXMub25wcm9ncmVzcz1rO3RoaXMub25yZWFkeXN0YXRlY2hhbmdlPWs7dGhpcy5fY29udGVudFR5cGU9Jyc7dGhpcy5feGhyPXhocjt0aGlzLl9zZW5kVGltZW91dD0wO3RoaXMuX2Fib3J0PWs7fVhIUldyYXBwZXIucHJvdG90eXBlLm9wZW49ZnVuY3Rpb24obWV0aG9kLHVybCl7dGhpcy5fYWJvcnQodHJ1ZSk7dmFyIHRoYXQ9dGhpczt2YXIgeGhyPXRoaXMuX3hocjt2YXIgc3RhdGU9MTt2YXIgdGltZW91dD0wO3RoaXMuX2Fib3J0PWZ1bmN0aW9uKHNpbGVudCl7aWYodGhhdC5fc2VuZFRpbWVvdXQhPT0wKXtjbGVhclRpbWVvdXQodGhhdC5fc2VuZFRpbWVvdXQpO3RoYXQuX3NlbmRUaW1lb3V0PTA7fWlmKHN0YXRlPT09MXx8c3RhdGU9PT0yfHxzdGF0ZT09PTMpe3N0YXRlPTQ7eGhyLm9ubG9hZD1rO3hoci5vbmVycm9yPWs7eGhyLm9uYWJvcnQ9azt4aHIub25wcm9ncmVzcz1rO3hoci5vbnJlYWR5c3RhdGVjaGFuZ2U9azsvLyBJRSA4IC0gOTogWERvbWFpblJlcXVlc3QjYWJvcnQoKSBkb2VzIG5vdCBmaXJlIGFueSBldmVudFxuLy8gT3BlcmEgPCAxMDogWE1MSHR0cFJlcXVlc3QjYWJvcnQoKSBkb2VzIG5vdCBmaXJlIGFueSBldmVudFxueGhyLmFib3J0KCk7aWYodGltZW91dCE9PTApe2NsZWFyVGltZW91dCh0aW1lb3V0KTt0aW1lb3V0PTA7fWlmKCFzaWxlbnQpe3RoYXQucmVhZHlTdGF0ZT00O3RoYXQub25yZWFkeXN0YXRlY2hhbmdlKCk7fX1zdGF0ZT0wO307dmFyIG9uU3RhcnQ9ZnVuY3Rpb24gb25TdGFydCgpe2lmKHN0YXRlPT09MSl7Ly8gc3RhdGUgPSAyO1xudmFyIHN0YXR1cz0wO3ZhciBzdGF0dXNUZXh0PScnO3ZhciBjb250ZW50VHlwZT11bmRlZmluZWQ7aWYoISgnY29udGVudFR5cGUnaW4geGhyKSl7dHJ5e3N0YXR1cz14aHIuc3RhdHVzO3N0YXR1c1RleHQ9eGhyLnN0YXR1c1RleHQ7Y29udGVudFR5cGU9eGhyLmdldFJlc3BvbnNlSGVhZGVyKCdDb250ZW50LVR5cGUnKTt9Y2F0Y2goZXJyb3Ipey8vIElFIDwgMTAgdGhyb3dzIGV4Y2VwdGlvbiBmb3IgYHhoci5zdGF0dXNgIHdoZW4geGhyLnJlYWR5U3RhdGUgPT09IDIgfHwgeGhyLnJlYWR5U3RhdGUgPT09IDNcbi8vIE9wZXJhIDwgMTEgdGhyb3dzIGV4Y2VwdGlvbiBmb3IgYHhoci5zdGF0dXNgIHdoZW4geGhyLnJlYWR5U3RhdGUgPT09IDJcbi8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTEyMVxuc3RhdHVzPTA7c3RhdHVzVGV4dD0nJztjb250ZW50VHlwZT11bmRlZmluZWQ7Ly8gRmlyZWZveCA8IDE0LCBDaHJvbWUgPywgU2FmYXJpID9cbi8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY1OFxuLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODU0XG59fWVsc2V7c3RhdHVzPTIwMDtzdGF0dXNUZXh0PSdPSyc7Y29udGVudFR5cGU9eGhyLmNvbnRlbnRUeXBlO31pZihzdGF0dXMhPT0wKXtzdGF0ZT0yO3RoYXQucmVhZHlTdGF0ZT0yO3RoYXQuc3RhdHVzPXN0YXR1czt0aGF0LnN0YXR1c1RleHQ9c3RhdHVzVGV4dDt0aGF0Ll9jb250ZW50VHlwZT1jb250ZW50VHlwZTt0aGF0Lm9ucmVhZHlzdGF0ZWNoYW5nZSgpO319fTt2YXIgb25Qcm9ncmVzcz1mdW5jdGlvbiBvblByb2dyZXNzKCl7b25TdGFydCgpO2lmKHN0YXRlPT09Mnx8c3RhdGU9PT0zKXtzdGF0ZT0zO3ZhciByZXNwb25zZVRleHQ9Jyc7dHJ5e3Jlc3BvbnNlVGV4dD14aHIucmVzcG9uc2VUZXh0O31jYXRjaChlcnJvcil7Ly8gSUUgOCAtIDkgd2l0aCBYTUxIdHRwUmVxdWVzdFxufXRoYXQucmVhZHlTdGF0ZT0zO3RoYXQucmVzcG9uc2VUZXh0PXJlc3BvbnNlVGV4dDt0aGF0Lm9ucHJvZ3Jlc3MoKTt9fTt2YXIgb25GaW5pc2g9ZnVuY3Rpb24gb25GaW5pc2goKXsvLyBGaXJlZm94IDUyIGZpcmVzIFwicmVhZHlzdGF0ZWNoYW5nZVwiICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkgd2l0aG91dCBmaW5hbCBcInJlYWR5c3RhdGVjaGFuZ2VcIiAoeGhyLnJlYWR5U3RhdGUgPT09IDMpXG4vLyBJRSA4IGZpcmVzIFwib25sb2FkXCIgd2l0aG91dCBcIm9ucHJvZ3Jlc3NcIlxub25Qcm9ncmVzcygpO2lmKHN0YXRlPT09MXx8c3RhdGU9PT0yfHxzdGF0ZT09PTMpe3N0YXRlPTQ7aWYodGltZW91dCE9PTApe2NsZWFyVGltZW91dCh0aW1lb3V0KTt0aW1lb3V0PTA7fXRoYXQucmVhZHlTdGF0ZT00O3RoYXQub25yZWFkeXN0YXRlY2hhbmdlKCk7fX07dmFyIG9uUmVhZHlTdGF0ZUNoYW5nZT1mdW5jdGlvbiBvblJlYWR5U3RhdGVDaGFuZ2UoKXtpZih4aHIhPXVuZGVmaW5lZCl7Ly8gT3BlcmEgMTJcbmlmKHhoci5yZWFkeVN0YXRlPT09NCl7b25GaW5pc2goKTt9ZWxzZSBpZih4aHIucmVhZHlTdGF0ZT09PTMpe29uUHJvZ3Jlc3MoKTt9ZWxzZSBpZih4aHIucmVhZHlTdGF0ZT09PTIpe29uU3RhcnQoKTt9fX07dmFyIG9uVGltZW91dD1mdW5jdGlvbiBvblRpbWVvdXQoKXt0aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtvblRpbWVvdXQoKTt9LDUwMCk7aWYoeGhyLnJlYWR5U3RhdGU9PT0zKXtvblByb2dyZXNzKCk7fX07Ly8gWERvbWFpblJlcXVlc3QjYWJvcnQgcmVtb3ZlcyBvbnByb2dyZXNzLCBvbmVycm9yLCBvbmxvYWRcbnhoci5vbmxvYWQ9b25GaW5pc2g7eGhyLm9uZXJyb3I9b25GaW5pc2g7Ly8gaW1wcm9wZXIgZml4IHRvIG1hdGNoIEZpcmVmb3ggYmVoYXZpb3IsIGJ1dCBpdCBpcyBiZXR0ZXIgdGhhbiBqdXN0IGlnbm9yZSBhYm9ydFxuLy8gc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODU5NlxuLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgwMjAwXG4vLyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTUzNTcwXG4vLyBJRSA4IGZpcmVzIFwib25sb2FkXCIgd2l0aG91dCBcIm9ucHJvZ3Jlc3Ncbnhoci5vbmFib3J0PW9uRmluaXNoOy8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTczNjcyM1xuaWYoISgnc2VuZEFzQmluYXJ5J2luIFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSkmJiEoJ21vekFub24naW4gWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlKSl7eGhyLm9ucHJvZ3Jlc3M9b25Qcm9ncmVzczt9Ly8gSUUgOCAtIDkgKFhNTEhUVFBSZXF1ZXN0KVxuLy8gT3BlcmEgPCAxMlxuLy8gRmlyZWZveCA8IDMuNVxuLy8gRmlyZWZveCAzLjUgLSAzLjYgLSA/IDwgOS4wXG4vLyBvbnByb2dyZXNzIGlzIG5vdCBmaXJlZCBzb21ldGltZXMgb3IgZGVsYXllZFxuLy8gc2VlIGFsc28gIzY0XG54aHIub25yZWFkeXN0YXRlY2hhbmdlPW9uUmVhZHlTdGF0ZUNoYW5nZTtpZignY29udGVudFR5cGUnaW4geGhyKXt1cmwrPSh1cmwuaW5kZXhPZignPycpPT09LTE/Jz8nOicmJykrJ3BhZGRpbmc9dHJ1ZSc7fXhoci5vcGVuKG1ldGhvZCx1cmwsdHJ1ZSk7aWYoJ3JlYWR5U3RhdGUnaW4geGhyKXsvLyB3b3JrYXJvdW5kIGZvciBPcGVyYSAxMiBpc3N1ZSB3aXRoIFwicHJvZ3Jlc3NcIiBldmVudHNcbi8vICM5MVxudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7b25UaW1lb3V0KCk7fSwwKTt9fTtYSFJXcmFwcGVyLnByb3RvdHlwZS5hYm9ydD1mdW5jdGlvbigpe3RoaXMuX2Fib3J0KGZhbHNlKTt9O1hIUldyYXBwZXIucHJvdG90eXBlLmdldFJlc3BvbnNlSGVhZGVyPWZ1bmN0aW9uKG5hbWUpe3JldHVybiB0aGlzLl9jb250ZW50VHlwZTt9O1hIUldyYXBwZXIucHJvdG90eXBlLnNldFJlcXVlc3RIZWFkZXI9ZnVuY3Rpb24obmFtZSx2YWx1ZSl7dmFyIHhocj10aGlzLl94aHI7aWYoJ3NldFJlcXVlc3RIZWFkZXInaW4geGhyKXt4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLHZhbHVlKTt9fTtYSFJXcmFwcGVyLnByb3RvdHlwZS5nZXRBbGxSZXNwb25zZUhlYWRlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5feGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycyE9dW5kZWZpbmVkP3RoaXMuX3hoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKTonJzt9O1hIUldyYXBwZXIucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24oKXsvLyBsb2FkaW5nIGluZGljYXRvciBpbiBTYWZhcmkgPCA/ICg2KSwgQ2hyb21lIDwgMTQsIEZpcmVmb3hcbmlmKCEoJ29udGltZW91dCdpbiBYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUpJiZkb2N1bWVudCE9dW5kZWZpbmVkJiZkb2N1bWVudC5yZWFkeVN0YXRlIT11bmRlZmluZWQmJmRvY3VtZW50LnJlYWR5U3RhdGUhPT0nY29tcGxldGUnKXt2YXIgdGhhdD10aGlzO3RoYXQuX3NlbmRUaW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGF0Ll9zZW5kVGltZW91dD0wO3RoYXQuc2VuZCgpO30sNCk7cmV0dXJuO312YXIgeGhyPXRoaXMuX3hocjsvLyB3aXRoQ3JlZGVudGlhbHMgc2hvdWxkIGJlIHNldCBhZnRlciBcIm9wZW5cIiBmb3IgU2FmYXJpIGFuZCBDaHJvbWUgKDwgMTkgPylcbnhoci53aXRoQ3JlZGVudGlhbHM9dGhpcy53aXRoQ3JlZGVudGlhbHM7eGhyLnJlc3BvbnNlVHlwZT10aGlzLnJlc3BvbnNlVHlwZTt0cnl7Ly8geGhyLnNlbmQoKTsgdGhyb3dzIFwiTm90IGVub3VnaCBhcmd1bWVudHNcIiBpbiBGaXJlZm94IDMuMFxueGhyLnNlbmQodW5kZWZpbmVkKTt9Y2F0Y2goZXJyb3IxKXsvLyBTYWZhcmkgNS4xLjcsIE9wZXJhIDEyXG50aHJvdyBlcnJvcjE7fX07ZnVuY3Rpb24gdG9Mb3dlckNhc2UobmFtZSl7cmV0dXJuIG5hbWUucmVwbGFjZSgvW0EtWl0vZyxmdW5jdGlvbihjKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjLmNoYXJDb2RlQXQoMCkrMHgyMCk7fSk7fWZ1bmN0aW9uIEhlYWRlcnNQb2x5ZmlsbChhbGwpey8vIEdldCBoZWFkZXJzOiBpbXBsZW1lbnRlZCBhY2NvcmRpbmcgdG8gbW96aWxsYSdzIGV4YW1wbGUgY29kZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L2dldEFsbFJlc3BvbnNlSGVhZGVycyNFeGFtcGxlXG52YXIgbWFwPU9iamVjdC5jcmVhdGUobnVsbCk7dmFyIGFycmF5PWFsbC5zcGxpdCgnXFxyXFxuJyk7Zm9yKHZhciBpPTA7aTxhcnJheS5sZW5ndGg7aSs9MSl7dmFyIGxpbmU9YXJyYXlbaV07dmFyIHBhcnRzPWxpbmUuc3BsaXQoJzogJyk7dmFyIG5hbWU9cGFydHMuc2hpZnQoKTt2YXIgdmFsdWU9cGFydHMuam9pbignOiAnKTttYXBbdG9Mb3dlckNhc2UobmFtZSldPXZhbHVlO310aGlzLl9tYXA9bWFwO31IZWFkZXJzUG9seWZpbGwucHJvdG90eXBlLmdldD1mdW5jdGlvbihuYW1lKXtyZXR1cm4gdGhpcy5fbWFwW3RvTG93ZXJDYXNlKG5hbWUpXTt9O2Z1bmN0aW9uIFhIUlRyYW5zcG9ydCgpe31YSFJUcmFuc3BvcnQucHJvdG90eXBlLm9wZW49ZnVuY3Rpb24oeGhyLG9uU3RhcnRDYWxsYmFjayxvblByb2dyZXNzQ2FsbGJhY2ssb25GaW5pc2hDYWxsYmFjayx1cmwsd2l0aENyZWRlbnRpYWxzLGhlYWRlcnMpe3hoci5vcGVuKCdHRVQnLHVybCk7dmFyIG9mZnNldD0wO3hoci5vbnByb2dyZXNzPWZ1bmN0aW9uKCl7dmFyIHJlc3BvbnNlVGV4dD14aHIucmVzcG9uc2VUZXh0O3ZhciBjaHVuaz1yZXNwb25zZVRleHQuc2xpY2Uob2Zmc2V0KTtvZmZzZXQrPWNodW5rLmxlbmd0aDtvblByb2dyZXNzQ2FsbGJhY2soY2h1bmspO307eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKHhoci5yZWFkeVN0YXRlPT09Mil7dmFyIHN0YXR1cz14aHIuc3RhdHVzO3ZhciBzdGF0dXNUZXh0PXhoci5zdGF0dXNUZXh0O3ZhciBjb250ZW50VHlwZT14aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ0NvbnRlbnQtVHlwZScpO3ZhciBoZWFkZXJzPXhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKTtvblN0YXJ0Q2FsbGJhY2soc3RhdHVzLHN0YXR1c1RleHQsY29udGVudFR5cGUsbmV3IEhlYWRlcnNQb2x5ZmlsbChoZWFkZXJzKSxmdW5jdGlvbigpe3hoci5hYm9ydCgpO30pO31lbHNlIGlmKHhoci5yZWFkeVN0YXRlPT09NCl7b25GaW5pc2hDYWxsYmFjaygpO319O3hoci53aXRoQ3JlZGVudGlhbHM9d2l0aENyZWRlbnRpYWxzO3hoci5yZXNwb25zZVR5cGU9J3RleHQnO2Zvcih2YXIgbmFtZSBpbiBoZWFkZXJzKXtpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaGVhZGVycyxuYW1lKSl7eGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSxoZWFkZXJzW25hbWVdKTt9fXhoci5zZW5kKCk7fTtmdW5jdGlvbiBIZWFkZXJzV3JhcHBlcihoZWFkZXJzKXt0aGlzLl9oZWFkZXJzPWhlYWRlcnM7fUhlYWRlcnNXcmFwcGVyLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24obmFtZSl7cmV0dXJuIHRoaXMuX2hlYWRlcnMuZ2V0KG5hbWUpO307ZnVuY3Rpb24gRmV0Y2hUcmFuc3BvcnQoKXt9RmV0Y2hUcmFuc3BvcnQucHJvdG90eXBlLm9wZW49ZnVuY3Rpb24oeGhyLG9uU3RhcnRDYWxsYmFjayxvblByb2dyZXNzQ2FsbGJhY2ssb25GaW5pc2hDYWxsYmFjayx1cmwsd2l0aENyZWRlbnRpYWxzLGhlYWRlcnMpe3ZhciBjb250cm9sbGVyPW5ldyBBYm9ydENvbnRyb2xsZXIoKTt2YXIgc2lnbmFsPWNvbnRyb2xsZXIuc2lnbmFsOy8vIHNlZSAjMTIwXG52YXIgdGV4dERlY29kZXI9bmV3IFRleHREZWNvZGVyKCk7ZmV0Y2godXJsLHtoZWFkZXJzOmhlYWRlcnMsY3JlZGVudGlhbHM6d2l0aENyZWRlbnRpYWxzPydpbmNsdWRlJzonc2FtZS1vcmlnaW4nLHNpZ25hbDpzaWduYWwsY2FjaGU6J25vLXN0b3JlJ30pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2Upe3ZhciByZWFkZXI9cmVzcG9uc2UuYm9keS5nZXRSZWFkZXIoKTtvblN0YXJ0Q2FsbGJhY2socmVzcG9uc2Uuc3RhdHVzLHJlc3BvbnNlLnN0YXR1c1RleHQscmVzcG9uc2UuaGVhZGVycy5nZXQoJ0NvbnRlbnQtVHlwZScpLG5ldyBIZWFkZXJzV3JhcHBlcihyZXNwb25zZS5oZWFkZXJzKSxmdW5jdGlvbigpe2NvbnRyb2xsZXIuYWJvcnQoKTtyZWFkZXIuY2FuY2VsKCk7fSk7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUscmVqZWN0KXt2YXIgcmVhZE5leHRDaHVuaz1mdW5jdGlvbiByZWFkTmV4dENodW5rKCl7cmVhZGVyLnJlYWQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCl7aWYocmVzdWx0LmRvbmUpey8vIE5vdGU6IGJ5dGVzIGluIHRleHREZWNvZGVyIGFyZSBpZ25vcmVkXG5yZXNvbHZlKHVuZGVmaW5lZCk7fWVsc2V7dmFyIGNodW5rPXRleHREZWNvZGVyLmRlY29kZShyZXN1bHQudmFsdWUse3N0cmVhbTp0cnVlfSk7b25Qcm9ncmVzc0NhbGxiYWNrKGNodW5rKTtyZWFkTmV4dENodW5rKCk7fX0pWydjYXRjaCddKGZ1bmN0aW9uKGVycm9yKXtyZWplY3QoZXJyb3IpO30pO307cmVhZE5leHRDaHVuaygpO30pO30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KXtvbkZpbmlzaENhbGxiYWNrKCk7cmV0dXJuIHJlc3VsdDt9LGZ1bmN0aW9uKGVycm9yKXtvbkZpbmlzaENhbGxiYWNrKCk7cmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTt9KTt9O2Z1bmN0aW9uIEV2ZW50VGFyZ2V0KCl7dGhpcy5fbGlzdGVuZXJzPU9iamVjdC5jcmVhdGUobnVsbCk7fWZ1bmN0aW9uIHRocm93RXJyb3IoZSl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGU7fSwwKTt9RXZlbnRUYXJnZXQucHJvdG90eXBlLmRpc3BhdGNoRXZlbnQ9ZnVuY3Rpb24oZXZlbnQpe2V2ZW50LnRhcmdldD10aGlzO3ZhciB0eXBlTGlzdGVuZXJzPXRoaXMuX2xpc3RlbmVyc1tldmVudC50eXBlXTtpZih0eXBlTGlzdGVuZXJzIT11bmRlZmluZWQpe3ZhciBsZW5ndGg9dHlwZUxpc3RlbmVycy5sZW5ndGg7Zm9yKHZhciBpPTA7aTxsZW5ndGg7aSs9MSl7dmFyIGxpc3RlbmVyPXR5cGVMaXN0ZW5lcnNbaV07dHJ5e2lmKHR5cGVvZiBsaXN0ZW5lci5oYW5kbGVFdmVudD09PSdmdW5jdGlvbicpe2xpc3RlbmVyLmhhbmRsZUV2ZW50KGV2ZW50KTt9ZWxzZXtsaXN0ZW5lci5jYWxsKHRoaXMsZXZlbnQpO319Y2F0Y2goZSl7dGhyb3dFcnJvcihlKTt9fX19O0V2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHR5cGUsbGlzdGVuZXIpe3R5cGU9U3RyaW5nKHR5cGUpO3ZhciBsaXN0ZW5lcnM9dGhpcy5fbGlzdGVuZXJzO3ZhciB0eXBlTGlzdGVuZXJzPWxpc3RlbmVyc1t0eXBlXTtpZih0eXBlTGlzdGVuZXJzPT11bmRlZmluZWQpe3R5cGVMaXN0ZW5lcnM9W107bGlzdGVuZXJzW3R5cGVdPXR5cGVMaXN0ZW5lcnM7fXZhciBmb3VuZD1mYWxzZTtmb3IodmFyIGk9MDtpPHR5cGVMaXN0ZW5lcnMubGVuZ3RoO2krPTEpe2lmKHR5cGVMaXN0ZW5lcnNbaV09PT1saXN0ZW5lcil7Zm91bmQ9dHJ1ZTt9fWlmKCFmb3VuZCl7dHlwZUxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTt9fTtFdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0eXBlLGxpc3RlbmVyKXt0eXBlPVN0cmluZyh0eXBlKTt2YXIgbGlzdGVuZXJzPXRoaXMuX2xpc3RlbmVyczt2YXIgdHlwZUxpc3RlbmVycz1saXN0ZW5lcnNbdHlwZV07aWYodHlwZUxpc3RlbmVycyE9dW5kZWZpbmVkKXt2YXIgZmlsdGVyZWQ9W107Zm9yKHZhciBpPTA7aTx0eXBlTGlzdGVuZXJzLmxlbmd0aDtpKz0xKXtpZih0eXBlTGlzdGVuZXJzW2ldIT09bGlzdGVuZXIpe2ZpbHRlcmVkLnB1c2godHlwZUxpc3RlbmVyc1tpXSk7fX1pZihmaWx0ZXJlZC5sZW5ndGg9PT0wKXtkZWxldGUgbGlzdGVuZXJzW3R5cGVdO31lbHNle2xpc3RlbmVyc1t0eXBlXT1maWx0ZXJlZDt9fX07ZnVuY3Rpb24gRXZlbnQodHlwZSl7dGhpcy50eXBlPXR5cGU7dGhpcy50YXJnZXQ9dW5kZWZpbmVkO31mdW5jdGlvbiBNZXNzYWdlRXZlbnQodHlwZSxvcHRpb25zKXtFdmVudC5jYWxsKHRoaXMsdHlwZSk7dGhpcy5kYXRhPW9wdGlvbnMuZGF0YTt0aGlzLmxhc3RFdmVudElkPW9wdGlvbnMubGFzdEV2ZW50SWQ7fU1lc3NhZ2VFdmVudC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFdmVudC5wcm90b3R5cGUpO2Z1bmN0aW9uIENvbm5lY3Rpb25FdmVudCh0eXBlLG9wdGlvbnMpe0V2ZW50LmNhbGwodGhpcyx0eXBlKTt0aGlzLnN0YXR1cz1vcHRpb25zLnN0YXR1czt0aGlzLnN0YXR1c1RleHQ9b3B0aW9ucy5zdGF0dXNUZXh0O3RoaXMuaGVhZGVycz1vcHRpb25zLmhlYWRlcnM7fUNvbm5lY3Rpb25FdmVudC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFdmVudC5wcm90b3R5cGUpO3ZhciBXQUlUSU5HPS0xO3ZhciBDT05ORUNUSU5HPTA7dmFyIE9QRU49MTt2YXIgQ0xPU0VEPTI7dmFyIEFGVEVSX0NSPS0xO3ZhciBGSUVMRF9TVEFSVD0wO3ZhciBGSUVMRD0xO3ZhciBWQUxVRV9TVEFSVD0yO3ZhciBWQUxVRT0zO3ZhciBjb250ZW50VHlwZVJlZ0V4cD0vXnRleHRcXC9ldmVudFxcLXN0cmVhbTs/KFxccypjaGFyc2V0XFw9dXRmXFwtOCk/JC9pO3ZhciBNSU5JTVVNX0RVUkFUSU9OPTEwMDA7dmFyIE1BWElNVU1fRFVSQVRJT049MTgwMDAwMDA7dmFyIHBhcnNlRHVyYXRpb249ZnVuY3Rpb24gcGFyc2VEdXJhdGlvbih2YWx1ZSxkZWYpe3ZhciBuPXBhcnNlSW50KHZhbHVlLDEwKTtpZihuIT09bil7bj1kZWY7fXJldHVybiBjbGFtcER1cmF0aW9uKG4pO307dmFyIGNsYW1wRHVyYXRpb249ZnVuY3Rpb24gY2xhbXBEdXJhdGlvbihuKXtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgobixNSU5JTVVNX0RVUkFUSU9OKSxNQVhJTVVNX0RVUkFUSU9OKTt9O3ZhciBmaXJlPWZ1bmN0aW9uIGZpcmUodGhhdCxmLGV2ZW50KXt0cnl7aWYodHlwZW9mIGY9PT0nZnVuY3Rpb24nKXtmLmNhbGwodGhhdCxldmVudCk7fX1jYXRjaChlKXt0aHJvd0Vycm9yKGUpO319O2Z1bmN0aW9uIEV2ZW50U291cmNlUG9seWZpbGwodXJsLG9wdGlvbnMpe0V2ZW50VGFyZ2V0LmNhbGwodGhpcyk7dGhpcy5vbm9wZW49dW5kZWZpbmVkO3RoaXMub25tZXNzYWdlPXVuZGVmaW5lZDt0aGlzLm9uZXJyb3I9dW5kZWZpbmVkO3RoaXMudXJsPXVuZGVmaW5lZDt0aGlzLnJlYWR5U3RhdGU9dW5kZWZpbmVkO3RoaXMud2l0aENyZWRlbnRpYWxzPXVuZGVmaW5lZDt0aGlzLl9jbG9zZT11bmRlZmluZWQ7c3RhcnQodGhpcyx1cmwsb3B0aW9ucyk7fXZhciBpc0ZldGNoU3VwcG9ydGVkPWZldGNoIT11bmRlZmluZWQmJlJlc3BvbnNlIT11bmRlZmluZWQmJidib2R5J2luIFJlc3BvbnNlLnByb3RvdHlwZTtmdW5jdGlvbiBzdGFydChlcyx1cmwsb3B0aW9ucyl7dXJsPVN0cmluZyh1cmwpO3ZhciB3aXRoQ3JlZGVudGlhbHM9b3B0aW9ucyE9dW5kZWZpbmVkJiZCb29sZWFuKG9wdGlvbnMud2l0aENyZWRlbnRpYWxzKTt2YXIgaW5pdGlhbFJldHJ5PWNsYW1wRHVyYXRpb24oMTAwMCk7dmFyIGhlYXJ0YmVhdFRpbWVvdXQ9b3B0aW9ucyE9dW5kZWZpbmVkJiZvcHRpb25zLmhlYXJ0YmVhdFRpbWVvdXQhPXVuZGVmaW5lZD9wYXJzZUR1cmF0aW9uKG9wdGlvbnMuaGVhcnRiZWF0VGltZW91dCw0NTAwMCk6Y2xhbXBEdXJhdGlvbig0NTAwMCk7dmFyIGxhc3RFdmVudElkPScnO3ZhciByZXRyeT1pbml0aWFsUmV0cnk7dmFyIHdhc0FjdGl2aXR5PWZhbHNlO3ZhciBoZWFkZXJzPW9wdGlvbnMhPXVuZGVmaW5lZCYmb3B0aW9ucy5oZWFkZXJzIT11bmRlZmluZWQ/SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvcHRpb25zLmhlYWRlcnMpKTp1bmRlZmluZWQ7dmFyIEN1cnJlbnRUcmFuc3BvcnQ9b3B0aW9ucyE9dW5kZWZpbmVkJiZvcHRpb25zLlRyYW5zcG9ydCE9dW5kZWZpbmVkP29wdGlvbnMuVHJhbnNwb3J0OlhNTEh0dHBSZXF1ZXN0O3ZhciB4aHI9aXNGZXRjaFN1cHBvcnRlZCYmIShvcHRpb25zIT11bmRlZmluZWQmJm9wdGlvbnMuVHJhbnNwb3J0IT11bmRlZmluZWQpP3VuZGVmaW5lZDpuZXcgWEhSV3JhcHBlcihuZXcgQ3VycmVudFRyYW5zcG9ydCgpKTt2YXIgdHJhbnNwb3J0PXhocj09dW5kZWZpbmVkP25ldyBGZXRjaFRyYW5zcG9ydCgpOm5ldyBYSFJUcmFuc3BvcnQoKTt2YXIgY2FuY2VsRnVuY3Rpb249dW5kZWZpbmVkO3ZhciB0aW1lb3V0PTA7dmFyIGN1cnJlbnRTdGF0ZT1XQUlUSU5HO3ZhciBkYXRhQnVmZmVyPScnO3ZhciBsYXN0RXZlbnRJZEJ1ZmZlcj0nJzt2YXIgZXZlbnRUeXBlQnVmZmVyPScnO3ZhciB0ZXh0QnVmZmVyPScnO3ZhciBzdGF0ZT1GSUVMRF9TVEFSVDt2YXIgZmllbGRTdGFydD0wO3ZhciB2YWx1ZVN0YXJ0PTA7dmFyIG9uU3RhcnQ9ZnVuY3Rpb24gb25TdGFydChzdGF0dXMsc3RhdHVzVGV4dCxjb250ZW50VHlwZSxoZWFkZXJzLGNhbmNlbCl7aWYoY3VycmVudFN0YXRlPT09Q09OTkVDVElORyl7Y2FuY2VsRnVuY3Rpb249Y2FuY2VsO2lmKHN0YXR1cz09PTIwMCYmY29udGVudFR5cGUhPXVuZGVmaW5lZCYmY29udGVudFR5cGVSZWdFeHAudGVzdChjb250ZW50VHlwZSkpe2N1cnJlbnRTdGF0ZT1PUEVOO3dhc0FjdGl2aXR5PXRydWU7cmV0cnk9aW5pdGlhbFJldHJ5O2VzLnJlYWR5U3RhdGU9T1BFTjt2YXIgZXZlbnQ9bmV3IENvbm5lY3Rpb25FdmVudCgnb3Blbicse3N0YXR1czpzdGF0dXMsc3RhdHVzVGV4dDpzdGF0dXNUZXh0LGhlYWRlcnM6aGVhZGVyc30pO2VzLmRpc3BhdGNoRXZlbnQoZXZlbnQpO2ZpcmUoZXMsZXMub25vcGVuLGV2ZW50KTt9ZWxzZXt2YXIgbWVzc2FnZT0nJztpZihzdGF0dXMhPT0yMDApe2lmKHN0YXR1c1RleHQpe3N0YXR1c1RleHQ9c3RhdHVzVGV4dC5yZXBsYWNlKC9cXHMrL2csJyAnKTt9bWVzc2FnZT1cIkV2ZW50U291cmNlJ3MgcmVzcG9uc2UgaGFzIGEgc3RhdHVzIFwiK3N0YXR1cysnICcrc3RhdHVzVGV4dCsnIHRoYXQgaXMgbm90IDIwMC4gQWJvcnRpbmcgdGhlIGNvbm5lY3Rpb24uJzt9ZWxzZXttZXNzYWdlPVwiRXZlbnRTb3VyY2UncyByZXNwb25zZSBoYXMgYSBDb250ZW50LVR5cGUgc3BlY2lmeWluZyBhbiB1bnN1cHBvcnRlZCB0eXBlOiBcIisoY29udGVudFR5cGU9PXVuZGVmaW5lZD8nLSc6Y29udGVudFR5cGUucmVwbGFjZSgvXFxzKy9nLCcgJykpKycuIEFib3J0aW5nIHRoZSBjb25uZWN0aW9uLic7fXRocm93RXJyb3IobmV3IEVycm9yKG1lc3NhZ2UpKTtjbG9zZSgpO3ZhciBldmVudD1uZXcgQ29ubmVjdGlvbkV2ZW50KCdlcnJvcicse3N0YXR1czpzdGF0dXMsc3RhdHVzVGV4dDpzdGF0dXNUZXh0LGhlYWRlcnM6aGVhZGVyc30pO2VzLmRpc3BhdGNoRXZlbnQoZXZlbnQpO2ZpcmUoZXMsZXMub25lcnJvcixldmVudCk7fX19O3ZhciBvblByb2dyZXNzPWZ1bmN0aW9uIG9uUHJvZ3Jlc3ModGV4dENodW5rKXtpZihjdXJyZW50U3RhdGU9PT1PUEVOKXt2YXIgbj0tMTtmb3IodmFyIGk9MDtpPHRleHRDaHVuay5sZW5ndGg7aSs9MSl7dmFyIGM9dGV4dENodW5rLmNoYXJDb2RlQXQoaSk7aWYoYz09PSdcXG4nLmNoYXJDb2RlQXQoMCl8fGM9PT0nXFxyJy5jaGFyQ29kZUF0KDApKXtuPWk7fX12YXIgY2h1bms9KG4hPT0tMT90ZXh0QnVmZmVyOicnKSt0ZXh0Q2h1bmsuc2xpY2UoMCxuKzEpO3RleHRCdWZmZXI9KG49PT0tMT90ZXh0QnVmZmVyOicnKSt0ZXh0Q2h1bmsuc2xpY2UobisxKTtpZihjaHVuayE9PScnKXt3YXNBY3Rpdml0eT10cnVlO31mb3IodmFyIHBvc2l0aW9uPTA7cG9zaXRpb248Y2h1bmsubGVuZ3RoO3Bvc2l0aW9uKz0xKXt2YXIgYz1jaHVuay5jaGFyQ29kZUF0KHBvc2l0aW9uKTtpZihzdGF0ZT09PUFGVEVSX0NSJiZjPT09J1xcbicuY2hhckNvZGVBdCgwKSl7c3RhdGU9RklFTERfU1RBUlQ7fWVsc2V7aWYoc3RhdGU9PT1BRlRFUl9DUil7c3RhdGU9RklFTERfU1RBUlQ7fWlmKGM9PT0nXFxyJy5jaGFyQ29kZUF0KDApfHxjPT09J1xcbicuY2hhckNvZGVBdCgwKSl7aWYoc3RhdGUhPT1GSUVMRF9TVEFSVCl7aWYoc3RhdGU9PT1GSUVMRCl7dmFsdWVTdGFydD1wb3NpdGlvbisxO312YXIgZmllbGQ9Y2h1bmsuc2xpY2UoZmllbGRTdGFydCx2YWx1ZVN0YXJ0LTEpO3ZhciB2YWx1ZT1jaHVuay5zbGljZSh2YWx1ZVN0YXJ0Kyh2YWx1ZVN0YXJ0PHBvc2l0aW9uJiZjaHVuay5jaGFyQ29kZUF0KHZhbHVlU3RhcnQpPT09JyAnLmNoYXJDb2RlQXQoMCk/MTowKSxwb3NpdGlvbik7aWYoZmllbGQ9PT0nZGF0YScpe2RhdGFCdWZmZXIrPSdcXG4nO2RhdGFCdWZmZXIrPXZhbHVlO31lbHNlIGlmKGZpZWxkPT09J2lkJyl7bGFzdEV2ZW50SWRCdWZmZXI9dmFsdWU7fWVsc2UgaWYoZmllbGQ9PT0nZXZlbnQnKXtldmVudFR5cGVCdWZmZXI9dmFsdWU7fWVsc2UgaWYoZmllbGQ9PT0ncmV0cnknKXtpbml0aWFsUmV0cnk9cGFyc2VEdXJhdGlvbih2YWx1ZSxpbml0aWFsUmV0cnkpO3JldHJ5PWluaXRpYWxSZXRyeTt9ZWxzZSBpZihmaWVsZD09PSdoZWFydGJlYXRUaW1lb3V0Jyl7aGVhcnRiZWF0VGltZW91dD1wYXJzZUR1cmF0aW9uKHZhbHVlLGhlYXJ0YmVhdFRpbWVvdXQpO2lmKHRpbWVvdXQhPT0wKXtjbGVhclRpbWVvdXQodGltZW91dCk7dGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7b25UaW1lb3V0KCk7fSxoZWFydGJlYXRUaW1lb3V0KTt9fX1pZihzdGF0ZT09PUZJRUxEX1NUQVJUKXtpZihkYXRhQnVmZmVyIT09Jycpe2xhc3RFdmVudElkPWxhc3RFdmVudElkQnVmZmVyO2lmKGV2ZW50VHlwZUJ1ZmZlcj09PScnKXtldmVudFR5cGVCdWZmZXI9J21lc3NhZ2UnO312YXIgZXZlbnQ9bmV3IE1lc3NhZ2VFdmVudChldmVudFR5cGVCdWZmZXIse2RhdGE6ZGF0YUJ1ZmZlci5zbGljZSgxKSxsYXN0RXZlbnRJZDpsYXN0RXZlbnRJZEJ1ZmZlcn0pO2VzLmRpc3BhdGNoRXZlbnQoZXZlbnQpO2lmKGV2ZW50VHlwZUJ1ZmZlcj09PSdtZXNzYWdlJyl7ZmlyZShlcyxlcy5vbm1lc3NhZ2UsZXZlbnQpO31pZihjdXJyZW50U3RhdGU9PT1DTE9TRUQpe3JldHVybjt9fWRhdGFCdWZmZXI9Jyc7ZXZlbnRUeXBlQnVmZmVyPScnO31zdGF0ZT1jPT09J1xccicuY2hhckNvZGVBdCgwKT9BRlRFUl9DUjpGSUVMRF9TVEFSVDt9ZWxzZXtpZihzdGF0ZT09PUZJRUxEX1NUQVJUKXtmaWVsZFN0YXJ0PXBvc2l0aW9uO3N0YXRlPUZJRUxEO31pZihzdGF0ZT09PUZJRUxEKXtpZihjPT09JzonLmNoYXJDb2RlQXQoMCkpe3ZhbHVlU3RhcnQ9cG9zaXRpb24rMTtzdGF0ZT1WQUxVRV9TVEFSVDt9fWVsc2UgaWYoc3RhdGU9PT1WQUxVRV9TVEFSVCl7c3RhdGU9VkFMVUU7fX19fX19O3ZhciBvbkZpbmlzaD1mdW5jdGlvbiBvbkZpbmlzaCgpe2lmKGN1cnJlbnRTdGF0ZT09PU9QRU58fGN1cnJlbnRTdGF0ZT09PUNPTk5FQ1RJTkcpe2N1cnJlbnRTdGF0ZT1XQUlUSU5HO2lmKHRpbWVvdXQhPT0wKXtjbGVhclRpbWVvdXQodGltZW91dCk7dGltZW91dD0wO310aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtvblRpbWVvdXQoKTt9LHJldHJ5KTtyZXRyeT1jbGFtcER1cmF0aW9uKE1hdGgubWluKGluaXRpYWxSZXRyeSoxNixyZXRyeSoyKSk7ZXMucmVhZHlTdGF0ZT1DT05ORUNUSU5HO3ZhciBldmVudD1uZXcgRXZlbnQoJ2Vycm9yJyk7ZXMuZGlzcGF0Y2hFdmVudChldmVudCk7ZmlyZShlcyxlcy5vbmVycm9yLGV2ZW50KTt9fTt2YXIgY2xvc2U9ZnVuY3Rpb24gY2xvc2UoKXtjdXJyZW50U3RhdGU9Q0xPU0VEO2lmKGNhbmNlbEZ1bmN0aW9uIT11bmRlZmluZWQpe2NhbmNlbEZ1bmN0aW9uKCk7Y2FuY2VsRnVuY3Rpb249dW5kZWZpbmVkO31pZih0aW1lb3V0IT09MCl7Y2xlYXJUaW1lb3V0KHRpbWVvdXQpO3RpbWVvdXQ9MDt9ZXMucmVhZHlTdGF0ZT1DTE9TRUQ7fTt2YXIgb25UaW1lb3V0PWZ1bmN0aW9uIG9uVGltZW91dCgpe3RpbWVvdXQ9MDtpZihjdXJyZW50U3RhdGUhPT1XQUlUSU5HKXtpZighd2FzQWN0aXZpdHkmJmNhbmNlbEZ1bmN0aW9uIT11bmRlZmluZWQpe3Rocm93RXJyb3IobmV3IEVycm9yKCdObyBhY3Rpdml0eSB3aXRoaW4gJytoZWFydGJlYXRUaW1lb3V0KycgbWlsbGlzZWNvbmRzLiBSZWNvbm5lY3RpbmcuJykpO2NhbmNlbEZ1bmN0aW9uKCk7Y2FuY2VsRnVuY3Rpb249dW5kZWZpbmVkO31lbHNle3dhc0FjdGl2aXR5PWZhbHNlO3RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe29uVGltZW91dCgpO30saGVhcnRiZWF0VGltZW91dCk7fXJldHVybjt9d2FzQWN0aXZpdHk9ZmFsc2U7dGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7b25UaW1lb3V0KCk7fSxoZWFydGJlYXRUaW1lb3V0KTtjdXJyZW50U3RhdGU9Q09OTkVDVElORztkYXRhQnVmZmVyPScnO2V2ZW50VHlwZUJ1ZmZlcj0nJztsYXN0RXZlbnRJZEJ1ZmZlcj1sYXN0RXZlbnRJZDt0ZXh0QnVmZmVyPScnO2ZpZWxkU3RhcnQ9MDt2YWx1ZVN0YXJ0PTA7c3RhdGU9RklFTERfU1RBUlQ7Ly8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4OTE2XG4vLyBSZXF1ZXN0IGhlYWRlciBmaWVsZCBMYXN0LUV2ZW50LUlEIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMuXG52YXIgcmVxdWVzdFVSTD11cmw7aWYodXJsLnNsaWNlKDAsNSkhPT0nZGF0YTonJiZ1cmwuc2xpY2UoMCw1KSE9PSdibG9iOicpe2lmKGxhc3RFdmVudElkIT09Jycpe3JlcXVlc3RVUkwrPSh1cmwuaW5kZXhPZignPycpPT09LTE/Jz8nOicmJykrJ2xhc3RFdmVudElkPScrZW5jb2RlVVJJQ29tcG9uZW50KGxhc3RFdmVudElkKTt9fXZhciByZXF1ZXN0SGVhZGVycz17fTtyZXF1ZXN0SGVhZGVyc1snQWNjZXB0J109J3RleHQvZXZlbnQtc3RyZWFtJztpZihoZWFkZXJzIT11bmRlZmluZWQpe2Zvcih2YXIgbmFtZSBpbiBoZWFkZXJzKXtpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaGVhZGVycyxuYW1lKSl7cmVxdWVzdEhlYWRlcnNbbmFtZV09aGVhZGVyc1tuYW1lXTt9fX10cnl7dHJhbnNwb3J0Lm9wZW4oeGhyLG9uU3RhcnQsb25Qcm9ncmVzcyxvbkZpbmlzaCxyZXF1ZXN0VVJMLHdpdGhDcmVkZW50aWFscyxyZXF1ZXN0SGVhZGVycyk7fWNhdGNoKGVycm9yKXtjbG9zZSgpO3Rocm93IGVycm9yO319O2VzLnVybD11cmw7ZXMucmVhZHlTdGF0ZT1DT05ORUNUSU5HO2VzLndpdGhDcmVkZW50aWFscz13aXRoQ3JlZGVudGlhbHM7ZXMuX2Nsb3NlPWNsb3NlO29uVGltZW91dCgpO31FdmVudFNvdXJjZVBvbHlmaWxsLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEV2ZW50VGFyZ2V0LnByb3RvdHlwZSk7RXZlbnRTb3VyY2VQb2x5ZmlsbC5wcm90b3R5cGUuQ09OTkVDVElORz1DT05ORUNUSU5HO0V2ZW50U291cmNlUG9seWZpbGwucHJvdG90eXBlLk9QRU49T1BFTjtFdmVudFNvdXJjZVBvbHlmaWxsLnByb3RvdHlwZS5DTE9TRUQ9Q0xPU0VEO0V2ZW50U291cmNlUG9seWZpbGwucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKCl7dGhpcy5fY2xvc2UoKTt9O0V2ZW50U291cmNlUG9seWZpbGwuQ09OTkVDVElORz1DT05ORUNUSU5HO0V2ZW50U291cmNlUG9seWZpbGwuT1BFTj1PUEVOO0V2ZW50U291cmNlUG9seWZpbGwuQ0xPU0VEPUNMT1NFRDtFdmVudFNvdXJjZVBvbHlmaWxsLnByb3RvdHlwZS53aXRoQ3JlZGVudGlhbHM9dW5kZWZpbmVkO3ZhciBfZGVmYXVsdD1FdmVudFNvdXJjZVBvbHlmaWxsO2V4cG9ydHMuZGVmYXVsdD1fZGVmYXVsdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWV2ZW50LXNvdXJjZS1wb2x5ZmlsbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/event-source-polyfill.js\n");
/***/ }),
/***/ "./node_modules/next/dist/client/dev/fouc.js":
/*!***************************************************!*\
!*** ./node_modules/next/dist/client/dev/fouc.js ***!
\***************************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/* module decorator */ module = __webpack_require__.nmd(module);\n\n\nexports.__esModule = true;\nexports.displayContent = displayContent; // This function is used to remove Next.js' no-FOUC styles workaround for using\n// `style-loader` in development. It must be called before hydration, or else\n// rendering won't have the correct computed values in effects.\n\nfunction displayContent(callback) {\n ;\n (window.requestAnimationFrame || setTimeout)(function () {\n for (var x = document.querySelectorAll('[data-next-hide-fouc]'), i = x.length; i--;) {\n x[i].parentNode.removeChild(x[i]);\n }\n\n if (callback) {\n callback();\n }\n });\n}\n\n;\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n var currentExports = module.__proto__.exports;\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2ZvdWMuanM/M2YwYyJdLCJuYW1lcyI6WyJleHBvcnRzIiwiZGlzcGxheUNvbnRlbnQiLCJjYWxsYmFjayIsIndpbmRvdyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInNldFRpbWVvdXQiLCJ4IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiaSIsImxlbmd0aCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCJdLCJtYXBwaW5ncyI6IjtBQUFhOztBQUFBQSxrQkFBQSxHQUFtQixJQUFuQjtBQUF3QkEsc0JBQUEsR0FBdUJDLGNBQXZCLEMsQ0FBc0M7QUFDM0U7QUFDQTs7QUFDQSxTQUFTQSxjQUFULENBQXdCQyxRQUF4QixFQUFpQztBQUFDO0FBQUMsR0FBQ0MsTUFBTSxDQUFDQyxxQkFBUCxJQUE4QkMsVUFBL0IsRUFBMkMsWUFBVTtBQUFDLFNBQUksSUFBSUMsQ0FBQyxHQUFDQyxRQUFRLENBQUNDLGdCQUFULENBQTBCLHVCQUExQixDQUFOLEVBQXlEQyxDQUFDLEdBQUNILENBQUMsQ0FBQ0ksTUFBakUsRUFBd0VELENBQUMsRUFBekUsR0FBNkU7QUFBQ0gsT0FBQyxDQUFDRyxDQUFELENBQUQsQ0FBS0UsVUFBTCxDQUFnQkMsV0FBaEIsQ0FBNEJOLENBQUMsQ0FBQ0csQ0FBRCxDQUE3QjtBQUFtQzs7QUFBQSxRQUFHUCxRQUFILEVBQVk7QUFBQ0EsY0FBUTtBQUFJO0FBQUMsR0FBak07QUFBb00iLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZm91Yy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO2V4cG9ydHMuX19lc01vZHVsZT10cnVlO2V4cG9ydHMuZGlzcGxheUNvbnRlbnQ9ZGlzcGxheUNvbnRlbnQ7Ly8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlbW92ZSBOZXh0LmpzJyBuby1GT1VDIHN0eWxlcyB3b3JrYXJvdW5kIGZvciB1c2luZ1xuLy8gYHN0eWxlLWxvYWRlcmAgaW4gZGV2ZWxvcG1lbnQuIEl0IG11c3QgYmUgY2FsbGVkIGJlZm9yZSBoeWRyYXRpb24sIG9yIGVsc2Vcbi8vIHJlbmRlcmluZyB3b24ndCBoYXZlIHRoZSBjb3JyZWN0IGNvbXB1dGVkIHZhbHVlcyBpbiBlZmZlY3RzLlxuZnVuY3Rpb24gZGlzcGxheUNvbnRlbnQoY2FsbGJhY2spezsod2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8c2V0VGltZW91dCkoZnVuY3Rpb24oKXtmb3IodmFyIHg9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtbmV4dC1oaWRlLWZvdWNdJyksaT14Lmxlbmd0aDtpLS07KXt4W2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoeFtpXSk7fWlmKGNhbGxiYWNrKXtjYWxsYmFjaygpO319KTt9XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mb3VjLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/fouc.js\n");
/***/ }),
/***/ "./node_modules/next/dist/client/dev/on-demand-entries-utils.js":
/*!**********************************************************************!*\
!*** ./node_modules/next/dist/client/dev/on-demand-entries-utils.js ***!
\**********************************************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/* module decorator */ module = __webpack_require__.nmd(module);\n\n\nexports.__esModule = true;\nexports.closePing = closePing;\nexports.setupPing = setupPing;\nexports.currentPage = void 0;\n\nvar _eventsource = __webpack_require__(/*! ./error-overlay/eventsource */ \"./node_modules/next/dist/client/dev/error-overlay/eventsource.js\");\n/* global location */\n\n\nvar evtSource;\nvar currentPage;\nexports.currentPage = currentPage;\n\nfunction closePing() {\n if (evtSource) evtSource.close();\n evtSource = null;\n}\n\nfunction setupPing(assetPrefix, pathnameFn, retry) {\n var pathname = pathnameFn(); // Make sure to only create new EventSource request if page has changed\n\n if (pathname === currentPage && !retry) return;\n exports.currentPage = currentPage = pathname; // close current EventSource connection\n\n closePing();\n evtSource = (0, _eventsource.getEventSourceWrapper)({\n path: \"\".concat(assetPrefix, \"/_next/webpack-hmr?page=\").concat(currentPage),\n timeout: 5000\n });\n evtSource.addMessageListener(function (event) {\n if (event.data.indexOf('{') === -1) return;\n\n try {\n var payload = JSON.parse(event.data);\n\n if (payload.invalid) {\n // Payload can be invalid even if the page does not exist.\n // So, we need to make sure it exists before reloading.\n fetch(location.href, {\n credentials: 'same-origin'\n }).then(function (pageRes) {\n if (pageRes.status === 200) {\n location.reload();\n }\n });\n }\n } catch (err) {\n console.error('on-demand-entries failed to parse response', err);\n }\n });\n}\n\n;\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n var currentExports = module.__proto__.exports;\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L29uLWRlbWFuZC1lbnRyaWVzLXV0aWxzLmpzPzY1NDgiXSwibmFtZXMiOlsiZXhwb3J0cyIsImNsb3NlUGluZyIsInNldHVwUGluZyIsIl9ldmVudHNvdXJjZSIsInJlcXVpcmUiLCJldnRTb3VyY2UiLCJjdXJyZW50UGFnZSIsImNsb3NlIiwiYXNzZXRQcmVmaXgiLCJwYXRobmFtZUZuIiwicmV0cnkiLCJwYXRobmFtZSIsImdldEV2ZW50U291cmNlV3JhcHBlciIsInBhdGgiLCJ0aW1lb3V0IiwiYWRkTWVzc2FnZUxpc3RlbmVyIiwiZXZlbnQiLCJkYXRhIiwiaW5kZXhPZiIsInBheWxvYWQiLCJKU09OIiwicGFyc2UiLCJpbnZhbGlkIiwiZmV0Y2giLCJsb2NhdGlvbiIsImhyZWYiLCJjcmVkZW50aWFscyIsInRoZW4iLCJwYWdlUmVzIiwic3RhdHVzIiwicmVsb2FkIiwiZXJyIiwiY29uc29sZSIsImVycm9yIl0sIm1hcHBpbmdzIjoiO0FBQWE7O0FBQUFBLGtCQUFBLEdBQW1CLElBQW5CO0FBQXdCQSxpQkFBQSxHQUFrQkMsU0FBbEI7QUFBNEJELGlCQUFBLEdBQWtCRSxTQUFsQjtBQUE0QkYsbUJBQUEsR0FBb0IsS0FBSyxDQUF6Qjs7QUFBMkIsSUFBSUcsWUFBWSxHQUFDQyxtQkFBTyxDQUFDLHFHQUFELENBQXhCO0FBQXdEOzs7QUFBcUIsSUFBSUMsU0FBSjtBQUFjLElBQUlDLFdBQUo7QUFBZ0JOLG1CQUFBLEdBQW9CTSxXQUFwQjs7QUFBZ0MsU0FBU0wsU0FBVCxHQUFvQjtBQUFDLE1BQUdJLFNBQUgsRUFBYUEsU0FBUyxDQUFDRSxLQUFWO0FBQWtCRixXQUFTLEdBQUMsSUFBVjtBQUFnQjs7QUFBQSxTQUFTSCxTQUFULENBQW1CTSxXQUFuQixFQUErQkMsVUFBL0IsRUFBMENDLEtBQTFDLEVBQWdEO0FBQUMsTUFBTUMsUUFBUSxHQUFDRixVQUFVLEVBQXpCLENBQUQsQ0FBNkI7O0FBQ3BaLE1BQUdFLFFBQVEsS0FBR0wsV0FBWCxJQUF3QixDQUFDSSxLQUE1QixFQUFrQztBQUFPVixxQkFBQSxHQUFvQk0sV0FBVyxHQUFDSyxRQUFoQyxDQUQ4VSxDQUNyUzs7QUFDbEZWLFdBQVM7QUFBR0ksV0FBUyxHQUFDLENBQUMsR0FBRUYsWUFBWSxDQUFDUyxxQkFBaEIsRUFBdUM7QUFBQ0MsUUFBSSxZQUFJTCxXQUFKLHFDQUEwQ0YsV0FBMUMsQ0FBTDtBQUE2RFEsV0FBTyxFQUFDO0FBQXJFLEdBQXZDLENBQVY7QUFBNkhULFdBQVMsQ0FBQ1Usa0JBQVYsQ0FBNkIsVUFBQUMsS0FBSyxFQUFFO0FBQUMsUUFBR0EsS0FBSyxDQUFDQyxJQUFOLENBQVdDLE9BQVgsQ0FBbUIsR0FBbkIsTUFBMEIsQ0FBQyxDQUE5QixFQUFnQzs7QUFBTyxRQUFHO0FBQUMsVUFBTUMsT0FBTyxHQUFDQyxJQUFJLENBQUNDLEtBQUwsQ0FBV0wsS0FBSyxDQUFDQyxJQUFqQixDQUFkOztBQUFxQyxVQUFHRSxPQUFPLENBQUNHLE9BQVgsRUFBbUI7QUFBQztBQUNsUjtBQUNBQyxhQUFLLENBQUNDLFFBQVEsQ0FBQ0MsSUFBVixFQUFlO0FBQUNDLHFCQUFXLEVBQUM7QUFBYixTQUFmLENBQUwsQ0FBaURDLElBQWpELENBQXNELFVBQUFDLE9BQU8sRUFBRTtBQUFDLGNBQUdBLE9BQU8sQ0FBQ0MsTUFBUixLQUFpQixHQUFwQixFQUF3QjtBQUFDTCxvQkFBUSxDQUFDTSxNQUFUO0FBQW1CO0FBQUMsU0FBN0c7QUFBZ0g7QUFBQyxLQUZvRyxDQUVwRyxPQUFNQyxHQUFOLEVBQVU7QUFBQ0MsYUFBTyxDQUFDQyxLQUFSLENBQWMsNENBQWQsRUFBMkRGLEdBQTNEO0FBQWlFO0FBQUMsR0FGckQ7QUFFd0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvb24tZGVtYW5kLWVudHJpZXMtdXRpbHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtleHBvcnRzLl9fZXNNb2R1bGU9dHJ1ZTtleHBvcnRzLmNsb3NlUGluZz1jbG9zZVBpbmc7ZXhwb3J0cy5zZXR1cFBpbmc9c2V0dXBQaW5nO2V4cG9ydHMuY3VycmVudFBhZ2U9dm9pZCAwO3ZhciBfZXZlbnRzb3VyY2U9cmVxdWlyZShcIi4vZXJyb3Itb3ZlcmxheS9ldmVudHNvdXJjZVwiKTsvKiBnbG9iYWwgbG9jYXRpb24gKi9sZXQgZXZ0U291cmNlO2xldCBjdXJyZW50UGFnZTtleHBvcnRzLmN1cnJlbnRQYWdlPWN1cnJlbnRQYWdlO2Z1bmN0aW9uIGNsb3NlUGluZygpe2lmKGV2dFNvdXJjZSlldnRTb3VyY2UuY2xvc2UoKTtldnRTb3VyY2U9bnVsbDt9ZnVuY3Rpb24gc2V0dXBQaW5nKGFzc2V0UHJlZml4LHBhdGhuYW1lRm4scmV0cnkpe2NvbnN0IHBhdGhuYW1lPXBhdGhuYW1lRm4oKTsvLyBNYWtlIHN1cmUgdG8gb25seSBjcmVhdGUgbmV3IEV2ZW50U291cmNlIHJlcXVlc3QgaWYgcGFnZSBoYXMgY2hhbmdlZFxuaWYocGF0aG5hbWU9PT1jdXJyZW50UGFnZSYmIXJldHJ5KXJldHVybjtleHBvcnRzLmN1cnJlbnRQYWdlPWN1cnJlbnRQYWdlPXBhdGhuYW1lOy8vIGNsb3NlIGN1cnJlbnQgRXZlbnRTb3VyY2UgY29ubmVjdGlvblxuY2xvc2VQaW5nKCk7ZXZ0U291cmNlPSgwLF9ldmVudHNvdXJjZS5nZXRFdmVudFNvdXJjZVdyYXBwZXIpKHtwYXRoOmAke2Fzc2V0UHJlZml4fS9fbmV4dC93ZWJwYWNrLWhtcj9wYWdlPSR7Y3VycmVudFBhZ2V9YCx0aW1lb3V0OjUwMDB9KTtldnRTb3VyY2UuYWRkTWVzc2FnZUxpc3RlbmVyKGV2ZW50PT57aWYoZXZlbnQuZGF0YS5pbmRleE9mKCd7Jyk9PT0tMSlyZXR1cm47dHJ5e2NvbnN0IHBheWxvYWQ9SlNPTi5wYXJzZShldmVudC5kYXRhKTtpZihwYXlsb2FkLmludmFsaWQpey8vIFBheWxvYWQgY2FuIGJlIGludmFsaWQgZXZlbiBpZiB0aGUgcGFnZSBkb2VzIG5vdCBleGlzdC5cbi8vIFNvLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBpdCBleGlzdHMgYmVmb3JlIHJlbG9hZGluZy5cbmZldGNoKGxvY2F0aW9uLmhyZWYse2NyZWRlbnRpYWxzOidzYW1lLW9yaWdpbid9KS50aGVuKHBhZ2VSZXM9PntpZihwYWdlUmVzLnN0YXR1cz09PTIwMCl7bG9jYXRpb24ucmVsb2FkKCk7fX0pO319Y2F0Y2goZXJyKXtjb25zb2xlLmVycm9yKCdvbi1kZW1hbmQtZW50cmllcyBmYWlsZWQgdG8gcGFyc2UgcmVzcG9uc2UnLGVycik7fX0pO31cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9uLWRlbWFuZC1lbnRyaWVzLXV0aWxzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/on-demand-entries-utils.js\n");
/***/ }),
/***/ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js":
/*!*****************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/asyncToGenerator.js ***!
\*****************************************************************/
/***/ (function(module) {
eval("function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvci5qcz9kZGY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywga2V5LCBhcmcpIHtcbiAgdHJ5IHtcbiAgICB2YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7XG4gICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZWplY3QoZXJyb3IpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChpbmZvLmRvbmUpIHtcbiAgICByZXNvbHZlKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90aHJvdyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3IoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXMsXG4gICAgICAgIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcblxuICAgICAgZnVuY3Rpb24gX25leHQodmFsdWUpIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBfdGhyb3coZXJyKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgfVxuXG4gICAgICBfbmV4dCh1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9hc3luY1RvR2VuZXJhdG9yOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js\n");
/***/ }),
/***/ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js":
/*!**********************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
\**********************************************************************/
/***/ (function(module) {
eval("function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0LmpzPzY3ODIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7XG4gIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgXCJkZWZhdWx0XCI6IG9ialxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js\n");
/***/ }),
/***/ "./node_modules/@babel/runtime/regenerator/index.js":
/*!**********************************************************!*\
!*** ./node_modules/@babel/runtime/regenerator/index.js ***!
\**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval("module.exports = __webpack_require__(/*! regenerator-runtime */ \"./node_modules/regenerator-runtime/runtime.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yL2luZGV4LmpzP2QxM2IiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0hBQStDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVnZW5lcmF0b3ItcnVudGltZVwiKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/regenerator/index.js\n");
/***/ }),
/***/ "./node_modules/regenerator-runtime/runtime.js":
/*!*****************************************************!*\
!*** ./node_modules/regenerator-runtime/runtime.js ***!
\*****************************************************/
/***/ (function(module) {
eval("/**\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\nvar 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 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 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 || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // 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 function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // 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 function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n 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 =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\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\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : 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 genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\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 exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n 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 =\n // 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(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // 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 exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? 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\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 }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\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\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\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\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\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\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 function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\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(\n \"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;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // 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 if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // 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 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 = { tryLoc: locs[0] };\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 = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\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 next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\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, 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\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\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\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\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\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\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 if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n 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\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n 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\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\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 if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\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 };\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 return exports;\n\n}(\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 : 0\n));\n\ntry {\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcz8yZTQ5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLEtBQUs7QUFDTCxjQUFjO0FBQ2Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0Esd0NBQXdDLFdBQVc7QUFDbkQ7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsU0FBUztBQUNUO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQ0FBb0MsY0FBYztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUMsa0JBQWtCO0FBQ25EO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTs7QUFFQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7O0FBRUEsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0EsOENBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsOENBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLEtBQTBCLG9CQUFvQixDQUFFO0FBQ2xEOztBQUVBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbnZhciBydW50aW1lID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIHZhciBPcCA9IE9iamVjdC5wcm90b3R5cGU7XG4gIHZhciBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eTtcbiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG4gIHZhciAkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiID8gU3ltYm9sIDoge307XG4gIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gIHZhciBhc3luY0l0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCI7XG4gIHZhciB0b1N0cmluZ1RhZ1N5bWJvbCA9ICRTeW1ib2wudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG5cbiAgZnVuY3Rpb24gZGVmaW5lKG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIG9ialtrZXldO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gSUUgOCBoYXMgYSBicm9rZW4gT2JqZWN0LmRlZmluZVByb3BlcnR5IHRoYXQgb25seSB3b3JrcyBvbiBET00gb2JqZWN0cy5cbiAgICBkZWZpbmUoe30sIFwiXCIpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBkZWZpbmUgPSBmdW5jdGlvbihvYmosIGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfVxuICBleHBvcnRzLndyYXAgPSB3cmFwO1xuXG4gIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG4gIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG4gIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG4gIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG4gIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcbiAgICB9XG4gIH1cblxuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG4gIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cbiAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRpc3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuXG4gIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cbiAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvclxuICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gIC8vIGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgaXQuXG4gIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICBJdGVyYXRvclByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gIGlmIChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAmJlxuICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7XG4gICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAvLyBvZiB0aGUgcG9seWZpbGwuXG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxuXG4gIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9XG4gICAgR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IGRlZmluZShcbiAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSxcbiAgICB0b1N0cmluZ1RhZ1N5bWJvbCxcbiAgICBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgKTtcblxuICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICBkZWZpbmUocHJvdG90eXBlLCBtZXRob2QsIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBjdG9yXG4gICAgICA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG4gICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuICAgICAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgICAgIDogZmFsc2U7XG4gIH07XG5cbiAgZXhwb3J0cy5tYXJrID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICBkZWZpbmUoZ2VuRnVuLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JGdW5jdGlvblwiKTtcbiAgICB9XG4gICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApO1xuICAgIHJldHVybiBnZW5GdW47XG4gIH07XG5cbiAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG4gIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG4gIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC5cbiAgZXhwb3J0cy5hd3JhcCA9IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yLCBQcm9taXNlSW1wbCkge1xuICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHJlamVjdChyZWNvcmQuYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWNvcmQuYXJnO1xuICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGludm9rZShcInRocm93XCIsIGVyciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlSW1wbC5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkge1xuICAgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG4gICAgICAgICAgLy8gdGhlIC52YWx1ZSBvZiB0aGUgUHJvbWlzZTx7dmFsdWUsZG9uZX0+IHJlc3VsdCBmb3IgdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uXG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgICAgICAvLyBJZiBhIHJlamVjdGVkIFByb21pc2Ugd2FzIHlpZWxkZWQsIHRocm93IHRoZSByZWplY3Rpb24gYmFja1xuICAgICAgICAgIC8vIGludG8gdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgaGFuZGxlZCB0aGVyZS5cbiAgICAgICAgICByZXR1cm4gaW52b2tlKFwidGhyb3dcIiwgZXJyb3IsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cbiAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlSW1wbChmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcbiAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcbiAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKFxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5IGxhdGVyXG4gICAgICAgICAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICkgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG4gICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIEFzeW5jSXRlcmF0b3IucHJvdG90eXBlW2FzeW5jSXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICBleHBvcnRzLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yO1xuXG4gIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2ZcbiAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG4gIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuICBleHBvcnRzLmFzeW5jID0gZnVuY3Rpb24oaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QsIFByb21pc2VJbXBsKSB7XG4gICAgaWYgKFByb21pc2VJbXBsID09PSB2b2lkIDApIFByb21pc2VJbXBsID0gUHJvbWlzZTtcblxuICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3IoXG4gICAgICB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSxcbiAgICAgIFByb21pc2VJbXBsXG4gICAgKTtcblxuICAgIHJldHVybiBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbilcbiAgICAgID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG4gICAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7XG4gICAgICAgIH0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuICAgIHZhciBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQ7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVDb21wbGV0ZWQpIHtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgdGhyb3cgYXJnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcbiAgICAgICAgLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWdlbmVyYXRvcnJlc3VtZVxuICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGNvbnRleHQuYXJnID0gYXJnO1xuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuICAgICAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCA9PT0gQ29udGludWVTZW50aW5lbCkgY29udGludWU7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVSZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgY29udGV4dC5zZW50ID0gY29udGV4dC5fc2VudCA9IGNvbnRleHQuYXJnO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydCkge1xuICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAgIHRocm93IGNvbnRleHQuYXJnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgICBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBjb250ZXh0LmFyZyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZSA9IEdlblN0YXRlRXhlY3V0aW5nO1xuXG4gICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG4gICAgICAgICAgLy8gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBmcm9tIGlubmVyRm4sIHdlIGxlYXZlIHN0YXRlID09PVxuICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cbiAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgPyBHZW5TdGF0ZUNvbXBsZXRlZFxuICAgICAgICAgICAgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXG4gICAgICAgICAgaWYgKHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZyxcbiAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXhjZXB0aW9uIGJ5IGxvb3BpbmcgYmFjayBhcm91bmQgdG8gdGhlXG4gICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZykgY2FsbCBhYm92ZS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gQ2FsbCBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF0oY29udGV4dC5hcmcpIGFuZCBoYW5kbGUgdGhlXG4gIC8vIHJlc3VsdCwgZWl0aGVyIGJ5IHJldHVybmluZyBhIHsgdmFsdWUsIGRvbmUgfSByZXN1bHQgZnJvbSB0aGVcbiAgLy8gZGVsZWdhdGUgaXRlcmF0b3IsIG9yIGJ5IG1vZGlmeWluZyBjb250ZXh0Lm1ldGhvZCBhbmQgY29udGV4dC5hcmcsXG4gIC8vIHNldHRpbmcgY29udGV4dC5kZWxlZ2F0ZSB0byBudWxsLCBhbmQgcmV0dXJuaW5nIHRoZSBDb250aW51ZVNlbnRpbmVsLlxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEEgLnRocm93IG9yIC5yZXR1cm4gd2hlbiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIG5vIC50aHJvd1xuICAgICAgLy8gbWV0aG9kIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC5cbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAvLyBOb3RlOiBbXCJyZXR1cm5cIl0gbXVzdCBiZSB1c2VkIGZvciBFUzMgcGFyc2luZyBjb21wYXRpYmlsaXR5LlxuICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3JbXCJyZXR1cm5cIl0pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG4gICAgICAgICAgLy8gY2hhbmNlIHRvIGNsZWFuIHVwLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAvLyBJZiBtYXliZUludm9rZURlbGVnYXRlKGNvbnRleHQpIGNoYW5nZWQgY29udGV4dC5tZXRob2QgZnJvbVxuICAgICAgICAgICAgLy8gXCJyZXR1cm5cIiB0byBcInRocm93XCIsIGxldCB0aGF0IG92ZXJyaWRlIHRoZSBUeXBlRXJyb3IgYmVsb3cuXG4gICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcblxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXG4gICAgaWYgKCEgaW5mbykge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnlcbiAgICAgIC8vIHZhcmlhYmxlIHNwZWNpZmllZCBieSBkZWxlZ2F0ZS5yZXN1bHROYW1lIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZTtcblxuICAgICAgLy8gUmVzdW1lIGV4ZWN1dGlvbiBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbiAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYztcblxuICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci5cbiAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgfVxuXG4gIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4gdGVybXMgb2YgdGhlXG4gIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuICBkZWZpbmUoR3AsIHRvU3RyaW5nVGFnU3ltYm9sLCBcIkdlbmVyYXRvclwiKTtcblxuICAvLyBBIEdlbmVyYXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3aGVuIHRoZVxuICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZVxuICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAvLyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMgdGhhdCBkb2Vzbid0IGhhcHBlbi5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuXG4gIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH07XG5cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG4gICAgaWYgKDEgaW4gbG9jcykge1xuICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdO1xuICAgIH1cblxuICAgIGlmICgyIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmZpbmFsbHlMb2MgPSBsb2NzWzJdO1xuICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuICAgIH1cblxuICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgZGVsZXRlIHJlY29yZC5hcmc7XG4gICAgZW50cnkuY29tcGxldGlvbiA9IHJlY29yZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2hcbiAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG4gICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogXCJyb290XCIgfV07XG4gICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gIH1cblxuICBleHBvcnRzLmtleXMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGtleXMucHVzaChrZXkpO1xuICAgIH1cbiAgICBrZXlzLnJldmVyc2UoKTtcblxuICAgIC8vIFJhdGhlciB0aGFuIHJldHVybmluZyBhbiBvYmplY3Qgd2l0aCBhIG5leHQgbWV0aG9kLCB3ZSBrZWVwXG4gICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICBuZXh0LnZhbHVlID0ga2V5O1xuICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXNcbiAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsdWVzKGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG4gICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gaXRlcmFibGU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4oaXRlcmFibGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICB3aGlsZSAoKytpIDwgaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoaXRlcmFibGUsIGkpKSB7XG4gICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcbiAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cbiAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG4gIH1cbiAgZXhwb3J0cy52YWx1ZXMgPSB2YWx1ZXM7XG5cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH1cblxuICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcblxuICAgIHJlc2V0OiBmdW5jdGlvbihza2lwVGVtcFJlc2V0KSB7XG4gICAgICB0aGlzLnByZXYgPSAwO1xuICAgICAgdGhpcy5uZXh0ID0gMDtcbiAgICAgIC8vIFJlc2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG5cbiAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcbiAgICAgICAgICAvLyBOb3Qgc3VyZSBhYm91dCB0aGUgb3B0aW1hbCBvcmRlciBvZiB0aGVzZSBjb25kaXRpb25zOlxuICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiZcbiAgICAgICAgICAgICAgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuXG4gICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcbiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICB9LFxuXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uKGV4Y2VwdGlvbikge1xuICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcbiAgICAgICAgcmVjb3JkLmFyZyA9IGV4Y2VwdGlvbjtcbiAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXG4gICAgICAgIGlmIChjYXVnaHQpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhISBjYXVnaHQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG4gICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvXG4gICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICB2YXIgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG5cbiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0NhdGNoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFicnVwdDogZnVuY3Rpb24odHlwZSwgYXJnKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiZcbiAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJlxuICAgICAgICAgICh0eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgdHlwZSA9PT0gXCJjb250aW51ZVwiKSAmJlxuICAgICAgICAgIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmXG4gICAgICAgICAgYXJnIDw9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcbiAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuICAgICAgICBmaW5hbGx5RW50cnkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcbiAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2M7XG4gICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuICAgIH0sXG5cbiAgICBjb21wbGV0ZTogZnVuY3Rpb24ocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG4gICAgICAgIHRoaXMucnZhbCA9IHRoaXMuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIiAmJiBhZnRlckxvYykge1xuICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfSxcblxuICAgIGZpbmlzaDogZnVuY3Rpb24oZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG4gICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbih0cnlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcbiAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93bjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cbiAgICAgIC8vIGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBrbm93biBjYXRjaCBibG9jay5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuXG4gICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24oaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLFxuICAgICAgICByZXN1bHROYW1lOiByZXN1bHROYW1lLFxuICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cbiAgICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cbiAgfTtcblxuICAvLyBSZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIGFzIGEgQ29tbW9uSlMgbW9kdWxlXG4gIC8vIG9yIG5vdCwgcmV0dXJuIHRoZSBydW50aW1lIG9iamVjdCBzbyB0aGF0IHdlIGNhbiBkZWNsYXJlIHRoZSB2YXJpYWJsZVxuICAvLyByZWdlbmVyYXRvclJ1bnRpbWUgaW4gdGhlIG91dGVyIHNjb3BlLCB3aGljaCBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmVcbiAgLy8gaW5qZWN0ZWQgZWFzaWx5IGJ5IGBiaW4vcmVnZW5lcmF0b3IgLS1pbmNsdWRlLXJ1bnRpbWUgc2NyaXB0LmpzYC5cbiAgcmV0dXJuIGV4cG9ydHM7XG5cbn0oXG4gIC8vIElmIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZSwgdXNlIG1vZHVsZS5leHBvcnRzXG4gIC8vIGFzIHRoZSByZWdlbmVyYXRvclJ1bnRpbWUgbmFtZXNwYWNlLiBPdGhlcndpc2UgY3JlYXRlIGEgbmV3IGVtcHR5XG4gIC8vIG9iamVjdC4gRWl0aGVyIHdheSwgdGhlIHJlc3VsdGluZyBvYmplY3Qgd2lsbCBiZSB1c2VkIHRvIGluaXRpYWxpemVcbiAgLy8gdGhlIHJlZ2VuZXJhdG9yUnVudGltZSB2YXJpYWJsZSBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS5cbiAgdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiA/IG1vZHVsZS5leHBvcnRzIDoge31cbikpO1xuXG50cnkge1xuICByZWdlbmVyYXRvclJ1bnRpbWUgPSBydW50aW1lO1xufSBjYXRjaCAoYWNjaWRlbnRhbFN0cmljdE1vZGUpIHtcbiAgLy8gVGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSBydW5uaW5nIGluIHN0cmljdCBtb2RlLCBzbyB0aGUgYWJvdmVcbiAgLy8gYXNzaWdubWVudCBzaG91bGQgYWx3YXlzIHdvcmsgdW5sZXNzIHNvbWV0aGluZyBpcyBtaXNjb25maWd1cmVkLiBKdXN0XG4gIC8vIGluIGNhc2UgcnVudGltZS5qcyBhY2NpZGVudGFsbHkgcnVucyBpbiBzdHJpY3QgbW9kZSwgd2UgY2FuIGVzY2FwZVxuICAvLyBzdHJpY3QgbW9kZSB1c2luZyBhIGdsb2JhbCBGdW5jdGlvbiBjYWxsLiBUaGlzIGNvdWxkIGNvbmNlaXZhYmx5IGZhaWxcbiAgLy8gaWYgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBmb3JiaWRzIHVzaW5nIEZ1bmN0aW9uLCBidXQgaW4gdGhhdCBjYXNlXG4gIC8vIHRoZSBwcm9wZXIgc29sdXRpb24gaXMgdG8gZml4IHRoZSBhY2NpZGVudGFsIHN0cmljdCBtb2RlIHByb2JsZW0uIElmXG4gIC8vIHlvdSd2ZSBtaXNjb25maWd1cmVkIHlvdXIgYnVuZGxlciB0byBmb3JjZSBzdHJpY3QgbW9kZSBhbmQgYXBwbGllZCBhXG4gIC8vIENTUCB0byBmb3JiaWQgRnVuY3Rpb24sIGFuZCB5b3UncmUgbm90IHdpbGxpbmcgdG8gZml4IGVpdGhlciBvZiB0aG9zZVxuICAvLyBwcm9ibGVtcywgcGxlYXNlIGRldGFpbCB5b3VyIHVuaXF1ZSBwcmVkaWNhbWVudCBpbiBhIEdpdEh1YiBpc3N1ZS5cbiAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/regenerator-runtime/runtime.js\n");
/***/ })
},
/******/ function(__webpack_require__) { // webpackRuntimeModules
/******/ // runtime can't be in strict mode because a global variable is assign and maybe created.
/******/
/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
/******/ var __webpack_exports__ = (__webpack_exec__("./node_modules/next/dist/client/dev/amp-dev.js"));
/******/ _N_E = __webpack_exports__;
/******/ }
]);